diff --git a/Bender.yml b/Bender.yml index 1d9a7fc9..70f90e4c 100644 --- a/Bender.yml +++ b/Bender.yml @@ -148,7 +148,6 @@ sources: - hw/ip/spatz/src/rvv_pkg.sv # Level 1 - hw/ip/spatz/src/generated/spatz_pkg.sv - - hw/ip/spatz/src/spatz_serdiv.sv # Level 2 - hw/ip/spatz/src/spatz_decoder.sv @@ -161,6 +160,7 @@ sources: - hw/ip/spatz/src/spatz_vlsu.sv - hw/ip/spatz/src/spatz_vrf.sv - hw/ip/spatz/src/spatz_vsldu.sv + - hw/ip/spatz/src/spatz_mxu.sv # Level 4 - hw/ip/spatz/src/spatz_controller.sv # Level 5 diff --git a/Makefile b/Makefile index 189ce0e1..6ac693aa 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ include util/Makefrag BENDER_VERSION = 0.27.1 # Do not include minifloat opcodes, since they conflict with the RVV opcodes! -OPCODES := "opcodes-rvv opcodes-rv32b_CUSTOM opcodes-ipu_CUSTOM opcodes-frep_CUSTOM opcodes-dma_CUSTOM opcodes-ssr_CUSTOM opcodes-smallfloat" +OPCODES := "opcodes-rvv opcodes-rv32b_CUSTOM opcodes-ipu_CUSTOM opcodes-frep_CUSTOM opcodes-dma_CUSTOM opcodes-ssr_CUSTOM opcodes-smallfloat opcodes-rmm" # Default target all: bender toolchain update_opcodes @@ -34,14 +34,14 @@ sw/toolchain/riscv-gnu-toolchain: sw/toolchain/riscv-gnu-toolchain.version sw/toolchain/llvm-project: sw/toolchain/llvm-project.version mkdir -p sw/toolchain - cd sw/toolchain && git clone git@github.com:pulp-platform/llvm-project.git + cd sw/toolchain && git clone https://github.com/mp-17/llvm-project.git cd sw/toolchain/llvm-project && \ git checkout `cat ../llvm-project.version` && \ git submodule update --init --recursive --jobs=8 . sw/toolchain/riscv-opcodes: sw/toolchain/riscv-opcodes.version mkdir -p sw/toolchain - cd sw/toolchain && git clone https://github.com/pulp-platform/riscv-opcodes.git + cd sw/toolchain && git clone https://github.com/mp-17/riscv-opcodes.git cd sw/toolchain/riscv-opcodes && \ git checkout `cat ../riscv-opcodes.version` && \ git submodule update --init --recursive --jobs=8 . diff --git a/hw/ip/snitch/src/riscv_instr.sv b/hw/ip/snitch/src/riscv_instr.sv new file mode 100644 index 00000000..0d2c6232 --- /dev/null +++ b/hw/ip/snitch/src/riscv_instr.sv @@ -0,0 +1,1378 @@ +/* Automatically generated by parse_opcodes */ +package riscv_instr; + localparam logic [31:0] CUSTOM0 = 32'b?????????????????000?????0001011; + localparam logic [31:0] CUSTOM0_RS1 = 32'b?????????????????010?????0001011; + localparam logic [31:0] CUSTOM0_RS1_RS2 = 32'b?????????????????011?????0001011; + localparam logic [31:0] CUSTOM0_RD = 32'b?????????????????100?????0001011; + localparam logic [31:0] CUSTOM0_RD_RS1 = 32'b?????????????????110?????0001011; + localparam logic [31:0] CUSTOM0_RD_RS1_RS2 = 32'b?????????????????111?????0001011; + localparam logic [31:0] CUSTOM1 = 32'b?????????????????000?????0101011; + localparam logic [31:0] CUSTOM1_RS1 = 32'b?????????????????010?????0101011; + localparam logic [31:0] CUSTOM1_RS1_RS2 = 32'b?????????????????011?????0101011; + localparam logic [31:0] CUSTOM1_RD = 32'b?????????????????100?????0101011; + localparam logic [31:0] CUSTOM1_RD_RS1 = 32'b?????????????????110?????0101011; + localparam logic [31:0] CUSTOM1_RD_RS1_RS2 = 32'b?????????????????111?????0101011; + localparam logic [31:0] CUSTOM2 = 32'b?????????????????000?????1011011; + localparam logic [31:0] CUSTOM2_RS1 = 32'b?????????????????010?????1011011; + localparam logic [31:0] CUSTOM2_RS1_RS2 = 32'b?????????????????011?????1011011; + localparam logic [31:0] CUSTOM2_RD = 32'b?????????????????100?????1011011; + localparam logic [31:0] CUSTOM2_RD_RS1 = 32'b?????????????????110?????1011011; + localparam logic [31:0] CUSTOM2_RD_RS1_RS2 = 32'b?????????????????111?????1011011; + localparam logic [31:0] CUSTOM3 = 32'b?????????????????000?????1111011; + localparam logic [31:0] CUSTOM3_RS1 = 32'b?????????????????010?????1111011; + localparam logic [31:0] CUSTOM3_RS1_RS2 = 32'b?????????????????011?????1111011; + localparam logic [31:0] CUSTOM3_RD = 32'b?????????????????100?????1111011; + localparam logic [31:0] CUSTOM3_RD_RS1 = 32'b?????????????????110?????1111011; + localparam logic [31:0] CUSTOM3_RD_RS1_RS2 = 32'b?????????????????111?????1111011; + localparam logic [31:0] DMSRC = 32'b0000000??????????000000000101011; + localparam logic [31:0] DMDST = 32'b0000001??????????000000000101011; + localparam logic [31:0] DMCPYI = 32'b0000010??????????000?????0101011; + localparam logic [31:0] DMCPY = 32'b0000011??????????000?????0101011; + localparam logic [31:0] DMSTATI = 32'b0000100?????00000000?????0101011; + localparam logic [31:0] DMSTAT = 32'b0000101?????00000000?????0101011; + localparam logic [31:0] DMSTR = 32'b0000110??????????000000000101011; + localparam logic [31:0] DMREP = 32'b000011100000?????000000000101011; + localparam logic [31:0] FREP_O = 32'b????????????????????????10001011; + localparam logic [31:0] FREP_I = 32'b????????????????????????00001011; + localparam logic [31:0] IREP = 32'b?????????????????????????0111111; + localparam logic [31:0] IMV_X_W = 32'b111000000000?????000?????1011011; + localparam logic [31:0] IMV_W_X = 32'b111100000000?????000?????1011011; + localparam logic [31:0] IADDI = 32'b?????????????????000?????1111011; + localparam logic [31:0] ISLLI = 32'b000000???????????001?????1111011; + localparam logic [31:0] ISLTI = 32'b?????????????????010?????1111011; + localparam logic [31:0] ISLTIU = 32'b?????????????????011?????1111011; + localparam logic [31:0] IXORI = 32'b?????????????????100?????1111011; + localparam logic [31:0] ISRLI = 32'b000000???????????101?????1111011; + localparam logic [31:0] ISRAI = 32'b010000???????????101?????1111011; + localparam logic [31:0] IORI = 32'b?????????????????110?????1111011; + localparam logic [31:0] IANDI = 32'b?????????????????111?????1111011; + localparam logic [31:0] IADD = 32'b0000000??????????000?????1011011; + localparam logic [31:0] ISUB = 32'b0100000??????????000?????1011011; + localparam logic [31:0] ISLL = 32'b0000000??????????001?????1011011; + localparam logic [31:0] ISLT = 32'b0000000??????????010?????1011011; + localparam logic [31:0] ISLTU = 32'b0000000??????????011?????1011011; + localparam logic [31:0] IXOR = 32'b0000000??????????100?????1011011; + localparam logic [31:0] ISRL = 32'b0000000??????????101?????1011011; + localparam logic [31:0] ISRA = 32'b0100000??????????101?????1011011; + localparam logic [31:0] IOR = 32'b0000000??????????110?????1011011; + localparam logic [31:0] IAND = 32'b0000000??????????111?????1011011; + localparam logic [31:0] IMADD = 32'b?????01??????????000?????1011011; + localparam logic [31:0] IMSUB = 32'b?????01??????????001?????1011011; + localparam logic [31:0] INMSUB = 32'b?????01??????????010?????1011011; + localparam logic [31:0] INMADD = 32'b?????01??????????011?????1011011; + localparam logic [31:0] IMUL = 32'b0000010??????????000?????1011011; + localparam logic [31:0] IMULH = 32'b0000010??????????001?????1011011; + localparam logic [31:0] IMULHSU = 32'b0000010??????????010?????1011011; + localparam logic [31:0] IMULHU = 32'b0000010??????????011?????1011011; + localparam logic [31:0] IANDN = 32'b0100000??????????111?????1011011; + localparam logic [31:0] IORN = 32'b0100000??????????110?????1011011; + localparam logic [31:0] IXNOR = 32'b0100000??????????100?????1011011; + localparam logic [31:0] ISLO = 32'b0010000??????????001?????1011011; + localparam logic [31:0] ISRO = 32'b0010000??????????101?????1011011; + localparam logic [31:0] IROL = 32'b0110000??????????001?????1011011; + localparam logic [31:0] IROR = 32'b0110000??????????101?????1011011; + localparam logic [31:0] ISBCLR = 32'b0100100??????????001?????1011011; + localparam logic [31:0] ISBSET = 32'b0010100??????????001?????1011011; + localparam logic [31:0] ISBINV = 32'b0110100??????????001?????1011011; + localparam logic [31:0] ISBEXT = 32'b0100100??????????101?????1011011; + localparam logic [31:0] IGORC = 32'b0010100??????????101?????1011011; + localparam logic [31:0] IGREV = 32'b0110100??????????101?????1011011; + localparam logic [31:0] ISLOI = 32'b001000???????????001?????1111011; + localparam logic [31:0] ISROI = 32'b001000???????????101?????1111011; + localparam logic [31:0] IRORI = 32'b011000???????????101?????1111011; + localparam logic [31:0] ISBCLRI = 32'b010010???????????001?????1111011; + localparam logic [31:0] ISBSETI = 32'b001010???????????001?????1111011; + localparam logic [31:0] ISBINVI = 32'b011010???????????001?????1111011; + localparam logic [31:0] ISBEXTI = 32'b010010???????????101?????1111011; + localparam logic [31:0] IGORCI = 32'b001010???????????101?????1111011; + localparam logic [31:0] IGREVI = 32'b011010???????????101?????1111011; + localparam logic [31:0] ICLZ = 32'b011000000000?????010?????1011011; + localparam logic [31:0] ICTZ = 32'b011000000001?????010?????1011011; + localparam logic [31:0] IPCNT = 32'b011000000010?????010?????1011011; + localparam logic [31:0] ISEXT_B = 32'b011000000100?????010?????1011011; + localparam logic [31:0] ISEXT_H = 32'b011000000101?????010?????1011011; + localparam logic [31:0] ICRC32_B = 32'b011000010000?????001?????1011011; + localparam logic [31:0] ICRC32_H = 32'b011000010001?????001?????1011011; + localparam logic [31:0] ICRC32_W = 32'b011000010010?????001?????1011011; + localparam logic [31:0] ICRC32C_B = 32'b011000011000?????001?????1011011; + localparam logic [31:0] ICRC32C_H = 32'b011000011001?????001?????1011011; + localparam logic [31:0] ICRC32C_W = 32'b011000011010?????001?????1011011; + localparam logic [31:0] ISH1ADD = 32'b0010000??????????010?????1011011; + localparam logic [31:0] ISH2ADD = 32'b0010000??????????100?????1011011; + localparam logic [31:0] ISH3ADD = 32'b0010000??????????110?????1011011; + localparam logic [31:0] ICLMUL = 32'b0000101??????????001?????1011011; + localparam logic [31:0] ICLMULR = 32'b0000101??????????010?????1011011; + localparam logic [31:0] ICLMULH = 32'b0000101??????????011?????1011011; + localparam logic [31:0] IMIN = 32'b0000101??????????100?????1011011; + localparam logic [31:0] IMAX = 32'b0000101??????????101?????1011011; + localparam logic [31:0] IMINU = 32'b0000101??????????110?????1011011; + localparam logic [31:0] IMAXU = 32'b0000101??????????111?????1011011; + localparam logic [31:0] ISHFL = 32'b0000100??????????001?????1011011; + localparam logic [31:0] IUNSHFL = 32'b0000100??????????101?????1011011; + localparam logic [31:0] IBEXT = 32'b0000100??????????110?????1011011; + localparam logic [31:0] IBDEP = 32'b0100100??????????110?????1011011; + localparam logic [31:0] IPACK = 32'b0000100??????????100?????1011011; + localparam logic [31:0] IPACKU = 32'b0100100??????????100?????1011011; + localparam logic [31:0] IPACKH = 32'b0000100??????????111?????1011011; + localparam logic [31:0] IBFP = 32'b0100100??????????111?????1011011; + localparam logic [31:0] ISHFLI = 32'b0000100??????????001?????1111011; + localparam logic [31:0] IUNSHFLI = 32'b0000100??????????101?????1111011; + localparam logic [31:0] SLLI_RV32 = 32'b0000000??????????001?????0010011; + localparam logic [31:0] SRLI_RV32 = 32'b0000000??????????101?????0010011; + localparam logic [31:0] SRAI_RV32 = 32'b0100000??????????101?????0010011; + localparam logic [31:0] FRFLAGS = 32'b00000000000100000010?????1110011; + localparam logic [31:0] FSFLAGS = 32'b000000000001?????001?????1110011; + localparam logic [31:0] FSFLAGSI = 32'b000000000001?????101?????1110011; + localparam logic [31:0] FRRM = 32'b00000000001000000010?????1110011; + localparam logic [31:0] FSRM = 32'b000000000010?????001?????1110011; + localparam logic [31:0] FSRMI = 32'b000000000010?????101?????1110011; + localparam logic [31:0] FSCSR = 32'b000000000011?????001?????1110011; + localparam logic [31:0] FRCSR = 32'b00000000001100000010?????1110011; + localparam logic [31:0] RDCYCLE = 32'b11000000000000000010?????1110011; + localparam logic [31:0] RDTIME = 32'b11000000000100000010?????1110011; + localparam logic [31:0] RDINSTRET = 32'b11000000001000000010?????1110011; + localparam logic [31:0] RDCYCLEH = 32'b11001000000000000010?????1110011; + localparam logic [31:0] RDTIMEH = 32'b11001000000100000010?????1110011; + localparam logic [31:0] RDINSTRETH = 32'b11001000001000000010?????1110011; + localparam logic [31:0] SCALL = 32'b00000000000000000000000001110011; + localparam logic [31:0] SBREAK = 32'b00000000000100000000000001110011; + localparam logic [31:0] FMV_X_S = 32'b111000000000?????000?????1010011; + localparam logic [31:0] FMV_S_X = 32'b111100000000?????000?????1010011; + localparam logic [31:0] FENCE_TSO = 32'b100000110011?????000?????0001111; + localparam logic [31:0] PAUSE = 32'b00000001000000000000000000001111; + localparam logic [31:0] MXMACC_VV = 32'b101100???????????010?????1010111; + localparam logic [31:0] MXMACC_VX = 32'b101100???????????110?????1010111; + localparam logic [31:0] MXDOTP_VV = 32'b101110???????????010?????1010111; + localparam logic [31:0] MXDOTP_VX = 32'b101110???????????110?????1010111; + localparam logic [31:0] MXFMACC_VV = 32'b110111???????????001?????1010111; + localparam logic [31:0] MXFMACC_VF = 32'b110111???????????101?????1010111; + localparam logic [31:0] MLE8_V_A = 32'b0010010??????????000?????1110111; + localparam logic [31:0] MLE8_V_B = 32'b0010100??????????000?????1110111; + localparam logic [31:0] MLE8_V_C = 32'b0000000??????????000?????1110111; + localparam logic [31:0] MLE16_V_A = 32'b0010010??????????101?????1110111; + localparam logic [31:0] MLE16_V_B = 32'b0010100??????????101?????1110111; + localparam logic [31:0] MLE16_V_C = 32'b0000000??????????101?????1110111; + localparam logic [31:0] MLE32_V_A = 32'b0010010??????????110?????1110111; + localparam logic [31:0] MLE32_V_B = 32'b0010100??????????110?????1110111; + localparam logic [31:0] MLE32_V_C = 32'b0000000??????????110?????1110111; + localparam logic [31:0] MLE64_V_A = 32'b0010010??????????111?????1110111; + localparam logic [31:0] MLE64_V_B = 32'b0010100??????????111?????1110111; + localparam logic [31:0] MLE64_V_C = 32'b0000000??????????111?????1110111; + localparam logic [31:0] MSE8_V_A = 32'b0010011??????????000?????1110111; + localparam logic [31:0] MSE8_V_B = 32'b0010101??????????000?????1110111; + localparam logic [31:0] MSE8_V_C = 32'b0000001??????????000?????1110111; + localparam logic [31:0] MSE16_V_A = 32'b0010011??????????101?????1110111; + localparam logic [31:0] MSE16_V_B = 32'b0010101??????????101?????1110111; + localparam logic [31:0] MSE16_V_C = 32'b0000001??????????101?????1110111; + localparam logic [31:0] MSE32_V_A = 32'b0010011??????????110?????1110111; + localparam logic [31:0] MSE32_V_B = 32'b0010101??????????110?????1110111; + localparam logic [31:0] MSE32_V_C = 32'b0000001??????????110?????1110111; + localparam logic [31:0] MSE64_V_A = 32'b0010011??????????111?????1110111; + localparam logic [31:0] MSE64_V_B = 32'b0010101??????????111?????1110111; + localparam logic [31:0] MSE64_V_C = 32'b0000001??????????111?????1110111; + localparam logic [31:0] MSETTILEM = 32'b001100000000?????111?????1110111; + localparam logic [31:0] MSETTILEK = 32'b010100000000?????111?????1110111; + localparam logic [31:0] MSETTILEN = 32'b011100000000?????111?????1110111; + localparam logic [31:0] AMOADD_W = 32'b00000????????????010?????0101111; + localparam logic [31:0] AMOXOR_W = 32'b00100????????????010?????0101111; + localparam logic [31:0] AMOOR_W = 32'b01000????????????010?????0101111; + localparam logic [31:0] AMOAND_W = 32'b01100????????????010?????0101111; + localparam logic [31:0] AMOMIN_W = 32'b10000????????????010?????0101111; + localparam logic [31:0] AMOMAX_W = 32'b10100????????????010?????0101111; + localparam logic [31:0] AMOMINU_W = 32'b11000????????????010?????0101111; + localparam logic [31:0] AMOMAXU_W = 32'b11100????????????010?????0101111; + localparam logic [31:0] AMOSWAP_W = 32'b00001????????????010?????0101111; + localparam logic [31:0] LR_W = 32'b00010??00000?????010?????0101111; + localparam logic [31:0] SC_W = 32'b00011????????????010?????0101111; + localparam logic [31:0] ANDN = 32'b0100000??????????111?????0110011; + localparam logic [31:0] ORN = 32'b0100000??????????110?????0110011; + localparam logic [31:0] XNOR = 32'b0100000??????????100?????0110011; + localparam logic [31:0] SLO = 32'b0010000??????????001?????0110011; + localparam logic [31:0] SRO = 32'b0010000??????????101?????0110011; + localparam logic [31:0] ROL = 32'b0110000??????????001?????0110011; + localparam logic [31:0] ROR = 32'b0110000??????????101?????0110011; + localparam logic [31:0] SBCLR = 32'b0100100??????????001?????0110011; + localparam logic [31:0] SBSET = 32'b0010100??????????001?????0110011; + localparam logic [31:0] SBINV = 32'b0110100??????????001?????0110011; + localparam logic [31:0] SBEXT = 32'b0100100??????????101?????0110011; + localparam logic [31:0] GORC = 32'b0010100??????????101?????0110011; + localparam logic [31:0] GREV = 32'b0110100??????????101?????0110011; + localparam logic [31:0] SLOI = 32'b001000???????????001?????0010011; + localparam logic [31:0] SROI = 32'b001000???????????101?????0010011; + localparam logic [31:0] RORI = 32'b011000???????????101?????0010011; + localparam logic [31:0] SBCLRI = 32'b010010???????????001?????0010011; + localparam logic [31:0] SBSETI = 32'b001010???????????001?????0010011; + localparam logic [31:0] SBINVI = 32'b011010???????????001?????0010011; + localparam logic [31:0] SBEXTI = 32'b010010???????????101?????0010011; + localparam logic [31:0] GORCI = 32'b001010???????????101?????0010011; + localparam logic [31:0] GREVI = 32'b011010???????????101?????0010011; + localparam logic [31:0] CMIX = 32'b?????11??????????001?????0110011; + localparam logic [31:0] CMOV = 32'b?????11??????????101?????0110011; + localparam logic [31:0] FSL = 32'b?????10??????????001?????0110011; + localparam logic [31:0] FSR = 32'b?????10??????????101?????0110011; + localparam logic [31:0] FSRI = 32'b?????1???????????101?????0010011; + localparam logic [31:0] CLZ = 32'b011000000000?????001?????0010011; + localparam logic [31:0] CTZ = 32'b011000000001?????001?????0010011; + localparam logic [31:0] PCNT = 32'b011000000010?????001?????0010011; + localparam logic [31:0] SEXT_B = 32'b011000000100?????001?????0010011; + localparam logic [31:0] SEXT_H = 32'b011000000101?????001?????0010011; + localparam logic [31:0] CRC32_B = 32'b011000010000?????001?????0010011; + localparam logic [31:0] CRC32_H = 32'b011000010001?????001?????0010011; + localparam logic [31:0] CRC32_W = 32'b011000010010?????001?????0010011; + localparam logic [31:0] CRC32C_B = 32'b011000011000?????001?????0010011; + localparam logic [31:0] CRC32C_H = 32'b011000011001?????001?????0010011; + localparam logic [31:0] CRC32C_W = 32'b011000011010?????001?????0010011; + localparam logic [31:0] SH1ADD = 32'b0010000??????????010?????0110011; + localparam logic [31:0] SH2ADD = 32'b0010000??????????100?????0110011; + localparam logic [31:0] SH3ADD = 32'b0010000??????????110?????0110011; + localparam logic [31:0] CLMUL = 32'b0000101??????????001?????0110011; + localparam logic [31:0] CLMULR = 32'b0000101??????????010?????0110011; + localparam logic [31:0] CLMULH = 32'b0000101??????????011?????0110011; + localparam logic [31:0] MIN = 32'b0000101??????????100?????0110011; + localparam logic [31:0] MAX = 32'b0000101??????????101?????0110011; + localparam logic [31:0] MINU = 32'b0000101??????????110?????0110011; + localparam logic [31:0] MAXU = 32'b0000101??????????111?????0110011; + localparam logic [31:0] SHFL = 32'b0000100??????????001?????0110011; + localparam logic [31:0] UNSHFL = 32'b0000100??????????101?????0110011; + localparam logic [31:0] BEXT = 32'b0000100??????????110?????0110011; + localparam logic [31:0] BDEP = 32'b0100100??????????110?????0110011; + localparam logic [31:0] PACK = 32'b0000100??????????100?????0110011; + localparam logic [31:0] PACKU = 32'b0100100??????????100?????0110011; + localparam logic [31:0] PACKH = 32'b0000100??????????111?????0110011; + localparam logic [31:0] BFP = 32'b0100100??????????111?????0110011; + localparam logic [31:0] SHFLI = 32'b0000100??????????001?????0010011; + localparam logic [31:0] UNSHFLI = 32'b0000100??????????101?????0010011; + localparam logic [31:0] C_SRLI_RV32 = 32'b????????????????100000????????01; + localparam logic [31:0] C_SRAI_RV32 = 32'b????????????????100001????????01; + localparam logic [31:0] C_SLLI_RV32 = 32'b????????????????0000??????????10; + localparam logic [31:0] FADD_D = 32'b0000001??????????????????1010011; + localparam logic [31:0] FSUB_D = 32'b0000101??????????????????1010011; + localparam logic [31:0] FMUL_D = 32'b0001001??????????????????1010011; + localparam logic [31:0] FDIV_D = 32'b0001101??????????????????1010011; + localparam logic [31:0] FSGNJ_D = 32'b0010001??????????000?????1010011; + localparam logic [31:0] FSGNJN_D = 32'b0010001??????????001?????1010011; + localparam logic [31:0] FSGNJX_D = 32'b0010001??????????010?????1010011; + localparam logic [31:0] FMIN_D = 32'b0010101??????????000?????1010011; + localparam logic [31:0] FMAX_D = 32'b0010101??????????001?????1010011; + localparam logic [31:0] FCVT_S_D = 32'b010000000001?????????????1010011; + localparam logic [31:0] FCVT_D_S = 32'b010000100000?????????????1010011; + localparam logic [31:0] FSQRT_D = 32'b010110100000?????????????1010011; + localparam logic [31:0] FLE_D = 32'b1010001??????????000?????1010011; + localparam logic [31:0] FLT_D = 32'b1010001??????????001?????1010011; + localparam logic [31:0] FEQ_D = 32'b1010001??????????010?????1010011; + localparam logic [31:0] FCVT_W_D = 32'b110000100000?????????????1010011; + localparam logic [31:0] FCVT_WU_D = 32'b110000100001?????????????1010011; + localparam logic [31:0] FCLASS_D = 32'b111000100000?????001?????1010011; + localparam logic [31:0] FCVT_D_W = 32'b110100100000?????????????1010011; + localparam logic [31:0] FCVT_D_WU = 32'b110100100001?????????????1010011; + localparam logic [31:0] FLD = 32'b?????????????????011?????0000111; + localparam logic [31:0] FSD = 32'b?????????????????011?????0100111; + localparam logic [31:0] FMADD_D = 32'b?????01??????????????????1000011; + localparam logic [31:0] FMSUB_D = 32'b?????01??????????????????1000111; + localparam logic [31:0] FNMSUB_D = 32'b?????01??????????????????1001011; + localparam logic [31:0] FNMADD_D = 32'b?????01??????????????????1001111; + localparam logic [31:0] FADD_S = 32'b0000000??????????????????1010011; + localparam logic [31:0] FSUB_S = 32'b0000100??????????????????1010011; + localparam logic [31:0] FMUL_S = 32'b0001000??????????????????1010011; + localparam logic [31:0] FDIV_S = 32'b0001100??????????????????1010011; + localparam logic [31:0] FSGNJ_S = 32'b0010000??????????000?????1010011; + localparam logic [31:0] FSGNJN_S = 32'b0010000??????????001?????1010011; + localparam logic [31:0] FSGNJX_S = 32'b0010000??????????010?????1010011; + localparam logic [31:0] FMIN_S = 32'b0010100??????????000?????1010011; + localparam logic [31:0] FMAX_S = 32'b0010100??????????001?????1010011; + localparam logic [31:0] FSQRT_S = 32'b010110000000?????????????1010011; + localparam logic [31:0] FLE_S = 32'b1010000??????????000?????1010011; + localparam logic [31:0] FLT_S = 32'b1010000??????????001?????1010011; + localparam logic [31:0] FEQ_S = 32'b1010000??????????010?????1010011; + localparam logic [31:0] FCVT_W_S = 32'b110000000000?????????????1010011; + localparam logic [31:0] FCVT_WU_S = 32'b110000000001?????????????1010011; + localparam logic [31:0] FMV_X_W = 32'b111000000000?????000?????1010011; + localparam logic [31:0] FCLASS_S = 32'b111000000000?????001?????1010011; + localparam logic [31:0] FCVT_S_W = 32'b110100000000?????????????1010011; + localparam logic [31:0] FCVT_S_WU = 32'b110100000001?????????????1010011; + localparam logic [31:0] FMV_W_X = 32'b111100000000?????000?????1010011; + localparam logic [31:0] FLW = 32'b?????????????????010?????0000111; + localparam logic [31:0] FSW = 32'b?????????????????010?????0100111; + localparam logic [31:0] FMADD_S = 32'b?????00??????????????????1000011; + localparam logic [31:0] FMSUB_S = 32'b?????00??????????????????1000111; + localparam logic [31:0] FNMSUB_S = 32'b?????00??????????????????1001011; + localparam logic [31:0] FNMADD_S = 32'b?????00??????????????????1001111; + localparam logic [31:0] HFENCE_VVMA = 32'b0010001??????????000000001110011; + localparam logic [31:0] HFENCE_GVMA = 32'b0110001??????????000000001110011; + localparam logic [31:0] HLV_B = 32'b011000000000?????100?????1110011; + localparam logic [31:0] HLV_BU = 32'b011000000001?????100?????1110011; + localparam logic [31:0] HLV_H = 32'b011001000000?????100?????1110011; + localparam logic [31:0] HLV_HU = 32'b011001000001?????100?????1110011; + localparam logic [31:0] HLVX_HU = 32'b011001000011?????100?????1110011; + localparam logic [31:0] HLV_W = 32'b011010000000?????100?????1110011; + localparam logic [31:0] HLVX_WU = 32'b011010000011?????100?????1110011; + localparam logic [31:0] HSV_B = 32'b0110001??????????100000001110011; + localparam logic [31:0] HSV_H = 32'b0110011??????????100000001110011; + localparam logic [31:0] HSV_W = 32'b0110101??????????100000001110011; + localparam logic [31:0] BEQ = 32'b?????????????????000?????1100011; + localparam logic [31:0] BNE = 32'b?????????????????001?????1100011; + localparam logic [31:0] BLT = 32'b?????????????????100?????1100011; + localparam logic [31:0] BGE = 32'b?????????????????101?????1100011; + localparam logic [31:0] BLTU = 32'b?????????????????110?????1100011; + localparam logic [31:0] BGEU = 32'b?????????????????111?????1100011; + localparam logic [31:0] JALR = 32'b?????????????????000?????1100111; + localparam logic [31:0] JAL = 32'b?????????????????????????1101111; + localparam logic [31:0] LUI = 32'b?????????????????????????0110111; + localparam logic [31:0] AUIPC = 32'b?????????????????????????0010111; + localparam logic [31:0] ADDI = 32'b?????????????????000?????0010011; + localparam logic [31:0] SLLI = 32'b000000???????????001?????0010011; + localparam logic [31:0] SLTI = 32'b?????????????????010?????0010011; + localparam logic [31:0] SLTIU = 32'b?????????????????011?????0010011; + localparam logic [31:0] XORI = 32'b?????????????????100?????0010011; + localparam logic [31:0] SRLI = 32'b000000???????????101?????0010011; + localparam logic [31:0] SRAI = 32'b010000???????????101?????0010011; + localparam logic [31:0] ORI = 32'b?????????????????110?????0010011; + localparam logic [31:0] ANDI = 32'b?????????????????111?????0010011; + localparam logic [31:0] ADD = 32'b0000000??????????000?????0110011; + localparam logic [31:0] SUB = 32'b0100000??????????000?????0110011; + localparam logic [31:0] SLL = 32'b0000000??????????001?????0110011; + localparam logic [31:0] SLT = 32'b0000000??????????010?????0110011; + localparam logic [31:0] SLTU = 32'b0000000??????????011?????0110011; + localparam logic [31:0] XOR = 32'b0000000??????????100?????0110011; + localparam logic [31:0] SRL = 32'b0000000??????????101?????0110011; + localparam logic [31:0] SRA = 32'b0100000??????????101?????0110011; + localparam logic [31:0] OR = 32'b0000000??????????110?????0110011; + localparam logic [31:0] AND = 32'b0000000??????????111?????0110011; + localparam logic [31:0] LB = 32'b?????????????????000?????0000011; + localparam logic [31:0] LH = 32'b?????????????????001?????0000011; + localparam logic [31:0] LW = 32'b?????????????????010?????0000011; + localparam logic [31:0] LBU = 32'b?????????????????100?????0000011; + localparam logic [31:0] LHU = 32'b?????????????????101?????0000011; + localparam logic [31:0] SB = 32'b?????????????????000?????0100011; + localparam logic [31:0] SH = 32'b?????????????????001?????0100011; + localparam logic [31:0] SW = 32'b?????????????????010?????0100011; + localparam logic [31:0] FENCE = 32'b?????????????????000?????0001111; + localparam logic [31:0] FENCE_I = 32'b?????????????????001?????0001111; + localparam logic [31:0] MUL = 32'b0000001??????????000?????0110011; + localparam logic [31:0] MULH = 32'b0000001??????????001?????0110011; + localparam logic [31:0] MULHSU = 32'b0000001??????????010?????0110011; + localparam logic [31:0] MULHU = 32'b0000001??????????011?????0110011; + localparam logic [31:0] DIV = 32'b0000001??????????100?????0110011; + localparam logic [31:0] DIVU = 32'b0000001??????????101?????0110011; + localparam logic [31:0] REM = 32'b0000001??????????110?????0110011; + localparam logic [31:0] REMU = 32'b0000001??????????111?????0110011; + localparam logic [31:0] FADD_Q = 32'b0000011??????????????????1010011; + localparam logic [31:0] FSUB_Q = 32'b0000111??????????????????1010011; + localparam logic [31:0] FMUL_Q = 32'b0001011??????????????????1010011; + localparam logic [31:0] FDIV_Q = 32'b0001111??????????????????1010011; + localparam logic [31:0] FSGNJ_Q = 32'b0010011??????????000?????1010011; + localparam logic [31:0] FSGNJN_Q = 32'b0010011??????????001?????1010011; + localparam logic [31:0] FSGNJX_Q = 32'b0010011??????????010?????1010011; + localparam logic [31:0] FMIN_Q = 32'b0010111??????????000?????1010011; + localparam logic [31:0] FMAX_Q = 32'b0010111??????????001?????1010011; + localparam logic [31:0] FCVT_S_Q = 32'b010000000011?????????????1010011; + localparam logic [31:0] FCVT_Q_S = 32'b010001100000?????????????1010011; + localparam logic [31:0] FCVT_D_Q = 32'b010000100011?????????????1010011; + localparam logic [31:0] FCVT_Q_D = 32'b010001100001?????????????1010011; + localparam logic [31:0] FSQRT_Q = 32'b010111100000?????????????1010011; + localparam logic [31:0] FLE_Q = 32'b1010011??????????000?????1010011; + localparam logic [31:0] FLT_Q = 32'b1010011??????????001?????1010011; + localparam logic [31:0] FEQ_Q = 32'b1010011??????????010?????1010011; + localparam logic [31:0] FCVT_W_Q = 32'b110001100000?????????????1010011; + localparam logic [31:0] FCVT_WU_Q = 32'b110001100001?????????????1010011; + localparam logic [31:0] FCLASS_Q = 32'b111001100000?????001?????1010011; + localparam logic [31:0] FCVT_Q_W = 32'b110101100000?????????????1010011; + localparam logic [31:0] FCVT_Q_WU = 32'b110101100001?????????????1010011; + localparam logic [31:0] FLQ = 32'b?????????????????100?????0000111; + localparam logic [31:0] FSQ = 32'b?????????????????100?????0100111; + localparam logic [31:0] FMADD_Q = 32'b?????11??????????????????1000011; + localparam logic [31:0] FMSUB_Q = 32'b?????11??????????????????1000111; + localparam logic [31:0] FNMSUB_Q = 32'b?????11??????????????????1001011; + localparam logic [31:0] FNMADD_Q = 32'b?????11??????????????????1001111; + localparam logic [31:0] AMOADD_D = 32'b00000????????????011?????0101111; + localparam logic [31:0] AMOXOR_D = 32'b00100????????????011?????0101111; + localparam logic [31:0] AMOOR_D = 32'b01000????????????011?????0101111; + localparam logic [31:0] AMOAND_D = 32'b01100????????????011?????0101111; + localparam logic [31:0] AMOMIN_D = 32'b10000????????????011?????0101111; + localparam logic [31:0] AMOMAX_D = 32'b10100????????????011?????0101111; + localparam logic [31:0] AMOMINU_D = 32'b11000????????????011?????0101111; + localparam logic [31:0] AMOMAXU_D = 32'b11100????????????011?????0101111; + localparam logic [31:0] AMOSWAP_D = 32'b00001????????????011?????0101111; + localparam logic [31:0] LR_D = 32'b00010??00000?????011?????0101111; + localparam logic [31:0] SC_D = 32'b00011????????????011?????0101111; + localparam logic [31:0] C_LD = 32'b????????????????011???????????00; + localparam logic [31:0] C_SD = 32'b????????????????111???????????00; + localparam logic [31:0] C_SUBW = 32'b????????????????100111???00???01; + localparam logic [31:0] C_ADDW = 32'b????????????????100111???01???01; + localparam logic [31:0] C_ADDIW = 32'b????????????????001???????????01; + localparam logic [31:0] C_LDSP = 32'b????????????????011???????????10; + localparam logic [31:0] C_SDSP = 32'b????????????????111???????????10; + localparam logic [31:0] FCVT_L_D = 32'b110000100010?????????????1010011; + localparam logic [31:0] FCVT_LU_D = 32'b110000100011?????????????1010011; + localparam logic [31:0] FMV_X_D = 32'b111000100000?????000?????1010011; + localparam logic [31:0] FCVT_D_L = 32'b110100100010?????????????1010011; + localparam logic [31:0] FCVT_D_LU = 32'b110100100011?????????????1010011; + localparam logic [31:0] FMV_D_X = 32'b111100100000?????000?????1010011; + localparam logic [31:0] FCVT_L_S = 32'b110000000010?????????????1010011; + localparam logic [31:0] FCVT_LU_S = 32'b110000000011?????????????1010011; + localparam logic [31:0] FCVT_S_L = 32'b110100000010?????????????1010011; + localparam logic [31:0] FCVT_S_LU = 32'b110100000011?????????????1010011; + localparam logic [31:0] HLV_WU = 32'b011010000001?????100?????1110011; + localparam logic [31:0] HLV_D = 32'b011011000000?????100?????1110011; + localparam logic [31:0] HSV_D = 32'b0110111??????????100000001110011; + localparam logic [31:0] ADDIW = 32'b?????????????????000?????0011011; + localparam logic [31:0] SLLIW = 32'b0000000??????????001?????0011011; + localparam logic [31:0] SRLIW = 32'b0000000??????????101?????0011011; + localparam logic [31:0] SRAIW = 32'b0100000??????????101?????0011011; + localparam logic [31:0] ADDW = 32'b0000000??????????000?????0111011; + localparam logic [31:0] SUBW = 32'b0100000??????????000?????0111011; + localparam logic [31:0] SLLW = 32'b0000000??????????001?????0111011; + localparam logic [31:0] SRLW = 32'b0000000??????????101?????0111011; + localparam logic [31:0] SRAW = 32'b0100000??????????101?????0111011; + localparam logic [31:0] LD = 32'b?????????????????011?????0000011; + localparam logic [31:0] LWU = 32'b?????????????????110?????0000011; + localparam logic [31:0] SD = 32'b?????????????????011?????0100011; + localparam logic [31:0] MULW = 32'b0000001??????????000?????0111011; + localparam logic [31:0] DIVW = 32'b0000001??????????100?????0111011; + localparam logic [31:0] DIVUW = 32'b0000001??????????101?????0111011; + localparam logic [31:0] REMW = 32'b0000001??????????110?????0111011; + localparam logic [31:0] REMUW = 32'b0000001??????????111?????0111011; + localparam logic [31:0] FCVT_L_Q = 32'b110001100010?????????????1010011; + localparam logic [31:0] FCVT_LU_Q = 32'b110001100011?????????????1010011; + localparam logic [31:0] FCVT_Q_L = 32'b110101100010?????????????1010011; + localparam logic [31:0] FCVT_Q_LU = 32'b110101100011?????????????1010011; + localparam logic [31:0] C_NOP = 32'b????????????????0000000000000001; + localparam logic [31:0] C_ADDI16SP = 32'b????????????????011?00010?????01; + localparam logic [31:0] C_JR = 32'b????????????????1000?????0000010; + localparam logic [31:0] C_JALR = 32'b????????????????1001?????0000010; + localparam logic [31:0] C_EBREAK = 32'b????????????????1001000000000010; + localparam logic [31:0] C_ADDI4SPN = 32'b????????????????000???????????00; + localparam logic [31:0] C_FLD = 32'b????????????????001???????????00; + localparam logic [31:0] C_LW = 32'b????????????????010???????????00; + localparam logic [31:0] C_FLW = 32'b????????????????011???????????00; + localparam logic [31:0] C_FSD = 32'b????????????????101???????????00; + localparam logic [31:0] C_SW = 32'b????????????????110???????????00; + localparam logic [31:0] C_FSW = 32'b????????????????111???????????00; + localparam logic [31:0] C_ADDI = 32'b????????????????000???????????01; + localparam logic [31:0] C_JAL = 32'b????????????????001???????????01; + localparam logic [31:0] C_LI = 32'b????????????????010???????????01; + localparam logic [31:0] C_LUI = 32'b????????????????011???????????01; + localparam logic [31:0] C_SRLI = 32'b????????????????100?00????????01; + localparam logic [31:0] C_SRAI = 32'b????????????????100?01????????01; + localparam logic [31:0] C_ANDI = 32'b????????????????100?10????????01; + localparam logic [31:0] C_SUB = 32'b????????????????100011???00???01; + localparam logic [31:0] C_XOR = 32'b????????????????100011???01???01; + localparam logic [31:0] C_OR = 32'b????????????????100011???10???01; + localparam logic [31:0] C_AND = 32'b????????????????100011???11???01; + localparam logic [31:0] C_J = 32'b????????????????101???????????01; + localparam logic [31:0] C_BEQZ = 32'b????????????????110???????????01; + localparam logic [31:0] C_BNEZ = 32'b????????????????111???????????01; + localparam logic [31:0] C_SLLI = 32'b????????????????000???????????10; + localparam logic [31:0] C_FLDSP = 32'b????????????????001???????????10; + localparam logic [31:0] C_LWSP = 32'b????????????????010???????????10; + localparam logic [31:0] C_FLWSP = 32'b????????????????011???????????10; + localparam logic [31:0] C_MV = 32'b????????????????1000??????????10; + localparam logic [31:0] C_ADD = 32'b????????????????1001??????????10; + localparam logic [31:0] C_FSDSP = 32'b????????????????101???????????10; + localparam logic [31:0] C_SWSP = 32'b????????????????110???????????10; + localparam logic [31:0] C_FSWSP = 32'b????????????????111???????????10; + localparam logic [31:0] VSETIVLI = 32'b11???????????????111?????1010111; + localparam logic [31:0] VSETVLI = 32'b0????????????????111?????1010111; + localparam logic [31:0] VSETVL = 32'b1000000??????????111?????1010111; + localparam logic [31:0] VLM_V = 32'b000000101011?????000?????0000111; + localparam logic [31:0] VSM_V = 32'b000000101011?????000?????0100111; + localparam logic [31:0] VLE8_V = 32'b???000?00000?????000?????0000111; + localparam logic [31:0] VLE16_V = 32'b???000?00000?????101?????0000111; + localparam logic [31:0] VLE32_V = 32'b???000?00000?????110?????0000111; + localparam logic [31:0] VLE64_V = 32'b???000?00000?????111?????0000111; + localparam logic [31:0] VLE128_V = 32'b???100?00000?????000?????0000111; + localparam logic [31:0] VLE256_V = 32'b???100?00000?????101?????0000111; + localparam logic [31:0] VLE512_V = 32'b???100?00000?????110?????0000111; + localparam logic [31:0] VLE1024_V = 32'b???100?00000?????111?????0000111; + localparam logic [31:0] VSE8_V = 32'b???000?00000?????000?????0100111; + localparam logic [31:0] VSE16_V = 32'b???000?00000?????101?????0100111; + localparam logic [31:0] VSE32_V = 32'b???000?00000?????110?????0100111; + localparam logic [31:0] VSE64_V = 32'b???000?00000?????111?????0100111; + localparam logic [31:0] VSE128_V = 32'b???100?00000?????000?????0100111; + localparam logic [31:0] VSE256_V = 32'b???100?00000?????101?????0100111; + localparam logic [31:0] VSE512_V = 32'b???100?00000?????110?????0100111; + localparam logic [31:0] VSE1024_V = 32'b???100?00000?????111?????0100111; + localparam logic [31:0] VLUXEI8_V = 32'b???001???????????000?????0000111; + localparam logic [31:0] VLUXEI16_V = 32'b???001???????????101?????0000111; + localparam logic [31:0] VLUXEI32_V = 32'b???001???????????110?????0000111; + localparam logic [31:0] VLUXEI64_V = 32'b???001???????????111?????0000111; + localparam logic [31:0] VLUXEI128_V = 32'b???101???????????000?????0000111; + localparam logic [31:0] VLUXEI256_V = 32'b???101???????????101?????0000111; + localparam logic [31:0] VLUXEI512_V = 32'b???101???????????110?????0000111; + localparam logic [31:0] VLUXEI1024_V = 32'b???101???????????111?????0000111; + localparam logic [31:0] VSUXEI8_V = 32'b???001???????????000?????0100111; + localparam logic [31:0] VSUXEI16_V = 32'b???001???????????101?????0100111; + localparam logic [31:0] VSUXEI32_V = 32'b???001???????????110?????0100111; + localparam logic [31:0] VSUXEI64_V = 32'b???001???????????111?????0100111; + localparam logic [31:0] VSUXEI128_V = 32'b???101???????????000?????0100111; + localparam logic [31:0] VSUXEI256_V = 32'b???101???????????101?????0100111; + localparam logic [31:0] VSUXEI512_V = 32'b???101???????????110?????0100111; + localparam logic [31:0] VSUXEI1024_V = 32'b???101???????????111?????0100111; + localparam logic [31:0] VLSE8_V = 32'b???010???????????000?????0000111; + localparam logic [31:0] VLSE16_V = 32'b???010???????????101?????0000111; + localparam logic [31:0] VLSE32_V = 32'b???010???????????110?????0000111; + localparam logic [31:0] VLSE64_V = 32'b???010???????????111?????0000111; + localparam logic [31:0] VLSE128_V = 32'b???110???????????000?????0000111; + localparam logic [31:0] VLSE256_V = 32'b???110???????????101?????0000111; + localparam logic [31:0] VLSE512_V = 32'b???110???????????110?????0000111; + localparam logic [31:0] VLSE1024_V = 32'b???110???????????111?????0000111; + localparam logic [31:0] VSSE8_V = 32'b???010???????????000?????0100111; + localparam logic [31:0] VSSE16_V = 32'b???010???????????101?????0100111; + localparam logic [31:0] VSSE32_V = 32'b???010???????????110?????0100111; + localparam logic [31:0] VSSE64_V = 32'b???010???????????111?????0100111; + localparam logic [31:0] VSSE128_V = 32'b???110???????????000?????0100111; + localparam logic [31:0] VSSE256_V = 32'b???110???????????101?????0100111; + localparam logic [31:0] VSSE512_V = 32'b???110???????????110?????0100111; + localparam logic [31:0] VSSE1024_V = 32'b???110???????????111?????0100111; + localparam logic [31:0] VLOXEI8_V = 32'b???011???????????000?????0000111; + localparam logic [31:0] VLOXEI16_V = 32'b???011???????????101?????0000111; + localparam logic [31:0] VLOXEI32_V = 32'b???011???????????110?????0000111; + localparam logic [31:0] VLOXEI64_V = 32'b???011???????????111?????0000111; + localparam logic [31:0] VLOXEI128_V = 32'b???111???????????000?????0000111; + localparam logic [31:0] VLOXEI256_V = 32'b???111???????????101?????0000111; + localparam logic [31:0] VLOXEI512_V = 32'b???111???????????110?????0000111; + localparam logic [31:0] VLOXEI1024_V = 32'b???111???????????111?????0000111; + localparam logic [31:0] VSOXEI8_V = 32'b???011???????????000?????0100111; + localparam logic [31:0] VSOXEI16_V = 32'b???011???????????101?????0100111; + localparam logic [31:0] VSOXEI32_V = 32'b???011???????????110?????0100111; + localparam logic [31:0] VSOXEI64_V = 32'b???011???????????111?????0100111; + localparam logic [31:0] VSOXEI128_V = 32'b???111???????????000?????0100111; + localparam logic [31:0] VSOXEI256_V = 32'b???111???????????101?????0100111; + localparam logic [31:0] VSOXEI512_V = 32'b???111???????????110?????0100111; + localparam logic [31:0] VSOXEI1024_V = 32'b???111???????????111?????0100111; + localparam logic [31:0] VLE8FF_V = 32'b???000?10000?????000?????0000111; + localparam logic [31:0] VLE16FF_V = 32'b???000?10000?????101?????0000111; + localparam logic [31:0] VLE32FF_V = 32'b???000?10000?????110?????0000111; + localparam logic [31:0] VLE64FF_V = 32'b???000?10000?????111?????0000111; + localparam logic [31:0] VLE128FF_V = 32'b???100?10000?????000?????0000111; + localparam logic [31:0] VLE256FF_V = 32'b???100?10000?????101?????0000111; + localparam logic [31:0] VLE512FF_V = 32'b???100?10000?????110?????0000111; + localparam logic [31:0] VLE1024FF_V = 32'b???100?10000?????111?????0000111; + localparam logic [31:0] VL1RE8_V = 32'b000000101000?????000?????0000111; + localparam logic [31:0] VL1RE16_V = 32'b000000101000?????101?????0000111; + localparam logic [31:0] VL1RE32_V = 32'b000000101000?????110?????0000111; + localparam logic [31:0] VL1RE64_V = 32'b000000101000?????111?????0000111; + localparam logic [31:0] VL2RE8_V = 32'b001000101000?????000?????0000111; + localparam logic [31:0] VL2RE16_V = 32'b001000101000?????101?????0000111; + localparam logic [31:0] VL2RE32_V = 32'b001000101000?????110?????0000111; + localparam logic [31:0] VL2RE64_V = 32'b001000101000?????111?????0000111; + localparam logic [31:0] VL4RE8_V = 32'b011000101000?????000?????0000111; + localparam logic [31:0] VL4RE16_V = 32'b011000101000?????101?????0000111; + localparam logic [31:0] VL4RE32_V = 32'b011000101000?????110?????0000111; + localparam logic [31:0] VL4RE64_V = 32'b011000101000?????111?????0000111; + localparam logic [31:0] VL8RE8_V = 32'b111000101000?????000?????0000111; + localparam logic [31:0] VL8RE16_V = 32'b111000101000?????101?????0000111; + localparam logic [31:0] VL8RE32_V = 32'b111000101000?????110?????0000111; + localparam logic [31:0] VL8RE64_V = 32'b111000101000?????111?????0000111; + localparam logic [31:0] VS1R_V = 32'b000000101000?????000?????0100111; + localparam logic [31:0] VS2R_V = 32'b001000101000?????000?????0100111; + localparam logic [31:0] VS4R_V = 32'b011000101000?????000?????0100111; + localparam logic [31:0] VS8R_V = 32'b111000101000?????000?????0100111; + localparam logic [31:0] VFADD_VF = 32'b000000???????????101?????1010111; + localparam logic [31:0] VFSUB_VF = 32'b000010???????????101?????1010111; + localparam logic [31:0] VFMIN_VF = 32'b000100???????????101?????1010111; + localparam logic [31:0] VFMAX_VF = 32'b000110???????????101?????1010111; + localparam logic [31:0] VFSGNJ_VF = 32'b001000???????????101?????1010111; + localparam logic [31:0] VFSGNJN_VF = 32'b001001???????????101?????1010111; + localparam logic [31:0] VFSGNJX_VF = 32'b001010???????????101?????1010111; + localparam logic [31:0] VFSLIDE1UP_VF = 32'b001110???????????101?????1010111; + localparam logic [31:0] VFSLIDE1DOWN_VF = 32'b001111???????????101?????1010111; + localparam logic [31:0] VFMV_S_F = 32'b010000100000?????101?????1010111; + localparam logic [31:0] VFMERGE_VFM = 32'b0101110??????????101?????1010111; + localparam logic [31:0] VFMV_V_F = 32'b010111100000?????101?????1010111; + localparam logic [31:0] VMFEQ_VF = 32'b011000???????????101?????1010111; + localparam logic [31:0] VMFLE_VF = 32'b011001???????????101?????1010111; + localparam logic [31:0] VMFLT_VF = 32'b011011???????????101?????1010111; + localparam logic [31:0] VMFNE_VF = 32'b011100???????????101?????1010111; + localparam logic [31:0] VMFGT_VF = 32'b011101???????????101?????1010111; + localparam logic [31:0] VMFGE_VF = 32'b011111???????????101?????1010111; + localparam logic [31:0] VFDIV_VF = 32'b100000???????????101?????1010111; + localparam logic [31:0] VFRDIV_VF = 32'b100001???????????101?????1010111; + localparam logic [31:0] VFMUL_VF = 32'b100100???????????101?????1010111; + localparam logic [31:0] VFRSUB_VF = 32'b100111???????????101?????1010111; + localparam logic [31:0] VFMADD_VF = 32'b101000???????????101?????1010111; + localparam logic [31:0] VFNMADD_VF = 32'b101001???????????101?????1010111; + localparam logic [31:0] VFMSUB_VF = 32'b101010???????????101?????1010111; + localparam logic [31:0] VFNMSUB_VF = 32'b101011???????????101?????1010111; + localparam logic [31:0] VFMACC_VF = 32'b101100???????????101?????1010111; + localparam logic [31:0] VFNMACC_VF = 32'b101101???????????101?????1010111; + localparam logic [31:0] VFMSAC_VF = 32'b101110???????????101?????1010111; + localparam logic [31:0] VFNMSAC_VF = 32'b101111???????????101?????1010111; + localparam logic [31:0] VFWADD_VF = 32'b110000???????????101?????1010111; + localparam logic [31:0] VFWSUB_VF = 32'b110010???????????101?????1010111; + localparam logic [31:0] VFWADD_WF = 32'b110100???????????101?????1010111; + localparam logic [31:0] VFWSUB_WF = 32'b110110???????????101?????1010111; + localparam logic [31:0] VFWMUL_VF = 32'b111000???????????101?????1010111; + localparam logic [31:0] VFWDOTP_VF = 32'b111011???????????101?????1010111; + localparam logic [31:0] VFWMACC_VF = 32'b111100???????????101?????1010111; + localparam logic [31:0] VFWNMACC_VF = 32'b111101???????????101?????1010111; + localparam logic [31:0] VFWMSAC_VF = 32'b111110???????????101?????1010111; + localparam logic [31:0] VFWNMSAC_VF = 32'b111111???????????101?????1010111; + localparam logic [31:0] VFADD_VV = 32'b000000???????????001?????1010111; + localparam logic [31:0] VFREDUSUM_VS = 32'b000001???????????001?????1010111; + localparam logic [31:0] VFSUB_VV = 32'b000010???????????001?????1010111; + localparam logic [31:0] VFREDOSUM_VS = 32'b000011???????????001?????1010111; + localparam logic [31:0] VFMIN_VV = 32'b000100???????????001?????1010111; + localparam logic [31:0] VFREDMIN_VS = 32'b000101???????????001?????1010111; + localparam logic [31:0] VFMAX_VV = 32'b000110???????????001?????1010111; + localparam logic [31:0] VFREDMAX_VS = 32'b000111???????????001?????1010111; + localparam logic [31:0] VFSGNJ_VV = 32'b001000???????????001?????1010111; + localparam logic [31:0] VFSGNJN_VV = 32'b001001???????????001?????1010111; + localparam logic [31:0] VFSGNJX_VV = 32'b001010???????????001?????1010111; + localparam logic [31:0] VFMV_F_S = 32'b0100001?????00000001?????1010111; + localparam logic [31:0] VMFEQ_VV = 32'b011000???????????001?????1010111; + localparam logic [31:0] VMFLE_VV = 32'b011001???????????001?????1010111; + localparam logic [31:0] VMFLT_VV = 32'b011011???????????001?????1010111; + localparam logic [31:0] VMFNE_VV = 32'b011100???????????001?????1010111; + localparam logic [31:0] VFDIV_VV = 32'b100000???????????001?????1010111; + localparam logic [31:0] VFMUL_VV = 32'b100100???????????001?????1010111; + localparam logic [31:0] VFMADD_VV = 32'b101000???????????001?????1010111; + localparam logic [31:0] VFNMADD_VV = 32'b101001???????????001?????1010111; + localparam logic [31:0] VFMSUB_VV = 32'b101010???????????001?????1010111; + localparam logic [31:0] VFNMSUB_VV = 32'b101011???????????001?????1010111; + localparam logic [31:0] VFMACC_VV = 32'b101100???????????001?????1010111; + localparam logic [31:0] VFNMACC_VV = 32'b101101???????????001?????1010111; + localparam logic [31:0] VFMSAC_VV = 32'b101110???????????001?????1010111; + localparam logic [31:0] VFNMSAC_VV = 32'b101111???????????001?????1010111; + localparam logic [31:0] VFCVT_XU_F_V = 32'b010010??????00000001?????1010111; + localparam logic [31:0] VFCVT_X_F_V = 32'b010010??????00001001?????1010111; + localparam logic [31:0] VFCVT_F_XU_V = 32'b010010??????00010001?????1010111; + localparam logic [31:0] VFCVT_F_X_V = 32'b010010??????00011001?????1010111; + localparam logic [31:0] VFCVT_RTZ_XU_F_V = 32'b010010??????00110001?????1010111; + localparam logic [31:0] VFCVT_RTZ_X_F_V = 32'b010010??????00111001?????1010111; + localparam logic [31:0] VFWCVT_XU_F_V = 32'b010010??????01000001?????1010111; + localparam logic [31:0] VFWCVT_X_F_V = 32'b010010??????01001001?????1010111; + localparam logic [31:0] VFWCVT_F_XU_V = 32'b010010??????01010001?????1010111; + localparam logic [31:0] VFWCVT_F_X_V = 32'b010010??????01011001?????1010111; + localparam logic [31:0] VFWCVT_F_F_V = 32'b010010??????01100001?????1010111; + localparam logic [31:0] VFWCVT_RTZ_XU_F_V = 32'b010010??????01110001?????1010111; + localparam logic [31:0] VFWCVT_RTZ_X_F_V = 32'b010010??????01111001?????1010111; + localparam logic [31:0] VFNCVT_XU_F_W = 32'b010010??????10000001?????1010111; + localparam logic [31:0] VFNCVT_X_F_W = 32'b010010??????10001001?????1010111; + localparam logic [31:0] VFNCVT_F_XU_W = 32'b010010??????10010001?????1010111; + localparam logic [31:0] VFNCVT_F_X_W = 32'b010010??????10011001?????1010111; + localparam logic [31:0] VFNCVT_F_F_W = 32'b010010??????10100001?????1010111; + localparam logic [31:0] VFNCVT_ROD_F_F_W = 32'b010010??????10101001?????1010111; + localparam logic [31:0] VFNCVT_RTZ_XU_F_W = 32'b010010??????10110001?????1010111; + localparam logic [31:0] VFNCVT_RTZ_X_F_W = 32'b010010??????10111001?????1010111; + localparam logic [31:0] VFSQRT_V = 32'b010011??????00000001?????1010111; + localparam logic [31:0] VFRSQRT7_V = 32'b010011??????00100001?????1010111; + localparam logic [31:0] VFREC7_V = 32'b010011??????00101001?????1010111; + localparam logic [31:0] VFCLASS_V = 32'b010011??????10000001?????1010111; + localparam logic [31:0] VFWADD_VV = 32'b110000???????????001?????1010111; + localparam logic [31:0] VFWREDUSUM_VS = 32'b110001???????????001?????1010111; + localparam logic [31:0] VFWSUB_VV = 32'b110010???????????001?????1010111; + localparam logic [31:0] VFWREDOSUM_VS = 32'b110011???????????001?????1010111; + localparam logic [31:0] VFWADD_WV = 32'b110100???????????001?????1010111; + localparam logic [31:0] VFWSUB_WV = 32'b110110???????????001?????1010111; + localparam logic [31:0] VFWMUL_VV = 32'b111000???????????001?????1010111; + localparam logic [31:0] VFWDOTP_VV = 32'b111011???????????001?????1010111; + localparam logic [31:0] VFWMACC_VV = 32'b111100???????????001?????1010111; + localparam logic [31:0] VFWNMACC_VV = 32'b111101???????????001?????1010111; + localparam logic [31:0] VFWMSAC_VV = 32'b111110???????????001?????1010111; + localparam logic [31:0] VFWNMSAC_VV = 32'b111111???????????001?????1010111; + localparam logic [31:0] VADD_VX = 32'b000000???????????100?????1010111; + localparam logic [31:0] VSUB_VX = 32'b000010???????????100?????1010111; + localparam logic [31:0] VRSUB_VX = 32'b000011???????????100?????1010111; + localparam logic [31:0] VMINU_VX = 32'b000100???????????100?????1010111; + localparam logic [31:0] VMIN_VX = 32'b000101???????????100?????1010111; + localparam logic [31:0] VMAXU_VX = 32'b000110???????????100?????1010111; + localparam logic [31:0] VMAX_VX = 32'b000111???????????100?????1010111; + localparam logic [31:0] VAND_VX = 32'b001001???????????100?????1010111; + localparam logic [31:0] VOR_VX = 32'b001010???????????100?????1010111; + localparam logic [31:0] VXOR_VX = 32'b001011???????????100?????1010111; + localparam logic [31:0] VRGATHER_VX = 32'b001100???????????100?????1010111; + localparam logic [31:0] VSLIDEUP_VX = 32'b001110???????????100?????1010111; + localparam logic [31:0] VSLIDEDOWN_VX = 32'b001111???????????100?????1010111; + localparam logic [31:0] VADC_VXM = 32'b0100000??????????100?????1010111; + localparam logic [31:0] VMADC_VXM = 32'b0100010??????????100?????1010111; + localparam logic [31:0] VMADC_VX = 32'b0100011??????????100?????1010111; + localparam logic [31:0] VSBC_VXM = 32'b0100100??????????100?????1010111; + localparam logic [31:0] VMSBC_VXM = 32'b0100110??????????100?????1010111; + localparam logic [31:0] VMSBC_VX = 32'b0100111??????????100?????1010111; + localparam logic [31:0] VMERGE_VXM = 32'b0101110??????????100?????1010111; + localparam logic [31:0] VMV_V_X = 32'b010111100000?????100?????1010111; + localparam logic [31:0] VMSEQ_VX = 32'b011000???????????100?????1010111; + localparam logic [31:0] VMSNE_VX = 32'b011001???????????100?????1010111; + localparam logic [31:0] VMSLTU_VX = 32'b011010???????????100?????1010111; + localparam logic [31:0] VMSLT_VX = 32'b011011???????????100?????1010111; + localparam logic [31:0] VMSLEU_VX = 32'b011100???????????100?????1010111; + localparam logic [31:0] VMSLE_VX = 32'b011101???????????100?????1010111; + localparam logic [31:0] VMSGTU_VX = 32'b011110???????????100?????1010111; + localparam logic [31:0] VMSGT_VX = 32'b011111???????????100?????1010111; + localparam logic [31:0] VSADDU_VX = 32'b100000???????????100?????1010111; + localparam logic [31:0] VSADD_VX = 32'b100001???????????100?????1010111; + localparam logic [31:0] VSSUBU_VX = 32'b100010???????????100?????1010111; + localparam logic [31:0] VSSUB_VX = 32'b100011???????????100?????1010111; + localparam logic [31:0] VSLL_VX = 32'b100101???????????100?????1010111; + localparam logic [31:0] VSMUL_VX = 32'b100111???????????100?????1010111; + localparam logic [31:0] VSRL_VX = 32'b101000???????????100?????1010111; + localparam logic [31:0] VSRA_VX = 32'b101001???????????100?????1010111; + localparam logic [31:0] VSSRL_VX = 32'b101010???????????100?????1010111; + localparam logic [31:0] VSSRA_VX = 32'b101011???????????100?????1010111; + localparam logic [31:0] VNSRL_WX = 32'b101100???????????100?????1010111; + localparam logic [31:0] VNSRA_WX = 32'b101101???????????100?????1010111; + localparam logic [31:0] VNCLIPU_WX = 32'b101110???????????100?????1010111; + localparam logic [31:0] VNCLIP_WX = 32'b101111???????????100?????1010111; + localparam logic [31:0] VADD_VV = 32'b000000???????????000?????1010111; + localparam logic [31:0] VSUB_VV = 32'b000010???????????000?????1010111; + localparam logic [31:0] VMINU_VV = 32'b000100???????????000?????1010111; + localparam logic [31:0] VMIN_VV = 32'b000101???????????000?????1010111; + localparam logic [31:0] VMAXU_VV = 32'b000110???????????000?????1010111; + localparam logic [31:0] VMAX_VV = 32'b000111???????????000?????1010111; + localparam logic [31:0] VAND_VV = 32'b001001???????????000?????1010111; + localparam logic [31:0] VOR_VV = 32'b001010???????????000?????1010111; + localparam logic [31:0] VXOR_VV = 32'b001011???????????000?????1010111; + localparam logic [31:0] VRGATHER_VV = 32'b001100???????????000?????1010111; + localparam logic [31:0] VRGATHEREI16_VV = 32'b001110???????????000?????1010111; + localparam logic [31:0] VADC_VVM = 32'b0100000??????????000?????1010111; + localparam logic [31:0] VMADC_VVM = 32'b0100010??????????000?????1010111; + localparam logic [31:0] VMADC_VV = 32'b0100011??????????000?????1010111; + localparam logic [31:0] VSBC_VVM = 32'b0100100??????????000?????1010111; + localparam logic [31:0] VMSBC_VVM = 32'b0100110??????????000?????1010111; + localparam logic [31:0] VMSBC_VV = 32'b0100111??????????000?????1010111; + localparam logic [31:0] VMERGE_VVM = 32'b0101110??????????000?????1010111; + localparam logic [31:0] VMV_V_V = 32'b010111100000?????000?????1010111; + localparam logic [31:0] VMSEQ_VV = 32'b011000???????????000?????1010111; + localparam logic [31:0] VMSNE_VV = 32'b011001???????????000?????1010111; + localparam logic [31:0] VMSLTU_VV = 32'b011010???????????000?????1010111; + localparam logic [31:0] VMSLT_VV = 32'b011011???????????000?????1010111; + localparam logic [31:0] VMSLEU_VV = 32'b011100???????????000?????1010111; + localparam logic [31:0] VMSLE_VV = 32'b011101???????????000?????1010111; + localparam logic [31:0] VSADDU_VV = 32'b100000???????????000?????1010111; + localparam logic [31:0] VSADD_VV = 32'b100001???????????000?????1010111; + localparam logic [31:0] VSSUBU_VV = 32'b100010???????????000?????1010111; + localparam logic [31:0] VSSUB_VV = 32'b100011???????????000?????1010111; + localparam logic [31:0] VSLL_VV = 32'b100101???????????000?????1010111; + localparam logic [31:0] VSMUL_VV = 32'b100111???????????000?????1010111; + localparam logic [31:0] VSRL_VV = 32'b101000???????????000?????1010111; + localparam logic [31:0] VSRA_VV = 32'b101001???????????000?????1010111; + localparam logic [31:0] VSSRL_VV = 32'b101010???????????000?????1010111; + localparam logic [31:0] VSSRA_VV = 32'b101011???????????000?????1010111; + localparam logic [31:0] VNSRL_WV = 32'b101100???????????000?????1010111; + localparam logic [31:0] VNSRA_WV = 32'b101101???????????000?????1010111; + localparam logic [31:0] VNCLIPU_WV = 32'b101110???????????000?????1010111; + localparam logic [31:0] VNCLIP_WV = 32'b101111???????????000?????1010111; + localparam logic [31:0] VWREDSUMU_VS = 32'b110000???????????000?????1010111; + localparam logic [31:0] VWREDSUM_VS = 32'b110001???????????000?????1010111; + localparam logic [31:0] VADD_VI = 32'b000000???????????011?????1010111; + localparam logic [31:0] VRSUB_VI = 32'b000011???????????011?????1010111; + localparam logic [31:0] VAND_VI = 32'b001001???????????011?????1010111; + localparam logic [31:0] VOR_VI = 32'b001010???????????011?????1010111; + localparam logic [31:0] VXOR_VI = 32'b001011???????????011?????1010111; + localparam logic [31:0] VRGATHER_VI = 32'b001100???????????011?????1010111; + localparam logic [31:0] VSLIDEUP_VI = 32'b001110???????????011?????1010111; + localparam logic [31:0] VSLIDEDOWN_VI = 32'b001111???????????011?????1010111; + localparam logic [31:0] VADC_VIM = 32'b0100000??????????011?????1010111; + localparam logic [31:0] VMADC_VIM = 32'b0100010??????????011?????1010111; + localparam logic [31:0] VMADC_VI = 32'b0100011??????????011?????1010111; + localparam logic [31:0] VMERGE_VIM = 32'b0101110??????????011?????1010111; + localparam logic [31:0] VMV_V_I = 32'b010111100000?????011?????1010111; + localparam logic [31:0] VMSEQ_VI = 32'b011000???????????011?????1010111; + localparam logic [31:0] VMSNE_VI = 32'b011001???????????011?????1010111; + localparam logic [31:0] VMSLEU_VI = 32'b011100???????????011?????1010111; + localparam logic [31:0] VMSLE_VI = 32'b011101???????????011?????1010111; + localparam logic [31:0] VMSGTU_VI = 32'b011110???????????011?????1010111; + localparam logic [31:0] VMSGT_VI = 32'b011111???????????011?????1010111; + localparam logic [31:0] VSADDU_VI = 32'b100000???????????011?????1010111; + localparam logic [31:0] VSADD_VI = 32'b100001???????????011?????1010111; + localparam logic [31:0] VSLL_VI = 32'b100101???????????011?????1010111; + localparam logic [31:0] VMV1R_V = 32'b1001111?????00000011?????1010111; + localparam logic [31:0] VMV2R_V = 32'b1001111?????00001011?????1010111; + localparam logic [31:0] VMV4R_V = 32'b1001111?????00011011?????1010111; + localparam logic [31:0] VMV8R_V = 32'b1001111?????00111011?????1010111; + localparam logic [31:0] VSRL_VI = 32'b101000???????????011?????1010111; + localparam logic [31:0] VSRA_VI = 32'b101001???????????011?????1010111; + localparam logic [31:0] VSSRL_VI = 32'b101010???????????011?????1010111; + localparam logic [31:0] VSSRA_VI = 32'b101011???????????011?????1010111; + localparam logic [31:0] VNSRL_WI = 32'b101100???????????011?????1010111; + localparam logic [31:0] VNSRA_WI = 32'b101101???????????011?????1010111; + localparam logic [31:0] VNCLIPU_WI = 32'b101110???????????011?????1010111; + localparam logic [31:0] VNCLIP_WI = 32'b101111???????????011?????1010111; + localparam logic [31:0] VREDSUM_VS = 32'b000000???????????010?????1010111; + localparam logic [31:0] VREDAND_VS = 32'b000001???????????010?????1010111; + localparam logic [31:0] VREDOR_VS = 32'b000010???????????010?????1010111; + localparam logic [31:0] VREDXOR_VS = 32'b000011???????????010?????1010111; + localparam logic [31:0] VREDMINU_VS = 32'b000100???????????010?????1010111; + localparam logic [31:0] VREDMIN_VS = 32'b000101???????????010?????1010111; + localparam logic [31:0] VREDMAXU_VS = 32'b000110???????????010?????1010111; + localparam logic [31:0] VREDMAX_VS = 32'b000111???????????010?????1010111; + localparam logic [31:0] VAADDU_VV = 32'b001000???????????010?????1010111; + localparam logic [31:0] VAADD_VV = 32'b001001???????????010?????1010111; + localparam logic [31:0] VASUBU_VV = 32'b001010???????????010?????1010111; + localparam logic [31:0] VASUB_VV = 32'b001011???????????010?????1010111; + localparam logic [31:0] VMV_X_S = 32'b0100001?????00000010?????1010111; + localparam logic [31:0] VZEXT_VF8 = 32'b010010??????00010010?????1010111; + localparam logic [31:0] VSEXT_VF8 = 32'b010010??????00011010?????1010111; + localparam logic [31:0] VZEXT_VF4 = 32'b010010??????00100010?????1010111; + localparam logic [31:0] VSEXT_VF4 = 32'b010010??????00101010?????1010111; + localparam logic [31:0] VZEXT_VF2 = 32'b010010??????00110010?????1010111; + localparam logic [31:0] VSEXT_VF2 = 32'b010010??????00111010?????1010111; + localparam logic [31:0] VCOMPRESS_VM = 32'b0101111??????????010?????1010111; + localparam logic [31:0] VMANDN_MM = 32'b011000???????????010?????1010111; + localparam logic [31:0] VMAND_MM = 32'b011001???????????010?????1010111; + localparam logic [31:0] VMOR_MM = 32'b011010???????????010?????1010111; + localparam logic [31:0] VMXOR_MM = 32'b011011???????????010?????1010111; + localparam logic [31:0] VMORN_MM = 32'b011100???????????010?????1010111; + localparam logic [31:0] VMNAND_MM = 32'b011101???????????010?????1010111; + localparam logic [31:0] VMNOR_MM = 32'b011110???????????010?????1010111; + localparam logic [31:0] VMXNOR_MM = 32'b011111???????????010?????1010111; + localparam logic [31:0] VMSBF_M = 32'b010100??????00001010?????1010111; + localparam logic [31:0] VMSOF_M = 32'b010100??????00010010?????1010111; + localparam logic [31:0] VMSIF_M = 32'b010100??????00011010?????1010111; + localparam logic [31:0] VIOTA_M = 32'b010100??????10000010?????1010111; + localparam logic [31:0] VID_V = 32'b010100?0000010001010?????1010111; + localparam logic [31:0] VCPOP_M = 32'b010000??????10000010?????1010111; + localparam logic [31:0] VFIRST_M = 32'b010000??????10001010?????1010111; + localparam logic [31:0] VDIVU_VV = 32'b100000???????????010?????1010111; + localparam logic [31:0] VDIV_VV = 32'b100001???????????010?????1010111; + localparam logic [31:0] VREMU_VV = 32'b100010???????????010?????1010111; + localparam logic [31:0] VREM_VV = 32'b100011???????????010?????1010111; + localparam logic [31:0] VMULHU_VV = 32'b100100???????????010?????1010111; + localparam logic [31:0] VMUL_VV = 32'b100101???????????010?????1010111; + localparam logic [31:0] VMULHSU_VV = 32'b100110???????????010?????1010111; + localparam logic [31:0] VMULH_VV = 32'b100111???????????010?????1010111; + localparam logic [31:0] VMADD_VV = 32'b101001???????????010?????1010111; + localparam logic [31:0] VNMSUB_VV = 32'b101011???????????010?????1010111; + localparam logic [31:0] VMACC_VV = 32'b101101???????????010?????1010111; + localparam logic [31:0] VNMSAC_VV = 32'b101111???????????010?????1010111; + localparam logic [31:0] VWADDU_VV = 32'b110000???????????010?????1010111; + localparam logic [31:0] VWADD_VV = 32'b110001???????????010?????1010111; + localparam logic [31:0] VWSUBU_VV = 32'b110010???????????010?????1010111; + localparam logic [31:0] VWSUB_VV = 32'b110011???????????010?????1010111; + localparam logic [31:0] VWADDU_WV = 32'b110100???????????010?????1010111; + localparam logic [31:0] VWADD_WV = 32'b110101???????????010?????1010111; + localparam logic [31:0] VWSUBU_WV = 32'b110110???????????010?????1010111; + localparam logic [31:0] VWSUB_WV = 32'b110111???????????010?????1010111; + localparam logic [31:0] VWMULU_VV = 32'b111000???????????010?????1010111; + localparam logic [31:0] VWMULSU_VV = 32'b111010???????????010?????1010111; + localparam logic [31:0] VWMUL_VV = 32'b111011???????????010?????1010111; + localparam logic [31:0] VWMACCU_VV = 32'b111100???????????010?????1010111; + localparam logic [31:0] VWMACC_VV = 32'b111101???????????010?????1010111; + localparam logic [31:0] VWMACCSU_VV = 32'b111111???????????010?????1010111; + localparam logic [31:0] VAADDU_VX = 32'b001000???????????110?????1010111; + localparam logic [31:0] VAADD_VX = 32'b001001???????????110?????1010111; + localparam logic [31:0] VASUBU_VX = 32'b001010???????????110?????1010111; + localparam logic [31:0] VASUB_VX = 32'b001011???????????110?????1010111; + localparam logic [31:0] VMV_S_X = 32'b010000100000?????110?????1010111; + localparam logic [31:0] VSLIDE1UP_VX = 32'b001110???????????110?????1010111; + localparam logic [31:0] VSLIDE1DOWN_VX = 32'b001111???????????110?????1010111; + localparam logic [31:0] VDIVU_VX = 32'b100000???????????110?????1010111; + localparam logic [31:0] VDIV_VX = 32'b100001???????????110?????1010111; + localparam logic [31:0] VREMU_VX = 32'b100010???????????110?????1010111; + localparam logic [31:0] VREM_VX = 32'b100011???????????110?????1010111; + localparam logic [31:0] VMULHU_VX = 32'b100100???????????110?????1010111; + localparam logic [31:0] VMUL_VX = 32'b100101???????????110?????1010111; + localparam logic [31:0] VMULHSU_VX = 32'b100110???????????110?????1010111; + localparam logic [31:0] VMULH_VX = 32'b100111???????????110?????1010111; + localparam logic [31:0] VMADD_VX = 32'b101001???????????110?????1010111; + localparam logic [31:0] VNMSUB_VX = 32'b101011???????????110?????1010111; + localparam logic [31:0] VMACC_VX = 32'b101101???????????110?????1010111; + localparam logic [31:0] VNMSAC_VX = 32'b101111???????????110?????1010111; + localparam logic [31:0] VWADDU_VX = 32'b110000???????????110?????1010111; + localparam logic [31:0] VWADD_VX = 32'b110001???????????110?????1010111; + localparam logic [31:0] VWSUBU_VX = 32'b110010???????????110?????1010111; + localparam logic [31:0] VWSUB_VX = 32'b110011???????????110?????1010111; + localparam logic [31:0] VWADDU_WX = 32'b110100???????????110?????1010111; + localparam logic [31:0] VWADD_WX = 32'b110101???????????110?????1010111; + localparam logic [31:0] VWSUBU_WX = 32'b110110???????????110?????1010111; + localparam logic [31:0] VWSUB_WX = 32'b110111???????????110?????1010111; + localparam logic [31:0] VWMULU_VX = 32'b111000???????????110?????1010111; + localparam logic [31:0] VWMULSU_VX = 32'b111010???????????110?????1010111; + localparam logic [31:0] VWMUL_VX = 32'b111011???????????110?????1010111; + localparam logic [31:0] VWMACCU_VX = 32'b111100???????????110?????1010111; + localparam logic [31:0] VWMACC_VX = 32'b111101???????????110?????1010111; + localparam logic [31:0] VWMACCUS_VX = 32'b111110???????????110?????1010111; + localparam logic [31:0] VWMACCSU_VX = 32'b111111???????????110?????1010111; + localparam logic [31:0] VAMOSWAPEI8_V = 32'b00001????????????000?????0101111; + localparam logic [31:0] VAMOADDEI8_V = 32'b00000????????????000?????0101111; + localparam logic [31:0] VAMOXOREI8_V = 32'b00100????????????000?????0101111; + localparam logic [31:0] VAMOANDEI8_V = 32'b01100????????????000?????0101111; + localparam logic [31:0] VAMOOREI8_V = 32'b01000????????????000?????0101111; + localparam logic [31:0] VAMOMINEI8_V = 32'b10000????????????000?????0101111; + localparam logic [31:0] VAMOMAXEI8_V = 32'b10100????????????000?????0101111; + localparam logic [31:0] VAMOMINUEI8_V = 32'b11000????????????000?????0101111; + localparam logic [31:0] VAMOMAXUEI8_V = 32'b11100????????????000?????0101111; + localparam logic [31:0] VAMOSWAPEI16_V = 32'b00001????????????101?????0101111; + localparam logic [31:0] VAMOADDEI16_V = 32'b00000????????????101?????0101111; + localparam logic [31:0] VAMOXOREI16_V = 32'b00100????????????101?????0101111; + localparam logic [31:0] VAMOANDEI16_V = 32'b01100????????????101?????0101111; + localparam logic [31:0] VAMOOREI16_V = 32'b01000????????????101?????0101111; + localparam logic [31:0] VAMOMINEI16_V = 32'b10000????????????101?????0101111; + localparam logic [31:0] VAMOMAXEI16_V = 32'b10100????????????101?????0101111; + localparam logic [31:0] VAMOMINUEI16_V = 32'b11000????????????101?????0101111; + localparam logic [31:0] VAMOMAXUEI16_V = 32'b11100????????????101?????0101111; + localparam logic [31:0] VAMOSWAPEI32_V = 32'b00001????????????110?????0101111; + localparam logic [31:0] VAMOADDEI32_V = 32'b00000????????????110?????0101111; + localparam logic [31:0] VAMOXOREI32_V = 32'b00100????????????110?????0101111; + localparam logic [31:0] VAMOANDEI32_V = 32'b01100????????????110?????0101111; + localparam logic [31:0] VAMOOREI32_V = 32'b01000????????????110?????0101111; + localparam logic [31:0] VAMOMINEI32_V = 32'b10000????????????110?????0101111; + localparam logic [31:0] VAMOMAXEI32_V = 32'b10100????????????110?????0101111; + localparam logic [31:0] VAMOMINUEI32_V = 32'b11000????????????110?????0101111; + localparam logic [31:0] VAMOMAXUEI32_V = 32'b11100????????????110?????0101111; + localparam logic [31:0] VAMOSWAPEI64_V = 32'b00001????????????111?????0101111; + localparam logic [31:0] VAMOADDEI64_V = 32'b00000????????????111?????0101111; + localparam logic [31:0] VAMOXOREI64_V = 32'b00100????????????111?????0101111; + localparam logic [31:0] VAMOANDEI64_V = 32'b01100????????????111?????0101111; + localparam logic [31:0] VAMOOREI64_V = 32'b01000????????????111?????0101111; + localparam logic [31:0] VAMOMINEI64_V = 32'b10000????????????111?????0101111; + localparam logic [31:0] VAMOMAXEI64_V = 32'b10100????????????111?????0101111; + localparam logic [31:0] VAMOMINUEI64_V = 32'b11000????????????111?????0101111; + localparam logic [31:0] VAMOMAXUEI64_V = 32'b11100????????????111?????0101111; + localparam logic [31:0] VMVNFR_V = 32'b1001111??????????011?????1010111; + localparam logic [31:0] VL1R_V = 32'b000000101000?????000?????0000111; + localparam logic [31:0] VL2R_V = 32'b000001101000?????101?????0000111; + localparam logic [31:0] VL4R_V = 32'b000011101000?????110?????0000111; + localparam logic [31:0] VL8R_V = 32'b000111101000?????111?????0000111; + localparam logic [31:0] FLH = 32'b?????????????????001?????0000111; + localparam logic [31:0] FSH = 32'b?????????????????001?????0100111; + localparam logic [31:0] FMADD_H = 32'b?????10??????????????????1000011; + localparam logic [31:0] FMSUB_H = 32'b?????10??????????????????1000111; + localparam logic [31:0] FNMSUB_H = 32'b?????10??????????????????1001011; + localparam logic [31:0] FNMADD_H = 32'b?????10??????????????????1001111; + localparam logic [31:0] FADD_H = 32'b0000010??????????????????1010011; + localparam logic [31:0] FSUB_H = 32'b0000110??????????????????1010011; + localparam logic [31:0] FMUL_H = 32'b0001010??????????????????1010011; + localparam logic [31:0] FDIV_H = 32'b0001110??????????????????1010011; + localparam logic [31:0] FSQRT_H = 32'b010111000000?????????????1010011; + localparam logic [31:0] FSGNJ_H = 32'b0010010??????????000?????1010011; + localparam logic [31:0] FSGNJN_H = 32'b0010010??????????001?????1010011; + localparam logic [31:0] FSGNJX_H = 32'b0010010??????????010?????1010011; + localparam logic [31:0] FMIN_H = 32'b0010110??????????000?????1010011; + localparam logic [31:0] FMAX_H = 32'b0010110??????????001?????1010011; + localparam logic [31:0] FEQ_H = 32'b1010010??????????010?????1010011; + localparam logic [31:0] FLT_H = 32'b1010010??????????001?????1010011; + localparam logic [31:0] FLE_H = 32'b1010010??????????000?????1010011; + localparam logic [31:0] FCVT_W_H = 32'b110001000000?????????????1010011; + localparam logic [31:0] FCVT_WU_H = 32'b110001000001?????????????1010011; + localparam logic [31:0] FCVT_H_W = 32'b110101000000?????????????1010011; + localparam logic [31:0] FCVT_H_WU = 32'b110101000001?????????????1010011; + localparam logic [31:0] FMV_X_H = 32'b111001000000?????000?????1010011; + localparam logic [31:0] FCLASS_H = 32'b111001000000?????001?????1010011; + localparam logic [31:0] FMV_H_X = 32'b111101000000?????000?????1010011; + localparam logic [31:0] FCVT_L_H = 32'b110001000010?????????????1010011; + localparam logic [31:0] FCVT_LU_H = 32'b110001000011?????????????1010011; + localparam logic [31:0] FCVT_H_L = 32'b110101000010?????????????1010011; + localparam logic [31:0] FCVT_H_LU = 32'b110101000011?????????????1010011; + localparam logic [31:0] FCVT_S_H = 32'b010000000010?????000?????1010011; + localparam logic [31:0] FCVT_H_S = 32'b010001000000?????????????1010011; + localparam logic [31:0] FCVT_D_H = 32'b010000100010?????000?????1010011; + localparam logic [31:0] FCVT_H_D = 32'b010001000001?????????????1010011; + localparam logic [31:0] FLAH = 32'b?????????????????001?????0000111; + localparam logic [31:0] FSAH = 32'b?????????????????001?????0100111; + localparam logic [31:0] FMADD_AH = 32'b?????10??????????????????1000011; + localparam logic [31:0] FMSUB_AH = 32'b?????10??????????????????1000111; + localparam logic [31:0] FNMSUB_AH = 32'b?????10??????????????????1001011; + localparam logic [31:0] FNMADD_AH = 32'b?????10??????????????????1001111; + localparam logic [31:0] FADD_AH = 32'b0000010??????????????????1010011; + localparam logic [31:0] FSUB_AH = 32'b0000110??????????????????1010011; + localparam logic [31:0] FMUL_AH = 32'b0001010??????????????????1010011; + localparam logic [31:0] FDIV_AH = 32'b0001110??????????????????1010011; + localparam logic [31:0] FSQRT_AH = 32'b010111000000?????????????1010011; + localparam logic [31:0] FSGNJ_AH = 32'b0010010??????????000?????1010011; + localparam logic [31:0] FSGNJN_AH = 32'b0010010??????????001?????1010011; + localparam logic [31:0] FSGNJX_AH = 32'b0010010??????????010?????1010011; + localparam logic [31:0] FMIN_AH = 32'b0010110??????????000?????1010011; + localparam logic [31:0] FMAX_AH = 32'b0010110??????????001?????1010011; + localparam logic [31:0] FEQ_AH = 32'b1010010??????????010?????1010011; + localparam logic [31:0] FLT_AH = 32'b1010010??????????001?????1010011; + localparam logic [31:0] FLE_AH = 32'b1010010??????????000?????1010011; + localparam logic [31:0] FCVT_W_AH = 32'b110001000000?????????????1010011; + localparam logic [31:0] FCVT_WU_AH = 32'b110001000001?????????????1010011; + localparam logic [31:0] FCVT_AH_W = 32'b110101000000?????????????1010011; + localparam logic [31:0] FCVT_AH_WU = 32'b110101000001?????????????1010011; + localparam logic [31:0] FMV_X_AH = 32'b111001000000?????000?????1010011; + localparam logic [31:0] FCLASS_AH = 32'b111001000000?????001?????1010011; + localparam logic [31:0] FMV_AH_X = 32'b111101000000?????000?????1010011; + localparam logic [31:0] FCVT_L_AH = 32'b110001000010?????????????1010011; + localparam logic [31:0] FCVT_LU_AH = 32'b110001000011?????????????1010011; + localparam logic [31:0] FCVT_AH_L = 32'b110101000010?????????????1010011; + localparam logic [31:0] FCVT_AH_LU = 32'b110101000011?????????????1010011; + localparam logic [31:0] FCVT_S_AH = 32'b010000000010?????000?????1010011; + localparam logic [31:0] FCVT_AH_S = 32'b010001000000?????????????1010011; + localparam logic [31:0] FCVT_D_AH = 32'b010000100010?????000?????1010011; + localparam logic [31:0] FCVT_AH_D = 32'b010001000001?????????????1010011; + localparam logic [31:0] FCVT_H_H = 32'b010001000010?????????????1010011; + localparam logic [31:0] FCVT_AH_H = 32'b010001000010?????????????1010011; + localparam logic [31:0] FCVT_H_AH = 32'b010001000010?????????????1010011; + localparam logic [31:0] FCVT_AH_AH = 32'b010001000010?????????????1010011; + localparam logic [31:0] FLB = 32'b?????????????????100?????0000111; + localparam logic [31:0] FSB = 32'b?????????????????100?????0100111; + localparam logic [31:0] FMADD_B = 32'b?????11??????????????????1000011; + localparam logic [31:0] FMSUB_B = 32'b?????11??????????????????1000111; + localparam logic [31:0] FNMSUB_B = 32'b?????11??????????????????1001011; + localparam logic [31:0] FNMADD_B = 32'b?????11??????????????????1001111; + localparam logic [31:0] FADD_B = 32'b0000011??????????????????1010011; + localparam logic [31:0] FSUB_B = 32'b0000111??????????????????1010011; + localparam logic [31:0] FMUL_B = 32'b0001011??????????????????1010011; + localparam logic [31:0] FDIV_B = 32'b0001111??????????????????1010011; + localparam logic [31:0] FSQRT_B = 32'b010111100000?????????????1010011; + localparam logic [31:0] FSGNJ_B = 32'b0010011??????????000?????1010011; + localparam logic [31:0] FSGNJN_B = 32'b0010011??????????001?????1010011; + localparam logic [31:0] FSGNJX_B = 32'b0010011??????????010?????1010011; + localparam logic [31:0] FMIN_B = 32'b0010111??????????000?????1010011; + localparam logic [31:0] FMAX_B = 32'b0010111??????????001?????1010011; + localparam logic [31:0] FEQ_B = 32'b1010011??????????010?????1010011; + localparam logic [31:0] FLT_B = 32'b1010011??????????001?????1010011; + localparam logic [31:0] FLE_B = 32'b1010011??????????000?????1010011; + localparam logic [31:0] FCVT_W_B = 32'b110001100000?????????????1010011; + localparam logic [31:0] FCVT_WU_B = 32'b110001100001?????????????1010011; + localparam logic [31:0] FCVT_B_W = 32'b110101100000?????????????1010011; + localparam logic [31:0] FCVT_B_WU = 32'b110101100001?????????????1010011; + localparam logic [31:0] FMV_X_B = 32'b111001100000?????000?????1010011; + localparam logic [31:0] FCLASS_B = 32'b111001100000?????001?????1010011; + localparam logic [31:0] FMV_B_X = 32'b111101100000?????000?????1010011; + localparam logic [31:0] FCVT_L_B = 32'b110001100010?????????????1010011; + localparam logic [31:0] FCVT_LU_B = 32'b110001100011?????????????1010011; + localparam logic [31:0] FCVT_B_L = 32'b110101100010?????????????1010011; + localparam logic [31:0] FCVT_B_LU = 32'b110101100011?????????????1010011; + localparam logic [31:0] FCVT_S_B = 32'b010000000011?????000?????1010011; + localparam logic [31:0] FCVT_B_S = 32'b010001100000?????????????1010011; + localparam logic [31:0] FCVT_D_B = 32'b010000100011?????000?????1010011; + localparam logic [31:0] FCVT_B_D = 32'b010001100001?????????????1010011; + localparam logic [31:0] FCVT_H_B = 32'b010001000011?????000?????1010011; + localparam logic [31:0] FCVT_B_H = 32'b010001100010?????????????1010011; + localparam logic [31:0] FCVT_AH_B = 32'b010001000011?????000?????1010011; + localparam logic [31:0] FCVT_B_AH = 32'b010001100010?????????????1010011; + localparam logic [31:0] FLAB = 32'b?????????????????000?????0000111; + localparam logic [31:0] FSAB = 32'b?????????????????000?????0100111; + localparam logic [31:0] FMADD_AB = 32'b?????11??????????????????1000011; + localparam logic [31:0] FMSUB_AB = 32'b?????11??????????????????1000111; + localparam logic [31:0] FNMSUB_AB = 32'b?????11??????????????????1001011; + localparam logic [31:0] FNMADD_AB = 32'b?????11??????????????????1001111; + localparam logic [31:0] FADD_AB = 32'b0000011??????????????????1010011; + localparam logic [31:0] FSUB_AB = 32'b0000111??????????????????1010011; + localparam logic [31:0] FMUL_AB = 32'b0001011??????????????????1010011; + localparam logic [31:0] FDIV_AB = 32'b0001111??????????????????1010011; + localparam logic [31:0] FSQRT_AB = 32'b010111100000?????????????1010011; + localparam logic [31:0] FSGNJ_AB = 32'b0010011??????????000?????1010011; + localparam logic [31:0] FSGNJN_AB = 32'b0010011??????????001?????1010011; + localparam logic [31:0] FSGNJX_AB = 32'b0010011??????????010?????1010011; + localparam logic [31:0] FMIN_AB = 32'b0010111??????????000?????1010011; + localparam logic [31:0] FMAX_AB = 32'b0010111??????????001?????1010011; + localparam logic [31:0] FEQ_AB = 32'b1010011??????????010?????1010011; + localparam logic [31:0] FLT_AB = 32'b1010011??????????001?????1010011; + localparam logic [31:0] FLE_AB = 32'b1010011??????????000?????1010011; + localparam logic [31:0] FCVT_W_AB = 32'b110001100000?????????????1010011; + localparam logic [31:0] FCVT_WU_AB = 32'b110001100001?????????????1010011; + localparam logic [31:0] FCVT_AB_W = 32'b110101100000?????????????1010011; + localparam logic [31:0] FCVT_AB_WU = 32'b110101100001?????????????1010011; + localparam logic [31:0] FMV_X_AB = 32'b111001100000?????000?????1010011; + localparam logic [31:0] FCLASS_AB = 32'b111001100000?????001?????1010011; + localparam logic [31:0] FMV_AB_X = 32'b111101100000?????000?????1010011; + localparam logic [31:0] FCVT_L_AB = 32'b110001100010?????????????1010011; + localparam logic [31:0] FCVT_LU_AB = 32'b110001100011?????????????1010011; + localparam logic [31:0] FCVT_AB_L = 32'b110101100010?????????????1010011; + localparam logic [31:0] FCVT_AB_LU = 32'b110101100011?????????????1010011; + localparam logic [31:0] FCVT_S_AB = 32'b010000000011?????000?????1010011; + localparam logic [31:0] FCVT_AB_S = 32'b010001100000?????????????1010011; + localparam logic [31:0] FCVT_D_AB = 32'b010000100011?????000?????1010011; + localparam logic [31:0] FCVT_AB_D = 32'b010001100001?????????????1010011; + localparam logic [31:0] FCVT_H_AB = 32'b010001000011?????000?????1010011; + localparam logic [31:0] FCVT_AB_H = 32'b010001100010?????????????1010011; + localparam logic [31:0] FCVT_AH_AB = 32'b010001000011?????000?????1010011; + localparam logic [31:0] FCVT_AB_AH = 32'b010001100010?????????????1010011; + localparam logic [31:0] FCVT_B_B = 32'b010001100011?????000?????1010011; + localparam logic [31:0] FCVT_AB_B = 32'b010001100011?????000?????1010011; + localparam logic [31:0] FCVT_B_AB = 32'b010001100011?????000?????1010011; + localparam logic [31:0] FCVT_AB_AB = 32'b010001100011?????000?????1010011; + localparam logic [31:0] SCFGRI = 32'b????????????00000001?????0101011; + localparam logic [31:0] SCFGWI = 32'b?????????????????010000000101011; + localparam logic [31:0] SCFGR = 32'b0000000?????00001001?????0101011; + localparam logic [31:0] SCFGW = 32'b0000000??????????010000010101011; + localparam logic [31:0] ECALL = 32'b00000000000000000000000001110011; + localparam logic [31:0] EBREAK = 32'b00000000000100000000000001110011; + localparam logic [31:0] URET = 32'b00000000001000000000000001110011; + localparam logic [31:0] SRET = 32'b00010000001000000000000001110011; + localparam logic [31:0] MRET = 32'b00110000001000000000000001110011; + localparam logic [31:0] DRET = 32'b01111011001000000000000001110011; + localparam logic [31:0] SFENCE_VMA = 32'b0001001??????????000000001110011; + localparam logic [31:0] WFI = 32'b00010000010100000000000001110011; + localparam logic [31:0] CSRRW = 32'b?????????????????001?????1110011; + localparam logic [31:0] CSRRS = 32'b?????????????????010?????1110011; + localparam logic [31:0] CSRRC = 32'b?????????????????011?????1110011; + localparam logic [31:0] CSRRWI = 32'b?????????????????101?????1110011; + localparam logic [31:0] CSRRSI = 32'b?????????????????110?????1110011; + localparam logic [31:0] CSRRCI = 32'b?????????????????111?????1110011; + /* CSR Addresses */ + localparam logic [11:0] CSR_FFLAGS = 12'h1; + localparam logic [11:0] CSR_FRM = 12'h2; + localparam logic [11:0] CSR_FCSR = 12'h3; + localparam logic [11:0] CSR_USTATUS = 12'h0; + localparam logic [11:0] CSR_UIE = 12'h4; + localparam logic [11:0] CSR_UTVEC = 12'h5; + localparam logic [11:0] CSR_VSTART = 12'h8; + localparam logic [11:0] CSR_VXSAT = 12'h9; + localparam logic [11:0] CSR_VXRM = 12'ha; + localparam logic [11:0] CSR_VCSR = 12'hf; + localparam logic [11:0] CSR_USCRATCH = 12'h40; + localparam logic [11:0] CSR_UEPC = 12'h41; + localparam logic [11:0] CSR_UCAUSE = 12'h42; + localparam logic [11:0] CSR_UTVAL = 12'h43; + localparam logic [11:0] CSR_UIP = 12'h44; + localparam logic [11:0] CSR_FMODE = 12'h800; + localparam logic [11:0] CSR_CYCLE = 12'hc00; + localparam logic [11:0] CSR_TIME = 12'hc01; + localparam logic [11:0] CSR_INSTRET = 12'hc02; + localparam logic [11:0] CSR_HPMCOUNTER3 = 12'hc03; + localparam logic [11:0] CSR_HPMCOUNTER4 = 12'hc04; + localparam logic [11:0] CSR_HPMCOUNTER5 = 12'hc05; + localparam logic [11:0] CSR_HPMCOUNTER6 = 12'hc06; + localparam logic [11:0] CSR_HPMCOUNTER7 = 12'hc07; + localparam logic [11:0] CSR_HPMCOUNTER8 = 12'hc08; + localparam logic [11:0] CSR_HPMCOUNTER9 = 12'hc09; + localparam logic [11:0] CSR_HPMCOUNTER10 = 12'hc0a; + localparam logic [11:0] CSR_HPMCOUNTER11 = 12'hc0b; + localparam logic [11:0] CSR_HPMCOUNTER12 = 12'hc0c; + localparam logic [11:0] CSR_HPMCOUNTER13 = 12'hc0d; + localparam logic [11:0] CSR_HPMCOUNTER14 = 12'hc0e; + localparam logic [11:0] CSR_HPMCOUNTER15 = 12'hc0f; + localparam logic [11:0] CSR_HPMCOUNTER16 = 12'hc10; + localparam logic [11:0] CSR_HPMCOUNTER17 = 12'hc11; + localparam logic [11:0] CSR_HPMCOUNTER18 = 12'hc12; + localparam logic [11:0] CSR_HPMCOUNTER19 = 12'hc13; + localparam logic [11:0] CSR_HPMCOUNTER20 = 12'hc14; + localparam logic [11:0] CSR_HPMCOUNTER21 = 12'hc15; + localparam logic [11:0] CSR_HPMCOUNTER22 = 12'hc16; + localparam logic [11:0] CSR_HPMCOUNTER23 = 12'hc17; + localparam logic [11:0] CSR_HPMCOUNTER24 = 12'hc18; + localparam logic [11:0] CSR_HPMCOUNTER25 = 12'hc19; + localparam logic [11:0] CSR_HPMCOUNTER26 = 12'hc1a; + localparam logic [11:0] CSR_HPMCOUNTER27 = 12'hc1b; + localparam logic [11:0] CSR_HPMCOUNTER28 = 12'hc1c; + localparam logic [11:0] CSR_HPMCOUNTER29 = 12'hc1d; + localparam logic [11:0] CSR_HPMCOUNTER30 = 12'hc1e; + localparam logic [11:0] CSR_HPMCOUNTER31 = 12'hc1f; + localparam logic [11:0] CSR_VL = 12'hc20; + localparam logic [11:0] CSR_VTYPE = 12'hc21; + localparam logic [11:0] CSR_VLENB = 12'hc22; + localparam logic [11:0] CSR_MTYPE = 12'hc43; + localparam logic [11:0] CSR_TILEM = 12'hc40; + localparam logic [11:0] CSR_TILEK = 12'hc42; + localparam logic [11:0] CSR_TILEN = 12'hc41; + localparam logic [11:0] CSR_SSTATUS = 12'h100; + localparam logic [11:0] CSR_SEDELEG = 12'h102; + localparam logic [11:0] CSR_SIDELEG = 12'h103; + localparam logic [11:0] CSR_SIE = 12'h104; + localparam logic [11:0] CSR_STVEC = 12'h105; + localparam logic [11:0] CSR_SCOUNTEREN = 12'h106; + localparam logic [11:0] CSR_SSCRATCH = 12'h140; + localparam logic [11:0] CSR_SEPC = 12'h141; + localparam logic [11:0] CSR_SCAUSE = 12'h142; + localparam logic [11:0] CSR_STVAL = 12'h143; + localparam logic [11:0] CSR_SIP = 12'h144; + localparam logic [11:0] CSR_SATP = 12'h180; + localparam logic [11:0] CSR_VSSTATUS = 12'h200; + localparam logic [11:0] CSR_VSIE = 12'h204; + localparam logic [11:0] CSR_VSTVEC = 12'h205; + localparam logic [11:0] CSR_VSSCRATCH = 12'h240; + localparam logic [11:0] CSR_VSEPC = 12'h241; + localparam logic [11:0] CSR_VSCAUSE = 12'h242; + localparam logic [11:0] CSR_VSTVAL = 12'h243; + localparam logic [11:0] CSR_VSIP = 12'h244; + localparam logic [11:0] CSR_VSATP = 12'h280; + localparam logic [11:0] CSR_HSTATUS = 12'h600; + localparam logic [11:0] CSR_HEDELEG = 12'h602; + localparam logic [11:0] CSR_HIDELEG = 12'h603; + localparam logic [11:0] CSR_HIE = 12'h604; + localparam logic [11:0] CSR_HTIMEDELTA = 12'h605; + localparam logic [11:0] CSR_HCOUNTEREN = 12'h606; + localparam logic [11:0] CSR_HGEIE = 12'h607; + localparam logic [11:0] CSR_HTVAL = 12'h643; + localparam logic [11:0] CSR_HIP = 12'h644; + localparam logic [11:0] CSR_HVIP = 12'h645; + localparam logic [11:0] CSR_HTINST = 12'h64a; + localparam logic [11:0] CSR_HGATP = 12'h680; + localparam logic [11:0] CSR_HGEIP = 12'he12; + localparam logic [11:0] CSR_UTVT = 12'h7; + localparam logic [11:0] CSR_UNXTI = 12'h45; + localparam logic [11:0] CSR_UINTSTATUS = 12'h46; + localparam logic [11:0] CSR_USCRATCHCSW = 12'h48; + localparam logic [11:0] CSR_USCRATCHCSWL = 12'h49; + localparam logic [11:0] CSR_STVT = 12'h107; + localparam logic [11:0] CSR_SNXTI = 12'h145; + localparam logic [11:0] CSR_SINTSTATUS = 12'h146; + localparam logic [11:0] CSR_SSCRATCHCSW = 12'h148; + localparam logic [11:0] CSR_SSCRATCHCSWL = 12'h149; + localparam logic [11:0] CSR_MTVT = 12'h307; + localparam logic [11:0] CSR_MNXTI = 12'h345; + localparam logic [11:0] CSR_MINTSTATUS = 12'h346; + localparam logic [11:0] CSR_MSCRATCHCSW = 12'h348; + localparam logic [11:0] CSR_MSCRATCHCSWL = 12'h349; + localparam logic [11:0] CSR_MSTATUS = 12'h300; + localparam logic [11:0] CSR_MISA = 12'h301; + localparam logic [11:0] CSR_MEDELEG = 12'h302; + localparam logic [11:0] CSR_MIDELEG = 12'h303; + localparam logic [11:0] CSR_MIE = 12'h304; + localparam logic [11:0] CSR_MTVEC = 12'h305; + localparam logic [11:0] CSR_MCOUNTEREN = 12'h306; + localparam logic [11:0] CSR_MCOUNTINHIBIT = 12'h320; + localparam logic [11:0] CSR_MSCRATCH = 12'h340; + localparam logic [11:0] CSR_MEPC = 12'h341; + localparam logic [11:0] CSR_MCAUSE = 12'h342; + localparam logic [11:0] CSR_MTVAL = 12'h343; + localparam logic [11:0] CSR_MIP = 12'h344; + localparam logic [11:0] CSR_MTINST = 12'h34a; + localparam logic [11:0] CSR_MTVAL2 = 12'h34b; + localparam logic [11:0] CSR_PMPCFG0 = 12'h3a0; + localparam logic [11:0] CSR_PMPCFG1 = 12'h3a1; + localparam logic [11:0] CSR_PMPCFG2 = 12'h3a2; + localparam logic [11:0] CSR_PMPCFG3 = 12'h3a3; + localparam logic [11:0] CSR_PMPADDR0 = 12'h3b0; + localparam logic [11:0] CSR_PMPADDR1 = 12'h3b1; + localparam logic [11:0] CSR_PMPADDR2 = 12'h3b2; + localparam logic [11:0] CSR_PMPADDR3 = 12'h3b3; + localparam logic [11:0] CSR_PMPADDR4 = 12'h3b4; + localparam logic [11:0] CSR_PMPADDR5 = 12'h3b5; + localparam logic [11:0] CSR_PMPADDR6 = 12'h3b6; + localparam logic [11:0] CSR_PMPADDR7 = 12'h3b7; + localparam logic [11:0] CSR_PMPADDR8 = 12'h3b8; + localparam logic [11:0] CSR_PMPADDR9 = 12'h3b9; + localparam logic [11:0] CSR_PMPADDR10 = 12'h3ba; + localparam logic [11:0] CSR_PMPADDR11 = 12'h3bb; + localparam logic [11:0] CSR_PMPADDR12 = 12'h3bc; + localparam logic [11:0] CSR_PMPADDR13 = 12'h3bd; + localparam logic [11:0] CSR_PMPADDR14 = 12'h3be; + localparam logic [11:0] CSR_PMPADDR15 = 12'h3bf; + localparam logic [11:0] CSR_TSELECT = 12'h7a0; + localparam logic [11:0] CSR_TDATA1 = 12'h7a1; + localparam logic [11:0] CSR_TDATA2 = 12'h7a2; + localparam logic [11:0] CSR_TDATA3 = 12'h7a3; + localparam logic [11:0] CSR_DCSR = 12'h7b0; + localparam logic [11:0] CSR_DPC = 12'h7b1; + localparam logic [11:0] CSR_DSCRATCH0 = 12'h7b2; + localparam logic [11:0] CSR_DSCRATCH1 = 12'h7b3; + localparam logic [11:0] CSR_MCYCLE = 12'hb00; + localparam logic [11:0] CSR_MINSTRET = 12'hb02; + localparam logic [11:0] CSR_MHPMCOUNTER3 = 12'hb03; + localparam logic [11:0] CSR_MHPMCOUNTER4 = 12'hb04; + localparam logic [11:0] CSR_MHPMCOUNTER5 = 12'hb05; + localparam logic [11:0] CSR_MHPMCOUNTER6 = 12'hb06; + localparam logic [11:0] CSR_MHPMCOUNTER7 = 12'hb07; + localparam logic [11:0] CSR_MHPMCOUNTER8 = 12'hb08; + localparam logic [11:0] CSR_MHPMCOUNTER9 = 12'hb09; + localparam logic [11:0] CSR_MHPMCOUNTER10 = 12'hb0a; + localparam logic [11:0] CSR_MHPMCOUNTER11 = 12'hb0b; + localparam logic [11:0] CSR_MHPMCOUNTER12 = 12'hb0c; + localparam logic [11:0] CSR_MHPMCOUNTER13 = 12'hb0d; + localparam logic [11:0] CSR_MHPMCOUNTER14 = 12'hb0e; + localparam logic [11:0] CSR_MHPMCOUNTER15 = 12'hb0f; + localparam logic [11:0] CSR_MHPMCOUNTER16 = 12'hb10; + localparam logic [11:0] CSR_MHPMCOUNTER17 = 12'hb11; + localparam logic [11:0] CSR_MHPMCOUNTER18 = 12'hb12; + localparam logic [11:0] CSR_MHPMCOUNTER19 = 12'hb13; + localparam logic [11:0] CSR_MHPMCOUNTER20 = 12'hb14; + localparam logic [11:0] CSR_MHPMCOUNTER21 = 12'hb15; + localparam logic [11:0] CSR_MHPMCOUNTER22 = 12'hb16; + localparam logic [11:0] CSR_MHPMCOUNTER23 = 12'hb17; + localparam logic [11:0] CSR_MHPMCOUNTER24 = 12'hb18; + localparam logic [11:0] CSR_MHPMCOUNTER25 = 12'hb19; + localparam logic [11:0] CSR_MHPMCOUNTER26 = 12'hb1a; + localparam logic [11:0] CSR_MHPMCOUNTER27 = 12'hb1b; + localparam logic [11:0] CSR_MHPMCOUNTER28 = 12'hb1c; + localparam logic [11:0] CSR_MHPMCOUNTER29 = 12'hb1d; + localparam logic [11:0] CSR_MHPMCOUNTER30 = 12'hb1e; + localparam logic [11:0] CSR_MHPMCOUNTER31 = 12'hb1f; + localparam logic [11:0] CSR_MHPMEVENT3 = 12'h323; + localparam logic [11:0] CSR_MHPMEVENT4 = 12'h324; + localparam logic [11:0] CSR_MHPMEVENT5 = 12'h325; + localparam logic [11:0] CSR_MHPMEVENT6 = 12'h326; + localparam logic [11:0] CSR_MHPMEVENT7 = 12'h327; + localparam logic [11:0] CSR_MHPMEVENT8 = 12'h328; + localparam logic [11:0] CSR_MHPMEVENT9 = 12'h329; + localparam logic [11:0] CSR_MHPMEVENT10 = 12'h32a; + localparam logic [11:0] CSR_MHPMEVENT11 = 12'h32b; + localparam logic [11:0] CSR_MHPMEVENT12 = 12'h32c; + localparam logic [11:0] CSR_MHPMEVENT13 = 12'h32d; + localparam logic [11:0] CSR_MHPMEVENT14 = 12'h32e; + localparam logic [11:0] CSR_MHPMEVENT15 = 12'h32f; + localparam logic [11:0] CSR_MHPMEVENT16 = 12'h330; + localparam logic [11:0] CSR_MHPMEVENT17 = 12'h331; + localparam logic [11:0] CSR_MHPMEVENT18 = 12'h332; + localparam logic [11:0] CSR_MHPMEVENT19 = 12'h333; + localparam logic [11:0] CSR_MHPMEVENT20 = 12'h334; + localparam logic [11:0] CSR_MHPMEVENT21 = 12'h335; + localparam logic [11:0] CSR_MHPMEVENT22 = 12'h336; + localparam logic [11:0] CSR_MHPMEVENT23 = 12'h337; + localparam logic [11:0] CSR_MHPMEVENT24 = 12'h338; + localparam logic [11:0] CSR_MHPMEVENT25 = 12'h339; + localparam logic [11:0] CSR_MHPMEVENT26 = 12'h33a; + localparam logic [11:0] CSR_MHPMEVENT27 = 12'h33b; + localparam logic [11:0] CSR_MHPMEVENT28 = 12'h33c; + localparam logic [11:0] CSR_MHPMEVENT29 = 12'h33d; + localparam logic [11:0] CSR_MHPMEVENT30 = 12'h33e; + localparam logic [11:0] CSR_MHPMEVENT31 = 12'h33f; + localparam logic [11:0] CSR_TRACE = 12'h7d0; + localparam logic [11:0] CSR_MVENDORID = 12'hf11; + localparam logic [11:0] CSR_MARCHID = 12'hf12; + localparam logic [11:0] CSR_MIMPID = 12'hf13; + localparam logic [11:0] CSR_MHARTID = 12'hf14; + localparam logic [11:0] CSR_SSR = 12'h7c0; + localparam logic [11:0] CSR_FPMODE = 12'h7c1; + localparam logic [11:0] CSR_HTIMEDELTAH = 12'h615; + localparam logic [11:0] CSR_CYCLEH = 12'hc80; + localparam logic [11:0] CSR_TIMEH = 12'hc81; + localparam logic [11:0] CSR_INSTRETH = 12'hc82; + localparam logic [11:0] CSR_HPMCOUNTER3H = 12'hc83; + localparam logic [11:0] CSR_HPMCOUNTER4H = 12'hc84; + localparam logic [11:0] CSR_HPMCOUNTER5H = 12'hc85; + localparam logic [11:0] CSR_HPMCOUNTER6H = 12'hc86; + localparam logic [11:0] CSR_HPMCOUNTER7H = 12'hc87; + localparam logic [11:0] CSR_HPMCOUNTER8H = 12'hc88; + localparam logic [11:0] CSR_HPMCOUNTER9H = 12'hc89; + localparam logic [11:0] CSR_HPMCOUNTER10H = 12'hc8a; + localparam logic [11:0] CSR_HPMCOUNTER11H = 12'hc8b; + localparam logic [11:0] CSR_HPMCOUNTER12H = 12'hc8c; + localparam logic [11:0] CSR_HPMCOUNTER13H = 12'hc8d; + localparam logic [11:0] CSR_HPMCOUNTER14H = 12'hc8e; + localparam logic [11:0] CSR_HPMCOUNTER15H = 12'hc8f; + localparam logic [11:0] CSR_HPMCOUNTER16H = 12'hc90; + localparam logic [11:0] CSR_HPMCOUNTER17H = 12'hc91; + localparam logic [11:0] CSR_HPMCOUNTER18H = 12'hc92; + localparam logic [11:0] CSR_HPMCOUNTER19H = 12'hc93; + localparam logic [11:0] CSR_HPMCOUNTER20H = 12'hc94; + localparam logic [11:0] CSR_HPMCOUNTER21H = 12'hc95; + localparam logic [11:0] CSR_HPMCOUNTER22H = 12'hc96; + localparam logic [11:0] CSR_HPMCOUNTER23H = 12'hc97; + localparam logic [11:0] CSR_HPMCOUNTER24H = 12'hc98; + localparam logic [11:0] CSR_HPMCOUNTER25H = 12'hc99; + localparam logic [11:0] CSR_HPMCOUNTER26H = 12'hc9a; + localparam logic [11:0] CSR_HPMCOUNTER27H = 12'hc9b; + localparam logic [11:0] CSR_HPMCOUNTER28H = 12'hc9c; + localparam logic [11:0] CSR_HPMCOUNTER29H = 12'hc9d; + localparam logic [11:0] CSR_HPMCOUNTER30H = 12'hc9e; + localparam logic [11:0] CSR_HPMCOUNTER31H = 12'hc9f; + localparam logic [11:0] CSR_MSTATUSH = 12'h310; + localparam logic [11:0] CSR_MCYCLEH = 12'hb80; + localparam logic [11:0] CSR_MINSTRETH = 12'hb82; + localparam logic [11:0] CSR_MHPMCOUNTER3H = 12'hb83; + localparam logic [11:0] CSR_MHPMCOUNTER4H = 12'hb84; + localparam logic [11:0] CSR_MHPMCOUNTER5H = 12'hb85; + localparam logic [11:0] CSR_MHPMCOUNTER6H = 12'hb86; + localparam logic [11:0] CSR_MHPMCOUNTER7H = 12'hb87; + localparam logic [11:0] CSR_MHPMCOUNTER8H = 12'hb88; + localparam logic [11:0] CSR_MHPMCOUNTER9H = 12'hb89; + localparam logic [11:0] CSR_MHPMCOUNTER10H = 12'hb8a; + localparam logic [11:0] CSR_MHPMCOUNTER11H = 12'hb8b; + localparam logic [11:0] CSR_MHPMCOUNTER12H = 12'hb8c; + localparam logic [11:0] CSR_MHPMCOUNTER13H = 12'hb8d; + localparam logic [11:0] CSR_MHPMCOUNTER14H = 12'hb8e; + localparam logic [11:0] CSR_MHPMCOUNTER15H = 12'hb8f; + localparam logic [11:0] CSR_MHPMCOUNTER16H = 12'hb90; + localparam logic [11:0] CSR_MHPMCOUNTER17H = 12'hb91; + localparam logic [11:0] CSR_MHPMCOUNTER18H = 12'hb92; + localparam logic [11:0] CSR_MHPMCOUNTER19H = 12'hb93; + localparam logic [11:0] CSR_MHPMCOUNTER20H = 12'hb94; + localparam logic [11:0] CSR_MHPMCOUNTER21H = 12'hb95; + localparam logic [11:0] CSR_MHPMCOUNTER22H = 12'hb96; + localparam logic [11:0] CSR_MHPMCOUNTER23H = 12'hb97; + localparam logic [11:0] CSR_MHPMCOUNTER24H = 12'hb98; + localparam logic [11:0] CSR_MHPMCOUNTER25H = 12'hb99; + localparam logic [11:0] CSR_MHPMCOUNTER26H = 12'hb9a; + localparam logic [11:0] CSR_MHPMCOUNTER27H = 12'hb9b; + localparam logic [11:0] CSR_MHPMCOUNTER28H = 12'hb9c; + localparam logic [11:0] CSR_MHPMCOUNTER29H = 12'hb9d; + localparam logic [11:0] CSR_MHPMCOUNTER30H = 12'hb9e; + localparam logic [11:0] CSR_MHPMCOUNTER31H = 12'hb9f; +endpackage diff --git a/hw/ip/snitch/src/snitch.sv b/hw/ip/snitch/src/snitch.sv index 6a08f758..eacc5e7a 100644 --- a/hw/ip/snitch/src/snitch.sv +++ b/hw/ip/snitch/src/snitch.sv @@ -2263,6 +2263,9 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( end end // 1 source register (rs1) and 1 destination register (rd) + riscv_instr::MSETTILEM, + riscv_instr::MSETTILEK, + riscv_instr::MSETTILEN, riscv_instr::VSETVLI: begin if (RVV) begin write_rd = 1'b0; @@ -2353,6 +2356,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( riscv_instr::VMULHU_VV, riscv_instr::VMULHSU_VV, riscv_instr::VMACC_VV, + riscv_instr::MXMACC_VV, riscv_instr::VNMSAC_VV, riscv_instr::VMADD_VV, riscv_instr::VNMSUB_VV, @@ -2389,6 +2393,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( riscv_instr::VFSGNJX_VV, riscv_instr::VFMUL_VV, riscv_instr::VFMADD_VV, + riscv_instr::MXFMACC_VV, riscv_instr::VFNMADD_VV, riscv_instr::VFMSUB_VV, riscv_instr::VFNMSUB_VV, @@ -2465,6 +2470,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( riscv_instr::VMULHU_VX, riscv_instr::VMULHSU_VX, riscv_instr::VMACC_VX, + riscv_instr::MXMACC_VX, riscv_instr::VNMSAC_VX, riscv_instr::VMADD_VX, riscv_instr::VNMSUB_VX, @@ -2513,6 +2519,7 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( riscv_instr::VFMSUB_VF, riscv_instr::VFNMSUB_VF, riscv_instr::VFMACC_VF, + riscv_instr::MXFMACC_VF, riscv_instr::VFNMACC_VF, riscv_instr::VFMSAC_VF, riscv_instr::VFNMSAC_VF, @@ -2582,6 +2589,18 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( end end // 2 source registers (rs1, rs2) + riscv_instr::MLE8_V_A, + riscv_instr::MLE8_V_B, + riscv_instr::MLE8_V_C, + riscv_instr::MLE16_V_A, + riscv_instr::MLE16_V_B, + riscv_instr::MLE16_V_C, + riscv_instr::MLE32_V_A, + riscv_instr::MLE32_V_B, + riscv_instr::MLE32_V_C, + riscv_instr::MLE64_V_A, + riscv_instr::MLE64_V_B, + riscv_instr::MLE64_V_C, riscv_instr::VLSE8_V, riscv_instr::VLSE16_V, riscv_instr::VLSE32_V, @@ -2598,6 +2617,18 @@ module snitch import snitch_pkg::*; import riscv_instr::*; #( end end // 2 source registers (rs1, rs2) and memory store opeeration + riscv_instr::MSE8_V_A, + riscv_instr::MSE8_V_B, + riscv_instr::MSE8_V_C, + riscv_instr::MSE16_V_A, + riscv_instr::MSE16_V_B, + riscv_instr::MSE16_V_C, + riscv_instr::MSE32_V_A, + riscv_instr::MSE32_V_B, + riscv_instr::MSE32_V_C, + riscv_instr::MSE64_V_A, + riscv_instr::MSE64_V_B, + riscv_instr::MSE64_V_C, riscv_instr::VSSE8_V, riscv_instr::VSSE16_V, riscv_instr::VSSE32_V, diff --git a/hw/ip/spatz/src/generated/spatz_pkg.sv b/hw/ip/spatz/src/generated/spatz_pkg.sv index f2191eaa..ad34c5ec 100644 --- a/hw/ip/spatz/src/generated/spatz_pkg.sv +++ b/hw/ip/spatz/src/generated/spatz_pkg.sv @@ -68,6 +68,17 @@ package spatz_pkg; // Largest element width that Spatz supports localparam vew_e MAXEW = RVD ? EW_64 : EW_32; + //Number of Accumulator Banks + localparam int unsigned NrACCBanks = `ifdef N_ACC `N_ACC `else 16 `endif; + + // MXU + localparam int unsigned MAX_TILE_M = 8; + localparam int unsigned MAX_TILE_N = 8; + // The col counter in the VLSU is parametrized on MAX_TILE_N only + // If you change this parameter, better parametrize the col counter + // in the VLSU as well + localparam int unsigned MAX_TILE_K = MAX_TILE_N; + ////////////////////// // Type Definitions // ////////////////////// @@ -89,6 +100,11 @@ package spatz_pkg; // Instruction ID typedef logic [$clog2(NrParallelInstructions)-1:0] spatz_id_t; + // MXU + typedef logic [$clog2(MAX_TILE_M):0] tile_m_t; + typedef logic [$clog2(MAX_TILE_N):0] tile_n_t; + typedef logic [$clog2(MAX_TILE_K):0] tile_k_t; + ///////////////////// // Operation Types // ///////////////////// @@ -109,6 +125,8 @@ package spatz_pkg; VMSEQ, VMSNE, VMSLTU, VMSLT, VMSLEU, VMSLE, VMSGTU, VMSGT, // Integer add-with-carry and subtract-with-borrow carry-out instructions VMADC, VMSBC, + // MXU Matrix multiplication and dot product instructions + MXMACC, MXFMACC, // Mask operations VMANDNOT, VMAND, VMOR, VMXOR, VMORNOT, VMNAND, VMNOR, VMXNOR, // Slide instructions @@ -119,6 +137,8 @@ package spatz_pkg; VSE, VSSE, VSXE, // Config instruction VCFG, + // MXU Config instruction + MCFG, // VCSR VCSR, // Floating point instructions @@ -150,6 +170,8 @@ package spatz_pkg; logic set_vstart; logic clear_vstart; logic reset_vstart; + // MXU + tile_dim_e dimTile; } op_cfg_t; typedef struct packed { @@ -160,6 +182,10 @@ package spatz_pkg; logic vm; logic use_carry_borrow_in; logic is_scalar; + + // MXU + logic is_mx; + logic is_narrowing; logic is_reduction; logic switch_rs1_rd; @@ -226,6 +252,12 @@ package spatz_pkg; vtype_t vtype; vlen_t vl; vlen_t vstart; + + // MXU + tile_e matrix; + tile_m_t tile_M; + tile_n_t tile_N; + tile_k_t tile_K; } spatz_req_t; ////////////////////////////////// diff --git a/hw/ip/spatz/src/rvv_pkg.sv b/hw/ip/spatz/src/rvv_pkg.sv index b281db99..2987fc8a 100644 --- a/hw/ip/spatz/src/rvv_pkg.sv +++ b/hw/ip/spatz/src/rvv_pkg.sv @@ -36,6 +36,20 @@ package rvv_pkg; vlmul_e vlmul; } vtype_t; + // MXU + typedef enum logic [2:0] { + TILE_A = 3'b000, + TILE_B = 3'b001, + TILE_C = 3'b010 + } tile_e; + + // MXU + typedef enum logic [2:0] { + DIM_M = 3'b000, + DIM_N = 3'b001, + DIM_K = 3'b010 + } tile_dim_e; + /////////////// // Opcodes // /////////////// @@ -51,4 +65,11 @@ package rvv_pkg; OPCFG = 3'b111 } opcodev_func3_e; + // MXU + typedef enum logic [5:0] { + OPMVA = 6'b001001, + OPMVB = 6'b001010, + OPMVC = 6'b000000 + } opcodev_func6_e; + endpackage : rvv_pkg diff --git a/hw/ip/spatz/src/spatz_controller.sv b/hw/ip/spatz/src/spatz_controller.sv index 26971dbb..2059fe73 100644 --- a/hw/ip/spatz/src/spatz_controller.sv +++ b/hw/ip/spatz/src/spatz_controller.sv @@ -77,17 +77,31 @@ module spatz_controller vlen_t vstart_d, vstart_q; vlen_t vl_d, vl_q; vtype_t vtype_d, vtype_q; + // MXU todo: is elen_t what we want? + elen_t tilem_d, tilem_q; + elen_t tilen_d, tilen_q; + elen_t tilek_d, tilek_q; + `FF(vstart_q, vstart_d, '0) `FF(vl_q, vl_d, '0) `FF(vtype_q, vtype_d, '{vill: 1'b1, vsew: EW_8, vlmul: LMUL_1, default: '0}) + // MXU + `FF(tilem_q, tilem_d, '0) + `FF(tilen_q, tilen_d, '0) + `FF(tilek_q, tilek_d, '0) + always_comb begin : proc_vcsr automatic logic [$clog2(MAXVL):0] vlmax = 0; vstart_d = vstart_q; vl_d = vl_q; vtype_d = vtype_q; + // MXU + tilem_d = tilem_q; + tilen_d = tilen_q; + tilek_d = tilek_q; if (spatz_req_valid) begin // Reset vstart to zero if we have a new non CSR operation @@ -144,6 +158,12 @@ module spatz_controller end end end // spatz_req.op == VCFG + // MXU + if (spatz_req.op == MCFG) begin + tilem_d = spatz_req.op_cfg.dimTile == DIM_M ? spatz_req.rs1 : tilem_q; + tilen_d = spatz_req.op_cfg.dimTile == DIM_N ? spatz_req.rs1 : tilen_q; + tilek_d = spatz_req.op_cfg.dimTile == DIM_K ? spatz_req.rs1 : tilek_q; + end end // spatz_req_valid end @@ -367,6 +387,9 @@ module spatz_controller // Retire CSR instruction and write back result to main core. logic retire_csr; + // Response to the scalar core + logic rsp_ready_q; + // We stall issuing a new instruction if the corresponding execution unit is // not ready yet. Or we have a change in LMUL, for which we need to let all the // units finish first before scheduling a new operation (to avoid running into @@ -392,7 +415,8 @@ module spatz_controller ); // Pop the buffer if we do not have a unit stall - assign req_buffer_pop = ~stall & req_buffer_valid && !running_insn_full; + // Configuration instructions should wait until the core is ready to accept back the answer + assign req_buffer_pop = ~stall & (rsp_ready_q | (spatz_req.ex_unit != CON)) & req_buffer_valid && !running_insn_full; // Issue new operation to execution units always_comb begin : ex_issue @@ -419,12 +443,25 @@ module spatz_controller spatz_req.vl = 1; spatz_req.vstart = '0; end + + // MXU + if (spatz_req.op_arith.is_mx) begin + spatz_req.tile_M = tilem_q; + spatz_req.tile_N = tilen_q; + spatz_req.tile_K = tilek_q; + end end LSU: begin // Overwrite vl and vstart in request (preserve vtype with vsew) spatz_req.vl = vl_q; spatz_req.vstart = vstart_q; + // MXU + if (spatz_req.op_arith.is_mx) begin + spatz_req.tile_M = tilem_q; + spatz_req.tile_N = tilen_q; + spatz_req.tile_K = tilek_q; + end end SLD: begin @@ -432,6 +469,12 @@ module spatz_controller spatz_req.vtype = vtype_q; spatz_req.vl = vl_q; spatz_req.vstart = vstart_q; + // MXU todo: check this, seems useless + if (spatz_req.op_arith.is_mx) begin + spatz_req.tile_M = tilem_q; + spatz_req.tile_N = tilen_q; + spatz_req.tile_K = tilek_q; + end // Is this a scalar request? if (spatz_req.op_arith.is_scalar) begin @@ -529,7 +572,7 @@ module spatz_controller .ready_i(vfu_rsp_ready ) ); - logic rsp_valid_d; + logic rsp_valid_d; spatz_rsp_t rsp_d; spill_register #( .T (spatz_rsp_t ), @@ -539,7 +582,7 @@ module spatz_controller .rst_ni (rst_ni ), .data_i (rsp_d ), .valid_i(rsp_valid_d ), - .ready_o(/* Unused */), + .ready_o(rsp_ready_q ), .data_o (rsp_o ), .valid_o(rsp_valid_o ), .ready_i(rsp_ready_i ) @@ -568,6 +611,11 @@ module spatz_controller riscv_instr::CSR_VXSAT : rsp_d.data = '0; riscv_instr::CSR_VXRM : rsp_d.data = '0; riscv_instr::CSR_VCSR : rsp_d.data = '0; + // MXU + riscv_instr::CSR_MTYPE : rsp_d.data = '0; + riscv_instr::CSR_TILEM : rsp_d.data = elen_t'(tilem_q); + riscv_instr::CSR_TILEK : rsp_d.data = elen_t'(tilek_q); + riscv_instr::CSR_TILEN : rsp_d.data = elen_t'(tilen_q); default: rsp_d.data = '0; endcase end diff --git a/hw/ip/spatz/src/spatz_decoder.sv b/hw/ip/spatz/src/spatz_decoder.sv index 28011d4a..c2fb5884 100644 --- a/hw/ip/spatz/src/spatz_decoder.sv +++ b/hw/ip/spatz/src/spatz_decoder.sv @@ -209,6 +209,106 @@ module spatz_decoder endcase // decoder_req_i.instr end + // MXU Matrix load and store instructions + riscv_instr::MLE8_V_A , + riscv_instr::MLE8_V_B , + riscv_instr::MLE8_V_C , + riscv_instr::MLE16_V_A, + riscv_instr::MLE16_V_B, + riscv_instr::MLE16_V_C, + riscv_instr::MLE32_V_A, + riscv_instr::MLE32_V_B, + riscv_instr::MLE32_V_C, + riscv_instr::MLE64_V_A, + riscv_instr::MLE64_V_B, + riscv_instr::MLE64_V_C, + riscv_instr::MSE8_V_A , + riscv_instr::MSE8_V_B , + riscv_instr::MSE8_V_C , + riscv_instr::MSE16_V_A, + riscv_instr::MSE16_V_B, + riscv_instr::MSE16_V_C, + riscv_instr::MSE32_V_A, + riscv_instr::MSE32_V_B, + riscv_instr::MSE32_V_C, + riscv_instr::MSE64_V_A, + riscv_instr::MSE64_V_B, + riscv_instr::MSE64_V_C: begin + automatic vreg_t ls_vd = decoder_req_i.instr[11:7]; + automatic vreg_t ls_rs1 = decoder_req_i.instr[19:15]; + automatic vreg_t ls_rs2 = decoder_req_i.instr[24:20]; + automatic logic [2:0] ls_width = decoder_req_i.instr[14:12]; + automatic logic ls_is_store = decoder_req_i.instr[25]; + automatic opcodev_func6_e func6 = opcodev_func6_e'(decoder_req_i.instr[31:26]); + spatz_req.op_arith.is_mx = '1; + + // Retrieve VSEW + unique case (ls_width) + 3'b000: spatz_req.vtype.vsew = EW_8; + 3'b101: spatz_req.vtype.vsew = EW_16; + 3'b110: spatz_req.vtype.vsew = EW_32; + 3'b111: spatz_req.vtype.vsew = EW_64; + default: illegal_instr = 1'b1; + endcase + + unique case (func6) + OPMVA: spatz_req.matrix = TILE_A; + OPMVB: spatz_req.matrix = TILE_B; + OPMVC: spatz_req.matrix = TILE_C; + default: illegal_instr = 1'b1; + endcase + + spatz_req.ex_unit = LSU; + + // Check which type of load or store operation is requested + unique casez (decoder_req_i.instr) + + riscv_instr::MLE8_V_A , + riscv_instr::MLE8_V_B , + riscv_instr::MLE8_V_C , + riscv_instr::MLE16_V_A, + riscv_instr::MLE16_V_B, + riscv_instr::MLE16_V_C, + riscv_instr::MLE32_V_A, + riscv_instr::MLE32_V_B, + riscv_instr::MLE32_V_C, + riscv_instr::MLE64_V_A, + riscv_instr::MLE64_V_B, + riscv_instr::MLE64_V_C: begin + spatz_req.op = VLE; + spatz_req.op_mem.is_load = 1'b1; + spatz_req.vd = ls_vd; + spatz_req.use_vd = 1'b1; + spatz_req.rs1 = decoder_req_i.rs1; + spatz_req.rs2 = decoder_req_i.rs2; + end + + riscv_instr::MSE8_V_A , + riscv_instr::MSE8_V_B , + riscv_instr::MSE8_V_C , + riscv_instr::MSE16_V_A, + riscv_instr::MSE16_V_B, + riscv_instr::MSE16_V_C, + riscv_instr::MSE32_V_A, + riscv_instr::MSE32_V_B, + riscv_instr::MSE32_V_C, + riscv_instr::MSE64_V_A, + riscv_instr::MSE64_V_B, + riscv_instr::MSE64_V_C: begin + spatz_req.op = VSE; + spatz_req.op_mem.is_load = 1'b0; + spatz_req.vd = ls_vd; + spatz_req.use_vd = 1'b1; + spatz_req.vd_is_src = 1'b1; + spatz_req.rs1 = decoder_req_i.rs1; + spatz_req.rs2 = decoder_req_i.rs2; + end + + default: + illegal_instr = 1'b1; + endcase // decoder_req_i.instr + end + // Vector instruction riscv_instr::VADD_VV, riscv_instr::VADD_VX, @@ -310,6 +410,11 @@ module spatz_decoder riscv_instr::VREM_VX, riscv_instr::VMACC_VV, riscv_instr::VMACC_VX, + + // MXU + riscv_instr::MXMACC_VV, + riscv_instr::MXMACC_VX, + riscv_instr::VNMSAC_VV, riscv_instr::VNMSAC_VX, riscv_instr::VMADD_VV, @@ -674,6 +779,14 @@ module spatz_decoder spatz_req.vd_is_src = 1'b1; end + // MXU Matrix Multiply (MACC) + riscv_instr::MXMACC_VV, + riscv_instr::MXMACC_VX: begin + spatz_req.op = MXMACC; + spatz_req.vd_is_src = 1'b1; + spatz_req.op_arith.is_mx = 1'b1; + end + riscv_instr::VNMSAC_VV, riscv_instr::VNMSAC_VX: begin spatz_req.op = VNMSAC; @@ -834,6 +947,11 @@ module spatz_decoder riscv_instr::VFMACC_VF, riscv_instr::VFNMACC_VV, riscv_instr::VFNMACC_VF, + + // MXU + riscv_instr::MXFMACC_VV, + riscv_instr::MXFMACC_VF, + riscv_instr::VFMSAC_VV, riscv_instr::VFMSAC_VF, riscv_instr::VFNMSAC_VV, @@ -955,6 +1073,15 @@ module spatz_decoder spatz_req.vd_is_src = 1'b1; spatz_req.op_arith.switch_rs1_rd = decoder_req_i.instr inside {riscv_instr::VFNMADD_VV, riscv_instr::VFNMADD_VF}; end + // MXU Matrix FP Multiply + riscv_instr::MXFMACC_VV, + riscv_instr::MXFMACC_VF: begin + spatz_req.op = VFMADD; + spatz_req.vd_is_src = 1'b1; + spatz_req.op_arith.is_mx = 1'b1; + spatz_req.vs1 = arith_s1; + spatz_req.vs2 = arith_s2; + end riscv_instr::VFMSAC_VV, riscv_instr::VFMSAC_VF, riscv_instr::VFMSUB_VV, @@ -1667,7 +1794,12 @@ module spatz_decoder riscv_instr::CSR_VLENB, riscv_instr::CSR_VXSAT, riscv_instr::CSR_VXRM, - riscv_instr::CSR_VCSR: begin + riscv_instr::CSR_VCSR, + // MXU + riscv_instr::CSR_MTYPE, + riscv_instr::CSR_TILEM, + riscv_instr::CSR_TILEK, + riscv_instr::CSR_TILEN: begin spatz_req.op_csr.addr = csr_addr; end default: illegal_instr = 1'b1; @@ -1729,6 +1861,32 @@ module spatz_decoder spatz_req.op_cfg.keep_vl = setvl_rs1 == '0 && setvl_rd == '0; end + // MXU + riscv_instr::MSETTILEM, + riscv_instr::MSETTILEK, + riscv_instr::MSETTILEN: begin + automatic vreg_t set_rd = decoder_req_i.instr[11:7]; + spatz_req.rs1 = decoder_req_i.rs1; + spatz_req.rd = set_rd; + spatz_req.use_rd = 1'b1; + spatz_req.op = MCFG; + spatz_req.ex_unit = CON; + spatz_req.op_arith.is_mx = 1'b1; + + unique casez (decoder_req_i.instr) + riscv_instr::MSETTILEM: begin + spatz_req.op_cfg.dimTile = DIM_M; + end + riscv_instr::MSETTILEK: begin + spatz_req.op_cfg.dimTile = DIM_K; + end + riscv_instr::MSETTILEN: begin + spatz_req.op_cfg.dimTile = DIM_N; + end + default: illegal_instr = 1'b1; + endcase + end + default: illegal_instr = 1'b1; endcase // Opcodes diff --git a/hw/ip/spatz/src/spatz_fpu_sequencer.sv b/hw/ip/spatz/src/spatz_fpu_sequencer.sv index 16a61af2..5a5bb415 100644 --- a/hw/ip/spatz/src/spatz_fpu_sequencer.sv +++ b/hw/ip/spatz/src/spatz_fpu_sequencer.sv @@ -585,7 +585,10 @@ module spatz_fpu_sequencer {riscv_instr::VLE8_V, riscv_instr::VLE16_V, riscv_instr::VLE32_V, riscv_instr::VLE64_V, riscv_instr::VLSE8_V, riscv_instr::VLSE16_V, riscv_instr::VLSE32_V, riscv_instr::VLSE64_V, riscv_instr::VLOXEI8_V, riscv_instr::VLOXEI16_V, riscv_instr::VLOXEI32_V, riscv_instr::VLOXEI64_V, - riscv_instr::VLUXEI8_V, riscv_instr::VLUXEI16_V, riscv_instr::VLUXEI32_V, riscv_instr::VLUXEI64_V}; + riscv_instr::VLUXEI8_V, riscv_instr::VLUXEI16_V, riscv_instr::VLUXEI32_V, riscv_instr::VLUXEI64_V, + riscv_instr::MLE8_V_A, riscv_instr::MLE8_V_B, riscv_instr::MLE8_V_C, riscv_instr::MLE16_V_A, + riscv_instr::MLE16_V_B, riscv_instr::MLE16_V_C, riscv_instr::MLE32_V_A, riscv_instr::MLE32_V_B, + riscv_instr::MLE32_V_C, riscv_instr::MLE64_V_A, riscv_instr::MLE64_V_B, riscv_instr::MLE64_V_C}; // Is the current instruction a vector store? logic is_vector_store; @@ -593,7 +596,10 @@ module spatz_fpu_sequencer {riscv_instr::VSE8_V, riscv_instr::VSE16_V, riscv_instr::VSE32_V, riscv_instr::VSE64_V, riscv_instr::VSSE8_V, riscv_instr::VSSE16_V, riscv_instr::VSSE32_V, riscv_instr::VSSE64_V, riscv_instr::VSOXEI8_V, riscv_instr::VSOXEI16_V, riscv_instr::VSOXEI32_V, riscv_instr::VSOXEI64_V, - riscv_instr::VSUXEI8_V, riscv_instr::VSUXEI16_V, riscv_instr::VSUXEI32_V, riscv_instr::VSUXEI64_V}; + riscv_instr::VSUXEI8_V, riscv_instr::VSUXEI16_V, riscv_instr::VSUXEI32_V, riscv_instr::VSUXEI64_V, + riscv_instr::MSE8_V_A, riscv_instr::MSE8_V_B, riscv_instr::MSE8_V_C, riscv_instr::MSE16_V_A, + riscv_instr::MSE16_V_B, riscv_instr::MSE16_V_C, riscv_instr::MSE32_V_A, riscv_instr::MSE32_V_B, + riscv_instr::MSE32_V_C, riscv_instr::MSE64_V_A, riscv_instr::MSE64_V_B, riscv_instr::MSE64_V_C}; // Do we need to delay is load/store because of the VLSU? assign vlsu_stall = (is_store && acc_mem_cnt_q != '0) || (is_load && acc_mem_str_cnt_q != '0) || acc_mem_cnt_q == '1; diff --git a/hw/ip/spatz/src/spatz_mxu.sv b/hw/ip/spatz/src/spatz_mxu.sv new file mode 100644 index 00000000..1a94bf54 --- /dev/null +++ b/hw/ip/spatz/src/spatz_mxu.sv @@ -0,0 +1,336 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 +// +// Author: Enis Mustafa, ETH Zurich +// + +module spatz_mxu + import spatz_pkg::*; import rvv_pkg::*; +( + input logic clk_i, + input logic rst_ni, + input logic clear_mxu_state_i, + input vrf_data_t [2:0] operands_i, + input logic enable_mx_i, + input logic enable_fpu_i, + input logic result_valid_i, + input logic [2:0] operands_ready_i, + input logic vrf_wvalid_i, + input vlen_t vl_i, + input vrf_data_t result_i, + input vlen_t last_word_i, + input tile_k_t tile_dimK, + input tile_n_t tile_dimN, + input tile_m_t tile_dimM, + output vrf_data_t [2:0] operand_o, + output logic [2:0] read_enable_o, + output logic write_enable_o, + output logic word_commited_o, + output logic ipu_en_o, + output logic result_ready_o, + output vlen_t offset_o +); + + `include "common_cells/registers.svh" + + typedef enum logic [1:0]{ + first, second, third, forth + } operand_fsm_t; + + tile_m_t num_rows; + tile_n_t num_cols; + + operand_fsm_t block_q; + operand_fsm_t block_d; + logic next_block; + + logic [2:0] mx_read_enable; + logic mx_write_enable_d; + logic [2:0] mx_write_enable_q; + + vrf_data_t operand1; + vrf_data_t operand2; + vrf_data_t operand3; + vrf_data_t operand_row; + + //Accumulator signal + vrf_data_t [NrACCBanks-1:0] accu_result_q; + logic [NrACCBanks-1:0] accu_result_valid, accu_result_valid_d, accu_result_valid_q; + vrf_data_t wdata_q; + logic [NrACCBanks-1:0] waddr_onehot; + + logic load_vd; + logic ipu_en; + logic [3:0] col_counter, part_col; + logic [3:0] acc_counter, part_acc; + vrf_data_t [1:0] current_operands_q; + vrf_data_t [1:0] current_operands_d; + vrf_data_t [1:0] previous_operands_q; + vrf_data_t [1:0] previous_operands_d; + + // Hack to get correct results during fmatmul + // Delay the internal state clear by some cycles when the instruction changes + localparam int unsigned CLEAR_MXU_STATE_DELAY = 3; + logic [$clog2(CLEAR_MXU_STATE_DELAY)-1:0] mxu_cnt_q, mxu_cnt_d; + logic mxu_cnt_en_q, mxu_cnt_en_d; + // Delayed clear of the internal state + logic clear_mxu_state_del; + + // Counters to track writes to vrf + logic mx_to_write_vrf_d, mx_to_write_vrf_q; + logic [3:0] write_cnt_d, write_cnt_q, write_limit; + assign write_limit = 4 * (tile_dimN/4) * (tile_dimM/4); + + always_comb begin + mxu_cnt_d = mxu_cnt_q; + mxu_cnt_en_d = mxu_cnt_en_q; + clear_mxu_state_del = 1'b0; + + if (mxu_cnt_en_q) begin + mxu_cnt_d = mxu_cnt_q + 1; + if (mxu_cnt_q == (CLEAR_MXU_STATE_DELAY - 1)) begin + mxu_cnt_d = '0; + mxu_cnt_en_d = 1'b0; + clear_mxu_state_del = 1'b1; + end + end + + if (clear_mxu_state_i) + mxu_cnt_en_d = 1'b1; + end + + always_ff @(posedge clk_i or negedge rst_ni) begin + if (!rst_ni) begin + mxu_cnt_en_q <= '0; + mxu_cnt_q <= '0; + accu_result_valid_q <= '0; + mx_to_write_vrf_q <= 1'b0; + write_cnt_q <= '0; + end else begin + mxu_cnt_en_q <= mxu_cnt_en_d; + mxu_cnt_q <= mxu_cnt_d; + accu_result_valid_q <= accu_result_valid_d; + mx_to_write_vrf_q <= mx_to_write_vrf_d; + write_cnt_q <= write_cnt_d; + end + end + + // Manage FSM + `FF(block_q, block_d, first) + // mx_write_en_d, _q, _qq (last write to VRF) + // Clear the internal state upon a new instruction + `FFLARNC(mx_write_enable_q[0], mx_write_enable_d , enable_mx_i, clear_mxu_state_del, '0, clk_i, rst_ni) + `FFLARNC(mx_write_enable_q[1], mx_write_enable_q[0], enable_mx_i, clear_mxu_state_del, '0, clk_i, rst_ni) + `FFLARNC(mx_write_enable_q[2], mx_write_enable_q[1], enable_mx_i, clear_mxu_state_del, '0, clk_i, rst_ni) + // Row input FPU operation counter + `FF(col_counter, enable_mx_i ? ipu_en ? col_counter + 1 : col_counter : 0, '0) + // Row output FPU latch/vrf accumulator counter + `FF(acc_counter, enable_mx_i ? result_valid_i && result_ready_o ? acc_counter + 1 : acc_counter : 0, '0) + // Save operands_i as current operands every time we get new operands + `FFL(current_operands_q[1:0], current_operands_d[1:0], enable_mx_i && &operands_ready_i[1:0], '0) + // Save operands_i as previous operands every time we get new operands and we are starting a new col + `FFL(previous_operands_q, previous_operands_d[1:0], enable_mx_i && &operands_ready_i[1:0] && part_col == 0, '0) + + always_ff @(posedge clk_i) begin: proc_wdata_q + // Save the FPU result in a FF before going into the latch + wdata_q <= result_i; + end: proc_wdata_q + + // Select which destination bytes to write into + for (genvar accreg = 0; accreg < NrACCBanks; accreg++) begin: gen_waddr_onehot + // Create latch clock signal + assign waddr_onehot[accreg] = enable_mx_i && result_valid_i && accreg == part_acc; + end: gen_waddr_onehot + + // Store result into accumulator + for (genvar accreg = 0; accreg < NrACCBanks; accreg++) begin: gen_write_mem + logic clk_latch; + + tc_clk_gating i_accumulator_cg ( + .clk_i (clk_i ), + .en_i (waddr_onehot[accreg] ), + .test_en_i(1'b0 ), + .clk_o (clk_latch ) + ); + + /* verilator lint_off NOLATCH */ + always_latch begin + if (clk_latch) + accu_result_q[accreg] <= wdata_q; + end + /* verilator lint_on NOLATCH */ + + end: gen_write_mem + + always_comb begin + load_vd = 0; + num_cols = 0; + num_rows = 0; + part_col = 0; + part_acc = 0; + + if(enable_mx_i) begin + num_cols = tile_dimN; + num_rows = tile_dimM; + // Todo: parametrize me + // Load as many vd as (M / OperandsPerVRFFetch) + load_vd = num_rows == 4 ? vl_i <= 0 : vl_i <= 4; + // mtx_A row counter from 0 to M + part_col = num_cols == 4 ? num_rows == 4 ? col_counter[1:0] : col_counter[2:0] : col_counter; + // Accumulator counter from 0 to M + part_acc = num_cols == 4 ? num_rows == 4 ? acc_counter[1:0] : acc_counter[2:0] : acc_counter; + end + end + + always_comb begin : operand_proc + block_d = block_q; + operand_row = '0; + operand1 = '0; + operand2 = '0; + operand3 = '0; + current_operands_d[1:0] = '0; + previous_operands_d = '0; + next_block = '0; + + if(enable_mx_i) begin + // operadns_ready_i is asserted only for one cycle + current_operands_d[1:0] = &operands_ready_i[1:0] ? operands_i[1:0] : current_operands_q[1:0]; + previous_operands_d = &operands_ready_i[1:0] && part_col == 0 ? operands_i[1:0] : previous_operands_q[1:0]; + // Sending the current A quadword for the last time to the FPU + // Proceed to the next A quadword + next_block = &part_col[1:0] && ipu_en; + // Operands FSM + case (block_q) + first : begin + operand1 = previous_operands_d[1]; + operand2 = previous_operands_d[0]; + block_d = next_block && num_rows != 4 ? second : block_q; + end + second : begin + operand1 = current_operands_d[1]; + operand2 = previous_operands_d[0]; + block_d = next_block ? num_cols == 4 ? first : third : block_q; + end + third : begin + operand1 = previous_operands_d[1]; + operand2 = current_operands_d[0]; + block_d = next_block ? forth : block_q; + end + forth : begin + operand1 = current_operands_d[1]; + operand2 = current_operands_d[0]; + block_d = next_block ? first : block_q; + end + default : begin + operand1 = previous_operands_d[1]; + operand2 = previous_operands_d[0]; + end + endcase // block_q + + if(load_vd) begin + operand3 = operands_i[2]; + end else begin + operand3 = accu_result_q[part_col]; + end + + //Replicate one element to apply on whole vreg_data + operand_row = {1*N_FPU{operand1[part_col[1:0]*ELEN +: ELEN]}}; + end + end + + always_comb begin : rw_enable_proc + mx_read_enable = '0; + mx_write_enable_d = 1'b0; + mx_to_write_vrf_d = mx_to_write_vrf_q; + write_cnt_d = write_cnt_q; + + // If the result from FPU is not to be written to the VRF, then store it in the accumulators + for (int accreg=0; accreg < NrACCBanks; accreg++) begin + accu_result_valid_d[accreg] = accu_result_valid_q[accreg] ? 1'b1 : ~mx_write_enable_d & waddr_onehot[accreg]; + end + + if (enable_mx_i) begin + // Enable a read if we need an operand + // If the accumulators are to be used i.e. load_vd=1'b0 then also check that the accumulators have a valid result + mx_read_enable[1:0] = (load_vd | (~load_vd & accu_result_valid_q[part_col])) ? {2{part_col == 0 || part_col == 4}} : 2'b0; + if ((~load_vd & accu_result_valid_q[part_col])) + accu_result_valid_d[part_col] = 1'b0; + mx_read_enable[2] = load_vd; + end + + // Write back into the VRF if we have processed all the words + // and we got a valid result + + // Start writes to VRF once we have send the last operands to the VFU + mx_to_write_vrf_d = mx_to_write_vrf_q ? 1'b1 : (vl_i >= last_word_i) & word_commited_o; + if (mx_to_write_vrf_d) begin + // Start writing to VRF once we have the part_acc pointing to 0 + automatic logic write_en = (write_cnt_q == 0) ? (part_acc == 0) : 1'b1; + mx_write_enable_d = result_valid_i & write_en; + if (mx_write_enable_d) begin + write_cnt_d = write_cnt_q + 1; + if (write_cnt_q == (write_limit-1)) begin + write_cnt_d = '0; + mx_to_write_vrf_d = 1'b0; + end + end + end + end + + //Enable when reaching first element of row and operands ready. + //If in the first word also wait for vd ready. + + //////////////// + // MXU -> VRF // + //////////////// + + // Request an operand from the VRF + assign read_enable_o = enable_mx_i ? mx_read_enable : '0; + // We have consumed one A quadword + assign word_commited_o = enable_mx_i ? ipu_en && (part_col == 3 || (num_cols == 4 && part_col == 7) || part_col == 15) : '0; + + //////////////// + // VRF -> MXU // + //////////////// + + // Get an operand from the VRF + // operands_ready_i : vrf_rdata_valid_o + // operands_i : vrf_rdata_o + + //////////////// + // MXU -> FPU // + //////////////// + + // Feed the functional units + // ipu_en : fpu_valid_i + // operand_o : fpu_operands_i + assign ipu_en = enable_mx_i ? (|mx_read_enable ? |operands_ready_i : accu_result_valid_q[part_col]) : '0; + assign ipu_en_o = enable_mx_i ? ipu_en : '0; + assign operand_o = enable_mx_i ? {operand3, operand_row, operand2} : 'x; + + //////////////// + // FPU -> MXU // + //////////////// + + // Receive a result from the FPUs + // result_i : fpu_result_o + // result_valid_i : fpu_valid_o + // result_ready_o : fpu_ready_i + assign result_ready_o = enable_mx_i ? (|mx_read_enable ? |operands_ready_i : '1) || vrf_wvalid_i : '0; + + //////////////// + // MXU -> VRF // + //////////////// + + // write_enable_o : vrf_wreq_i + assign write_enable_o = mx_write_enable_d; + + //////////////////// + // VRF addressing // + //////////////////// + + // offset_o offsets the vrf_addr_i + assign offset_o = enable_mx_i ? mx_write_enable_q[0] ? part_col : part_col : '0; + +endmodule diff --git a/hw/ip/spatz/src/spatz_pkg.sv.tpl b/hw/ip/spatz/src/spatz_pkg.sv.tpl index 7d565323..4afb3235 100644 --- a/hw/ip/spatz/src/spatz_pkg.sv.tpl +++ b/hw/ip/spatz/src/spatz_pkg.sv.tpl @@ -91,6 +91,17 @@ package spatz_pkg; // Largest element width that Spatz supports localparam vew_e MAXEW = RVD ? EW_64 : EW_32; + //Number of Accumulator Banks + localparam int unsigned NrACCBanks = `ifdef N_ACC `N_ACC `else 16 `endif; + + // MXU + localparam int unsigned MAX_TILE_M = 8; + localparam int unsigned MAX_TILE_N = 8; + // The col counter in the VLSU is parametrized on MAX_TILE_N only + // If you change this parameter, better parametrize the col counter + // in the VLSU as well + localparam int unsigned MAX_TILE_K = MAX_TILE_N; + ////////////////////// // Type Definitions // ////////////////////// @@ -112,6 +123,11 @@ package spatz_pkg; // Instruction ID typedef logic [$clog2(NrParallelInstructions)-1:0] spatz_id_t; + // MXU + typedef logic [$clog2(MAX_TILE_M):0] tile_m_t; + typedef logic [$clog2(MAX_TILE_N):0] tile_n_t; + typedef logic [$clog2(MAX_TILE_K):0] tile_k_t; + ///////////////////// // Operation Types // ///////////////////// @@ -132,6 +148,8 @@ package spatz_pkg; VMSEQ, VMSNE, VMSLTU, VMSLT, VMSLEU, VMSLE, VMSGTU, VMSGT, // Integer add-with-carry and subtract-with-borrow carry-out instructions VMADC, VMSBC, + // MXU Matrix multiplication and dot product instructions + MXMACC, MXFMACC, // Mask operations VMANDNOT, VMAND, VMOR, VMXOR, VMORNOT, VMNAND, VMNOR, VMXNOR, // Slide instructions @@ -142,6 +160,8 @@ package spatz_pkg; VSE, VSSE, VSXE, // Config instruction VCFG, + // MXU Config instruction + MCFG, // VCSR VCSR, // Floating point instructions @@ -173,6 +193,8 @@ package spatz_pkg; logic set_vstart; logic clear_vstart; logic reset_vstart; + // MXU + tile_dim_e dimTile; } op_cfg_t; typedef struct packed { @@ -183,6 +205,10 @@ package spatz_pkg; logic vm; logic use_carry_borrow_in; logic is_scalar; + + // MXU + logic is_mx; + logic is_narrowing; logic is_reduction; logic switch_rs1_rd; @@ -249,6 +275,12 @@ package spatz_pkg; vtype_t vtype; vlen_t vl; vlen_t vstart; + + // MXU + tile_e matrix; + tile_m_t tile_M; + tile_n_t tile_N; + tile_k_t tile_K; } spatz_req_t; ////////////////////////////////// diff --git a/hw/ip/spatz/src/spatz_simd_lane.sv b/hw/ip/spatz/src/spatz_simd_lane.sv index 4550c926..6917c363 100644 --- a/hw/ip/spatz/src/spatz_simd_lane.sv +++ b/hw/ip/spatz/src/spatz_simd_lane.sv @@ -40,7 +40,7 @@ module spatz_simd_lane import spatz_pkg::*; import rvv_pkg::vew_e; #( // Multiplier always_comb begin: mult - is_mult = operation_valid_i && (operation_i inside {VMACC, VNMSAC, VMADD, VNMSUB, VMUL, VMULH, VMULHU, VMULHSU}); + is_mult = operation_valid_i && (operation_i inside {VMACC, VNMSAC, VMADD, VNMSUB, VMUL, VMULH, VMULHU, VMULHSU, MXMACC}); // Mute the multiplier mult_result = '0; @@ -72,7 +72,9 @@ module spatz_simd_lane import spatz_pkg::*; import rvv_pkg::vew_e; #( always_comb begin : arith_operands unique case (operation_i) VMACC, - VNMSAC: begin + VNMSAC, + // MXU + MXMACC: begin arith_op1 = mult_result[Width-1:0]; arith_op2 = op_d_i; end @@ -216,7 +218,7 @@ module spatz_simd_lane import spatz_pkg::*; import rvv_pkg::vew_e; #( result_valid_o = 1'b1; unique case (operation_i) - VADD, VMACC, VMADD, VADC : simd_result = adder_result[Width-1:0]; + VADD, VMACC, VMADD, VADC, MXMACC : simd_result = adder_result[Width-1:0]; VSUB, VRSUB, VNMSAC, VNMSUB, VSBC: simd_result = subtractor_result[Width-1:0]; VMIN, VMINU : simd_result = $signed({op_s1_i[Width-1] & is_signed_i, op_s1_i}) <= $signed({op_s2_i[Width-1] & is_signed_i, op_s2_i}) ? op_s1_i : op_s2_i; VMAX, VMAXU : simd_result = $signed({op_s1_i[Width-1] & is_signed_i, op_s1_i}) > $signed({op_s2_i[Width-1] & is_signed_i, op_s2_i}) ? op_s1_i : op_s2_i; diff --git a/hw/ip/spatz/src/spatz_vfu.sv b/hw/ip/spatz/src/spatz_vfu.sv index 327126d2..50298197 100644 --- a/hw/ip/spatz/src/spatz_vfu.sv +++ b/hw/ip/spatz/src/spatz_vfu.sv @@ -90,6 +90,20 @@ module spatz_vfu // Control // /////////////// + // MXU + vrf_data_t [2:0] mx_operand ; + logic [2:0] mx_read_enable ; + logic mx_write_enable ; + logic mx_word_commited; + logic op_is_mx ; + logic clear_mxu_state ; + logic mx_ipu_en ; + vlen_t mx_offset ; + logic mx_result_ready ; + + assign op_is_mx = spatz_req.op_arith.is_mx && spatz_req_valid; + assign clear_mxu_state = spatz_req_valid & spatz_req_ready; + // Vector length counter vlen_t vl_q, vl_d; `FF(vl_q, vl_d, '0) @@ -148,7 +162,8 @@ module spatz_vfu // Is this a FPU instruction logic is_fpu_insn; - assign is_fpu_insn = FPU && spatz_req.op inside {[VFADD:VSDOTP]}; + // MXU + assign is_fpu_insn = FPU && spatz_req.op inside {[VFADD:VSDOTP], MXFMACC}; // Is the FPU busy? logic is_fpu_busy; @@ -301,7 +316,8 @@ module spatz_vfu if (spatz_req.op_arith.is_scalar) operand1 = {1*N_FU{spatz_req.rs1}}; else if (spatz_req.use_vs1) - operand1 = spatz_req.op_arith.is_reduction ? $unsigned(reduction_q[1]) : vrf_rdata_i[1]; + // MXU + operand1 = op_is_mx ? mx_operand[1] : (spatz_req.op_arith.is_reduction ? $unsigned(reduction_q[1]) : vrf_rdata_i[1]); else begin // Replicate scalar operands unique case (spatz_req.op == VSDOTP ? vew_e'(spatz_req.vtype.vsew + 1) : spatz_req.vtype.vsew) @@ -312,7 +328,10 @@ module spatz_vfu endcase end - if ((!spatz_req.op_arith.is_scalar || spatz_req.op == VADD) && spatz_req.use_vs2) + if (op_is_mx) begin + // MXU + operand2 = mx_operand[0]; + end else if ((!spatz_req.op_arith.is_scalar || spatz_req.op == VADD) && spatz_req.use_vs2) operand2 = spatz_req.op_arith.is_reduction ? $unsigned(reduction_q[0]) : vrf_rdata_i[0]; else // Replicate scalar operands @@ -323,7 +342,8 @@ module spatz_vfu default: operand2 = {1*N_FU{spatz_req.rs2}}; endcase - operand3 = spatz_req.op_arith.is_scalar ? {1*N_FU{spatz_req.rsd}} : vrf_rdata_i[2]; + // MXU + operand3 = op_is_mx ? mx_operand[2] : spatz_req.op_arith.is_scalar ? {1*N_FU{spatz_req.rsd}} : vrf_rdata_i[2]; end: operand_proc assign in_ready = state_q == VFU_RunningIPU ? ipu_in_ready : fpu_in_ready; @@ -371,10 +391,10 @@ module spatz_vfu unique case (reduction_state_q) Reduction_NormalExecution: begin // Did we issue a word to the FUs? - word_issued = spatz_req_valid && &(in_ready | ~valid_operations) && operands_ready && !stall; + word_issued = op_is_mx ? mx_word_commited : spatz_req_valid && &(in_ready | ~valid_operations) && operands_ready && !stall; // Are we ready to accept a result? - result_ready = &(result_valid | ~pending_results) && ((result_tag.wb && vfu_rsp_ready_i) || vrf_wvalid_i); + result_ready = op_is_mx ? mx_result_ready : &(result_valid | ~pending_results) && ((result_tag.wb && vfu_rsp_ready_i) || vrf_wvalid_i); // Initialize the pointers reduction_pointer_d = '0; @@ -521,6 +541,7 @@ module spatz_vfu // Address register vrf_addr_t [2:0] vreg_addr_q, vreg_addr_d; + vrf_addr_t vd_start_addr; `FF(vreg_addr_q, vreg_addr_d, '0) // Calculate new vector register address @@ -530,6 +551,9 @@ module spatz_vfu vrf_raddr_o = vreg_addr_d; vrf_waddr_o = result_tag.vd_addr; + // MXU ancillary + vd_start_addr = ((spatz_req.vd + vstart) << $clog2(NrWordsPerVector)); + // Tag (propagated with the operations) input_tag = '{ id : spatz_req.id, @@ -544,9 +568,10 @@ module spatz_vfu }; if (spatz_req_valid && vl_q == '0) begin + // MXU vreg_addr_d[0] = (spatz_req.vs2 + vstart) << $clog2(NrWordsPerVector); vreg_addr_d[1] = (spatz_req.vs1 + vstart) << $clog2(NrWordsPerVector); - vreg_addr_d[2] = (spatz_req.vd + vstart) << $clog2(NrWordsPerVector); + vreg_addr_d[2] = vd_start_addr + mx_offset; // Direct feedthrough vrf_raddr_o = vreg_addr_d; @@ -555,14 +580,22 @@ module spatz_vfu // Did we commit a word already? if (word_issued) begin - vreg_addr_d[0] = vreg_addr_d[0] + (!spatz_req.op_arith.widen_vs2 || widening_upper_q); + // MXU logic mixed with Spatz's one + vreg_addr_d[0] = vreg_addr_d[0] + (spatz_req.tile_N == 4 && spatz_req.tile_M == 8 ? !vl_d[2] : (!spatz_req.op_arith.widen_vs2 || widening_upper_q)); vreg_addr_d[1] = vreg_addr_d[1] + (!spatz_req.op_arith.widen_vs1 || widening_upper_q); - vreg_addr_d[2] = vreg_addr_d[2] + (!spatz_req.op_arith.is_reduction && (!spatz_req.op_arith.is_narrowing || narrowing_upper_q)); + vreg_addr_d[2] = op_is_mx ? vd_start_addr[2] + mx_offset : (vreg_addr_d[2] + (!spatz_req.op_arith.is_reduction && (!spatz_req.op_arith.is_narrowing || narrowing_upper_q))); end end else if (spatz_req_valid && vl_q < spatz_req.vl && word_issued) begin - vreg_addr_d[0] = vreg_addr_q[0] + (!spatz_req.op_arith.widen_vs2 || widening_upper_q); + // MXU logic mixed with Spatz's one + vreg_addr_d[0] = vreg_addr_q[0] + (spatz_req.tile_N == 4 && spatz_req.tile_M == 8 ? !vl_d[2] : (!spatz_req.op_arith.widen_vs2 || widening_upper_q)); vreg_addr_d[1] = vreg_addr_q[1] + (!spatz_req.op_arith.widen_vs1 || widening_upper_q); - vreg_addr_d[2] = vreg_addr_q[2] + (!spatz_req.op_arith.is_reduction && (!spatz_req.op_arith.is_narrowing || narrowing_upper_q)); + vreg_addr_d[2] = op_is_mx ? vd_start_addr[2] + mx_offset : (vreg_addr_q[2] + (!spatz_req.op_arith.is_reduction && (!spatz_req.op_arith.is_narrowing || narrowing_upper_q))); + end + // MXU + if (op_is_mx) begin + vreg_addr_d[2] = vd_start_addr + mx_offset; + input_tag.vd_addr = vreg_addr_d[2]; + vrf_raddr_o[2] = vreg_addr_d[2]; end end: vreg_addr_proc @@ -571,12 +604,19 @@ module spatz_vfu vreg_we = '0; vreg_wbe = '0; - if (spatz_req_valid && vl_q < spatz_req.vl) + if (spatz_req_valid && vl_q < spatz_req.vl) begin // Request operands - vreg_r_req = {spatz_req.vd_is_src, spatz_req.use_vs1 && reduction_operand_request[1], spatz_req.use_vs2 && reduction_operand_request[0]}; + // MXU logic mixed with Spatz's one + vreg_r_req = op_is_mx ? mx_read_enable : {spatz_req.vd_is_src, spatz_req.use_vs1 && reduction_operand_request[1], spatz_req.use_vs2 && reduction_operand_request[0]}; + end + // MXU + if(op_is_mx) begin + vreg_we = mx_write_enable; + vreg_wbe = '1; + end // Got a new result - if (&(result_valid | ~pending_results) && !result_tag.reduction) begin + else if (&(result_valid | ~pending_results) && !result_tag.reduction) begin vreg_we = !result_tag.wb; vreg_wbe = '1; @@ -626,6 +666,35 @@ module spatz_vfu assign vrf_wdata_o = vreg_wdata; assign vrf_id_o = {result_tag.id, {3{spatz_req.id}}}; + //////////// + // MXU // + //////////// + + spatz_mxu i_mxu ( + .clk_i (clk_i ), + .rst_ni (rst_ni ), + .clear_mxu_state_i(clear_mxu_state ), + .operands_i (vrf_rdata_i ), + .enable_mx_i (op_is_mx ), + .enable_fpu_i (is_fpu_insn ), + .result_valid_i (&result_valid[3:0] ), + .operands_ready_i ({op3_is_ready, op2_is_ready, op1_is_ready}), + .vrf_wvalid_i (vrf_wvalid_i ), + .vl_i (vl_q ), + .result_i (result ), + .last_word_i (spatz_req.vl-vlen_t'(spatz_req.tile_M) ), + .tile_dimK (spatz_req.tile_K ), + .tile_dimN (spatz_req.tile_N ), + .tile_dimM (spatz_req.tile_M ), + .operand_o (mx_operand ), + .read_enable_o (mx_read_enable ), + .write_enable_o (mx_write_enable ), + .word_commited_o (mx_word_commited ), + .ipu_en_o (mx_ipu_en ), + .result_ready_o (mx_result_ready ), + .offset_o (mx_offset ) + ); + ////////// // IPUs // ////////// @@ -769,24 +838,24 @@ module spatz_vfu spatz_ipu #( .tag_t(vfu_tag_t) ) i_ipu ( - .clk_i (clk_i ), - .rst_ni (rst_ni ), - .operation_i (spatz_req.op ), + .clk_i (clk_i ), + .rst_ni (rst_ni ), + .operation_i (spatz_req.op ), // Only the IPU0 executes scalar instructions - .operation_valid_i(spatz_req_valid && operands_ready && (!spatz_req.op_arith.is_scalar || ipu == 0) && !is_fpu_insn), - .operation_ready_o(ipu_ready ), - .op_s1_i (int_ipu_operand1[ipu*ELEN +: ELEN] ), - .op_s2_i (int_ipu_operand2[ipu*ELEN +: ELEN] ), - .op_d_i (int_ipu_operand3[ipu*ELEN +: ELEN] ), - .tag_i (input_tag ), - .carry_i ('0 ), - .sew_i (sew ), - .be_o (/* Unused */ ), - .result_o (int_ipu_result[ipu*ELEN +: ELEN] ), - .result_valid_o (int_ipu_result_valid[ipu*ELENB +: ELENB] ), - .result_ready_i (int_ipu_result_ready ), - .tag_o (int_ipu_result_tag[ipu] ), - .busy_o (int_ipu_busy[ipu] ) + .operation_valid_i(op_is_mx ? mx_ipu_en && !is_fpu_insn : (spatz_req_valid && operands_ready && (!spatz_req.op_arith.is_scalar || ipu == 0) && !is_fpu_insn)), + .operation_ready_o(ipu_ready ), + .op_s1_i (int_ipu_operand1[ipu*ELEN +: ELEN] ), + .op_s2_i (int_ipu_operand2[ipu*ELEN +: ELEN] ), + .op_d_i (int_ipu_operand3[ipu*ELEN +: ELEN] ), + .tag_i (input_tag ), + .carry_i ('0 ), + .sew_i (sew ), + .be_o (/* Unused */ ), + .result_o (int_ipu_result[ipu*ELEN +: ELEN] ), + .result_valid_o (int_ipu_result_valid[ipu*ELENB +: ELENB] ), + .result_ready_i (int_ipu_result_ready ), + .tag_o (int_ipu_result_tag[ipu] ), + .busy_o (int_ipu_busy[ipu] ) ); end : gen_ipus @@ -964,7 +1033,7 @@ module spatz_vfu assign fpu_operand3 = (fpu_op == fpnew_pkg::ADD || spatz_req.op_arith.switch_rs1_rd) ? wide_operand1[fpu*ELEN +: ELEN] : wide_operand3[fpu*ELEN +: ELEN]; logic int_fpu_in_valid; - assign int_fpu_in_valid = spatz_req_valid && operands_ready && (!spatz_req.op_arith.is_scalar || fpu == 0) && is_fpu_insn; + assign int_fpu_in_valid = op_is_mx ? mx_ipu_en && is_fpu_insn : (spatz_req_valid && operands_ready && (!spatz_req.op_arith.is_scalar || fpu == 0) && is_fpu_insn); // Generate an FPU pipeline elen_t fpu_operand1_q, fpu_operand2_q, fpu_operand3_q; diff --git a/hw/ip/spatz/src/spatz_vlsu.sv b/hw/ip/spatz/src/spatz_vlsu.sv index 3d97dfe1..b1908e21 100644 --- a/hw/ip/spatz/src/spatz_vlsu.sv +++ b/hw/ip/spatz/src/spatz_vlsu.sv @@ -108,10 +108,45 @@ module spatz_vlsu EW_32: begin spatz_req_d.vl = spatz_req_i.vl << 2; spatz_req_d.vstart = spatz_req_i.vstart << 2; + // MXU (32 bit) + if (spatz_req_i.op_arith.is_mx) begin + // The following code works if M, N, K are either 4 or 8, m*k = vl + unique case(spatz_req_i.matrix) + // Tile A is m*k, but since k = vl/m, then m*k == vl + TILE_A: spatz_req_d.vl = spatz_req_i.vl << 2; + // Tile B is k*n, and k = vl/m. Therefore, tile B size is vl * n/m + TILE_B: spatz_req_d.vl = spatz_req_i.vl << ( + spatz_req_i.tile_M == spatz_req_i.tile_N + ? 2 + : spatz_req_i.tile_M == 4 + ? 3 + : 1); + // Tile C is m*n. Since vl = m*k and m*n should fit a vreg, + // n <= k + TILE_C: spatz_req_d.vl = spatz_req_i.vl << ( + spatz_req_i.tile_N == 4 && spatz_req_i.tile_K == 8 ? 1 : 2); + default: spatz_req_d.vl = spatz_req_i.vl << 2; + endcase + end end default: begin spatz_req_d.vl = spatz_req_i.vl << MAXEW; spatz_req_d.vstart = spatz_req_i.vstart << MAXEW; + // MXU (64 bit) + if (spatz_req_i.op_arith.is_mx) begin + unique case(spatz_req_i.matrix) + TILE_A: spatz_req_d.vl = spatz_req_i.vl << MAXEW; + TILE_B: spatz_req_d.vl = spatz_req_i.vl << ( + spatz_req_i.tile_M == spatz_req_i.tile_N + ? MAXEW + : spatz_req_i.tile_M == 4 + ? MAXEW + 1 + : MAXEW - 1); + TILE_C: spatz_req_d.vl = spatz_req_i.vl << ( + spatz_req_i.tile_N == 4 && spatz_req_i.tile_K == 8 ? MAXEW - 1 : MAXEW); + default: spatz_req_d.vl = spatz_req_i.vl << MAXEW; + endcase + end end endcase end: proc_spatz_req @@ -220,6 +255,33 @@ module spatz_vlsu vlen_t [NrMemPorts-1:0] mem_idx_counter_d; vlen_t [NrMemPorts-1:0] mem_idx_counter_q; + // MXU + // Counters to count rows (m dim) and columns (n dim (stores) or k dim (loads)) for each memory port + // When loading, the column dimension is k (in memory, A mtx is transposed) + // The impact of this code is 2*NrPorts counters with $clog2(MAX_TILE) bits + // This hardware works for TILE_M, TILE_N, TILE_K > NrMemPorts + localparam int unsigned MAX_TILE_ROW = MAX_TILE_M; + localparam int unsigned MAX_TILE_COL = MAX_TILE_N; + // Counters to parametrically handle memory loads/stores + logic [NrMemPorts-1:0] [$clog2(MAX_TILE_M)-1:0] mx_cnt_row_q; + logic [NrMemPorts-1:0] [$clog2(MAX_TILE_N)-1:0] mx_cnt_col_q; + logic [NrMemPorts-1:0] mx_cnt_en_row, mx_cnt_en_col; + logic [NrMemPorts-1:0] mx_cnt_clr_row, mx_cnt_clr_col; + logic [$clog2(MAX_TILE_N)-1:0] mx_cnt_max_row, mx_cnt_max_col; + // Max counter for m and n counters + logic [$clog2(MAX_TILE_M)-1:0] mx_max_row; + logic [$clog2(MAX_TILE_N)-1:0] mx_max_col; + // Rows on the M dimension for mtx A load and mtx C store, otherwise on the N dimension + assign mx_max_row = commit_insn_q.is_load && mem_spatz_req.matrix == TILE_B + ? mem_spatz_req.tile_N[$clog2(MAX_TILE_N)-1:0] - 1 + : mem_spatz_req.tile_M[$clog2(MAX_TILE_M)-1:0] - 1; + // Columns on the N dimension for mtx C store, otherwise on the K dimension + assign mx_max_col = commit_insn_q.is_load + ? mem_spatz_req.tile_K[$clog2(MAX_TILE_K)-1:0] - 1 + : mem_spatz_req.tile_N[$clog2(MAX_TILE_N)-1:0] - 1; + assign mx_cnt_max_row = mx_max_row >> ( commit_insn_q.is_load ? $clog2(NrMemPorts) : 0); + assign mx_cnt_max_col = mx_max_col >> (!commit_insn_q.is_load ? $clog2(NrMemPorts) : 0); + for (genvar port = 0; port < NrMemPorts; port++) begin: gen_mem_counters delta_counter #( .WIDTH($bits(vlen_t)) @@ -252,6 +314,48 @@ module spatz_vlsu ); assign mem_port_finished_q[port] = mem_spatz_req_valid && (mem_counter_q[port] == mem_counter_max[port]); + + //////////////////// + // MXU counters // + //////////////////// + + // We store row-wise + // Go to a new row when we finished the previous one + // Load instructions: we load column-wise (sequence of non-unit-strided loads) + // Store instructions: we store row-wise (sequence of unit-strided stores) + assign mx_cnt_en_row[port] = mem_spatz_req.op_arith.is_mx & mem_counter_en[port] & ((mx_cnt_col_q[port] == mx_cnt_max_col) | commit_insn_q.is_load); + assign mx_cnt_en_col[port] = mem_spatz_req.op_arith.is_mx & mem_counter_en[port] & ((mx_cnt_row_q[port] == mx_cnt_max_row) | ~commit_insn_q.is_load); + // Count up to (tile_size - 1), and tile_size is power of 2 + assign mx_cnt_clr_row[port] = mx_cnt_en_row[port] & (mx_cnt_row_q[port] == mx_cnt_max_row); + assign mx_cnt_clr_col[port] = mx_cnt_en_col[port] & (mx_cnt_col_q[port] == mx_cnt_max_col); + + counter #( + .WIDTH($clog2(MAX_TILE_ROW)) + ) i_mx_cnt_row ( + .clk_i (clk_i ), + .rst_ni (rst_ni ), + .clear_i (mx_cnt_clr_row[port]), + .en_i (mx_cnt_en_row[port] ), + .load_i ('0 ), + .down_i (1'b0 ), // We always count up + .d_i ('0 ), + .q_o (mx_cnt_row_q[port] ), + .overflow_o(/* Unused */ ) + ); + + counter #( + .WIDTH($clog2(MAX_TILE_COL)) + ) i_mx_cnt_col ( + .clk_i (clk_i ), + .rst_ni (rst_ni ), + .clear_i (mx_cnt_clr_col[port]), + .en_i (mx_cnt_en_col[port] ), + .load_i ('0 ), + .down_i (1'b0 ), // We always count up + .d_i ('0 ), + .q_o (mx_cnt_col_q[port] ), + .overflow_o(/* Unused */ ) + ); end: gen_mem_counters // Did the current instruction finished the memory requests? @@ -389,6 +493,10 @@ module spatz_vlsu vrf_addr_t vd_vreg_addr; vrf_addr_t vs2_vreg_addr; + // MXU + elen_t [NrMemPorts-1:0] mx_offset_addr_d, mx_offset_addr_q; + `FF(mx_offset_addr_q, mx_offset_addr_d, '0) + // Current element index and byte index that are being accessed at the register file vreg_elem_t vd_elem_id; vreg_elem_t vs2_elem_id_d, vs2_elem_id_q; @@ -403,6 +511,10 @@ module spatz_vlsu logic [31:0] addr; logic [31:0] stride; logic [31:0] offset; + // MXU + logic [31:0] mx_offset_load; + logic [31:0] mx_offset_store; + logic [31:0] mx_offset; // Pre-shuffling index offset typedef logic [int'(MAXEW)-1:0] maxew_t; @@ -425,6 +537,15 @@ module spatz_vlsu EW_16: offset = $signed(vrf_rdata_i[1][8 * word_index +: 16]); default: offset = $signed(vrf_rdata_i[1][8 * word_index +: 32]); endcase + // MXU + end else if(mem_spatz_req.op_arith.is_mx) begin + // Ports finish storing one matrix column before passing to a new one + // If mem_spatz_req.rs2 is a power of 2, this can be further optimized + mx_offset_load = (mem_spatz_req.rs2 * (port << 3)) + ((mx_cnt_row_q[port] * mem_spatz_req.rs2) << $clog2(NrMemPorts * MemDataWidthB)) + (mx_cnt_col_q[port] << $clog2(MemDataWidthB)); + // Ports finish storing one matrix row before passing to a new one + // If mem_spatz_req.rs2 is a power of 2, this can be further optimized + mx_offset_store = (port << 3) + ((mx_cnt_row_q[port] * mem_spatz_req.rs2) << $clog2(MemDataWidthB)) + (mx_cnt_col_q[port] << ($clog2(NrMemPorts * MemDataWidthB))); + offset = commit_insn_q.is_load ? mx_offset_load : mx_offset_store; end else begin offset = ({mem_counter_q[port][$bits(vlen_t)-1:MAXEW] << $clog2(NrMemPorts), mem_counter_q[port][int'(MAXEW)-1:0]} + (port << MAXEW)) * stride; end @@ -432,6 +553,8 @@ module spatz_vlsu addr = mem_spatz_req.rs1 + offset; mem_req_addr[port] = (addr >> MAXEW) << MAXEW; mem_req_addr_offset[port] = addr[int'(MAXEW)-1:0]; + // MXU + mx_offset_addr_d[port] = offset; pending_index[port] = (mem_idx_counter_q[port][$clog2(NrWordsPerVector*ELENB)-1:0] >> MAXEW) != vs2_vreg_addr[$clog2(NrWordsPerVector)-1:0]; end diff --git a/hw/system/spatz_cluster/script/vsim/wave_core.tcl b/hw/system/spatz_cluster/script/vsim/wave_core.tcl index e24ff955..032116b9 100644 --- a/hw/system/spatz_cluster/script/vsim/wave_core.tcl +++ b/hw/system/spatz_cluster/script/vsim/wave_core.tcl @@ -160,4 +160,8 @@ add wave -noupdate -group core[$1] -group Spatz -group VSLDU /tb_bin/i_dut/i_clu add wave -noupdate -group core[$1] -group Spatz -group VFU /tb_bin/i_dut/i_cluster_wrapper/i_cluster/gen_core[$1]/i_spatz_cc/i_spatz/i_vfu/* +add wave -noupdate -group core[$1] -group Spatz -group MXU /tb_bin/i_dut/i_cluster_wrapper/i_cluster/gen_core[$1]/i_spatz_cc/i_spatz/i_vfu/i_mxu/* + +add wave -noupdate -group core[$1] -group Spatz -group FPU /tb_bin/i_dut/i_cluster_wrapper/i_cluster/gen_core[0]/i_spatz_cc/i_spatz/i_vfu/gen_fpu/* + add wave -noupdate -group core[$1] -group Internal /tb_bin/i_dut/i_cluster_wrapper/i_cluster/gen_core[$1]/i_spatz_cc/* diff --git a/hw/system/spatz_cluster/test/bootrom.bin b/hw/system/spatz_cluster/test/bootrom.bin index 913f6565..dd080ce7 100755 Binary files a/hw/system/spatz_cluster/test/bootrom.bin and b/hw/system/spatz_cluster/test/bootrom.bin differ diff --git a/hw/system/spatz_cluster/test/bootrom.dump b/hw/system/spatz_cluster/test/bootrom.dump index 53c34fc5..ed4497d6 100644 --- a/hw/system/spatz_cluster/test/bootrom.dump +++ b/hw/system/spatz_cluster/test/bootrom.dump @@ -30,8 +30,11 @@ Disassembly of section .rodata: 1040: 1000 .2byte 0x1000 1042: 0000 .2byte 0x0 1044: 0002 .2byte 0x2 - ... - 104e: 0010 .2byte 0x10 + 1046: 0000 .2byte 0x0 + 1048: 0010 .2byte 0x10 + 104a: 0000 .2byte 0x0 + 104c: 0000 .2byte 0x0 + 104e: 5100 .2byte 0x5100 1050: 0000 .2byte 0x0 1052: 0002 .2byte 0x2 1054: 0000 .2byte 0x0 diff --git a/hw/system/spatz_cluster/test/bootrom.elf b/hw/system/spatz_cluster/test/bootrom.elf index 7d6ff8b6..488acdfa 100755 Binary files a/hw/system/spatz_cluster/test/bootrom.elf and b/hw/system/spatz_cluster/test/bootrom.elf differ diff --git a/sw/snRuntime/vendor/riscv-opcodes/encoding.h b/sw/snRuntime/vendor/riscv-opcodes/encoding.h new file mode 100644 index 00000000..e7df6eb5 --- /dev/null +++ b/sw/snRuntime/vendor/riscv-opcodes/encoding.h @@ -0,0 +1,4172 @@ +/* + * This file is auto-generated by running 'make encoding_out.h' in 'riscv-opcodes' + */ + +/* See LICENSE for license details. */ + +#ifndef RISCV_CSR_ENCODING_H +#define RISCV_CSR_ENCODING_H + +#define MSTATUS_UIE 0x00000001 +#define MSTATUS_SIE 0x00000002 +#define MSTATUS_HIE 0x00000004 +#define MSTATUS_MIE 0x00000008 +#define MSTATUS_UPIE 0x00000010 +#define MSTATUS_SPIE 0x00000020 +#define MSTATUS_HPIE 0x00000040 +#define MSTATUS_MPIE 0x00000080 +#define MSTATUS_SPP 0x00000100 +#define MSTATUS_VS 0x00000600 +#define MSTATUS_MPP 0x00001800 +#define MSTATUS_FS 0x00006000 +#define MSTATUS_XS 0x00018000 +#define MSTATUS_MPRV 0x00020000 +#define MSTATUS_SUM 0x00040000 +#define MSTATUS_MXR 0x00080000 +#define MSTATUS_TVM 0x00100000 +#define MSTATUS_TW 0x00200000 +#define MSTATUS_TSR 0x00400000 +#define MSTATUS32_SD 0x80000000 +#define MSTATUS_UXL 0x0000000300000000 +#define MSTATUS_SXL 0x0000000C00000000 +#define MSTATUS_GVA 0x0000004000000000 +#define MSTATUS_MPV 0x0000008000000000 +#define MSTATUS64_SD 0x8000000000000000 + +#define SSTATUS_UIE 0x00000001 +#define SSTATUS_SIE 0x00000002 +#define SSTATUS_UPIE 0x00000010 +#define SSTATUS_SPIE 0x00000020 +#define SSTATUS_SPP 0x00000100 +#define SSTATUS_VS 0x00000600 +#define SSTATUS_FS 0x00006000 +#define SSTATUS_XS 0x00018000 +#define SSTATUS_SUM 0x00040000 +#define SSTATUS_MXR 0x00080000 +#define SSTATUS32_SD 0x80000000 +#define SSTATUS_UXL 0x0000000300000000 +#define SSTATUS64_SD 0x8000000000000000 + +#define SSTATUS_VS_MASK (SSTATUS_SIE | SSTATUS_SPIE | \ + SSTATUS_SPP | SSTATUS_SUM | \ + SSTATUS_MXR | SSTATUS_UXL) + +#define HSTATUS_VSXL 0x300000000 +#define HSTATUS_VTSR 0x00400000 +#define HSTATUS_VTW 0x00200000 +#define HSTATUS_VTVM 0x00100000 +#define HSTATUS_VGEIN 0x0003f000 +#define HSTATUS_HU 0x00000200 +#define HSTATUS_SPVP 0x00000100 +#define HSTATUS_SPV 0x00000080 +#define HSTATUS_GVA 0x00000040 +#define HSTATUS_VSBE 0x00000020 + +#define USTATUS_UIE 0x00000001 +#define USTATUS_UPIE 0x00000010 + +#define DCSR_XDEBUGVER (3U<<30) +#define DCSR_NDRESET (1<<29) +#define DCSR_FULLRESET (1<<28) +#define DCSR_EBREAKM (1<<15) +#define DCSR_EBREAKH (1<<14) +#define DCSR_EBREAKS (1<<13) +#define DCSR_EBREAKU (1<<12) +#define DCSR_STOPCYCLE (1<<10) +#define DCSR_STOPTIME (1<<9) +#define DCSR_CAUSE (7<<6) +#define DCSR_DEBUGINT (1<<5) +#define DCSR_HALT (1<<3) +#define DCSR_STEP (1<<2) +#define DCSR_PRV (3<<0) + +#define DCSR_CAUSE_NONE 0 +#define DCSR_CAUSE_SWBP 1 +#define DCSR_CAUSE_HWBP 2 +#define DCSR_CAUSE_DEBUGINT 3 +#define DCSR_CAUSE_STEP 4 +#define DCSR_CAUSE_HALT 5 +#define DCSR_CAUSE_GROUP 6 + +#define MCONTROL_TYPE(xlen) (0xfULL<<((xlen)-4)) +#define MCONTROL_DMODE(xlen) (1ULL<<((xlen)-5)) +#define MCONTROL_MASKMAX(xlen) (0x3fULL<<((xlen)-11)) + +#define MCONTROL_SELECT (1<<19) +#define MCONTROL_TIMING (1<<18) +#define MCONTROL_ACTION (0x3f<<12) +#define MCONTROL_CHAIN (1<<11) +#define MCONTROL_MATCH (0xf<<7) +#define MCONTROL_M (1<<6) +#define MCONTROL_H (1<<5) +#define MCONTROL_S (1<<4) +#define MCONTROL_U (1<<3) +#define MCONTROL_EXECUTE (1<<2) +#define MCONTROL_STORE (1<<1) +#define MCONTROL_LOAD (1<<0) + +#define MCONTROL_TYPE_NONE 0 +#define MCONTROL_TYPE_MATCH 2 + +#define MCONTROL_ACTION_DEBUG_EXCEPTION 0 +#define MCONTROL_ACTION_DEBUG_MODE 1 +#define MCONTROL_ACTION_TRACE_START 2 +#define MCONTROL_ACTION_TRACE_STOP 3 +#define MCONTROL_ACTION_TRACE_EMIT 4 + +#define MCONTROL_MATCH_EQUAL 0 +#define MCONTROL_MATCH_NAPOT 1 +#define MCONTROL_MATCH_GE 2 +#define MCONTROL_MATCH_LT 3 +#define MCONTROL_MATCH_MASK_LOW 4 +#define MCONTROL_MATCH_MASK_HIGH 5 + +#define MIP_USIP (1 << IRQ_U_SOFT) +#define MIP_SSIP (1 << IRQ_S_SOFT) +#define MIP_VSSIP (1 << IRQ_VS_SOFT) +#define MIP_MSIP (1 << IRQ_M_SOFT) +#define MIP_UTIP (1 << IRQ_U_TIMER) +#define MIP_STIP (1 << IRQ_S_TIMER) +#define MIP_VSTIP (1 << IRQ_VS_TIMER) +#define MIP_MTIP (1 << IRQ_M_TIMER) +#define MIP_UEIP (1 << IRQ_U_EXT) +#define MIP_SEIP (1 << IRQ_S_EXT) +#define MIP_VSEIP (1 << IRQ_VS_EXT) +#define MIP_MEIP (1 << IRQ_M_EXT) +#define MIP_SGEIP (1 << IRQ_S_GEXT) + +#define MIP_S_MASK (MIP_SSIP | MIP_STIP | MIP_SEIP) +#define MIP_VS_MASK (MIP_VSSIP | MIP_VSTIP | MIP_VSEIP) +#define MIP_HS_MASK (MIP_VS_MASK | MIP_SGEIP) + +#define MIDELEG_FORCED_MASK MIP_HS_MASK + +#define SIP_SSIP MIP_SSIP +#define SIP_STIP MIP_STIP + +#define PRV_U 0 +#define PRV_S 1 +#define PRV_M 3 + +#define PRV_HS (PRV_S + 1) + +#define SATP32_MODE 0x80000000 +#define SATP32_ASID 0x7FC00000 +#define SATP32_PPN 0x003FFFFF +#define SATP64_MODE 0xF000000000000000 +#define SATP64_ASID 0x0FFFF00000000000 +#define SATP64_PPN 0x00000FFFFFFFFFFF + +#define SATP_MODE_OFF 0 +#define SATP_MODE_SV32 1 +#define SATP_MODE_SV39 8 +#define SATP_MODE_SV48 9 +#define SATP_MODE_SV57 10 +#define SATP_MODE_SV64 11 + +#define HGATP32_MODE 0x80000000 +#define HGATP32_VMID 0x1FC00000 +#define HGATP32_PPN 0x003FFFFF + +#define HGATP64_MODE 0xF000000000000000 +#define HGATP64_VMID 0x03FFF00000000000 +#define HGATP64_PPN 0x00000FFFFFFFFFFF + +#define HGATP_MODE_OFF 0 +#define HGATP_MODE_SV32X4 1 +#define HGATP_MODE_SV39X4 8 +#define HGATP_MODE_SV48X4 9 + +#define PMP_R 0x01 +#define PMP_W 0x02 +#define PMP_X 0x04 +#define PMP_A 0x18 +#define PMP_L 0x80 +#define PMP_SHIFT 2 + +#define PMP_TOR 0x08 +#define PMP_NA4 0x10 +#define PMP_NAPOT 0x18 + +#define IRQ_U_SOFT 0 +#define IRQ_S_SOFT 1 +#define IRQ_VS_SOFT 2 +#define IRQ_M_SOFT 3 +#define IRQ_U_TIMER 4 +#define IRQ_S_TIMER 5 +#define IRQ_VS_TIMER 6 +#define IRQ_M_TIMER 7 +#define IRQ_U_EXT 8 +#define IRQ_S_EXT 9 +#define IRQ_VS_EXT 10 +#define IRQ_M_EXT 11 +#define IRQ_S_GEXT 12 +#define IRQ_COP 12 +#define IRQ_HOST 13 +#define IRQ_M_CLUSTER 19 +#define IRQ_S_CLUSTER 17 + +#define DEFAULT_RSTVEC 0x00001000 +#define CLINT_BASE 0x02000000 +#define CLINT_SIZE 0x000c0000 +#define EXT_IO_BASE 0x40000000 +#define DRAM_BASE 0x80000000 + +#define MCAUSE_INTERRUPT 0x80000000 + +/* page table entry (PTE) fields */ +#define PTE_V 0x001 /* Valid */ +#define PTE_R 0x002 /* Read */ +#define PTE_W 0x004 /* Write */ +#define PTE_X 0x008 /* Execute */ +#define PTE_U 0x010 /* User */ +#define PTE_G 0x020 /* Global */ +#define PTE_A 0x040 /* Accessed */ +#define PTE_D 0x080 /* Dirty */ +#define PTE_SOFT 0x300 /* Reserved for Software */ + +#define PTE_PPN_SHIFT 10 + +#define PTE_TABLE(PTE) (((PTE) & (PTE_V | PTE_R | PTE_W | PTE_X)) == PTE_V) + +#ifdef __riscv + +#if __riscv_xlen == 64 +# define MSTATUS_SD MSTATUS64_SD +# define SSTATUS_SD SSTATUS64_SD +# define RISCV_PGLEVEL_BITS 9 +# define SATP_MODE SATP64_MODE +#else +# define MSTATUS_SD MSTATUS32_SD +# define SSTATUS_SD SSTATUS32_SD +# define RISCV_PGLEVEL_BITS 10 +# define SATP_MODE SATP32_MODE +#endif +#define RISCV_PGSHIFT 12 +#define RISCV_PGSIZE (1 << RISCV_PGSHIFT) + +#ifndef __ASSEMBLER__ + +#ifdef __GNUC__ + +#define read_csr(reg) ({ unsigned long __tmp; \ + asm volatile ("csrr %0, " #reg : "=r"(__tmp)); \ + __tmp; }) + +#define write_csr(reg, val) ({ \ + asm volatile ("csrw " #reg ", %0" :: "rK"(val)); }) + +#define swap_csr(reg, val) ({ unsigned long __tmp; \ + asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "rK"(val)); \ + __tmp; }) + +#define set_csr(reg, bit) ({ unsigned long __tmp; \ + asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "rK"(bit)); \ + __tmp; }) + +#define clear_csr(reg, bit) ({ unsigned long __tmp; \ + asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "rK"(bit)); \ + __tmp; }) + +#define rdtime() read_csr(time) +#define rdcycle() read_csr(cycle) +#define rdinstret() read_csr(instret) + +#endif + +#endif + +#endif + +#endif +/* Automatically generated by parse_opcodes. */ +#ifndef RISCV_ENCODING_H +#define RISCV_ENCODING_H +#define MATCH_CUSTOM0 0xb +#define MASK_CUSTOM0 0x707f +#define MATCH_CUSTOM0_RS1 0x200b +#define MASK_CUSTOM0_RS1 0x707f +#define MATCH_CUSTOM0_RS1_RS2 0x300b +#define MASK_CUSTOM0_RS1_RS2 0x707f +#define MATCH_CUSTOM0_RD 0x400b +#define MASK_CUSTOM0_RD 0x707f +#define MATCH_CUSTOM0_RD_RS1 0x600b +#define MASK_CUSTOM0_RD_RS1 0x707f +#define MATCH_CUSTOM0_RD_RS1_RS2 0x700b +#define MASK_CUSTOM0_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM1 0x2b +#define MASK_CUSTOM1 0x707f +#define MATCH_CUSTOM1_RS1 0x202b +#define MASK_CUSTOM1_RS1 0x707f +#define MATCH_CUSTOM1_RS1_RS2 0x302b +#define MASK_CUSTOM1_RS1_RS2 0x707f +#define MATCH_CUSTOM1_RD 0x402b +#define MASK_CUSTOM1_RD 0x707f +#define MATCH_CUSTOM1_RD_RS1 0x602b +#define MASK_CUSTOM1_RD_RS1 0x707f +#define MATCH_CUSTOM1_RD_RS1_RS2 0x702b +#define MASK_CUSTOM1_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM2 0x5b +#define MASK_CUSTOM2 0x707f +#define MATCH_CUSTOM2_RS1 0x205b +#define MASK_CUSTOM2_RS1 0x707f +#define MATCH_CUSTOM2_RS1_RS2 0x305b +#define MASK_CUSTOM2_RS1_RS2 0x707f +#define MATCH_CUSTOM2_RD 0x405b +#define MASK_CUSTOM2_RD 0x707f +#define MATCH_CUSTOM2_RD_RS1 0x605b +#define MASK_CUSTOM2_RD_RS1 0x707f +#define MATCH_CUSTOM2_RD_RS1_RS2 0x705b +#define MASK_CUSTOM2_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM3 0x7b +#define MASK_CUSTOM3 0x707f +#define MATCH_CUSTOM3_RS1 0x207b +#define MASK_CUSTOM3_RS1 0x707f +#define MATCH_CUSTOM3_RS1_RS2 0x307b +#define MASK_CUSTOM3_RS1_RS2 0x707f +#define MATCH_CUSTOM3_RD 0x407b +#define MASK_CUSTOM3_RD 0x707f +#define MATCH_CUSTOM3_RD_RS1 0x607b +#define MASK_CUSTOM3_RD_RS1 0x707f +#define MATCH_CUSTOM3_RD_RS1_RS2 0x707b +#define MASK_CUSTOM3_RD_RS1_RS2 0x707f +#define MATCH_DMSRC 0x2b +#define MASK_DMSRC 0xfe007fff +#define MATCH_DMDST 0x200002b +#define MASK_DMDST 0xfe007fff +#define MATCH_DMCPYI 0x400002b +#define MASK_DMCPYI 0xfe00707f +#define MATCH_DMCPY 0x600002b +#define MASK_DMCPY 0xfe00707f +#define MATCH_DMSTATI 0x800002b +#define MASK_DMSTATI 0xfe0ff07f +#define MATCH_DMSTAT 0xa00002b +#define MASK_DMSTAT 0xfe0ff07f +#define MATCH_DMSTR 0xc00002b +#define MASK_DMSTR 0xfe007fff +#define MATCH_DMREP 0xe00002b +#define MASK_DMREP 0xfff07fff +#define MATCH_FREP_O 0x8b +#define MASK_FREP_O 0xff +#define MATCH_FREP_I 0xb +#define MASK_FREP_I 0xff +#define MATCH_IREP 0x3f +#define MASK_IREP 0x7f +#define MATCH_IMV_X_W 0xe000005b +#define MASK_IMV_X_W 0xfff0707f +#define MATCH_IMV_W_X 0xf000005b +#define MASK_IMV_W_X 0xfff0707f +#define MATCH_IADDI 0x7b +#define MASK_IADDI 0x707f +#define MATCH_ISLLI 0x107b +#define MASK_ISLLI 0xfc00707f +#define MATCH_ISLTI 0x207b +#define MASK_ISLTI 0x707f +#define MATCH_ISLTIU 0x307b +#define MASK_ISLTIU 0x707f +#define MATCH_IXORI 0x407b +#define MASK_IXORI 0x707f +#define MATCH_ISRLI 0x507b +#define MASK_ISRLI 0xfc00707f +#define MATCH_ISRAI 0x4000507b +#define MASK_ISRAI 0xfc00707f +#define MATCH_IORI 0x607b +#define MASK_IORI 0x707f +#define MATCH_IANDI 0x707b +#define MASK_IANDI 0x707f +#define MATCH_IADD 0x5b +#define MASK_IADD 0xfe00707f +#define MATCH_ISUB 0x4000005b +#define MASK_ISUB 0xfe00707f +#define MATCH_ISLL 0x105b +#define MASK_ISLL 0xfe00707f +#define MATCH_ISLT 0x205b +#define MASK_ISLT 0xfe00707f +#define MATCH_ISLTU 0x305b +#define MASK_ISLTU 0xfe00707f +#define MATCH_IXOR 0x405b +#define MASK_IXOR 0xfe00707f +#define MATCH_ISRL 0x505b +#define MASK_ISRL 0xfe00707f +#define MATCH_ISRA 0x4000505b +#define MASK_ISRA 0xfe00707f +#define MATCH_IOR 0x605b +#define MASK_IOR 0xfe00707f +#define MATCH_IAND 0x705b +#define MASK_IAND 0xfe00707f +#define MATCH_IMADD 0x200005b +#define MASK_IMADD 0x600707f +#define MATCH_IMSUB 0x200105b +#define MASK_IMSUB 0x600707f +#define MATCH_INMSUB 0x200205b +#define MASK_INMSUB 0x600707f +#define MATCH_INMADD 0x200305b +#define MASK_INMADD 0x600707f +#define MATCH_IMUL 0x400005b +#define MASK_IMUL 0xfe00707f +#define MATCH_IMULH 0x400105b +#define MASK_IMULH 0xfe00707f +#define MATCH_IMULHSU 0x400205b +#define MASK_IMULHSU 0xfe00707f +#define MATCH_IMULHU 0x400305b +#define MASK_IMULHU 0xfe00707f +#define MATCH_IANDN 0x4000705b +#define MASK_IANDN 0xfe00707f +#define MATCH_IORN 0x4000605b +#define MASK_IORN 0xfe00707f +#define MATCH_IXNOR 0x4000405b +#define MASK_IXNOR 0xfe00707f +#define MATCH_ISLO 0x2000105b +#define MASK_ISLO 0xfe00707f +#define MATCH_ISRO 0x2000505b +#define MASK_ISRO 0xfe00707f +#define MATCH_IROL 0x6000105b +#define MASK_IROL 0xfe00707f +#define MATCH_IROR 0x6000505b +#define MASK_IROR 0xfe00707f +#define MATCH_ISBCLR 0x4800105b +#define MASK_ISBCLR 0xfe00707f +#define MATCH_ISBSET 0x2800105b +#define MASK_ISBSET 0xfe00707f +#define MATCH_ISBINV 0x6800105b +#define MASK_ISBINV 0xfe00707f +#define MATCH_ISBEXT 0x4800505b +#define MASK_ISBEXT 0xfe00707f +#define MATCH_IGORC 0x2800505b +#define MASK_IGORC 0xfe00707f +#define MATCH_IGREV 0x6800505b +#define MASK_IGREV 0xfe00707f +#define MATCH_ISLOI 0x2000107b +#define MASK_ISLOI 0xfc00707f +#define MATCH_ISROI 0x2000507b +#define MASK_ISROI 0xfc00707f +#define MATCH_IRORI 0x6000507b +#define MASK_IRORI 0xfc00707f +#define MATCH_ISBCLRI 0x4800107b +#define MASK_ISBCLRI 0xfc00707f +#define MATCH_ISBSETI 0x2800107b +#define MASK_ISBSETI 0xfc00707f +#define MATCH_ISBINVI 0x6800107b +#define MASK_ISBINVI 0xfc00707f +#define MATCH_ISBEXTI 0x4800507b +#define MASK_ISBEXTI 0xfc00707f +#define MATCH_IGORCI 0x2800507b +#define MASK_IGORCI 0xfc00707f +#define MATCH_IGREVI 0x6800507b +#define MASK_IGREVI 0xfc00707f +#define MATCH_ICLZ 0x6000205b +#define MASK_ICLZ 0xfff0707f +#define MATCH_ICTZ 0x6010205b +#define MASK_ICTZ 0xfff0707f +#define MATCH_IPCNT 0x6020205b +#define MASK_IPCNT 0xfff0707f +#define MATCH_ISEXT_B 0x6040205b +#define MASK_ISEXT_B 0xfff0707f +#define MATCH_ISEXT_H 0x6050205b +#define MASK_ISEXT_H 0xfff0707f +#define MATCH_ICRC32_B 0x6100105b +#define MASK_ICRC32_B 0xfff0707f +#define MATCH_ICRC32_H 0x6110105b +#define MASK_ICRC32_H 0xfff0707f +#define MATCH_ICRC32_W 0x6120105b +#define MASK_ICRC32_W 0xfff0707f +#define MATCH_ICRC32C_B 0x6180105b +#define MASK_ICRC32C_B 0xfff0707f +#define MATCH_ICRC32C_H 0x6190105b +#define MASK_ICRC32C_H 0xfff0707f +#define MATCH_ICRC32C_W 0x61a0105b +#define MASK_ICRC32C_W 0xfff0707f +#define MATCH_ISH1ADD 0x2000205b +#define MASK_ISH1ADD 0xfe00707f +#define MATCH_ISH2ADD 0x2000405b +#define MASK_ISH2ADD 0xfe00707f +#define MATCH_ISH3ADD 0x2000605b +#define MASK_ISH3ADD 0xfe00707f +#define MATCH_ICLMUL 0xa00105b +#define MASK_ICLMUL 0xfe00707f +#define MATCH_ICLMULR 0xa00205b +#define MASK_ICLMULR 0xfe00707f +#define MATCH_ICLMULH 0xa00305b +#define MASK_ICLMULH 0xfe00707f +#define MATCH_IMIN 0xa00405b +#define MASK_IMIN 0xfe00707f +#define MATCH_IMAX 0xa00505b +#define MASK_IMAX 0xfe00707f +#define MATCH_IMINU 0xa00605b +#define MASK_IMINU 0xfe00707f +#define MATCH_IMAXU 0xa00705b +#define MASK_IMAXU 0xfe00707f +#define MATCH_ISHFL 0x800105b +#define MASK_ISHFL 0xfe00707f +#define MATCH_IUNSHFL 0x800505b +#define MASK_IUNSHFL 0xfe00707f +#define MATCH_IBEXT 0x800605b +#define MASK_IBEXT 0xfe00707f +#define MATCH_IBDEP 0x4800605b +#define MASK_IBDEP 0xfe00707f +#define MATCH_IPACK 0x800405b +#define MASK_IPACK 0xfe00707f +#define MATCH_IPACKU 0x4800405b +#define MASK_IPACKU 0xfe00707f +#define MATCH_IPACKH 0x800705b +#define MASK_IPACKH 0xfe00707f +#define MATCH_IBFP 0x4800705b +#define MASK_IBFP 0xfe00707f +#define MATCH_ISHFLI 0x800107b +#define MASK_ISHFLI 0xfe00707f +#define MATCH_IUNSHFLI 0x800507b +#define MASK_IUNSHFLI 0xfe00707f +#define MATCH_SLLI_RV32 0x1013 +#define MASK_SLLI_RV32 0xfe00707f +#define MATCH_SRLI_RV32 0x5013 +#define MASK_SRLI_RV32 0xfe00707f +#define MATCH_SRAI_RV32 0x40005013 +#define MASK_SRAI_RV32 0xfe00707f +#define MATCH_FRFLAGS 0x102073 +#define MASK_FRFLAGS 0xfffff07f +#define MATCH_FSFLAGS 0x101073 +#define MASK_FSFLAGS 0xfff0707f +#define MATCH_FSFLAGSI 0x105073 +#define MASK_FSFLAGSI 0xfff0707f +#define MATCH_FRRM 0x202073 +#define MASK_FRRM 0xfffff07f +#define MATCH_FSRM 0x201073 +#define MASK_FSRM 0xfff0707f +#define MATCH_FSRMI 0x205073 +#define MASK_FSRMI 0xfff0707f +#define MATCH_FSCSR 0x301073 +#define MASK_FSCSR 0xfff0707f +#define MATCH_FRCSR 0x302073 +#define MASK_FRCSR 0xfffff07f +#define MATCH_RDCYCLE 0xc0002073 +#define MASK_RDCYCLE 0xfffff07f +#define MATCH_RDTIME 0xc0102073 +#define MASK_RDTIME 0xfffff07f +#define MATCH_RDINSTRET 0xc0202073 +#define MASK_RDINSTRET 0xfffff07f +#define MATCH_RDCYCLEH 0xc8002073 +#define MASK_RDCYCLEH 0xfffff07f +#define MATCH_RDTIMEH 0xc8102073 +#define MASK_RDTIMEH 0xfffff07f +#define MATCH_RDINSTRETH 0xc8202073 +#define MASK_RDINSTRETH 0xfffff07f +#define MATCH_SCALL 0x73 +#define MASK_SCALL 0xffffffff +#define MATCH_SBREAK 0x100073 +#define MASK_SBREAK 0xffffffff +#define MATCH_FMV_X_S 0xe0000053 +#define MASK_FMV_X_S 0xfff0707f +#define MATCH_FMV_S_X 0xf0000053 +#define MASK_FMV_S_X 0xfff0707f +#define MATCH_FENCE_TSO 0x8330000f +#define MASK_FENCE_TSO 0xfff0707f +#define MATCH_PAUSE 0x100000f +#define MASK_PAUSE 0xffffffff +#define MATCH_MXMACC_VV 0xb0002057 +#define MASK_MXMACC_VV 0xfc00707f +#define MATCH_MXMACC_VX 0xb0006057 +#define MASK_MXMACC_VX 0xfc00707f +#define MATCH_MXDOTP_VV 0xb8002057 +#define MASK_MXDOTP_VV 0xfc00707f +#define MATCH_MXDOTP_VX 0xb8006057 +#define MASK_MXDOTP_VX 0xfc00707f +#define MATCH_MXFMACC_VV 0xdc001057 +#define MASK_MXFMACC_VV 0xfc00707f +#define MATCH_MXFMACC_VF 0xdc005057 +#define MASK_MXFMACC_VF 0xfc00707f +#define MATCH_MLE8_V_A 0x24000077 +#define MASK_MLE8_V_A 0xfe00707f +#define MATCH_MLE8_V_B 0x28000077 +#define MASK_MLE8_V_B 0xfe00707f +#define MATCH_MLE8_V_C 0x77 +#define MASK_MLE8_V_C 0xfe00707f +#define MATCH_MLE16_V_A 0x24005077 +#define MASK_MLE16_V_A 0xfe00707f +#define MATCH_MLE16_V_B 0x28005077 +#define MASK_MLE16_V_B 0xfe00707f +#define MATCH_MLE16_V_C 0x5077 +#define MASK_MLE16_V_C 0xfe00707f +#define MATCH_MLE32_V_A 0x24006077 +#define MASK_MLE32_V_A 0xfe00707f +#define MATCH_MLE32_V_B 0x28006077 +#define MASK_MLE32_V_B 0xfe00707f +#define MATCH_MLE32_V_C 0x6077 +#define MASK_MLE32_V_C 0xfe00707f +#define MATCH_MLE64_V_A 0x24007077 +#define MASK_MLE64_V_A 0xfe00707f +#define MATCH_MLE64_V_B 0x28007077 +#define MASK_MLE64_V_B 0xfe00707f +#define MATCH_MLE64_V_C 0x7077 +#define MASK_MLE64_V_C 0xfe00707f +#define MATCH_MSE8_V_A 0x26000077 +#define MASK_MSE8_V_A 0xfe00707f +#define MATCH_MSE8_V_B 0x2a000077 +#define MASK_MSE8_V_B 0xfe00707f +#define MATCH_MSE8_V_C 0x2000077 +#define MASK_MSE8_V_C 0xfe00707f +#define MATCH_MSE16_V_A 0x26005077 +#define MASK_MSE16_V_A 0xfe00707f +#define MATCH_MSE16_V_B 0x2a005077 +#define MASK_MSE16_V_B 0xfe00707f +#define MATCH_MSE16_V_C 0x2005077 +#define MASK_MSE16_V_C 0xfe00707f +#define MATCH_MSE32_V_A 0x26006077 +#define MASK_MSE32_V_A 0xfe00707f +#define MATCH_MSE32_V_B 0x2a006077 +#define MASK_MSE32_V_B 0xfe00707f +#define MATCH_MSE32_V_C 0x2006077 +#define MASK_MSE32_V_C 0xfe00707f +#define MATCH_MSE64_V_A 0x26007077 +#define MASK_MSE64_V_A 0xfe00707f +#define MATCH_MSE64_V_B 0x2a007077 +#define MASK_MSE64_V_B 0xfe00707f +#define MATCH_MSE64_V_C 0x2007077 +#define MASK_MSE64_V_C 0xfe00707f +#define MATCH_MSETTILEM 0x30007077 +#define MASK_MSETTILEM 0xfff0707f +#define MATCH_MSETTILEK 0x50007077 +#define MASK_MSETTILEK 0xfff0707f +#define MATCH_MSETTILEN 0x70007077 +#define MASK_MSETTILEN 0xfff0707f +#define MATCH_AMOADD_W 0x202f +#define MASK_AMOADD_W 0xf800707f +#define MATCH_AMOXOR_W 0x2000202f +#define MASK_AMOXOR_W 0xf800707f +#define MATCH_AMOOR_W 0x4000202f +#define MASK_AMOOR_W 0xf800707f +#define MATCH_AMOAND_W 0x6000202f +#define MASK_AMOAND_W 0xf800707f +#define MATCH_AMOMIN_W 0x8000202f +#define MASK_AMOMIN_W 0xf800707f +#define MATCH_AMOMAX_W 0xa000202f +#define MASK_AMOMAX_W 0xf800707f +#define MATCH_AMOMINU_W 0xc000202f +#define MASK_AMOMINU_W 0xf800707f +#define MATCH_AMOMAXU_W 0xe000202f +#define MASK_AMOMAXU_W 0xf800707f +#define MATCH_AMOSWAP_W 0x800202f +#define MASK_AMOSWAP_W 0xf800707f +#define MATCH_LR_W 0x1000202f +#define MASK_LR_W 0xf9f0707f +#define MATCH_SC_W 0x1800202f +#define MASK_SC_W 0xf800707f +#define MATCH_ANDN 0x40007033 +#define MASK_ANDN 0xfe00707f +#define MATCH_ORN 0x40006033 +#define MASK_ORN 0xfe00707f +#define MATCH_XNOR 0x40004033 +#define MASK_XNOR 0xfe00707f +#define MATCH_SLO 0x20001033 +#define MASK_SLO 0xfe00707f +#define MATCH_SRO 0x20005033 +#define MASK_SRO 0xfe00707f +#define MATCH_ROL 0x60001033 +#define MASK_ROL 0xfe00707f +#define MATCH_ROR 0x60005033 +#define MASK_ROR 0xfe00707f +#define MATCH_SBCLR 0x48001033 +#define MASK_SBCLR 0xfe00707f +#define MATCH_SBSET 0x28001033 +#define MASK_SBSET 0xfe00707f +#define MATCH_SBINV 0x68001033 +#define MASK_SBINV 0xfe00707f +#define MATCH_SBEXT 0x48005033 +#define MASK_SBEXT 0xfe00707f +#define MATCH_GORC 0x28005033 +#define MASK_GORC 0xfe00707f +#define MATCH_GREV 0x68005033 +#define MASK_GREV 0xfe00707f +#define MATCH_SLOI 0x20001013 +#define MASK_SLOI 0xfc00707f +#define MATCH_SROI 0x20005013 +#define MASK_SROI 0xfc00707f +#define MATCH_RORI 0x60005013 +#define MASK_RORI 0xfc00707f +#define MATCH_SBCLRI 0x48001013 +#define MASK_SBCLRI 0xfc00707f +#define MATCH_SBSETI 0x28001013 +#define MASK_SBSETI 0xfc00707f +#define MATCH_SBINVI 0x68001013 +#define MASK_SBINVI 0xfc00707f +#define MATCH_SBEXTI 0x48005013 +#define MASK_SBEXTI 0xfc00707f +#define MATCH_GORCI 0x28005013 +#define MASK_GORCI 0xfc00707f +#define MATCH_GREVI 0x68005013 +#define MASK_GREVI 0xfc00707f +#define MATCH_CMIX 0x6001033 +#define MASK_CMIX 0x600707f +#define MATCH_CMOV 0x6005033 +#define MASK_CMOV 0x600707f +#define MATCH_FSL 0x4001033 +#define MASK_FSL 0x600707f +#define MATCH_FSR 0x4005033 +#define MASK_FSR 0x600707f +#define MATCH_FSRI 0x4005013 +#define MASK_FSRI 0x400707f +#define MATCH_CLZ 0x60001013 +#define MASK_CLZ 0xfff0707f +#define MATCH_CTZ 0x60101013 +#define MASK_CTZ 0xfff0707f +#define MATCH_PCNT 0x60201013 +#define MASK_PCNT 0xfff0707f +#define MATCH_SEXT_B 0x60401013 +#define MASK_SEXT_B 0xfff0707f +#define MATCH_SEXT_H 0x60501013 +#define MASK_SEXT_H 0xfff0707f +#define MATCH_CRC32_B 0x61001013 +#define MASK_CRC32_B 0xfff0707f +#define MATCH_CRC32_H 0x61101013 +#define MASK_CRC32_H 0xfff0707f +#define MATCH_CRC32_W 0x61201013 +#define MASK_CRC32_W 0xfff0707f +#define MATCH_CRC32C_B 0x61801013 +#define MASK_CRC32C_B 0xfff0707f +#define MATCH_CRC32C_H 0x61901013 +#define MASK_CRC32C_H 0xfff0707f +#define MATCH_CRC32C_W 0x61a01013 +#define MASK_CRC32C_W 0xfff0707f +#define MATCH_SH1ADD 0x20002033 +#define MASK_SH1ADD 0xfe00707f +#define MATCH_SH2ADD 0x20004033 +#define MASK_SH2ADD 0xfe00707f +#define MATCH_SH3ADD 0x20006033 +#define MASK_SH3ADD 0xfe00707f +#define MATCH_CLMUL 0xa001033 +#define MASK_CLMUL 0xfe00707f +#define MATCH_CLMULR 0xa002033 +#define MASK_CLMULR 0xfe00707f +#define MATCH_CLMULH 0xa003033 +#define MASK_CLMULH 0xfe00707f +#define MATCH_MIN 0xa004033 +#define MASK_MIN 0xfe00707f +#define MATCH_MAX 0xa005033 +#define MASK_MAX 0xfe00707f +#define MATCH_MINU 0xa006033 +#define MASK_MINU 0xfe00707f +#define MATCH_MAXU 0xa007033 +#define MASK_MAXU 0xfe00707f +#define MATCH_SHFL 0x8001033 +#define MASK_SHFL 0xfe00707f +#define MATCH_UNSHFL 0x8005033 +#define MASK_UNSHFL 0xfe00707f +#define MATCH_BEXT 0x8006033 +#define MASK_BEXT 0xfe00707f +#define MATCH_BDEP 0x48006033 +#define MASK_BDEP 0xfe00707f +#define MATCH_PACK 0x8004033 +#define MASK_PACK 0xfe00707f +#define MATCH_PACKU 0x48004033 +#define MASK_PACKU 0xfe00707f +#define MATCH_PACKH 0x8007033 +#define MASK_PACKH 0xfe00707f +#define MATCH_BFP 0x48007033 +#define MASK_BFP 0xfe00707f +#define MATCH_SHFLI 0x8001013 +#define MASK_SHFLI 0xfe00707f +#define MATCH_UNSHFLI 0x8005013 +#define MASK_UNSHFLI 0xfe00707f +#define MATCH_C_SRLI_RV32 0x8001 +#define MASK_C_SRLI_RV32 0xfc03 +#define MATCH_C_SRAI_RV32 0x8401 +#define MASK_C_SRAI_RV32 0xfc03 +#define MATCH_C_SLLI_RV32 0x2 +#define MASK_C_SLLI_RV32 0xf003 +#define MATCH_FADD_D 0x2000053 +#define MASK_FADD_D 0xfe00007f +#define MATCH_FSUB_D 0xa000053 +#define MASK_FSUB_D 0xfe00007f +#define MATCH_FMUL_D 0x12000053 +#define MASK_FMUL_D 0xfe00007f +#define MATCH_FDIV_D 0x1a000053 +#define MASK_FDIV_D 0xfe00007f +#define MATCH_FSGNJ_D 0x22000053 +#define MASK_FSGNJ_D 0xfe00707f +#define MATCH_FSGNJN_D 0x22001053 +#define MASK_FSGNJN_D 0xfe00707f +#define MATCH_FSGNJX_D 0x22002053 +#define MASK_FSGNJX_D 0xfe00707f +#define MATCH_FMIN_D 0x2a000053 +#define MASK_FMIN_D 0xfe00707f +#define MATCH_FMAX_D 0x2a001053 +#define MASK_FMAX_D 0xfe00707f +#define MATCH_FCVT_S_D 0x40100053 +#define MASK_FCVT_S_D 0xfff0007f +#define MATCH_FCVT_D_S 0x42000053 +#define MASK_FCVT_D_S 0xfff0007f +#define MATCH_FSQRT_D 0x5a000053 +#define MASK_FSQRT_D 0xfff0007f +#define MATCH_FLE_D 0xa2000053 +#define MASK_FLE_D 0xfe00707f +#define MATCH_FLT_D 0xa2001053 +#define MASK_FLT_D 0xfe00707f +#define MATCH_FEQ_D 0xa2002053 +#define MASK_FEQ_D 0xfe00707f +#define MATCH_FCVT_W_D 0xc2000053 +#define MASK_FCVT_W_D 0xfff0007f +#define MATCH_FCVT_WU_D 0xc2100053 +#define MASK_FCVT_WU_D 0xfff0007f +#define MATCH_FCLASS_D 0xe2001053 +#define MASK_FCLASS_D 0xfff0707f +#define MATCH_FCVT_D_W 0xd2000053 +#define MASK_FCVT_D_W 0xfff0007f +#define MATCH_FCVT_D_WU 0xd2100053 +#define MASK_FCVT_D_WU 0xfff0007f +#define MATCH_FLD 0x3007 +#define MASK_FLD 0x707f +#define MATCH_FSD 0x3027 +#define MASK_FSD 0x707f +#define MATCH_FMADD_D 0x2000043 +#define MASK_FMADD_D 0x600007f +#define MATCH_FMSUB_D 0x2000047 +#define MASK_FMSUB_D 0x600007f +#define MATCH_FNMSUB_D 0x200004b +#define MASK_FNMSUB_D 0x600007f +#define MATCH_FNMADD_D 0x200004f +#define MASK_FNMADD_D 0x600007f +#define MATCH_FADD_S 0x53 +#define MASK_FADD_S 0xfe00007f +#define MATCH_FSUB_S 0x8000053 +#define MASK_FSUB_S 0xfe00007f +#define MATCH_FMUL_S 0x10000053 +#define MASK_FMUL_S 0xfe00007f +#define MATCH_FDIV_S 0x18000053 +#define MASK_FDIV_S 0xfe00007f +#define MATCH_FSGNJ_S 0x20000053 +#define MASK_FSGNJ_S 0xfe00707f +#define MATCH_FSGNJN_S 0x20001053 +#define MASK_FSGNJN_S 0xfe00707f +#define MATCH_FSGNJX_S 0x20002053 +#define MASK_FSGNJX_S 0xfe00707f +#define MATCH_FMIN_S 0x28000053 +#define MASK_FMIN_S 0xfe00707f +#define MATCH_FMAX_S 0x28001053 +#define MASK_FMAX_S 0xfe00707f +#define MATCH_FSQRT_S 0x58000053 +#define MASK_FSQRT_S 0xfff0007f +#define MATCH_FLE_S 0xa0000053 +#define MASK_FLE_S 0xfe00707f +#define MATCH_FLT_S 0xa0001053 +#define MASK_FLT_S 0xfe00707f +#define MATCH_FEQ_S 0xa0002053 +#define MASK_FEQ_S 0xfe00707f +#define MATCH_FCVT_W_S 0xc0000053 +#define MASK_FCVT_W_S 0xfff0007f +#define MATCH_FCVT_WU_S 0xc0100053 +#define MASK_FCVT_WU_S 0xfff0007f +#define MATCH_FMV_X_W 0xe0000053 +#define MASK_FMV_X_W 0xfff0707f +#define MATCH_FCLASS_S 0xe0001053 +#define MASK_FCLASS_S 0xfff0707f +#define MATCH_FCVT_S_W 0xd0000053 +#define MASK_FCVT_S_W 0xfff0007f +#define MATCH_FCVT_S_WU 0xd0100053 +#define MASK_FCVT_S_WU 0xfff0007f +#define MATCH_FMV_W_X 0xf0000053 +#define MASK_FMV_W_X 0xfff0707f +#define MATCH_FLW 0x2007 +#define MASK_FLW 0x707f +#define MATCH_FSW 0x2027 +#define MASK_FSW 0x707f +#define MATCH_FMADD_S 0x43 +#define MASK_FMADD_S 0x600007f +#define MATCH_FMSUB_S 0x47 +#define MASK_FMSUB_S 0x600007f +#define MATCH_FNMSUB_S 0x4b +#define MASK_FNMSUB_S 0x600007f +#define MATCH_FNMADD_S 0x4f +#define MASK_FNMADD_S 0x600007f +#define MATCH_HFENCE_VVMA 0x22000073 +#define MASK_HFENCE_VVMA 0xfe007fff +#define MATCH_HFENCE_GVMA 0x62000073 +#define MASK_HFENCE_GVMA 0xfe007fff +#define MATCH_HLV_B 0x60004073 +#define MASK_HLV_B 0xfff0707f +#define MATCH_HLV_BU 0x60104073 +#define MASK_HLV_BU 0xfff0707f +#define MATCH_HLV_H 0x64004073 +#define MASK_HLV_H 0xfff0707f +#define MATCH_HLV_HU 0x64104073 +#define MASK_HLV_HU 0xfff0707f +#define MATCH_HLVX_HU 0x64304073 +#define MASK_HLVX_HU 0xfff0707f +#define MATCH_HLV_W 0x68004073 +#define MASK_HLV_W 0xfff0707f +#define MATCH_HLVX_WU 0x68304073 +#define MASK_HLVX_WU 0xfff0707f +#define MATCH_HSV_B 0x62004073 +#define MASK_HSV_B 0xfe007fff +#define MATCH_HSV_H 0x66004073 +#define MASK_HSV_H 0xfe007fff +#define MATCH_HSV_W 0x6a004073 +#define MASK_HSV_W 0xfe007fff +#define MATCH_BEQ 0x63 +#define MASK_BEQ 0x707f +#define MATCH_BNE 0x1063 +#define MASK_BNE 0x707f +#define MATCH_BLT 0x4063 +#define MASK_BLT 0x707f +#define MATCH_BGE 0x5063 +#define MASK_BGE 0x707f +#define MATCH_BLTU 0x6063 +#define MASK_BLTU 0x707f +#define MATCH_BGEU 0x7063 +#define MASK_BGEU 0x707f +#define MATCH_JALR 0x67 +#define MASK_JALR 0x707f +#define MATCH_JAL 0x6f +#define MASK_JAL 0x7f +#define MATCH_LUI 0x37 +#define MASK_LUI 0x7f +#define MATCH_AUIPC 0x17 +#define MASK_AUIPC 0x7f +#define MATCH_ADDI 0x13 +#define MASK_ADDI 0x707f +#define MATCH_SLLI 0x1013 +#define MASK_SLLI 0xfc00707f +#define MATCH_SLTI 0x2013 +#define MASK_SLTI 0x707f +#define MATCH_SLTIU 0x3013 +#define MASK_SLTIU 0x707f +#define MATCH_XORI 0x4013 +#define MASK_XORI 0x707f +#define MATCH_SRLI 0x5013 +#define MASK_SRLI 0xfc00707f +#define MATCH_SRAI 0x40005013 +#define MASK_SRAI 0xfc00707f +#define MATCH_ORI 0x6013 +#define MASK_ORI 0x707f +#define MATCH_ANDI 0x7013 +#define MASK_ANDI 0x707f +#define MATCH_ADD 0x33 +#define MASK_ADD 0xfe00707f +#define MATCH_SUB 0x40000033 +#define MASK_SUB 0xfe00707f +#define MATCH_SLL 0x1033 +#define MASK_SLL 0xfe00707f +#define MATCH_SLT 0x2033 +#define MASK_SLT 0xfe00707f +#define MATCH_SLTU 0x3033 +#define MASK_SLTU 0xfe00707f +#define MATCH_XOR 0x4033 +#define MASK_XOR 0xfe00707f +#define MATCH_SRL 0x5033 +#define MASK_SRL 0xfe00707f +#define MATCH_SRA 0x40005033 +#define MASK_SRA 0xfe00707f +#define MATCH_OR 0x6033 +#define MASK_OR 0xfe00707f +#define MATCH_AND 0x7033 +#define MASK_AND 0xfe00707f +#define MATCH_LB 0x3 +#define MASK_LB 0x707f +#define MATCH_LH 0x1003 +#define MASK_LH 0x707f +#define MATCH_LW 0x2003 +#define MASK_LW 0x707f +#define MATCH_LBU 0x4003 +#define MASK_LBU 0x707f +#define MATCH_LHU 0x5003 +#define MASK_LHU 0x707f +#define MATCH_SB 0x23 +#define MASK_SB 0x707f +#define MATCH_SH 0x1023 +#define MASK_SH 0x707f +#define MATCH_SW 0x2023 +#define MASK_SW 0x707f +#define MATCH_FENCE 0xf +#define MASK_FENCE 0x707f +#define MATCH_FENCE_I 0x100f +#define MASK_FENCE_I 0x707f +#define MATCH_MUL 0x2000033 +#define MASK_MUL 0xfe00707f +#define MATCH_MULH 0x2001033 +#define MASK_MULH 0xfe00707f +#define MATCH_MULHSU 0x2002033 +#define MASK_MULHSU 0xfe00707f +#define MATCH_MULHU 0x2003033 +#define MASK_MULHU 0xfe00707f +#define MATCH_DIV 0x2004033 +#define MASK_DIV 0xfe00707f +#define MATCH_DIVU 0x2005033 +#define MASK_DIVU 0xfe00707f +#define MATCH_REM 0x2006033 +#define MASK_REM 0xfe00707f +#define MATCH_REMU 0x2007033 +#define MASK_REMU 0xfe00707f +#define MATCH_FADD_Q 0x6000053 +#define MASK_FADD_Q 0xfe00007f +#define MATCH_FSUB_Q 0xe000053 +#define MASK_FSUB_Q 0xfe00007f +#define MATCH_FMUL_Q 0x16000053 +#define MASK_FMUL_Q 0xfe00007f +#define MATCH_FDIV_Q 0x1e000053 +#define MASK_FDIV_Q 0xfe00007f +#define MATCH_FSGNJ_Q 0x26000053 +#define MASK_FSGNJ_Q 0xfe00707f +#define MATCH_FSGNJN_Q 0x26001053 +#define MASK_FSGNJN_Q 0xfe00707f +#define MATCH_FSGNJX_Q 0x26002053 +#define MASK_FSGNJX_Q 0xfe00707f +#define MATCH_FMIN_Q 0x2e000053 +#define MASK_FMIN_Q 0xfe00707f +#define MATCH_FMAX_Q 0x2e001053 +#define MASK_FMAX_Q 0xfe00707f +#define MATCH_FCVT_S_Q 0x40300053 +#define MASK_FCVT_S_Q 0xfff0007f +#define MATCH_FCVT_Q_S 0x46000053 +#define MASK_FCVT_Q_S 0xfff0007f +#define MATCH_FCVT_D_Q 0x42300053 +#define MASK_FCVT_D_Q 0xfff0007f +#define MATCH_FCVT_Q_D 0x46100053 +#define MASK_FCVT_Q_D 0xfff0007f +#define MATCH_FSQRT_Q 0x5e000053 +#define MASK_FSQRT_Q 0xfff0007f +#define MATCH_FLE_Q 0xa6000053 +#define MASK_FLE_Q 0xfe00707f +#define MATCH_FLT_Q 0xa6001053 +#define MASK_FLT_Q 0xfe00707f +#define MATCH_FEQ_Q 0xa6002053 +#define MASK_FEQ_Q 0xfe00707f +#define MATCH_FCVT_W_Q 0xc6000053 +#define MASK_FCVT_W_Q 0xfff0007f +#define MATCH_FCVT_WU_Q 0xc6100053 +#define MASK_FCVT_WU_Q 0xfff0007f +#define MATCH_FCLASS_Q 0xe6001053 +#define MASK_FCLASS_Q 0xfff0707f +#define MATCH_FCVT_Q_W 0xd6000053 +#define MASK_FCVT_Q_W 0xfff0007f +#define MATCH_FCVT_Q_WU 0xd6100053 +#define MASK_FCVT_Q_WU 0xfff0007f +#define MATCH_FLQ 0x4007 +#define MASK_FLQ 0x707f +#define MATCH_FSQ 0x4027 +#define MASK_FSQ 0x707f +#define MATCH_FMADD_Q 0x6000043 +#define MASK_FMADD_Q 0x600007f +#define MATCH_FMSUB_Q 0x6000047 +#define MASK_FMSUB_Q 0x600007f +#define MATCH_FNMSUB_Q 0x600004b +#define MASK_FNMSUB_Q 0x600007f +#define MATCH_FNMADD_Q 0x600004f +#define MASK_FNMADD_Q 0x600007f +#define MATCH_AMOADD_D 0x302f +#define MASK_AMOADD_D 0xf800707f +#define MATCH_AMOXOR_D 0x2000302f +#define MASK_AMOXOR_D 0xf800707f +#define MATCH_AMOOR_D 0x4000302f +#define MASK_AMOOR_D 0xf800707f +#define MATCH_AMOAND_D 0x6000302f +#define MASK_AMOAND_D 0xf800707f +#define MATCH_AMOMIN_D 0x8000302f +#define MASK_AMOMIN_D 0xf800707f +#define MATCH_AMOMAX_D 0xa000302f +#define MASK_AMOMAX_D 0xf800707f +#define MATCH_AMOMINU_D 0xc000302f +#define MASK_AMOMINU_D 0xf800707f +#define MATCH_AMOMAXU_D 0xe000302f +#define MASK_AMOMAXU_D 0xf800707f +#define MATCH_AMOSWAP_D 0x800302f +#define MASK_AMOSWAP_D 0xf800707f +#define MATCH_LR_D 0x1000302f +#define MASK_LR_D 0xf9f0707f +#define MATCH_SC_D 0x1800302f +#define MASK_SC_D 0xf800707f +#define MATCH_C_LD 0x6000 +#define MASK_C_LD 0xe003 +#define MATCH_C_SD 0xe000 +#define MASK_C_SD 0xe003 +#define MATCH_C_SUBW 0x9c01 +#define MASK_C_SUBW 0xfc63 +#define MATCH_C_ADDW 0x9c21 +#define MASK_C_ADDW 0xfc63 +#define MATCH_C_ADDIW 0x2001 +#define MASK_C_ADDIW 0xe003 +#define MATCH_C_LDSP 0x6002 +#define MASK_C_LDSP 0xe003 +#define MATCH_C_SDSP 0xe002 +#define MASK_C_SDSP 0xe003 +#define MATCH_FCVT_L_D 0xc2200053 +#define MASK_FCVT_L_D 0xfff0007f +#define MATCH_FCVT_LU_D 0xc2300053 +#define MASK_FCVT_LU_D 0xfff0007f +#define MATCH_FMV_X_D 0xe2000053 +#define MASK_FMV_X_D 0xfff0707f +#define MATCH_FCVT_D_L 0xd2200053 +#define MASK_FCVT_D_L 0xfff0007f +#define MATCH_FCVT_D_LU 0xd2300053 +#define MASK_FCVT_D_LU 0xfff0007f +#define MATCH_FMV_D_X 0xf2000053 +#define MASK_FMV_D_X 0xfff0707f +#define MATCH_FCVT_L_S 0xc0200053 +#define MASK_FCVT_L_S 0xfff0007f +#define MATCH_FCVT_LU_S 0xc0300053 +#define MASK_FCVT_LU_S 0xfff0007f +#define MATCH_FCVT_S_L 0xd0200053 +#define MASK_FCVT_S_L 0xfff0007f +#define MATCH_FCVT_S_LU 0xd0300053 +#define MASK_FCVT_S_LU 0xfff0007f +#define MATCH_HLV_WU 0x68104073 +#define MASK_HLV_WU 0xfff0707f +#define MATCH_HLV_D 0x6c004073 +#define MASK_HLV_D 0xfff0707f +#define MATCH_HSV_D 0x6e004073 +#define MASK_HSV_D 0xfe007fff +#define MATCH_ADDIW 0x1b +#define MASK_ADDIW 0x707f +#define MATCH_SLLIW 0x101b +#define MASK_SLLIW 0xfe00707f +#define MATCH_SRLIW 0x501b +#define MASK_SRLIW 0xfe00707f +#define MATCH_SRAIW 0x4000501b +#define MASK_SRAIW 0xfe00707f +#define MATCH_ADDW 0x3b +#define MASK_ADDW 0xfe00707f +#define MATCH_SUBW 0x4000003b +#define MASK_SUBW 0xfe00707f +#define MATCH_SLLW 0x103b +#define MASK_SLLW 0xfe00707f +#define MATCH_SRLW 0x503b +#define MASK_SRLW 0xfe00707f +#define MATCH_SRAW 0x4000503b +#define MASK_SRAW 0xfe00707f +#define MATCH_LD 0x3003 +#define MASK_LD 0x707f +#define MATCH_LWU 0x6003 +#define MASK_LWU 0x707f +#define MATCH_SD 0x3023 +#define MASK_SD 0x707f +#define MATCH_MULW 0x200003b +#define MASK_MULW 0xfe00707f +#define MATCH_DIVW 0x200403b +#define MASK_DIVW 0xfe00707f +#define MATCH_DIVUW 0x200503b +#define MASK_DIVUW 0xfe00707f +#define MATCH_REMW 0x200603b +#define MASK_REMW 0xfe00707f +#define MATCH_REMUW 0x200703b +#define MASK_REMUW 0xfe00707f +#define MATCH_FCVT_L_Q 0xc6200053 +#define MASK_FCVT_L_Q 0xfff0007f +#define MATCH_FCVT_LU_Q 0xc6300053 +#define MASK_FCVT_LU_Q 0xfff0007f +#define MATCH_FCVT_Q_L 0xd6200053 +#define MASK_FCVT_Q_L 0xfff0007f +#define MATCH_FCVT_Q_LU 0xd6300053 +#define MASK_FCVT_Q_LU 0xfff0007f +#define MATCH_C_NOP 0x1 +#define MASK_C_NOP 0xffff +#define MATCH_C_ADDI16SP 0x6101 +#define MASK_C_ADDI16SP 0xef83 +#define MATCH_C_JR 0x8002 +#define MASK_C_JR 0xf07f +#define MATCH_C_JALR 0x9002 +#define MASK_C_JALR 0xf07f +#define MATCH_C_EBREAK 0x9002 +#define MASK_C_EBREAK 0xffff +#define MATCH_C_ADDI4SPN 0x0 +#define MASK_C_ADDI4SPN 0xe003 +#define MATCH_C_FLD 0x2000 +#define MASK_C_FLD 0xe003 +#define MATCH_C_LW 0x4000 +#define MASK_C_LW 0xe003 +#define MATCH_C_FLW 0x6000 +#define MASK_C_FLW 0xe003 +#define MATCH_C_FSD 0xa000 +#define MASK_C_FSD 0xe003 +#define MATCH_C_SW 0xc000 +#define MASK_C_SW 0xe003 +#define MATCH_C_FSW 0xe000 +#define MASK_C_FSW 0xe003 +#define MATCH_C_ADDI 0x1 +#define MASK_C_ADDI 0xe003 +#define MATCH_C_JAL 0x2001 +#define MASK_C_JAL 0xe003 +#define MATCH_C_LI 0x4001 +#define MASK_C_LI 0xe003 +#define MATCH_C_LUI 0x6001 +#define MASK_C_LUI 0xe003 +#define MATCH_C_SRLI 0x8001 +#define MASK_C_SRLI 0xec03 +#define MATCH_C_SRAI 0x8401 +#define MASK_C_SRAI 0xec03 +#define MATCH_C_ANDI 0x8801 +#define MASK_C_ANDI 0xec03 +#define MATCH_C_SUB 0x8c01 +#define MASK_C_SUB 0xfc63 +#define MATCH_C_XOR 0x8c21 +#define MASK_C_XOR 0xfc63 +#define MATCH_C_OR 0x8c41 +#define MASK_C_OR 0xfc63 +#define MATCH_C_AND 0x8c61 +#define MASK_C_AND 0xfc63 +#define MATCH_C_J 0xa001 +#define MASK_C_J 0xe003 +#define MATCH_C_BEQZ 0xc001 +#define MASK_C_BEQZ 0xe003 +#define MATCH_C_BNEZ 0xe001 +#define MASK_C_BNEZ 0xe003 +#define MATCH_C_SLLI 0x2 +#define MASK_C_SLLI 0xe003 +#define MATCH_C_FLDSP 0x2002 +#define MASK_C_FLDSP 0xe003 +#define MATCH_C_LWSP 0x4002 +#define MASK_C_LWSP 0xe003 +#define MATCH_C_FLWSP 0x6002 +#define MASK_C_FLWSP 0xe003 +#define MATCH_C_MV 0x8002 +#define MASK_C_MV 0xf003 +#define MATCH_C_ADD 0x9002 +#define MASK_C_ADD 0xf003 +#define MATCH_C_FSDSP 0xa002 +#define MASK_C_FSDSP 0xe003 +#define MATCH_C_SWSP 0xc002 +#define MASK_C_SWSP 0xe003 +#define MATCH_C_FSWSP 0xe002 +#define MASK_C_FSWSP 0xe003 +#define MATCH_VSETIVLI 0xc0007057 +#define MASK_VSETIVLI 0xc000707f +#define MATCH_VSETVLI 0x7057 +#define MASK_VSETVLI 0x8000707f +#define MATCH_VSETVL 0x80007057 +#define MASK_VSETVL 0xfe00707f +#define MATCH_VLM_V 0x2b00007 +#define MASK_VLM_V 0xfff0707f +#define MATCH_VSM_V 0x2b00027 +#define MASK_VSM_V 0xfff0707f +#define MATCH_VLE8_V 0x7 +#define MASK_VLE8_V 0x1df0707f +#define MATCH_VLE16_V 0x5007 +#define MASK_VLE16_V 0x1df0707f +#define MATCH_VLE32_V 0x6007 +#define MASK_VLE32_V 0x1df0707f +#define MATCH_VLE64_V 0x7007 +#define MASK_VLE64_V 0x1df0707f +#define MATCH_VLE128_V 0x10000007 +#define MASK_VLE128_V 0x1df0707f +#define MATCH_VLE256_V 0x10005007 +#define MASK_VLE256_V 0x1df0707f +#define MATCH_VLE512_V 0x10006007 +#define MASK_VLE512_V 0x1df0707f +#define MATCH_VLE1024_V 0x10007007 +#define MASK_VLE1024_V 0x1df0707f +#define MATCH_VSE8_V 0x27 +#define MASK_VSE8_V 0x1df0707f +#define MATCH_VSE16_V 0x5027 +#define MASK_VSE16_V 0x1df0707f +#define MATCH_VSE32_V 0x6027 +#define MASK_VSE32_V 0x1df0707f +#define MATCH_VSE64_V 0x7027 +#define MASK_VSE64_V 0x1df0707f +#define MATCH_VSE128_V 0x10000027 +#define MASK_VSE128_V 0x1df0707f +#define MATCH_VSE256_V 0x10005027 +#define MASK_VSE256_V 0x1df0707f +#define MATCH_VSE512_V 0x10006027 +#define MASK_VSE512_V 0x1df0707f +#define MATCH_VSE1024_V 0x10007027 +#define MASK_VSE1024_V 0x1df0707f +#define MATCH_VLUXEI8_V 0x4000007 +#define MASK_VLUXEI8_V 0x1c00707f +#define MATCH_VLUXEI16_V 0x4005007 +#define MASK_VLUXEI16_V 0x1c00707f +#define MATCH_VLUXEI32_V 0x4006007 +#define MASK_VLUXEI32_V 0x1c00707f +#define MATCH_VLUXEI64_V 0x4007007 +#define MASK_VLUXEI64_V 0x1c00707f +#define MATCH_VLUXEI128_V 0x14000007 +#define MASK_VLUXEI128_V 0x1c00707f +#define MATCH_VLUXEI256_V 0x14005007 +#define MASK_VLUXEI256_V 0x1c00707f +#define MATCH_VLUXEI512_V 0x14006007 +#define MASK_VLUXEI512_V 0x1c00707f +#define MATCH_VLUXEI1024_V 0x14007007 +#define MASK_VLUXEI1024_V 0x1c00707f +#define MATCH_VSUXEI8_V 0x4000027 +#define MASK_VSUXEI8_V 0x1c00707f +#define MATCH_VSUXEI16_V 0x4005027 +#define MASK_VSUXEI16_V 0x1c00707f +#define MATCH_VSUXEI32_V 0x4006027 +#define MASK_VSUXEI32_V 0x1c00707f +#define MATCH_VSUXEI64_V 0x4007027 +#define MASK_VSUXEI64_V 0x1c00707f +#define MATCH_VSUXEI128_V 0x14000027 +#define MASK_VSUXEI128_V 0x1c00707f +#define MATCH_VSUXEI256_V 0x14005027 +#define MASK_VSUXEI256_V 0x1c00707f +#define MATCH_VSUXEI512_V 0x14006027 +#define MASK_VSUXEI512_V 0x1c00707f +#define MATCH_VSUXEI1024_V 0x14007027 +#define MASK_VSUXEI1024_V 0x1c00707f +#define MATCH_VLSE8_V 0x8000007 +#define MASK_VLSE8_V 0x1c00707f +#define MATCH_VLSE16_V 0x8005007 +#define MASK_VLSE16_V 0x1c00707f +#define MATCH_VLSE32_V 0x8006007 +#define MASK_VLSE32_V 0x1c00707f +#define MATCH_VLSE64_V 0x8007007 +#define MASK_VLSE64_V 0x1c00707f +#define MATCH_VLSE128_V 0x18000007 +#define MASK_VLSE128_V 0x1c00707f +#define MATCH_VLSE256_V 0x18005007 +#define MASK_VLSE256_V 0x1c00707f +#define MATCH_VLSE512_V 0x18006007 +#define MASK_VLSE512_V 0x1c00707f +#define MATCH_VLSE1024_V 0x18007007 +#define MASK_VLSE1024_V 0x1c00707f +#define MATCH_VSSE8_V 0x8000027 +#define MASK_VSSE8_V 0x1c00707f +#define MATCH_VSSE16_V 0x8005027 +#define MASK_VSSE16_V 0x1c00707f +#define MATCH_VSSE32_V 0x8006027 +#define MASK_VSSE32_V 0x1c00707f +#define MATCH_VSSE64_V 0x8007027 +#define MASK_VSSE64_V 0x1c00707f +#define MATCH_VSSE128_V 0x18000027 +#define MASK_VSSE128_V 0x1c00707f +#define MATCH_VSSE256_V 0x18005027 +#define MASK_VSSE256_V 0x1c00707f +#define MATCH_VSSE512_V 0x18006027 +#define MASK_VSSE512_V 0x1c00707f +#define MATCH_VSSE1024_V 0x18007027 +#define MASK_VSSE1024_V 0x1c00707f +#define MATCH_VLOXEI8_V 0xc000007 +#define MASK_VLOXEI8_V 0x1c00707f +#define MATCH_VLOXEI16_V 0xc005007 +#define MASK_VLOXEI16_V 0x1c00707f +#define MATCH_VLOXEI32_V 0xc006007 +#define MASK_VLOXEI32_V 0x1c00707f +#define MATCH_VLOXEI64_V 0xc007007 +#define MASK_VLOXEI64_V 0x1c00707f +#define MATCH_VLOXEI128_V 0x1c000007 +#define MASK_VLOXEI128_V 0x1c00707f +#define MATCH_VLOXEI256_V 0x1c005007 +#define MASK_VLOXEI256_V 0x1c00707f +#define MATCH_VLOXEI512_V 0x1c006007 +#define MASK_VLOXEI512_V 0x1c00707f +#define MATCH_VLOXEI1024_V 0x1c007007 +#define MASK_VLOXEI1024_V 0x1c00707f +#define MATCH_VSOXEI8_V 0xc000027 +#define MASK_VSOXEI8_V 0x1c00707f +#define MATCH_VSOXEI16_V 0xc005027 +#define MASK_VSOXEI16_V 0x1c00707f +#define MATCH_VSOXEI32_V 0xc006027 +#define MASK_VSOXEI32_V 0x1c00707f +#define MATCH_VSOXEI64_V 0xc007027 +#define MASK_VSOXEI64_V 0x1c00707f +#define MATCH_VSOXEI128_V 0x1c000027 +#define MASK_VSOXEI128_V 0x1c00707f +#define MATCH_VSOXEI256_V 0x1c005027 +#define MASK_VSOXEI256_V 0x1c00707f +#define MATCH_VSOXEI512_V 0x1c006027 +#define MASK_VSOXEI512_V 0x1c00707f +#define MATCH_VSOXEI1024_V 0x1c007027 +#define MASK_VSOXEI1024_V 0x1c00707f +#define MATCH_VLE8FF_V 0x1000007 +#define MASK_VLE8FF_V 0x1df0707f +#define MATCH_VLE16FF_V 0x1005007 +#define MASK_VLE16FF_V 0x1df0707f +#define MATCH_VLE32FF_V 0x1006007 +#define MASK_VLE32FF_V 0x1df0707f +#define MATCH_VLE64FF_V 0x1007007 +#define MASK_VLE64FF_V 0x1df0707f +#define MATCH_VLE128FF_V 0x11000007 +#define MASK_VLE128FF_V 0x1df0707f +#define MATCH_VLE256FF_V 0x11005007 +#define MASK_VLE256FF_V 0x1df0707f +#define MATCH_VLE512FF_V 0x11006007 +#define MASK_VLE512FF_V 0x1df0707f +#define MATCH_VLE1024FF_V 0x11007007 +#define MASK_VLE1024FF_V 0x1df0707f +#define MATCH_VL1RE8_V 0x2800007 +#define MASK_VL1RE8_V 0xfff0707f +#define MATCH_VL1RE16_V 0x2805007 +#define MASK_VL1RE16_V 0xfff0707f +#define MATCH_VL1RE32_V 0x2806007 +#define MASK_VL1RE32_V 0xfff0707f +#define MATCH_VL1RE64_V 0x2807007 +#define MASK_VL1RE64_V 0xfff0707f +#define MATCH_VL2RE8_V 0x22800007 +#define MASK_VL2RE8_V 0xfff0707f +#define MATCH_VL2RE16_V 0x22805007 +#define MASK_VL2RE16_V 0xfff0707f +#define MATCH_VL2RE32_V 0x22806007 +#define MASK_VL2RE32_V 0xfff0707f +#define MATCH_VL2RE64_V 0x22807007 +#define MASK_VL2RE64_V 0xfff0707f +#define MATCH_VL4RE8_V 0x62800007 +#define MASK_VL4RE8_V 0xfff0707f +#define MATCH_VL4RE16_V 0x62805007 +#define MASK_VL4RE16_V 0xfff0707f +#define MATCH_VL4RE32_V 0x62806007 +#define MASK_VL4RE32_V 0xfff0707f +#define MATCH_VL4RE64_V 0x62807007 +#define MASK_VL4RE64_V 0xfff0707f +#define MATCH_VL8RE8_V 0xe2800007 +#define MASK_VL8RE8_V 0xfff0707f +#define MATCH_VL8RE16_V 0xe2805007 +#define MASK_VL8RE16_V 0xfff0707f +#define MATCH_VL8RE32_V 0xe2806007 +#define MASK_VL8RE32_V 0xfff0707f +#define MATCH_VL8RE64_V 0xe2807007 +#define MASK_VL8RE64_V 0xfff0707f +#define MATCH_VS1R_V 0x2800027 +#define MASK_VS1R_V 0xfff0707f +#define MATCH_VS2R_V 0x22800027 +#define MASK_VS2R_V 0xfff0707f +#define MATCH_VS4R_V 0x62800027 +#define MASK_VS4R_V 0xfff0707f +#define MATCH_VS8R_V 0xe2800027 +#define MASK_VS8R_V 0xfff0707f +#define MATCH_VFADD_VF 0x5057 +#define MASK_VFADD_VF 0xfc00707f +#define MATCH_VFSUB_VF 0x8005057 +#define MASK_VFSUB_VF 0xfc00707f +#define MATCH_VFMIN_VF 0x10005057 +#define MASK_VFMIN_VF 0xfc00707f +#define MATCH_VFMAX_VF 0x18005057 +#define MASK_VFMAX_VF 0xfc00707f +#define MATCH_VFSGNJ_VF 0x20005057 +#define MASK_VFSGNJ_VF 0xfc00707f +#define MATCH_VFSGNJN_VF 0x24005057 +#define MASK_VFSGNJN_VF 0xfc00707f +#define MATCH_VFSGNJX_VF 0x28005057 +#define MASK_VFSGNJX_VF 0xfc00707f +#define MATCH_VFSLIDE1UP_VF 0x38005057 +#define MASK_VFSLIDE1UP_VF 0xfc00707f +#define MATCH_VFSLIDE1DOWN_VF 0x3c005057 +#define MASK_VFSLIDE1DOWN_VF 0xfc00707f +#define MATCH_VFMV_S_F 0x42005057 +#define MASK_VFMV_S_F 0xfff0707f +#define MATCH_VFMERGE_VFM 0x5c005057 +#define MASK_VFMERGE_VFM 0xfe00707f +#define MATCH_VFMV_V_F 0x5e005057 +#define MASK_VFMV_V_F 0xfff0707f +#define MATCH_VMFEQ_VF 0x60005057 +#define MASK_VMFEQ_VF 0xfc00707f +#define MATCH_VMFLE_VF 0x64005057 +#define MASK_VMFLE_VF 0xfc00707f +#define MATCH_VMFLT_VF 0x6c005057 +#define MASK_VMFLT_VF 0xfc00707f +#define MATCH_VMFNE_VF 0x70005057 +#define MASK_VMFNE_VF 0xfc00707f +#define MATCH_VMFGT_VF 0x74005057 +#define MASK_VMFGT_VF 0xfc00707f +#define MATCH_VMFGE_VF 0x7c005057 +#define MASK_VMFGE_VF 0xfc00707f +#define MATCH_VFDIV_VF 0x80005057 +#define MASK_VFDIV_VF 0xfc00707f +#define MATCH_VFRDIV_VF 0x84005057 +#define MASK_VFRDIV_VF 0xfc00707f +#define MATCH_VFMUL_VF 0x90005057 +#define MASK_VFMUL_VF 0xfc00707f +#define MATCH_VFRSUB_VF 0x9c005057 +#define MASK_VFRSUB_VF 0xfc00707f +#define MATCH_VFMADD_VF 0xa0005057 +#define MASK_VFMADD_VF 0xfc00707f +#define MATCH_VFNMADD_VF 0xa4005057 +#define MASK_VFNMADD_VF 0xfc00707f +#define MATCH_VFMSUB_VF 0xa8005057 +#define MASK_VFMSUB_VF 0xfc00707f +#define MATCH_VFNMSUB_VF 0xac005057 +#define MASK_VFNMSUB_VF 0xfc00707f +#define MATCH_VFMACC_VF 0xb0005057 +#define MASK_VFMACC_VF 0xfc00707f +#define MATCH_VFNMACC_VF 0xb4005057 +#define MASK_VFNMACC_VF 0xfc00707f +#define MATCH_VFMSAC_VF 0xb8005057 +#define MASK_VFMSAC_VF 0xfc00707f +#define MATCH_VFNMSAC_VF 0xbc005057 +#define MASK_VFNMSAC_VF 0xfc00707f +#define MATCH_VFWADD_VF 0xc0005057 +#define MASK_VFWADD_VF 0xfc00707f +#define MATCH_VFWSUB_VF 0xc8005057 +#define MASK_VFWSUB_VF 0xfc00707f +#define MATCH_VFWADD_WF 0xd0005057 +#define MASK_VFWADD_WF 0xfc00707f +#define MATCH_VFWSUB_WF 0xd8005057 +#define MASK_VFWSUB_WF 0xfc00707f +#define MATCH_VFWMUL_VF 0xe0005057 +#define MASK_VFWMUL_VF 0xfc00707f +#define MATCH_VFWDOTP_VF 0xec005057 +#define MASK_VFWDOTP_VF 0xfc00707f +#define MATCH_VFWMACC_VF 0xf0005057 +#define MASK_VFWMACC_VF 0xfc00707f +#define MATCH_VFWNMACC_VF 0xf4005057 +#define MASK_VFWNMACC_VF 0xfc00707f +#define MATCH_VFWMSAC_VF 0xf8005057 +#define MASK_VFWMSAC_VF 0xfc00707f +#define MATCH_VFWNMSAC_VF 0xfc005057 +#define MASK_VFWNMSAC_VF 0xfc00707f +#define MATCH_VFADD_VV 0x1057 +#define MASK_VFADD_VV 0xfc00707f +#define MATCH_VFREDUSUM_VS 0x4001057 +#define MASK_VFREDUSUM_VS 0xfc00707f +#define MATCH_VFSUB_VV 0x8001057 +#define MASK_VFSUB_VV 0xfc00707f +#define MATCH_VFREDOSUM_VS 0xc001057 +#define MASK_VFREDOSUM_VS 0xfc00707f +#define MATCH_VFMIN_VV 0x10001057 +#define MASK_VFMIN_VV 0xfc00707f +#define MATCH_VFREDMIN_VS 0x14001057 +#define MASK_VFREDMIN_VS 0xfc00707f +#define MATCH_VFMAX_VV 0x18001057 +#define MASK_VFMAX_VV 0xfc00707f +#define MATCH_VFREDMAX_VS 0x1c001057 +#define MASK_VFREDMAX_VS 0xfc00707f +#define MATCH_VFSGNJ_VV 0x20001057 +#define MASK_VFSGNJ_VV 0xfc00707f +#define MATCH_VFSGNJN_VV 0x24001057 +#define MASK_VFSGNJN_VV 0xfc00707f +#define MATCH_VFSGNJX_VV 0x28001057 +#define MASK_VFSGNJX_VV 0xfc00707f +#define MATCH_VFMV_F_S 0x42001057 +#define MASK_VFMV_F_S 0xfe0ff07f +#define MATCH_VMFEQ_VV 0x60001057 +#define MASK_VMFEQ_VV 0xfc00707f +#define MATCH_VMFLE_VV 0x64001057 +#define MASK_VMFLE_VV 0xfc00707f +#define MATCH_VMFLT_VV 0x6c001057 +#define MASK_VMFLT_VV 0xfc00707f +#define MATCH_VMFNE_VV 0x70001057 +#define MASK_VMFNE_VV 0xfc00707f +#define MATCH_VFDIV_VV 0x80001057 +#define MASK_VFDIV_VV 0xfc00707f +#define MATCH_VFMUL_VV 0x90001057 +#define MASK_VFMUL_VV 0xfc00707f +#define MATCH_VFMADD_VV 0xa0001057 +#define MASK_VFMADD_VV 0xfc00707f +#define MATCH_VFNMADD_VV 0xa4001057 +#define MASK_VFNMADD_VV 0xfc00707f +#define MATCH_VFMSUB_VV 0xa8001057 +#define MASK_VFMSUB_VV 0xfc00707f +#define MATCH_VFNMSUB_VV 0xac001057 +#define MASK_VFNMSUB_VV 0xfc00707f +#define MATCH_VFMACC_VV 0xb0001057 +#define MASK_VFMACC_VV 0xfc00707f +#define MATCH_VFNMACC_VV 0xb4001057 +#define MASK_VFNMACC_VV 0xfc00707f +#define MATCH_VFMSAC_VV 0xb8001057 +#define MASK_VFMSAC_VV 0xfc00707f +#define MATCH_VFNMSAC_VV 0xbc001057 +#define MASK_VFNMSAC_VV 0xfc00707f +#define MATCH_VFCVT_XU_F_V 0x48001057 +#define MASK_VFCVT_XU_F_V 0xfc0ff07f +#define MATCH_VFCVT_X_F_V 0x48009057 +#define MASK_VFCVT_X_F_V 0xfc0ff07f +#define MATCH_VFCVT_F_XU_V 0x48011057 +#define MASK_VFCVT_F_XU_V 0xfc0ff07f +#define MATCH_VFCVT_F_X_V 0x48019057 +#define MASK_VFCVT_F_X_V 0xfc0ff07f +#define MATCH_VFCVT_RTZ_XU_F_V 0x48031057 +#define MASK_VFCVT_RTZ_XU_F_V 0xfc0ff07f +#define MATCH_VFCVT_RTZ_X_F_V 0x48039057 +#define MASK_VFCVT_RTZ_X_F_V 0xfc0ff07f +#define MATCH_VFWCVT_XU_F_V 0x48041057 +#define MASK_VFWCVT_XU_F_V 0xfc0ff07f +#define MATCH_VFWCVT_X_F_V 0x48049057 +#define MASK_VFWCVT_X_F_V 0xfc0ff07f +#define MATCH_VFWCVT_F_XU_V 0x48051057 +#define MASK_VFWCVT_F_XU_V 0xfc0ff07f +#define MATCH_VFWCVT_F_X_V 0x48059057 +#define MASK_VFWCVT_F_X_V 0xfc0ff07f +#define MATCH_VFWCVT_F_F_V 0x48061057 +#define MASK_VFWCVT_F_F_V 0xfc0ff07f +#define MATCH_VFWCVT_RTZ_XU_F_V 0x48071057 +#define MASK_VFWCVT_RTZ_XU_F_V 0xfc0ff07f +#define MATCH_VFWCVT_RTZ_X_F_V 0x48079057 +#define MASK_VFWCVT_RTZ_X_F_V 0xfc0ff07f +#define MATCH_VFNCVT_XU_F_W 0x48081057 +#define MASK_VFNCVT_XU_F_W 0xfc0ff07f +#define MATCH_VFNCVT_X_F_W 0x48089057 +#define MASK_VFNCVT_X_F_W 0xfc0ff07f +#define MATCH_VFNCVT_F_XU_W 0x48091057 +#define MASK_VFNCVT_F_XU_W 0xfc0ff07f +#define MATCH_VFNCVT_F_X_W 0x48099057 +#define MASK_VFNCVT_F_X_W 0xfc0ff07f +#define MATCH_VFNCVT_F_F_W 0x480a1057 +#define MASK_VFNCVT_F_F_W 0xfc0ff07f +#define MATCH_VFNCVT_ROD_F_F_W 0x480a9057 +#define MASK_VFNCVT_ROD_F_F_W 0xfc0ff07f +#define MATCH_VFNCVT_RTZ_XU_F_W 0x480b1057 +#define MASK_VFNCVT_RTZ_XU_F_W 0xfc0ff07f +#define MATCH_VFNCVT_RTZ_X_F_W 0x480b9057 +#define MASK_VFNCVT_RTZ_X_F_W 0xfc0ff07f +#define MATCH_VFSQRT_V 0x4c001057 +#define MASK_VFSQRT_V 0xfc0ff07f +#define MATCH_VFRSQRT7_V 0x4c021057 +#define MASK_VFRSQRT7_V 0xfc0ff07f +#define MATCH_VFREC7_V 0x4c029057 +#define MASK_VFREC7_V 0xfc0ff07f +#define MATCH_VFCLASS_V 0x4c081057 +#define MASK_VFCLASS_V 0xfc0ff07f +#define MATCH_VFWADD_VV 0xc0001057 +#define MASK_VFWADD_VV 0xfc00707f +#define MATCH_VFWREDUSUM_VS 0xc4001057 +#define MASK_VFWREDUSUM_VS 0xfc00707f +#define MATCH_VFWSUB_VV 0xc8001057 +#define MASK_VFWSUB_VV 0xfc00707f +#define MATCH_VFWREDOSUM_VS 0xcc001057 +#define MASK_VFWREDOSUM_VS 0xfc00707f +#define MATCH_VFWADD_WV 0xd0001057 +#define MASK_VFWADD_WV 0xfc00707f +#define MATCH_VFWSUB_WV 0xd8001057 +#define MASK_VFWSUB_WV 0xfc00707f +#define MATCH_VFWMUL_VV 0xe0001057 +#define MASK_VFWMUL_VV 0xfc00707f +#define MATCH_VFWDOTP_VV 0xec001057 +#define MASK_VFWDOTP_VV 0xfc00707f +#define MATCH_VFWMACC_VV 0xf0001057 +#define MASK_VFWMACC_VV 0xfc00707f +#define MATCH_VFWNMACC_VV 0xf4001057 +#define MASK_VFWNMACC_VV 0xfc00707f +#define MATCH_VFWMSAC_VV 0xf8001057 +#define MASK_VFWMSAC_VV 0xfc00707f +#define MATCH_VFWNMSAC_VV 0xfc001057 +#define MASK_VFWNMSAC_VV 0xfc00707f +#define MATCH_VADD_VX 0x4057 +#define MASK_VADD_VX 0xfc00707f +#define MATCH_VSUB_VX 0x8004057 +#define MASK_VSUB_VX 0xfc00707f +#define MATCH_VRSUB_VX 0xc004057 +#define MASK_VRSUB_VX 0xfc00707f +#define MATCH_VMINU_VX 0x10004057 +#define MASK_VMINU_VX 0xfc00707f +#define MATCH_VMIN_VX 0x14004057 +#define MASK_VMIN_VX 0xfc00707f +#define MATCH_VMAXU_VX 0x18004057 +#define MASK_VMAXU_VX 0xfc00707f +#define MATCH_VMAX_VX 0x1c004057 +#define MASK_VMAX_VX 0xfc00707f +#define MATCH_VAND_VX 0x24004057 +#define MASK_VAND_VX 0xfc00707f +#define MATCH_VOR_VX 0x28004057 +#define MASK_VOR_VX 0xfc00707f +#define MATCH_VXOR_VX 0x2c004057 +#define MASK_VXOR_VX 0xfc00707f +#define MATCH_VRGATHER_VX 0x30004057 +#define MASK_VRGATHER_VX 0xfc00707f +#define MATCH_VSLIDEUP_VX 0x38004057 +#define MASK_VSLIDEUP_VX 0xfc00707f +#define MATCH_VSLIDEDOWN_VX 0x3c004057 +#define MASK_VSLIDEDOWN_VX 0xfc00707f +#define MATCH_VADC_VXM 0x40004057 +#define MASK_VADC_VXM 0xfe00707f +#define MATCH_VMADC_VXM 0x44004057 +#define MASK_VMADC_VXM 0xfe00707f +#define MATCH_VMADC_VX 0x46004057 +#define MASK_VMADC_VX 0xfe00707f +#define MATCH_VSBC_VXM 0x48004057 +#define MASK_VSBC_VXM 0xfe00707f +#define MATCH_VMSBC_VXM 0x4c004057 +#define MASK_VMSBC_VXM 0xfe00707f +#define MATCH_VMSBC_VX 0x4e004057 +#define MASK_VMSBC_VX 0xfe00707f +#define MATCH_VMERGE_VXM 0x5c004057 +#define MASK_VMERGE_VXM 0xfe00707f +#define MATCH_VMV_V_X 0x5e004057 +#define MASK_VMV_V_X 0xfff0707f +#define MATCH_VMSEQ_VX 0x60004057 +#define MASK_VMSEQ_VX 0xfc00707f +#define MATCH_VMSNE_VX 0x64004057 +#define MASK_VMSNE_VX 0xfc00707f +#define MATCH_VMSLTU_VX 0x68004057 +#define MASK_VMSLTU_VX 0xfc00707f +#define MATCH_VMSLT_VX 0x6c004057 +#define MASK_VMSLT_VX 0xfc00707f +#define MATCH_VMSLEU_VX 0x70004057 +#define MASK_VMSLEU_VX 0xfc00707f +#define MATCH_VMSLE_VX 0x74004057 +#define MASK_VMSLE_VX 0xfc00707f +#define MATCH_VMSGTU_VX 0x78004057 +#define MASK_VMSGTU_VX 0xfc00707f +#define MATCH_VMSGT_VX 0x7c004057 +#define MASK_VMSGT_VX 0xfc00707f +#define MATCH_VSADDU_VX 0x80004057 +#define MASK_VSADDU_VX 0xfc00707f +#define MATCH_VSADD_VX 0x84004057 +#define MASK_VSADD_VX 0xfc00707f +#define MATCH_VSSUBU_VX 0x88004057 +#define MASK_VSSUBU_VX 0xfc00707f +#define MATCH_VSSUB_VX 0x8c004057 +#define MASK_VSSUB_VX 0xfc00707f +#define MATCH_VSLL_VX 0x94004057 +#define MASK_VSLL_VX 0xfc00707f +#define MATCH_VSMUL_VX 0x9c004057 +#define MASK_VSMUL_VX 0xfc00707f +#define MATCH_VSRL_VX 0xa0004057 +#define MASK_VSRL_VX 0xfc00707f +#define MATCH_VSRA_VX 0xa4004057 +#define MASK_VSRA_VX 0xfc00707f +#define MATCH_VSSRL_VX 0xa8004057 +#define MASK_VSSRL_VX 0xfc00707f +#define MATCH_VSSRA_VX 0xac004057 +#define MASK_VSSRA_VX 0xfc00707f +#define MATCH_VNSRL_WX 0xb0004057 +#define MASK_VNSRL_WX 0xfc00707f +#define MATCH_VNSRA_WX 0xb4004057 +#define MASK_VNSRA_WX 0xfc00707f +#define MATCH_VNCLIPU_WX 0xb8004057 +#define MASK_VNCLIPU_WX 0xfc00707f +#define MATCH_VNCLIP_WX 0xbc004057 +#define MASK_VNCLIP_WX 0xfc00707f +#define MATCH_VADD_VV 0x57 +#define MASK_VADD_VV 0xfc00707f +#define MATCH_VSUB_VV 0x8000057 +#define MASK_VSUB_VV 0xfc00707f +#define MATCH_VMINU_VV 0x10000057 +#define MASK_VMINU_VV 0xfc00707f +#define MATCH_VMIN_VV 0x14000057 +#define MASK_VMIN_VV 0xfc00707f +#define MATCH_VMAXU_VV 0x18000057 +#define MASK_VMAXU_VV 0xfc00707f +#define MATCH_VMAX_VV 0x1c000057 +#define MASK_VMAX_VV 0xfc00707f +#define MATCH_VAND_VV 0x24000057 +#define MASK_VAND_VV 0xfc00707f +#define MATCH_VOR_VV 0x28000057 +#define MASK_VOR_VV 0xfc00707f +#define MATCH_VXOR_VV 0x2c000057 +#define MASK_VXOR_VV 0xfc00707f +#define MATCH_VRGATHER_VV 0x30000057 +#define MASK_VRGATHER_VV 0xfc00707f +#define MATCH_VRGATHEREI16_VV 0x38000057 +#define MASK_VRGATHEREI16_VV 0xfc00707f +#define MATCH_VADC_VVM 0x40000057 +#define MASK_VADC_VVM 0xfe00707f +#define MATCH_VMADC_VVM 0x44000057 +#define MASK_VMADC_VVM 0xfe00707f +#define MATCH_VMADC_VV 0x46000057 +#define MASK_VMADC_VV 0xfe00707f +#define MATCH_VSBC_VVM 0x48000057 +#define MASK_VSBC_VVM 0xfe00707f +#define MATCH_VMSBC_VVM 0x4c000057 +#define MASK_VMSBC_VVM 0xfe00707f +#define MATCH_VMSBC_VV 0x4e000057 +#define MASK_VMSBC_VV 0xfe00707f +#define MATCH_VMERGE_VVM 0x5c000057 +#define MASK_VMERGE_VVM 0xfe00707f +#define MATCH_VMV_V_V 0x5e000057 +#define MASK_VMV_V_V 0xfff0707f +#define MATCH_VMSEQ_VV 0x60000057 +#define MASK_VMSEQ_VV 0xfc00707f +#define MATCH_VMSNE_VV 0x64000057 +#define MASK_VMSNE_VV 0xfc00707f +#define MATCH_VMSLTU_VV 0x68000057 +#define MASK_VMSLTU_VV 0xfc00707f +#define MATCH_VMSLT_VV 0x6c000057 +#define MASK_VMSLT_VV 0xfc00707f +#define MATCH_VMSLEU_VV 0x70000057 +#define MASK_VMSLEU_VV 0xfc00707f +#define MATCH_VMSLE_VV 0x74000057 +#define MASK_VMSLE_VV 0xfc00707f +#define MATCH_VSADDU_VV 0x80000057 +#define MASK_VSADDU_VV 0xfc00707f +#define MATCH_VSADD_VV 0x84000057 +#define MASK_VSADD_VV 0xfc00707f +#define MATCH_VSSUBU_VV 0x88000057 +#define MASK_VSSUBU_VV 0xfc00707f +#define MATCH_VSSUB_VV 0x8c000057 +#define MASK_VSSUB_VV 0xfc00707f +#define MATCH_VSLL_VV 0x94000057 +#define MASK_VSLL_VV 0xfc00707f +#define MATCH_VSMUL_VV 0x9c000057 +#define MASK_VSMUL_VV 0xfc00707f +#define MATCH_VSRL_VV 0xa0000057 +#define MASK_VSRL_VV 0xfc00707f +#define MATCH_VSRA_VV 0xa4000057 +#define MASK_VSRA_VV 0xfc00707f +#define MATCH_VSSRL_VV 0xa8000057 +#define MASK_VSSRL_VV 0xfc00707f +#define MATCH_VSSRA_VV 0xac000057 +#define MASK_VSSRA_VV 0xfc00707f +#define MATCH_VNSRL_WV 0xb0000057 +#define MASK_VNSRL_WV 0xfc00707f +#define MATCH_VNSRA_WV 0xb4000057 +#define MASK_VNSRA_WV 0xfc00707f +#define MATCH_VNCLIPU_WV 0xb8000057 +#define MASK_VNCLIPU_WV 0xfc00707f +#define MATCH_VNCLIP_WV 0xbc000057 +#define MASK_VNCLIP_WV 0xfc00707f +#define MATCH_VWREDSUMU_VS 0xc0000057 +#define MASK_VWREDSUMU_VS 0xfc00707f +#define MATCH_VWREDSUM_VS 0xc4000057 +#define MASK_VWREDSUM_VS 0xfc00707f +#define MATCH_VADD_VI 0x3057 +#define MASK_VADD_VI 0xfc00707f +#define MATCH_VRSUB_VI 0xc003057 +#define MASK_VRSUB_VI 0xfc00707f +#define MATCH_VAND_VI 0x24003057 +#define MASK_VAND_VI 0xfc00707f +#define MATCH_VOR_VI 0x28003057 +#define MASK_VOR_VI 0xfc00707f +#define MATCH_VXOR_VI 0x2c003057 +#define MASK_VXOR_VI 0xfc00707f +#define MATCH_VRGATHER_VI 0x30003057 +#define MASK_VRGATHER_VI 0xfc00707f +#define MATCH_VSLIDEUP_VI 0x38003057 +#define MASK_VSLIDEUP_VI 0xfc00707f +#define MATCH_VSLIDEDOWN_VI 0x3c003057 +#define MASK_VSLIDEDOWN_VI 0xfc00707f +#define MATCH_VADC_VIM 0x40003057 +#define MASK_VADC_VIM 0xfe00707f +#define MATCH_VMADC_VIM 0x44003057 +#define MASK_VMADC_VIM 0xfe00707f +#define MATCH_VMADC_VI 0x46003057 +#define MASK_VMADC_VI 0xfe00707f +#define MATCH_VMERGE_VIM 0x5c003057 +#define MASK_VMERGE_VIM 0xfe00707f +#define MATCH_VMV_V_I 0x5e003057 +#define MASK_VMV_V_I 0xfff0707f +#define MATCH_VMSEQ_VI 0x60003057 +#define MASK_VMSEQ_VI 0xfc00707f +#define MATCH_VMSNE_VI 0x64003057 +#define MASK_VMSNE_VI 0xfc00707f +#define MATCH_VMSLEU_VI 0x70003057 +#define MASK_VMSLEU_VI 0xfc00707f +#define MATCH_VMSLE_VI 0x74003057 +#define MASK_VMSLE_VI 0xfc00707f +#define MATCH_VMSGTU_VI 0x78003057 +#define MASK_VMSGTU_VI 0xfc00707f +#define MATCH_VMSGT_VI 0x7c003057 +#define MASK_VMSGT_VI 0xfc00707f +#define MATCH_VSADDU_VI 0x80003057 +#define MASK_VSADDU_VI 0xfc00707f +#define MATCH_VSADD_VI 0x84003057 +#define MASK_VSADD_VI 0xfc00707f +#define MATCH_VSLL_VI 0x94003057 +#define MASK_VSLL_VI 0xfc00707f +#define MATCH_VMV1R_V 0x9e003057 +#define MASK_VMV1R_V 0xfe0ff07f +#define MATCH_VMV2R_V 0x9e00b057 +#define MASK_VMV2R_V 0xfe0ff07f +#define MATCH_VMV4R_V 0x9e01b057 +#define MASK_VMV4R_V 0xfe0ff07f +#define MATCH_VMV8R_V 0x9e03b057 +#define MASK_VMV8R_V 0xfe0ff07f +#define MATCH_VSRL_VI 0xa0003057 +#define MASK_VSRL_VI 0xfc00707f +#define MATCH_VSRA_VI 0xa4003057 +#define MASK_VSRA_VI 0xfc00707f +#define MATCH_VSSRL_VI 0xa8003057 +#define MASK_VSSRL_VI 0xfc00707f +#define MATCH_VSSRA_VI 0xac003057 +#define MASK_VSSRA_VI 0xfc00707f +#define MATCH_VNSRL_WI 0xb0003057 +#define MASK_VNSRL_WI 0xfc00707f +#define MATCH_VNSRA_WI 0xb4003057 +#define MASK_VNSRA_WI 0xfc00707f +#define MATCH_VNCLIPU_WI 0xb8003057 +#define MASK_VNCLIPU_WI 0xfc00707f +#define MATCH_VNCLIP_WI 0xbc003057 +#define MASK_VNCLIP_WI 0xfc00707f +#define MATCH_VREDSUM_VS 0x2057 +#define MASK_VREDSUM_VS 0xfc00707f +#define MATCH_VREDAND_VS 0x4002057 +#define MASK_VREDAND_VS 0xfc00707f +#define MATCH_VREDOR_VS 0x8002057 +#define MASK_VREDOR_VS 0xfc00707f +#define MATCH_VREDXOR_VS 0xc002057 +#define MASK_VREDXOR_VS 0xfc00707f +#define MATCH_VREDMINU_VS 0x10002057 +#define MASK_VREDMINU_VS 0xfc00707f +#define MATCH_VREDMIN_VS 0x14002057 +#define MASK_VREDMIN_VS 0xfc00707f +#define MATCH_VREDMAXU_VS 0x18002057 +#define MASK_VREDMAXU_VS 0xfc00707f +#define MATCH_VREDMAX_VS 0x1c002057 +#define MASK_VREDMAX_VS 0xfc00707f +#define MATCH_VAADDU_VV 0x20002057 +#define MASK_VAADDU_VV 0xfc00707f +#define MATCH_VAADD_VV 0x24002057 +#define MASK_VAADD_VV 0xfc00707f +#define MATCH_VASUBU_VV 0x28002057 +#define MASK_VASUBU_VV 0xfc00707f +#define MATCH_VASUB_VV 0x2c002057 +#define MASK_VASUB_VV 0xfc00707f +#define MATCH_VMV_X_S 0x42002057 +#define MASK_VMV_X_S 0xfe0ff07f +#define MATCH_VZEXT_VF8 0x48012057 +#define MASK_VZEXT_VF8 0xfc0ff07f +#define MATCH_VSEXT_VF8 0x4801a057 +#define MASK_VSEXT_VF8 0xfc0ff07f +#define MATCH_VZEXT_VF4 0x48022057 +#define MASK_VZEXT_VF4 0xfc0ff07f +#define MATCH_VSEXT_VF4 0x4802a057 +#define MASK_VSEXT_VF4 0xfc0ff07f +#define MATCH_VZEXT_VF2 0x48032057 +#define MASK_VZEXT_VF2 0xfc0ff07f +#define MATCH_VSEXT_VF2 0x4803a057 +#define MASK_VSEXT_VF2 0xfc0ff07f +#define MATCH_VCOMPRESS_VM 0x5e002057 +#define MASK_VCOMPRESS_VM 0xfe00707f +#define MATCH_VMANDN_MM 0x60002057 +#define MASK_VMANDN_MM 0xfc00707f +#define MATCH_VMAND_MM 0x64002057 +#define MASK_VMAND_MM 0xfc00707f +#define MATCH_VMOR_MM 0x68002057 +#define MASK_VMOR_MM 0xfc00707f +#define MATCH_VMXOR_MM 0x6c002057 +#define MASK_VMXOR_MM 0xfc00707f +#define MATCH_VMORN_MM 0x70002057 +#define MASK_VMORN_MM 0xfc00707f +#define MATCH_VMNAND_MM 0x74002057 +#define MASK_VMNAND_MM 0xfc00707f +#define MATCH_VMNOR_MM 0x78002057 +#define MASK_VMNOR_MM 0xfc00707f +#define MATCH_VMXNOR_MM 0x7c002057 +#define MASK_VMXNOR_MM 0xfc00707f +#define MATCH_VMSBF_M 0x5000a057 +#define MASK_VMSBF_M 0xfc0ff07f +#define MATCH_VMSOF_M 0x50012057 +#define MASK_VMSOF_M 0xfc0ff07f +#define MATCH_VMSIF_M 0x5001a057 +#define MASK_VMSIF_M 0xfc0ff07f +#define MATCH_VIOTA_M 0x50082057 +#define MASK_VIOTA_M 0xfc0ff07f +#define MATCH_VID_V 0x5008a057 +#define MASK_VID_V 0xfdfff07f +#define MATCH_VCPOP_M 0x40082057 +#define MASK_VCPOP_M 0xfc0ff07f +#define MATCH_VFIRST_M 0x4008a057 +#define MASK_VFIRST_M 0xfc0ff07f +#define MATCH_VDIVU_VV 0x80002057 +#define MASK_VDIVU_VV 0xfc00707f +#define MATCH_VDIV_VV 0x84002057 +#define MASK_VDIV_VV 0xfc00707f +#define MATCH_VREMU_VV 0x88002057 +#define MASK_VREMU_VV 0xfc00707f +#define MATCH_VREM_VV 0x8c002057 +#define MASK_VREM_VV 0xfc00707f +#define MATCH_VMULHU_VV 0x90002057 +#define MASK_VMULHU_VV 0xfc00707f +#define MATCH_VMUL_VV 0x94002057 +#define MASK_VMUL_VV 0xfc00707f +#define MATCH_VMULHSU_VV 0x98002057 +#define MASK_VMULHSU_VV 0xfc00707f +#define MATCH_VMULH_VV 0x9c002057 +#define MASK_VMULH_VV 0xfc00707f +#define MATCH_VMADD_VV 0xa4002057 +#define MASK_VMADD_VV 0xfc00707f +#define MATCH_VNMSUB_VV 0xac002057 +#define MASK_VNMSUB_VV 0xfc00707f +#define MATCH_VMACC_VV 0xb4002057 +#define MASK_VMACC_VV 0xfc00707f +#define MATCH_VNMSAC_VV 0xbc002057 +#define MASK_VNMSAC_VV 0xfc00707f +#define MATCH_VWADDU_VV 0xc0002057 +#define MASK_VWADDU_VV 0xfc00707f +#define MATCH_VWADD_VV 0xc4002057 +#define MASK_VWADD_VV 0xfc00707f +#define MATCH_VWSUBU_VV 0xc8002057 +#define MASK_VWSUBU_VV 0xfc00707f +#define MATCH_VWSUB_VV 0xcc002057 +#define MASK_VWSUB_VV 0xfc00707f +#define MATCH_VWADDU_WV 0xd0002057 +#define MASK_VWADDU_WV 0xfc00707f +#define MATCH_VWADD_WV 0xd4002057 +#define MASK_VWADD_WV 0xfc00707f +#define MATCH_VWSUBU_WV 0xd8002057 +#define MASK_VWSUBU_WV 0xfc00707f +#define MATCH_VWSUB_WV 0xdc002057 +#define MASK_VWSUB_WV 0xfc00707f +#define MATCH_VWMULU_VV 0xe0002057 +#define MASK_VWMULU_VV 0xfc00707f +#define MATCH_VWMULSU_VV 0xe8002057 +#define MASK_VWMULSU_VV 0xfc00707f +#define MATCH_VWMUL_VV 0xec002057 +#define MASK_VWMUL_VV 0xfc00707f +#define MATCH_VWMACCU_VV 0xf0002057 +#define MASK_VWMACCU_VV 0xfc00707f +#define MATCH_VWMACC_VV 0xf4002057 +#define MASK_VWMACC_VV 0xfc00707f +#define MATCH_VWMACCSU_VV 0xfc002057 +#define MASK_VWMACCSU_VV 0xfc00707f +#define MATCH_VAADDU_VX 0x20006057 +#define MASK_VAADDU_VX 0xfc00707f +#define MATCH_VAADD_VX 0x24006057 +#define MASK_VAADD_VX 0xfc00707f +#define MATCH_VASUBU_VX 0x28006057 +#define MASK_VASUBU_VX 0xfc00707f +#define MATCH_VASUB_VX 0x2c006057 +#define MASK_VASUB_VX 0xfc00707f +#define MATCH_VMV_S_X 0x42006057 +#define MASK_VMV_S_X 0xfff0707f +#define MATCH_VSLIDE1UP_VX 0x38006057 +#define MASK_VSLIDE1UP_VX 0xfc00707f +#define MATCH_VSLIDE1DOWN_VX 0x3c006057 +#define MASK_VSLIDE1DOWN_VX 0xfc00707f +#define MATCH_VDIVU_VX 0x80006057 +#define MASK_VDIVU_VX 0xfc00707f +#define MATCH_VDIV_VX 0x84006057 +#define MASK_VDIV_VX 0xfc00707f +#define MATCH_VREMU_VX 0x88006057 +#define MASK_VREMU_VX 0xfc00707f +#define MATCH_VREM_VX 0x8c006057 +#define MASK_VREM_VX 0xfc00707f +#define MATCH_VMULHU_VX 0x90006057 +#define MASK_VMULHU_VX 0xfc00707f +#define MATCH_VMUL_VX 0x94006057 +#define MASK_VMUL_VX 0xfc00707f +#define MATCH_VMULHSU_VX 0x98006057 +#define MASK_VMULHSU_VX 0xfc00707f +#define MATCH_VMULH_VX 0x9c006057 +#define MASK_VMULH_VX 0xfc00707f +#define MATCH_VMADD_VX 0xa4006057 +#define MASK_VMADD_VX 0xfc00707f +#define MATCH_VNMSUB_VX 0xac006057 +#define MASK_VNMSUB_VX 0xfc00707f +#define MATCH_VMACC_VX 0xb4006057 +#define MASK_VMACC_VX 0xfc00707f +#define MATCH_VNMSAC_VX 0xbc006057 +#define MASK_VNMSAC_VX 0xfc00707f +#define MATCH_VWADDU_VX 0xc0006057 +#define MASK_VWADDU_VX 0xfc00707f +#define MATCH_VWADD_VX 0xc4006057 +#define MASK_VWADD_VX 0xfc00707f +#define MATCH_VWSUBU_VX 0xc8006057 +#define MASK_VWSUBU_VX 0xfc00707f +#define MATCH_VWSUB_VX 0xcc006057 +#define MASK_VWSUB_VX 0xfc00707f +#define MATCH_VWADDU_WX 0xd0006057 +#define MASK_VWADDU_WX 0xfc00707f +#define MATCH_VWADD_WX 0xd4006057 +#define MASK_VWADD_WX 0xfc00707f +#define MATCH_VWSUBU_WX 0xd8006057 +#define MASK_VWSUBU_WX 0xfc00707f +#define MATCH_VWSUB_WX 0xdc006057 +#define MASK_VWSUB_WX 0xfc00707f +#define MATCH_VWMULU_VX 0xe0006057 +#define MASK_VWMULU_VX 0xfc00707f +#define MATCH_VWMULSU_VX 0xe8006057 +#define MASK_VWMULSU_VX 0xfc00707f +#define MATCH_VWMUL_VX 0xec006057 +#define MASK_VWMUL_VX 0xfc00707f +#define MATCH_VWMACCU_VX 0xf0006057 +#define MASK_VWMACCU_VX 0xfc00707f +#define MATCH_VWMACC_VX 0xf4006057 +#define MASK_VWMACC_VX 0xfc00707f +#define MATCH_VWMACCUS_VX 0xf8006057 +#define MASK_VWMACCUS_VX 0xfc00707f +#define MATCH_VWMACCSU_VX 0xfc006057 +#define MASK_VWMACCSU_VX 0xfc00707f +#define MATCH_VAMOSWAPEI8_V 0x800002f +#define MASK_VAMOSWAPEI8_V 0xf800707f +#define MATCH_VAMOADDEI8_V 0x2f +#define MASK_VAMOADDEI8_V 0xf800707f +#define MATCH_VAMOXOREI8_V 0x2000002f +#define MASK_VAMOXOREI8_V 0xf800707f +#define MATCH_VAMOANDEI8_V 0x6000002f +#define MASK_VAMOANDEI8_V 0xf800707f +#define MATCH_VAMOOREI8_V 0x4000002f +#define MASK_VAMOOREI8_V 0xf800707f +#define MATCH_VAMOMINEI8_V 0x8000002f +#define MASK_VAMOMINEI8_V 0xf800707f +#define MATCH_VAMOMAXEI8_V 0xa000002f +#define MASK_VAMOMAXEI8_V 0xf800707f +#define MATCH_VAMOMINUEI8_V 0xc000002f +#define MASK_VAMOMINUEI8_V 0xf800707f +#define MATCH_VAMOMAXUEI8_V 0xe000002f +#define MASK_VAMOMAXUEI8_V 0xf800707f +#define MATCH_VAMOSWAPEI16_V 0x800502f +#define MASK_VAMOSWAPEI16_V 0xf800707f +#define MATCH_VAMOADDEI16_V 0x502f +#define MASK_VAMOADDEI16_V 0xf800707f +#define MATCH_VAMOXOREI16_V 0x2000502f +#define MASK_VAMOXOREI16_V 0xf800707f +#define MATCH_VAMOANDEI16_V 0x6000502f +#define MASK_VAMOANDEI16_V 0xf800707f +#define MATCH_VAMOOREI16_V 0x4000502f +#define MASK_VAMOOREI16_V 0xf800707f +#define MATCH_VAMOMINEI16_V 0x8000502f +#define MASK_VAMOMINEI16_V 0xf800707f +#define MATCH_VAMOMAXEI16_V 0xa000502f +#define MASK_VAMOMAXEI16_V 0xf800707f +#define MATCH_VAMOMINUEI16_V 0xc000502f +#define MASK_VAMOMINUEI16_V 0xf800707f +#define MATCH_VAMOMAXUEI16_V 0xe000502f +#define MASK_VAMOMAXUEI16_V 0xf800707f +#define MATCH_VAMOSWAPEI32_V 0x800602f +#define MASK_VAMOSWAPEI32_V 0xf800707f +#define MATCH_VAMOADDEI32_V 0x602f +#define MASK_VAMOADDEI32_V 0xf800707f +#define MATCH_VAMOXOREI32_V 0x2000602f +#define MASK_VAMOXOREI32_V 0xf800707f +#define MATCH_VAMOANDEI32_V 0x6000602f +#define MASK_VAMOANDEI32_V 0xf800707f +#define MATCH_VAMOOREI32_V 0x4000602f +#define MASK_VAMOOREI32_V 0xf800707f +#define MATCH_VAMOMINEI32_V 0x8000602f +#define MASK_VAMOMINEI32_V 0xf800707f +#define MATCH_VAMOMAXEI32_V 0xa000602f +#define MASK_VAMOMAXEI32_V 0xf800707f +#define MATCH_VAMOMINUEI32_V 0xc000602f +#define MASK_VAMOMINUEI32_V 0xf800707f +#define MATCH_VAMOMAXUEI32_V 0xe000602f +#define MASK_VAMOMAXUEI32_V 0xf800707f +#define MATCH_VAMOSWAPEI64_V 0x800702f +#define MASK_VAMOSWAPEI64_V 0xf800707f +#define MATCH_VAMOADDEI64_V 0x702f +#define MASK_VAMOADDEI64_V 0xf800707f +#define MATCH_VAMOXOREI64_V 0x2000702f +#define MASK_VAMOXOREI64_V 0xf800707f +#define MATCH_VAMOANDEI64_V 0x6000702f +#define MASK_VAMOANDEI64_V 0xf800707f +#define MATCH_VAMOOREI64_V 0x4000702f +#define MASK_VAMOOREI64_V 0xf800707f +#define MATCH_VAMOMINEI64_V 0x8000702f +#define MASK_VAMOMINEI64_V 0xf800707f +#define MATCH_VAMOMAXEI64_V 0xa000702f +#define MASK_VAMOMAXEI64_V 0xf800707f +#define MATCH_VAMOMINUEI64_V 0xc000702f +#define MASK_VAMOMINUEI64_V 0xf800707f +#define MATCH_VAMOMAXUEI64_V 0xe000702f +#define MASK_VAMOMAXUEI64_V 0xf800707f +#define MATCH_VMVNFR_V 0x9e003057 +#define MASK_VMVNFR_V 0xfe00707f +#define MATCH_VL1R_V 0x2800007 +#define MASK_VL1R_V 0xfff0707f +#define MATCH_VL2R_V 0x6805007 +#define MASK_VL2R_V 0xfff0707f +#define MATCH_VL4R_V 0xe806007 +#define MASK_VL4R_V 0xfff0707f +#define MATCH_VL8R_V 0x1e807007 +#define MASK_VL8R_V 0xfff0707f +#define MATCH_FLH 0x1007 +#define MASK_FLH 0x707f +#define MATCH_FSH 0x1027 +#define MASK_FSH 0x707f +#define MATCH_FMADD_H 0x4000043 +#define MASK_FMADD_H 0x600007f +#define MATCH_FMSUB_H 0x4000047 +#define MASK_FMSUB_H 0x600007f +#define MATCH_FNMSUB_H 0x400004b +#define MASK_FNMSUB_H 0x600007f +#define MATCH_FNMADD_H 0x400004f +#define MASK_FNMADD_H 0x600007f +#define MATCH_FADD_H 0x4000053 +#define MASK_FADD_H 0xfe00007f +#define MATCH_FSUB_H 0xc000053 +#define MASK_FSUB_H 0xfe00007f +#define MATCH_FMUL_H 0x14000053 +#define MASK_FMUL_H 0xfe00007f +#define MATCH_FDIV_H 0x1c000053 +#define MASK_FDIV_H 0xfe00007f +#define MATCH_FSQRT_H 0x5c000053 +#define MASK_FSQRT_H 0xfff0007f +#define MATCH_FSGNJ_H 0x24000053 +#define MASK_FSGNJ_H 0xfe00707f +#define MATCH_FSGNJN_H 0x24001053 +#define MASK_FSGNJN_H 0xfe00707f +#define MATCH_FSGNJX_H 0x24002053 +#define MASK_FSGNJX_H 0xfe00707f +#define MATCH_FMIN_H 0x2c000053 +#define MASK_FMIN_H 0xfe00707f +#define MATCH_FMAX_H 0x2c001053 +#define MASK_FMAX_H 0xfe00707f +#define MATCH_FEQ_H 0xa4002053 +#define MASK_FEQ_H 0xfe00707f +#define MATCH_FLT_H 0xa4001053 +#define MASK_FLT_H 0xfe00707f +#define MATCH_FLE_H 0xa4000053 +#define MASK_FLE_H 0xfe00707f +#define MATCH_FCVT_W_H 0xc4000053 +#define MASK_FCVT_W_H 0xfff0007f +#define MATCH_FCVT_WU_H 0xc4100053 +#define MASK_FCVT_WU_H 0xfff0007f +#define MATCH_FCVT_H_W 0xd4000053 +#define MASK_FCVT_H_W 0xfff0007f +#define MATCH_FCVT_H_WU 0xd4100053 +#define MASK_FCVT_H_WU 0xfff0007f +#define MATCH_FMV_X_H 0xe4000053 +#define MASK_FMV_X_H 0xfff0707f +#define MATCH_FCLASS_H 0xe4001053 +#define MASK_FCLASS_H 0xfff0707f +#define MATCH_FMV_H_X 0xf4000053 +#define MASK_FMV_H_X 0xfff0707f +#define MATCH_FCVT_L_H 0xc4200053 +#define MASK_FCVT_L_H 0xfff0007f +#define MATCH_FCVT_LU_H 0xc4300053 +#define MASK_FCVT_LU_H 0xfff0007f +#define MATCH_FCVT_H_L 0xd4200053 +#define MASK_FCVT_H_L 0xfff0007f +#define MATCH_FCVT_H_LU 0xd4300053 +#define MASK_FCVT_H_LU 0xfff0007f +#define MATCH_FCVT_S_H 0x40200053 +#define MASK_FCVT_S_H 0xfff0707f +#define MATCH_FCVT_H_S 0x44000053 +#define MASK_FCVT_H_S 0xfff0007f +#define MATCH_FCVT_D_H 0x42200053 +#define MASK_FCVT_D_H 0xfff0707f +#define MATCH_FCVT_H_D 0x44100053 +#define MASK_FCVT_H_D 0xfff0007f +#define MATCH_FLAH 0x1007 +#define MASK_FLAH 0x707f +#define MATCH_FSAH 0x1027 +#define MASK_FSAH 0x707f +#define MATCH_FMADD_AH 0x4000043 +#define MASK_FMADD_AH 0x600007f +#define MATCH_FMSUB_AH 0x4000047 +#define MASK_FMSUB_AH 0x600007f +#define MATCH_FNMSUB_AH 0x400004b +#define MASK_FNMSUB_AH 0x600007f +#define MATCH_FNMADD_AH 0x400004f +#define MASK_FNMADD_AH 0x600007f +#define MATCH_FADD_AH 0x4000053 +#define MASK_FADD_AH 0xfe00007f +#define MATCH_FSUB_AH 0xc000053 +#define MASK_FSUB_AH 0xfe00007f +#define MATCH_FMUL_AH 0x14000053 +#define MASK_FMUL_AH 0xfe00007f +#define MATCH_FDIV_AH 0x1c000053 +#define MASK_FDIV_AH 0xfe00007f +#define MATCH_FSQRT_AH 0x5c000053 +#define MASK_FSQRT_AH 0xfff0007f +#define MATCH_FSGNJ_AH 0x24000053 +#define MASK_FSGNJ_AH 0xfe00707f +#define MATCH_FSGNJN_AH 0x24001053 +#define MASK_FSGNJN_AH 0xfe00707f +#define MATCH_FSGNJX_AH 0x24002053 +#define MASK_FSGNJX_AH 0xfe00707f +#define MATCH_FMIN_AH 0x2c000053 +#define MASK_FMIN_AH 0xfe00707f +#define MATCH_FMAX_AH 0x2c001053 +#define MASK_FMAX_AH 0xfe00707f +#define MATCH_FEQ_AH 0xa4002053 +#define MASK_FEQ_AH 0xfe00707f +#define MATCH_FLT_AH 0xa4001053 +#define MASK_FLT_AH 0xfe00707f +#define MATCH_FLE_AH 0xa4000053 +#define MASK_FLE_AH 0xfe00707f +#define MATCH_FCVT_W_AH 0xc4000053 +#define MASK_FCVT_W_AH 0xfff0007f +#define MATCH_FCVT_WU_AH 0xc4100053 +#define MASK_FCVT_WU_AH 0xfff0007f +#define MATCH_FCVT_AH_W 0xd4000053 +#define MASK_FCVT_AH_W 0xfff0007f +#define MATCH_FCVT_AH_WU 0xd4100053 +#define MASK_FCVT_AH_WU 0xfff0007f +#define MATCH_FMV_X_AH 0xe4000053 +#define MASK_FMV_X_AH 0xfff0707f +#define MATCH_FCLASS_AH 0xe4001053 +#define MASK_FCLASS_AH 0xfff0707f +#define MATCH_FMV_AH_X 0xf4000053 +#define MASK_FMV_AH_X 0xfff0707f +#define MATCH_FCVT_L_AH 0xc4200053 +#define MASK_FCVT_L_AH 0xfff0007f +#define MATCH_FCVT_LU_AH 0xc4300053 +#define MASK_FCVT_LU_AH 0xfff0007f +#define MATCH_FCVT_AH_L 0xd4200053 +#define MASK_FCVT_AH_L 0xfff0007f +#define MATCH_FCVT_AH_LU 0xd4300053 +#define MASK_FCVT_AH_LU 0xfff0007f +#define MATCH_FCVT_S_AH 0x40200053 +#define MASK_FCVT_S_AH 0xfff0707f +#define MATCH_FCVT_AH_S 0x44000053 +#define MASK_FCVT_AH_S 0xfff0007f +#define MATCH_FCVT_D_AH 0x42200053 +#define MASK_FCVT_D_AH 0xfff0707f +#define MATCH_FCVT_AH_D 0x44100053 +#define MASK_FCVT_AH_D 0xfff0007f +#define MATCH_FCVT_H_H 0x44200053 +#define MASK_FCVT_H_H 0xfff0007f +#define MATCH_FCVT_AH_H 0x44200053 +#define MASK_FCVT_AH_H 0xfff0007f +#define MATCH_FCVT_H_AH 0x44200053 +#define MASK_FCVT_H_AH 0xfff0007f +#define MATCH_FCVT_AH_AH 0x44200053 +#define MASK_FCVT_AH_AH 0xfff0007f +#define MATCH_FLB 0x4007 +#define MASK_FLB 0x707f +#define MATCH_FSB 0x4027 +#define MASK_FSB 0x707f +#define MATCH_FMADD_B 0x6000043 +#define MASK_FMADD_B 0x600007f +#define MATCH_FMSUB_B 0x6000047 +#define MASK_FMSUB_B 0x600007f +#define MATCH_FNMSUB_B 0x600004b +#define MASK_FNMSUB_B 0x600007f +#define MATCH_FNMADD_B 0x600004f +#define MASK_FNMADD_B 0x600007f +#define MATCH_FADD_B 0x6000053 +#define MASK_FADD_B 0xfe00007f +#define MATCH_FSUB_B 0xe000053 +#define MASK_FSUB_B 0xfe00007f +#define MATCH_FMUL_B 0x16000053 +#define MASK_FMUL_B 0xfe00007f +#define MATCH_FDIV_B 0x1e000053 +#define MASK_FDIV_B 0xfe00007f +#define MATCH_FSQRT_B 0x5e000053 +#define MASK_FSQRT_B 0xfff0007f +#define MATCH_FSGNJ_B 0x26000053 +#define MASK_FSGNJ_B 0xfe00707f +#define MATCH_FSGNJN_B 0x26001053 +#define MASK_FSGNJN_B 0xfe00707f +#define MATCH_FSGNJX_B 0x26002053 +#define MASK_FSGNJX_B 0xfe00707f +#define MATCH_FMIN_B 0x2e000053 +#define MASK_FMIN_B 0xfe00707f +#define MATCH_FMAX_B 0x2e001053 +#define MASK_FMAX_B 0xfe00707f +#define MATCH_FEQ_B 0xa6002053 +#define MASK_FEQ_B 0xfe00707f +#define MATCH_FLT_B 0xa6001053 +#define MASK_FLT_B 0xfe00707f +#define MATCH_FLE_B 0xa6000053 +#define MASK_FLE_B 0xfe00707f +#define MATCH_FCVT_W_B 0xc6000053 +#define MASK_FCVT_W_B 0xfff0007f +#define MATCH_FCVT_WU_B 0xc6100053 +#define MASK_FCVT_WU_B 0xfff0007f +#define MATCH_FCVT_B_W 0xd6000053 +#define MASK_FCVT_B_W 0xfff0007f +#define MATCH_FCVT_B_WU 0xd6100053 +#define MASK_FCVT_B_WU 0xfff0007f +#define MATCH_FMV_X_B 0xe6000053 +#define MASK_FMV_X_B 0xfff0707f +#define MATCH_FCLASS_B 0xe6001053 +#define MASK_FCLASS_B 0xfff0707f +#define MATCH_FMV_B_X 0xf6000053 +#define MASK_FMV_B_X 0xfff0707f +#define MATCH_FCVT_L_B 0xc6200053 +#define MASK_FCVT_L_B 0xfff0007f +#define MATCH_FCVT_LU_B 0xc6300053 +#define MASK_FCVT_LU_B 0xfff0007f +#define MATCH_FCVT_B_L 0xd6200053 +#define MASK_FCVT_B_L 0xfff0007f +#define MATCH_FCVT_B_LU 0xd6300053 +#define MASK_FCVT_B_LU 0xfff0007f +#define MATCH_FCVT_S_B 0x40300053 +#define MASK_FCVT_S_B 0xfff0707f +#define MATCH_FCVT_B_S 0x46000053 +#define MASK_FCVT_B_S 0xfff0007f +#define MATCH_FCVT_D_B 0x42300053 +#define MASK_FCVT_D_B 0xfff0707f +#define MATCH_FCVT_B_D 0x46100053 +#define MASK_FCVT_B_D 0xfff0007f +#define MATCH_FCVT_H_B 0x44300053 +#define MASK_FCVT_H_B 0xfff0707f +#define MATCH_FCVT_B_H 0x46200053 +#define MASK_FCVT_B_H 0xfff0007f +#define MATCH_FCVT_AH_B 0x44300053 +#define MASK_FCVT_AH_B 0xfff0707f +#define MATCH_FCVT_B_AH 0x46200053 +#define MASK_FCVT_B_AH 0xfff0007f +#define MATCH_FLAB 0x7 +#define MASK_FLAB 0x707f +#define MATCH_FSAB 0x27 +#define MASK_FSAB 0x707f +#define MATCH_FMADD_AB 0x6000043 +#define MASK_FMADD_AB 0x600007f +#define MATCH_FMSUB_AB 0x6000047 +#define MASK_FMSUB_AB 0x600007f +#define MATCH_FNMSUB_AB 0x600004b +#define MASK_FNMSUB_AB 0x600007f +#define MATCH_FNMADD_AB 0x600004f +#define MASK_FNMADD_AB 0x600007f +#define MATCH_FADD_AB 0x6000053 +#define MASK_FADD_AB 0xfe00007f +#define MATCH_FSUB_AB 0xe000053 +#define MASK_FSUB_AB 0xfe00007f +#define MATCH_FMUL_AB 0x16000053 +#define MASK_FMUL_AB 0xfe00007f +#define MATCH_FDIV_AB 0x1e000053 +#define MASK_FDIV_AB 0xfe00007f +#define MATCH_FSQRT_AB 0x5e000053 +#define MASK_FSQRT_AB 0xfff0007f +#define MATCH_FSGNJ_AB 0x26000053 +#define MASK_FSGNJ_AB 0xfe00707f +#define MATCH_FSGNJN_AB 0x26001053 +#define MASK_FSGNJN_AB 0xfe00707f +#define MATCH_FSGNJX_AB 0x26002053 +#define MASK_FSGNJX_AB 0xfe00707f +#define MATCH_FMIN_AB 0x2e000053 +#define MASK_FMIN_AB 0xfe00707f +#define MATCH_FMAX_AB 0x2e001053 +#define MASK_FMAX_AB 0xfe00707f +#define MATCH_FEQ_AB 0xa6002053 +#define MASK_FEQ_AB 0xfe00707f +#define MATCH_FLT_AB 0xa6001053 +#define MASK_FLT_AB 0xfe00707f +#define MATCH_FLE_AB 0xa6000053 +#define MASK_FLE_AB 0xfe00707f +#define MATCH_FCVT_W_AB 0xc6000053 +#define MASK_FCVT_W_AB 0xfff0007f +#define MATCH_FCVT_WU_AB 0xc6100053 +#define MASK_FCVT_WU_AB 0xfff0007f +#define MATCH_FCVT_AB_W 0xd6000053 +#define MASK_FCVT_AB_W 0xfff0007f +#define MATCH_FCVT_AB_WU 0xd6100053 +#define MASK_FCVT_AB_WU 0xfff0007f +#define MATCH_FMV_X_AB 0xe6000053 +#define MASK_FMV_X_AB 0xfff0707f +#define MATCH_FCLASS_AB 0xe6001053 +#define MASK_FCLASS_AB 0xfff0707f +#define MATCH_FMV_AB_X 0xf6000053 +#define MASK_FMV_AB_X 0xfff0707f +#define MATCH_FCVT_L_AB 0xc6200053 +#define MASK_FCVT_L_AB 0xfff0007f +#define MATCH_FCVT_LU_AB 0xc6300053 +#define MASK_FCVT_LU_AB 0xfff0007f +#define MATCH_FCVT_AB_L 0xd6200053 +#define MASK_FCVT_AB_L 0xfff0007f +#define MATCH_FCVT_AB_LU 0xd6300053 +#define MASK_FCVT_AB_LU 0xfff0007f +#define MATCH_FCVT_S_AB 0x40300053 +#define MASK_FCVT_S_AB 0xfff0707f +#define MATCH_FCVT_AB_S 0x46000053 +#define MASK_FCVT_AB_S 0xfff0007f +#define MATCH_FCVT_D_AB 0x42300053 +#define MASK_FCVT_D_AB 0xfff0707f +#define MATCH_FCVT_AB_D 0x46100053 +#define MASK_FCVT_AB_D 0xfff0007f +#define MATCH_FCVT_H_AB 0x44300053 +#define MASK_FCVT_H_AB 0xfff0707f +#define MATCH_FCVT_AB_H 0x46200053 +#define MASK_FCVT_AB_H 0xfff0007f +#define MATCH_FCVT_AH_AB 0x44300053 +#define MASK_FCVT_AH_AB 0xfff0707f +#define MATCH_FCVT_AB_AH 0x46200053 +#define MASK_FCVT_AB_AH 0xfff0007f +#define MATCH_FCVT_B_B 0x46300053 +#define MASK_FCVT_B_B 0xfff0707f +#define MATCH_FCVT_AB_B 0x46300053 +#define MASK_FCVT_AB_B 0xfff0707f +#define MATCH_FCVT_B_AB 0x46300053 +#define MASK_FCVT_B_AB 0xfff0707f +#define MATCH_FCVT_AB_AB 0x46300053 +#define MASK_FCVT_AB_AB 0xfff0707f +#define MATCH_SCFGRI 0x102b +#define MASK_SCFGRI 0xff07f +#define MATCH_SCFGWI 0x202b +#define MASK_SCFGWI 0x7fff +#define MATCH_SCFGR 0x902b +#define MASK_SCFGR 0xfe0ff07f +#define MATCH_SCFGW 0x20ab +#define MASK_SCFGW 0xfe007fff +#define MATCH_ECALL 0x73 +#define MASK_ECALL 0xffffffff +#define MATCH_EBREAK 0x100073 +#define MASK_EBREAK 0xffffffff +#define MATCH_URET 0x200073 +#define MASK_URET 0xffffffff +#define MATCH_SRET 0x10200073 +#define MASK_SRET 0xffffffff +#define MATCH_MRET 0x30200073 +#define MASK_MRET 0xffffffff +#define MATCH_DRET 0x7b200073 +#define MASK_DRET 0xffffffff +#define MATCH_SFENCE_VMA 0x12000073 +#define MASK_SFENCE_VMA 0xfe007fff +#define MATCH_WFI 0x10500073 +#define MASK_WFI 0xffffffff +#define MATCH_CSRRW 0x1073 +#define MASK_CSRRW 0x707f +#define MATCH_CSRRS 0x2073 +#define MASK_CSRRS 0x707f +#define MATCH_CSRRC 0x3073 +#define MASK_CSRRC 0x707f +#define MATCH_CSRRWI 0x5073 +#define MASK_CSRRWI 0x707f +#define MATCH_CSRRSI 0x6073 +#define MASK_CSRRSI 0x707f +#define MATCH_CSRRCI 0x7073 +#define MASK_CSRRCI 0x707f +#define CSR_FFLAGS 0x1 +#define CSR_FRM 0x2 +#define CSR_FCSR 0x3 +#define CSR_USTATUS 0x0 +#define CSR_UIE 0x4 +#define CSR_UTVEC 0x5 +#define CSR_VSTART 0x8 +#define CSR_VXSAT 0x9 +#define CSR_VXRM 0xa +#define CSR_VCSR 0xf +#define CSR_USCRATCH 0x40 +#define CSR_UEPC 0x41 +#define CSR_UCAUSE 0x42 +#define CSR_UTVAL 0x43 +#define CSR_UIP 0x44 +#define CSR_FMODE 0x800 +#define CSR_CYCLE 0xc00 +#define CSR_TIME 0xc01 +#define CSR_INSTRET 0xc02 +#define CSR_HPMCOUNTER3 0xc03 +#define CSR_HPMCOUNTER4 0xc04 +#define CSR_HPMCOUNTER5 0xc05 +#define CSR_HPMCOUNTER6 0xc06 +#define CSR_HPMCOUNTER7 0xc07 +#define CSR_HPMCOUNTER8 0xc08 +#define CSR_HPMCOUNTER9 0xc09 +#define CSR_HPMCOUNTER10 0xc0a +#define CSR_HPMCOUNTER11 0xc0b +#define CSR_HPMCOUNTER12 0xc0c +#define CSR_HPMCOUNTER13 0xc0d +#define CSR_HPMCOUNTER14 0xc0e +#define CSR_HPMCOUNTER15 0xc0f +#define CSR_HPMCOUNTER16 0xc10 +#define CSR_HPMCOUNTER17 0xc11 +#define CSR_HPMCOUNTER18 0xc12 +#define CSR_HPMCOUNTER19 0xc13 +#define CSR_HPMCOUNTER20 0xc14 +#define CSR_HPMCOUNTER21 0xc15 +#define CSR_HPMCOUNTER22 0xc16 +#define CSR_HPMCOUNTER23 0xc17 +#define CSR_HPMCOUNTER24 0xc18 +#define CSR_HPMCOUNTER25 0xc19 +#define CSR_HPMCOUNTER26 0xc1a +#define CSR_HPMCOUNTER27 0xc1b +#define CSR_HPMCOUNTER28 0xc1c +#define CSR_HPMCOUNTER29 0xc1d +#define CSR_HPMCOUNTER30 0xc1e +#define CSR_HPMCOUNTER31 0xc1f +#define CSR_VL 0xc20 +#define CSR_VTYPE 0xc21 +#define CSR_VLENB 0xc22 +#define CSR_MTYPE 0xc43 +#define CSR_TILEM 0xc40 +#define CSR_TILEK 0xc42 +#define CSR_TILEN 0xc41 +#define CSR_SSTATUS 0x100 +#define CSR_SEDELEG 0x102 +#define CSR_SIDELEG 0x103 +#define CSR_SIE 0x104 +#define CSR_STVEC 0x105 +#define CSR_SCOUNTEREN 0x106 +#define CSR_SSCRATCH 0x140 +#define CSR_SEPC 0x141 +#define CSR_SCAUSE 0x142 +#define CSR_STVAL 0x143 +#define CSR_SIP 0x144 +#define CSR_SATP 0x180 +#define CSR_VSSTATUS 0x200 +#define CSR_VSIE 0x204 +#define CSR_VSTVEC 0x205 +#define CSR_VSSCRATCH 0x240 +#define CSR_VSEPC 0x241 +#define CSR_VSCAUSE 0x242 +#define CSR_VSTVAL 0x243 +#define CSR_VSIP 0x244 +#define CSR_VSATP 0x280 +#define CSR_HSTATUS 0x600 +#define CSR_HEDELEG 0x602 +#define CSR_HIDELEG 0x603 +#define CSR_HIE 0x604 +#define CSR_HTIMEDELTA 0x605 +#define CSR_HCOUNTEREN 0x606 +#define CSR_HGEIE 0x607 +#define CSR_HTVAL 0x643 +#define CSR_HIP 0x644 +#define CSR_HVIP 0x645 +#define CSR_HTINST 0x64a +#define CSR_HGATP 0x680 +#define CSR_HGEIP 0xe12 +#define CSR_UTVT 0x7 +#define CSR_UNXTI 0x45 +#define CSR_UINTSTATUS 0x46 +#define CSR_USCRATCHCSW 0x48 +#define CSR_USCRATCHCSWL 0x49 +#define CSR_STVT 0x107 +#define CSR_SNXTI 0x145 +#define CSR_SINTSTATUS 0x146 +#define CSR_SSCRATCHCSW 0x148 +#define CSR_SSCRATCHCSWL 0x149 +#define CSR_MTVT 0x307 +#define CSR_MNXTI 0x345 +#define CSR_MINTSTATUS 0x346 +#define CSR_MSCRATCHCSW 0x348 +#define CSR_MSCRATCHCSWL 0x349 +#define CSR_MSTATUS 0x300 +#define CSR_MISA 0x301 +#define CSR_MEDELEG 0x302 +#define CSR_MIDELEG 0x303 +#define CSR_MIE 0x304 +#define CSR_MTVEC 0x305 +#define CSR_MCOUNTEREN 0x306 +#define CSR_MCOUNTINHIBIT 0x320 +#define CSR_MSCRATCH 0x340 +#define CSR_MEPC 0x341 +#define CSR_MCAUSE 0x342 +#define CSR_MTVAL 0x343 +#define CSR_MIP 0x344 +#define CSR_MTINST 0x34a +#define CSR_MTVAL2 0x34b +#define CSR_PMPCFG0 0x3a0 +#define CSR_PMPCFG1 0x3a1 +#define CSR_PMPCFG2 0x3a2 +#define CSR_PMPCFG3 0x3a3 +#define CSR_PMPADDR0 0x3b0 +#define CSR_PMPADDR1 0x3b1 +#define CSR_PMPADDR2 0x3b2 +#define CSR_PMPADDR3 0x3b3 +#define CSR_PMPADDR4 0x3b4 +#define CSR_PMPADDR5 0x3b5 +#define CSR_PMPADDR6 0x3b6 +#define CSR_PMPADDR7 0x3b7 +#define CSR_PMPADDR8 0x3b8 +#define CSR_PMPADDR9 0x3b9 +#define CSR_PMPADDR10 0x3ba +#define CSR_PMPADDR11 0x3bb +#define CSR_PMPADDR12 0x3bc +#define CSR_PMPADDR13 0x3bd +#define CSR_PMPADDR14 0x3be +#define CSR_PMPADDR15 0x3bf +#define CSR_TSELECT 0x7a0 +#define CSR_TDATA1 0x7a1 +#define CSR_TDATA2 0x7a2 +#define CSR_TDATA3 0x7a3 +#define CSR_DCSR 0x7b0 +#define CSR_DPC 0x7b1 +#define CSR_DSCRATCH0 0x7b2 +#define CSR_DSCRATCH1 0x7b3 +#define CSR_MCYCLE 0xb00 +#define CSR_MINSTRET 0xb02 +#define CSR_MHPMCOUNTER3 0xb03 +#define CSR_MHPMCOUNTER4 0xb04 +#define CSR_MHPMCOUNTER5 0xb05 +#define CSR_MHPMCOUNTER6 0xb06 +#define CSR_MHPMCOUNTER7 0xb07 +#define CSR_MHPMCOUNTER8 0xb08 +#define CSR_MHPMCOUNTER9 0xb09 +#define CSR_MHPMCOUNTER10 0xb0a +#define CSR_MHPMCOUNTER11 0xb0b +#define CSR_MHPMCOUNTER12 0xb0c +#define CSR_MHPMCOUNTER13 0xb0d +#define CSR_MHPMCOUNTER14 0xb0e +#define CSR_MHPMCOUNTER15 0xb0f +#define CSR_MHPMCOUNTER16 0xb10 +#define CSR_MHPMCOUNTER17 0xb11 +#define CSR_MHPMCOUNTER18 0xb12 +#define CSR_MHPMCOUNTER19 0xb13 +#define CSR_MHPMCOUNTER20 0xb14 +#define CSR_MHPMCOUNTER21 0xb15 +#define CSR_MHPMCOUNTER22 0xb16 +#define CSR_MHPMCOUNTER23 0xb17 +#define CSR_MHPMCOUNTER24 0xb18 +#define CSR_MHPMCOUNTER25 0xb19 +#define CSR_MHPMCOUNTER26 0xb1a +#define CSR_MHPMCOUNTER27 0xb1b +#define CSR_MHPMCOUNTER28 0xb1c +#define CSR_MHPMCOUNTER29 0xb1d +#define CSR_MHPMCOUNTER30 0xb1e +#define CSR_MHPMCOUNTER31 0xb1f +#define CSR_MHPMEVENT3 0x323 +#define CSR_MHPMEVENT4 0x324 +#define CSR_MHPMEVENT5 0x325 +#define CSR_MHPMEVENT6 0x326 +#define CSR_MHPMEVENT7 0x327 +#define CSR_MHPMEVENT8 0x328 +#define CSR_MHPMEVENT9 0x329 +#define CSR_MHPMEVENT10 0x32a +#define CSR_MHPMEVENT11 0x32b +#define CSR_MHPMEVENT12 0x32c +#define CSR_MHPMEVENT13 0x32d +#define CSR_MHPMEVENT14 0x32e +#define CSR_MHPMEVENT15 0x32f +#define CSR_MHPMEVENT16 0x330 +#define CSR_MHPMEVENT17 0x331 +#define CSR_MHPMEVENT18 0x332 +#define CSR_MHPMEVENT19 0x333 +#define CSR_MHPMEVENT20 0x334 +#define CSR_MHPMEVENT21 0x335 +#define CSR_MHPMEVENT22 0x336 +#define CSR_MHPMEVENT23 0x337 +#define CSR_MHPMEVENT24 0x338 +#define CSR_MHPMEVENT25 0x339 +#define CSR_MHPMEVENT26 0x33a +#define CSR_MHPMEVENT27 0x33b +#define CSR_MHPMEVENT28 0x33c +#define CSR_MHPMEVENT29 0x33d +#define CSR_MHPMEVENT30 0x33e +#define CSR_MHPMEVENT31 0x33f +#define CSR_TRACE 0x7d0 +#define CSR_MVENDORID 0xf11 +#define CSR_MARCHID 0xf12 +#define CSR_MIMPID 0xf13 +#define CSR_MHARTID 0xf14 +#define CSR_SSR 0x7c0 +#define CSR_FPMODE 0x7c1 +#define CSR_HTIMEDELTAH 0x615 +#define CSR_CYCLEH 0xc80 +#define CSR_TIMEH 0xc81 +#define CSR_INSTRETH 0xc82 +#define CSR_HPMCOUNTER3H 0xc83 +#define CSR_HPMCOUNTER4H 0xc84 +#define CSR_HPMCOUNTER5H 0xc85 +#define CSR_HPMCOUNTER6H 0xc86 +#define CSR_HPMCOUNTER7H 0xc87 +#define CSR_HPMCOUNTER8H 0xc88 +#define CSR_HPMCOUNTER9H 0xc89 +#define CSR_HPMCOUNTER10H 0xc8a +#define CSR_HPMCOUNTER11H 0xc8b +#define CSR_HPMCOUNTER12H 0xc8c +#define CSR_HPMCOUNTER13H 0xc8d +#define CSR_HPMCOUNTER14H 0xc8e +#define CSR_HPMCOUNTER15H 0xc8f +#define CSR_HPMCOUNTER16H 0xc90 +#define CSR_HPMCOUNTER17H 0xc91 +#define CSR_HPMCOUNTER18H 0xc92 +#define CSR_HPMCOUNTER19H 0xc93 +#define CSR_HPMCOUNTER20H 0xc94 +#define CSR_HPMCOUNTER21H 0xc95 +#define CSR_HPMCOUNTER22H 0xc96 +#define CSR_HPMCOUNTER23H 0xc97 +#define CSR_HPMCOUNTER24H 0xc98 +#define CSR_HPMCOUNTER25H 0xc99 +#define CSR_HPMCOUNTER26H 0xc9a +#define CSR_HPMCOUNTER27H 0xc9b +#define CSR_HPMCOUNTER28H 0xc9c +#define CSR_HPMCOUNTER29H 0xc9d +#define CSR_HPMCOUNTER30H 0xc9e +#define CSR_HPMCOUNTER31H 0xc9f +#define CSR_MSTATUSH 0x310 +#define CSR_MCYCLEH 0xb80 +#define CSR_MINSTRETH 0xb82 +#define CSR_MHPMCOUNTER3H 0xb83 +#define CSR_MHPMCOUNTER4H 0xb84 +#define CSR_MHPMCOUNTER5H 0xb85 +#define CSR_MHPMCOUNTER6H 0xb86 +#define CSR_MHPMCOUNTER7H 0xb87 +#define CSR_MHPMCOUNTER8H 0xb88 +#define CSR_MHPMCOUNTER9H 0xb89 +#define CSR_MHPMCOUNTER10H 0xb8a +#define CSR_MHPMCOUNTER11H 0xb8b +#define CSR_MHPMCOUNTER12H 0xb8c +#define CSR_MHPMCOUNTER13H 0xb8d +#define CSR_MHPMCOUNTER14H 0xb8e +#define CSR_MHPMCOUNTER15H 0xb8f +#define CSR_MHPMCOUNTER16H 0xb90 +#define CSR_MHPMCOUNTER17H 0xb91 +#define CSR_MHPMCOUNTER18H 0xb92 +#define CSR_MHPMCOUNTER19H 0xb93 +#define CSR_MHPMCOUNTER20H 0xb94 +#define CSR_MHPMCOUNTER21H 0xb95 +#define CSR_MHPMCOUNTER22H 0xb96 +#define CSR_MHPMCOUNTER23H 0xb97 +#define CSR_MHPMCOUNTER24H 0xb98 +#define CSR_MHPMCOUNTER25H 0xb99 +#define CSR_MHPMCOUNTER26H 0xb9a +#define CSR_MHPMCOUNTER27H 0xb9b +#define CSR_MHPMCOUNTER28H 0xb9c +#define CSR_MHPMCOUNTER29H 0xb9d +#define CSR_MHPMCOUNTER30H 0xb9e +#define CSR_MHPMCOUNTER31H 0xb9f +#define CAUSE_MISALIGNED_FETCH 0x0 +#define CAUSE_FETCH_ACCESS 0x1 +#define CAUSE_ILLEGAL_INSTRUCTION 0x2 +#define CAUSE_BREAKPOINT 0x3 +#define CAUSE_MISALIGNED_LOAD 0x4 +#define CAUSE_LOAD_ACCESS 0x5 +#define CAUSE_MISALIGNED_STORE 0x6 +#define CAUSE_STORE_ACCESS 0x7 +#define CAUSE_USER_ECALL 0x8 +#define CAUSE_SUPERVISOR_ECALL 0x9 +#define CAUSE_VIRTUAL_SUPERVISOR_ECALL 0xa +#define CAUSE_MACHINE_ECALL 0xb +#define CAUSE_FETCH_PAGE_FAULT 0xc +#define CAUSE_LOAD_PAGE_FAULT 0xd +#define CAUSE_STORE_PAGE_FAULT 0xf +#define CAUSE_FETCH_GUEST_PAGE_FAULT 0x14 +#define CAUSE_LOAD_GUEST_PAGE_FAULT 0x15 +#define CAUSE_VIRTUAL_INSTRUCTION 0x16 +#define CAUSE_STORE_GUEST_PAGE_FAULT 0x17 +#endif +#ifdef DECLARE_INSN +DECLARE_INSN(custom0, MATCH_CUSTOM0, MASK_CUSTOM0) +DECLARE_INSN(custom0_rs1, MATCH_CUSTOM0_RS1, MASK_CUSTOM0_RS1) +DECLARE_INSN(custom0_rs1_rs2, MATCH_CUSTOM0_RS1_RS2, MASK_CUSTOM0_RS1_RS2) +DECLARE_INSN(custom0_rd, MATCH_CUSTOM0_RD, MASK_CUSTOM0_RD) +DECLARE_INSN(custom0_rd_rs1, MATCH_CUSTOM0_RD_RS1, MASK_CUSTOM0_RD_RS1) +DECLARE_INSN(custom0_rd_rs1_rs2, MATCH_CUSTOM0_RD_RS1_RS2, MASK_CUSTOM0_RD_RS1_RS2) +DECLARE_INSN(custom1, MATCH_CUSTOM1, MASK_CUSTOM1) +DECLARE_INSN(custom1_rs1, MATCH_CUSTOM1_RS1, MASK_CUSTOM1_RS1) +DECLARE_INSN(custom1_rs1_rs2, MATCH_CUSTOM1_RS1_RS2, MASK_CUSTOM1_RS1_RS2) +DECLARE_INSN(custom1_rd, MATCH_CUSTOM1_RD, MASK_CUSTOM1_RD) +DECLARE_INSN(custom1_rd_rs1, MATCH_CUSTOM1_RD_RS1, MASK_CUSTOM1_RD_RS1) +DECLARE_INSN(custom1_rd_rs1_rs2, MATCH_CUSTOM1_RD_RS1_RS2, MASK_CUSTOM1_RD_RS1_RS2) +DECLARE_INSN(custom2, MATCH_CUSTOM2, MASK_CUSTOM2) +DECLARE_INSN(custom2_rs1, MATCH_CUSTOM2_RS1, MASK_CUSTOM2_RS1) +DECLARE_INSN(custom2_rs1_rs2, MATCH_CUSTOM2_RS1_RS2, MASK_CUSTOM2_RS1_RS2) +DECLARE_INSN(custom2_rd, MATCH_CUSTOM2_RD, MASK_CUSTOM2_RD) +DECLARE_INSN(custom2_rd_rs1, MATCH_CUSTOM2_RD_RS1, MASK_CUSTOM2_RD_RS1) +DECLARE_INSN(custom2_rd_rs1_rs2, MATCH_CUSTOM2_RD_RS1_RS2, MASK_CUSTOM2_RD_RS1_RS2) +DECLARE_INSN(custom3, MATCH_CUSTOM3, MASK_CUSTOM3) +DECLARE_INSN(custom3_rs1, MATCH_CUSTOM3_RS1, MASK_CUSTOM3_RS1) +DECLARE_INSN(custom3_rs1_rs2, MATCH_CUSTOM3_RS1_RS2, MASK_CUSTOM3_RS1_RS2) +DECLARE_INSN(custom3_rd, MATCH_CUSTOM3_RD, MASK_CUSTOM3_RD) +DECLARE_INSN(custom3_rd_rs1, MATCH_CUSTOM3_RD_RS1, MASK_CUSTOM3_RD_RS1) +DECLARE_INSN(custom3_rd_rs1_rs2, MATCH_CUSTOM3_RD_RS1_RS2, MASK_CUSTOM3_RD_RS1_RS2) +DECLARE_INSN(dmsrc, MATCH_DMSRC, MASK_DMSRC) +DECLARE_INSN(dmdst, MATCH_DMDST, MASK_DMDST) +DECLARE_INSN(dmcpyi, MATCH_DMCPYI, MASK_DMCPYI) +DECLARE_INSN(dmcpy, MATCH_DMCPY, MASK_DMCPY) +DECLARE_INSN(dmstati, MATCH_DMSTATI, MASK_DMSTATI) +DECLARE_INSN(dmstat, MATCH_DMSTAT, MASK_DMSTAT) +DECLARE_INSN(dmstr, MATCH_DMSTR, MASK_DMSTR) +DECLARE_INSN(dmrep, MATCH_DMREP, MASK_DMREP) +DECLARE_INSN(frep_o, MATCH_FREP_O, MASK_FREP_O) +DECLARE_INSN(frep_i, MATCH_FREP_I, MASK_FREP_I) +DECLARE_INSN(irep, MATCH_IREP, MASK_IREP) +DECLARE_INSN(imv_x_w, MATCH_IMV_X_W, MASK_IMV_X_W) +DECLARE_INSN(imv_w_x, MATCH_IMV_W_X, MASK_IMV_W_X) +DECLARE_INSN(iaddi, MATCH_IADDI, MASK_IADDI) +DECLARE_INSN(islli, MATCH_ISLLI, MASK_ISLLI) +DECLARE_INSN(islti, MATCH_ISLTI, MASK_ISLTI) +DECLARE_INSN(isltiu, MATCH_ISLTIU, MASK_ISLTIU) +DECLARE_INSN(ixori, MATCH_IXORI, MASK_IXORI) +DECLARE_INSN(isrli, MATCH_ISRLI, MASK_ISRLI) +DECLARE_INSN(israi, MATCH_ISRAI, MASK_ISRAI) +DECLARE_INSN(iori, MATCH_IORI, MASK_IORI) +DECLARE_INSN(iandi, MATCH_IANDI, MASK_IANDI) +DECLARE_INSN(iadd, MATCH_IADD, MASK_IADD) +DECLARE_INSN(isub, MATCH_ISUB, MASK_ISUB) +DECLARE_INSN(isll, MATCH_ISLL, MASK_ISLL) +DECLARE_INSN(islt, MATCH_ISLT, MASK_ISLT) +DECLARE_INSN(isltu, MATCH_ISLTU, MASK_ISLTU) +DECLARE_INSN(ixor, MATCH_IXOR, MASK_IXOR) +DECLARE_INSN(isrl, MATCH_ISRL, MASK_ISRL) +DECLARE_INSN(isra, MATCH_ISRA, MASK_ISRA) +DECLARE_INSN(ior, MATCH_IOR, MASK_IOR) +DECLARE_INSN(iand, MATCH_IAND, MASK_IAND) +DECLARE_INSN(imadd, MATCH_IMADD, MASK_IMADD) +DECLARE_INSN(imsub, MATCH_IMSUB, MASK_IMSUB) +DECLARE_INSN(inmsub, MATCH_INMSUB, MASK_INMSUB) +DECLARE_INSN(inmadd, MATCH_INMADD, MASK_INMADD) +DECLARE_INSN(imul, MATCH_IMUL, MASK_IMUL) +DECLARE_INSN(imulh, MATCH_IMULH, MASK_IMULH) +DECLARE_INSN(imulhsu, MATCH_IMULHSU, MASK_IMULHSU) +DECLARE_INSN(imulhu, MATCH_IMULHU, MASK_IMULHU) +DECLARE_INSN(iandn, MATCH_IANDN, MASK_IANDN) +DECLARE_INSN(iorn, MATCH_IORN, MASK_IORN) +DECLARE_INSN(ixnor, MATCH_IXNOR, MASK_IXNOR) +DECLARE_INSN(islo, MATCH_ISLO, MASK_ISLO) +DECLARE_INSN(isro, MATCH_ISRO, MASK_ISRO) +DECLARE_INSN(irol, MATCH_IROL, MASK_IROL) +DECLARE_INSN(iror, MATCH_IROR, MASK_IROR) +DECLARE_INSN(isbclr, MATCH_ISBCLR, MASK_ISBCLR) +DECLARE_INSN(isbset, MATCH_ISBSET, MASK_ISBSET) +DECLARE_INSN(isbinv, MATCH_ISBINV, MASK_ISBINV) +DECLARE_INSN(isbext, MATCH_ISBEXT, MASK_ISBEXT) +DECLARE_INSN(igorc, MATCH_IGORC, MASK_IGORC) +DECLARE_INSN(igrev, MATCH_IGREV, MASK_IGREV) +DECLARE_INSN(isloi, MATCH_ISLOI, MASK_ISLOI) +DECLARE_INSN(isroi, MATCH_ISROI, MASK_ISROI) +DECLARE_INSN(irori, MATCH_IRORI, MASK_IRORI) +DECLARE_INSN(isbclri, MATCH_ISBCLRI, MASK_ISBCLRI) +DECLARE_INSN(isbseti, MATCH_ISBSETI, MASK_ISBSETI) +DECLARE_INSN(isbinvi, MATCH_ISBINVI, MASK_ISBINVI) +DECLARE_INSN(isbexti, MATCH_ISBEXTI, MASK_ISBEXTI) +DECLARE_INSN(igorci, MATCH_IGORCI, MASK_IGORCI) +DECLARE_INSN(igrevi, MATCH_IGREVI, MASK_IGREVI) +DECLARE_INSN(iclz, MATCH_ICLZ, MASK_ICLZ) +DECLARE_INSN(ictz, MATCH_ICTZ, MASK_ICTZ) +DECLARE_INSN(ipcnt, MATCH_IPCNT, MASK_IPCNT) +DECLARE_INSN(isext_b, MATCH_ISEXT_B, MASK_ISEXT_B) +DECLARE_INSN(isext_h, MATCH_ISEXT_H, MASK_ISEXT_H) +DECLARE_INSN(icrc32_b, MATCH_ICRC32_B, MASK_ICRC32_B) +DECLARE_INSN(icrc32_h, MATCH_ICRC32_H, MASK_ICRC32_H) +DECLARE_INSN(icrc32_w, MATCH_ICRC32_W, MASK_ICRC32_W) +DECLARE_INSN(icrc32c_b, MATCH_ICRC32C_B, MASK_ICRC32C_B) +DECLARE_INSN(icrc32c_h, MATCH_ICRC32C_H, MASK_ICRC32C_H) +DECLARE_INSN(icrc32c_w, MATCH_ICRC32C_W, MASK_ICRC32C_W) +DECLARE_INSN(ish1add, MATCH_ISH1ADD, MASK_ISH1ADD) +DECLARE_INSN(ish2add, MATCH_ISH2ADD, MASK_ISH2ADD) +DECLARE_INSN(ish3add, MATCH_ISH3ADD, MASK_ISH3ADD) +DECLARE_INSN(iclmul, MATCH_ICLMUL, MASK_ICLMUL) +DECLARE_INSN(iclmulr, MATCH_ICLMULR, MASK_ICLMULR) +DECLARE_INSN(iclmulh, MATCH_ICLMULH, MASK_ICLMULH) +DECLARE_INSN(imin, MATCH_IMIN, MASK_IMIN) +DECLARE_INSN(imax, MATCH_IMAX, MASK_IMAX) +DECLARE_INSN(iminu, MATCH_IMINU, MASK_IMINU) +DECLARE_INSN(imaxu, MATCH_IMAXU, MASK_IMAXU) +DECLARE_INSN(ishfl, MATCH_ISHFL, MASK_ISHFL) +DECLARE_INSN(iunshfl, MATCH_IUNSHFL, MASK_IUNSHFL) +DECLARE_INSN(ibext, MATCH_IBEXT, MASK_IBEXT) +DECLARE_INSN(ibdep, MATCH_IBDEP, MASK_IBDEP) +DECLARE_INSN(ipack, MATCH_IPACK, MASK_IPACK) +DECLARE_INSN(ipacku, MATCH_IPACKU, MASK_IPACKU) +DECLARE_INSN(ipackh, MATCH_IPACKH, MASK_IPACKH) +DECLARE_INSN(ibfp, MATCH_IBFP, MASK_IBFP) +DECLARE_INSN(ishfli, MATCH_ISHFLI, MASK_ISHFLI) +DECLARE_INSN(iunshfli, MATCH_IUNSHFLI, MASK_IUNSHFLI) +DECLARE_INSN(slli_rv32, MATCH_SLLI_RV32, MASK_SLLI_RV32) +DECLARE_INSN(srli_rv32, MATCH_SRLI_RV32, MASK_SRLI_RV32) +DECLARE_INSN(srai_rv32, MATCH_SRAI_RV32, MASK_SRAI_RV32) +DECLARE_INSN(frflags, MATCH_FRFLAGS, MASK_FRFLAGS) +DECLARE_INSN(fsflags, MATCH_FSFLAGS, MASK_FSFLAGS) +DECLARE_INSN(fsflagsi, MATCH_FSFLAGSI, MASK_FSFLAGSI) +DECLARE_INSN(frrm, MATCH_FRRM, MASK_FRRM) +DECLARE_INSN(fsrm, MATCH_FSRM, MASK_FSRM) +DECLARE_INSN(fsrmi, MATCH_FSRMI, MASK_FSRMI) +DECLARE_INSN(fscsr, MATCH_FSCSR, MASK_FSCSR) +DECLARE_INSN(frcsr, MATCH_FRCSR, MASK_FRCSR) +DECLARE_INSN(rdcycle, MATCH_RDCYCLE, MASK_RDCYCLE) +DECLARE_INSN(rdtime, MATCH_RDTIME, MASK_RDTIME) +DECLARE_INSN(rdinstret, MATCH_RDINSTRET, MASK_RDINSTRET) +DECLARE_INSN(rdcycleh, MATCH_RDCYCLEH, MASK_RDCYCLEH) +DECLARE_INSN(rdtimeh, MATCH_RDTIMEH, MASK_RDTIMEH) +DECLARE_INSN(rdinstreth, MATCH_RDINSTRETH, MASK_RDINSTRETH) +DECLARE_INSN(scall, MATCH_SCALL, MASK_SCALL) +DECLARE_INSN(sbreak, MATCH_SBREAK, MASK_SBREAK) +DECLARE_INSN(fmv_x_s, MATCH_FMV_X_S, MASK_FMV_X_S) +DECLARE_INSN(fmv_s_x, MATCH_FMV_S_X, MASK_FMV_S_X) +DECLARE_INSN(fence_tso, MATCH_FENCE_TSO, MASK_FENCE_TSO) +DECLARE_INSN(pause, MATCH_PAUSE, MASK_PAUSE) +DECLARE_INSN(mxmacc_vv, MATCH_MXMACC_VV, MASK_MXMACC_VV) +DECLARE_INSN(mxmacc_vx, MATCH_MXMACC_VX, MASK_MXMACC_VX) +DECLARE_INSN(mxdotp_vv, MATCH_MXDOTP_VV, MASK_MXDOTP_VV) +DECLARE_INSN(mxdotp_vx, MATCH_MXDOTP_VX, MASK_MXDOTP_VX) +DECLARE_INSN(mxfmacc_vv, MATCH_MXFMACC_VV, MASK_MXFMACC_VV) +DECLARE_INSN(mxfmacc_vf, MATCH_MXFMACC_VF, MASK_MXFMACC_VF) +DECLARE_INSN(mle8_v_a, MATCH_MLE8_V_A, MASK_MLE8_V_A) +DECLARE_INSN(mle8_v_b, MATCH_MLE8_V_B, MASK_MLE8_V_B) +DECLARE_INSN(mle8_v_c, MATCH_MLE8_V_C, MASK_MLE8_V_C) +DECLARE_INSN(mle16_v_a, MATCH_MLE16_V_A, MASK_MLE16_V_A) +DECLARE_INSN(mle16_v_b, MATCH_MLE16_V_B, MASK_MLE16_V_B) +DECLARE_INSN(mle16_v_c, MATCH_MLE16_V_C, MASK_MLE16_V_C) +DECLARE_INSN(mle32_v_a, MATCH_MLE32_V_A, MASK_MLE32_V_A) +DECLARE_INSN(mle32_v_b, MATCH_MLE32_V_B, MASK_MLE32_V_B) +DECLARE_INSN(mle32_v_c, MATCH_MLE32_V_C, MASK_MLE32_V_C) +DECLARE_INSN(mle64_v_a, MATCH_MLE64_V_A, MASK_MLE64_V_A) +DECLARE_INSN(mle64_v_b, MATCH_MLE64_V_B, MASK_MLE64_V_B) +DECLARE_INSN(mle64_v_c, MATCH_MLE64_V_C, MASK_MLE64_V_C) +DECLARE_INSN(mse8_v_a, MATCH_MSE8_V_A, MASK_MSE8_V_A) +DECLARE_INSN(mse8_v_b, MATCH_MSE8_V_B, MASK_MSE8_V_B) +DECLARE_INSN(mse8_v_c, MATCH_MSE8_V_C, MASK_MSE8_V_C) +DECLARE_INSN(mse16_v_a, MATCH_MSE16_V_A, MASK_MSE16_V_A) +DECLARE_INSN(mse16_v_b, MATCH_MSE16_V_B, MASK_MSE16_V_B) +DECLARE_INSN(mse16_v_c, MATCH_MSE16_V_C, MASK_MSE16_V_C) +DECLARE_INSN(mse32_v_a, MATCH_MSE32_V_A, MASK_MSE32_V_A) +DECLARE_INSN(mse32_v_b, MATCH_MSE32_V_B, MASK_MSE32_V_B) +DECLARE_INSN(mse32_v_c, MATCH_MSE32_V_C, MASK_MSE32_V_C) +DECLARE_INSN(mse64_v_a, MATCH_MSE64_V_A, MASK_MSE64_V_A) +DECLARE_INSN(mse64_v_b, MATCH_MSE64_V_B, MASK_MSE64_V_B) +DECLARE_INSN(mse64_v_c, MATCH_MSE64_V_C, MASK_MSE64_V_C) +DECLARE_INSN(msettilem, MATCH_MSETTILEM, MASK_MSETTILEM) +DECLARE_INSN(msettilek, MATCH_MSETTILEK, MASK_MSETTILEK) +DECLARE_INSN(msettilen, MATCH_MSETTILEN, MASK_MSETTILEN) +DECLARE_INSN(amoadd_w, MATCH_AMOADD_W, MASK_AMOADD_W) +DECLARE_INSN(amoxor_w, MATCH_AMOXOR_W, MASK_AMOXOR_W) +DECLARE_INSN(amoor_w, MATCH_AMOOR_W, MASK_AMOOR_W) +DECLARE_INSN(amoand_w, MATCH_AMOAND_W, MASK_AMOAND_W) +DECLARE_INSN(amomin_w, MATCH_AMOMIN_W, MASK_AMOMIN_W) +DECLARE_INSN(amomax_w, MATCH_AMOMAX_W, MASK_AMOMAX_W) +DECLARE_INSN(amominu_w, MATCH_AMOMINU_W, MASK_AMOMINU_W) +DECLARE_INSN(amomaxu_w, MATCH_AMOMAXU_W, MASK_AMOMAXU_W) +DECLARE_INSN(amoswap_w, MATCH_AMOSWAP_W, MASK_AMOSWAP_W) +DECLARE_INSN(lr_w, MATCH_LR_W, MASK_LR_W) +DECLARE_INSN(sc_w, MATCH_SC_W, MASK_SC_W) +DECLARE_INSN(andn, MATCH_ANDN, MASK_ANDN) +DECLARE_INSN(orn, MATCH_ORN, MASK_ORN) +DECLARE_INSN(xnor, MATCH_XNOR, MASK_XNOR) +DECLARE_INSN(slo, MATCH_SLO, MASK_SLO) +DECLARE_INSN(sro, MATCH_SRO, MASK_SRO) +DECLARE_INSN(rol, MATCH_ROL, MASK_ROL) +DECLARE_INSN(ror, MATCH_ROR, MASK_ROR) +DECLARE_INSN(sbclr, MATCH_SBCLR, MASK_SBCLR) +DECLARE_INSN(sbset, MATCH_SBSET, MASK_SBSET) +DECLARE_INSN(sbinv, MATCH_SBINV, MASK_SBINV) +DECLARE_INSN(sbext, MATCH_SBEXT, MASK_SBEXT) +DECLARE_INSN(gorc, MATCH_GORC, MASK_GORC) +DECLARE_INSN(grev, MATCH_GREV, MASK_GREV) +DECLARE_INSN(sloi, MATCH_SLOI, MASK_SLOI) +DECLARE_INSN(sroi, MATCH_SROI, MASK_SROI) +DECLARE_INSN(rori, MATCH_RORI, MASK_RORI) +DECLARE_INSN(sbclri, MATCH_SBCLRI, MASK_SBCLRI) +DECLARE_INSN(sbseti, MATCH_SBSETI, MASK_SBSETI) +DECLARE_INSN(sbinvi, MATCH_SBINVI, MASK_SBINVI) +DECLARE_INSN(sbexti, MATCH_SBEXTI, MASK_SBEXTI) +DECLARE_INSN(gorci, MATCH_GORCI, MASK_GORCI) +DECLARE_INSN(grevi, MATCH_GREVI, MASK_GREVI) +DECLARE_INSN(cmix, MATCH_CMIX, MASK_CMIX) +DECLARE_INSN(cmov, MATCH_CMOV, MASK_CMOV) +DECLARE_INSN(fsl, MATCH_FSL, MASK_FSL) +DECLARE_INSN(fsr, MATCH_FSR, MASK_FSR) +DECLARE_INSN(fsri, MATCH_FSRI, MASK_FSRI) +DECLARE_INSN(clz, MATCH_CLZ, MASK_CLZ) +DECLARE_INSN(ctz, MATCH_CTZ, MASK_CTZ) +DECLARE_INSN(pcnt, MATCH_PCNT, MASK_PCNT) +DECLARE_INSN(sext_b, MATCH_SEXT_B, MASK_SEXT_B) +DECLARE_INSN(sext_h, MATCH_SEXT_H, MASK_SEXT_H) +DECLARE_INSN(crc32_b, MATCH_CRC32_B, MASK_CRC32_B) +DECLARE_INSN(crc32_h, MATCH_CRC32_H, MASK_CRC32_H) +DECLARE_INSN(crc32_w, MATCH_CRC32_W, MASK_CRC32_W) +DECLARE_INSN(crc32c_b, MATCH_CRC32C_B, MASK_CRC32C_B) +DECLARE_INSN(crc32c_h, MATCH_CRC32C_H, MASK_CRC32C_H) +DECLARE_INSN(crc32c_w, MATCH_CRC32C_W, MASK_CRC32C_W) +DECLARE_INSN(sh1add, MATCH_SH1ADD, MASK_SH1ADD) +DECLARE_INSN(sh2add, MATCH_SH2ADD, MASK_SH2ADD) +DECLARE_INSN(sh3add, MATCH_SH3ADD, MASK_SH3ADD) +DECLARE_INSN(clmul, MATCH_CLMUL, MASK_CLMUL) +DECLARE_INSN(clmulr, MATCH_CLMULR, MASK_CLMULR) +DECLARE_INSN(clmulh, MATCH_CLMULH, MASK_CLMULH) +DECLARE_INSN(min, MATCH_MIN, MASK_MIN) +DECLARE_INSN(max, MATCH_MAX, MASK_MAX) +DECLARE_INSN(minu, MATCH_MINU, MASK_MINU) +DECLARE_INSN(maxu, MATCH_MAXU, MASK_MAXU) +DECLARE_INSN(shfl, MATCH_SHFL, MASK_SHFL) +DECLARE_INSN(unshfl, MATCH_UNSHFL, MASK_UNSHFL) +DECLARE_INSN(bext, MATCH_BEXT, MASK_BEXT) +DECLARE_INSN(bdep, MATCH_BDEP, MASK_BDEP) +DECLARE_INSN(pack, MATCH_PACK, MASK_PACK) +DECLARE_INSN(packu, MATCH_PACKU, MASK_PACKU) +DECLARE_INSN(packh, MATCH_PACKH, MASK_PACKH) +DECLARE_INSN(bfp, MATCH_BFP, MASK_BFP) +DECLARE_INSN(shfli, MATCH_SHFLI, MASK_SHFLI) +DECLARE_INSN(unshfli, MATCH_UNSHFLI, MASK_UNSHFLI) +DECLARE_INSN(c_srli_rv32, MATCH_C_SRLI_RV32, MASK_C_SRLI_RV32) +DECLARE_INSN(c_srai_rv32, MATCH_C_SRAI_RV32, MASK_C_SRAI_RV32) +DECLARE_INSN(c_slli_rv32, MATCH_C_SLLI_RV32, MASK_C_SLLI_RV32) +DECLARE_INSN(fadd_d, MATCH_FADD_D, MASK_FADD_D) +DECLARE_INSN(fsub_d, MATCH_FSUB_D, MASK_FSUB_D) +DECLARE_INSN(fmul_d, MATCH_FMUL_D, MASK_FMUL_D) +DECLARE_INSN(fdiv_d, MATCH_FDIV_D, MASK_FDIV_D) +DECLARE_INSN(fsgnj_d, MATCH_FSGNJ_D, MASK_FSGNJ_D) +DECLARE_INSN(fsgnjn_d, MATCH_FSGNJN_D, MASK_FSGNJN_D) +DECLARE_INSN(fsgnjx_d, MATCH_FSGNJX_D, MASK_FSGNJX_D) +DECLARE_INSN(fmin_d, MATCH_FMIN_D, MASK_FMIN_D) +DECLARE_INSN(fmax_d, MATCH_FMAX_D, MASK_FMAX_D) +DECLARE_INSN(fcvt_s_d, MATCH_FCVT_S_D, MASK_FCVT_S_D) +DECLARE_INSN(fcvt_d_s, MATCH_FCVT_D_S, MASK_FCVT_D_S) +DECLARE_INSN(fsqrt_d, MATCH_FSQRT_D, MASK_FSQRT_D) +DECLARE_INSN(fle_d, MATCH_FLE_D, MASK_FLE_D) +DECLARE_INSN(flt_d, MATCH_FLT_D, MASK_FLT_D) +DECLARE_INSN(feq_d, MATCH_FEQ_D, MASK_FEQ_D) +DECLARE_INSN(fcvt_w_d, MATCH_FCVT_W_D, MASK_FCVT_W_D) +DECLARE_INSN(fcvt_wu_d, MATCH_FCVT_WU_D, MASK_FCVT_WU_D) +DECLARE_INSN(fclass_d, MATCH_FCLASS_D, MASK_FCLASS_D) +DECLARE_INSN(fcvt_d_w, MATCH_FCVT_D_W, MASK_FCVT_D_W) +DECLARE_INSN(fcvt_d_wu, MATCH_FCVT_D_WU, MASK_FCVT_D_WU) +DECLARE_INSN(fld, MATCH_FLD, MASK_FLD) +DECLARE_INSN(fsd, MATCH_FSD, MASK_FSD) +DECLARE_INSN(fmadd_d, MATCH_FMADD_D, MASK_FMADD_D) +DECLARE_INSN(fmsub_d, MATCH_FMSUB_D, MASK_FMSUB_D) +DECLARE_INSN(fnmsub_d, MATCH_FNMSUB_D, MASK_FNMSUB_D) +DECLARE_INSN(fnmadd_d, MATCH_FNMADD_D, MASK_FNMADD_D) +DECLARE_INSN(fadd_s, MATCH_FADD_S, MASK_FADD_S) +DECLARE_INSN(fsub_s, MATCH_FSUB_S, MASK_FSUB_S) +DECLARE_INSN(fmul_s, MATCH_FMUL_S, MASK_FMUL_S) +DECLARE_INSN(fdiv_s, MATCH_FDIV_S, MASK_FDIV_S) +DECLARE_INSN(fsgnj_s, MATCH_FSGNJ_S, MASK_FSGNJ_S) +DECLARE_INSN(fsgnjn_s, MATCH_FSGNJN_S, MASK_FSGNJN_S) +DECLARE_INSN(fsgnjx_s, MATCH_FSGNJX_S, MASK_FSGNJX_S) +DECLARE_INSN(fmin_s, MATCH_FMIN_S, MASK_FMIN_S) +DECLARE_INSN(fmax_s, MATCH_FMAX_S, MASK_FMAX_S) +DECLARE_INSN(fsqrt_s, MATCH_FSQRT_S, MASK_FSQRT_S) +DECLARE_INSN(fle_s, MATCH_FLE_S, MASK_FLE_S) +DECLARE_INSN(flt_s, MATCH_FLT_S, MASK_FLT_S) +DECLARE_INSN(feq_s, MATCH_FEQ_S, MASK_FEQ_S) +DECLARE_INSN(fcvt_w_s, MATCH_FCVT_W_S, MASK_FCVT_W_S) +DECLARE_INSN(fcvt_wu_s, MATCH_FCVT_WU_S, MASK_FCVT_WU_S) +DECLARE_INSN(fmv_x_w, MATCH_FMV_X_W, MASK_FMV_X_W) +DECLARE_INSN(fclass_s, MATCH_FCLASS_S, MASK_FCLASS_S) +DECLARE_INSN(fcvt_s_w, MATCH_FCVT_S_W, MASK_FCVT_S_W) +DECLARE_INSN(fcvt_s_wu, MATCH_FCVT_S_WU, MASK_FCVT_S_WU) +DECLARE_INSN(fmv_w_x, MATCH_FMV_W_X, MASK_FMV_W_X) +DECLARE_INSN(flw, MATCH_FLW, MASK_FLW) +DECLARE_INSN(fsw, MATCH_FSW, MASK_FSW) +DECLARE_INSN(fmadd_s, MATCH_FMADD_S, MASK_FMADD_S) +DECLARE_INSN(fmsub_s, MATCH_FMSUB_S, MASK_FMSUB_S) +DECLARE_INSN(fnmsub_s, MATCH_FNMSUB_S, MASK_FNMSUB_S) +DECLARE_INSN(fnmadd_s, MATCH_FNMADD_S, MASK_FNMADD_S) +DECLARE_INSN(hfence_vvma, MATCH_HFENCE_VVMA, MASK_HFENCE_VVMA) +DECLARE_INSN(hfence_gvma, MATCH_HFENCE_GVMA, MASK_HFENCE_GVMA) +DECLARE_INSN(hlv_b, MATCH_HLV_B, MASK_HLV_B) +DECLARE_INSN(hlv_bu, MATCH_HLV_BU, MASK_HLV_BU) +DECLARE_INSN(hlv_h, MATCH_HLV_H, MASK_HLV_H) +DECLARE_INSN(hlv_hu, MATCH_HLV_HU, MASK_HLV_HU) +DECLARE_INSN(hlvx_hu, MATCH_HLVX_HU, MASK_HLVX_HU) +DECLARE_INSN(hlv_w, MATCH_HLV_W, MASK_HLV_W) +DECLARE_INSN(hlvx_wu, MATCH_HLVX_WU, MASK_HLVX_WU) +DECLARE_INSN(hsv_b, MATCH_HSV_B, MASK_HSV_B) +DECLARE_INSN(hsv_h, MATCH_HSV_H, MASK_HSV_H) +DECLARE_INSN(hsv_w, MATCH_HSV_W, MASK_HSV_W) +DECLARE_INSN(beq, MATCH_BEQ, MASK_BEQ) +DECLARE_INSN(bne, MATCH_BNE, MASK_BNE) +DECLARE_INSN(blt, MATCH_BLT, MASK_BLT) +DECLARE_INSN(bge, MATCH_BGE, MASK_BGE) +DECLARE_INSN(bltu, MATCH_BLTU, MASK_BLTU) +DECLARE_INSN(bgeu, MATCH_BGEU, MASK_BGEU) +DECLARE_INSN(jalr, MATCH_JALR, MASK_JALR) +DECLARE_INSN(jal, MATCH_JAL, MASK_JAL) +DECLARE_INSN(lui, MATCH_LUI, MASK_LUI) +DECLARE_INSN(auipc, MATCH_AUIPC, MASK_AUIPC) +DECLARE_INSN(addi, MATCH_ADDI, MASK_ADDI) +DECLARE_INSN(slli, MATCH_SLLI, MASK_SLLI) +DECLARE_INSN(slti, MATCH_SLTI, MASK_SLTI) +DECLARE_INSN(sltiu, MATCH_SLTIU, MASK_SLTIU) +DECLARE_INSN(xori, MATCH_XORI, MASK_XORI) +DECLARE_INSN(srli, MATCH_SRLI, MASK_SRLI) +DECLARE_INSN(srai, MATCH_SRAI, MASK_SRAI) +DECLARE_INSN(ori, MATCH_ORI, MASK_ORI) +DECLARE_INSN(andi, MATCH_ANDI, MASK_ANDI) +DECLARE_INSN(add, MATCH_ADD, MASK_ADD) +DECLARE_INSN(sub, MATCH_SUB, MASK_SUB) +DECLARE_INSN(sll, MATCH_SLL, MASK_SLL) +DECLARE_INSN(slt, MATCH_SLT, MASK_SLT) +DECLARE_INSN(sltu, MATCH_SLTU, MASK_SLTU) +DECLARE_INSN(xor, MATCH_XOR, MASK_XOR) +DECLARE_INSN(srl, MATCH_SRL, MASK_SRL) +DECLARE_INSN(sra, MATCH_SRA, MASK_SRA) +DECLARE_INSN(or, MATCH_OR, MASK_OR) +DECLARE_INSN(and, MATCH_AND, MASK_AND) +DECLARE_INSN(lb, MATCH_LB, MASK_LB) +DECLARE_INSN(lh, MATCH_LH, MASK_LH) +DECLARE_INSN(lw, MATCH_LW, MASK_LW) +DECLARE_INSN(lbu, MATCH_LBU, MASK_LBU) +DECLARE_INSN(lhu, MATCH_LHU, MASK_LHU) +DECLARE_INSN(sb, MATCH_SB, MASK_SB) +DECLARE_INSN(sh, MATCH_SH, MASK_SH) +DECLARE_INSN(sw, MATCH_SW, MASK_SW) +DECLARE_INSN(fence, MATCH_FENCE, MASK_FENCE) +DECLARE_INSN(fence_i, MATCH_FENCE_I, MASK_FENCE_I) +DECLARE_INSN(mul, MATCH_MUL, MASK_MUL) +DECLARE_INSN(mulh, MATCH_MULH, MASK_MULH) +DECLARE_INSN(mulhsu, MATCH_MULHSU, MASK_MULHSU) +DECLARE_INSN(mulhu, MATCH_MULHU, MASK_MULHU) +DECLARE_INSN(div, MATCH_DIV, MASK_DIV) +DECLARE_INSN(divu, MATCH_DIVU, MASK_DIVU) +DECLARE_INSN(rem, MATCH_REM, MASK_REM) +DECLARE_INSN(remu, MATCH_REMU, MASK_REMU) +DECLARE_INSN(fadd_q, MATCH_FADD_Q, MASK_FADD_Q) +DECLARE_INSN(fsub_q, MATCH_FSUB_Q, MASK_FSUB_Q) +DECLARE_INSN(fmul_q, MATCH_FMUL_Q, MASK_FMUL_Q) +DECLARE_INSN(fdiv_q, MATCH_FDIV_Q, MASK_FDIV_Q) +DECLARE_INSN(fsgnj_q, MATCH_FSGNJ_Q, MASK_FSGNJ_Q) +DECLARE_INSN(fsgnjn_q, MATCH_FSGNJN_Q, MASK_FSGNJN_Q) +DECLARE_INSN(fsgnjx_q, MATCH_FSGNJX_Q, MASK_FSGNJX_Q) +DECLARE_INSN(fmin_q, MATCH_FMIN_Q, MASK_FMIN_Q) +DECLARE_INSN(fmax_q, MATCH_FMAX_Q, MASK_FMAX_Q) +DECLARE_INSN(fcvt_s_q, MATCH_FCVT_S_Q, MASK_FCVT_S_Q) +DECLARE_INSN(fcvt_q_s, MATCH_FCVT_Q_S, MASK_FCVT_Q_S) +DECLARE_INSN(fcvt_d_q, MATCH_FCVT_D_Q, MASK_FCVT_D_Q) +DECLARE_INSN(fcvt_q_d, MATCH_FCVT_Q_D, MASK_FCVT_Q_D) +DECLARE_INSN(fsqrt_q, MATCH_FSQRT_Q, MASK_FSQRT_Q) +DECLARE_INSN(fle_q, MATCH_FLE_Q, MASK_FLE_Q) +DECLARE_INSN(flt_q, MATCH_FLT_Q, MASK_FLT_Q) +DECLARE_INSN(feq_q, MATCH_FEQ_Q, MASK_FEQ_Q) +DECLARE_INSN(fcvt_w_q, MATCH_FCVT_W_Q, MASK_FCVT_W_Q) +DECLARE_INSN(fcvt_wu_q, MATCH_FCVT_WU_Q, MASK_FCVT_WU_Q) +DECLARE_INSN(fclass_q, MATCH_FCLASS_Q, MASK_FCLASS_Q) +DECLARE_INSN(fcvt_q_w, MATCH_FCVT_Q_W, MASK_FCVT_Q_W) +DECLARE_INSN(fcvt_q_wu, MATCH_FCVT_Q_WU, MASK_FCVT_Q_WU) +DECLARE_INSN(flq, MATCH_FLQ, MASK_FLQ) +DECLARE_INSN(fsq, MATCH_FSQ, MASK_FSQ) +DECLARE_INSN(fmadd_q, MATCH_FMADD_Q, MASK_FMADD_Q) +DECLARE_INSN(fmsub_q, MATCH_FMSUB_Q, MASK_FMSUB_Q) +DECLARE_INSN(fnmsub_q, MATCH_FNMSUB_Q, MASK_FNMSUB_Q) +DECLARE_INSN(fnmadd_q, MATCH_FNMADD_Q, MASK_FNMADD_Q) +DECLARE_INSN(amoadd_d, MATCH_AMOADD_D, MASK_AMOADD_D) +DECLARE_INSN(amoxor_d, MATCH_AMOXOR_D, MASK_AMOXOR_D) +DECLARE_INSN(amoor_d, MATCH_AMOOR_D, MASK_AMOOR_D) +DECLARE_INSN(amoand_d, MATCH_AMOAND_D, MASK_AMOAND_D) +DECLARE_INSN(amomin_d, MATCH_AMOMIN_D, MASK_AMOMIN_D) +DECLARE_INSN(amomax_d, MATCH_AMOMAX_D, MASK_AMOMAX_D) +DECLARE_INSN(amominu_d, MATCH_AMOMINU_D, MASK_AMOMINU_D) +DECLARE_INSN(amomaxu_d, MATCH_AMOMAXU_D, MASK_AMOMAXU_D) +DECLARE_INSN(amoswap_d, MATCH_AMOSWAP_D, MASK_AMOSWAP_D) +DECLARE_INSN(lr_d, MATCH_LR_D, MASK_LR_D) +DECLARE_INSN(sc_d, MATCH_SC_D, MASK_SC_D) +DECLARE_INSN(c_ld, MATCH_C_LD, MASK_C_LD) +DECLARE_INSN(c_sd, MATCH_C_SD, MASK_C_SD) +DECLARE_INSN(c_subw, MATCH_C_SUBW, MASK_C_SUBW) +DECLARE_INSN(c_addw, MATCH_C_ADDW, MASK_C_ADDW) +DECLARE_INSN(c_addiw, MATCH_C_ADDIW, MASK_C_ADDIW) +DECLARE_INSN(c_ldsp, MATCH_C_LDSP, MASK_C_LDSP) +DECLARE_INSN(c_sdsp, MATCH_C_SDSP, MASK_C_SDSP) +DECLARE_INSN(fcvt_l_d, MATCH_FCVT_L_D, MASK_FCVT_L_D) +DECLARE_INSN(fcvt_lu_d, MATCH_FCVT_LU_D, MASK_FCVT_LU_D) +DECLARE_INSN(fmv_x_d, MATCH_FMV_X_D, MASK_FMV_X_D) +DECLARE_INSN(fcvt_d_l, MATCH_FCVT_D_L, MASK_FCVT_D_L) +DECLARE_INSN(fcvt_d_lu, MATCH_FCVT_D_LU, MASK_FCVT_D_LU) +DECLARE_INSN(fmv_d_x, MATCH_FMV_D_X, MASK_FMV_D_X) +DECLARE_INSN(fcvt_l_s, MATCH_FCVT_L_S, MASK_FCVT_L_S) +DECLARE_INSN(fcvt_lu_s, MATCH_FCVT_LU_S, MASK_FCVT_LU_S) +DECLARE_INSN(fcvt_s_l, MATCH_FCVT_S_L, MASK_FCVT_S_L) +DECLARE_INSN(fcvt_s_lu, MATCH_FCVT_S_LU, MASK_FCVT_S_LU) +DECLARE_INSN(hlv_wu, MATCH_HLV_WU, MASK_HLV_WU) +DECLARE_INSN(hlv_d, MATCH_HLV_D, MASK_HLV_D) +DECLARE_INSN(hsv_d, MATCH_HSV_D, MASK_HSV_D) +DECLARE_INSN(addiw, MATCH_ADDIW, MASK_ADDIW) +DECLARE_INSN(slliw, MATCH_SLLIW, MASK_SLLIW) +DECLARE_INSN(srliw, MATCH_SRLIW, MASK_SRLIW) +DECLARE_INSN(sraiw, MATCH_SRAIW, MASK_SRAIW) +DECLARE_INSN(addw, MATCH_ADDW, MASK_ADDW) +DECLARE_INSN(subw, MATCH_SUBW, MASK_SUBW) +DECLARE_INSN(sllw, MATCH_SLLW, MASK_SLLW) +DECLARE_INSN(srlw, MATCH_SRLW, MASK_SRLW) +DECLARE_INSN(sraw, MATCH_SRAW, MASK_SRAW) +DECLARE_INSN(ld, MATCH_LD, MASK_LD) +DECLARE_INSN(lwu, MATCH_LWU, MASK_LWU) +DECLARE_INSN(sd, MATCH_SD, MASK_SD) +DECLARE_INSN(mulw, MATCH_MULW, MASK_MULW) +DECLARE_INSN(divw, MATCH_DIVW, MASK_DIVW) +DECLARE_INSN(divuw, MATCH_DIVUW, MASK_DIVUW) +DECLARE_INSN(remw, MATCH_REMW, MASK_REMW) +DECLARE_INSN(remuw, MATCH_REMUW, MASK_REMUW) +DECLARE_INSN(fcvt_l_q, MATCH_FCVT_L_Q, MASK_FCVT_L_Q) +DECLARE_INSN(fcvt_lu_q, MATCH_FCVT_LU_Q, MASK_FCVT_LU_Q) +DECLARE_INSN(fcvt_q_l, MATCH_FCVT_Q_L, MASK_FCVT_Q_L) +DECLARE_INSN(fcvt_q_lu, MATCH_FCVT_Q_LU, MASK_FCVT_Q_LU) +DECLARE_INSN(c_nop, MATCH_C_NOP, MASK_C_NOP) +DECLARE_INSN(c_addi16sp, MATCH_C_ADDI16SP, MASK_C_ADDI16SP) +DECLARE_INSN(c_jr, MATCH_C_JR, MASK_C_JR) +DECLARE_INSN(c_jalr, MATCH_C_JALR, MASK_C_JALR) +DECLARE_INSN(c_ebreak, MATCH_C_EBREAK, MASK_C_EBREAK) +DECLARE_INSN(c_addi4spn, MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN) +DECLARE_INSN(c_fld, MATCH_C_FLD, MASK_C_FLD) +DECLARE_INSN(c_lw, MATCH_C_LW, MASK_C_LW) +DECLARE_INSN(c_flw, MATCH_C_FLW, MASK_C_FLW) +DECLARE_INSN(c_fsd, MATCH_C_FSD, MASK_C_FSD) +DECLARE_INSN(c_sw, MATCH_C_SW, MASK_C_SW) +DECLARE_INSN(c_fsw, MATCH_C_FSW, MASK_C_FSW) +DECLARE_INSN(c_addi, MATCH_C_ADDI, MASK_C_ADDI) +DECLARE_INSN(c_jal, MATCH_C_JAL, MASK_C_JAL) +DECLARE_INSN(c_li, MATCH_C_LI, MASK_C_LI) +DECLARE_INSN(c_lui, MATCH_C_LUI, MASK_C_LUI) +DECLARE_INSN(c_srli, MATCH_C_SRLI, MASK_C_SRLI) +DECLARE_INSN(c_srai, MATCH_C_SRAI, MASK_C_SRAI) +DECLARE_INSN(c_andi, MATCH_C_ANDI, MASK_C_ANDI) +DECLARE_INSN(c_sub, MATCH_C_SUB, MASK_C_SUB) +DECLARE_INSN(c_xor, MATCH_C_XOR, MASK_C_XOR) +DECLARE_INSN(c_or, MATCH_C_OR, MASK_C_OR) +DECLARE_INSN(c_and, MATCH_C_AND, MASK_C_AND) +DECLARE_INSN(c_j, MATCH_C_J, MASK_C_J) +DECLARE_INSN(c_beqz, MATCH_C_BEQZ, MASK_C_BEQZ) +DECLARE_INSN(c_bnez, MATCH_C_BNEZ, MASK_C_BNEZ) +DECLARE_INSN(c_slli, MATCH_C_SLLI, MASK_C_SLLI) +DECLARE_INSN(c_fldsp, MATCH_C_FLDSP, MASK_C_FLDSP) +DECLARE_INSN(c_lwsp, MATCH_C_LWSP, MASK_C_LWSP) +DECLARE_INSN(c_flwsp, MATCH_C_FLWSP, MASK_C_FLWSP) +DECLARE_INSN(c_mv, MATCH_C_MV, MASK_C_MV) +DECLARE_INSN(c_add, MATCH_C_ADD, MASK_C_ADD) +DECLARE_INSN(c_fsdsp, MATCH_C_FSDSP, MASK_C_FSDSP) +DECLARE_INSN(c_swsp, MATCH_C_SWSP, MASK_C_SWSP) +DECLARE_INSN(c_fswsp, MATCH_C_FSWSP, MASK_C_FSWSP) +DECLARE_INSN(vsetivli, MATCH_VSETIVLI, MASK_VSETIVLI) +DECLARE_INSN(vsetvli, MATCH_VSETVLI, MASK_VSETVLI) +DECLARE_INSN(vsetvl, MATCH_VSETVL, MASK_VSETVL) +DECLARE_INSN(vlm_v, MATCH_VLM_V, MASK_VLM_V) +DECLARE_INSN(vsm_v, MATCH_VSM_V, MASK_VSM_V) +DECLARE_INSN(vle8_v, MATCH_VLE8_V, MASK_VLE8_V) +DECLARE_INSN(vle16_v, MATCH_VLE16_V, MASK_VLE16_V) +DECLARE_INSN(vle32_v, MATCH_VLE32_V, MASK_VLE32_V) +DECLARE_INSN(vle64_v, MATCH_VLE64_V, MASK_VLE64_V) +DECLARE_INSN(vle128_v, MATCH_VLE128_V, MASK_VLE128_V) +DECLARE_INSN(vle256_v, MATCH_VLE256_V, MASK_VLE256_V) +DECLARE_INSN(vle512_v, MATCH_VLE512_V, MASK_VLE512_V) +DECLARE_INSN(vle1024_v, MATCH_VLE1024_V, MASK_VLE1024_V) +DECLARE_INSN(vse8_v, MATCH_VSE8_V, MASK_VSE8_V) +DECLARE_INSN(vse16_v, MATCH_VSE16_V, MASK_VSE16_V) +DECLARE_INSN(vse32_v, MATCH_VSE32_V, MASK_VSE32_V) +DECLARE_INSN(vse64_v, MATCH_VSE64_V, MASK_VSE64_V) +DECLARE_INSN(vse128_v, MATCH_VSE128_V, MASK_VSE128_V) +DECLARE_INSN(vse256_v, MATCH_VSE256_V, MASK_VSE256_V) +DECLARE_INSN(vse512_v, MATCH_VSE512_V, MASK_VSE512_V) +DECLARE_INSN(vse1024_v, MATCH_VSE1024_V, MASK_VSE1024_V) +DECLARE_INSN(vluxei8_v, MATCH_VLUXEI8_V, MASK_VLUXEI8_V) +DECLARE_INSN(vluxei16_v, MATCH_VLUXEI16_V, MASK_VLUXEI16_V) +DECLARE_INSN(vluxei32_v, MATCH_VLUXEI32_V, MASK_VLUXEI32_V) +DECLARE_INSN(vluxei64_v, MATCH_VLUXEI64_V, MASK_VLUXEI64_V) +DECLARE_INSN(vluxei128_v, MATCH_VLUXEI128_V, MASK_VLUXEI128_V) +DECLARE_INSN(vluxei256_v, MATCH_VLUXEI256_V, MASK_VLUXEI256_V) +DECLARE_INSN(vluxei512_v, MATCH_VLUXEI512_V, MASK_VLUXEI512_V) +DECLARE_INSN(vluxei1024_v, MATCH_VLUXEI1024_V, MASK_VLUXEI1024_V) +DECLARE_INSN(vsuxei8_v, MATCH_VSUXEI8_V, MASK_VSUXEI8_V) +DECLARE_INSN(vsuxei16_v, MATCH_VSUXEI16_V, MASK_VSUXEI16_V) +DECLARE_INSN(vsuxei32_v, MATCH_VSUXEI32_V, MASK_VSUXEI32_V) +DECLARE_INSN(vsuxei64_v, MATCH_VSUXEI64_V, MASK_VSUXEI64_V) +DECLARE_INSN(vsuxei128_v, MATCH_VSUXEI128_V, MASK_VSUXEI128_V) +DECLARE_INSN(vsuxei256_v, MATCH_VSUXEI256_V, MASK_VSUXEI256_V) +DECLARE_INSN(vsuxei512_v, MATCH_VSUXEI512_V, MASK_VSUXEI512_V) +DECLARE_INSN(vsuxei1024_v, MATCH_VSUXEI1024_V, MASK_VSUXEI1024_V) +DECLARE_INSN(vlse8_v, MATCH_VLSE8_V, MASK_VLSE8_V) +DECLARE_INSN(vlse16_v, MATCH_VLSE16_V, MASK_VLSE16_V) +DECLARE_INSN(vlse32_v, MATCH_VLSE32_V, MASK_VLSE32_V) +DECLARE_INSN(vlse64_v, MATCH_VLSE64_V, MASK_VLSE64_V) +DECLARE_INSN(vlse128_v, MATCH_VLSE128_V, MASK_VLSE128_V) +DECLARE_INSN(vlse256_v, MATCH_VLSE256_V, MASK_VLSE256_V) +DECLARE_INSN(vlse512_v, MATCH_VLSE512_V, MASK_VLSE512_V) +DECLARE_INSN(vlse1024_v, MATCH_VLSE1024_V, MASK_VLSE1024_V) +DECLARE_INSN(vsse8_v, MATCH_VSSE8_V, MASK_VSSE8_V) +DECLARE_INSN(vsse16_v, MATCH_VSSE16_V, MASK_VSSE16_V) +DECLARE_INSN(vsse32_v, MATCH_VSSE32_V, MASK_VSSE32_V) +DECLARE_INSN(vsse64_v, MATCH_VSSE64_V, MASK_VSSE64_V) +DECLARE_INSN(vsse128_v, MATCH_VSSE128_V, MASK_VSSE128_V) +DECLARE_INSN(vsse256_v, MATCH_VSSE256_V, MASK_VSSE256_V) +DECLARE_INSN(vsse512_v, MATCH_VSSE512_V, MASK_VSSE512_V) +DECLARE_INSN(vsse1024_v, MATCH_VSSE1024_V, MASK_VSSE1024_V) +DECLARE_INSN(vloxei8_v, MATCH_VLOXEI8_V, MASK_VLOXEI8_V) +DECLARE_INSN(vloxei16_v, MATCH_VLOXEI16_V, MASK_VLOXEI16_V) +DECLARE_INSN(vloxei32_v, MATCH_VLOXEI32_V, MASK_VLOXEI32_V) +DECLARE_INSN(vloxei64_v, MATCH_VLOXEI64_V, MASK_VLOXEI64_V) +DECLARE_INSN(vloxei128_v, MATCH_VLOXEI128_V, MASK_VLOXEI128_V) +DECLARE_INSN(vloxei256_v, MATCH_VLOXEI256_V, MASK_VLOXEI256_V) +DECLARE_INSN(vloxei512_v, MATCH_VLOXEI512_V, MASK_VLOXEI512_V) +DECLARE_INSN(vloxei1024_v, MATCH_VLOXEI1024_V, MASK_VLOXEI1024_V) +DECLARE_INSN(vsoxei8_v, MATCH_VSOXEI8_V, MASK_VSOXEI8_V) +DECLARE_INSN(vsoxei16_v, MATCH_VSOXEI16_V, MASK_VSOXEI16_V) +DECLARE_INSN(vsoxei32_v, MATCH_VSOXEI32_V, MASK_VSOXEI32_V) +DECLARE_INSN(vsoxei64_v, MATCH_VSOXEI64_V, MASK_VSOXEI64_V) +DECLARE_INSN(vsoxei128_v, MATCH_VSOXEI128_V, MASK_VSOXEI128_V) +DECLARE_INSN(vsoxei256_v, MATCH_VSOXEI256_V, MASK_VSOXEI256_V) +DECLARE_INSN(vsoxei512_v, MATCH_VSOXEI512_V, MASK_VSOXEI512_V) +DECLARE_INSN(vsoxei1024_v, MATCH_VSOXEI1024_V, MASK_VSOXEI1024_V) +DECLARE_INSN(vle8ff_v, MATCH_VLE8FF_V, MASK_VLE8FF_V) +DECLARE_INSN(vle16ff_v, MATCH_VLE16FF_V, MASK_VLE16FF_V) +DECLARE_INSN(vle32ff_v, MATCH_VLE32FF_V, MASK_VLE32FF_V) +DECLARE_INSN(vle64ff_v, MATCH_VLE64FF_V, MASK_VLE64FF_V) +DECLARE_INSN(vle128ff_v, MATCH_VLE128FF_V, MASK_VLE128FF_V) +DECLARE_INSN(vle256ff_v, MATCH_VLE256FF_V, MASK_VLE256FF_V) +DECLARE_INSN(vle512ff_v, MATCH_VLE512FF_V, MASK_VLE512FF_V) +DECLARE_INSN(vle1024ff_v, MATCH_VLE1024FF_V, MASK_VLE1024FF_V) +DECLARE_INSN(vl1re8_v, MATCH_VL1RE8_V, MASK_VL1RE8_V) +DECLARE_INSN(vl1re16_v, MATCH_VL1RE16_V, MASK_VL1RE16_V) +DECLARE_INSN(vl1re32_v, MATCH_VL1RE32_V, MASK_VL1RE32_V) +DECLARE_INSN(vl1re64_v, MATCH_VL1RE64_V, MASK_VL1RE64_V) +DECLARE_INSN(vl2re8_v, MATCH_VL2RE8_V, MASK_VL2RE8_V) +DECLARE_INSN(vl2re16_v, MATCH_VL2RE16_V, MASK_VL2RE16_V) +DECLARE_INSN(vl2re32_v, MATCH_VL2RE32_V, MASK_VL2RE32_V) +DECLARE_INSN(vl2re64_v, MATCH_VL2RE64_V, MASK_VL2RE64_V) +DECLARE_INSN(vl4re8_v, MATCH_VL4RE8_V, MASK_VL4RE8_V) +DECLARE_INSN(vl4re16_v, MATCH_VL4RE16_V, MASK_VL4RE16_V) +DECLARE_INSN(vl4re32_v, MATCH_VL4RE32_V, MASK_VL4RE32_V) +DECLARE_INSN(vl4re64_v, MATCH_VL4RE64_V, MASK_VL4RE64_V) +DECLARE_INSN(vl8re8_v, MATCH_VL8RE8_V, MASK_VL8RE8_V) +DECLARE_INSN(vl8re16_v, MATCH_VL8RE16_V, MASK_VL8RE16_V) +DECLARE_INSN(vl8re32_v, MATCH_VL8RE32_V, MASK_VL8RE32_V) +DECLARE_INSN(vl8re64_v, MATCH_VL8RE64_V, MASK_VL8RE64_V) +DECLARE_INSN(vs1r_v, MATCH_VS1R_V, MASK_VS1R_V) +DECLARE_INSN(vs2r_v, MATCH_VS2R_V, MASK_VS2R_V) +DECLARE_INSN(vs4r_v, MATCH_VS4R_V, MASK_VS4R_V) +DECLARE_INSN(vs8r_v, MATCH_VS8R_V, MASK_VS8R_V) +DECLARE_INSN(vfadd_vf, MATCH_VFADD_VF, MASK_VFADD_VF) +DECLARE_INSN(vfsub_vf, MATCH_VFSUB_VF, MASK_VFSUB_VF) +DECLARE_INSN(vfmin_vf, MATCH_VFMIN_VF, MASK_VFMIN_VF) +DECLARE_INSN(vfmax_vf, MATCH_VFMAX_VF, MASK_VFMAX_VF) +DECLARE_INSN(vfsgnj_vf, MATCH_VFSGNJ_VF, MASK_VFSGNJ_VF) +DECLARE_INSN(vfsgnjn_vf, MATCH_VFSGNJN_VF, MASK_VFSGNJN_VF) +DECLARE_INSN(vfsgnjx_vf, MATCH_VFSGNJX_VF, MASK_VFSGNJX_VF) +DECLARE_INSN(vfslide1up_vf, MATCH_VFSLIDE1UP_VF, MASK_VFSLIDE1UP_VF) +DECLARE_INSN(vfslide1down_vf, MATCH_VFSLIDE1DOWN_VF, MASK_VFSLIDE1DOWN_VF) +DECLARE_INSN(vfmv_s_f, MATCH_VFMV_S_F, MASK_VFMV_S_F) +DECLARE_INSN(vfmerge_vfm, MATCH_VFMERGE_VFM, MASK_VFMERGE_VFM) +DECLARE_INSN(vfmv_v_f, MATCH_VFMV_V_F, MASK_VFMV_V_F) +DECLARE_INSN(vmfeq_vf, MATCH_VMFEQ_VF, MASK_VMFEQ_VF) +DECLARE_INSN(vmfle_vf, MATCH_VMFLE_VF, MASK_VMFLE_VF) +DECLARE_INSN(vmflt_vf, MATCH_VMFLT_VF, MASK_VMFLT_VF) +DECLARE_INSN(vmfne_vf, MATCH_VMFNE_VF, MASK_VMFNE_VF) +DECLARE_INSN(vmfgt_vf, MATCH_VMFGT_VF, MASK_VMFGT_VF) +DECLARE_INSN(vmfge_vf, MATCH_VMFGE_VF, MASK_VMFGE_VF) +DECLARE_INSN(vfdiv_vf, MATCH_VFDIV_VF, MASK_VFDIV_VF) +DECLARE_INSN(vfrdiv_vf, MATCH_VFRDIV_VF, MASK_VFRDIV_VF) +DECLARE_INSN(vfmul_vf, MATCH_VFMUL_VF, MASK_VFMUL_VF) +DECLARE_INSN(vfrsub_vf, MATCH_VFRSUB_VF, MASK_VFRSUB_VF) +DECLARE_INSN(vfmadd_vf, MATCH_VFMADD_VF, MASK_VFMADD_VF) +DECLARE_INSN(vfnmadd_vf, MATCH_VFNMADD_VF, MASK_VFNMADD_VF) +DECLARE_INSN(vfmsub_vf, MATCH_VFMSUB_VF, MASK_VFMSUB_VF) +DECLARE_INSN(vfnmsub_vf, MATCH_VFNMSUB_VF, MASK_VFNMSUB_VF) +DECLARE_INSN(vfmacc_vf, MATCH_VFMACC_VF, MASK_VFMACC_VF) +DECLARE_INSN(vfnmacc_vf, MATCH_VFNMACC_VF, MASK_VFNMACC_VF) +DECLARE_INSN(vfmsac_vf, MATCH_VFMSAC_VF, MASK_VFMSAC_VF) +DECLARE_INSN(vfnmsac_vf, MATCH_VFNMSAC_VF, MASK_VFNMSAC_VF) +DECLARE_INSN(vfwadd_vf, MATCH_VFWADD_VF, MASK_VFWADD_VF) +DECLARE_INSN(vfwsub_vf, MATCH_VFWSUB_VF, MASK_VFWSUB_VF) +DECLARE_INSN(vfwadd_wf, MATCH_VFWADD_WF, MASK_VFWADD_WF) +DECLARE_INSN(vfwsub_wf, MATCH_VFWSUB_WF, MASK_VFWSUB_WF) +DECLARE_INSN(vfwmul_vf, MATCH_VFWMUL_VF, MASK_VFWMUL_VF) +DECLARE_INSN(vfwdotp_vf, MATCH_VFWDOTP_VF, MASK_VFWDOTP_VF) +DECLARE_INSN(vfwmacc_vf, MATCH_VFWMACC_VF, MASK_VFWMACC_VF) +DECLARE_INSN(vfwnmacc_vf, MATCH_VFWNMACC_VF, MASK_VFWNMACC_VF) +DECLARE_INSN(vfwmsac_vf, MATCH_VFWMSAC_VF, MASK_VFWMSAC_VF) +DECLARE_INSN(vfwnmsac_vf, MATCH_VFWNMSAC_VF, MASK_VFWNMSAC_VF) +DECLARE_INSN(vfadd_vv, MATCH_VFADD_VV, MASK_VFADD_VV) +DECLARE_INSN(vfredusum_vs, MATCH_VFREDUSUM_VS, MASK_VFREDUSUM_VS) +DECLARE_INSN(vfsub_vv, MATCH_VFSUB_VV, MASK_VFSUB_VV) +DECLARE_INSN(vfredosum_vs, MATCH_VFREDOSUM_VS, MASK_VFREDOSUM_VS) +DECLARE_INSN(vfmin_vv, MATCH_VFMIN_VV, MASK_VFMIN_VV) +DECLARE_INSN(vfredmin_vs, MATCH_VFREDMIN_VS, MASK_VFREDMIN_VS) +DECLARE_INSN(vfmax_vv, MATCH_VFMAX_VV, MASK_VFMAX_VV) +DECLARE_INSN(vfredmax_vs, MATCH_VFREDMAX_VS, MASK_VFREDMAX_VS) +DECLARE_INSN(vfsgnj_vv, MATCH_VFSGNJ_VV, MASK_VFSGNJ_VV) +DECLARE_INSN(vfsgnjn_vv, MATCH_VFSGNJN_VV, MASK_VFSGNJN_VV) +DECLARE_INSN(vfsgnjx_vv, MATCH_VFSGNJX_VV, MASK_VFSGNJX_VV) +DECLARE_INSN(vfmv_f_s, MATCH_VFMV_F_S, MASK_VFMV_F_S) +DECLARE_INSN(vmfeq_vv, MATCH_VMFEQ_VV, MASK_VMFEQ_VV) +DECLARE_INSN(vmfle_vv, MATCH_VMFLE_VV, MASK_VMFLE_VV) +DECLARE_INSN(vmflt_vv, MATCH_VMFLT_VV, MASK_VMFLT_VV) +DECLARE_INSN(vmfne_vv, MATCH_VMFNE_VV, MASK_VMFNE_VV) +DECLARE_INSN(vfdiv_vv, MATCH_VFDIV_VV, MASK_VFDIV_VV) +DECLARE_INSN(vfmul_vv, MATCH_VFMUL_VV, MASK_VFMUL_VV) +DECLARE_INSN(vfmadd_vv, MATCH_VFMADD_VV, MASK_VFMADD_VV) +DECLARE_INSN(vfnmadd_vv, MATCH_VFNMADD_VV, MASK_VFNMADD_VV) +DECLARE_INSN(vfmsub_vv, MATCH_VFMSUB_VV, MASK_VFMSUB_VV) +DECLARE_INSN(vfnmsub_vv, MATCH_VFNMSUB_VV, MASK_VFNMSUB_VV) +DECLARE_INSN(vfmacc_vv, MATCH_VFMACC_VV, MASK_VFMACC_VV) +DECLARE_INSN(vfnmacc_vv, MATCH_VFNMACC_VV, MASK_VFNMACC_VV) +DECLARE_INSN(vfmsac_vv, MATCH_VFMSAC_VV, MASK_VFMSAC_VV) +DECLARE_INSN(vfnmsac_vv, MATCH_VFNMSAC_VV, MASK_VFNMSAC_VV) +DECLARE_INSN(vfcvt_xu_f_v, MATCH_VFCVT_XU_F_V, MASK_VFCVT_XU_F_V) +DECLARE_INSN(vfcvt_x_f_v, MATCH_VFCVT_X_F_V, MASK_VFCVT_X_F_V) +DECLARE_INSN(vfcvt_f_xu_v, MATCH_VFCVT_F_XU_V, MASK_VFCVT_F_XU_V) +DECLARE_INSN(vfcvt_f_x_v, MATCH_VFCVT_F_X_V, MASK_VFCVT_F_X_V) +DECLARE_INSN(vfcvt_rtz_xu_f_v, MATCH_VFCVT_RTZ_XU_F_V, MASK_VFCVT_RTZ_XU_F_V) +DECLARE_INSN(vfcvt_rtz_x_f_v, MATCH_VFCVT_RTZ_X_F_V, MASK_VFCVT_RTZ_X_F_V) +DECLARE_INSN(vfwcvt_xu_f_v, MATCH_VFWCVT_XU_F_V, MASK_VFWCVT_XU_F_V) +DECLARE_INSN(vfwcvt_x_f_v, MATCH_VFWCVT_X_F_V, MASK_VFWCVT_X_F_V) +DECLARE_INSN(vfwcvt_f_xu_v, MATCH_VFWCVT_F_XU_V, MASK_VFWCVT_F_XU_V) +DECLARE_INSN(vfwcvt_f_x_v, MATCH_VFWCVT_F_X_V, MASK_VFWCVT_F_X_V) +DECLARE_INSN(vfwcvt_f_f_v, MATCH_VFWCVT_F_F_V, MASK_VFWCVT_F_F_V) +DECLARE_INSN(vfwcvt_rtz_xu_f_v, MATCH_VFWCVT_RTZ_XU_F_V, MASK_VFWCVT_RTZ_XU_F_V) +DECLARE_INSN(vfwcvt_rtz_x_f_v, MATCH_VFWCVT_RTZ_X_F_V, MASK_VFWCVT_RTZ_X_F_V) +DECLARE_INSN(vfncvt_xu_f_w, MATCH_VFNCVT_XU_F_W, MASK_VFNCVT_XU_F_W) +DECLARE_INSN(vfncvt_x_f_w, MATCH_VFNCVT_X_F_W, MASK_VFNCVT_X_F_W) +DECLARE_INSN(vfncvt_f_xu_w, MATCH_VFNCVT_F_XU_W, MASK_VFNCVT_F_XU_W) +DECLARE_INSN(vfncvt_f_x_w, MATCH_VFNCVT_F_X_W, MASK_VFNCVT_F_X_W) +DECLARE_INSN(vfncvt_f_f_w, MATCH_VFNCVT_F_F_W, MASK_VFNCVT_F_F_W) +DECLARE_INSN(vfncvt_rod_f_f_w, MATCH_VFNCVT_ROD_F_F_W, MASK_VFNCVT_ROD_F_F_W) +DECLARE_INSN(vfncvt_rtz_xu_f_w, MATCH_VFNCVT_RTZ_XU_F_W, MASK_VFNCVT_RTZ_XU_F_W) +DECLARE_INSN(vfncvt_rtz_x_f_w, MATCH_VFNCVT_RTZ_X_F_W, MASK_VFNCVT_RTZ_X_F_W) +DECLARE_INSN(vfsqrt_v, MATCH_VFSQRT_V, MASK_VFSQRT_V) +DECLARE_INSN(vfrsqrt7_v, MATCH_VFRSQRT7_V, MASK_VFRSQRT7_V) +DECLARE_INSN(vfrec7_v, MATCH_VFREC7_V, MASK_VFREC7_V) +DECLARE_INSN(vfclass_v, MATCH_VFCLASS_V, MASK_VFCLASS_V) +DECLARE_INSN(vfwadd_vv, MATCH_VFWADD_VV, MASK_VFWADD_VV) +DECLARE_INSN(vfwredusum_vs, MATCH_VFWREDUSUM_VS, MASK_VFWREDUSUM_VS) +DECLARE_INSN(vfwsub_vv, MATCH_VFWSUB_VV, MASK_VFWSUB_VV) +DECLARE_INSN(vfwredosum_vs, MATCH_VFWREDOSUM_VS, MASK_VFWREDOSUM_VS) +DECLARE_INSN(vfwadd_wv, MATCH_VFWADD_WV, MASK_VFWADD_WV) +DECLARE_INSN(vfwsub_wv, MATCH_VFWSUB_WV, MASK_VFWSUB_WV) +DECLARE_INSN(vfwmul_vv, MATCH_VFWMUL_VV, MASK_VFWMUL_VV) +DECLARE_INSN(vfwdotp_vv, MATCH_VFWDOTP_VV, MASK_VFWDOTP_VV) +DECLARE_INSN(vfwmacc_vv, MATCH_VFWMACC_VV, MASK_VFWMACC_VV) +DECLARE_INSN(vfwnmacc_vv, MATCH_VFWNMACC_VV, MASK_VFWNMACC_VV) +DECLARE_INSN(vfwmsac_vv, MATCH_VFWMSAC_VV, MASK_VFWMSAC_VV) +DECLARE_INSN(vfwnmsac_vv, MATCH_VFWNMSAC_VV, MASK_VFWNMSAC_VV) +DECLARE_INSN(vadd_vx, MATCH_VADD_VX, MASK_VADD_VX) +DECLARE_INSN(vsub_vx, MATCH_VSUB_VX, MASK_VSUB_VX) +DECLARE_INSN(vrsub_vx, MATCH_VRSUB_VX, MASK_VRSUB_VX) +DECLARE_INSN(vminu_vx, MATCH_VMINU_VX, MASK_VMINU_VX) +DECLARE_INSN(vmin_vx, MATCH_VMIN_VX, MASK_VMIN_VX) +DECLARE_INSN(vmaxu_vx, MATCH_VMAXU_VX, MASK_VMAXU_VX) +DECLARE_INSN(vmax_vx, MATCH_VMAX_VX, MASK_VMAX_VX) +DECLARE_INSN(vand_vx, MATCH_VAND_VX, MASK_VAND_VX) +DECLARE_INSN(vor_vx, MATCH_VOR_VX, MASK_VOR_VX) +DECLARE_INSN(vxor_vx, MATCH_VXOR_VX, MASK_VXOR_VX) +DECLARE_INSN(vrgather_vx, MATCH_VRGATHER_VX, MASK_VRGATHER_VX) +DECLARE_INSN(vslideup_vx, MATCH_VSLIDEUP_VX, MASK_VSLIDEUP_VX) +DECLARE_INSN(vslidedown_vx, MATCH_VSLIDEDOWN_VX, MASK_VSLIDEDOWN_VX) +DECLARE_INSN(vadc_vxm, MATCH_VADC_VXM, MASK_VADC_VXM) +DECLARE_INSN(vmadc_vxm, MATCH_VMADC_VXM, MASK_VMADC_VXM) +DECLARE_INSN(vmadc_vx, MATCH_VMADC_VX, MASK_VMADC_VX) +DECLARE_INSN(vsbc_vxm, MATCH_VSBC_VXM, MASK_VSBC_VXM) +DECLARE_INSN(vmsbc_vxm, MATCH_VMSBC_VXM, MASK_VMSBC_VXM) +DECLARE_INSN(vmsbc_vx, MATCH_VMSBC_VX, MASK_VMSBC_VX) +DECLARE_INSN(vmerge_vxm, MATCH_VMERGE_VXM, MASK_VMERGE_VXM) +DECLARE_INSN(vmv_v_x, MATCH_VMV_V_X, MASK_VMV_V_X) +DECLARE_INSN(vmseq_vx, MATCH_VMSEQ_VX, MASK_VMSEQ_VX) +DECLARE_INSN(vmsne_vx, MATCH_VMSNE_VX, MASK_VMSNE_VX) +DECLARE_INSN(vmsltu_vx, MATCH_VMSLTU_VX, MASK_VMSLTU_VX) +DECLARE_INSN(vmslt_vx, MATCH_VMSLT_VX, MASK_VMSLT_VX) +DECLARE_INSN(vmsleu_vx, MATCH_VMSLEU_VX, MASK_VMSLEU_VX) +DECLARE_INSN(vmsle_vx, MATCH_VMSLE_VX, MASK_VMSLE_VX) +DECLARE_INSN(vmsgtu_vx, MATCH_VMSGTU_VX, MASK_VMSGTU_VX) +DECLARE_INSN(vmsgt_vx, MATCH_VMSGT_VX, MASK_VMSGT_VX) +DECLARE_INSN(vsaddu_vx, MATCH_VSADDU_VX, MASK_VSADDU_VX) +DECLARE_INSN(vsadd_vx, MATCH_VSADD_VX, MASK_VSADD_VX) +DECLARE_INSN(vssubu_vx, MATCH_VSSUBU_VX, MASK_VSSUBU_VX) +DECLARE_INSN(vssub_vx, MATCH_VSSUB_VX, MASK_VSSUB_VX) +DECLARE_INSN(vsll_vx, MATCH_VSLL_VX, MASK_VSLL_VX) +DECLARE_INSN(vsmul_vx, MATCH_VSMUL_VX, MASK_VSMUL_VX) +DECLARE_INSN(vsrl_vx, MATCH_VSRL_VX, MASK_VSRL_VX) +DECLARE_INSN(vsra_vx, MATCH_VSRA_VX, MASK_VSRA_VX) +DECLARE_INSN(vssrl_vx, MATCH_VSSRL_VX, MASK_VSSRL_VX) +DECLARE_INSN(vssra_vx, MATCH_VSSRA_VX, MASK_VSSRA_VX) +DECLARE_INSN(vnsrl_wx, MATCH_VNSRL_WX, MASK_VNSRL_WX) +DECLARE_INSN(vnsra_wx, MATCH_VNSRA_WX, MASK_VNSRA_WX) +DECLARE_INSN(vnclipu_wx, MATCH_VNCLIPU_WX, MASK_VNCLIPU_WX) +DECLARE_INSN(vnclip_wx, MATCH_VNCLIP_WX, MASK_VNCLIP_WX) +DECLARE_INSN(vadd_vv, MATCH_VADD_VV, MASK_VADD_VV) +DECLARE_INSN(vsub_vv, MATCH_VSUB_VV, MASK_VSUB_VV) +DECLARE_INSN(vminu_vv, MATCH_VMINU_VV, MASK_VMINU_VV) +DECLARE_INSN(vmin_vv, MATCH_VMIN_VV, MASK_VMIN_VV) +DECLARE_INSN(vmaxu_vv, MATCH_VMAXU_VV, MASK_VMAXU_VV) +DECLARE_INSN(vmax_vv, MATCH_VMAX_VV, MASK_VMAX_VV) +DECLARE_INSN(vand_vv, MATCH_VAND_VV, MASK_VAND_VV) +DECLARE_INSN(vor_vv, MATCH_VOR_VV, MASK_VOR_VV) +DECLARE_INSN(vxor_vv, MATCH_VXOR_VV, MASK_VXOR_VV) +DECLARE_INSN(vrgather_vv, MATCH_VRGATHER_VV, MASK_VRGATHER_VV) +DECLARE_INSN(vrgatherei16_vv, MATCH_VRGATHEREI16_VV, MASK_VRGATHEREI16_VV) +DECLARE_INSN(vadc_vvm, MATCH_VADC_VVM, MASK_VADC_VVM) +DECLARE_INSN(vmadc_vvm, MATCH_VMADC_VVM, MASK_VMADC_VVM) +DECLARE_INSN(vmadc_vv, MATCH_VMADC_VV, MASK_VMADC_VV) +DECLARE_INSN(vsbc_vvm, MATCH_VSBC_VVM, MASK_VSBC_VVM) +DECLARE_INSN(vmsbc_vvm, MATCH_VMSBC_VVM, MASK_VMSBC_VVM) +DECLARE_INSN(vmsbc_vv, MATCH_VMSBC_VV, MASK_VMSBC_VV) +DECLARE_INSN(vmerge_vvm, MATCH_VMERGE_VVM, MASK_VMERGE_VVM) +DECLARE_INSN(vmv_v_v, MATCH_VMV_V_V, MASK_VMV_V_V) +DECLARE_INSN(vmseq_vv, MATCH_VMSEQ_VV, MASK_VMSEQ_VV) +DECLARE_INSN(vmsne_vv, MATCH_VMSNE_VV, MASK_VMSNE_VV) +DECLARE_INSN(vmsltu_vv, MATCH_VMSLTU_VV, MASK_VMSLTU_VV) +DECLARE_INSN(vmslt_vv, MATCH_VMSLT_VV, MASK_VMSLT_VV) +DECLARE_INSN(vmsleu_vv, MATCH_VMSLEU_VV, MASK_VMSLEU_VV) +DECLARE_INSN(vmsle_vv, MATCH_VMSLE_VV, MASK_VMSLE_VV) +DECLARE_INSN(vsaddu_vv, MATCH_VSADDU_VV, MASK_VSADDU_VV) +DECLARE_INSN(vsadd_vv, MATCH_VSADD_VV, MASK_VSADD_VV) +DECLARE_INSN(vssubu_vv, MATCH_VSSUBU_VV, MASK_VSSUBU_VV) +DECLARE_INSN(vssub_vv, MATCH_VSSUB_VV, MASK_VSSUB_VV) +DECLARE_INSN(vsll_vv, MATCH_VSLL_VV, MASK_VSLL_VV) +DECLARE_INSN(vsmul_vv, MATCH_VSMUL_VV, MASK_VSMUL_VV) +DECLARE_INSN(vsrl_vv, MATCH_VSRL_VV, MASK_VSRL_VV) +DECLARE_INSN(vsra_vv, MATCH_VSRA_VV, MASK_VSRA_VV) +DECLARE_INSN(vssrl_vv, MATCH_VSSRL_VV, MASK_VSSRL_VV) +DECLARE_INSN(vssra_vv, MATCH_VSSRA_VV, MASK_VSSRA_VV) +DECLARE_INSN(vnsrl_wv, MATCH_VNSRL_WV, MASK_VNSRL_WV) +DECLARE_INSN(vnsra_wv, MATCH_VNSRA_WV, MASK_VNSRA_WV) +DECLARE_INSN(vnclipu_wv, MATCH_VNCLIPU_WV, MASK_VNCLIPU_WV) +DECLARE_INSN(vnclip_wv, MATCH_VNCLIP_WV, MASK_VNCLIP_WV) +DECLARE_INSN(vwredsumu_vs, MATCH_VWREDSUMU_VS, MASK_VWREDSUMU_VS) +DECLARE_INSN(vwredsum_vs, MATCH_VWREDSUM_VS, MASK_VWREDSUM_VS) +DECLARE_INSN(vadd_vi, MATCH_VADD_VI, MASK_VADD_VI) +DECLARE_INSN(vrsub_vi, MATCH_VRSUB_VI, MASK_VRSUB_VI) +DECLARE_INSN(vand_vi, MATCH_VAND_VI, MASK_VAND_VI) +DECLARE_INSN(vor_vi, MATCH_VOR_VI, MASK_VOR_VI) +DECLARE_INSN(vxor_vi, MATCH_VXOR_VI, MASK_VXOR_VI) +DECLARE_INSN(vrgather_vi, MATCH_VRGATHER_VI, MASK_VRGATHER_VI) +DECLARE_INSN(vslideup_vi, MATCH_VSLIDEUP_VI, MASK_VSLIDEUP_VI) +DECLARE_INSN(vslidedown_vi, MATCH_VSLIDEDOWN_VI, MASK_VSLIDEDOWN_VI) +DECLARE_INSN(vadc_vim, MATCH_VADC_VIM, MASK_VADC_VIM) +DECLARE_INSN(vmadc_vim, MATCH_VMADC_VIM, MASK_VMADC_VIM) +DECLARE_INSN(vmadc_vi, MATCH_VMADC_VI, MASK_VMADC_VI) +DECLARE_INSN(vmerge_vim, MATCH_VMERGE_VIM, MASK_VMERGE_VIM) +DECLARE_INSN(vmv_v_i, MATCH_VMV_V_I, MASK_VMV_V_I) +DECLARE_INSN(vmseq_vi, MATCH_VMSEQ_VI, MASK_VMSEQ_VI) +DECLARE_INSN(vmsne_vi, MATCH_VMSNE_VI, MASK_VMSNE_VI) +DECLARE_INSN(vmsleu_vi, MATCH_VMSLEU_VI, MASK_VMSLEU_VI) +DECLARE_INSN(vmsle_vi, MATCH_VMSLE_VI, MASK_VMSLE_VI) +DECLARE_INSN(vmsgtu_vi, MATCH_VMSGTU_VI, MASK_VMSGTU_VI) +DECLARE_INSN(vmsgt_vi, MATCH_VMSGT_VI, MASK_VMSGT_VI) +DECLARE_INSN(vsaddu_vi, MATCH_VSADDU_VI, MASK_VSADDU_VI) +DECLARE_INSN(vsadd_vi, MATCH_VSADD_VI, MASK_VSADD_VI) +DECLARE_INSN(vsll_vi, MATCH_VSLL_VI, MASK_VSLL_VI) +DECLARE_INSN(vmv1r_v, MATCH_VMV1R_V, MASK_VMV1R_V) +DECLARE_INSN(vmv2r_v, MATCH_VMV2R_V, MASK_VMV2R_V) +DECLARE_INSN(vmv4r_v, MATCH_VMV4R_V, MASK_VMV4R_V) +DECLARE_INSN(vmv8r_v, MATCH_VMV8R_V, MASK_VMV8R_V) +DECLARE_INSN(vsrl_vi, MATCH_VSRL_VI, MASK_VSRL_VI) +DECLARE_INSN(vsra_vi, MATCH_VSRA_VI, MASK_VSRA_VI) +DECLARE_INSN(vssrl_vi, MATCH_VSSRL_VI, MASK_VSSRL_VI) +DECLARE_INSN(vssra_vi, MATCH_VSSRA_VI, MASK_VSSRA_VI) +DECLARE_INSN(vnsrl_wi, MATCH_VNSRL_WI, MASK_VNSRL_WI) +DECLARE_INSN(vnsra_wi, MATCH_VNSRA_WI, MASK_VNSRA_WI) +DECLARE_INSN(vnclipu_wi, MATCH_VNCLIPU_WI, MASK_VNCLIPU_WI) +DECLARE_INSN(vnclip_wi, MATCH_VNCLIP_WI, MASK_VNCLIP_WI) +DECLARE_INSN(vredsum_vs, MATCH_VREDSUM_VS, MASK_VREDSUM_VS) +DECLARE_INSN(vredand_vs, MATCH_VREDAND_VS, MASK_VREDAND_VS) +DECLARE_INSN(vredor_vs, MATCH_VREDOR_VS, MASK_VREDOR_VS) +DECLARE_INSN(vredxor_vs, MATCH_VREDXOR_VS, MASK_VREDXOR_VS) +DECLARE_INSN(vredminu_vs, MATCH_VREDMINU_VS, MASK_VREDMINU_VS) +DECLARE_INSN(vredmin_vs, MATCH_VREDMIN_VS, MASK_VREDMIN_VS) +DECLARE_INSN(vredmaxu_vs, MATCH_VREDMAXU_VS, MASK_VREDMAXU_VS) +DECLARE_INSN(vredmax_vs, MATCH_VREDMAX_VS, MASK_VREDMAX_VS) +DECLARE_INSN(vaaddu_vv, MATCH_VAADDU_VV, MASK_VAADDU_VV) +DECLARE_INSN(vaadd_vv, MATCH_VAADD_VV, MASK_VAADD_VV) +DECLARE_INSN(vasubu_vv, MATCH_VASUBU_VV, MASK_VASUBU_VV) +DECLARE_INSN(vasub_vv, MATCH_VASUB_VV, MASK_VASUB_VV) +DECLARE_INSN(vmv_x_s, MATCH_VMV_X_S, MASK_VMV_X_S) +DECLARE_INSN(vzext_vf8, MATCH_VZEXT_VF8, MASK_VZEXT_VF8) +DECLARE_INSN(vsext_vf8, MATCH_VSEXT_VF8, MASK_VSEXT_VF8) +DECLARE_INSN(vzext_vf4, MATCH_VZEXT_VF4, MASK_VZEXT_VF4) +DECLARE_INSN(vsext_vf4, MATCH_VSEXT_VF4, MASK_VSEXT_VF4) +DECLARE_INSN(vzext_vf2, MATCH_VZEXT_VF2, MASK_VZEXT_VF2) +DECLARE_INSN(vsext_vf2, MATCH_VSEXT_VF2, MASK_VSEXT_VF2) +DECLARE_INSN(vcompress_vm, MATCH_VCOMPRESS_VM, MASK_VCOMPRESS_VM) +DECLARE_INSN(vmandn_mm, MATCH_VMANDN_MM, MASK_VMANDN_MM) +DECLARE_INSN(vmand_mm, MATCH_VMAND_MM, MASK_VMAND_MM) +DECLARE_INSN(vmor_mm, MATCH_VMOR_MM, MASK_VMOR_MM) +DECLARE_INSN(vmxor_mm, MATCH_VMXOR_MM, MASK_VMXOR_MM) +DECLARE_INSN(vmorn_mm, MATCH_VMORN_MM, MASK_VMORN_MM) +DECLARE_INSN(vmnand_mm, MATCH_VMNAND_MM, MASK_VMNAND_MM) +DECLARE_INSN(vmnor_mm, MATCH_VMNOR_MM, MASK_VMNOR_MM) +DECLARE_INSN(vmxnor_mm, MATCH_VMXNOR_MM, MASK_VMXNOR_MM) +DECLARE_INSN(vmsbf_m, MATCH_VMSBF_M, MASK_VMSBF_M) +DECLARE_INSN(vmsof_m, MATCH_VMSOF_M, MASK_VMSOF_M) +DECLARE_INSN(vmsif_m, MATCH_VMSIF_M, MASK_VMSIF_M) +DECLARE_INSN(viota_m, MATCH_VIOTA_M, MASK_VIOTA_M) +DECLARE_INSN(vid_v, MATCH_VID_V, MASK_VID_V) +DECLARE_INSN(vcpop_m, MATCH_VCPOP_M, MASK_VCPOP_M) +DECLARE_INSN(vfirst_m, MATCH_VFIRST_M, MASK_VFIRST_M) +DECLARE_INSN(vdivu_vv, MATCH_VDIVU_VV, MASK_VDIVU_VV) +DECLARE_INSN(vdiv_vv, MATCH_VDIV_VV, MASK_VDIV_VV) +DECLARE_INSN(vremu_vv, MATCH_VREMU_VV, MASK_VREMU_VV) +DECLARE_INSN(vrem_vv, MATCH_VREM_VV, MASK_VREM_VV) +DECLARE_INSN(vmulhu_vv, MATCH_VMULHU_VV, MASK_VMULHU_VV) +DECLARE_INSN(vmul_vv, MATCH_VMUL_VV, MASK_VMUL_VV) +DECLARE_INSN(vmulhsu_vv, MATCH_VMULHSU_VV, MASK_VMULHSU_VV) +DECLARE_INSN(vmulh_vv, MATCH_VMULH_VV, MASK_VMULH_VV) +DECLARE_INSN(vmadd_vv, MATCH_VMADD_VV, MASK_VMADD_VV) +DECLARE_INSN(vnmsub_vv, MATCH_VNMSUB_VV, MASK_VNMSUB_VV) +DECLARE_INSN(vmacc_vv, MATCH_VMACC_VV, MASK_VMACC_VV) +DECLARE_INSN(vnmsac_vv, MATCH_VNMSAC_VV, MASK_VNMSAC_VV) +DECLARE_INSN(vwaddu_vv, MATCH_VWADDU_VV, MASK_VWADDU_VV) +DECLARE_INSN(vwadd_vv, MATCH_VWADD_VV, MASK_VWADD_VV) +DECLARE_INSN(vwsubu_vv, MATCH_VWSUBU_VV, MASK_VWSUBU_VV) +DECLARE_INSN(vwsub_vv, MATCH_VWSUB_VV, MASK_VWSUB_VV) +DECLARE_INSN(vwaddu_wv, MATCH_VWADDU_WV, MASK_VWADDU_WV) +DECLARE_INSN(vwadd_wv, MATCH_VWADD_WV, MASK_VWADD_WV) +DECLARE_INSN(vwsubu_wv, MATCH_VWSUBU_WV, MASK_VWSUBU_WV) +DECLARE_INSN(vwsub_wv, MATCH_VWSUB_WV, MASK_VWSUB_WV) +DECLARE_INSN(vwmulu_vv, MATCH_VWMULU_VV, MASK_VWMULU_VV) +DECLARE_INSN(vwmulsu_vv, MATCH_VWMULSU_VV, MASK_VWMULSU_VV) +DECLARE_INSN(vwmul_vv, MATCH_VWMUL_VV, MASK_VWMUL_VV) +DECLARE_INSN(vwmaccu_vv, MATCH_VWMACCU_VV, MASK_VWMACCU_VV) +DECLARE_INSN(vwmacc_vv, MATCH_VWMACC_VV, MASK_VWMACC_VV) +DECLARE_INSN(vwmaccsu_vv, MATCH_VWMACCSU_VV, MASK_VWMACCSU_VV) +DECLARE_INSN(vaaddu_vx, MATCH_VAADDU_VX, MASK_VAADDU_VX) +DECLARE_INSN(vaadd_vx, MATCH_VAADD_VX, MASK_VAADD_VX) +DECLARE_INSN(vasubu_vx, MATCH_VASUBU_VX, MASK_VASUBU_VX) +DECLARE_INSN(vasub_vx, MATCH_VASUB_VX, MASK_VASUB_VX) +DECLARE_INSN(vmv_s_x, MATCH_VMV_S_X, MASK_VMV_S_X) +DECLARE_INSN(vslide1up_vx, MATCH_VSLIDE1UP_VX, MASK_VSLIDE1UP_VX) +DECLARE_INSN(vslide1down_vx, MATCH_VSLIDE1DOWN_VX, MASK_VSLIDE1DOWN_VX) +DECLARE_INSN(vdivu_vx, MATCH_VDIVU_VX, MASK_VDIVU_VX) +DECLARE_INSN(vdiv_vx, MATCH_VDIV_VX, MASK_VDIV_VX) +DECLARE_INSN(vremu_vx, MATCH_VREMU_VX, MASK_VREMU_VX) +DECLARE_INSN(vrem_vx, MATCH_VREM_VX, MASK_VREM_VX) +DECLARE_INSN(vmulhu_vx, MATCH_VMULHU_VX, MASK_VMULHU_VX) +DECLARE_INSN(vmul_vx, MATCH_VMUL_VX, MASK_VMUL_VX) +DECLARE_INSN(vmulhsu_vx, MATCH_VMULHSU_VX, MASK_VMULHSU_VX) +DECLARE_INSN(vmulh_vx, MATCH_VMULH_VX, MASK_VMULH_VX) +DECLARE_INSN(vmadd_vx, MATCH_VMADD_VX, MASK_VMADD_VX) +DECLARE_INSN(vnmsub_vx, MATCH_VNMSUB_VX, MASK_VNMSUB_VX) +DECLARE_INSN(vmacc_vx, MATCH_VMACC_VX, MASK_VMACC_VX) +DECLARE_INSN(vnmsac_vx, MATCH_VNMSAC_VX, MASK_VNMSAC_VX) +DECLARE_INSN(vwaddu_vx, MATCH_VWADDU_VX, MASK_VWADDU_VX) +DECLARE_INSN(vwadd_vx, MATCH_VWADD_VX, MASK_VWADD_VX) +DECLARE_INSN(vwsubu_vx, MATCH_VWSUBU_VX, MASK_VWSUBU_VX) +DECLARE_INSN(vwsub_vx, MATCH_VWSUB_VX, MASK_VWSUB_VX) +DECLARE_INSN(vwaddu_wx, MATCH_VWADDU_WX, MASK_VWADDU_WX) +DECLARE_INSN(vwadd_wx, MATCH_VWADD_WX, MASK_VWADD_WX) +DECLARE_INSN(vwsubu_wx, MATCH_VWSUBU_WX, MASK_VWSUBU_WX) +DECLARE_INSN(vwsub_wx, MATCH_VWSUB_WX, MASK_VWSUB_WX) +DECLARE_INSN(vwmulu_vx, MATCH_VWMULU_VX, MASK_VWMULU_VX) +DECLARE_INSN(vwmulsu_vx, MATCH_VWMULSU_VX, MASK_VWMULSU_VX) +DECLARE_INSN(vwmul_vx, MATCH_VWMUL_VX, MASK_VWMUL_VX) +DECLARE_INSN(vwmaccu_vx, MATCH_VWMACCU_VX, MASK_VWMACCU_VX) +DECLARE_INSN(vwmacc_vx, MATCH_VWMACC_VX, MASK_VWMACC_VX) +DECLARE_INSN(vwmaccus_vx, MATCH_VWMACCUS_VX, MASK_VWMACCUS_VX) +DECLARE_INSN(vwmaccsu_vx, MATCH_VWMACCSU_VX, MASK_VWMACCSU_VX) +DECLARE_INSN(vamoswapei8_v, MATCH_VAMOSWAPEI8_V, MASK_VAMOSWAPEI8_V) +DECLARE_INSN(vamoaddei8_v, MATCH_VAMOADDEI8_V, MASK_VAMOADDEI8_V) +DECLARE_INSN(vamoxorei8_v, MATCH_VAMOXOREI8_V, MASK_VAMOXOREI8_V) +DECLARE_INSN(vamoandei8_v, MATCH_VAMOANDEI8_V, MASK_VAMOANDEI8_V) +DECLARE_INSN(vamoorei8_v, MATCH_VAMOOREI8_V, MASK_VAMOOREI8_V) +DECLARE_INSN(vamominei8_v, MATCH_VAMOMINEI8_V, MASK_VAMOMINEI8_V) +DECLARE_INSN(vamomaxei8_v, MATCH_VAMOMAXEI8_V, MASK_VAMOMAXEI8_V) +DECLARE_INSN(vamominuei8_v, MATCH_VAMOMINUEI8_V, MASK_VAMOMINUEI8_V) +DECLARE_INSN(vamomaxuei8_v, MATCH_VAMOMAXUEI8_V, MASK_VAMOMAXUEI8_V) +DECLARE_INSN(vamoswapei16_v, MATCH_VAMOSWAPEI16_V, MASK_VAMOSWAPEI16_V) +DECLARE_INSN(vamoaddei16_v, MATCH_VAMOADDEI16_V, MASK_VAMOADDEI16_V) +DECLARE_INSN(vamoxorei16_v, MATCH_VAMOXOREI16_V, MASK_VAMOXOREI16_V) +DECLARE_INSN(vamoandei16_v, MATCH_VAMOANDEI16_V, MASK_VAMOANDEI16_V) +DECLARE_INSN(vamoorei16_v, MATCH_VAMOOREI16_V, MASK_VAMOOREI16_V) +DECLARE_INSN(vamominei16_v, MATCH_VAMOMINEI16_V, MASK_VAMOMINEI16_V) +DECLARE_INSN(vamomaxei16_v, MATCH_VAMOMAXEI16_V, MASK_VAMOMAXEI16_V) +DECLARE_INSN(vamominuei16_v, MATCH_VAMOMINUEI16_V, MASK_VAMOMINUEI16_V) +DECLARE_INSN(vamomaxuei16_v, MATCH_VAMOMAXUEI16_V, MASK_VAMOMAXUEI16_V) +DECLARE_INSN(vamoswapei32_v, MATCH_VAMOSWAPEI32_V, MASK_VAMOSWAPEI32_V) +DECLARE_INSN(vamoaddei32_v, MATCH_VAMOADDEI32_V, MASK_VAMOADDEI32_V) +DECLARE_INSN(vamoxorei32_v, MATCH_VAMOXOREI32_V, MASK_VAMOXOREI32_V) +DECLARE_INSN(vamoandei32_v, MATCH_VAMOANDEI32_V, MASK_VAMOANDEI32_V) +DECLARE_INSN(vamoorei32_v, MATCH_VAMOOREI32_V, MASK_VAMOOREI32_V) +DECLARE_INSN(vamominei32_v, MATCH_VAMOMINEI32_V, MASK_VAMOMINEI32_V) +DECLARE_INSN(vamomaxei32_v, MATCH_VAMOMAXEI32_V, MASK_VAMOMAXEI32_V) +DECLARE_INSN(vamominuei32_v, MATCH_VAMOMINUEI32_V, MASK_VAMOMINUEI32_V) +DECLARE_INSN(vamomaxuei32_v, MATCH_VAMOMAXUEI32_V, MASK_VAMOMAXUEI32_V) +DECLARE_INSN(vamoswapei64_v, MATCH_VAMOSWAPEI64_V, MASK_VAMOSWAPEI64_V) +DECLARE_INSN(vamoaddei64_v, MATCH_VAMOADDEI64_V, MASK_VAMOADDEI64_V) +DECLARE_INSN(vamoxorei64_v, MATCH_VAMOXOREI64_V, MASK_VAMOXOREI64_V) +DECLARE_INSN(vamoandei64_v, MATCH_VAMOANDEI64_V, MASK_VAMOANDEI64_V) +DECLARE_INSN(vamoorei64_v, MATCH_VAMOOREI64_V, MASK_VAMOOREI64_V) +DECLARE_INSN(vamominei64_v, MATCH_VAMOMINEI64_V, MASK_VAMOMINEI64_V) +DECLARE_INSN(vamomaxei64_v, MATCH_VAMOMAXEI64_V, MASK_VAMOMAXEI64_V) +DECLARE_INSN(vamominuei64_v, MATCH_VAMOMINUEI64_V, MASK_VAMOMINUEI64_V) +DECLARE_INSN(vamomaxuei64_v, MATCH_VAMOMAXUEI64_V, MASK_VAMOMAXUEI64_V) +DECLARE_INSN(vmvnfr_v, MATCH_VMVNFR_V, MASK_VMVNFR_V) +DECLARE_INSN(vl1r_v, MATCH_VL1R_V, MASK_VL1R_V) +DECLARE_INSN(vl2r_v, MATCH_VL2R_V, MASK_VL2R_V) +DECLARE_INSN(vl4r_v, MATCH_VL4R_V, MASK_VL4R_V) +DECLARE_INSN(vl8r_v, MATCH_VL8R_V, MASK_VL8R_V) +DECLARE_INSN(flh, MATCH_FLH, MASK_FLH) +DECLARE_INSN(fsh, MATCH_FSH, MASK_FSH) +DECLARE_INSN(fmadd_h, MATCH_FMADD_H, MASK_FMADD_H) +DECLARE_INSN(fmsub_h, MATCH_FMSUB_H, MASK_FMSUB_H) +DECLARE_INSN(fnmsub_h, MATCH_FNMSUB_H, MASK_FNMSUB_H) +DECLARE_INSN(fnmadd_h, MATCH_FNMADD_H, MASK_FNMADD_H) +DECLARE_INSN(fadd_h, MATCH_FADD_H, MASK_FADD_H) +DECLARE_INSN(fsub_h, MATCH_FSUB_H, MASK_FSUB_H) +DECLARE_INSN(fmul_h, MATCH_FMUL_H, MASK_FMUL_H) +DECLARE_INSN(fdiv_h, MATCH_FDIV_H, MASK_FDIV_H) +DECLARE_INSN(fsqrt_h, MATCH_FSQRT_H, MASK_FSQRT_H) +DECLARE_INSN(fsgnj_h, MATCH_FSGNJ_H, MASK_FSGNJ_H) +DECLARE_INSN(fsgnjn_h, MATCH_FSGNJN_H, MASK_FSGNJN_H) +DECLARE_INSN(fsgnjx_h, MATCH_FSGNJX_H, MASK_FSGNJX_H) +DECLARE_INSN(fmin_h, MATCH_FMIN_H, MASK_FMIN_H) +DECLARE_INSN(fmax_h, MATCH_FMAX_H, MASK_FMAX_H) +DECLARE_INSN(feq_h, MATCH_FEQ_H, MASK_FEQ_H) +DECLARE_INSN(flt_h, MATCH_FLT_H, MASK_FLT_H) +DECLARE_INSN(fle_h, MATCH_FLE_H, MASK_FLE_H) +DECLARE_INSN(fcvt_w_h, MATCH_FCVT_W_H, MASK_FCVT_W_H) +DECLARE_INSN(fcvt_wu_h, MATCH_FCVT_WU_H, MASK_FCVT_WU_H) +DECLARE_INSN(fcvt_h_w, MATCH_FCVT_H_W, MASK_FCVT_H_W) +DECLARE_INSN(fcvt_h_wu, MATCH_FCVT_H_WU, MASK_FCVT_H_WU) +DECLARE_INSN(fmv_x_h, MATCH_FMV_X_H, MASK_FMV_X_H) +DECLARE_INSN(fclass_h, MATCH_FCLASS_H, MASK_FCLASS_H) +DECLARE_INSN(fmv_h_x, MATCH_FMV_H_X, MASK_FMV_H_X) +DECLARE_INSN(fcvt_l_h, MATCH_FCVT_L_H, MASK_FCVT_L_H) +DECLARE_INSN(fcvt_lu_h, MATCH_FCVT_LU_H, MASK_FCVT_LU_H) +DECLARE_INSN(fcvt_h_l, MATCH_FCVT_H_L, MASK_FCVT_H_L) +DECLARE_INSN(fcvt_h_lu, MATCH_FCVT_H_LU, MASK_FCVT_H_LU) +DECLARE_INSN(fcvt_s_h, MATCH_FCVT_S_H, MASK_FCVT_S_H) +DECLARE_INSN(fcvt_h_s, MATCH_FCVT_H_S, MASK_FCVT_H_S) +DECLARE_INSN(fcvt_d_h, MATCH_FCVT_D_H, MASK_FCVT_D_H) +DECLARE_INSN(fcvt_h_d, MATCH_FCVT_H_D, MASK_FCVT_H_D) +DECLARE_INSN(flah, MATCH_FLAH, MASK_FLAH) +DECLARE_INSN(fsah, MATCH_FSAH, MASK_FSAH) +DECLARE_INSN(fmadd_ah, MATCH_FMADD_AH, MASK_FMADD_AH) +DECLARE_INSN(fmsub_ah, MATCH_FMSUB_AH, MASK_FMSUB_AH) +DECLARE_INSN(fnmsub_ah, MATCH_FNMSUB_AH, MASK_FNMSUB_AH) +DECLARE_INSN(fnmadd_ah, MATCH_FNMADD_AH, MASK_FNMADD_AH) +DECLARE_INSN(fadd_ah, MATCH_FADD_AH, MASK_FADD_AH) +DECLARE_INSN(fsub_ah, MATCH_FSUB_AH, MASK_FSUB_AH) +DECLARE_INSN(fmul_ah, MATCH_FMUL_AH, MASK_FMUL_AH) +DECLARE_INSN(fdiv_ah, MATCH_FDIV_AH, MASK_FDIV_AH) +DECLARE_INSN(fsqrt_ah, MATCH_FSQRT_AH, MASK_FSQRT_AH) +DECLARE_INSN(fsgnj_ah, MATCH_FSGNJ_AH, MASK_FSGNJ_AH) +DECLARE_INSN(fsgnjn_ah, MATCH_FSGNJN_AH, MASK_FSGNJN_AH) +DECLARE_INSN(fsgnjx_ah, MATCH_FSGNJX_AH, MASK_FSGNJX_AH) +DECLARE_INSN(fmin_ah, MATCH_FMIN_AH, MASK_FMIN_AH) +DECLARE_INSN(fmax_ah, MATCH_FMAX_AH, MASK_FMAX_AH) +DECLARE_INSN(feq_ah, MATCH_FEQ_AH, MASK_FEQ_AH) +DECLARE_INSN(flt_ah, MATCH_FLT_AH, MASK_FLT_AH) +DECLARE_INSN(fle_ah, MATCH_FLE_AH, MASK_FLE_AH) +DECLARE_INSN(fcvt_w_ah, MATCH_FCVT_W_AH, MASK_FCVT_W_AH) +DECLARE_INSN(fcvt_wu_ah, MATCH_FCVT_WU_AH, MASK_FCVT_WU_AH) +DECLARE_INSN(fcvt_ah_w, MATCH_FCVT_AH_W, MASK_FCVT_AH_W) +DECLARE_INSN(fcvt_ah_wu, MATCH_FCVT_AH_WU, MASK_FCVT_AH_WU) +DECLARE_INSN(fmv_x_ah, MATCH_FMV_X_AH, MASK_FMV_X_AH) +DECLARE_INSN(fclass_ah, MATCH_FCLASS_AH, MASK_FCLASS_AH) +DECLARE_INSN(fmv_ah_x, MATCH_FMV_AH_X, MASK_FMV_AH_X) +DECLARE_INSN(fcvt_l_ah, MATCH_FCVT_L_AH, MASK_FCVT_L_AH) +DECLARE_INSN(fcvt_lu_ah, MATCH_FCVT_LU_AH, MASK_FCVT_LU_AH) +DECLARE_INSN(fcvt_ah_l, MATCH_FCVT_AH_L, MASK_FCVT_AH_L) +DECLARE_INSN(fcvt_ah_lu, MATCH_FCVT_AH_LU, MASK_FCVT_AH_LU) +DECLARE_INSN(fcvt_s_ah, MATCH_FCVT_S_AH, MASK_FCVT_S_AH) +DECLARE_INSN(fcvt_ah_s, MATCH_FCVT_AH_S, MASK_FCVT_AH_S) +DECLARE_INSN(fcvt_d_ah, MATCH_FCVT_D_AH, MASK_FCVT_D_AH) +DECLARE_INSN(fcvt_ah_d, MATCH_FCVT_AH_D, MASK_FCVT_AH_D) +DECLARE_INSN(fcvt_h_h, MATCH_FCVT_H_H, MASK_FCVT_H_H) +DECLARE_INSN(fcvt_ah_h, MATCH_FCVT_AH_H, MASK_FCVT_AH_H) +DECLARE_INSN(fcvt_h_ah, MATCH_FCVT_H_AH, MASK_FCVT_H_AH) +DECLARE_INSN(fcvt_ah_ah, MATCH_FCVT_AH_AH, MASK_FCVT_AH_AH) +DECLARE_INSN(flb, MATCH_FLB, MASK_FLB) +DECLARE_INSN(fsb, MATCH_FSB, MASK_FSB) +DECLARE_INSN(fmadd_b, MATCH_FMADD_B, MASK_FMADD_B) +DECLARE_INSN(fmsub_b, MATCH_FMSUB_B, MASK_FMSUB_B) +DECLARE_INSN(fnmsub_b, MATCH_FNMSUB_B, MASK_FNMSUB_B) +DECLARE_INSN(fnmadd_b, MATCH_FNMADD_B, MASK_FNMADD_B) +DECLARE_INSN(fadd_b, MATCH_FADD_B, MASK_FADD_B) +DECLARE_INSN(fsub_b, MATCH_FSUB_B, MASK_FSUB_B) +DECLARE_INSN(fmul_b, MATCH_FMUL_B, MASK_FMUL_B) +DECLARE_INSN(fdiv_b, MATCH_FDIV_B, MASK_FDIV_B) +DECLARE_INSN(fsqrt_b, MATCH_FSQRT_B, MASK_FSQRT_B) +DECLARE_INSN(fsgnj_b, MATCH_FSGNJ_B, MASK_FSGNJ_B) +DECLARE_INSN(fsgnjn_b, MATCH_FSGNJN_B, MASK_FSGNJN_B) +DECLARE_INSN(fsgnjx_b, MATCH_FSGNJX_B, MASK_FSGNJX_B) +DECLARE_INSN(fmin_b, MATCH_FMIN_B, MASK_FMIN_B) +DECLARE_INSN(fmax_b, MATCH_FMAX_B, MASK_FMAX_B) +DECLARE_INSN(feq_b, MATCH_FEQ_B, MASK_FEQ_B) +DECLARE_INSN(flt_b, MATCH_FLT_B, MASK_FLT_B) +DECLARE_INSN(fle_b, MATCH_FLE_B, MASK_FLE_B) +DECLARE_INSN(fcvt_w_b, MATCH_FCVT_W_B, MASK_FCVT_W_B) +DECLARE_INSN(fcvt_wu_b, MATCH_FCVT_WU_B, MASK_FCVT_WU_B) +DECLARE_INSN(fcvt_b_w, MATCH_FCVT_B_W, MASK_FCVT_B_W) +DECLARE_INSN(fcvt_b_wu, MATCH_FCVT_B_WU, MASK_FCVT_B_WU) +DECLARE_INSN(fmv_x_b, MATCH_FMV_X_B, MASK_FMV_X_B) +DECLARE_INSN(fclass_b, MATCH_FCLASS_B, MASK_FCLASS_B) +DECLARE_INSN(fmv_b_x, MATCH_FMV_B_X, MASK_FMV_B_X) +DECLARE_INSN(fcvt_l_b, MATCH_FCVT_L_B, MASK_FCVT_L_B) +DECLARE_INSN(fcvt_lu_b, MATCH_FCVT_LU_B, MASK_FCVT_LU_B) +DECLARE_INSN(fcvt_b_l, MATCH_FCVT_B_L, MASK_FCVT_B_L) +DECLARE_INSN(fcvt_b_lu, MATCH_FCVT_B_LU, MASK_FCVT_B_LU) +DECLARE_INSN(fcvt_s_b, MATCH_FCVT_S_B, MASK_FCVT_S_B) +DECLARE_INSN(fcvt_b_s, MATCH_FCVT_B_S, MASK_FCVT_B_S) +DECLARE_INSN(fcvt_d_b, MATCH_FCVT_D_B, MASK_FCVT_D_B) +DECLARE_INSN(fcvt_b_d, MATCH_FCVT_B_D, MASK_FCVT_B_D) +DECLARE_INSN(fcvt_h_b, MATCH_FCVT_H_B, MASK_FCVT_H_B) +DECLARE_INSN(fcvt_b_h, MATCH_FCVT_B_H, MASK_FCVT_B_H) +DECLARE_INSN(fcvt_ah_b, MATCH_FCVT_AH_B, MASK_FCVT_AH_B) +DECLARE_INSN(fcvt_b_ah, MATCH_FCVT_B_AH, MASK_FCVT_B_AH) +DECLARE_INSN(flab, MATCH_FLAB, MASK_FLAB) +DECLARE_INSN(fsab, MATCH_FSAB, MASK_FSAB) +DECLARE_INSN(fmadd_ab, MATCH_FMADD_AB, MASK_FMADD_AB) +DECLARE_INSN(fmsub_ab, MATCH_FMSUB_AB, MASK_FMSUB_AB) +DECLARE_INSN(fnmsub_ab, MATCH_FNMSUB_AB, MASK_FNMSUB_AB) +DECLARE_INSN(fnmadd_ab, MATCH_FNMADD_AB, MASK_FNMADD_AB) +DECLARE_INSN(fadd_ab, MATCH_FADD_AB, MASK_FADD_AB) +DECLARE_INSN(fsub_ab, MATCH_FSUB_AB, MASK_FSUB_AB) +DECLARE_INSN(fmul_ab, MATCH_FMUL_AB, MASK_FMUL_AB) +DECLARE_INSN(fdiv_ab, MATCH_FDIV_AB, MASK_FDIV_AB) +DECLARE_INSN(fsqrt_ab, MATCH_FSQRT_AB, MASK_FSQRT_AB) +DECLARE_INSN(fsgnj_ab, MATCH_FSGNJ_AB, MASK_FSGNJ_AB) +DECLARE_INSN(fsgnjn_ab, MATCH_FSGNJN_AB, MASK_FSGNJN_AB) +DECLARE_INSN(fsgnjx_ab, MATCH_FSGNJX_AB, MASK_FSGNJX_AB) +DECLARE_INSN(fmin_ab, MATCH_FMIN_AB, MASK_FMIN_AB) +DECLARE_INSN(fmax_ab, MATCH_FMAX_AB, MASK_FMAX_AB) +DECLARE_INSN(feq_ab, MATCH_FEQ_AB, MASK_FEQ_AB) +DECLARE_INSN(flt_ab, MATCH_FLT_AB, MASK_FLT_AB) +DECLARE_INSN(fle_ab, MATCH_FLE_AB, MASK_FLE_AB) +DECLARE_INSN(fcvt_w_ab, MATCH_FCVT_W_AB, MASK_FCVT_W_AB) +DECLARE_INSN(fcvt_wu_ab, MATCH_FCVT_WU_AB, MASK_FCVT_WU_AB) +DECLARE_INSN(fcvt_ab_w, MATCH_FCVT_AB_W, MASK_FCVT_AB_W) +DECLARE_INSN(fcvt_ab_wu, MATCH_FCVT_AB_WU, MASK_FCVT_AB_WU) +DECLARE_INSN(fmv_x_ab, MATCH_FMV_X_AB, MASK_FMV_X_AB) +DECLARE_INSN(fclass_ab, MATCH_FCLASS_AB, MASK_FCLASS_AB) +DECLARE_INSN(fmv_ab_x, MATCH_FMV_AB_X, MASK_FMV_AB_X) +DECLARE_INSN(fcvt_l_ab, MATCH_FCVT_L_AB, MASK_FCVT_L_AB) +DECLARE_INSN(fcvt_lu_ab, MATCH_FCVT_LU_AB, MASK_FCVT_LU_AB) +DECLARE_INSN(fcvt_ab_l, MATCH_FCVT_AB_L, MASK_FCVT_AB_L) +DECLARE_INSN(fcvt_ab_lu, MATCH_FCVT_AB_LU, MASK_FCVT_AB_LU) +DECLARE_INSN(fcvt_s_ab, MATCH_FCVT_S_AB, MASK_FCVT_S_AB) +DECLARE_INSN(fcvt_ab_s, MATCH_FCVT_AB_S, MASK_FCVT_AB_S) +DECLARE_INSN(fcvt_d_ab, MATCH_FCVT_D_AB, MASK_FCVT_D_AB) +DECLARE_INSN(fcvt_ab_d, MATCH_FCVT_AB_D, MASK_FCVT_AB_D) +DECLARE_INSN(fcvt_h_ab, MATCH_FCVT_H_AB, MASK_FCVT_H_AB) +DECLARE_INSN(fcvt_ab_h, MATCH_FCVT_AB_H, MASK_FCVT_AB_H) +DECLARE_INSN(fcvt_ah_ab, MATCH_FCVT_AH_AB, MASK_FCVT_AH_AB) +DECLARE_INSN(fcvt_ab_ah, MATCH_FCVT_AB_AH, MASK_FCVT_AB_AH) +DECLARE_INSN(fcvt_b_b, MATCH_FCVT_B_B, MASK_FCVT_B_B) +DECLARE_INSN(fcvt_ab_b, MATCH_FCVT_AB_B, MASK_FCVT_AB_B) +DECLARE_INSN(fcvt_b_ab, MATCH_FCVT_B_AB, MASK_FCVT_B_AB) +DECLARE_INSN(fcvt_ab_ab, MATCH_FCVT_AB_AB, MASK_FCVT_AB_AB) +DECLARE_INSN(scfgri, MATCH_SCFGRI, MASK_SCFGRI) +DECLARE_INSN(scfgwi, MATCH_SCFGWI, MASK_SCFGWI) +DECLARE_INSN(scfgr, MATCH_SCFGR, MASK_SCFGR) +DECLARE_INSN(scfgw, MATCH_SCFGW, MASK_SCFGW) +DECLARE_INSN(ecall, MATCH_ECALL, MASK_ECALL) +DECLARE_INSN(ebreak, MATCH_EBREAK, MASK_EBREAK) +DECLARE_INSN(uret, MATCH_URET, MASK_URET) +DECLARE_INSN(sret, MATCH_SRET, MASK_SRET) +DECLARE_INSN(mret, MATCH_MRET, MASK_MRET) +DECLARE_INSN(dret, MATCH_DRET, MASK_DRET) +DECLARE_INSN(sfence_vma, MATCH_SFENCE_VMA, MASK_SFENCE_VMA) +DECLARE_INSN(wfi, MATCH_WFI, MASK_WFI) +DECLARE_INSN(csrrw, MATCH_CSRRW, MASK_CSRRW) +DECLARE_INSN(csrrs, MATCH_CSRRS, MASK_CSRRS) +DECLARE_INSN(csrrc, MATCH_CSRRC, MASK_CSRRC) +DECLARE_INSN(csrrwi, MATCH_CSRRWI, MASK_CSRRWI) +DECLARE_INSN(csrrsi, MATCH_CSRRSI, MASK_CSRRSI) +DECLARE_INSN(csrrci, MATCH_CSRRCI, MASK_CSRRCI) +#endif +#ifdef DECLARE_CSR +DECLARE_CSR(fflags, CSR_FFLAGS) +DECLARE_CSR(frm, CSR_FRM) +DECLARE_CSR(fcsr, CSR_FCSR) +DECLARE_CSR(ustatus, CSR_USTATUS) +DECLARE_CSR(uie, CSR_UIE) +DECLARE_CSR(utvec, CSR_UTVEC) +DECLARE_CSR(vstart, CSR_VSTART) +DECLARE_CSR(vxsat, CSR_VXSAT) +DECLARE_CSR(vxrm, CSR_VXRM) +DECLARE_CSR(vcsr, CSR_VCSR) +DECLARE_CSR(uscratch, CSR_USCRATCH) +DECLARE_CSR(uepc, CSR_UEPC) +DECLARE_CSR(ucause, CSR_UCAUSE) +DECLARE_CSR(utval, CSR_UTVAL) +DECLARE_CSR(uip, CSR_UIP) +DECLARE_CSR(fmode, CSR_FMODE) +DECLARE_CSR(cycle, CSR_CYCLE) +DECLARE_CSR(time, CSR_TIME) +DECLARE_CSR(instret, CSR_INSTRET) +DECLARE_CSR(hpmcounter3, CSR_HPMCOUNTER3) +DECLARE_CSR(hpmcounter4, CSR_HPMCOUNTER4) +DECLARE_CSR(hpmcounter5, CSR_HPMCOUNTER5) +DECLARE_CSR(hpmcounter6, CSR_HPMCOUNTER6) +DECLARE_CSR(hpmcounter7, CSR_HPMCOUNTER7) +DECLARE_CSR(hpmcounter8, CSR_HPMCOUNTER8) +DECLARE_CSR(hpmcounter9, CSR_HPMCOUNTER9) +DECLARE_CSR(hpmcounter10, CSR_HPMCOUNTER10) +DECLARE_CSR(hpmcounter11, CSR_HPMCOUNTER11) +DECLARE_CSR(hpmcounter12, CSR_HPMCOUNTER12) +DECLARE_CSR(hpmcounter13, CSR_HPMCOUNTER13) +DECLARE_CSR(hpmcounter14, CSR_HPMCOUNTER14) +DECLARE_CSR(hpmcounter15, CSR_HPMCOUNTER15) +DECLARE_CSR(hpmcounter16, CSR_HPMCOUNTER16) +DECLARE_CSR(hpmcounter17, CSR_HPMCOUNTER17) +DECLARE_CSR(hpmcounter18, CSR_HPMCOUNTER18) +DECLARE_CSR(hpmcounter19, CSR_HPMCOUNTER19) +DECLARE_CSR(hpmcounter20, CSR_HPMCOUNTER20) +DECLARE_CSR(hpmcounter21, CSR_HPMCOUNTER21) +DECLARE_CSR(hpmcounter22, CSR_HPMCOUNTER22) +DECLARE_CSR(hpmcounter23, CSR_HPMCOUNTER23) +DECLARE_CSR(hpmcounter24, CSR_HPMCOUNTER24) +DECLARE_CSR(hpmcounter25, CSR_HPMCOUNTER25) +DECLARE_CSR(hpmcounter26, CSR_HPMCOUNTER26) +DECLARE_CSR(hpmcounter27, CSR_HPMCOUNTER27) +DECLARE_CSR(hpmcounter28, CSR_HPMCOUNTER28) +DECLARE_CSR(hpmcounter29, CSR_HPMCOUNTER29) +DECLARE_CSR(hpmcounter30, CSR_HPMCOUNTER30) +DECLARE_CSR(hpmcounter31, CSR_HPMCOUNTER31) +DECLARE_CSR(vl, CSR_VL) +DECLARE_CSR(vtype, CSR_VTYPE) +DECLARE_CSR(vlenb, CSR_VLENB) +DECLARE_CSR(mtype, CSR_MTYPE) +DECLARE_CSR(tilem, CSR_TILEM) +DECLARE_CSR(tilek, CSR_TILEK) +DECLARE_CSR(tilen, CSR_TILEN) +DECLARE_CSR(sstatus, CSR_SSTATUS) +DECLARE_CSR(sedeleg, CSR_SEDELEG) +DECLARE_CSR(sideleg, CSR_SIDELEG) +DECLARE_CSR(sie, CSR_SIE) +DECLARE_CSR(stvec, CSR_STVEC) +DECLARE_CSR(scounteren, CSR_SCOUNTEREN) +DECLARE_CSR(sscratch, CSR_SSCRATCH) +DECLARE_CSR(sepc, CSR_SEPC) +DECLARE_CSR(scause, CSR_SCAUSE) +DECLARE_CSR(stval, CSR_STVAL) +DECLARE_CSR(sip, CSR_SIP) +DECLARE_CSR(satp, CSR_SATP) +DECLARE_CSR(vsstatus, CSR_VSSTATUS) +DECLARE_CSR(vsie, CSR_VSIE) +DECLARE_CSR(vstvec, CSR_VSTVEC) +DECLARE_CSR(vsscratch, CSR_VSSCRATCH) +DECLARE_CSR(vsepc, CSR_VSEPC) +DECLARE_CSR(vscause, CSR_VSCAUSE) +DECLARE_CSR(vstval, CSR_VSTVAL) +DECLARE_CSR(vsip, CSR_VSIP) +DECLARE_CSR(vsatp, CSR_VSATP) +DECLARE_CSR(hstatus, CSR_HSTATUS) +DECLARE_CSR(hedeleg, CSR_HEDELEG) +DECLARE_CSR(hideleg, CSR_HIDELEG) +DECLARE_CSR(hie, CSR_HIE) +DECLARE_CSR(htimedelta, CSR_HTIMEDELTA) +DECLARE_CSR(hcounteren, CSR_HCOUNTEREN) +DECLARE_CSR(hgeie, CSR_HGEIE) +DECLARE_CSR(htval, CSR_HTVAL) +DECLARE_CSR(hip, CSR_HIP) +DECLARE_CSR(hvip, CSR_HVIP) +DECLARE_CSR(htinst, CSR_HTINST) +DECLARE_CSR(hgatp, CSR_HGATP) +DECLARE_CSR(hgeip, CSR_HGEIP) +DECLARE_CSR(utvt, CSR_UTVT) +DECLARE_CSR(unxti, CSR_UNXTI) +DECLARE_CSR(uintstatus, CSR_UINTSTATUS) +DECLARE_CSR(uscratchcsw, CSR_USCRATCHCSW) +DECLARE_CSR(uscratchcswl, CSR_USCRATCHCSWL) +DECLARE_CSR(stvt, CSR_STVT) +DECLARE_CSR(snxti, CSR_SNXTI) +DECLARE_CSR(sintstatus, CSR_SINTSTATUS) +DECLARE_CSR(sscratchcsw, CSR_SSCRATCHCSW) +DECLARE_CSR(sscratchcswl, CSR_SSCRATCHCSWL) +DECLARE_CSR(mtvt, CSR_MTVT) +DECLARE_CSR(mnxti, CSR_MNXTI) +DECLARE_CSR(mintstatus, CSR_MINTSTATUS) +DECLARE_CSR(mscratchcsw, CSR_MSCRATCHCSW) +DECLARE_CSR(mscratchcswl, CSR_MSCRATCHCSWL) +DECLARE_CSR(mstatus, CSR_MSTATUS) +DECLARE_CSR(misa, CSR_MISA) +DECLARE_CSR(medeleg, CSR_MEDELEG) +DECLARE_CSR(mideleg, CSR_MIDELEG) +DECLARE_CSR(mie, CSR_MIE) +DECLARE_CSR(mtvec, CSR_MTVEC) +DECLARE_CSR(mcounteren, CSR_MCOUNTEREN) +DECLARE_CSR(mcountinhibit, CSR_MCOUNTINHIBIT) +DECLARE_CSR(mscratch, CSR_MSCRATCH) +DECLARE_CSR(mepc, CSR_MEPC) +DECLARE_CSR(mcause, CSR_MCAUSE) +DECLARE_CSR(mtval, CSR_MTVAL) +DECLARE_CSR(mip, CSR_MIP) +DECLARE_CSR(mtinst, CSR_MTINST) +DECLARE_CSR(mtval2, CSR_MTVAL2) +DECLARE_CSR(pmpcfg0, CSR_PMPCFG0) +DECLARE_CSR(pmpcfg1, CSR_PMPCFG1) +DECLARE_CSR(pmpcfg2, CSR_PMPCFG2) +DECLARE_CSR(pmpcfg3, CSR_PMPCFG3) +DECLARE_CSR(pmpaddr0, CSR_PMPADDR0) +DECLARE_CSR(pmpaddr1, CSR_PMPADDR1) +DECLARE_CSR(pmpaddr2, CSR_PMPADDR2) +DECLARE_CSR(pmpaddr3, CSR_PMPADDR3) +DECLARE_CSR(pmpaddr4, CSR_PMPADDR4) +DECLARE_CSR(pmpaddr5, CSR_PMPADDR5) +DECLARE_CSR(pmpaddr6, CSR_PMPADDR6) +DECLARE_CSR(pmpaddr7, CSR_PMPADDR7) +DECLARE_CSR(pmpaddr8, CSR_PMPADDR8) +DECLARE_CSR(pmpaddr9, CSR_PMPADDR9) +DECLARE_CSR(pmpaddr10, CSR_PMPADDR10) +DECLARE_CSR(pmpaddr11, CSR_PMPADDR11) +DECLARE_CSR(pmpaddr12, CSR_PMPADDR12) +DECLARE_CSR(pmpaddr13, CSR_PMPADDR13) +DECLARE_CSR(pmpaddr14, CSR_PMPADDR14) +DECLARE_CSR(pmpaddr15, CSR_PMPADDR15) +DECLARE_CSR(tselect, CSR_TSELECT) +DECLARE_CSR(tdata1, CSR_TDATA1) +DECLARE_CSR(tdata2, CSR_TDATA2) +DECLARE_CSR(tdata3, CSR_TDATA3) +DECLARE_CSR(dcsr, CSR_DCSR) +DECLARE_CSR(dpc, CSR_DPC) +DECLARE_CSR(dscratch0, CSR_DSCRATCH0) +DECLARE_CSR(dscratch1, CSR_DSCRATCH1) +DECLARE_CSR(mcycle, CSR_MCYCLE) +DECLARE_CSR(minstret, CSR_MINSTRET) +DECLARE_CSR(mhpmcounter3, CSR_MHPMCOUNTER3) +DECLARE_CSR(mhpmcounter4, CSR_MHPMCOUNTER4) +DECLARE_CSR(mhpmcounter5, CSR_MHPMCOUNTER5) +DECLARE_CSR(mhpmcounter6, CSR_MHPMCOUNTER6) +DECLARE_CSR(mhpmcounter7, CSR_MHPMCOUNTER7) +DECLARE_CSR(mhpmcounter8, CSR_MHPMCOUNTER8) +DECLARE_CSR(mhpmcounter9, CSR_MHPMCOUNTER9) +DECLARE_CSR(mhpmcounter10, CSR_MHPMCOUNTER10) +DECLARE_CSR(mhpmcounter11, CSR_MHPMCOUNTER11) +DECLARE_CSR(mhpmcounter12, CSR_MHPMCOUNTER12) +DECLARE_CSR(mhpmcounter13, CSR_MHPMCOUNTER13) +DECLARE_CSR(mhpmcounter14, CSR_MHPMCOUNTER14) +DECLARE_CSR(mhpmcounter15, CSR_MHPMCOUNTER15) +DECLARE_CSR(mhpmcounter16, CSR_MHPMCOUNTER16) +DECLARE_CSR(mhpmcounter17, CSR_MHPMCOUNTER17) +DECLARE_CSR(mhpmcounter18, CSR_MHPMCOUNTER18) +DECLARE_CSR(mhpmcounter19, CSR_MHPMCOUNTER19) +DECLARE_CSR(mhpmcounter20, CSR_MHPMCOUNTER20) +DECLARE_CSR(mhpmcounter21, CSR_MHPMCOUNTER21) +DECLARE_CSR(mhpmcounter22, CSR_MHPMCOUNTER22) +DECLARE_CSR(mhpmcounter23, CSR_MHPMCOUNTER23) +DECLARE_CSR(mhpmcounter24, CSR_MHPMCOUNTER24) +DECLARE_CSR(mhpmcounter25, CSR_MHPMCOUNTER25) +DECLARE_CSR(mhpmcounter26, CSR_MHPMCOUNTER26) +DECLARE_CSR(mhpmcounter27, CSR_MHPMCOUNTER27) +DECLARE_CSR(mhpmcounter28, CSR_MHPMCOUNTER28) +DECLARE_CSR(mhpmcounter29, CSR_MHPMCOUNTER29) +DECLARE_CSR(mhpmcounter30, CSR_MHPMCOUNTER30) +DECLARE_CSR(mhpmcounter31, CSR_MHPMCOUNTER31) +DECLARE_CSR(mhpmevent3, CSR_MHPMEVENT3) +DECLARE_CSR(mhpmevent4, CSR_MHPMEVENT4) +DECLARE_CSR(mhpmevent5, CSR_MHPMEVENT5) +DECLARE_CSR(mhpmevent6, CSR_MHPMEVENT6) +DECLARE_CSR(mhpmevent7, CSR_MHPMEVENT7) +DECLARE_CSR(mhpmevent8, CSR_MHPMEVENT8) +DECLARE_CSR(mhpmevent9, CSR_MHPMEVENT9) +DECLARE_CSR(mhpmevent10, CSR_MHPMEVENT10) +DECLARE_CSR(mhpmevent11, CSR_MHPMEVENT11) +DECLARE_CSR(mhpmevent12, CSR_MHPMEVENT12) +DECLARE_CSR(mhpmevent13, CSR_MHPMEVENT13) +DECLARE_CSR(mhpmevent14, CSR_MHPMEVENT14) +DECLARE_CSR(mhpmevent15, CSR_MHPMEVENT15) +DECLARE_CSR(mhpmevent16, CSR_MHPMEVENT16) +DECLARE_CSR(mhpmevent17, CSR_MHPMEVENT17) +DECLARE_CSR(mhpmevent18, CSR_MHPMEVENT18) +DECLARE_CSR(mhpmevent19, CSR_MHPMEVENT19) +DECLARE_CSR(mhpmevent20, CSR_MHPMEVENT20) +DECLARE_CSR(mhpmevent21, CSR_MHPMEVENT21) +DECLARE_CSR(mhpmevent22, CSR_MHPMEVENT22) +DECLARE_CSR(mhpmevent23, CSR_MHPMEVENT23) +DECLARE_CSR(mhpmevent24, CSR_MHPMEVENT24) +DECLARE_CSR(mhpmevent25, CSR_MHPMEVENT25) +DECLARE_CSR(mhpmevent26, CSR_MHPMEVENT26) +DECLARE_CSR(mhpmevent27, CSR_MHPMEVENT27) +DECLARE_CSR(mhpmevent28, CSR_MHPMEVENT28) +DECLARE_CSR(mhpmevent29, CSR_MHPMEVENT29) +DECLARE_CSR(mhpmevent30, CSR_MHPMEVENT30) +DECLARE_CSR(mhpmevent31, CSR_MHPMEVENT31) +DECLARE_CSR(trace, CSR_TRACE) +DECLARE_CSR(mvendorid, CSR_MVENDORID) +DECLARE_CSR(marchid, CSR_MARCHID) +DECLARE_CSR(mimpid, CSR_MIMPID) +DECLARE_CSR(mhartid, CSR_MHARTID) +DECLARE_CSR(ssr, CSR_SSR) +DECLARE_CSR(fpmode, CSR_FPMODE) +DECLARE_CSR(htimedeltah, CSR_HTIMEDELTAH) +DECLARE_CSR(cycleh, CSR_CYCLEH) +DECLARE_CSR(timeh, CSR_TIMEH) +DECLARE_CSR(instreth, CSR_INSTRETH) +DECLARE_CSR(hpmcounter3h, CSR_HPMCOUNTER3H) +DECLARE_CSR(hpmcounter4h, CSR_HPMCOUNTER4H) +DECLARE_CSR(hpmcounter5h, CSR_HPMCOUNTER5H) +DECLARE_CSR(hpmcounter6h, CSR_HPMCOUNTER6H) +DECLARE_CSR(hpmcounter7h, CSR_HPMCOUNTER7H) +DECLARE_CSR(hpmcounter8h, CSR_HPMCOUNTER8H) +DECLARE_CSR(hpmcounter9h, CSR_HPMCOUNTER9H) +DECLARE_CSR(hpmcounter10h, CSR_HPMCOUNTER10H) +DECLARE_CSR(hpmcounter11h, CSR_HPMCOUNTER11H) +DECLARE_CSR(hpmcounter12h, CSR_HPMCOUNTER12H) +DECLARE_CSR(hpmcounter13h, CSR_HPMCOUNTER13H) +DECLARE_CSR(hpmcounter14h, CSR_HPMCOUNTER14H) +DECLARE_CSR(hpmcounter15h, CSR_HPMCOUNTER15H) +DECLARE_CSR(hpmcounter16h, CSR_HPMCOUNTER16H) +DECLARE_CSR(hpmcounter17h, CSR_HPMCOUNTER17H) +DECLARE_CSR(hpmcounter18h, CSR_HPMCOUNTER18H) +DECLARE_CSR(hpmcounter19h, CSR_HPMCOUNTER19H) +DECLARE_CSR(hpmcounter20h, CSR_HPMCOUNTER20H) +DECLARE_CSR(hpmcounter21h, CSR_HPMCOUNTER21H) +DECLARE_CSR(hpmcounter22h, CSR_HPMCOUNTER22H) +DECLARE_CSR(hpmcounter23h, CSR_HPMCOUNTER23H) +DECLARE_CSR(hpmcounter24h, CSR_HPMCOUNTER24H) +DECLARE_CSR(hpmcounter25h, CSR_HPMCOUNTER25H) +DECLARE_CSR(hpmcounter26h, CSR_HPMCOUNTER26H) +DECLARE_CSR(hpmcounter27h, CSR_HPMCOUNTER27H) +DECLARE_CSR(hpmcounter28h, CSR_HPMCOUNTER28H) +DECLARE_CSR(hpmcounter29h, CSR_HPMCOUNTER29H) +DECLARE_CSR(hpmcounter30h, CSR_HPMCOUNTER30H) +DECLARE_CSR(hpmcounter31h, CSR_HPMCOUNTER31H) +DECLARE_CSR(mstatush, CSR_MSTATUSH) +DECLARE_CSR(mcycleh, CSR_MCYCLEH) +DECLARE_CSR(minstreth, CSR_MINSTRETH) +DECLARE_CSR(mhpmcounter3h, CSR_MHPMCOUNTER3H) +DECLARE_CSR(mhpmcounter4h, CSR_MHPMCOUNTER4H) +DECLARE_CSR(mhpmcounter5h, CSR_MHPMCOUNTER5H) +DECLARE_CSR(mhpmcounter6h, CSR_MHPMCOUNTER6H) +DECLARE_CSR(mhpmcounter7h, CSR_MHPMCOUNTER7H) +DECLARE_CSR(mhpmcounter8h, CSR_MHPMCOUNTER8H) +DECLARE_CSR(mhpmcounter9h, CSR_MHPMCOUNTER9H) +DECLARE_CSR(mhpmcounter10h, CSR_MHPMCOUNTER10H) +DECLARE_CSR(mhpmcounter11h, CSR_MHPMCOUNTER11H) +DECLARE_CSR(mhpmcounter12h, CSR_MHPMCOUNTER12H) +DECLARE_CSR(mhpmcounter13h, CSR_MHPMCOUNTER13H) +DECLARE_CSR(mhpmcounter14h, CSR_MHPMCOUNTER14H) +DECLARE_CSR(mhpmcounter15h, CSR_MHPMCOUNTER15H) +DECLARE_CSR(mhpmcounter16h, CSR_MHPMCOUNTER16H) +DECLARE_CSR(mhpmcounter17h, CSR_MHPMCOUNTER17H) +DECLARE_CSR(mhpmcounter18h, CSR_MHPMCOUNTER18H) +DECLARE_CSR(mhpmcounter19h, CSR_MHPMCOUNTER19H) +DECLARE_CSR(mhpmcounter20h, CSR_MHPMCOUNTER20H) +DECLARE_CSR(mhpmcounter21h, CSR_MHPMCOUNTER21H) +DECLARE_CSR(mhpmcounter22h, CSR_MHPMCOUNTER22H) +DECLARE_CSR(mhpmcounter23h, CSR_MHPMCOUNTER23H) +DECLARE_CSR(mhpmcounter24h, CSR_MHPMCOUNTER24H) +DECLARE_CSR(mhpmcounter25h, CSR_MHPMCOUNTER25H) +DECLARE_CSR(mhpmcounter26h, CSR_MHPMCOUNTER26H) +DECLARE_CSR(mhpmcounter27h, CSR_MHPMCOUNTER27H) +DECLARE_CSR(mhpmcounter28h, CSR_MHPMCOUNTER28H) +DECLARE_CSR(mhpmcounter29h, CSR_MHPMCOUNTER29H) +DECLARE_CSR(mhpmcounter30h, CSR_MHPMCOUNTER30H) +DECLARE_CSR(mhpmcounter31h, CSR_MHPMCOUNTER31H) +#endif +#ifdef DECLARE_CAUSE +DECLARE_CAUSE("misaligned fetch", CAUSE_MISALIGNED_FETCH) +DECLARE_CAUSE("fetch access", CAUSE_FETCH_ACCESS) +DECLARE_CAUSE("illegal instruction", CAUSE_ILLEGAL_INSTRUCTION) +DECLARE_CAUSE("breakpoint", CAUSE_BREAKPOINT) +DECLARE_CAUSE("misaligned load", CAUSE_MISALIGNED_LOAD) +DECLARE_CAUSE("load access", CAUSE_LOAD_ACCESS) +DECLARE_CAUSE("misaligned store", CAUSE_MISALIGNED_STORE) +DECLARE_CAUSE("store access", CAUSE_STORE_ACCESS) +DECLARE_CAUSE("user_ecall", CAUSE_USER_ECALL) +DECLARE_CAUSE("supervisor_ecall", CAUSE_SUPERVISOR_ECALL) +DECLARE_CAUSE("virtual_supervisor_ecall", CAUSE_VIRTUAL_SUPERVISOR_ECALL) +DECLARE_CAUSE("machine_ecall", CAUSE_MACHINE_ECALL) +DECLARE_CAUSE("fetch page fault", CAUSE_FETCH_PAGE_FAULT) +DECLARE_CAUSE("load page fault", CAUSE_LOAD_PAGE_FAULT) +DECLARE_CAUSE("store page fault", CAUSE_STORE_PAGE_FAULT) +DECLARE_CAUSE("fetch guest page fault", CAUSE_FETCH_GUEST_PAGE_FAULT) +DECLARE_CAUSE("load guest page fault", CAUSE_LOAD_GUEST_PAGE_FAULT) +DECLARE_CAUSE("virtual instruction", CAUSE_VIRTUAL_INSTRUCTION) +DECLARE_CAUSE("store guest page fault", CAUSE_STORE_GUEST_PAGE_FAULT) +#endif diff --git a/sw/spatzBenchmarks/CMakeLists.txt b/sw/spatzBenchmarks/CMakeLists.txt index 46f85404..f090d659 100644 --- a/sw/spatzBenchmarks/CMakeLists.txt +++ b/sw/spatzBenchmarks/CMakeLists.txt @@ -118,3 +118,33 @@ add_spatz_test_twoParam(dp-fft-cache dp-fft-cache/main.c 128 2) add_spatz_test_twoParam(sp-fft sp-fft/main.c 256 2) add_spatz_test_twoParam(sp-fft sp-fft/main.c 512 2) + +add_spatz_test_threeParam(dp-mxfmatmul dp-mxfmatmul/main.c 64 64 64) + +# Tests for DATE +# Vanilla fmatmul +add_spatz_test_threeParam(dp-fmatmul-8x2vl dp-fmatmul-8x2vl/main.c 64 64 64) +add_spatz_test_threeParam(dp-fmatmul-8x2vl dp-fmatmul-8x2vl/main.c 32 32 32) +add_spatz_test_threeParam(dp-fmatmul-8x2vl dp-fmatmul-8x2vl/main.c 16 16 16) +add_spatz_test_threeParam(dp-fmatmul-4x4vl dp-fmatmul-4x4vl/main.c 64 64 64) +add_spatz_test_threeParam(dp-fmatmul-4x4vl dp-fmatmul-4x4vl/main.c 32 32 32) +add_spatz_test_threeParam(dp-fmatmul-4x4vl dp-fmatmul-4x4vl/main.c 16 16 16) +# MXU matmul +add_spatz_test_threeParam(dp-mxfmatmul-m8n4k4-b4 dp-mxfmatmul-m8n4k4-b4/main.c 64 64 64) +add_spatz_test_threeParam(dp-mxfmatmul-m8n4k4-b4 dp-mxfmatmul-m8n4k4-b4/main.c 32 32 32) +add_spatz_test_threeParam(dp-mxfmatmul-m8n4k4-b4 dp-mxfmatmul-m8n4k4-b4/main.c 16 16 16) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k4-b4 dp-mxfmatmul-m4n4k4-b4/main.c 64 64 64) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k4-b4 dp-mxfmatmul-m4n4k4-b4/main.c 32 32 32) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k4-b4 dp-mxfmatmul-m4n4k4-b4/main.c 16 16 16) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k8-b4 dp-mxfmatmul-m4n4k8-b4/main.c 64 64 64) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k8-b4 dp-mxfmatmul-m4n4k8-b4/main.c 32 32 32) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k8-b4 dp-mxfmatmul-m4n4k8-b4/main.c 16 16 16) +add_spatz_test_threeParam(dp-mxfmatmul-m8n4k4-b2 dp-mxfmatmul-m8n4k4-b2/main.c 64 64 64) +add_spatz_test_threeParam(dp-mxfmatmul-m8n4k4-b2 dp-mxfmatmul-m8n4k4-b2/main.c 32 32 32) +add_spatz_test_threeParam(dp-mxfmatmul-m8n4k4-b2 dp-mxfmatmul-m8n4k4-b2/main.c 16 16 16) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k4-b2 dp-mxfmatmul-m4n4k4-b2/main.c 64 64 64) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k4-b2 dp-mxfmatmul-m4n4k4-b2/main.c 32 32 32) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k4-b2 dp-mxfmatmul-m4n4k4-b2/main.c 16 16 16) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k8-b2 dp-mxfmatmul-m4n4k8-b2/main.c 64 64 64) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k8-b2 dp-mxfmatmul-m4n4k8-b2/main.c 32 32 32) +add_spatz_test_threeParam(dp-mxfmatmul-m4n4k8-b2 dp-mxfmatmul-m4n4k8-b2/main.c 16 16 16) diff --git a/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/.gitignore b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/.gitignore new file mode 100644 index 00000000..dacc7e49 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/.gitignore @@ -0,0 +1 @@ +data_gemm.h diff --git a/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/data_16_16_16.h b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/data_16_16_16.h new file mode 100644 index 00000000..eb2a17b6 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/data_16_16_16.h @@ -0,0 +1,30 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 16, + .N = 16, + .K = 16, + .TA = 0, + .TB = 0, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +static double gemm_A_dram [16*16] __attribute__((section(".data"))) = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033}; + + +static double gemm_B_dram [16*16] __attribute__((section(".data"))) = {0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774}; + + +static double gemm_C_dram [16*16] __attribute__((section(".data"))) = {0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222}; + + +static const double gemm_checksum[16] = {3.53318139833275, 18.910557186514914, 17.061557051251178, -17.86682606914221, -5.920568815540228, -16.80427557391132, 12.345786410219814, 24.565576004988085, 3.617111620044957, -18.771063102425778, 43.637805771956224, -17.699257074021574, -7.3420911665199835, 8.052332093906525, -16.822597494037367, 2.274275182397295}; + + diff --git a/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/data_32_32_32.h b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/data_32_32_32.h new file mode 100644 index 00000000..848709cf --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/data_32_32_32.h @@ -0,0 +1,30 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 32, + .N = 32, + .K = 32, + .TA = 0, + .TB = 0, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +static double gemm_A_dram [32*32] __attribute__((section(".data"))) = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342}; + + +static double gemm_B_dram [32*32] __attribute__((section(".data"))) = {1.8448885093030065, 0.572007132100381, -0.9020532459752512, 1.423932009681719, 1.1116421563744774, -0.609918694875925, 1.0390897743423966, -0.1305603800084962, 0.7049709576256773, -0.30985592801910117, -0.6566307196626123, -0.005304890708390932, 0.47214213858952303, 1.247922968974058, -1.434297700901899, -0.5773871236273995, 1.9951334816061994, -0.9419344596787323, -1.3864755081036366, -0.15540161000210675, 0.28089640344542804, 0.6902199813822665, 0.055137779443554184, -0.1316442026885298, -0.47920924486264665, -0.37134570058665717, 1.1612473442212157, 1.862246649641681, 1.1127961330998304, -0.449879365783737, -0.4581821737978766, 2.681801981114757, 0.622613137075688, -0.5264955185026189, 1.7456452297639542, -0.0032580522874735246, -0.08412480377121889, -0.09847618283385187, 0.5573182638994464, -1.1975598741016937, -0.25042914816475237, -0.24189491229960913, 0.1717462405241003, 0.5303343737606813, 0.8246091313323292, 1.010839700197812, -0.8902436270883701, 0.5757151238996234, -0.6241388306405901, 1.0306895727537915, 0.5437796109495969, -0.37254092473885336, 0.17302563058445183, 0.16431412357817202, -0.297796251553928, 1.0415794322065468, 0.27195785052081917, 0.8941462516437774, 1.8901581231152924, 0.16318485053532772, -0.42772830220525987, 2.22854455207779, 2.85934273014681, 0.620608819397525, -2.0773600718526932, 0.5102128857829208, -1.3425473236398795, 1.0664992078500592, -1.3978347586933288, -0.5082793586733352, 1.0293339145628106, 1.1953652639556394, -0.7592324149843712, -0.9927853948011712, -0.8401102070638347, 0.3955192048365272, 0.34215369871376844, -2.8791873832700547, -0.0421115170793464, 0.2803818171599705, -0.9401015854505796, -0.08972003336849564, -0.640338334227558, 2.0182530686564895, -0.7235603815620858, 0.6081345501547663, 1.7752306448722606, 0.031457706909880166, 0.899919260122491, -0.5364177308537464, 0.9954498087197619, 0.21059455079709405, 0.8203366802620794, 0.15551004552008937, -0.5905994619497847, 1.4571504499595769, -0.05879218788301025, 0.6116700031464317, -1.3093298447872528, -1.9790524548585495, 2.327922240143418, 0.5346029134452727, -0.2220392426765117, 1.0350931612437495, 0.579583179532083, -0.09395716249601935, -0.5606885258433681, -0.6916360198922066, -0.25495705935359947, -0.23051091319332653, 0.5226206406896088, -0.6035154511863011, 0.5592128760780101, -0.3223643795390148, 0.5138781656523993, -0.7592214987689807, 2.417337785331285, 0.17028885180838357, -0.18586838199027028, 0.40185795512569217, -0.5670525260070235, 0.14141128561714333, 0.536910685665978, -0.04468791360092496, -0.13107111869784893, 0.8500574802035589, -1.2986776963277358, 1.3299424270339977, -0.14883240827467462, 2.0486968982261202, -0.9909136952855094, -0.3600241005246587, 0.1602748303156346, 0.07168780603661637, 0.30202523579276225, -0.582835004754739, 1.0356927036283528, -1.0360800724687276, 1.993616236752697, -1.2365797403960304, 1.8548042098231963, 0.20499605949096963, 1.2010757276760113, 2.057751677950784, 0.2883899362101988, 1.6134203350119927, -0.9640624060585024, -1.1213275218434526, 0.6531743202785056, 0.2277981765470329, -0.8359861748374583, 0.5680057504067159, 0.28253652479051733, 1.1165497781562674, -0.5714364972858512, -0.09854463425203973, 2.395067138296113, 0.3316175009075528, -0.6884736402196919, -2.0231033737037047, -1.6070787249452574, -0.7165117692039605, -0.7553512437574256, 1.9280259690970352, -0.26733976223106926, -0.0673955495394241, -0.536406291194771, -0.7093789385459298, 1.744020696757244, -0.8126325347024919, -1.5969922983164335, -1.2686890383326754, -0.9291972010711246, 0.9031672530350638, 2.269233244076525, 0.40988533123157295, -1.7212576593177709, 0.7166427020983424, 0.3627363765292881, -1.5589258141736047, 1.3206137582172544, 0.22241582722694822, -0.5254557201726808, 0.4487811587655208, 1.4717430631656925, 0.6002964569533693, -0.7795697135851043, 0.610220453599741, 0.9796702201792316, -1.7646934144734967, -0.8420374077504474, 0.5166078996711738, -1.2752325216668503, -0.44546162876683887, -0.15696203458936964, -1.1862950949600968, 0.37408049529043713, -0.38524482721238545, 0.7842727318028115, 1.1538879916827052, -0.9454918159942679, -1.405125889371723, 1.0636457383418108, -0.7818062318843579, 0.8829476857079316, 0.8745221489151239, 0.6929310708225009, -0.39888705398196755, 0.9994754870230482, -1.666570871939696, 0.7961227485818212, 1.22745042848715, -0.6004867918118467, -0.5361669868684229, 0.4874774972013086, -1.890981268173993, -0.3938745167085202, 0.3139908715338594, -1.1261703254618494, 1.0966132130656288, -0.31621524862176864, 0.002668556331391873, -1.9226574720130702, -1.6380306920827867, -0.9710154441004514, 0.4763931829831273, -0.8587268321219447, 0.420689070376205, 0.6054083058374654, -0.7954680985571436, -0.20058537792435566, -0.19994075887630136, -1.895096099561938, -2.091666612524903, 0.0004974458415376117, -0.4080026099220151, -0.44867368855172923, 0.5700168037125656, -0.19142620469203458, 0.7614369056740486, 1.185949052557463, 0.6170757026559303, 1.650950629705662, 1.7703882319843902, -0.49884117664872785, -0.35212526236220854, 0.42973964778170143, -0.20813077355955645, 1.3420338787636203, 0.7397153430022654, 0.8838113044537101, -1.3377145615324746, -1.855416176565475, -0.8136295403887579, -0.7714846254184806, -1.2122365561438313, 2.8536471208979433, 1.3032022234889244, 0.4760756036980966, 0.04693766693045954, -0.5984449522911452, 0.7900271874549623, -1.969917184758775, 0.3503211304018375, -0.0008137206583593385, -0.6256281405885463, -0.3510577387659576, -0.13894191854589522, 1.199426224041857, 0.12132847331734303, -1.4608604499664002, -0.22948805550230816, 0.051902944512615914, -0.019119222645881905, -0.9757273564713941, 1.8473014772988974, 0.5263294510598043, 0.07053654437136757, 0.9547242579775002, -1.1278918446449648, 0.07734968673664687, -0.5799201931033439, 0.31678992899871267, -0.7432885872434457, 1.4335843287274053, -0.9465575672564711, 0.4879570553679617, -0.6623786574250906, 1.0259687873673153, -0.02932551729568818, -0.7891190307945258, 0.29564308636903597, -0.34927374642138076, 0.8136749201194545, 0.620245645223459, -0.43951272221042564, 0.46265400794768385, -1.869391305207575, 0.48193063531644537, -0.095540604007519, -0.16987767760770991, -0.19495692375454912, -0.08834646865917613, 1.2824833220745997, -0.13585649309388986, 0.6657305691375492, 0.6391954485208522, 0.3751449189250956, -0.19786418069226533, -1.1107085792532714, 0.16954868116772995, 0.0976102127373202, -0.22307281025633455, 0.5329264170127224, -0.7498434517605724, -2.2463793716496183, -2.030956619344538, 0.3469149176826813, 0.9569335370728702, 2.0063313680095405, -0.07729526178752644, -0.4820520883676177, -0.3642766707809299, 0.2721281447061126, -1.0173409588721802, -0.22291945275506458, 1.415842532715168, 0.3487504850213432, 0.3522443413976922, 0.9077850533771569, -1.0749257488285808, -2.072058608998672, -1.189733419675099, -0.5102992245699747, -0.5266987160364432, 0.38803217663099665, 1.2098862819236005, -1.0678208861159952, -1.6484340857205138, -0.6773093361468119, 0.19847908080770726, 0.43435982710100896, -0.06608174057217904, -0.4396025725464862, -0.06842865579333862, 0.0757461775588834, 0.945043974186398, -0.8271942633183708, -1.0171091372766654, 1.0045993947511778, 0.1215505686746317, 1.4850546815331578, 2.90124785320579, 0.9193799243970369, 1.4109003071198862, 0.9342714574384375, 0.7408981122108215, -1.501451886644788, -0.8528561599738412, -1.4502786649323292, -0.060333190180409904, -0.06215199874022316, 0.6962114020423124, 0.1737374420722428, 1.9987164641082087, 1.7922666332582982, 0.39258330183185886, -0.1955663537656974, 1.185062371327038, -0.24969600604011072, 0.5062590514320574, 0.7374924629427219, -1.0887076741188921, 0.9197089124134338, 1.4198792364404926, 1.13966263395932, 0.8820726768303652, 1.1454947730219187, 0.3830272308939737, 1.0330281295592512, 0.1958899672744909, 0.2610941691615629, -1.6928895703415128, 0.08949085370524765, -1.6099870201619317, 0.6146813355739139, 1.0232681185457035, -0.6120020584064751, -1.0855633146564565, 0.9035218354603602, 1.199279110133032, 0.21247320768848982, -0.8276719054682797, 0.34353353507020123, 0.7795065425753578, -0.31690501369321267, 0.08404007020790137, -2.0217996637419504, 1.4723540101508836, -0.5690532461968705, 0.7600008532793323, -0.09696213550941978, 0.49872412917775666, -0.6501714914135994, -1.4186463922997374, 0.4572717163404996, -0.6798540159722049, 0.8800683478695012, 1.1617475981837795, -1.2832223575262358, 0.01811044220476568, 0.5665224930728516, -1.7263899334779662, 1.0788518344074862, 0.5214662704113713, 2.207851490608375, -0.8847331619490723, -0.22393893146647295, 0.2604924986511237, -1.065720378325982, -2.4784405095403583, -1.397338674255014, 0.12733886071252698, -0.962990797187108, -0.4158341820319732, 0.8295084980828852, 1.129362539634652, 1.4448964367746397, -0.27202686813738103, -1.1376577043818543, 1.1669873661563108, -0.5526532153140147, 0.17431258922451653, -0.08674760587893786, -0.02662111271639052, -0.5787298408624987, -0.46418731609632075, -0.7338887598113502, 0.0037124668666011543, -0.4390315224865612, -0.5445053993271162, -1.1731970859703744, 1.557358039479812, 0.8235296531498106, 1.3403087264740343, 1.429798559996883, 0.8488733195590197, 0.6549815456848764, 0.5939979568631141, 0.571492357564412, 1.2838646589587073, 0.1968309175885564, 0.0125526247658802, -0.588379978175527, -1.459242663662794, -0.16058887298258492, -0.30513433025622483, 1.3958505210549053, 1.112993202632025, -0.6980224325960035, -1.1242172376210566, -0.04898442309094625, 1.7267743114344978, 0.3596144012700469, -0.359544416669036, 0.20255944297423273, 0.3676083732835713, 0.8149334833372205, 0.9572709382349587, -1.4303046720322652, -1.9840617027488057, 0.8352543400425974, -1.6685708178136907, 2.264358935950376, -1.1013820170238586, 0.6513073416660541, 0.5222811637226092, 1.6332065112971001, -0.18689854597886257, -0.8293836626550278, 1.2200036287220326, -0.948302395460301, 0.6269276746157323, -1.8413847347422614, 2.975492133500898, 0.5732253342246594, -1.876866690355531, -1.4492981424636866, -0.7472606420064576, 1.4876059940278459, -0.18934308720894036, 0.13020040181367357, 0.5331924552669381, 0.9913637676227545, -2.6437681894231435, -0.6461446779487539, -0.8660236542618331, 0.47452405238110584, -0.4790606483008819, 1.5321216571398668, -0.1636651452718229, -1.0332700298347521, 0.9892360243254097, -0.6416390065504894, -0.604900108391799, 1.535151051934949, -0.18334305957155458, -0.35686131551458816, -0.3292665860742744, 1.7738534285950363, -0.33142178700758057, -0.6235361522388553, 2.8510918408680124, -0.7318379837818061, -0.6194976835634578, 0.8118142867300344, 0.43758672808479837, -0.7150266134830248, -1.9406394619639358, 0.8679359705510734, 1.4354983174276066, 2.182868585469132, -1.1741764376487758, -0.9331282790464878, -0.2820770772397286, -1.9483310573156807, 0.31916263280850626, 0.6390360973776629, 0.5428826848071413, 1.5065733412421733, -0.47412499801799024, 0.2569777134684139, -0.18464959701431985, 0.707300443390559, 0.16960249404796737, -0.4185489493255141, -1.4509136246246903, 1.2609714707832425, -0.048585931918069494, -0.7466175012069378, -0.805144923911586, -1.6081696632587419, 0.2108448776087118, -0.626995367880836, -1.25582651238933, 0.03382654045677089, -0.45889090147992845, -0.2896301303848118, 0.4922810729687261, -0.11561150744781683, -2.0656398984212156, -0.15730996466261546, 0.7768976641774541, -0.7044791153933941, 0.8524501556338853, -0.3340090119288742, 0.08640562469139157, -0.059343641632369076, 0.1619562886451128, 0.15046570393731748, 2.7590525887014667, 0.22065232253703387, -1.3774088537570648, -0.29499229105904573, -2.4537835279476146, -0.8341158090629236, -0.43274207019506117, -0.14358452337381933, -0.8677025372132973, 1.0347284219371276, 0.48707383897255696, -0.06866257813543919, 0.2937618607534383, -1.161359070554741, 0.21001598604651528, 0.4159405289601604, -1.5043005890504582, 0.7372524407400997, -0.5334658384258053, 0.2567239585606655, -0.6299751233419266, 0.024035161278926437, 1.1244580271586777, 0.40836377201711715, -1.8739717517634698, -0.26853628794603523, 0.37761170331094157, -0.0050819767759484056, 0.009684786386250501, 0.2636875321138984, -0.08553945533113934, 0.33475288490766125, 3.4237712468503103, 0.744628978129671, -0.9096458649167182, -0.6827694846192245, 1.6425500385797525, -0.3900596403135759, -0.9509348833512404, 0.3229857369820825, 0.44175525248542286, 0.7931445181078505, -0.06988463350772384, 0.6819214512912009, -0.06839741587635721, 0.4734557044072717, -0.9215746025534817, -0.6195377638236638, 0.809667872762421, -0.4103668947560523, 1.749809215983805, 1.001647179219911, -1.7659243403508436, 0.15383957509758237, -1.2779831760745572, 0.2669263499455465, -1.4256436904962992, 0.040903466313536106, -0.9342945534262868, 0.7618231087000356, -0.30058739646889815, -0.5446714593776727, -0.4802089660362259, -1.1432227238603179, 0.5174957898345334, -0.26915089392842423, 0.3387263580347474, 1.2480509452812811, 1.9521841872543286, 0.9788396157168914, 1.001353646981955, 0.40906237950521346, 1.2380051766092655, -1.1622188132692055, 0.03880070372652659, -1.3157311036080868, 0.21159132832002855, 0.8251757971684041, -0.5943198935837782, -2.059249774668197, 0.4455096569146938, -1.5530036453685645, 0.24334104727505046, 1.9679440499519993, -0.14949638764508505, -0.1787890634869671, -0.8694565617159877, -0.02701940155527667, -2.327140574554701, -0.3493894186252125, -0.02711649643869937, -0.2125855163161856, -0.8626785926902893, 0.5125620452253108, 0.835126803441082, 0.4370304631746852, -1.4380277943151216, -0.15463871080474192, 1.427347151863727, -0.03594236427723813, -0.9987807222089615, 0.15285084511988004, -0.4453218737326093, -0.8774506171339351, -1.1301294572944445, 0.27932962145356316, 0.666378400360196, 1.0765917423686246, 0.2439549047998887, -1.00859364816552, -1.757528113553421, -0.7922512836603205, 1.4533777876325222, -1.508283926364581, -0.9454297378995183, -1.010459444419853, 0.0754147254586834, -1.2810537542822706, -0.7736354580243704, -0.811961379205231, 1.3638217257964536, 1.077496971491708, 0.5810375830537511, 0.3551271969105679, -0.043876281219692365, -1.0850332393056394, 1.109609770945844, -1.0337911892064604, -1.8807813444109054, -1.2265714811977597, 0.3936172157806796, 1.0778363941578806, -0.8644861643567047, -0.9521061052105131, -0.3765845085538441, 0.17855829086113095, 3.5953876986672255, -0.8488543068716493, 0.3153960860722241, -0.4124980314658376, -0.25957042793288443, -0.47466672457489073, 1.251745108485312, 1.9089401526170708, 0.08093711755806289, -2.256777082059624, 0.324177164165908, 1.062105790670867, 0.2886235312894662, -1.2983305542602077, -1.5005961252940438, -1.4260396412546816, 0.12572172650108407, -1.371518218990482, 0.5998645930096181, 1.2473531605780193, -0.9358060344486432, 0.49295286102524044, -0.3494884497630849, -0.9308402692062906, 0.3630283557686611, 1.7611911540817928, -0.7229213248269448, -0.4323877136781272, 0.09012216684853104, 1.2693688025965613, -0.05609728003750563, 0.2942911094966865, -0.7311965810915613, -0.21592794240105817, -0.4553253041620339, -0.13454483357874214, 0.3803586083160361, 1.2706120469339364, -0.868299098407261, 1.59925697493435, 0.5433594960509881, 0.5675579810614343, 1.9203285366540146, -0.5030970822643847, 0.8421602450844566, -2.316838061301056, -0.4201799135308444, 1.99145358910135, -1.1698739038813457, -0.48526560569590693, -0.664516213841126, -2.1784216925774254, -0.05592421534349575, -0.3735237580415768, -0.22461780649945687, -0.6015415198184665, -0.525149213451578, 0.20817264425532928, 1.0421502948740846, -0.24223189745187212, -1.5453453515930158, -0.565952007041841, -0.453301777620275, -0.26956499012979956, 0.6612001818907256, 0.6566383906736746, -0.7620891486112908, 0.4039229699126195, -0.03287499950025958, -1.728025679680301, -0.1351648490652594, 2.979844425070889, 0.21407749737048995, -0.41165660712793767, -0.8911684286042895, -0.49236046031915226, 0.08810619424950021, -1.4051338603716423, -2.3224238004285707, -0.3410883214075715, -0.12686282703773566, 0.23609553256542695, 0.23545196849666264, 1.371312887239788, 0.2318653380046876, 0.08464059182127714, 0.19008151199377613, 1.7562161679995132, 1.181971977987871, -0.8172519034071913, -0.31575932783054717, 0.2503737947188051, 0.028618079946139307, -1.723439924093865, -0.7885161782185284, -0.594263411951702, 0.5644435285732619, 0.8811148239408805, 0.7833035854562042, 1.0392171119322082, 1.8371154985886862, -1.2420591801850245, -0.23753657646460405, 0.19313774990116925, 0.5053866496884525, 0.3283028032403514, -2.225396433305001, -1.096249407991655, -0.9149883628966105, 0.21230053589695053, -0.6023002440801871, 1.4512382841053386, -1.5038113250304717, 0.11558860384831522, -0.06338166413389325, 0.22201020504142566, 1.4399368526678278, -1.536144263111769, -2.717778670757182, 0.1168039138752043, -0.5866181500734327, -1.5377442224077151, -2.0944415177169953, 0.7870016058915985, 0.8949404757727989, -1.2488701028525535, 1.8425900504983932, -0.8820586551654293, 0.31200772222466067, -1.4538990075976945, -0.4972028753925732, 0.30783322485667264, 0.534974938780373, -2.0058475112711514, -0.4541796977906028, -0.5567288589208035, -0.7063829736735863, 0.08317733846151737, -0.9039919874880522, -2.359353503098415, 0.11425878193276912, 0.64706666019578, 0.4359959376210403, -0.09281069482301793, -0.5382334133878951, -0.633983343063867, 0.49835413266819356, -0.6176307398455463, -0.58828999383318, -1.7334295099492802, -0.8643497543156821, 0.689824201173873, 1.524711206099055, -1.548684848469057, 1.2284263304913572, 0.19868751298961676, 0.11836116797672853, -0.06310268278090121, 0.7479073753397237, 0.19168429076964602, -2.501823109461287, -0.673945501033193, 1.2235988334078434, -1.1636116702452202, -0.22624467871026605, 0.5071009399593757, 0.6279007880533118, 0.5692262629524086, -1.7255159569914225, 0.6397252376986503, 0.23342621054073684, 0.21399479954715414, 1.1788921695577175, -0.4946728962147127, -1.8310549540520982, -0.3690830035843751, -0.42224783195423987, 0.32423026673778105, -0.4402301947763417, 0.7465865033369634, 0.43199223950922194, -1.939062107304355, -0.10453191019598392, 0.8153426406136252, -0.7800663274052761, -0.4477465519532468, 0.01545038682624204, 0.39608506375087277, 1.1493902335657455, -2.130104535188091, 1.1476608122361165, 0.9320022617397814, 0.03568906908977818, 1.4420580869170465, -0.5372177387698984, -1.1864962493216553, -0.5500096460519907, -0.763791941134191, -1.697389937955057, 0.2998477603655102, -1.3941268553154642, 0.5706575386796322, 0.7831976119427991, 0.28018300766602294, 0.13693472548612742, 1.0154445987056024, -1.1860807036684393, -0.19007920263882952, 0.1523832525182091, -1.2093360312349437, -2.100547843467698, -0.1530333323078057, 1.1971503331114541, -0.38189865297027337, 0.7916834209392376, -0.1728944869857963, 1.160481352505748, -1.0427224611678692, -1.040602541009036, 1.8273660232377136, 1.4195569065800453, 0.8386877142814951, -1.0778628423584962, 0.3469301281229362, 0.6711365751637789, 1.1526892923346204, -0.18194736753591428, -0.19855569336096057, 1.688961038095004, -0.8745505869548725, 0.32284669288734297, -0.8259830110426495, -0.3611221208798455, -1.4195164842808716, 1.1907305012760756, 0.1522501461827938, 0.922469684257407, 0.016501336648811274, 0.7429642513221194, 0.10750421501190041, 0.4808356602618045, 0.1323677945856938, -0.7034274377386549, 0.09645911224015045, 2.532325541632594, -1.5866221126564115, -1.971084122083064, -0.13301270859207348, 0.39343143403797187, 1.3390674367668436, -0.747255398772972, -0.16290875300595686, 0.4979804345513483, 0.08795913929250766, -1.1826687439735564, 0.8708434312878163, 0.10036766629128512, -0.5580601750838238, 1.0076432223870029, 0.8554191239588586, 0.5698707282163747, -0.20863591717796462, 1.3123618498586958, 0.820266660992923, -0.05334598793633222, 0.10738590560666669, 0.7476571054869932, -1.5691946737355327, 0.8999837788505479, 0.038792413114335636, 0.9914820089613138, 0.9465564741859593, -0.9548035752110309, 0.37108183095020375, -1.6932708709240643, 0.5742732453192894, 1.1869006875492747, 0.2555908214103616, -1.3999854653788708, -0.5270366881316677, 1.8409181821652891, -1.7547244042030132, 0.07405473692919617, -0.14925008749413637, -1.8439449535735588, 0.3444816081051852, -0.2983334069128005, 1.38335867526748, -1.9630063235244388, -0.5193463961965822, -0.11562338831110575, 0.352400820758953, 1.6482773735238936, 0.6711383514595195, 0.2238366057536359, -0.7182362270286512, -0.35435416471609005, 0.6485877172023825, -0.2757466733288484, -0.3563016808385527, -0.17817414950901492, -0.0019081140052624073, -0.39273602229275606, 0.06348346009811161, -0.8742437683710312, -1.8689872110353185, -1.5147133895052636, -1.0184612409555949, 0.18139626346512772, -0.7129650139254672, -1.3195899155857833, -0.21170557963600709, 0.49610977046001814, -1.107773982297535, 0.6462111934112551, 1.688912150364615, -1.3591299269239323, -0.7475464904708393, -0.9405677474521547, -1.693588315970276, 0.20250426856488513, 0.9856658198526146, -0.44166427943855957, 0.509830562978939, -0.5991965310798085, 1.4973252224613436, -0.5546344165085834, -2.2200296733850635}; + + +static double gemm_C_dram [32*32] __attribute__((section(".data"))) = {0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967}; + + +static const double gemm_checksum[32] = {19.171406532352187, 64.83908386369714, -15.833072522846592, -9.097406689220577, 38.77022492904121, 36.661072250530495, -19.204889499817334, -26.71405328485298, 2.199782273326125, 22.879340449675865, -25.495771295498592, -22.74413590136339, 41.027971509741164, 2.3121890057321304, -19.49682405405703, 25.832519909539464, 42.9907473021782, 30.112697137204815, 26.7239787914316, 85.07758200685522, 6.60571186375147, -12.02777529819674, -23.409006725121806, 27.330350323575306, -24.78504460632868, 53.946894048375924, 92.26090941929412, 27.603604435548316, -41.68101813310628, -19.73859198296261, 37.159087216031466, 20.44420834195346}; + + diff --git a/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/data_64_64_64.h b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/data_64_64_64.h new file mode 100644 index 00000000..e451225c --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/data_64_64_64.h @@ -0,0 +1,30 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 64, + .N = 64, + .K = 64, + .TA = 0, + .TB = 0, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +static double gemm_A_dram [64*64] __attribute__((section(".data"))) = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342, 1.8448885093030065, 0.572007132100381, -0.9020532459752512, 1.423932009681719, 1.1116421563744774, -0.609918694875925, 1.0390897743423966, -0.1305603800084962, 0.7049709576256773, -0.30985592801910117, -0.6566307196626123, -0.005304890708390932, 0.47214213858952303, 1.247922968974058, -1.434297700901899, -0.5773871236273995, 1.9951334816061994, -0.9419344596787323, -1.3864755081036366, -0.15540161000210675, 0.28089640344542804, 0.6902199813822665, 0.055137779443554184, -0.1316442026885298, -0.47920924486264665, -0.37134570058665717, 1.1612473442212157, 1.862246649641681, 1.1127961330998304, -0.449879365783737, -0.4581821737978766, 2.681801981114757, 0.622613137075688, -0.5264955185026189, 1.7456452297639542, -0.0032580522874735246, -0.08412480377121889, -0.09847618283385187, 0.5573182638994464, -1.1975598741016937, -0.25042914816475237, -0.24189491229960913, 0.1717462405241003, 0.5303343737606813, 0.8246091313323292, 1.010839700197812, -0.8902436270883701, 0.5757151238996234, -0.6241388306405901, 1.0306895727537915, 0.5437796109495969, -0.37254092473885336, 0.17302563058445183, 0.16431412357817202, -0.297796251553928, 1.0415794322065468, 0.27195785052081917, 0.8941462516437774, 1.8901581231152924, 0.16318485053532772, -0.42772830220525987, 2.22854455207779, 2.85934273014681, 0.620608819397525, -2.0773600718526932, 0.5102128857829208, -1.3425473236398795, 1.0664992078500592, -1.3978347586933288, -0.5082793586733352, 1.0293339145628106, 1.1953652639556394, -0.7592324149843712, -0.9927853948011712, -0.8401102070638347, 0.3955192048365272, 0.34215369871376844, -2.8791873832700547, -0.0421115170793464, 0.2803818171599705, -0.9401015854505796, -0.08972003336849564, -0.640338334227558, 2.0182530686564895, -0.7235603815620858, 0.6081345501547663, 1.7752306448722606, 0.031457706909880166, 0.899919260122491, -0.5364177308537464, 0.9954498087197619, 0.21059455079709405, 0.8203366802620794, 0.15551004552008937, -0.5905994619497847, 1.4571504499595769, -0.05879218788301025, 0.6116700031464317, -1.3093298447872528, -1.9790524548585495, 2.327922240143418, 0.5346029134452727, -0.2220392426765117, 1.0350931612437495, 0.579583179532083, -0.09395716249601935, -0.5606885258433681, -0.6916360198922066, -0.25495705935359947, -0.23051091319332653, 0.5226206406896088, -0.6035154511863011, 0.5592128760780101, -0.3223643795390148, 0.5138781656523993, -0.7592214987689807, 2.417337785331285, 0.17028885180838357, -0.18586838199027028, 0.40185795512569217, -0.5670525260070235, 0.14141128561714333, 0.536910685665978, -0.04468791360092496, -0.13107111869784893, 0.8500574802035589, -1.2986776963277358, 1.3299424270339977, -0.14883240827467462, 2.0486968982261202, -0.9909136952855094, -0.3600241005246587, 0.1602748303156346, 0.07168780603661637, 0.30202523579276225, -0.582835004754739, 1.0356927036283528, -1.0360800724687276, 1.993616236752697, -1.2365797403960304, 1.8548042098231963, 0.20499605949096963, 1.2010757276760113, 2.057751677950784, 0.2883899362101988, 1.6134203350119927, -0.9640624060585024, -1.1213275218434526, 0.6531743202785056, 0.2277981765470329, -0.8359861748374583, 0.5680057504067159, 0.28253652479051733, 1.1165497781562674, -0.5714364972858512, -0.09854463425203973, 2.395067138296113, 0.3316175009075528, -0.6884736402196919, -2.0231033737037047, -1.6070787249452574, -0.7165117692039605, -0.7553512437574256, 1.9280259690970352, -0.26733976223106926, -0.0673955495394241, -0.536406291194771, -0.7093789385459298, 1.744020696757244, -0.8126325347024919, -1.5969922983164335, -1.2686890383326754, -0.9291972010711246, 0.9031672530350638, 2.269233244076525, 0.40988533123157295, -1.7212576593177709, 0.7166427020983424, 0.3627363765292881, -1.5589258141736047, 1.3206137582172544, 0.22241582722694822, -0.5254557201726808, 0.4487811587655208, 1.4717430631656925, 0.6002964569533693, -0.7795697135851043, 0.610220453599741, 0.9796702201792316, -1.7646934144734967, -0.8420374077504474, 0.5166078996711738, -1.2752325216668503, -0.44546162876683887, -0.15696203458936964, -1.1862950949600968, 0.37408049529043713, -0.38524482721238545, 0.7842727318028115, 1.1538879916827052, -0.9454918159942679, -1.405125889371723, 1.0636457383418108, -0.7818062318843579, 0.8829476857079316, 0.8745221489151239, 0.6929310708225009, -0.39888705398196755, 0.9994754870230482, -1.666570871939696, 0.7961227485818212, 1.22745042848715, -0.6004867918118467, -0.5361669868684229, 0.4874774972013086, -1.890981268173993, -0.3938745167085202, 0.3139908715338594, -1.1261703254618494, 1.0966132130656288, -0.31621524862176864, 0.002668556331391873, -1.9226574720130702, -1.6380306920827867, -0.9710154441004514, 0.4763931829831273, -0.8587268321219447, 0.420689070376205, 0.6054083058374654, -0.7954680985571436, -0.20058537792435566, -0.19994075887630136, -1.895096099561938, -2.091666612524903, 0.0004974458415376117, -0.4080026099220151, -0.44867368855172923, 0.5700168037125656, -0.19142620469203458, 0.7614369056740486, 1.185949052557463, 0.6170757026559303, 1.650950629705662, 1.7703882319843902, -0.49884117664872785, -0.35212526236220854, 0.42973964778170143, -0.20813077355955645, 1.3420338787636203, 0.7397153430022654, 0.8838113044537101, -1.3377145615324746, -1.855416176565475, -0.8136295403887579, -0.7714846254184806, -1.2122365561438313, 2.8536471208979433, 1.3032022234889244, 0.4760756036980966, 0.04693766693045954, -0.5984449522911452, 0.7900271874549623, -1.969917184758775, 0.3503211304018375, -0.0008137206583593385, -0.6256281405885463, -0.3510577387659576, -0.13894191854589522, 1.199426224041857, 0.12132847331734303, -1.4608604499664002, -0.22948805550230816, 0.051902944512615914, -0.019119222645881905, -0.9757273564713941, 1.8473014772988974, 0.5263294510598043, 0.07053654437136757, 0.9547242579775002, -1.1278918446449648, 0.07734968673664687, -0.5799201931033439, 0.31678992899871267, -0.7432885872434457, 1.4335843287274053, -0.9465575672564711, 0.4879570553679617, -0.6623786574250906, 1.0259687873673153, -0.02932551729568818, -0.7891190307945258, 0.29564308636903597, -0.34927374642138076, 0.8136749201194545, 0.620245645223459, -0.43951272221042564, 0.46265400794768385, -1.869391305207575, 0.48193063531644537, -0.095540604007519, -0.16987767760770991, -0.19495692375454912, -0.08834646865917613, 1.2824833220745997, -0.13585649309388986, 0.6657305691375492, 0.6391954485208522, 0.3751449189250956, -0.19786418069226533, -1.1107085792532714, 0.16954868116772995, 0.0976102127373202, -0.22307281025633455, 0.5329264170127224, -0.7498434517605724, -2.2463793716496183, -2.030956619344538, 0.3469149176826813, 0.9569335370728702, 2.0063313680095405, -0.07729526178752644, -0.4820520883676177, -0.3642766707809299, 0.2721281447061126, -1.0173409588721802, -0.22291945275506458, 1.415842532715168, 0.3487504850213432, 0.3522443413976922, 0.9077850533771569, -1.0749257488285808, -2.072058608998672, -1.189733419675099, -0.5102992245699747, -0.5266987160364432, 0.38803217663099665, 1.2098862819236005, -1.0678208861159952, -1.6484340857205138, -0.6773093361468119, 0.19847908080770726, 0.43435982710100896, -0.06608174057217904, -0.4396025725464862, -0.06842865579333862, 0.0757461775588834, 0.945043974186398, -0.8271942633183708, -1.0171091372766654, 1.0045993947511778, 0.1215505686746317, 1.4850546815331578, 2.90124785320579, 0.9193799243970369, 1.4109003071198862, 0.9342714574384375, 0.7408981122108215, -1.501451886644788, -0.8528561599738412, -1.4502786649323292, -0.060333190180409904, -0.06215199874022316, 0.6962114020423124, 0.1737374420722428, 1.9987164641082087, 1.7922666332582982, 0.39258330183185886, -0.1955663537656974, 1.185062371327038, -0.24969600604011072, 0.5062590514320574, 0.7374924629427219, -1.0887076741188921, 0.9197089124134338, 1.4198792364404926, 1.13966263395932, 0.8820726768303652, 1.1454947730219187, 0.3830272308939737, 1.0330281295592512, 0.1958899672744909, 0.2610941691615629, -1.6928895703415128, 0.08949085370524765, -1.6099870201619317, 0.6146813355739139, 1.0232681185457035, -0.6120020584064751, -1.0855633146564565, 0.9035218354603602, 1.199279110133032, 0.21247320768848982, -0.8276719054682797, 0.34353353507020123, 0.7795065425753578, -0.31690501369321267, 0.08404007020790137, -2.0217996637419504, 1.4723540101508836, -0.5690532461968705, 0.7600008532793323, -0.09696213550941978, 0.49872412917775666, -0.6501714914135994, -1.4186463922997374, 0.4572717163404996, -0.6798540159722049, 0.8800683478695012, 1.1617475981837795, -1.2832223575262358, 0.01811044220476568, 0.5665224930728516, -1.7263899334779662, 1.0788518344074862, 0.5214662704113713, 2.207851490608375, -0.8847331619490723, -0.22393893146647295, 0.2604924986511237, -1.065720378325982, -2.4784405095403583, -1.397338674255014, 0.12733886071252698, -0.962990797187108, -0.4158341820319732, 0.8295084980828852, 1.129362539634652, 1.4448964367746397, -0.27202686813738103, -1.1376577043818543, 1.1669873661563108, -0.5526532153140147, 0.17431258922451653, -0.08674760587893786, -0.02662111271639052, -0.5787298408624987, -0.46418731609632075, -0.7338887598113502, 0.0037124668666011543, -0.4390315224865612, -0.5445053993271162, -1.1731970859703744, 1.557358039479812, 0.8235296531498106, 1.3403087264740343, 1.429798559996883, 0.8488733195590197, 0.6549815456848764, 0.5939979568631141, 0.571492357564412, 1.2838646589587073, 0.1968309175885564, 0.0125526247658802, -0.588379978175527, -1.459242663662794, -0.16058887298258492, -0.30513433025622483, 1.3958505210549053, 1.112993202632025, -0.6980224325960035, -1.1242172376210566, -0.04898442309094625, 1.7267743114344978, 0.3596144012700469, -0.359544416669036, 0.20255944297423273, 0.3676083732835713, 0.8149334833372205, 0.9572709382349587, -1.4303046720322652, -1.9840617027488057, 0.8352543400425974, -1.6685708178136907, 2.264358935950376, -1.1013820170238586, 0.6513073416660541, 0.5222811637226092, 1.6332065112971001, -0.18689854597886257, -0.8293836626550278, 1.2200036287220326, -0.948302395460301, 0.6269276746157323, -1.8413847347422614, 2.975492133500898, 0.5732253342246594, -1.876866690355531, -1.4492981424636866, -0.7472606420064576, 1.4876059940278459, -0.18934308720894036, 0.13020040181367357, 0.5331924552669381, 0.9913637676227545, -2.6437681894231435, -0.6461446779487539, -0.8660236542618331, 0.47452405238110584, -0.4790606483008819, 1.5321216571398668, -0.1636651452718229, -1.0332700298347521, 0.9892360243254097, -0.6416390065504894, -0.604900108391799, 1.535151051934949, -0.18334305957155458, -0.35686131551458816, -0.3292665860742744, 1.7738534285950363, -0.33142178700758057, -0.6235361522388553, 2.8510918408680124, -0.7318379837818061, -0.6194976835634578, 0.8118142867300344, 0.43758672808479837, -0.7150266134830248, -1.9406394619639358, 0.8679359705510734, 1.4354983174276066, 2.182868585469132, -1.1741764376487758, -0.9331282790464878, -0.2820770772397286, -1.9483310573156807, 0.31916263280850626, 0.6390360973776629, 0.5428826848071413, 1.5065733412421733, -0.47412499801799024, 0.2569777134684139, -0.18464959701431985, 0.707300443390559, 0.16960249404796737, -0.4185489493255141, -1.4509136246246903, 1.2609714707832425, -0.048585931918069494, -0.7466175012069378, -0.805144923911586, -1.6081696632587419, 0.2108448776087118, -0.626995367880836, -1.25582651238933, 0.03382654045677089, -0.45889090147992845, -0.2896301303848118, 0.4922810729687261, -0.11561150744781683, -2.0656398984212156, -0.15730996466261546, 0.7768976641774541, -0.7044791153933941, 0.8524501556338853, -0.3340090119288742, 0.08640562469139157, -0.059343641632369076, 0.1619562886451128, 0.15046570393731748, 2.7590525887014667, 0.22065232253703387, -1.3774088537570648, -0.29499229105904573, -2.4537835279476146, -0.8341158090629236, -0.43274207019506117, -0.14358452337381933, -0.8677025372132973, 1.0347284219371276, 0.48707383897255696, -0.06866257813543919, 0.2937618607534383, -1.161359070554741, 0.21001598604651528, 0.4159405289601604, -1.5043005890504582, 0.7372524407400997, -0.5334658384258053, 0.2567239585606655, -0.6299751233419266, 0.024035161278926437, 1.1244580271586777, 0.40836377201711715, -1.8739717517634698, -0.26853628794603523, 0.37761170331094157, -0.0050819767759484056, 0.009684786386250501, 0.2636875321138984, -0.08553945533113934, 0.33475288490766125, 3.4237712468503103, 0.744628978129671, -0.9096458649167182, -0.6827694846192245, 1.6425500385797525, -0.3900596403135759, -0.9509348833512404, 0.3229857369820825, 0.44175525248542286, 0.7931445181078505, -0.06988463350772384, 0.6819214512912009, -0.06839741587635721, 0.4734557044072717, -0.9215746025534817, -0.6195377638236638, 0.809667872762421, -0.4103668947560523, 1.749809215983805, 1.001647179219911, -1.7659243403508436, 0.15383957509758237, -1.2779831760745572, 0.2669263499455465, -1.4256436904962992, 0.040903466313536106, -0.9342945534262868, 0.7618231087000356, -0.30058739646889815, -0.5446714593776727, -0.4802089660362259, -1.1432227238603179, 0.5174957898345334, -0.26915089392842423, 0.3387263580347474, 1.2480509452812811, 1.9521841872543286, 0.9788396157168914, 1.001353646981955, 0.40906237950521346, 1.2380051766092655, -1.1622188132692055, 0.03880070372652659, -1.3157311036080868, 0.21159132832002855, 0.8251757971684041, -0.5943198935837782, -2.059249774668197, 0.4455096569146938, -1.5530036453685645, 0.24334104727505046, 1.9679440499519993, -0.14949638764508505, -0.1787890634869671, -0.8694565617159877, -0.02701940155527667, -2.327140574554701, -0.3493894186252125, -0.02711649643869937, -0.2125855163161856, -0.8626785926902893, 0.5125620452253108, 0.835126803441082, 0.4370304631746852, -1.4380277943151216, -0.15463871080474192, 1.427347151863727, -0.03594236427723813, -0.9987807222089615, 0.15285084511988004, -0.4453218737326093, -0.8774506171339351, -1.1301294572944445, 0.27932962145356316, 0.666378400360196, 1.0765917423686246, 0.2439549047998887, -1.00859364816552, -1.757528113553421, -0.7922512836603205, 1.4533777876325222, -1.508283926364581, -0.9454297378995183, -1.010459444419853, 0.0754147254586834, -1.2810537542822706, -0.7736354580243704, -0.811961379205231, 1.3638217257964536, 1.077496971491708, 0.5810375830537511, 0.3551271969105679, -0.043876281219692365, -1.0850332393056394, 1.109609770945844, -1.0337911892064604, -1.8807813444109054, -1.2265714811977597, 0.3936172157806796, 1.0778363941578806, -0.8644861643567047, -0.9521061052105131, -0.3765845085538441, 0.17855829086113095, 3.5953876986672255, -0.8488543068716493, 0.3153960860722241, -0.4124980314658376, -0.25957042793288443, -0.47466672457489073, 1.251745108485312, 1.9089401526170708, 0.08093711755806289, -2.256777082059624, 0.324177164165908, 1.062105790670867, 0.2886235312894662, -1.2983305542602077, -1.5005961252940438, -1.4260396412546816, 0.12572172650108407, -1.371518218990482, 0.5998645930096181, 1.2473531605780193, -0.9358060344486432, 0.49295286102524044, -0.3494884497630849, -0.9308402692062906, 0.3630283557686611, 1.7611911540817928, -0.7229213248269448, -0.4323877136781272, 0.09012216684853104, 1.2693688025965613, -0.05609728003750563, 0.2942911094966865, -0.7311965810915613, -0.21592794240105817, -0.4553253041620339, -0.13454483357874214, 0.3803586083160361, 1.2706120469339364, -0.868299098407261, 1.59925697493435, 0.5433594960509881, 0.5675579810614343, 1.9203285366540146, -0.5030970822643847, 0.8421602450844566, -2.316838061301056, -0.4201799135308444, 1.99145358910135, -1.1698739038813457, -0.48526560569590693, -0.664516213841126, -2.1784216925774254, -0.05592421534349575, -0.3735237580415768, -0.22461780649945687, -0.6015415198184665, -0.525149213451578, 0.20817264425532928, 1.0421502948740846, -0.24223189745187212, -1.5453453515930158, -0.565952007041841, -0.453301777620275, -0.26956499012979956, 0.6612001818907256, 0.6566383906736746, -0.7620891486112908, 0.4039229699126195, -0.03287499950025958, -1.728025679680301, -0.1351648490652594, 2.979844425070889, 0.21407749737048995, -0.41165660712793767, -0.8911684286042895, -0.49236046031915226, 0.08810619424950021, -1.4051338603716423, -2.3224238004285707, -0.3410883214075715, -0.12686282703773566, 0.23609553256542695, 0.23545196849666264, 1.371312887239788, 0.2318653380046876, 0.08464059182127714, 0.19008151199377613, 1.7562161679995132, 1.181971977987871, -0.8172519034071913, -0.31575932783054717, 0.2503737947188051, 0.028618079946139307, -1.723439924093865, -0.7885161782185284, -0.594263411951702, 0.5644435285732619, 0.8811148239408805, 0.7833035854562042, 1.0392171119322082, 1.8371154985886862, -1.2420591801850245, -0.23753657646460405, 0.19313774990116925, 0.5053866496884525, 0.3283028032403514, -2.225396433305001, -1.096249407991655, -0.9149883628966105, 0.21230053589695053, -0.6023002440801871, 1.4512382841053386, -1.5038113250304717, 0.11558860384831522, -0.06338166413389325, 0.22201020504142566, 1.4399368526678278, -1.536144263111769, -2.717778670757182, 0.1168039138752043, -0.5866181500734327, -1.5377442224077151, -2.0944415177169953, 0.7870016058915985, 0.8949404757727989, -1.2488701028525535, 1.8425900504983932, -0.8820586551654293, 0.31200772222466067, -1.4538990075976945, -0.4972028753925732, 0.30783322485667264, 0.534974938780373, -2.0058475112711514, -0.4541796977906028, -0.5567288589208035, -0.7063829736735863, 0.08317733846151737, -0.9039919874880522, -2.359353503098415, 0.11425878193276912, 0.64706666019578, 0.4359959376210403, -0.09281069482301793, -0.5382334133878951, -0.633983343063867, 0.49835413266819356, -0.6176307398455463, -0.58828999383318, -1.7334295099492802, -0.8643497543156821, 0.689824201173873, 1.524711206099055, -1.548684848469057, 1.2284263304913572, 0.19868751298961676, 0.11836116797672853, -0.06310268278090121, 0.7479073753397237, 0.19168429076964602, -2.501823109461287, -0.673945501033193, 1.2235988334078434, -1.1636116702452202, -0.22624467871026605, 0.5071009399593757, 0.6279007880533118, 0.5692262629524086, -1.7255159569914225, 0.6397252376986503, 0.23342621054073684, 0.21399479954715414, 1.1788921695577175, -0.4946728962147127, -1.8310549540520982, -0.3690830035843751, -0.42224783195423987, 0.32423026673778105, -0.4402301947763417, 0.7465865033369634, 0.43199223950922194, -1.939062107304355, -0.10453191019598392, 0.8153426406136252, -0.7800663274052761, -0.4477465519532468, 0.01545038682624204, 0.39608506375087277, 1.1493902335657455, -2.130104535188091, 1.1476608122361165, 0.9320022617397814, 0.03568906908977818, 1.4420580869170465, -0.5372177387698984, -1.1864962493216553, -0.5500096460519907, -0.763791941134191, -1.697389937955057, 0.2998477603655102, -1.3941268553154642, 0.5706575386796322, 0.7831976119427991, 0.28018300766602294, 0.13693472548612742, 1.0154445987056024, -1.1860807036684393, -0.19007920263882952, 0.1523832525182091, -1.2093360312349437, -2.100547843467698, -0.1530333323078057, 1.1971503331114541, -0.38189865297027337, 0.7916834209392376, -0.1728944869857963, 1.160481352505748, -1.0427224611678692, -1.040602541009036, 1.8273660232377136, 1.4195569065800453, 0.8386877142814951, -1.0778628423584962, 0.3469301281229362, 0.6711365751637789, 1.1526892923346204, -0.18194736753591428, -0.19855569336096057, 1.688961038095004, -0.8745505869548725, 0.32284669288734297, -0.8259830110426495, -0.3611221208798455, -1.4195164842808716, 1.1907305012760756, 0.1522501461827938, 0.922469684257407, 0.016501336648811274, 0.7429642513221194, 0.10750421501190041, 0.4808356602618045, 0.1323677945856938, -0.7034274377386549, 0.09645911224015045, 2.532325541632594, -1.5866221126564115, -1.971084122083064, -0.13301270859207348, 0.39343143403797187, 1.3390674367668436, -0.747255398772972, -0.16290875300595686, 0.4979804345513483, 0.08795913929250766, -1.1826687439735564, 0.8708434312878163, 0.10036766629128512, -0.5580601750838238, 1.0076432223870029, 0.8554191239588586, 0.5698707282163747, -0.20863591717796462, 1.3123618498586958, 0.820266660992923, -0.05334598793633222, 0.10738590560666669, 0.7476571054869932, -1.5691946737355327, 0.8999837788505479, 0.038792413114335636, 0.9914820089613138, 0.9465564741859593, -0.9548035752110309, 0.37108183095020375, -1.6932708709240643, 0.5742732453192894, 1.1869006875492747, 0.2555908214103616, -1.3999854653788708, -0.5270366881316677, 1.8409181821652891, -1.7547244042030132, 0.07405473692919617, -0.14925008749413637, -1.8439449535735588, 0.3444816081051852, -0.2983334069128005, 1.38335867526748, -1.9630063235244388, -0.5193463961965822, -0.11562338831110575, 0.352400820758953, 1.6482773735238936, 0.6711383514595195, 0.2238366057536359, -0.7182362270286512, -0.35435416471609005, 0.6485877172023825, -0.2757466733288484, -0.3563016808385527, -0.17817414950901492, -0.0019081140052624073, -0.39273602229275606, 0.06348346009811161, -0.8742437683710312, -1.8689872110353185, -1.5147133895052636, -1.0184612409555949, 0.18139626346512772, -0.7129650139254672, -1.3195899155857833, -0.21170557963600709, 0.49610977046001814, -1.107773982297535, 0.6462111934112551, 1.688912150364615, -1.3591299269239323, -0.7475464904708393, -0.9405677474521547, -1.693588315970276, 0.20250426856488513, 0.9856658198526146, -0.44166427943855957, 0.509830562978939, -0.5991965310798085, 1.4973252224613436, -0.5546344165085834, -2.2200296733850635, 0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967, -1.6848834226351845, -0.468054031300935, 0.2231411040063078, -1.2079120248207287, 2.0110030501455016, 1.4453850086239999, 0.34059707215507334, -1.8213959334958643, 0.8699402772722297, 0.4899667100861624, -0.01173787871675348, 1.1948559206670855, -0.8870269587625144, -1.555705163842219, -0.26533917383348415, -0.3325290424739039, 1.5977665804314234, -0.41203089860517084, 0.49183361850554513, 0.5136570154037132, -0.23309124875198506, -0.7998287164209388, 0.530066185314952, 0.47106304564421286, -1.0105968114955957, -0.8353508972894879, 0.12377709284481839, -0.07289187751377658, -0.6735741109340289, -2.0639344018430106, -0.014438189818046943, -0.4713457882035365, -1.3988791318705927, 0.7076705525000143, 1.0974072497097722, 1.1672671573256546, 0.5553099499949979, 0.12122031680888311, -1.3280507129101098, 1.1654608124772015, 1.3139075127865134, 1.28261825548601, 0.8583778828163117, 0.4508675701062839, -0.3773168693728364, 0.16884703765184494, -2.5899418769593017, 0.8980383022257733, -0.7871723126611332, 0.008146263601196916, 0.15100042746757067, -2.158690321719755, 0.5154773443584927, -0.8968793509306945, 0.12745529032276473, 0.3057102963260676, -1.127194036956006, 0.06889018035163645, -0.29649779158358486, 0.4000800574133786, 1.3294197922581654, -0.9809012577471112, 0.2604706024238921, 0.5802535538390949, -0.7974783258128166, -0.6640912726671294, -1.119222930304624, 0.5834025731102502, -0.25723586541301474, -1.618253196199123, -0.0570695619599075, -0.43841397343582966, -0.6767231131676439, -0.38371376805174173, -1.9996328333376983, -0.33850140623335534, -0.1183524981649774, 0.005796690030477999, -2.458306016054147, -1.099750705180441, 1.054860270281014, 1.1651235359219074, -0.8686068833819991, -1.4001372299430193, 1.1272944804074991, 0.03719751404379593, -0.06732456664178753, 1.0123217113273348, 1.396494377415687, -1.114892120467897, -0.23680354926169062, 1.1762829232717322, 0.35544788004728406, -0.41986744728203046, -0.3867023929082546, -1.483298749076887, -0.566334552372417, -0.03321061530877886, -0.8527679221181403, 1.4516682272189547, 0.7320822341298279, -0.05200885253027685, -0.9525949548843667, 0.5751795467491231, 1.178459960930901, -0.10762850518883417, 1.5651830651133336, 2.1380607452390663, 1.2280945171647695, 1.4042702000856067, 0.09325784801982663, -0.3557970327475224, -1.073778288097418, 0.8968276612463406, 1.399133831515596, -1.2439663723417378, -1.781799686206601, -0.33427106612358554, 0.889230360742913, -0.41170088971799085, 1.2155279834457413, 1.600649868770159, -1.6424774434123148, -0.30897369601229935, 1.047363878453214, -1.0791866371859211, 0.34680511458320423, 0.9927888544576774, -0.8514984695838704, -0.8372280244524042, -0.22804642016295132, -1.3868435427851724, 0.7441016059552877, 0.06972829881636747, 0.3420780025264497, -0.04386730461990216, -0.017778941397242242, 0.6102135468147727, 0.1101978218029996, -1.401046648194382, 0.6208120606616816, 0.26306079867835747, 1.6277476977056633, -1.4148077742490233, -1.12911289812443, -0.4018145604094114, -1.3755867441903893, -2.399920233063965, -0.020319571626188252, -0.895842610909627, -0.3494298955785707, -0.2738387174328631, 0.34922230639219626, 0.07109890321458032, -2.4101191646725644, -0.7411692543552041, -1.3233841458208606, 0.6863453426487733, 0.3632155343313335, -0.5590033258828403, -1.1449685446383917, -0.7258003922221851, 0.278797530701865, -0.3441402294664407, 1.441339424212574, -1.2335052347473323, 0.07612868920434228, -0.4241597163106437, -0.05332877983539378, 0.10099084201256278, -1.8787758687909357, 1.4045284087841965, -0.04347827565492549, -1.2990797348095602, 0.6319627183761264, -1.0748380347638893, -1.280830568026441, -0.4632576940943757, -1.2762157345443148, -0.4871099169463196, -0.8573516675952042, 0.2602500067557723, -0.663512812580364, 0.9193611678505703, 1.4195120671985408, 0.31768737978504635, -0.22676062071355782, 0.7472485772463154, 0.33979457913367445, -0.024989366536706515, -1.1780091950874647, 0.8422172106604986, -0.9853850143769382, 1.0084091587937258, -0.5446586568124329, 0.2287236140419025, 0.12649973956792954, -0.8624432460024017, -0.2042801144909528, 0.8201641258212513, -0.8429169760408267, 0.15786776211979775, 0.586990037118922, 0.7581270686613231, 0.13813966047716805, 0.14287983497159015, 1.542247836275435, 0.6889352238499454, 0.3790751131802156, -0.36007691647378387, 1.5453032787583676, 0.4475231964904419, -0.06905081640069816, -0.2556692520813782, -0.6423795723912976, -0.6500078649365075, -0.6577072095504994, -1.4866829628942408, 2.5030140049559653, -1.0572143847418314, -0.000571660449572993, -0.042894005602608545, -0.4591852328122149, 1.2843268761512387, 0.3968454779394536, 1.138745996685296, 2.4071733886455227, -0.10540633867195442, 1.2714215049136428, 0.04757946360595818, 1.2348108652417815, 1.6311115642560317, -1.6302649244099794, -1.2745470694966483, -0.8131839077565575, -0.6825393122927416, -1.0794370197645617, -0.7204636565534043, 2.1467941519636455, -0.18535362890328835, 0.6625127934408671, 0.38979365484662193, 0.7719784843101606, -0.4958538436662962, -0.658575404725063, -1.8250261743740281, -1.3009369789521832, 1.1569797741579901, 1.0803875458840382, 0.3519814471093802, -1.5678550885987372, 0.17700126122173684, 0.19570581803986603, -0.9713133420910822, -0.40681730492260765, -1.079374837348168, 0.9333820675088979, 0.7164115790249227, 1.5974993677559646, -0.27698287787067033, 2.0383895476075855, -0.6836849892211939, 0.8311193676081333, -2.4241121219014663, 0.31596002357495434, -0.999473279382509, -0.262687475352513, -0.46071381621370666, -0.8976883600787323, 0.5219272929937467, 0.9722622620644177, 0.552832436548929, -0.027467290841698567, -0.6107378749038481, 1.3506129449321138, -0.4521398968561788, -0.22117060492964993, 1.3204666166460701, 0.42542027990331455, -0.19467559818902735, 1.3362817877824478, 0.1643979281153062, -1.613150980719597, -0.5326178763831365, -1.5741387694417994, -0.2358632094400509, 0.35096623923842685, -0.40087086833885227, 1.547569381699142, -1.7090186764224344, 2.2199280575728784, 0.7516533958698258, 0.6804837145322774, -0.19556806995297935, 1.3537057525493934, -2.0138393066087383, 0.172351936169543, -1.7024086384702934, -1.0519290071418026, 1.6258351842437149, -0.11856858846558817, -0.8121335733777978, -0.02927583999406098, 1.548105034805526, 0.6981009969478109, -0.990277098683295, -0.15604117684813257, -0.9747927516511783, 0.4652704424950469, -0.31289780730884004, -1.651056798736739, 1.2755967903796157, -0.13648504411430237, -0.48481306969894616, 0.023313382404551213, 0.48504298344685315, -0.8507882704201493, -1.039212404883905, -0.653701398776706, -0.5189768622716721, -0.12449303534256825, -0.5128172446702866, -0.06818346256734656, 0.510667943805758, -0.20971767447744363, 0.7975878663589364, 0.3042695491801, 0.2654566914993375, -2.0012906991903865, 0.413870629899118, -0.6025010011948203, -0.14082858261327996, 1.075340195058932, 0.2593371488480129, 2.62922759693777, 0.3324210527578405, -1.2020419530087723, 1.1926421271709948, 0.2347858166167028, -0.9756048534996443, -1.8200265368846862, -0.5169307203823522, 0.1500518697766681, -0.038484274917838325, -0.5595155602432803, 0.7826664898369591, 0.4484219149387221, 0.29541985156163897, 1.3984689244673294, 0.25998037440140653, 0.42332643185294355, -1.2422400480672728, 0.2176902105319219, 0.728761958261402, -0.011206770084421624, 0.42373795905496436, -0.0772966783872132, -0.1844058501562145, 1.5231610698492861, 1.5815719719777372, -1.0224998294567542, -1.608411795245145, -1.8940383890496493, 0.5392647246180361, -0.9404210876785811, 0.24515734401955552, -0.8758837658412391, -1.528076170772824, 0.16773671218212843, -0.06372312245930913, -0.6625850298997638, 0.31931330490352056, -0.7703083579211024, 0.369010898692774, -0.9262558726002627, -0.021452503506505422, -0.6884402260487072, 1.5154027937733978, 0.8284697701567305, -0.07697958106921719, -0.4538814926580921, 0.5439309292438045, -0.5492443043774654, -1.220225030532012, -0.7053512461796413, 1.632643282613422, 0.5778426489678986, -0.9229177377752995, 1.588544297460673, -1.7481169305157809, 0.2618776316461439, -0.7711250331583439, 1.4721431859882452, 1.6321252809774605, 1.521708343024266, -0.46073261039758234, -0.7747734720993155, -1.3354599996427268, 0.9861401026653767, -0.575980258880269, 0.0853876730028182, -0.6195540436182536, -0.5432771078257063, 0.3060459872354665, -1.824118723913547, 0.8784176817828129, 0.8097094976615903, -0.361780627962229, -1.467071190440473, -1.8907115007272879, 1.1242546008439889, -0.4974181028535098, 1.829441455586246, 1.017979249905673, -0.7075497604105697, 0.059183606525579274, -0.13056990600722507, -0.5832122715205462, -0.01409309201012074, 0.016108610412205803, 0.1900118760884006, 0.24188780949423172, -0.8882450727066196, -1.3576659214518099, 0.07447367725510536, -2.991099769542917, -0.6488322635921112, 1.8595982643945574, -0.702641433986396, -0.6416959601570708, 1.3390388750212445, 0.057488906459266735, -1.808725561176733, 0.2948187135806436, 1.1497414866629478, 0.8709941695277267, -0.2850339815191343, -0.4997261831464098, -1.4398917507631508, -0.2148727154738073, -0.031164729254402425, 0.48150661412660234, 0.12415703923674576, -0.26613703422724105, 1.0565002395567262, -1.6752860867796824, 0.1869147939846373, -0.7272110183291539, 1.6245102578872348, -1.3773924349992401, 0.14296540214244555, 1.4878267201868336, 0.10331510654880505, 0.9062060348158155, 0.9324085143967664, -0.21818888199568304, -0.2522508930003547, -0.8562525871887124, 0.10204130138311729, -1.0184106320915587, 0.1825164284873822, 1.056310703030919, 1.7552903725196911, -0.12454007621445604, 0.31880532192621097, -0.35541825354040035, -0.8580393155101081, -0.2682711254651047, -0.30783295275138195, 1.3170139199898268, 0.7531186614185573, 1.192570085627795, -0.6615475858876328, 1.4991876630051717, 0.30861856418442385, 0.46151436623585584, 0.3960375120229514, -1.5852068567014443, 1.9903541747766398, -1.1185087223822021, -0.5183442785156127, 0.06782511507671637, -0.13813126796841926, -0.8649990189511263, 0.6978353775870149, 0.16085392211498364, 0.7383270750320552, -0.6856342770612354, -0.6045226539767258, 0.8110514204550441, -0.36508901079756473, 2.2802828142762928, -0.7663535452926638, -0.3887166303815122, 0.9034427218611359, 0.21868488058095606, -0.30457226174639157, -0.287175489125426, 1.3568449350217864, 0.39711905418048105, -1.1763187968954603, -0.33474769656895564, 0.917254226523988, 1.0804852401399638, -0.9584787505991971, 1.7478622379080422, -1.2473029790869914, -1.982585782186715, -0.41852445481952294, -0.9465815043529053, 1.3486167490991765, -1.3147522922373933, -0.14921512592164993, -0.6510935828594568, 0.009685462499594857, -1.0764421921168665, -0.12975724308626338, 0.4720265080850217, 0.3117809833804109, 0.8469168005900016, -0.520242573974674, 0.27675686046474957, -1.7178145403893597, 0.439729002709256, -0.30048055544717606, -0.6302171098523444, 1.241050608643494, 0.5721350887681553, -0.0022023636536079735, -0.4924114110139152, 0.9950463422748212, 0.9816810712679719, 1.9924377989279343, 0.03900009491657034, -0.2935571188258591, 0.1266892245615102, -0.715464769225636, 0.3145853867440553, -0.3835873169761903, -1.0953446648325833, 1.0121232148460444, -1.0957236224096085, 0.17063463111383734, 0.5102992173497909, -0.3658969046671184, 1.23797611806204, -0.18059200075977175, 0.9936325102325779, 0.18430235850671245, 0.16517189020344797, -2.016269812957052, -0.3616199185761283, 0.7527532999342817, 1.3277176349050535, 0.2920534284459897, 1.0606099435377094, 1.848598832091733, -1.3301443272735525, -0.5759958625549068, 0.27878675140631204, -0.2315083920631258, -0.8288316208067809, -0.2635580627160318, 1.3355871376746895, -0.8117302674348011, -0.23432703924765444, 1.92799930513707, -0.23101856846075614, -1.4238524703136513, 0.1368000358051577, -0.2055684135567207, -0.15855445409422964, -1.2600442043395892, 0.1701769006730323, -1.068866010850334, -0.1904292641612836, 0.5892434527813512, -0.2157459392172624, 0.4055498592698905, 1.6497067243577175, 0.7890192766736421, -1.044353487265588, 0.7953139847174688, -1.5740154854045074, 0.9665654379132748, -0.3889094455704384, -1.8426397459593846, -0.9001191779220159, 1.7045921258988515, -0.8923330121142684, -0.5956915482032328, 0.011227289589172133, 1.7111591357647962, -0.9587860284026688, 0.7548194520215976, -0.32603844480628175, -0.2353359336920787, -0.16729381132141224, -0.6023878547302806, 1.371156314999161, -0.2459473828028695, -0.2620130902224386, -1.2172056461838572, -0.20656000988613168, 0.5008110746890201, -1.4028780271648753, 0.7193747259694553, 0.0660307754939295, -1.3093771377458805, 0.407051194515542, -1.1823392140768092, -0.4019555472426395, -0.26250820888118304, 1.2702869545254583, -0.24272141574465245, -0.42155102572483116, -0.05194109601117269, 3.292873619493133, 0.7890333104486489, -0.6211877906484109, -0.8047810389893006, 0.9678567436130486, -2.079988930109922, -0.6016769585932343, 0.12364670959331653, 0.7229553379296235, -0.5227730192140618, 0.023991105176350242, -0.0017528334343272331, 1.2586605379107056, 0.8446327540395329, -2.252502331262609, -0.5270068966745032, 1.6223796347828976, -0.4278645067985037, 1.6333830568090013, -0.8062257833307152, -0.30685337459460577, 0.3507708774563464, 0.424527526741457, -0.03735386264172313, 0.229879937036083, 1.1454140027646036, -1.1872670475847902, 0.6262020869197982, 0.7589488691885292, -1.6862092963785988, 0.7944545737967115, 0.9971081922053232, 0.7560471613916118, -1.1851981001821967, 1.0965175918763284, -0.46530937265986, -1.2761702411382863, -0.9791491731581209, 1.1589807765966766, -0.8156014346461856, -2.8072546995497247, 0.5334627416087777, -1.3798149493182552, 1.3972706448160608, 0.4552374166958973, -0.535433943499853, 0.8920580452737524, -0.5856331944062472, 1.7623274652492553, -0.2852747983665435, -0.18313041510663963, 1.4659299617833124, 0.1519470164480292, 0.23355499681619366, -0.836602381173288, 0.18618502715241547, -0.08859676768441688, -0.7180391575300691, -0.36232537769580714, 0.36477740973605915, -0.9281105879066266, -0.46197664970984853, 0.6483976493075976, -0.3812217162848902, 0.4303579894467762, 2.0043530514779873, 0.39102979400332366, 0.37534637396631415, -1.071734524715999, -0.16045645113900145, -2.998145904788263, -0.36470187389744846, 0.03991547011616779, -0.7008645685896715, 0.9912516955548382, -0.7450675439952815, 0.3264674970899282, 1.601666916097199, 0.5405397248625541, -1.1861306612606524, -0.522172803007203, -0.7727094284088601, 1.2277562505941912, 0.37759283992313625, 0.7444682278368736, -0.6522853231400494, -1.0696424743836717, -0.8054574164094268, 0.905380130000978, -1.1121207299686113, 0.2063449976062078, 0.5176153181186626, 0.2301751658467518, -0.17968415020039138, -0.5804234791794292, 0.522042470813759, -0.47680230351950187, 0.7668678996668346, 2.1152176375874023, 0.4635399730851282, 0.7692324460373827, -0.5214713943997042, -1.6311809160767827, 0.7017462722924709, -0.31859839125881545, 0.20304228378387937, -0.18790051825211995, 0.18432739014512065, 1.1541296937922023, 0.4450818568868103, -0.13551483948610296, -0.2758105920455811, -0.5849315949646472, -1.0646125679003637, 0.27411289538745437, -0.5032261617196119, -0.04351057134624247, 0.7743236339777182, -0.6756715811861062, -0.2671752620926679, -0.23914374307205996, 0.16461452793247355, -1.4436309225983486, -2.20506341329235, -1.0189819575984795, 1.5608022939480573, 2.31499985378701, -0.4181529433643855, -0.2711132087457424, -0.7206084096900425, -1.2504073094445143, 0.31340429692041716, -0.1447897506201982, 1.1850402988106572, 1.9541706849775027, 0.11232761778850357, -0.4382234425091706, -0.3947615339868321, 0.7015762348678443, 0.43950731587232217, 0.4486281613565141, -0.33259394965579864, -1.2893276502905346, -0.5665027824228605, -0.9867864794525018, 1.7152028381164288, 0.7425175887812803, -0.4541542908237512, -0.04974419881485532, 0.7205327224864219, -0.49642760570489125, 0.5806736618394556, 0.8088452773706619, -0.15195744367862507, -0.12096553277305616, 0.6220396950025358, 0.8874367244840082, -0.960123924615042, -0.2512769100863725, -1.3487372983592427, 1.9195263893870158, 0.1391130058484598, 0.3556392382753691, 0.022946113835703726, 0.06403402028906036, 2.01431714516637, 0.9153269759513197, 0.45535078555080316, 0.8164902531014034, 0.7554878281598991, 0.7302943512899034, 0.9227450720901643, -0.2149435624765486, -1.9175638929241665, -0.47494584965396475, -0.8209686635530825, -1.475086806478942, 1.5375697346337323, 0.43409387407100747, -0.5748944134752534, -0.1207717673708367, 0.10757938709427231, 2.24973612340786, 0.5656573548928321, 0.7510332313304937, 0.2925755284670311, -1.1385387437599415, 0.9278383480094607, -1.9329319879816766, 0.8833452963447278, -0.9531724053699292, -0.1039290425260258, 0.4382286101469634, 1.8998623656623255, 0.19200494459198952, -0.6716950287224315, 0.5638093918454188, -1.6242049283972644, 1.7704636715303947, 1.6534314391102312, 0.92655666075164, -2.1666623771571185, 0.3089037330906556, -0.34387294467445684, -0.17869075221031164, 0.45228978471381315, -0.9526180775686287, -1.1784311215584218, -1.4588182758831976, -0.3751354576229393, -0.3058513410728059, 0.9384734481636833, 1.1326237644059438, 0.12950394282796612, 0.7421113354249786, 2.22774088023295, -0.38297985887788083, 1.184609638956563, -0.28900852784476955, -0.38476787730344003, 0.06257594537962448, -0.8447175394855944, -0.3276448761445928, 0.9520069001238655, -0.7029145751675628, -1.6244073387265128, 1.622978343226983, -1.2795553886248943, 0.2494267093436905, 0.6236424924999387, -0.04290636875881789, 1.8562326434548018, -1.3390517668015733, 0.5090655455389611, 1.2848563335735044, -0.5387392229559257, 1.6741064751678032, 0.10066535315992477, 0.8949591322162106, 1.6846660415357275, -0.47037844642707904, 0.4157622049238856, 0.540404845364168, 0.3967936830533677, 0.43668944123398024, 0.2112361885627918, 1.185672884091169, -0.33641286222705097, 0.5497594019101291, 0.12465203566067538, 0.38350811363315446, 1.4507326394999236, 0.14723038127353738, -0.7869045408490771, 0.39357209249435554, 0.9743220259735553, -0.06453115565194864, 0.38254243983530506, -0.8643740939583053, -1.684728335866361, -0.20622146179421566, -0.2747979191346741, -0.07028871827775147, -0.5729020560099904, -0.6189757445377713, -0.1510371111896753, -1.1820077963068163, 0.6043354866597276, -0.9774217378587312, -1.3380178663597784, -1.4201147833071752, 0.18880445993987796, -0.8427639940831457, -0.32186427356745245, -0.006664725012722541, 0.8058032956183504, -0.23641847937920588, -0.6756647705708424, 0.4773883748212866, -2.185477701275724, 0.7531165422993013, -0.8203844714762077, -0.4004758384259698, -0.6468022951980026, 2.2667765095579213, -0.1464154957378096, 2.098114036236069, 1.0184508455410493, 0.8103126555466662, -0.40972058902905745, -1.1414090507678094, -1.3867326701405396, -0.4507753555588849, 0.10028961530046718, 0.13126844765242035, 1.8046340365305968, 1.0498294815194782, -0.1970397367331956, -1.4653721149167949, 0.28738863276181814, 0.5271374800610847, -0.1451944493283091, -0.9800599971955779, 0.6516285157791157, 0.3396200289963888, -0.8198525721107438, 0.6319579574491423, -0.3772650215173409, 0.3077068224849206, 0.31720206688921, 0.12158776309046304, 1.0809042082121207, 1.0642567891228714, 1.8179097447438652, -0.43206935605397984, 0.37786874569296014, 0.3952043620022568, 0.3619801074518372, 0.836701763727239, 0.13589241191151316, 0.5983402387018408, 0.11083062853937264, -0.47684235510432976, -1.425496108886025, 0.5861440987479868, -1.086649842646286, 0.8692343861045037, -1.5595017100635853, -0.11939217655297334, 1.867839017091306, 0.1529344462913203, -0.4142188866098133, -0.015382150772253089, 0.02331025826997036, -0.31332150638072576, 0.07177806286427546, 0.9588513248678675, 0.4790246289141386, 0.1782800679264196, 0.8316439535085373, 1.3697451219813022, -0.29239194315140027, 1.7130334754533454, 0.15301199433584703, 0.2516538496321531, 0.8052203626705442, -0.8193169757784692, 0.8297372716531863, -1.6382362402194854, -1.039626938505833, -0.8865946056863021, -0.9294253652017392, -1.7978162276590155, -1.992621134234571, -0.05491414933488196, 0.7607121087371761, 0.07984366129268702, 0.5462619894735057, -0.2682509648059717, 2.6409716720600263, 0.45749720934429716, -1.5363699364147407, -0.7376116600379029, -0.00034809918522295523, -0.0446268595336354, -1.0661827948417526, 0.20144275615808793, 0.7334562425309233, 1.552508206699953, -0.4212114236659149, -0.18798580599722212, 0.362342131367099, -0.40201566793731663, 0.24422295735481817, 0.5936899101332285, 1.4911129590651635, -0.012571888777807325, 1.1564868960369348, -0.4347382827914363, -0.03991151500405277, 0.8894520643614005, 0.6750877041971858, -0.8924490272423622, 0.06802820117873785, 1.3941390498912603, -2.2183459123693248, 0.728823441885771, -0.20738631995329626, 0.5619451894738027, 0.24102109818707865, 0.5988075233622759, -1.197341333157397, 1.141794439805377, -1.4503023284963743, 0.17970074803850108, 2.2516048850144963, -0.56902356791673, 0.5251052705298633, 0.41230439233508803, -2.0610354044549024, 1.6463483630850755, -0.3895932560221762, 0.023372481314313378, 0.3726580742458444, 1.6009305244339782, -0.5079472543165146, 0.026058442391582896}; + + +static double gemm_B_dram [64*64] __attribute__((section(".data"))) = {0.189669602985114, -0.4909043876322673, 1.251004287596872, -0.006491959097523364, -0.34124077949668935, -0.7483757154858288, 1.1325804441514433, -1.359337165187181, 0.08751016369069563, -0.03871848811440984, -0.4955048405923246, 0.290692491485043, -0.01520214370946306, 0.22914631673454838, -0.7461512339849881, -0.6443114053235841, 0.11847291756872175, 0.19439551671935018, 0.7833381602627896, -0.046667928646890046, -1.0787563446019552, 0.592125761379138, 0.8248616990025323, -0.03807672876925321, -0.48943896240142126, 0.32030678738297486, 1.2611027845782836, -0.8146138503383921, 0.707894179465638, 1.42836604641047, -0.6933696474669173, 1.6507389021911445, -1.8867586637765072, -0.6801063289945823, 2.506643391838216, 0.5179032468570114, 0.9157906679850603, -1.4615127877407137, -0.7014811604960124, 0.7482144125451611, -0.45231597591557254, -0.43328033036609237, 0.5546620950055203, -0.5335895092359707, -0.5577499923860028, -1.2434580142633445, 0.7479993507037666, -0.2454859351558673, -1.9763318246520143, -0.617052799856045, 0.8295099746093358, -0.7985138795193706, -1.9669454509751187, 0.21568313531934488, 0.06218865917825329, -0.21979058106116164, 0.551630007075062, 1.588518953960295, 1.7006327293948955, 0.4788544238385019, -0.41615197068085047, 0.32476024918516005, 0.4828001936355227, -0.2857415896451339, 1.325049359243402, 0.5943271959845479, -0.09542742482466746, 0.6091191876188028, -1.0204861021625729, -0.07122776033319436, 0.25474731658461836, 1.0326277403651098, -0.4032539921927929, -0.2859438908875716, 0.4275765566731029, 0.2610713689915173, -0.15565017655025964, 0.4811708838672695, 0.46865565860373054, -0.525365919337175, 0.39464486011730787, 1.4521501913227826, 0.4920754113025742, 0.01001877915514528, 1.1302339241072494, 0.5012574226736635, 0.40239815358228387, -1.023646734531218, -0.9290930154151816, 1.9346717432885199, -1.2125355152651964, -0.5977126284420752, 1.181293809817535, -0.6689545864836354, 0.33663422390191694, -0.9150073073042401, -0.46210018982909373, 1.0727263376369174, 0.25920697127003867, 0.19738682741687985, -0.2176025539922073, 1.5618547104206084, 0.0874164574098187, -0.18022449922123449, -2.177291625468745, -0.6691715014457149, 0.26238802318984583, 0.7114854381779321, 1.3594786178950642, -0.5105267831106245, 0.8957599457510734, -1.8832700802531435, 0.3734138241025368, 0.8513556242527552, -0.06483231029486143, -0.07775530075881103, -0.731458954443067, -0.1906549073376802, 0.5839211556095644, -0.18220420821816138, 0.5399541172046803, 1.5514984760944803, -0.23835669566472859, -0.8129680193587631, 1.6959480854121158, -1.542485498562725, -0.10582221958284689, -1.1602067061862453, -0.732183062829934, -1.032232792355313, 0.40740998722283345, -0.4461691518402758, -1.639602822546497, 1.737408764400146, 0.5102671515154679, -1.104532973746827, 0.20282323529368904, 0.5451864270031233, -0.4174196455050283, -1.4803962625447804, 0.0711312016026537, -2.4575219310050103, -0.29715235983531224, -0.9060734662625927, 1.0377336775259156, 0.9787682718988012, 0.7181988996772725, 0.5755430190021412, 0.7397220744929801, 0.5318564513368325, -1.3215398823928493, 0.40397027552612724, 1.3257611388643007, 1.8091618397708604, -1.6680040155978901, 0.19219664371439094, -0.5576196967532386, 0.7132732615745503, -1.2150580083595408, -1.4463083092451903, 0.9548065220526738, -0.12789818738063033, -1.000610995686859, 0.7832918030824878, -1.8489698667637202, 1.3870856731187504, -0.6090513936305421, 0.5193597474251914, 0.2818036067134789, 0.5815463164249131, -0.567803366150921, -1.2006864703832458, -0.06290120845238856, 1.962828854249686, -1.1333475754839513, -0.16505100921916624, 0.3678799166519874, 1.6492263827929101, -0.4626305949889216, 0.9386977073001513, 0.01711080123922268, 0.9872047773741, -0.7134319737419914, -0.44937185484417963, 0.3885563045101157, -0.1988361913928128, -1.0830569238314645, -0.3597416459932602, 0.6560019605281613, 0.19154241112008105, -1.4668221584548882, -0.6920493662799277, 0.572714186764936, 0.6916475040075348, -0.46840541134330865, 0.9121131054406446, 1.6074096919057093, 0.11841252923863307, -1.4402773937935691, -1.6930804949542624, -1.1162555921139607, 1.096287644463553, 1.0639045161507725, -0.28203213808230204, 1.1732559505317561, 1.3898278424498873, -0.12386177897129297, 1.1385254001814025, -0.7663128158804938, -0.10502618788525488, -1.2868290476443027, 0.39333359256220896, 0.10555634094791072, -1.2555614763203795, -0.3695707657351879, -1.3087493812000008, -1.2121987546438076, 0.7016264290342246, 0.11644777354668061, -0.9859202287793376, -0.39767440147104705, -0.037356754428425336, 1.0076307089633902, 1.8450467799321841, -0.4770321781666495, 1.1781691723419236, 1.2069309607629284, -0.4175503084970734, 0.3129035109422391, 0.6794906080144418, 0.24235117892116984, -0.00015134736402941756, 0.3528969484018996, -1.351170406870033, 1.2155283753301906, -1.402537825666173, -0.6203795676764393, -1.3742391623665489, 0.6052811339871745, -0.6746837003668393, 0.24199407601003217, 0.28736119321050707, 1.7974505990090723, 0.3186949805078729, -1.0063738446337889, 0.043447057275043346, -0.9162521618284151, 0.5740193687324415, 1.524994279141021, 0.42122454074468846, -0.5058031215088832, -0.001935251987053423, -0.059249535360658356, 0.30669357584478807, 0.22049638564358517, -0.7209260326374053, 0.578590600877031, -0.2814338568695432, 0.6471911034482357, 0.6355326129684161, -1.1584852824016685, 0.8754522360715343, 1.3631571444107151, 0.8948572423285246, 0.12695806790569364, -2.0123992429307687, 0.17385489080177374, -0.31875591594593894, 0.5421847899339702, 0.20730337920079658, 0.505578016119112, -0.889916275322328, 1.222002486711219, -1.545636873356207, -0.5794523266184156, -1.3620271852148316, 1.5575703663389617, -0.2193018045216694, -0.4677903230735593, 0.48272717104738166, -0.4675832048242394, -0.7543230939085693, -0.6098586620173682, -2.3682295377243645, 0.6261136824601904, -1.4955905073070523, 2.70409271869755, 1.6902670347280917, 0.4675422030146951, -0.7686061607983937, -0.8420265795888455, 0.04748961117866384, -1.5506214471694328, 0.6597456051505508, 0.9810895192151013, 1.2060122914372473, 0.5094505048346659, 0.948354175015636, 1.1841352702569934, -1.6107945297750212, 0.37363430210542137, 0.36301946174407, -0.4713654733277363, -0.1357900352713401, -0.8317998284783682, 0.143060129811001, 0.357954244463521, -1.0013479121939963, 1.1320693665450008, -1.0722974377446446, -0.3378876880640738, 0.6373983419863073, -0.7974884472315626, 0.09171832221402072, 1.1137754394535067, -0.5173249508895911, 0.3641096108993, 0.37562510410149125, 1.149953675035897, -2.4150876953168714, 1.2388796995290943, 0.3019276636231262, 0.35532009889140853, -1.268683781896227, -0.7208155426015784, -0.343031757238289, -0.8745959707232299, 0.6340160893384413, -1.406093789252919, 0.5129399194497606, 1.884693292443038, -0.7579009703382211, -1.086805433546504, 0.8863788687809607, -0.759425281130206, 0.5268352654420474, -2.508898843182651, 0.41955502862273386, 2.077603848983364, 0.7432663945852148, 1.4916593464656478, -0.8128170056509231, -1.4563234165763541, -0.9539524744639091, -1.408413616302921, 0.3718249353749545, 1.4767717300094048, -1.2913932275907674, 0.09416680314491302, 0.6229077094186778, 0.30995661293173044, -1.8878093325127658, -0.4463001426607724, -0.6393035105594692, -0.5219090322847073, -1.1431032202175238, 0.23996231659805162, 1.1809752738189252, 0.8051030956141957, 0.400987603269216, 0.9557302887303304, -1.7460166934842984, -0.36154499394302375, -0.06522295552167409, -0.6009801257039329, 1.9887587169725671, -0.7018354826915972, -0.2041348043523018, -0.6175366203935166, 0.13159474089261292, -0.9446699924851863, 0.2068538637260416, 0.31382355603718387, 0.30840240507887645, 1.2878146580745333, 0.5856219393424119, -0.6568938854009293, -0.05232317203714638, -0.37799051437745823, -0.3901095063695634, -0.37088956582253585, -1.0038556934540235, 0.5356482043193802, -1.345197705402757, 1.0500306672776403, 0.30840104248656297, 0.7653967450899795, -0.21309922823334831, 0.8392040761097412, -0.16416710878946741, -0.6709972930186268, -1.5423915961168462, -1.0433007967333698, -0.4096728112440253, -0.9174412411641567, 2.4195675460926807, 0.08813241769030257, -0.5916662331186044, 1.1922469683938692, -0.009977679759738923, -0.5222022711446821, 1.6344397845287502, -0.6799665641060869, 0.8410052507767574, -0.1350848011563506, 0.2508398220742027, 0.2465317823851017, 0.6839967409804478, 1.681812863852406, -0.39747629739679413, 0.0954623781181105, 0.22696508074722685, -0.9432999224955897, 0.3002815391057095, 0.6247436756056247, -0.28001777607518696, -0.268935060413408, 0.9243691012328462, 1.0528496388391924, -0.7876280793719912, 0.43382470243213683, 0.6289022860101765, -0.033711366761932496, 0.5805204623048469, -0.6754668943387816, -0.394637468929365, 0.48355518941861697, -0.22244804258316303, 1.685628214162959, -0.11568422609670699, -0.14295613102166807, -0.37391290726473403, -1.5435990936321167, -0.556050658038526, 1.0753715521250267, 0.46704881675224336, 1.0723003552935109, 1.231529689961776, -0.15439993951522968, 0.34112426931531764, 0.27947376218479614, 0.5107161167447202, 0.4689867373861166, -1.8048261251158957, -0.7118422460610452, 0.17700385429720378, 2.209744990011742, 0.5891707013601143, 1.8192381659692514, 1.1260293291302985, 0.9524656674056426, -0.4526268909737412, 1.4407795793808869, -0.19531408663845634, 0.2283470744920325, 0.011234729330484954, -0.6034955540076896, -1.0733837614648305, 0.28332303940663434, 2.247768381111992, -1.3579610652989789, -1.4299091422968209, 0.7741861134374209, -0.7448851196209746, 1.5139575345025822, -0.6996137533248805, 1.189260513704343, 0.7560345480854492, -0.5955564946507164, -1.892210580413274, -1.507844840921064, 0.6443820369253852, -1.4107609501193221, 0.1755020796040547, 1.107261067809891, 1.6407744690151982, -0.4798733122332927, 0.40063712375861044, 0.08195954117181646, 2.0152721910595703, -0.4021684274370984, -0.7504431079196243, 3.4052517316861657, -0.1670293961990677, -1.2975465623015716, -0.6311541134061391, -0.1405561945796084, -1.052764847449791, -0.02729241829228328, -0.7854270758121915, 0.028516722473608622, -0.6353277757640107, -2.036958121665058, -0.642928398294438, -0.854329570376376, -0.4402500408509159, 0.15257075985667826, -0.6819127080659984, 0.6468347012501044, 0.0930693446845866, -0.48887663896467776, 1.289961254197282, 0.3077351479215355, -0.6084945465256884, -0.4955153130182802, 0.6648048184574585, 0.8846331641907219, 1.0191412836502698, -0.4547337947749852, 0.3866792602527052, -0.3608091685311371, 0.4315664458823607, -1.1405729828723672, 1.0658378320568267, -1.6215943351797741, -1.4960032394689278, -1.1752867571353782, 0.7754013715005769, -0.12596887340485374, 0.08870089142026438, 0.17102026852126964, 0.005037630800198677, 0.5154356751840908, -1.2980855885884446, -0.95942170120491, 0.025064490896124083, 0.05774506261158576, -0.44666312777814293, -0.36009115973957706, 0.7734222385388448, 0.20931239869905546, -0.6405935855372006, -0.9779825570939976, -1.2602630407674884, -0.11213116060164738, 0.31683998325190177, 0.9608162613161545, 1.7617259402782062, 0.5332249726108867, 0.0480691978209954, 0.4698413593912798, 0.7079213520824291, -1.4719055966627554, -0.3554080437826893, 2.1224401502693415, 0.8671446299467845, 0.3939521074267198, -1.042531579871164, 0.3447086045230242, 1.2430525196600999, 0.8932360765812469, -1.0899041626739954, -0.10185537856378798, -1.7802874942339497, -0.5872424427404682, 1.1342357318491285, -2.2425671656367667, -0.3803110761017083, 2.600781602195285, -1.2290888874925296, 0.24569789929243, 0.2854925491407574, 0.7325172508900486, 0.9087490791207049, 0.16351892393813683, -1.415052295757837, -1.7206306176358126, 0.060234739722926374, -0.08942974231790239, -0.5326903183397282, -0.862827297911899, -0.15735909472717494, 1.6833283452032104, -0.048846256996197955, 1.4441404573947205, -0.6577610674094022, 1.0122300292640196, -1.309665630454003, -0.2686500917542327, 0.5540823200822727, 0.13944705380804281, 2.1332591207760423, 0.8065789677701352, 0.3252000063592445, 0.7887411128500289, -0.21228362057381842, 0.4527845805518231, -0.6529880062202584, 1.459939956281907, 1.8440846679363176, 2.127957081016315, -0.11724072209427554, -0.49699571473838994, 0.7646349717820928, -2.3009614984683644, -0.7185790399995472, 1.4575816264107626, 0.0009566262638368953, 0.8182082579799453, -0.13585198410986143, 1.3382523033803306, -0.6484224375517338, 2.027865524163214, -0.9966208197342079, -0.5301112335696907, 0.39150882760380246, 0.803042507106028, 0.3410600781005436, -0.5308353724645087, -0.698898758742007, -1.2280870462459705, 1.4250241437929307, -0.5029629441562755, -0.1258884709654688, -0.2781538960944018, -0.26209920904526157, -0.4591265210119423, 1.2686458890561711, 1.3501269652114032, 1.1802856827413442, -1.9918630409006053, 1.4124073508805255, 0.15947531968114928, -0.13562273551657536, 0.2973109282823203, -0.17685951799635244, -0.8235967956477911, -1.1095909880643675, 0.6923423498891493, 0.3542872190261509, -0.17985102389955504, 0.7847874077044223, 1.3102764929145028, -0.40375562127323683, -0.02378812527403701, 0.3259968219452401, -1.6932063886335549, 1.0608228443140864, -2.2581574537180726, 0.0005062460095738251, -0.6803068888120192, 0.03270078938345398, 0.9449563832937318, 0.2560919649556906, -2.1057408864224376, -0.5052118758709067, 1.421469323382145, -0.3788953447378539, -0.703456192532379, 1.0230324323469668, -1.0762757525300937, -1.1234187168399243, 1.0117046306174486, 1.0939727242689221, -1.5401055327147126, -0.9165098978210413, -0.7320998923855627, 0.36213834223499025, -0.4660635928974643, 0.8929178346215048, -0.5635566812842832, 0.8443361157461801, 0.2257379259786798, -0.46836797703096, -1.142429334719264, 0.5942375319267897, 0.5776330966220249, 1.11889000511201, -0.6225115798235682, -0.665277265086938, 1.3021608863661167, 0.3080846247560111, 0.2305268915721791, -1.4195690799131522, 0.7021465907786252, -0.5065603208361397, -1.0515292011570208, 0.03676529016321239, 0.19083714569711607, -0.45158221578290686, 1.430262537673349, 0.8564108501854661, -0.4684289952147731, 0.7358095889904793, -1.376958147267138, 0.29869224683807033, -1.9492123387745222, -1.6500691440373887, -1.0464692699857279, -1.5861004634732518, -1.8197269407302108, 0.13620180501268486, -1.2674896295636169, 0.5064578533223967, 1.14519788200572, -0.31357045824328467, 1.5444242142322857, -0.9755898265306233, 0.7260021867969293, 0.2983002122558138, 0.33007518208148007, -0.3012251999336654, -1.13629994945274, 1.2591509479456338, 0.23558756797719393, -1.042853289185364, -0.20293909969523755, 0.6958730281917784, 1.8791244019244464, 0.7131591899986326, 0.4556508032642018, -1.6345167208845197, -1.403341194881998, -0.3656703260246628, -1.179877567884639, -0.6956208755464927, 1.236197607064445, 0.7256395410256029, -0.9942873953265658, 0.40637929060102135, 0.001340784350614637, -1.2242281615824748, -0.0830634473482318, 0.027651783756700472, -0.13730254477957476, 1.0745886240915608, 0.5232663992732692, -1.1069337244040973, 0.3068199062637968, 0.5412303781268201, -0.1584788333976485, 0.055360709785356864, -0.010179517498452952, -1.4631874840764194, 0.43434043468018996, 0.4956327203352371, 0.1608750017124351, 0.21204181061562222, -0.848269051241505, -0.05190576930487508, 0.4342286760696506, -0.15638601277079034, 1.1680467944309245, 0.23523486252012651, 0.2931013470203736, 0.05383532865352654, -0.3722041294537168, 0.4322781449509412, -1.8638660542434666, 2.0608887843113273, 0.4025575201110334, 0.46665062174560024, 1.4335012256250086, 0.7398075993729516, -0.7527397495032649, -1.2318793580686687, 1.1497258936055144, -0.7014386812841402, -0.8522103401341584, -0.4526081006714111, 0.476164533281359, 1.093816318098742, 1.1597883185839557, -0.2865809153674455, -0.9793326842802514, 1.2156737659864476, 0.7265837346915243, -0.6063765414897068, 0.4590523848413457, -1.1963506272729019, 0.020177369737896966, -0.5196649709771612, -0.11042132844938202, -1.7803264017675031, -1.0983863507243814, -1.9943938078659595, -1.0180851564689184, 1.343090275133355, 0.05121250188699606, 0.18965693411991652, -1.2847595366907714, -0.8590688058956931, 0.7559867086719737, -0.6093457976035641, 2.287441638998896, 0.2849485575478564, -0.6258324519513977, 1.4242859506295802, 3.1760359675054914, 0.8806279132304711, 0.3677500720568211, 1.2699629292559889, -1.373229118623735, 1.3148250600931315, 0.6221202243471828, 2.161209836417307, -2.4149736340373655, 1.5154278721952714, 0.7974627211294567, 0.23813604752289289, -0.900197705620758, 0.4516990863796165, 1.8523087243586671, -0.9440633915033274, -0.13944564531024706, -1.9962862794970841, -0.876802883170169, -0.45909954643471435, -0.42349373411850877, 0.6253901471648027, 0.2884795399986682, 0.1993641699969819, -0.9750244314786808, -1.357435592557576, 0.5377569832746467, -0.24566106658181208, 0.7760340274462584, -0.13718006475583142, -1.0471331516010438, 2.3698156234871006, -0.8608042226343801, -0.21695269183024965, -0.3963647723939556, 1.3140655172664333, -1.5496430190473407, 0.8299243008006667, -0.23469208225352878, 1.17563374798573, -0.5685406484500056, 0.04936433736528017, 0.3097883608445818, -1.7607966379468067, 0.039978934156923385, 0.22648827570429167, 1.8868326165910845, -1.3359468501779264, 0.6020370854831343, 0.09420444683357239, -0.6254964658092993, 0.5933545751971042, -1.207196105637615, 1.22200570063805, -0.8370218706835116, -0.7362169554932866, 0.47824603981077524, 0.33189582274019075, -1.1410350461719765, -0.20545838480263884, 2.6831380407821084, 0.34587641407530284, -0.37209211976632794, 1.3972167882558741, 1.5468541517541319, 1.3774160713468802, 0.0890331713821522, -0.7617963846193975, 0.7359602107842439, -0.4591000552529005, 0.822805243465044, -1.3704452982024895, 1.1241415524841798, -0.39079861469985133, -0.3682221393582528, -2.862730990973833, 0.3127318821569574, -0.5488202376298091, 1.8942511988856663, 0.5697559112545517, -0.3016669085440337, -1.0631859015069938, -2.5359882587942857, 1.0391700460549405, 1.2895062553420336, -2.202145401537113, 0.06557171746910258, 0.04402596162369398, 0.9080815115907477, -0.04818489310611712, 0.8230410704104014, -0.797744380603796, 0.030779877800647056, -1.2360195428922787, 0.954992325464375, -0.41043047284201517, -0.9164072583967519, -0.8504048338756758, -0.7056726337225566, -0.6237624307170951, -1.8678225332641818, -1.4928026705324111, 2.113734390813324, 0.9503886873331864, -0.6764406676203423, 0.3300941747271548, -0.8577004158636681, -0.9508899749801195, 0.7649728251851297, -0.27781730274050287, 0.4576448036103095, -0.9612977596469916, 1.123017096832584, -1.0472700356156177, 1.070974103218303, 0.1442610329440957, 1.3037843089034824, -0.19194700432383366, 0.3936578615259371, 1.7754003059642411, 0.30763463139827374, 0.00448664532664562, -0.9659194892052072, -0.8249002512298813, 0.9455827325947566, -0.7695467082668787, -1.4939045852147155, 0.49132298190860557, 0.6712301995907592, -0.19850197254674795, 1.0175234856545008, 1.4541756482189356, -0.08027367417510534, -0.5181152695539641, 1.875280493218953, 0.1620107139280786, -0.7384881145759171, -0.5171161188288925, -0.06403923371006702, 0.12978190732109626, 2.4681068345281907, 1.1769716081503954, -0.7324609521575315, -0.19152297948200578, 0.2091053252025545, 0.3954333505187698, 0.15717459862331037, -1.1768146617436632, -1.254123931164029, -0.041531422478273954, 0.04187102672842283, -0.618389217305553, 0.018142080648009342, 0.9811928870760606, 0.38678827937826166, 0.055547484850162934, 0.13317012902523476, -1.800475631340105, -0.6487949930861694, 0.9647930068590418, -1.487718346596927, 1.9671268250571596, -0.37501801123158296, 0.34610293084708627, -0.05437993080264503, -0.6150924237870229, -0.43787079759759806, -0.017150838121724413, 0.27223581970527805, 0.13579425531133751, 0.17114666895138375, 1.4880740849985945, -0.6523866340206094, 0.6724032102680387, -0.2498818144309833, 0.3684109792157164, -0.05652868718922079, -1.141024988505546, 1.0062944399776677, 0.8612263693463771, -0.8651985363612925, 1.6409555329882874, 0.4760963910597331, -1.4235677497447479, 1.1982758403837634, -0.6480863852455645, 1.6982344632787765, -0.8187706458007767, -0.6608925110148092, -1.878968801793851, 0.8393277068222, 1.2099518385773633, -0.3010794489170866, 1.2234601520436406, -0.5316019239972422, 1.4282755674874026, 0.5703393562713633, 1.0888867653411374, 1.0643032788775597, 1.6935580592037394, 1.9364675418998223, 0.47240320094667826, 0.4170350364772233, -1.5902014047218211, -0.8490049971049308, -0.47339514182184983, -0.7405519451390545, 0.014168618743096923, -0.2220062149826033, 1.305130180708799, 0.22749278757750177, 0.6791469709199983, 0.007274426609199737, 0.29066318209770114, -1.2970923134475996, -0.19855173166745999, -0.9320767794783268, -0.40967432838228596, 1.1036337112977639, -1.7195390885648585, -0.6096349652250187, -0.6653270917294025, 0.5412489072541421, 0.7035313262086113, 1.4350188139062847, 1.0909763189822588, 1.4130923511612945, -1.0050719223251598, 0.3236472053381355, 0.6827457566049314, 0.40094481205354565, -1.5498598643101793, 2.6210019152932134, 2.0300902584395386, -0.7043940938451111, 1.0865988277002356, 0.9057001363970097, 1.4810649208771722, -0.10142946285532765, 0.46874289915027023, 0.9625740766310946, 0.09968113439098554, -0.2034198776993104, 1.0358096108450814, 0.16224668087220992, -0.045055182295066304, 0.5554786252919994, 1.2291191037431475, -0.3864008241497015, -0.19365121140022182, -0.20931069081798342, 0.4689683976066863, -0.5298256491030603, 0.6439945266787103, -0.19085594755902638, -1.1213635437310359, 2.375386241376686, 0.5881989810255106, 0.008273393570788342, -0.1861092734243662, 0.8224893358060019, -0.4218577232399481, -0.0032231663149655688, -1.81141037991999, -0.959887551414178, -0.5680617901151106, 0.9541157159307389, 1.12682412380246, 0.43895749888939467, -0.6706243964684786, 0.7825799663791051, -0.7723577262137622, 2.2529183253773697, -0.6198793866416389, 0.04618501623459061, 1.011174817648215, -0.6746114093338123, -0.5115801644049819, -0.01629195036762023, -0.5969933305425132, 0.26546536698365886, -0.3030480871350583, 0.3934547673395094, -0.23801758053719915, 1.8769504574256326, -0.24529552485016695, -0.9744135424772613, -0.7357611817796008, -0.21184761253034057, 1.1465910271880095, 0.11630436842876272, -0.4541508223849615, -0.36746508462131555, -0.1250927382677157, -0.440940747042338, 2.568724923652603, -0.09677977060333055, -0.3659348731125605, -0.3009786276980547, -1.1046192339132022, -1.4969909024911252, -1.705538843107525, -1.449579663145317, -0.23500821987366438, -0.9673606956637038, -0.5500313848742133, 0.808780940775045, 0.6111080247478592, 1.6395521189037061, 0.9609987857589979, 0.623642262045472, 0.723527014546075, -0.26343272683881636, -0.769665428394861, 0.17013249407359873, 0.465846208938873, 0.45598613407332417, 0.39401855978146333, 0.6591988409228787, 1.7266262581251506, 0.39676442311673654, -0.4965304502203755, -0.5142557769956214, -1.6655794153163535, -1.2675332626508233, -0.03314875902158776, -0.783876097094789, 0.4953254858094202, 0.28676342719419945, -1.0849457635502189, 0.3239859963424095, -1.5041496090466209, 0.5864069300955381, -0.9391275890746287, -1.0570473532938447, 1.0555673924267797, 0.09380606672705916, -0.3671423775673435, -0.35514842522056567, 0.411199894209508, 0.9946171745115864, -0.2316865971443836, -0.9112994229878664, 1.2023959036495757, -0.7622509288960355, 0.9136149401717509, 0.30962342705126583, -1.3385900681264526, 1.8165778911592796, -0.3070462119648475, 1.1668079912055098, -0.33944606940905453, 1.3710129669800468, 0.9300579839066637, 1.185142796653237, 0.10854220774737425, 0.6826304187866886, -0.5461042938952528, -0.11638255103314456, -0.08029464734292162, -0.42338854207086507, 0.5084747076597527, -0.8165363388123666, 0.6131311512926562, 0.5583314398652852, 0.09082361393666324, -0.8489450230349159, -1.2492858128054651, 0.34492034644528907, -0.8741986078561492, 0.5534680689510987, 0.3509848535144375, -1.463483294540364, -0.19006125129863014, 1.1315240293178561, -1.3435315937863141, -1.750741728784698, -0.6311931076898489, 0.7270923030390775, -0.5387718100480267, 0.9056367098865701, -1.846270591936921, 1.2272709847028767, 0.6799784552405994, -1.2083016255148442, -0.9766777894153844, 1.3236020557952743, -0.9018831271999473, 0.09157528929486593, -0.45525424561822153, -1.0049561715754778, -0.6200845763863535, 1.733477852496386, 0.4598612881320188, -0.2949519680069482, -0.10651038985747713, 1.478184862839466, -1.66916461604128, 1.0071272154577544, -0.3191246615023448, -1.3762881219090572, -0.05091349499804217, 0.8668706188030013, -0.7152198360224954, 0.2864085373632313, 0.04820236445222125, 2.0590829933787136, 0.10533466463098612, -1.185039046008763, -1.0208925536710525, 1.139829687497562, 1.5281883065641328, -2.029543137642918, 0.5209731324914566, 0.5071573516626207, 0.975792856064161, -1.2943315365568762, 0.19877285881355367, 0.011204445485047487, -0.602040653782272, 0.5736299498569932, -1.9785054425068482, -0.5976246285724223, 0.7019319162248578, 0.46197386760890474, -1.214555459415656, -0.9289682655079575, -0.9873330073605263, -0.4452115501359032, -0.7042276239280941, -0.6568950465417366, -0.9712261431242842, -1.5375361503838323, 1.0386438045163713, 0.8961184107636236, -1.1231152704037288, -0.7310087129802972, 0.4532745570836223, 0.6513772767640275, -0.17217271634298267, -0.7351692274922426, -1.3627698357475697, 0.7204891484463551, 0.29854415380834715, 0.3468095182692027, 0.8119840231832707, 0.06978447405544162, -0.24016735136695966, -0.08960307423878197, -0.21817961411038742, 1.1683267443828442, -1.037689638483834, -0.6239271870188987, 0.6620103621803525, -0.09434442862031094, -0.4030152273570181, 0.47070117017904045, 3.1976163385397074, 0.2619100970459515, -1.335463053243616, 0.6057649340496221, -0.32069248128125416, 0.008367224499531539, 0.10177303682522976, -1.0798033214501017, 0.19572546628132184, -0.9972708114342066, -1.1980320139463696, -1.2280764417902754, 2.043254030499081, 0.39400030768000005, -1.4071046643902017, 0.3997987346703504, -0.3505675095839659, -0.6649904581148862, -0.7190676510974615, -0.7314038673207472, 0.8294618413486863, -1.4971922309648993, -0.7580109890249522, -0.19362259003418086, 0.4033127688590755, -0.20302508970364014, 1.0547536665950978, 0.8053111300585767, 0.6621698769014782, 0.10949744083274207, -0.3680243157771866, 0.3011535518111016, 0.23882541455141687, -0.12244992044143885, 1.3013956438407601, -0.3304347302314844, -0.2383161417380752, -1.67036939630407, -0.11106638365989584, 0.4990455041789286, -0.25198767361062563, -0.5842103728027922, -0.1305107898573894, -1.409361808083387, -1.2557975528603051, 0.9117480009446275, 0.14983346550614027, -1.1349702581587906, 0.6622092567614445, -0.39207799039317925, -1.3665663590081276, -0.41128275516824825, 0.4632560672239587, -0.12326350295229303, 1.4215773652232737, 0.3356703315379674, 1.419239328081392, -1.326046400550978, 0.8498409192473517, -1.333424030987914, -0.4828556213675988, 1.159075456642561, 1.9463103138523798, -0.8415052898911937, 1.0060936340045976, -1.6511900176435539, 1.4022116059874739, 0.866511884032407, -0.9339415936059193, -0.9832761022039055, 0.2576454260927928, -0.030459679752091188, 0.481387386454465, -1.9786433296694181, 0.4839032883340431, -0.52661829084419, 0.5378888526826829, -0.7975908049246164, -0.30217127261876753, -0.8390830626369119, -1.71190823631273, -1.5139589626882188, -0.123355719896304, 0.16788051959333397, -0.17019749451831728, 1.6732330041304837, -0.9388831491865992, 0.7187438609965356, -0.5693078627176211, 0.9178670073251192, 0.7073102150037632, 1.7107199047271453, 1.6911825874334077, -1.213522552035225, -1.526918066370356, 0.3182607957611916, -0.7048446726313435, 1.542896177144803, 0.7414214926541779, 0.027571386474332372, -0.5754942139316102, -1.7958306634788441, 0.9412519070406014, -0.9489277592897538, 1.6311155422356378, 0.5653085033471172, -0.41201313101807663, -1.6742963677191696, 1.266664141133199, 2.0918988065309074, -0.21891340206561175, 1.587266678692178, 0.24357517704777013, -0.7155255221813551, 0.6177965287355739, -1.9946284216093966, 0.8872512984658244, 0.4001647745043678, 0.3292899527453197, -0.298976814312964, -1.6703766117775312, -0.877558359633544, -0.07982833124499089, 1.542228511553581, 1.0197136724339582, -1.7015354910808584, -0.48212576394146445, 1.48342039099686, -1.4829678245607811, 0.24934133729286487, -0.18269475995297718, 0.3839558739092927, 1.6891904534141162, 0.4619748421824861, 0.09993013315995518, 1.0462656041957057, 0.18766811525805024, 0.5447603805656711, -1.5745057434452947, 1.5827795236366957, -0.6502743062505872, 0.24046578837235552, -0.04403547820029734, 0.7664612539005661, 0.20144681297018477, 0.5785053189296201, 0.7764022341446827, -1.287512490286816, -0.23619342552685957, 0.6658466177075605, 0.16631539872440593, -1.4536544736540666, 0.2771445813826407, 1.129883095823573, -0.9555005854035606, 0.5683041332657001, -0.4512292838434167, -0.2801704266168622, -1.5059053494163779, 1.1190392605031392, -1.1718879290253827, -0.8841551589218146, -0.8920958466820361, 0.8939826883481805, 0.2034652918512655, -1.1021273970619352, 0.49297323422258654, -0.44848662225935687, -0.5489949380720973, -2.1257290549864827, -0.03594780788378006, 0.31488414200224113, 0.7341021381288548, -0.18111164825082318, -0.010486184647393863, -1.2860170377857756, 0.503103320093718, 1.5011465291329578, -0.21396707680556573, 1.3045604895745035, -0.6531242638897106, 1.8718755909371418, 0.13524241974414905, -1.7665651290994233, 0.41191565756029835, -1.2811663730152782, -1.2088906569879048, -0.8290994826950859, 0.8136601745512939, 0.43626266846062023, 1.6089090600319198, 0.1593815740133984, 0.9298775421247323, -0.4154891414125775, -1.3404214162908434, 0.09528931157394888, 0.448704117525186, 0.6054527978627932, 2.4408592434196965, -0.5166066202685516, 0.4204577595863723, -1.29987773563286, -0.41956356832710956, 0.15024675730990028, 0.826238085727147, 1.504682832366687, -0.2335959164195668, 1.1452390705220412, -0.7142725656031783, -0.6976263977299514, -0.30040150524704784, -0.17978414420698238, 0.03462283540349657, 0.004961040538083645, -0.9686623661641447, 1.0156800590204957, -0.5910526566968882, 0.42668333759774785, -2.0723034039377595, 0.697952343937172, 0.31893183399956626, -0.23088144999338397, -1.509751062694838, 0.10747571439392618, 0.10611992491921178, -0.9208567330224402, 0.41616978812279903, -1.872118961147354, 1.0314063302051917, -0.21287356137371105, -0.8131389146040623, 0.20225111438661522, 1.4199156443209913, -1.5901962373203609, -0.9547182114259212, -1.0807755665828445, 1.0225863410319447, 0.14578447935362185, 1.2886811180355797, -0.4801752859875242, -0.20595689226841954, 0.5459497541973576, -1.7406726509793795, -0.31854406317287715, 0.8234509000335084, -0.6642196576581617, -0.6033204455513134, -1.092767255651449, 0.5099444391903665, -0.007179640854720999, 1.9388046452293908, 1.6002179297200447, -1.7574981376543641, 0.4657480592549505, -1.1366638959357926, -1.0466970244656812, -2.348820269680322, 0.7849763826831557, -0.2438165410162293, -0.4023438236960017, -0.6576455996483718, -0.8069427471635754, -0.1674045631751715, 1.099907646476609, 0.31278547680895696, 0.24422468441969067, 0.9839964884211916, -0.4248525421861309, -0.9541804382014959, -0.8911225638653535, -1.1388382692559194, -0.44118709528048106, 0.10941276154357217, -0.48521233846001877, -0.3686167969737519, 0.6413441803591936, 0.2479211831622872, 0.9766610530990674, 0.11101021374002976, 0.5854427384212253, 2.277491279753263, -0.7693262395031812, 0.5893216873540514, -0.6541864315768986, -0.06938245071569392, 0.8531392120125499, 0.707105319149386, 1.3205623217552738, 1.474365496672677, -0.6540118144074791, -1.1208556692016416, 0.5298280317907396, -0.5483340133806348, 0.4835462118207064, 1.6400307701149688, -0.7527660556091446, -0.2207014712546088, -1.9012367446206324, -0.011845221890036848, 0.11328910546500368, 1.0410718138994182, 0.7752307161020041, 0.10616567929962695, 1.6636658079534445, -0.13618936070901688, 0.07243706212858651, -0.9472077744730275, 0.5219610405531087, -0.8470430861883507, -1.177488097714965, 1.2434604281943695, 1.3975407829596296, -1.4309207608869086, -0.1558221865207312, -0.6512630617583657, -0.7290687216113811, 0.5152733116422641, -2.3595114280610967, -1.6052774277617399, 0.35428426550521314, 1.4875415958593063, -0.7841888048100197, 2.336027669010424, -0.4953367269783747, -0.8787818682467556, 0.7695845202396114, -2.5321239122945287, -0.44810406970440003, 2.260226631338183, -0.8780654507613918, 0.015979923325116736, -0.5691386244762248, 0.6060754235439968, -0.3936854489607823, 0.7969342297703721, 0.26214721724628937, -0.010518057969719493, -0.9001322196203593, 0.0943659621832766, -0.03816736449793848, 0.721589399500632, 1.217004629489626, 1.2833168243970015, -0.5260200198486596, 0.656638231269999, 0.5989106795317751, 0.1659232479155957, 0.364406640125318, -0.8685919574091027, -0.5131891025804275, 0.3759576560377138, -0.869982416258327, -0.7345685181989616, -0.5171796742457738, -0.8894703034997085, -1.0826478091988276, 0.7261075561744313, -0.706131682059633, 1.0589667993101595, -1.1152440995018695, -0.4933058762731387, -0.6712383697091975, 1.12335088041976, -0.09407603144337613, 0.7172806738325695, -0.7579177299008238, -0.609164835229734, -1.3553330327978614, -0.019650584704433195, -0.4803076283069569, 1.2519402070664514, -0.6641421031054549, 0.7043960474728573, -0.2921906301066324, -1.3676515621225143, 1.141874801312204, -0.015024811232282593, 0.5717555419933172, 1.1866504013111483, 0.9827490621042851, 1.7275770946339244, 0.432788235995093, -0.47813886421591933, -0.8714460344191897, -0.3178590722956541, -1.0286045457899349, -0.8025341000321401, -0.9411870219959466, 1.7783275330439052, 0.7255817354960545, 0.5150701229891861, -0.11226405829821795, -0.44163717594473184, -0.1375102757192428, 0.2762049181371265, -1.2497033166837888, -0.27474418761709474, -0.6384138322177773, 0.0025006347911576314, -0.4951545553209257, 0.7986018616075307, -1.660622472181582, -0.3974661297032506, 0.14195508782466876, 1.1742488499645927, 2.15632219900788, 2.3501189146758734, -1.1553701278196844, 0.7966594580004646, -2.1834227246100535, -0.691145872673244, 0.39958220554572854, -1.216755898801281, 1.2147647043866772, 0.6475726058839647, -0.3050369611353702, -0.36082108102321997, -0.6023620659122336, -0.8309067844131225, 1.2084845569673108, 0.24325632249018914, -0.0005784215469045945, -0.4626925507420147, -0.678649964720999, -0.27150483339996007, -1.5234460098622955, -0.9774107703754668, -1.4910310277195566, 0.7903692364559284, -1.4643865224645813, -2.4211016076172376, -0.9100195679190681, 0.7262082426269985, -1.0054943042359705, -1.500777460440331, -0.8688348040549531, 0.16029656369225695, 0.35352988537757307, -0.29194920862061935, -0.9828236038024252, 1.9220050485455538, 1.400174656314241, -0.33869047227217647, -1.016128789591686, -0.6596098468939191, 1.1432761980922856, -0.8707692499175943, -1.772284863316179, 0.1356924010752182, 0.6553645303577179, -0.07983117172640133, 0.1449619784129578, 0.9849951430194023, -2.076356254004693, 0.8728012372431501, 0.03079777593049583, 1.7281834262032811, 2.362709945312936, 0.6098483704805613, 0.7243884070840325, 0.8956610419016614, 0.29369615979985814, 0.4618061956689532, -0.11879885987832625, 0.4091757607417071, -2.2786897073448547, -0.6247729926926385, -1.3077696693750356, -0.7209553934014017, 0.2992554016895504, -0.7419808119512225, -0.27349200057360523, 0.5030962029782104, 0.5078594213457716, 1.8692666106818923, -0.28761598269501143, 0.43218338233503684, 0.2396978620703071, 1.338795258808114, 0.3649867693439435, 0.9999061228905383, 1.0635672960360585, -1.8606842678184219, -0.17218404794239636, 1.2040307377783537, 0.6574250653163278, -1.4812253208994315, -0.0170582056258441, -0.609287115241384, -0.5907400058854823, -0.34076482193730445, 0.7879699185151358, -1.2222599875487237, 0.03389748036349978, 0.9463913483379409, -1.0672796342182451, -0.506270084550158, -0.5237739778480014, 1.8997820918004282, -1.4043267718460093, -0.9199716837319385, 0.6046877389175205, -0.5181588907438721, 3.4474956927651337, 0.8175509219535936, 0.5405546279191125, -0.4062584258255965, 1.1178052087911723, 0.8691431128119826, -1.2312064629781365, -0.20229126984501603, 0.8553434412271401, 0.21621700648737333, 0.2653791661210467, 0.9264513733160266, -1.1659336494666324, -0.948815962845082, -1.866170928563386, 0.1605968107424527, -0.5730941391354524, 1.6610908786986758, -0.5102994863283247, 0.4862291698694014, -0.8880262098400197, -1.0996407788536786, -1.1026872898279598, 0.9316220945417517, 1.3282328751747563, 1.3254764619646495, -0.6396523522765016, -1.3907256888978008, -0.2788578604231624, -0.5677211833764197, -0.19074076031070328, 3.3177770321629443, -1.2338491844820385, 1.2239112871910003, 0.9932110431979975, -0.7005044755324946, 0.6201596788722094, -1.482305424213906, -0.6513123608903771, 1.8598847911090388, 0.7208855533271251, 0.8174526543777195, -1.134330817545791, -0.07194654199784922, -0.3252179452060136, 1.8952069586290123, 0.17766778608163517, -0.44695524379636, -0.7846907726938122, 1.8620527369297897, 0.5435115627741249, -0.4446802970229687, -0.22617275756319744, -1.1506465980729734, 2.120628606940419, -1.2980770068731349, 0.5487025003986162, -0.7099417203135552, -0.09835515549724476, -0.9743457775230356, 0.30435888123608246, 1.7516428594841185, -0.46544921540870143, -0.8497114521365112, -1.0339825534946439, 0.08115843671613096, -0.6066094336440838, -0.13047088702582313, -0.11201905921608454, -0.5019581461983088, 0.47490063643075286, 0.17173503092906178, 0.6431899649395725, -0.23872149766619224, -0.028721712652565425, -1.4369204429877465, -0.7043483767241477, 0.04360439333359939, 2.4960999423984482, -0.13722954472953605, -1.5304535066575236, -1.2346970008334854, -2.266949913807307, -0.4624922500096108, 0.022565602731663952, -0.257368300223374, 0.4356763930115034, -0.586857161879394, 0.06968815002457066, 0.37900863212459757, 0.42857993052128573, 0.3787327798855857, -0.7927822730097527, -0.8920108887781215, -0.08513462495764972, -0.378854974046106, 1.7074643949762172, -2.135423288869684, -0.017934502044962136, 3.406168768770632, -0.3666201942589558, -0.20624326083624842, 1.1189830026785335, -0.05763592033876413, 2.45889669000764, -0.012197041307958149, 0.7516849917169492, -0.07117390174891772, 0.3945233627729552, 0.07195894063173909, -1.8727680007027385, -0.5088098786201557, 1.464993202427589, 0.3449111247951254, 0.8494509722996453, 1.750328003641402, -0.18453310046988597, -0.5931209140159687, 0.8014787143841253, -2.686933468264052, -0.1791076550181655, 0.45165053042716463, 0.5775290716411025, 0.3295729377044873, 1.7846564254581045, 1.53571695111567, 1.3311200985616656, 0.18939885573177215, -0.22625665352238514, 0.00670673012745847, 0.3074008062852501, -0.2920609026154828, 1.545158085939111, 0.1369233115111857, -0.28730531011989763, 1.1047377340309825, 2.063848597546665, -0.38611367554412396, -0.5496375596740606, 0.658716342473419, 1.2177044932260268, 1.1754643008394154, 1.7821255702296483, -0.13443581273542884, -1.6366657813941712, 1.7791989418010552, 0.47287943204761507, 0.2846677372677902, 2.813014693165735, -1.018696411251144, -1.4259861740067266, -0.8038099773962392, -1.1182821619345513, 0.2801496864889041, -0.47159666033630393, -0.1261918572820217, 0.033625917152435035, -0.2951205793197307, 1.4398343939227665, 1.1894959769491664, 1.8501418087438086, 0.956905678821742, 0.014618718399019298, 0.6178045437029894, -1.4101911998665215, -0.0987004649563861, -0.329502482141717, -0.8688135009341061, -1.6481274773858574, -1.7718376142638643, -1.3768346295850198, 0.5659822119815847, 0.2425669838461522, 0.41620952444354886, -1.5710173931120528, 0.7417386987297616, -0.23851486543700182, 0.47062028183460747, 0.39541460589373995, 0.11174788170294983, -0.8088417376829332, 0.0009066596896233819, -0.20745942068486495, -0.03499567459563232, -0.08327198475097396, 1.1300405981040555, 0.9348827174613787, 0.7301012356968105, -0.9673767387337057, -0.5923963974647823, -0.3326058332617738, -1.405921031876885, -0.5013121080507481, 0.4372668690607546, -0.7266655582548127, -1.5721710704372442, -1.201782983516858, 1.2132056318163653, -0.26041490757239677, 0.5373785703708618, 1.2107520352104826, 0.7079229883060726, -1.3471754095333917, -0.7939169687464911, -0.8968784595700237, 0.4176607904866504, 0.3249685672047233, 0.24838805492190696, -0.3672873484804794, -0.6921188907852247, -0.4958325728592973, 1.367317839020472, 0.2524261198492061, 0.6579800168488112, 1.4839827513865715, -0.561632309015, 0.23652079790675906, -0.4903324954119249, 0.09912656547054303, 0.333666129561352, 0.22077326511399206, -0.194041077024394, 0.7531587527492296, 0.5170237486499323, 0.5436111298236262, -0.29364649759959877, 0.43615689634540583, 0.209522404413903, -0.4412538914508458, 0.052580690462736515, -0.4408963005006592, 0.019960962804798733, -1.624333610347512, 0.5003281667388737, -0.2887033795344619, 1.916753711583183, -0.2564454574318479, -0.38792744247312216, 1.7986529290207192, 1.9120910039247294, -0.21705046983702211, -1.1545294505661057, 0.34454168140199853, -1.565777190842104, -0.3039969187778905, 0.8988006272366036, -0.2879768579253691, -0.34422522533382366, -1.3750289943854572, -0.24719613566322082, -1.1210113987995936, -1.2391980530651758, -0.2252780643800041, -0.09421724289639898, -0.33093067100049683, 0.6278696550297107, -1.8800871143889077, 0.17009166575934964, 1.0200651816876847, -0.7529385991063793, 0.2987368142749938, -0.07648699416462335, -2.1502487223253324, -1.5876796588068274, 2.068182515581034, -0.2936924251847691, -1.388799522496814, -0.408484607372628, -2.0180274699762313, -0.032791860424978336, 1.0516193586445621, 0.9494869845586946, 0.995515961126187, 0.41412723052308587, 1.6089495844965989, -0.9474871099590387, -0.5815627560037311, -1.7964528440425043, 0.16538982992587942, -0.7319527488671081, 0.3692795793157511, 1.5611921907449, -0.8978325685014887, -0.2268078626149827, -0.5309962861055292, 0.07201516715432071, -2.434314852616728, 1.449757482527173, 0.4744077558142584, -0.5416351205869433, 2.2660916638054056, 1.11020426427447, -1.6829197968369678, 0.15082170348420298, 1.7621110917013203, 1.7401095555504877, 0.5392519410260627, -1.4235098831155986, 0.056463263594405004, -0.6963548682808837, 2.0415809465850456, 0.43271658564463056, -0.18797275721228432, -0.5568304246735866, -0.48796761821159795, -1.292810580741897, -0.5998570139754461, -0.2346242003304713, 0.8286501834765244, -0.7368561086985402, -0.44376875474220623, -0.0004908173861640336, 0.4208708674265662, 1.2071293877520475, -0.7552071013929652, 0.9236351835845457, -0.05837566001580252, 0.6951583529670979, 0.8306989177074579, -0.19610956093284193, -0.8372845710288846, 0.9482553703319297, -0.9169096044014198, -0.4409489430185798, -0.013881908859372263, 1.6772557940687784, 2.002776378754567, -1.1350981303051662, -0.949826787922004, 0.17216377194136315, 0.29599312680859097, 1.081321363447789, 0.5569746847793453, 1.6637836123504004, 1.6029894061563263, -0.8053048546223888, 0.09560804918091349, 0.013963859727831377, -0.4037770686515219, -1.756106996546998, 0.065952148847621, -0.8570639935152126, -1.2275565773734964, -2.215500214281302, -1.140728747827738, 0.8801581363850509, 0.63667062531427, 0.35899627766440534, -0.14874114920579462, -1.7926897922269955, 0.018698508958621483, -0.11005429828053218, 0.5678560114121703, 0.4524513169226536, -1.4481002752982226, -0.935303827291181, 0.32907480828411917, 1.815968946976184, 0.37263249289836775, -0.6280597716378297, 1.1694640247181916, 1.773715315343277, -0.2319843130014002, -0.7855412487214021, 0.6967377843326548, -0.7152907230181043, -1.3910123695349608, 1.082342797278427, 0.06955842538462975, -0.6289136729611903, 1.4125085287986676, 2.025590134435565, 1.746576388943919, -2.060685831545258, -1.431453126891794, 0.6734912677572197, 0.6401350535533352, 0.435400868244206, -1.0007141329301783, 0.6089290100942146, 0.4291753233203228, -0.9029293377217025, -1.1200409825086644, 0.04397693978192499, -1.10244612265024, -0.2773813968150354, -0.005352229277594311, 0.6573725024011854, -1.4662280689414051, 0.926974844165011, -0.6572916671523635, -0.6537352511089607, 1.55283475817559, -0.6251678518688363, 2.140988791886186, -0.8278147672247551, 0.38572633069031625, -0.6318610716818912, 0.7111190742818572, -0.4416437044439307, 0.367469145902725, 1.2495146354884694, 0.9353787074591674, 0.2988197956163671, -1.5839049003439432, 0.42330444919804316, -0.6469351862385775, 1.2095052233589756, 0.5263061454716625, 0.23899617476391827, -0.9285968325105913, 0.4003040718066842, -2.1561599667291262, 0.5269357871669345, 1.530666394156561, -0.7094783265215441, -0.7181957190268707, 2.1047567102187923, 0.6458685948033749, -0.30107511733828557, -0.24881581245959397, -1.801525657427965, -0.4859330788946545, 0.3473435634019159, -1.4936888563147976, 1.219914038937146, -1.5167554485466308, 0.8047069590125108, -0.9048546980985884, -0.27441611835118457, 0.4306425799188508, -1.7235037406979286, 1.354628016983049, 1.2737042271707677, 1.6191319296034328, 0.735919593851651, 0.4585966464736884, 0.5996372458926001, -0.11047101043242392, 0.3525723705153651, -0.14063353058666744, -0.6142313942856545, 1.130624877307917, -0.12102325767564293, 0.5442117526259592, -0.5403629622028528, 0.8296377545936948, 1.27214363752744, -0.3821121209536119, -1.6498126033020835, 0.9229483990313, 0.9779867268215527, 1.195364231090116, -0.039740256852109336, -0.6468504633660788, -0.1835463801348843, 0.18702699770560685, -0.6190596403307621, -1.7758304801107512, 1.508807177607114, -0.24109338697797905, 0.4631965911323548, -0.7186297277267051, -0.5932230289976798, 0.1649134830430658, 0.9217529559230451, -2.113107054187719, 1.495739110209002, -0.32991814907198524, -1.1285000187041665, 0.7977508692229875, -0.6324676669003331, -0.5207546968661813, 0.4941237199528515, -0.41245780364313256, 0.04939169628599765, 0.21857950385145597, 1.0775869197853591, 1.4174088220386398, 0.10745076413242229, 1.9652881178044732, 1.2144059061100803, 0.45170197162057635, 0.0005771812107460632, -2.027089220978618, -0.35269438817590215, -0.6067042421983502, -0.4462968771961304, 0.22169790172897152, -2.213860133799711, -0.25185231053466395, 0.18349468568397984, -1.234321257122067, -1.2767143227797635, -1.219748011178242, 0.803163868309887, 1.1723362156850679, -1.0511082561993392, 0.5896315959519233, -0.3026497563524433, 0.25857411751629744, -2.6379391495512574, 0.24254161271823366, 0.26758049299320774, 1.3736446383002492, -0.2808055784619822, 0.2722502138472599, 1.3403384783597367, 1.694634248553822, 0.6026873450172656, 1.62299765872056, 0.4762447251944673, 0.08810124426666355, 0.11117370308283465, -0.5050805874169455, -1.1338038691333352, -1.0207840815730405, -1.6422093576684975, 0.22368175843112467, 0.7426490550608933, -0.3142644472236707, 1.0103278730986882, -0.8660143027878295, 0.5697618899554041, 0.4264092604031469, 0.7240844437060513, 0.8266707092330077, -2.0643157683856, 1.9434979202863867, -0.6408643293198005, 1.6432896343445524, 0.9277333393877758, 1.3189945049352763, -0.25650286505666625, 1.965560992268791, 1.8213621585713746, -1.503533271861299, -0.19580489922245364, 0.191616368806377, 1.3181095248614239, -0.39674562813596553, 0.5356448376759921, 0.39311606885126577, 1.6224830274878241, -0.6639884519602309, 0.15546139261435685, -0.7387052243324294, 0.6289350238005109, 0.7282873752125394, 0.3165612132575932, -0.652281974301976, 1.5433942416056965, 2.47683597304532, -0.14916713468644752, 0.9501800034747293, 0.13587660177551125, 0.03613326393674803, -0.7237480311094019, 1.0949707620919027, -0.9769340341766338, -0.05921619047971073, 1.426825388255249, 1.6752120980115939, 0.795453306662201, -0.7755037047860419, -0.15461646907210536, -1.3890767080063884, 1.0529967718142275, 0.9976936151350384, 1.332735503169351, -1.7108387910528222, -0.10824453003093894, 1.2354760527115538, -0.8904457098799401, -0.8169754874480261, -1.1370577022172665, -0.6071774956226643, 2.0511476913856406, -0.7830498896948143, -0.03676275814229943, 0.6038293322962383, 1.472165824690626, -0.7056222632601199, -0.0467107787449815, 0.18807094004824762, -0.42216692790377014, -0.13855549523146243, -0.5433190954101608, -0.9226064296533822, 0.42507353110252416, -0.8172819525228391, -0.7809729727827792, 1.6446573868197591, -0.3656165913939135, 0.6023089914246612, -0.5643132881556219, -0.9633738886349973, 0.24632151425551105, 0.8204484828263375, -0.16201666001698542, 1.685912359362119, 3.06700252986585, 0.6617774942176655, -1.0040453137475622, -0.6172994137123726, 1.6180226180054886, 0.8429893215764661, 0.025460594268897623, 0.3479450777176482, 2.0078238030698636, 1.3393361998974052, 1.4317466616428682, 0.4579330597709827, -1.1274985211458544, 0.9767244079433385, 1.2587933112859289, 0.8476731372760178, 1.7628714799535847, 1.3049896091031608, -0.36150957824597807, 1.5030525940981552, -0.7801386726592521, 0.1513762139476246, -0.35112463351229073, 1.837739007328147, -0.015158507511135831, -0.2991192109089548, 0.46657766925371513, 1.420943752567541, 0.5809320989641804, 0.3551940772843608, -1.0999426989251082, 1.1041690429383328, -1.1560021403810814, -1.1062867754981813, -0.7827461172580052, 0.7959395609646354, -0.18153071461918635, -0.24116708825317848, 0.3990519149808553, -0.15564993281113088, 0.4372657274738833, -1.201873278369289, -1.3700180959347181, 0.6920833223124919, -0.5312294981487146, -0.10902101632296987, 1.248118109915001, 0.20872088585274678, -0.6083934186789268, 0.7423053567212846, -0.34444959772498385, -0.9777483292652849, 2.223789705043405, 0.6694591532307673, 0.28847229101563315, 0.11229000519845835, 1.6408969472159909, 0.6625981775877482, -0.1558226529617167, -0.7205611597593764, 0.24962408033917283, -0.09569261310086963, 0.9771306394522535, 0.034636130743337525, 2.075939890459903, 1.3566617676123918, 1.0270565232586033, 0.7237763615783379, 0.09591731457863975, 0.6889143877613391, 0.6425343157670212, -0.7279578424760957, 0.6830117763416009, 0.6185085759613994, -1.7337209714531534, 1.15745181629871, -1.2081895706309593, 0.6586845642819952, -2.78079601104039, -0.08882181771534245, 0.2339849515986858, -1.2018551498395114, -0.9508896526834771, 0.039812401385598245, 0.5873572672607883, 1.9338021854764944, 1.089671633947238, 1.8393226614447074, -1.273327662575822, 0.9223415325858076, 1.3719765295674315, -0.7945878809532562, 1.2787415555120119, -0.4821841102534756, 0.607473797642488, 0.5683312485637652, -0.6195875521757297, 0.5689569196095314, 0.8781962552006474, -0.8911113251956342, -0.7683616776084702, -0.47162079773443777, -0.03191869811931289, 1.022293595012591, -0.7946302231549325, 0.6032417486934556, 0.4980096428874349, 0.48928276635174567, 0.5660281554370863, -0.12191577116310535, 1.5524890878524804, 1.4946073381353722, 0.48484746551641333, 0.44908973109546657, 1.4917081663181815, -1.8614061954392773, -0.624587572177733, 0.3170694850496892, 1.2875393651128213, 0.1176439522089831, 0.46769590500613, -1.1477561641710432, -0.4888512541791814, 0.29087939445256583, -1.156431660359815, 1.0444105776920733, 0.08884650272073365, -0.48051165567394033, -1.0531656839887626, 0.02766324341023624, -0.10527902120387268, -0.6628173764404989, -0.3033610094512978, 1.7048899457191737, -0.31898415130533375, -0.46058272586248855, 0.21062683777699748, -0.36812460265029606, 0.33652676986636315, 0.3236159180652725, 0.8947763791232438, -0.046623060723555695, -0.47512302722136024, 1.575370258034113, -0.03761268839633734, -1.352386595817521, -0.9483356430836982, -1.028716739224381, -1.5638814718009917, -1.7210422812237611, 1.4945995510345567, -0.5268796561342607, 0.3566423182164152, -0.7167872516194996, -0.4428217812148648, -0.46422664555214305, 0.9369918534027788, -1.7404902110705263, -0.4324428804621579, -1.3367051291338052, 0.25810834246088477, 1.398762352581004, 0.034791693460034315, 0.3981107862143589, -0.7723477433968918, -1.8381312799299088, 0.11133077808104638, 0.9689358555384477, 0.07669974844112153, -1.1946344297396054, -1.8841567320644628, -0.20719681719458505, 0.9002601404675714, 0.2333724929750161, -2.0084680514191806, -0.7270727909976298, 1.0506326108080541, 0.5684322570795058, -1.6364404568511535, -0.07181480501491022, -1.3259578694687586, -0.9984287239140569, 0.030979117600469074, -0.08402038714892086, 1.2942189441837226, 1.5082843130642087, 0.3410030049413046, 0.0057889375667351094, -0.2432666473105903, 0.3981939687558286, 0.17119383734576185, 1.0460524144567587, -0.5746240339508544, -1.0349560837804677, 1.0184000283100978, -0.09955687084553429, 0.35200443059829245, 0.8279914080421767, -1.0798679506403541, -0.4390700834752314, 0.3680381824722795, 0.11464668364155528, 1.2353463697524734, 0.15743561049159477, 0.9256072483796912, -2.1849581690080555, -0.065984099161594, -0.4650474770641444, 2.143907078190805, 0.8816491221888422, -0.003902815411469966, 0.905199590933292, 1.0026700985921706, 0.9885068182490291, -0.9605994188901047, -0.009364231583693152, 1.7276268792428473, 0.22778147331011792, 0.7438423244369328, -0.5870832701281387, -0.6875243358298012, -0.40990083463094634, -0.8747836211413581, 0.2753721538148257, -1.4065218105605355, -0.33899470403862797, 1.4473751097143777, -0.6038191850464151, -1.1385745044486548, -0.4816987181224384, -1.3445513835383933, -2.5957409768073245, 1.260664230909938, 0.2240479886640547, -0.36671037716186844, 1.0528037049861176, -0.5193311511183563, 1.5718955134357182, -0.8159713739539352, -1.4616528319169775, 0.18574134153247543, 0.7170502881582332, 1.088677730777631, -0.33916355744140897, 1.821890903560027, -0.6246604296669839, -0.16633856709516748, 0.7274091035559674, -2.4715771243751226, 1.2879637708344551, 0.8125696535679003, 0.02150375939915354, 1.822498098193285, -0.17001990885000728, -0.052205598859868016, -1.0839349618672527, -1.2509817722769654, 0.9570579186595424, 0.37032567852749, 0.7661708667508003, 0.6372500799705507, 0.3841808718708592, 0.5735256411790288, 1.485071764115552, -1.921358153981379, -1.791669964880979, -0.5758839644664974, -1.4532306051766954, 0.1160156247366876, 1.0767435169705282, 0.6888533485394165, -0.301534039019897, -1.0015286896665496, -0.5136584805608818, 0.6106885504696978, 0.07238255324721113, -0.20658267805579636, -0.9803371411601391, 1.8558602683726249, -0.34684234783223405, -0.138705499081124, -0.7313561090591182, -1.0044446714902608, 1.3591013677668105, 1.4942643445597592, 1.8406160691146698, -0.7615340045466905, -1.6017596501358158, -1.3610928866213383, -2.076656356422838, 1.203987441260602, 1.410835808709077, 1.2990481267032234, 1.4153255218561738, -0.6573925555742512, -0.42027115973485385, -1.5213565790072734, -1.332033491041734, -0.33102623775307954, 1.340110048415235, -1.4261107490492029, -0.5232145959705184, -2.2848088931420065, 0.8902512659612491, 1.674110486119981, -0.972793451864786, -0.07743011620298457, -0.4913319447167086, 0.18282418791198085, 2.2772797990691647, 1.5324980852375782, -0.1815847476714992, 0.4617271801485095, 0.9632684685006433, -0.14506424114808303, 0.5103962896847007, 0.3177090775637023, 0.03191303725869083, 0.6308204756962924, -2.1211644723131724, -0.02930485583633999, -0.13078780011810998, -1.1038727471781569, 2.050182109550436, -0.6470129923265721, 0.4345613421962533, 1.3484671879831278, 1.4888034597366457, 0.8720229260359057, -0.7254503276995763, 0.8285985659333751, -0.5917126528319241, -0.44837495229842944, 0.12722050362405046, 1.2305141892155638, 0.7151072657003036, -0.40010337492322895, 0.413721469429948, 0.19376914373215087, 0.9920291161315633, 1.1147082449222048, 0.29682676074294506, 1.2656905677375838, -2.176072940640231, -0.3306294574129653, 0.2921479170003794, 1.154104526108482, 0.5825126289522653, 0.2701534137189382, 1.1343291794639416, -1.3987613199365359, 2.0374743389978627, -1.1598317103172542, -1.0004947044013306, -0.6198007001117833, -2.11493035968152, 0.6920712069054653, 0.5404300549763246, -1.8568976733896805, -0.0461425798346585, -0.26684094546500337, 0.3621050864222061, 0.44082885192374405, 1.0572972351619618, 0.7193849792885922, 0.6697172441294476, -2.372309233730456, 0.8397967248644236, 1.6908321897138245, 1.0213495345802792, 0.12679064943416948, 0.7409940265311785, 1.0718527529100068, 0.7458811584103926, -0.6468105502000671, -0.869284801742413, -1.3054611274711465, 0.276232984051142, -0.5563759421336263, -0.7791629303501022, 1.3319015834176797, -0.22703800554331624, 1.2742399221121468, -1.0311758922985133, 0.4955890468754583, -0.7995854873426, 2.06240141354978, -1.1343231763411903, 0.4563870076575751, 0.9814598643661121, 1.1276215638225833, -1.9695365549171249, -2.4572973110469056, -1.0220519870845493, 0.018064999514862144, 0.754060062389077, -0.2739183590275094, 0.9986033617806298, -0.6518789292799052, -0.5139154643660516, -0.6566439248016585, -0.34300581824604537, 1.1932986357592312, 1.607092129619061, -1.8735264640919256, 0.5079171532797483, 0.42254046476492185, -0.09860764477494396, -0.25875806103153426, -1.625666094056695, 0.8839111136542974, 0.6302719139868384, -1.1816059491920998, -0.8770360698657584, 1.4760791332584298, 1.0455690189454758, -0.3269341470162602, -0.06246586753421959, 1.301362501195787, 0.06393518361722653, 0.13819751107759315, 1.134165955447205, 0.4153648416666165, 1.9376580364864786, -1.781805734225342, -0.7508280591488423, 1.613113523011985, -0.7972871839181324, -0.8161020873770328, -0.4925971310656774, 2.2419857626757587, -0.8310381295604786, 1.584396674715407, 0.3588891143774135, -0.8422775912109417, 0.8195938255125932, -1.390080439023078, -0.26479485589503565, 0.0373559919191076, -0.8618126688825368, -0.6148341510806443, 1.3144782369860601, -1.413259141058041, -0.1566257320081451, 0.4571443687995678, 1.8139801219827336, -0.8729416492214658, -1.2021446452680054, -0.18287439285074464, 0.7151367410023329, 0.0724635819839709, -0.394150602661191, 0.3086697829408736, 1.1001489018141712, -0.7541391904025803, 0.6506253211085398, -0.6789193350439231, 0.7459004970720945, -0.8583929015402073, -0.3751247341071256, 1.1153679055306462, 0.3243622406515602, 1.6086260544405733, -0.8973214534592038, 1.4505614500774051, 0.6390192112355659, -1.097567907692405, -0.7789509309904787, -0.010118223620103015, -1.0067592408859265, 1.6858550771091214, -1.375924608815696, 0.9880995543293336, -0.6445948416979022, -1.4508885825739297, -1.4892296911532181, 0.33872966509087593, -1.308217262167615, -0.6692014546820036, -1.938665276478024, 0.08570043587182144, 0.3367745011191109, 0.30216625220261106, -0.029139117833403446, -1.6994515863979083, 0.36168092874820507, 1.1666478841476853, 1.3588702019634644, 1.3731126700876528, -0.6990041625840486, 0.23245328885846092, -1.445715944658206, 1.3926227501034782, -1.1446072903750102, -0.3816077510920729, -0.8630891545947001, -0.6716403178792367, 1.4677584224643059, 0.5204410421666292, 1.8760662842613385, -0.7032982984900227, 0.8890929266772621, 0.769892531358705, -0.9255303897325509, 0.5230236705061742, 1.3209816351528552, 0.4721963640474325, -0.12533254753908293, -0.15115069978271048, 0.918270672574204, -0.41451142025139015, 0.06983434930473358, 0.4428019418512945, -0.12167714338407565, -0.6749483178493708, -0.4005731600700831, 0.15795477733282282, -0.5361865265613242, -0.00765546636667677, -0.2486297625885688, -3.616244826516541, -1.240093138147424, 1.640939453974592, -0.4967717054593357, 1.3928570054101417, 0.3488571494425995, 0.29196792037545233, 1.353278291959696, -0.5810568006549722, 0.2576064001530712, 0.25150655593518184, -0.8098065870783787, 1.3128640032531393, -1.1852909158053921, 1.157878804816697, -0.3811363408541145, -1.8623261901283767, -0.05395662589269566, 3.0611733845656395, -0.054354803805188714, -0.24720917613413934, -0.06936303775634156, 0.04206641378767387, 1.252770550122401, -1.9223819765041372, 1.202712320404443, -0.39889697987982026, -1.0055963360448883, -1.6867607272487752, -1.0277579618997654, -0.46112981399687764, 0.3263146874682954, -0.5693906145441722, -0.3589843137912688, -1.936031194784913, 0.249550573252273, -0.10765873957312352, 0.8349991429830456, 0.7108618513078415, 0.29222682765828795, -2.1165124622742204, -1.8483066026640207, 0.07816241030036447, -0.08022928270577098, 0.606806535748979, 2.605058213283425, 0.42397577027479655, 0.675291066744399, 0.1948581130574186, 0.053796140071209864, -1.336800515204708, 0.3677730246474584, -0.9271093020874797, -1.4990654058428237, 1.0896473253676273, -1.5815367050307532, -0.7067595339381431, 1.6209549425055911, 1.3752140381174898, -0.6133729043121271, -0.28995254504887596, 0.21775129927781378, -1.4513065159005456, -0.5519419806661555, 0.5200969859479287, 0.36284766593900053, 0.5647216927706189, -1.1834916327999798, -0.905378910739902, -0.28194417652034437, 1.527761638614743, -0.785705814458699, -1.6162077232566219, 0.9782101083250803, 0.4292062014732737, 0.2185071569653127, -1.2394667444809362, -0.24870697467690292, 0.4573643259259206, -0.25535084881820336, 0.4777716036036974, -0.32651136607182046, 0.07901046926896166, 1.2886090146135347, -0.3605679983284582, -0.39764667123450276, -0.9954780884334878, 0.2561807897177513, -1.0843685493072819, 0.12986086111190515, 1.4638160519035035, -0.7926601642106428, 0.11386912747556614, 0.05064223484110245, 0.9535530862878486, 1.581370038498723, -0.7467107303747241, -1.1294768284497914, -0.6863173758499714, 1.7425897413780096, -1.750080716659231, 1.0200201403878384, 0.09216683237316162, 1.4445890756559074, -0.7575386400758898, -1.0267595764809776, -0.743203277087611, -0.3617902098106558, 0.9807379610674246, -0.4494919815199539, -0.139645087546484, -0.45590558967109956, -0.8314871492327359, -0.4016237646146306, 0.15802207902328172, 0.6808297404105077, -0.4004107535270797, 1.2013287338621885, -0.11531924092553854, 1.0876986546066656, -0.5880758813860446, 0.37634955414789306, -0.18527094825241655, -0.006937209118528061, -1.3608513191181555, -0.5197236573250131, 0.463408611045455, 0.1895096241785028, -0.8348270288277571, 1.1310636505387424, 0.019320381958476556, 1.2936501822037318, 0.7753045815203952, -0.5174529713073618, 1.6303894518830946, -1.424798288107138, 0.18463910494905925, 0.6357892633788328, 1.0191286705659799, -1.0776572234997361, -0.058071070610180346, 1.5263388569653553, 0.024994765804824147, -0.5151247779921773, 0.7487573413181321, -0.5718694030200041, 0.035058228455775144, -1.871894006094185, -0.6613196865194579, 0.5769725286701373, -0.7367371645074806, 0.6323524439681041, -1.6036518992044688, 0.47863453049805044, 1.4441827711806823, -0.9735425062205508, -1.4741086101976333, 1.2814696296764614, 0.3473471655658854, 0.7910848434880573, 0.30046251963870085, 0.08522935573665827, -1.403980406004003, -0.6146482994249365, -1.2315289364819961, -0.8977027776830132, -0.42433779835516944, -1.408345197598874, 0.42207025179163454, 0.8461892348632205, -0.2490679239134021, 0.8773618510991119, -1.301799608995058, 0.2625572138302102, -0.9427058228766325, -1.3881643437611735, -0.23483236113230144, 1.0207985074811297, 0.7713401976605815, -0.006814522630420675, 0.18837621181964065, -0.6573210575280002, -1.0449722114717626, 2.0186122729964926, 1.1741037427266254, -0.6846815563905236, -0.49771622437764096, 0.8746192365726885, -0.5174181206012595, -0.9476378494963715, 0.056782072073773386, -0.8790965213306376, -1.5574761449522962, 0.21609065407695296, -1.8626818101777476, -2.0961349093879544, -0.33105364449783375, -1.1589669416210095, 0.15132243302789938, 0.8521605677636602, 0.7742911410807676, -2.538589768176732, -0.03253742612676552, 1.0422979672486086, 0.3326917440450766, 0.3621209495718994, 0.6922554384196643, -1.9166699100712044, 0.2064510369320226, -0.6239270633688702, -2.529204012749036, -0.17706345246737432, -0.41998189317162704, 0.5896270638633384, -0.21469214077392976, 0.44731860905074394, -1.0540791458678187, -0.5301057190296372, 0.5084134433716269, 0.4554630839524932, -0.4084554473716878, -1.3027980677359505, -0.4161422881398393, -2.460697055036825, 0.5421086409579616, -0.8932238012324163, 0.5048363560164861, 0.3414417673370007, 1.5271676147265836, 0.18977908394646267, -0.06629069340678465, 0.7729936640614463, 0.34281900309511515, -1.1555368611628043, 0.296537366216279, -0.3026417513931259, -1.2210833218836539, -1.4742411434507334, -0.14560303293072532, 0.046983698579071434, -1.3665590045394855, 1.471863012837933, -0.8451617487867245, -1.6332734431577842, 0.2361034586065518, -0.3475342578604577, -1.3905060397760676, 1.811073181558942, -2.2845558148071, -0.13340769738466304, -1.5563678592094914, 0.9627065829455164, 0.15321158202821022, 0.8334286814456744, -0.3398650955417231, -0.6376838625799586, 0.6081958963575117, 0.9901982501221922, 0.35623705928968014, 1.0842624515579264, -1.5667536820401184, -0.6257925557519216, 0.7682912494990076, 1.1173074404160004, 0.14496376455100546, 0.44695349034542475, 0.050433113577438515, 0.35098947793500807, -1.3418569139214052, -0.10875592605323897, -1.0810666579003045, -0.7282751936534643, -0.6262881610175278, 0.5293884091632937, 2.2253130444496216, 0.8586917015117914, -1.4697058573054282, 0.9362446576484363, 0.79863673183808, -1.5602090121872974, 0.5783162278332646, 1.1951555259879219, -0.6532108007553509, -1.2992896271871042, 1.2611098853442282, -0.7545827594608056, -0.36198900956783775, 0.6447035193294413, 0.8194948647249047, 1.4598549115209354, 0.2836464927146788, 0.5211686346384714, -1.3692385165909204, 1.4964190701230657, 1.2462956506064462, -0.5556592512747162, -0.17330930073486658, 0.6290502769928877, -0.5802577510870809, 1.0746072114312424, 0.8485594404128306, 0.6119113473927877, 0.15531221334147638, -2.2593684559557246, -0.14329578244546745, 0.8696374882353123, 0.34178117698250476, -0.31084462878259445, -0.049667590380486994, 0.001024958794340004, 0.01745826015650065, 2.061655680618017, -0.20091142427273523, 1.62999490749593, 0.30641413633727077, -0.004195755687396656, -1.0735391094616389, -1.447030660023786, -0.3278301461019186, -0.8514356912425605, 0.19058848286262964, 1.4142801306207733, -1.3920535728295902, 0.004210702344412748, 1.1950148433456729, 0.7845203905386896, -2.7992162064438526, 1.1078334261149487, 0.8838498428601247, 1.7303935529284833, 0.10814583704412964, 1.058321853508688, -0.35250711745478874, 1.5707754718355267, -0.993616522481608, -0.770819120513824, 0.7353602889754229, 0.8538659984117739, -0.4836215067602598, 0.9881224827101989, 0.8301051921559156, -0.27937299969585233, 0.5075977458329036, 0.16086045997109896, -0.3724907451950873, 1.0407276314629512, 0.1035243161974872, 0.17829226436911383, -0.29302661250863893, 2.355379772816784, -0.6339438086298942, -0.24547841579497692, 0.553142239737994, -1.4447712869600169, -0.10581740020796536, -0.4720635039991762, -1.2665210758120529, -2.6540996410436106, 0.11891915476573794, 1.0996078153848807, -0.5185221739427627, 0.6938132809945982, -0.9727316982881665, 0.8949816226916981, 0.9129734868959687, 1.3070889916855144, 0.7867393096524915, -1.0714842437075964, -1.807462368498706, 1.2014866344567057, 0.6229076512220945, -0.2816212687484363, -0.7731735216366021, -1.3091664900629916, -1.1196034509026367, 0.8146717603062831, -0.9327486743061679, 0.24590379716684088, 0.6888572155488026, -1.431856899763485, 0.9498709387195441, 1.6027755842182616, -0.5506101111181769, 0.44713349005542324, 1.0023339789202066, -0.5075874816754351, -0.04025364308925709, 0.8784821536444274, 0.354165616551781, -0.34496828558498516, 0.252765632632188, 0.5060403800263849, -0.34941054966462454, -0.9684600861287586, -1.05385401691128, 0.21414179532614872, 1.062335579748586, -0.058214043298022156, 2.5847749332602, 0.09989507970317545, -0.51667585170615, -0.08646896041984872, 0.16087228538156456, 1.7896888081081215, 0.41312510613488473, -0.610273978130261, -1.1234803559227962, -0.8663998447283321, 0.7280800945640448, -0.6060289812671181, 0.3054072741705922, 1.5977020899206693, -2.0886778227205594, 2.04718791252273, -1.3944739484632676, -0.07769395725697413, 2.485647389509429, 1.161056885783272, -0.6422446354858306, -1.6866627876101177, 0.5835547255432384, 0.32799163478787424, -0.8074432428697494, 1.4534847934773354, -0.6520860152162103, -0.6257637502682993, -0.35347806043290736, -0.6064010457787304, -1.609303253469617, -0.44956874651117795, -0.5932212618722055, -0.7980109810319539, 0.23801683948070443, -1.8078078993421411, 1.6110932188650129, 0.8306217769227588, 1.5079696883540965, 1.7052265295882478, 0.16835781469295008, -1.5968498453112046, 0.05419468096069937, 2.080737900190375, -0.7813997319688913, 1.1723324732423348, -1.1791274655949502, 1.522909575863655, -1.838129548833068, 0.8885460864971125, -0.3112079672420133, -1.8009636793346049, -2.1219812182033895, 1.6211488910349103, 1.7647325336720354, -0.55392401828593, -0.18536494230320436, -0.7559434902011402, 2.02035055742048, 0.10236207599063739, -0.09071516667529367, 0.87002060394994, 0.20356887701465726, 0.11649757853760016, -0.5049684014655186, -0.878538580803181, 1.219994070236117, -0.4591311530517561, 0.7529292801127621, 1.8466624703615426, -0.3119279752724232, 0.3618651906707751, -0.11931261167544333, -0.15184679830362122, -0.08142618606573834, -0.45188168827767916, -0.34435155003796397, 0.5447850111120647, 1.461016480023341, -1.759834086257933, -0.20387130619003158, -1.1061309579704512, 2.047571834848655, -1.3625301397704557, 0.03847861193968079, -0.41908164540912235, 1.5267142534760538, -0.8074216676664461, 1.0942537068290124, -0.8589893343576649, 0.02880708722030125, 0.07541789139329211, -0.8964204184288705, 0.6104271933326174, -1.8896306217640972, -0.5715779960963441, 0.4862407608854612, 0.9376060820449048, -0.28981493648460016, 1.0601815230005722, -0.7181795974169856, -1.4223291833641392, 0.2547235818307659, 0.4253120949833701, -1.1337994252104073, -2.0662599115172653, 0.5696294165103171, 0.4807972440746681, -0.3334732608283706, -0.7907307751741902, 0.3401662792087062, 1.3672741814009857, -0.6528412434007834, -0.984898049801574, 0.44178370023062646, 2.3589933091709563, 2.2492879960896084, 0.6098625542626688, 0.34842243659368244, 0.21742125464736634, 0.1286412370033291, -1.7506912234691885, -0.33887856780628234, -0.058130587212581325, -0.23849827593955103, -0.588672020705869, -1.5085222292073164, 2.20745259723818, -1.1395828435290725, 0.7867474162185699, 0.08511682154742599, 0.530729446677609, 0.3021529756635018, -0.652536121488528, 0.4832898322611189, -1.2687776942664193, -0.9031732659236469, -1.8365049505188262, -0.8401997607017293, 1.1672764414566084, -1.0278570477914484, 0.17559902453769902, 0.42560541758942194, 0.8184067330416113, -1.2701487841608123, 0.49835521087482404, 1.0547915487532276, -0.035297958124361, -1.6367117659354635, 0.9350268770492959, 0.4735793365879849, 2.066401169980402, -0.33085780821604055, 1.0662489588346322, -0.7236136907093336, -0.2366005418237537, 0.3118694011837782, -0.29251836991064384, -1.2745280345294823, -0.8602100327750805, -0.07780553709972224, 1.5088601684612821, -1.4362173161200273, 0.2828495091475873, 0.009266781617777662, -1.1328914140136568, 1.710880865859913, 1.0311326194819417, 0.6707102828626799, -0.5461790439353942, 0.9711793150927074, 1.9233090609717092, 1.2077222840020747, -1.2383233071901971, -1.3746370296756663, -1.6085273302015077, -0.22203922522726993, 1.9226056756793166, -0.5048076251130126, -0.043963810041906456, -2.2117506504974447, -2.162347704092384, -1.1445904695784506, 0.1940339202350278, 0.7444904216395526, 1.6010916611258923, -0.8213769209241042, -0.6593728867487116, 0.23738288144814607, -0.9012431889469893, -0.20122570212640017, 0.22508102515092662, 0.7605771798197924, -0.6197714222289087, 0.461487533016861, 0.9885369669648936, 0.4830310122781418, 1.3010866809132744, 0.07210674722777907, 1.0626862705466873, -1.5609889694409194, -0.6194981237001738, 0.4112577930821558, -0.7601267361673396, -0.12173258785663424, -1.4737831888237733, 0.6191588554531684, -0.562184039487719, 0.8796180040454592, 0.28668491714510613, -0.8404839317066655, -0.33008069949103136, 0.7105602568018861, 0.2628866171785153, 0.2713271999760396, 2.509721984172877, -1.1030272605184115, -0.8131357663444699, -0.7012590434919239, -0.35370856166896436, 0.4272160752827559, -1.235928055595834, -1.4589951124432525, 0.10606974809893534, 1.0490144034143574, 1.1401676515714214, 1.5602518232258726, -0.1316931030152692, -0.5588298639233481, -1.1798315543869777, 0.25423148693344516, -2.329708589685058, -0.1611008305495774, -1.293954740300037, 1.5638669636681488, -0.7457053375145688, -0.6696185160915793, 0.4450622193871014, -1.820015514626756, -0.6841212925165058, -0.11557789598708554, 1.151756816890297, -1.3994069725233815, -0.9225837945409925, -0.7015293372430998, 0.14557157851798416, -0.6488915404249679, 0.5181013615346238, 1.1101965867010084, 1.1400621104262982, 0.5669351554200318, 1.628655977372503, 1.1169088997424437, -1.1027247239157423, -1.2154057454628897, 0.30413440003257725, 0.4408163359631587, -0.7670250649875356, -1.4324664872243593, -0.10094123058942654, -0.8075856256378251, -0.09621481510992093, 0.46221378683028386, 0.1667616956765533, 0.027729684273670476, -0.6491132407601561, 1.5228201136451585, -0.16562850009431018, 0.5950528675438397, -1.0419185868083787, -0.5985193479741547, -1.0738447527439543, 1.788948584745946, -1.2325612333443072, -0.836914713668649, 0.5239932036193977, 1.9161683660322844, -1.4272699417780046, 0.8293178842537923, -1.2264705966483058, -0.04597990324972495, 1.8906549668204278, 0.9421047560257181, -0.807010114883981, -1.119951155966275, 1.1821055005631875, 0.17397451011234072, 1.6568916173993327, -2.161361822163266, -0.10893182605495363, 0.08045279279873387, 1.9409424148662304, -0.1767614344743045, 0.25880349272739006, -0.12417094682887361, -1.5666613380497623, 1.8891773441773552, -0.04669787176283761, -1.399980051448174, 1.2931674090867675, -1.7441216997483413, 0.6135856643531975, 0.5904282098582874, 0.8714988428569002, -1.9693756516575391, -1.3439533152505785, -0.17955195369335797, -0.6390092243100048, -1.3386346301502519, 0.1956419307017713, -0.154811442924692, 0.6838608318277294, 0.09583878264956507, -0.9490178938632181, -0.42298733389277077, -0.9761527761546062, 0.5886653092379591, 0.20399290647527346, 0.5158621290601251, 0.3361637150433332, -0.0840611891215317, -1.1346435642707655, -0.2831471438083741, 0.7532893387345917, 0.26676009847445914, 0.4195057830533126, -0.37907311341065303, 0.8138441501785322, -0.0017713213496273143, -1.4279315144128575, 0.127297463548603, -0.43860049222365943, -0.9207821659942775, -0.6982628146742288, -0.47737501108118235, 1.0973524489753268, -1.1631704471876354, -0.6448462257352514, 1.2478277285342685, -0.9535748485371196, 1.1010957888549868, -1.5176019318982594, -0.3678275742008581, -0.25822269433889045, -1.461390865704153, -0.221189396941947, -0.6079997861419684, 0.2605821179006874, 0.8907214317482947, -0.2897775819027704, -0.09849861993514802, 0.6885256728955403, -0.2791053970836441, -0.6793666542903476, 1.249783890153001, 0.4796806532708648, -0.9226697694236917, -1.176722232598049, 0.14355110585703812, -0.20129982865454085, 0.22194994994725567, 0.23146865620783758, 1.6694377251663244, -0.5389819127967479, -0.1443175790084589, 0.41087999419331056, -0.7640243887629617, -0.7180711780751314, 0.10517217800088413, -1.3828305275303805, -0.06758378480990582, 0.10006348512241166, 0.45434785513478976, 0.46311517202542646, 1.647219601375317, 0.0963437586410137, 0.20541837056183218, 0.08236269987589594, -0.6005548745768965, 0.9272948375646727, -0.24354050181310793, -0.22033680012834594, 0.9695271692142623, -0.29948851492748413, -0.9527439222312267, -1.0880912464935015, 0.054981156346117374, -0.5660396507329793, -0.29717856392002556, -0.04083288515295536, 1.0338668347332045, 1.6828432679771586, -1.7998106503968425, -1.4527159141395913, -1.2407599011227048, 0.19265871886562935, 0.7261815748689618, 0.2928989175106737, -1.34361075336494, 1.9618314891849296, -1.961477519039208, 0.6067798642374093, -0.9398734941624577, -1.4160404491189216, -0.12160407112688297, -0.5045820104317634, -0.5196865213591367, -0.4480735859571536, -0.6649026362109189, -1.0066499489098275, 0.30874446046730514, 0.2423808558861513, -0.6475131446929849, 0.6479427567431872, 0.5213927711113006, -0.2948202171449642, 0.2634627733105601, 1.9224975768533579, 0.026976636733625492, 0.30952752417150853, 0.7076376663118469, -0.9138103973636641, -0.30889227644936884, 1.4540261677025847, -0.8221389943598081, -0.588038234461568, -0.5244820252135467, 1.3378716219526687, 1.2530385228003316, -0.9106010889982076, 1.899332176169294, 0.5764950939705556, -1.034395434153627, 0.9810008154794896, 1.7922435643746273, -0.9257763652451753, 0.7429073598196138, 0.2606189680155636, 0.12852481855920034, 0.16605883874954933, -0.43900022720898685, 1.1360090499605335, 1.6430054310046425, 0.27513668932269936, 1.117611053039336, 0.41392188096741706, 0.3441306717260009, -1.4644211330145278, 0.6926562526915562, 1.068458625377813, -1.3700696100114267, -2.0027194859651005, 1.2712147826101827, 0.6108022121551525, 1.827883401988348, 1.49682253754663, -1.498807717939337, -1.2860024861530703, -0.8552188536617934, 0.3369896727544974, 0.7245355697839364, -0.8214315460621029, 0.44109611654147907, 0.5705572269774465, 0.06590179873448668, -0.8354277456713564, 1.3858886068530871, -1.2653282493985, 1.4925214870472732, 2.3669803699198972, 1.2467715006725173, 1.041820098630538, 0.17729372155344567, 0.14833291807982577, -0.5762449399777807, -0.20913684813592306, -0.8840313111682832, -1.7256511687931952, 0.4464567604000436, 1.5696072864217565, -1.5107411614291475, -1.919045525488347, -0.39284231136024667, 0.642261212971914, -1.5566853652081156, -1.4195908701604916, -0.19518744408626176, -0.062796460600534, 0.14773366666584706, 0.5933124208465305, -1.257281067913892, 0.46191592051764446, 0.48953706269055897, 1.537140159071271, 1.8001612651602614, -0.09035661359187494, -0.08008953380065702, 0.5550625182987955, -0.6192862077789711, -0.6194490923758899, -1.3842131227703087, -0.6442854252008431, 0.004310308986859974, -0.8192859105507256, 1.8446971502738685, -0.6822008865400492, 1.6035130190910534, -1.8234460501370229, -0.2161013013225925, -0.42930260307085955, -2.1992152335223514, -1.1645688132881276, -0.0027305349396484877, -1.3222351936152148, 0.3096752736763023, 0.5301317384831784, 1.3176937460170013, -1.0750510120212, 1.4366607957461852, -1.1863230769603135, 0.8169615081274427, 1.945998082166153, -1.4741717842067263, 1.0727046962527615, 0.7604354547177733, 1.0127275799116227, -1.1504741483205345, 0.046663848882222324, -0.41614806490650597, -0.130333521585836, 0.6584361564011335, 0.9528088241690057, 0.3264326568315127, 0.04468306472425897, 0.36881071704357293, -0.693824507410013, 0.7571894944422922, -1.6944446869650207, -0.41610271882814304, 1.445612205825981, -0.7344446459241352, 0.2379834287461269, 1.7658010428921032, 0.899476846965225, -0.5446415556288037, 0.5940059593484025, -0.20541102682291998, 1.2972810373469248, -0.8619329742338163, -0.9995107551919223, -0.38657348236703737, -2.3750929169938804, 0.7482169422869621, -1.0163085846469417, 0.2808453440838143, -0.12685025114948897, -1.1454774810030333, 1.203007531467209, 0.11754067768731466, 1.0682344096280718, -3.0001454304286095, 1.9741629526950777, -1.6310903545738005, -1.0763155593061657, -0.730674268674942, 1.2224106966606128, -0.876142611650797, 0.3425249914970222, 1.525269777862721, 1.2299082010225988, -1.0319391121636672, -0.9808233679288441, -0.7694711307041686, 2.008106278814718, -1.3802722217172205, 1.7112956696610628, -0.17986472316396296, -1.066593964724342, 1.194241938484396, 1.7010094716661732, -1.4531100825401797, 2.0140943483593357, 0.00961089155518196, -1.5117519393616556, -1.225033387547948, -0.4013256550665814, 1.2671552063447231, 0.35280285161085073, -0.5960613431486281, 2.540754369404317, 0.12452161850318348, 0.6489189020968069, -0.266000444569746, -0.9088480640459227, -0.32532143347778014, 1.8950184827415795, 0.1233803144398878, -0.8506586820583893, -0.013146295073653665, 0.8791204277882693, 0.17210568890449163, 1.632367328013707, 0.15862039487955654, -0.16339120814322525, 0.23897405779048442, -0.6421838621896824, -0.17334884721929977, -1.1070943362639738, -1.2216533790784645, -0.07491402130843892, 0.39581632483835966, -0.5710516304874607, 2.051139469309425, -1.82773175657593, 0.5747008941265317, -0.22853438210232366, 0.8634619143586166, 0.2521752390452931, 0.48904471670322064, -0.564392245951514, -0.10072099150740713, 0.4522478618181492, 0.3451387680566698, 0.27136338383972597, -0.7355092140807842, 0.8414467402239644, -1.1690021151149572, -2.788511038384896, 1.8189971647722083, 0.9032792502072324, -1.1969960098569172, 1.206963641510476, 0.34107287068465036, 0.5747472954848997, -0.09774507597793355, 0.3505076901816651, -0.2800587010869735, -0.17141366812550005, -0.6034656461417384, 0.3665551294097223, 0.6422610144258437, 0.6852370705793731, 1.8141528512917984, -0.6006505084403668, -0.401073196111487, 0.4481129685052948, 1.1215412005788055, 0.294281094993007, -0.8400996437124898, -0.23659055793172576, 1.2337003308820302, -0.7944425795053791, -0.12501859797022763, 0.12669952550269392, -0.26145501283663203, 1.0612872544961902, 0.1643712657991143, 1.3638181337811686, 0.1671936246779602, 0.536660694982275, 0.046322463990348964, 0.5357032817625664, -0.3910850558251935, 0.7037151344594822, 0.42634767130989204, 0.4020635808682617, -0.1452834786642244, -0.28685192204171245, 1.5813119435145027, -0.3313666238103324, -1.630863443675375, 1.8975968381884851, 1.497988454976838, -1.2833894894614397, -0.4271835840370606, 1.296428671679604, 1.0147636236527358, 0.008499718134879552, 0.7763218624280281, -0.9911165491373074, -0.28955079825767266, -1.2106468003843902, 0.6563624003164797, 0.054901669351109676, -1.4690725419140442, 0.06901440689355592, 0.4252773778706197, -1.093914555087802, 1.0594616327950752, 0.9903516449069268, -1.2093145024199112, 0.37967646564114543, -0.4758820769224347, -0.5921632526896037, 2.505246673635534, 1.2072370620006596, 1.370225466799814, -0.9917405164498511, -0.6520088992578232, -0.5696532524323059, -0.8093412890185301, -1.0826275786645045, -0.4801083441565978, -0.892280722293537, 1.412615895841031, -0.7113480780630511, -1.58398942271415, 0.07178044356560984, -1.2871905265662251, -0.9859321167207238, -0.9367274619902408, -0.2266617043180088, -0.8235377496257132, 1.6616248255857569, 0.2110414345000711, 0.4195206213331096, 0.4557109402631586, -1.1844739993372275, 1.0737929954280732, 0.10979465007800482, 0.38488576234322136, 1.3142064281473396, 0.6090123241409612, 1.0358009972485072, 0.7961360452240189, -0.7504240210817026, -0.4717852822314755, -1.9977526467992452, -0.21152758583251302, -1.869102265647399, 0.03226987415993391, 1.6172348405102026, 0.571609333114801, 0.11015187322020059, 0.10883356045207511, -1.1062908985717914, -1.1092367045073637, -0.012251254567757242, 0.8371704017648944, 0.1882536400549766, 0.4182684075319435, -0.3447023347644645, -0.7932199304382765, -0.9849697798584544, 0.7168358822007905, 1.418999037385018, -2.403734256558076, 0.9390772175487241, 0.22773646275302892, 0.5616178375297155, 1.2930499113213374, -0.37115833509731555, -0.4189488435377704, 0.30384787269295527, -3.09516529226863, 1.4376287260090312, 0.4409253327910705, -0.4403250314077104, -0.01839259972989579, -0.09132107400635489, 0.8993074950529176, 0.7860707096819252, 0.0477880560338064, -0.3208932477679777, 0.1259803458217062, -0.9116258668673404, 0.8538691740175305, 0.23500589115883444, -0.8278577538333346, -0.40942559335898576, 0.2567713855866453, -0.7177231480244217, 0.23493164012909643, -0.08362383634635764, -0.6322235536233912, -0.41000204751825736, -0.4364264295280201, 0.9472591623961788, -0.49591180781239114, -1.2168293697790002, -0.4506714771692287, 0.04189705377801499, -0.3919359249696162, -0.08424919865351914, 0.2840733616903701, 0.2849199073658345, -1.0924306659919145, 0.33684764607473267, 0.2452347016349107, 1.2244644861038698, 1.058925836769312, 0.2157094268939756, 0.8842025248865851, 0.7511051409587467, 0.84229162019877, -0.24636947592105027, 0.5054648516804614, -1.1738282480311948, 0.9209592920512764, 0.09202643450386803, -1.618664478117834, 1.0424262856623745, 0.2635251007081735, 0.12024192413580576, 1.8816350118726597, 1.296344926519369, -0.38004377705918146, 1.0908056348553017, -2.0710700397722674, 1.1108278459257963, 1.8072200656396853, -0.2832080542168339, 2.1495481922715567, -0.913304278073554, -0.13497558680801955, -1.2339441459427007, 0.16781086931278816, -0.5118420624618873, 0.43169942287551266, -0.22804268789046647, 0.9449444726231594, 0.09900173255653308, -0.42338324819041095, -0.4915708710890753, 0.388987193739956, 2.094613031828752, 0.5747081768308763, -0.7983286790842801, -0.3736394395978573}; + + +static double gemm_C_dram [64*64] __attribute__((section(".data"))) = {0.029004260079962152, -0.8006824757561799, 1.1197336711178068, -0.9896157373454266, 0.4966790956650833, -0.320720861795497, 0.2404711868912757, 1.7983471339688688, -0.45215688264510606, 0.896961504429265, -1.1616159798557508, -0.840560393015905, 0.07480233754961872, 0.17992670342491432, 0.40524411436169705, -1.6268041045901802, -0.515842081058143, 0.3550333279229013, -0.7169358889557749, 0.2669144829157952, -0.7584809853254146, -0.8370380914872608, 0.48072270248825516, -0.40604137567306653, -1.0335439663756396, -2.069883524764944, 0.6487461014247821, 0.011710122578667713, 0.7558956908425195, 0.5521614840818139, -0.25174889683631496, -0.9515208767957234, 0.7906470835496024, 0.16009301473206583, -0.9156242627130992, -0.8294654016291866, 0.6405496416929598, -1.1150477048464416, -1.4778148420891877, -0.6532442833617729, 1.0668677881031745, 0.42505345945888107, 0.07673387953069587, 1.1717799752861355, 2.372817497973731, 0.31201596993898206, 0.6638888271489586, -0.8305561220137307, 0.028066442063465726, 0.5327162396709624, 0.1408772044753154, 0.7686937307721734, 1.2407913952843508, -1.7571668440478188, -1.4407261503018678, 0.46966304643082196, 1.067965459457961, -0.39086059969793585, 0.18266961756344147, -0.09601667538677204, -1.6541976778103968, 1.7762728362797546, 0.044625271683577473, -0.05332555492084246, 1.5519660869822542, -0.5164453460006669, 0.3735110292906932, -0.14055947835504265, -0.4662885370095864, -1.5754096176009653, -0.5279910388184064, 0.1877355482506709, -0.33550084881023345, -0.2335582239599356, -2.000574246170347, -0.5830606097499693, 0.7201314957738653, 0.2767541956493462, 0.4410172346230466, 0.1496171764974113, 0.25584855399911693, 0.4231757850905495, 0.819138838244574, -0.21665970285704256, 0.7993969106462642, -0.0524553739237593, -0.10297969217994243, 0.10341500732243082, 1.3960023077483688, -0.3532908554905869, 0.2203147660382962, -0.09582033114984764, -2.2210275614128365, 0.606197840696221, -0.8083685791528877, -0.5880259036476851, 1.3096925869345688, 0.14641410716326553, 1.0053476857132149, 0.7403000763828661, -0.5588102569869894, -1.8250095277930243, -1.0186046335834653, 0.7832698999328468, 0.3231401688432538, -0.8047074876514235, 0.22535724026429152, -1.3470992648831748, 0.4765280552548135, -0.04554836049444112, 1.0856094027781182, 0.11016455864671677, -0.07169925780054585, 0.0271210087334666, -1.880645185815656, -0.6627766870787014, -2.8871893512281774, -0.5590779904078584, -0.2852107316710877, -0.14430057889633358, -1.3447542589401562, 2.2915669321114898, 0.1728899952093592, -1.421973566402149, 0.08592097416861628, 1.0123703420638568, -0.9558110283152651, -0.9027941505852196, 0.5300767150099646, -1.9419175079586657, -0.2760382915222782, -1.0179287043200682, -0.1606599622524637, -0.3767181010147598, -1.1725123233730355, 0.9572648447195339, -0.1936224437544405, 0.42763321723323666, 0.0597133381305523, -0.9990105347232393, -0.4832753666973765, 0.6204763319584289, 1.960673372068261, 0.8079703046097372, -0.3452734166837273, 0.3245617375208927, -0.07491582919001254, 0.2743378624516145, 0.5983093934031979, -0.25216135518238597, 0.596753836231434, 2.245459616334286, -0.2948256683719357, 0.28882168918856443, 1.0813537774504756, 1.8535627999465232, 1.1961057282238132, 1.318252064967893, -0.3950711849667241, -1.377281651368375, -1.408790244923528, -0.4636389874147835, 0.4564524135315159, -1.6380091071491378, 0.9185995000712671, 0.4692427417861781, 1.276662831833898, -0.9447062381422022, 1.0877432601911943, -0.22886776336281126, -0.012711978863996708, -0.030811506691294257, 0.38780634756191124, -0.47366773078962465, 1.4814958435930687, -1.1828980688637942, -0.19863200267049605, -1.3001223272185354, -0.4242285448896925, 0.08898755668384477, -1.694063278944873, -1.6602985696240946, -0.6264097653393359, 2.1301257422525035, -0.9460005244382601, -0.5374812634338685, -0.43004926797690446, 0.29036657258875936, -0.8172987007397908, -0.5094563820595255, -0.6841925657572985, -0.008910378204569518, -0.7731489284211737, -0.616010025614043, 1.1972052729129066, 1.1413513407181342, 0.1378551765169379, -1.4064193442890494, 0.47683432031632644, -1.0476861800204984, -0.06901359480920458, -1.2496780870132282, 1.6753024031738708, 0.041143324574971704, -1.4522215930201885, 0.7573346464645373, -0.15931444765366126, -0.7557308301686515, 0.196471099443403, 0.9564572866814582, -1.4803875895078311, -0.9249142102969159, -1.0917150382335596, 1.2585219246267312, -1.2891710566522292, 0.2768772021936127, -0.11943879225386107, 1.4656182572667367, 0.021005580078823815, 1.015858071109535, 1.3572500812200858, 0.5985933296458931, 0.5118443929095804, 1.3341173368810655, 0.25975515970872654, -1.237917055905442, -1.5278312160468452, 2.1781558314592333, 0.4138981989747854, 0.9117147230752412, -0.0703340663019803, -1.0158619558246755, -0.10701579101103097, 1.1466314764426422, 1.6748325965852073, 0.5314453542027439, 0.22641290320796856, -0.6327321154028427, -0.3761520310209821, -0.9094876923198735, 0.5199396339404194, -0.6279140323320965, -0.5316788990880681, -0.7754230114648885, 1.6645731868153486, -0.25248989955644296, -0.07000691089126687, -1.4833807861581225, 0.2847398900881516, -0.4709041665604012, 0.21337597451344031, 0.4752659270130253, -0.6322357393536067, 0.8609686485998456, 0.6154141944357284, -0.5912751549232785, -1.3228568966598775, -0.0850817349853954, -0.8896445451859949, 0.30012988995739986, -2.946119896252344, 0.036167602681861456, -0.028803490284605167, -0.11461775128822176, -0.19075498390300027, 0.29202031786639293, -0.3294293306975217, -1.2138544157908646, -1.0972607879764735, 0.8248759718159153, -0.8925466032322242, -0.16541550491454302, -3.4465386476151045, -0.9566298189710206, -1.078687196973154, -0.4891250155546176, -0.19531569651548852, -0.5990381399213928, -0.7036039565674199, -0.5527767107100636, 0.16920318370993273, 0.5427235579499587, 0.5503428910211222, -0.7497767572001619, 0.011571029854715547, 0.49984033903822517, -1.7283983057101304, 0.8594792530055284, -0.12824597747986724, 1.130107130041837, -0.4987262662830606, -0.13416057776817544, 0.5080625985293201, 0.2117295363547809, -0.8118692986997613, 0.9424962371461574, 0.6300633108154001, 1.2746895140278918, -0.003615756251429331, -0.05126805599191769, -1.6138120917239291, 0.7882409923880206, -0.47367442818736116, -0.43963455311049604, 0.712317456491045, 1.3326960118808617, 0.5896451874379312, 0.9762107134249405, 0.5626831277485056, -0.4376044921422135, 1.5861409442199574, -0.3308751028344161, 0.45942840764057974, -1.7057231513870459, -0.9254725284067791, -0.11018949372955511, -0.7616338202748348, -1.0857700920096018, -0.4372008083571365, -0.40109369588497923, -0.644818536292368, 0.25281756977441044, 2.4197071280480786, -0.22106488208438388, -1.095650643379566, 1.894125695645947, -1.2761684375038809, 0.02036098869546291, 0.7947496785408548, 0.3421126605593487, 0.7949003661056283, 1.1747154329748026, -1.165207479384505, 1.183093398265755, -0.35715333224519835, 0.09841575912600005, 1.574023689454931, -0.23482068201661857, 1.2386946627395476, -1.6783552822721601, 0.8611354052037511, -0.03315728672592852, 1.0193997600753135, 0.8649479142208678, 0.4164604631092424, -1.7829228532488806, 1.18355749410558, 1.57769088119824, -1.686257098236667, -1.1607340307397962, 1.0433166175934159, -0.27772980615804893, -0.6837779231673817, 0.3903294683158698, -0.3671124601982576, -0.1276413455606181, -1.700409020471655, 2.268428305186674, 0.2736751307318294, 0.4618308615774054, -0.14119264307379673, 2.2199837786106715, -1.375939861531243, -0.7221917522954365, 1.1098492022750432, -1.4505379826083395, 0.26060143268332325, 0.9771611195144573, 0.3765145109829216, 2.215882692348702, 0.4047556377415391, 0.17708325001281291, -1.9644517128168955, 0.3982782935193131, -0.6262164185787708, 0.15245667799057772, -0.6508467682648665, -0.040947126846172834, 1.7119976409288793, 0.21779845582679846, -0.04145965880856733, 0.13225304399295884, 0.1739378890012343, 0.08037751104228624, -0.9411877899806691, 0.38565902729297424, 1.0958429749681566, 0.0669055558927883, 0.4361448377834406, -0.5901261511098935, -0.8885190831394413, -1.4871156416726072, 1.3669107918561987, 2.3091823854788514, 0.622552717517235, 0.2783143206723023, -2.1305113526512396, -1.4978709762185878, 0.8018120395351532, -0.33995160613042685, 0.1777765322633653, -0.2258895695037579, 0.19586512261588473, 0.45301580114334045, 0.18103013768124301, -0.5147488863527064, 0.20662933937315553, -0.09581792397706412, -0.4704069093141071, -0.13483315552265066, -0.5594310075701671, -1.5755216037255442, -1.5674068340789091, -0.5157357110184205, -0.10054465770334044, -0.7071565768766122, -0.4099340274741994, 0.35968200228333286, -0.18585633976713617, 1.5416706566134035, 1.9286900603543355, -0.5159285075025919, 0.16886996206928914, -0.9067434891373716, -0.6039824452258518, 0.27720989342858937, -0.8814432879855706, -0.6919477366657376, -3.300499554594386, -0.6173928008586741, 0.8153244286523782, -0.35573315997666993, -0.20534234860472675, 1.9722365498950571, -0.1019166129902459, 0.08112220912426235, 0.7463452888856003, 1.1314090216181174, 1.1725026304304351, -1.3737070495742683, 1.734619629252936, 2.481740839103901, 0.9194703215452048, -0.34821661861545355, 0.9728026357332336, -0.10658444194926611, 1.3646609952054927, -0.20423441003137643, -0.06138988353092309, -0.1103302198524375, -0.3172315867238737, -0.8436575516229253, -0.5086533079781693, -0.1020901909331111, 0.041548802438476466, -0.9989480071569191, -0.19084542074059116, -1.012929236908774, 0.37846266910121795, 1.5569101781200219, 0.03186861709827397, -1.9643672831540329, -0.9559693601351081, 1.0476398922384702, 0.4753938790634957, -1.9155181532004628, 2.7851118312057928, -0.4660427767210397, -0.7434686806220159, -1.8644578336246445, 0.7950519234725988, -1.5175445270408634, -0.18967795984276006, -0.07354703638985319, -0.0028940583295309318, 0.05057720453427609, -0.2571010737906899, 1.841219462891703, -2.1896361652733782, 1.2511986406908666, 0.5753085882254242, 1.1153018270644537, 0.13982610960157404, -1.383864413771338, 0.7931811133480174, 2.1309464599529786, -0.3672255367396895, 1.2349500491253345, -0.2851321814733262, 0.8721818251187332, -0.2026228852474988, -0.2791938533272248, 0.08040090821476319, 1.0892882614640076, 0.09768943644705562, 0.4204417256351771, 1.3114392443815635, 0.04829268265664478, 1.2850500288988436, -0.2779162535369758, -0.43169391727862744, -1.5832048871215894, -1.6962198203895802, 1.0729777959132656, -0.3475301277658165, 0.5554189051412136, -0.3178837805858156, 0.5327674010524779, 0.6755622625790911, -0.1842302677407756, 0.43041683511575013, -0.8115483237447811, 1.3968996263534743, -0.17863606115051833, 1.585212875612633, 1.3280038403293726, 1.6695928015875903, 0.6109821394084319, 1.1349894473760842, 0.28476618327344827, 1.4784673864794742, -0.2823155837802257, -0.9183380787461971, 0.18428479751772892, 0.9836044862804338, 2.025235066042294, 0.8265404261612499, 2.088855400024876, 1.2286394369048508, 0.6715801392320037, -1.0498151352816971, -0.8931372957848912, 0.009361893370829872, 0.9162789715980914, 0.006157909931788802, -0.4922874423094256, 0.18089602650564962, -0.9841484655534926, -1.1301889231546511, 1.3001340798635899, 0.13693015400741945, 1.0390411986454737, 0.09933412649399904, 1.7158843111310522, 1.904568532616043, -0.48794979349112055, -0.4338145756826169, -1.0370401983449686, 1.0390032114803736, 1.1522094113772554, -0.4274833545676901, -0.8753567770565199, -1.6315994757003491, -1.7385506630534566, 2.532384190967428, -1.7056567691204445, 0.5413608251407436, -0.7741297263854691, -0.9447738094748025, 0.6661287246658135, 1.2031380054266403, 1.10368337423764, -1.2970356849209472, -0.6566436584727551, -0.14816924917182495, 0.7899980629195169, 1.8273852077888946, -0.9277938527847925, 1.9598998746936958, -0.27099375424892697, 0.6313744587208714, 0.40220491996516095, -0.29639672770006376, -1.8023859026222553, -0.7750540161682024, 0.1947076125945104, 0.5471135873496065, -0.652969912710415, 0.8404848088284015, 0.12894499297938444, 0.6032885408701868, 1.2514835286413495, -2.3974894979687105, -0.9304443816961642, 0.5235805043032368, 0.9237070587307208, -1.2232371757835139, 0.5076176935522306, 0.11779678439009704, -0.34612498438387546, -0.7314860546390927, 1.553910216869756, 0.373159475336515, -0.30618102562662347, -1.0154187441535123, -1.3683721575144063, -1.6848734071167453, 0.7057898542723938, 0.7127375808855136, 0.6820908867090917, 0.14243208748778438, -0.49764571567254134, -0.34993722444753544, 0.28263895634917763, -0.0811609390230422, -0.8001263943467075, 1.2016381946021464, 0.6300938668214966, 2.0197124104278883, -0.39730245577489043, 1.1082615629881487, 0.46812678384907336, 0.666746788576162, 0.26123698644751225, -0.7024810946461257, -0.5922965445684787, -0.48103667153342716, -2.24353922047969, -0.9337194785548774, 1.3686185555811365, 0.3972741496203757, 0.37354079869199974, -1.1743179438700706, -1.1748244659763896, 0.1406513465704322, 0.7766944125577693, 0.6468554295128249, 0.8402029124529626, -0.5495888272912638, 0.2752226876433018, -1.0617295543596483, 0.45862157925707286, 1.1714768594080485, 1.1805224647157246, -1.6892820684956078, -2.393405099847649, -1.6331785264764314, -0.7303247685543807, -0.37576096935444997, 0.4013478691603241, -1.0157957733816363, 0.14002890339339075, -1.0252839102787974, -1.0375314340230521, 0.8172730168671789, 1.062543562593135, 1.2810809804809749, 1.3999493985992992, -0.1750138803985548, 1.395734920938993, 0.20896311087749608, -1.3682057826232348, 0.004699216277132869, 0.4764319522852837, 0.12823174581788757, -0.546109883020964, 0.2523240224674329, 1.9724181468899409, 0.571137816454056, 0.522392971014453, 0.06334935501567902, -1.4920451846109672, -1.0225677061413179, 0.44255002330819526, -0.4682032342920937, 1.0350483070201422, 0.8200797384116898, -0.3029007829607368, -0.9845615009741489, 0.7582526902117465, 1.4833592773254187, -1.3989560209509306, -0.02010565525754588, 1.696186541558, -0.14162189076683343, -0.6537141574516205, -0.38621139164560747, 0.8184053985461378, 0.6452934033126237, 0.7403406155596476, 0.5169782497985267, -0.8189857182537518, -0.3298835390479515, 0.4237001612173338, 0.7833162409431745, -0.0019372831953367766, 0.2733210830893454, -0.6400595311632477, 0.6228358338196626, 0.3278665095994055, 3.081520639298892, -1.4435639267846334, 1.7053027215702756, -0.9588347501825313, 0.8266484324217002, 0.6242654188330886, -0.6407113941329479, 0.2772593629992858, 0.24814190447973083, 0.03363219264335503, 0.04496534388566153, 0.7087040051423135, -0.9221069417630742, -1.5268364676636788, -1.2896607997985812, -1.3661213777130599, -1.2075968696301782, -2.389243136958518, 1.4955588874856782, 1.2032086179453023, -0.14139077396705954, 0.2105872325884853, -0.5266170806972954, -1.9635764068165913, -1.2961941687735021, -2.2835960332407423, 0.33843875542096646, 2.3953920170177923, -1.1837497023332566, 0.496939041745984, -1.6834236268645497, 0.0947364755311612, 1.3677509022976098, 1.3010190519580898, -1.7668063834316443, 0.21564869547117013, -0.44708261946187283, -0.002380181670482115, 0.650945443490256, 1.4074149358152999, -0.3502584098400984, -2.275975800589525, -0.713875724177341, 0.5589684491426312, -1.965116029720147, 0.47575103008133773, 0.1679025472894861, 0.5439197139149357, 0.18336508565925638, 0.3219885649627636, 1.7554902588109447, 0.4642725270837393, -0.4390920573164246, 2.2698459891448923, 1.9524244471530363, -0.14392435570038756, 0.8876434758028264, -1.6577043260766187, -1.0198707516700816, -0.5961056777066923, -0.34369290129618396, 2.3123203551692133, 0.9307680048590791, -0.002081134721685804, -0.4816298626933, 0.5166419734688004, 0.09544852566577597, 0.738769513030866, -0.5320413954446367, -0.4940048696009806, -0.6416355699204741, -0.9125056647182483, -1.1862204740038778, -0.6555000958717663, -0.833470938908399, -1.1616778894644986, -0.5822364941000208, 1.5789499695762335, 1.6906076958567484, -0.6682910973489802, -1.5375408783188134, -1.7035671717673282, 0.5113501775091176, 1.3627201535356952, 0.34281653314195654, -0.0361566378498718, 1.283526267201893, -2.2745695742593397, 0.19000854891098337, -0.9356963719873145, 0.7771715931847443, 1.1747876035023088, -0.6581782060160273, 2.1514708443588093, -0.36624102952776444, -1.02996208423095, 0.7217520972507986, -1.3423248117021074, 0.29948769841449313, -0.9983234204192304, -1.1349975297569361, 0.2390417601230243, 0.7072204486510455, 0.35832543994067206, 0.8041102924500155, 0.3028670857744879, 2.7623138131362417, -0.7089157750419613, 0.22621529706629703, 1.0159042552872546, 0.4778866048560423, 0.13862524435273077, -0.6817769904192166, 1.2905800338344828, -0.5617711995631723, -0.937878912770488, 0.036259068904784184, 0.3074683196641872, 0.02334508317808002, -0.056636545167360136, -0.6105722560497783, 0.22034125973327826, 1.3981176980080354, 0.002830930797289729, -0.24195892578863437, 1.3598231207188574, -0.5983975108140343, 1.509108735185707, -0.3108584778552104, -1.2228769868033365, 0.5943397739409046, 0.31935177535483583, -0.036439093781717204, 0.14778839039885514, -0.11651573539454131, -1.4649049971267012, -0.2683259472901276, -0.1143739595865752, 1.7635913804869325, -0.16130246501945172, 0.4072876137215747, -0.31103626857775446, -0.05171663918837877, -0.7274085567918993, -0.869998251494505, -0.7193321231806105, 1.7505951189711304, 0.7440630635174471, 0.0016957841800653661, -0.983556012268064, 0.5131452298233552, -0.21520406798199235, 1.2554935163458343, -1.0675348115557104, 0.7469420795328888, -0.9963438487998225, -0.6229174823536682, -0.6770598584016285, 1.2562729341933596, -0.2712138170575698, -3.068642230593467, -3.0531360276822577, -0.5584911390555901, 0.7473315149504595, -0.18706483628559678, 0.14675010155914514, -0.006368544270069353, 1.6844988114574022, -0.6214979241607808, -0.3355320210713104, -0.09820727272027757, 0.8687934479912008, -1.2005133663272494, -0.33084789733891284, 1.1571084045756281, 1.4246451046643682, 1.6962376428779853, -0.01965764703939021, -0.7773091413938378, 0.7348575748530396, -0.23216605868100404, -0.8192776375683218, -0.2080446140023382, -0.44904006003328667, -0.4432456841776011, 0.06399763185741875, 0.21563610206370648, -0.2508963268128007, -2.5393973783220463, 0.323376954594191, 0.1384357529412035, 0.021153113599300586, -1.6410540709354358, 0.3691910055245278, -0.17495885529094257, 0.554361827175954, 0.20816477209501544, 1.2322688447103174, 0.2259606292852208, 0.5140029111794593, 0.37718842026130545, 0.33603722021339, -0.017669087842033065, 0.3990879000210093, 2.178612539524806, -1.4021972726687062, -0.059858631189209026, -1.0031183337604832, 1.383398163582628, -1.0611670406818532, -0.6074540386699645, 0.25468663161832605, 0.13474280254470264, -0.10885846887714488, -1.3619488838854161, -1.1865743468938024, 0.8343602196452481, -0.31636758410943266, 0.0822806179687328, 0.03610500422763477, 0.36975660962214374, -0.37447984002912227, 0.9006398818186364, 0.4263942528559476, -0.8471405691528062, 0.6370923472128284, -2.771271846414234, -0.2775641216533752, -1.9698060876925318, -0.7631948292304876, -0.11501310895829121, 1.2264502383793572, 0.44510581587390197, 0.7850830340365011, -0.8972456251148753, 0.6916483637375145, -0.5297453646047573, -1.901732896640853, -1.007326391309077, 0.2220310453886031, 1.0724562599385534, 0.40011245153735736, -1.1593565442528044, 1.5287688772353074, -1.2265309382410865, 0.17812058438692274, -2.1424196963250663, -0.5365247347682954, -0.175882228830132, 0.20779436050052882, -1.2395880259585617, 0.04832542895494312, 0.07093709252503462, -0.056371503668414216, 1.3597592757778154, 0.3828295662314724, -0.5315492554139866, 0.6360780600344075, 0.7531154590527323, -0.7824250791522117, 1.0617544257117932, 0.5489962301017025, 0.6286191631180904, -0.7554812899095874, 1.3460101201505388, -0.6564959907077351, 0.16698785124367177, 0.09451925409687266, 0.17705768947811729, 1.0138194440077566, -0.24231907310256842, -2.546273886239003, -0.05507329609619993, 0.3576296538398323, 0.27507225100326244, -0.7942125094255036, 1.0744369972956842, -1.1548545340061322, -0.15997902636302005, 0.2950954321082824, 0.8845493763065855, -0.8132679790365331, 0.21153971778686953, 2.2177421007414084, -0.9299613122041496, -1.6733913807379388, 1.3474760825861976, 0.9816143450439703, -0.3855895553937516, 0.8502913770246404, -0.016034574759692683, -1.1339934776440412, -1.7563721581739282, -0.06647491888759757, -1.8920747028441938, 2.3760043080911335, 1.8177530262775197, -1.8575847163422115, 0.844553214178571, 1.5954993729399956, 2.1252863078605264, -0.9089236614521397, -2.0469171775640773, -0.9384063102943723, -1.5482176543034978, 0.4526740914408505, 1.4013381381239929, 0.991045705937935, -0.47656146801187094, -0.27582104974046956, -0.5642658623540668, 0.325163151043837, -1.544633482053262, 0.15518857788732585, 0.15382265815454396, -0.6343026666433687, -0.8052290074500515, -0.01691923834054946, 0.6541683607771073, 0.5338183805463347, -0.9091383582478858, 0.3968969223456185, -0.17061628431357603, 1.747323697825887, 0.8012341564226836, -1.255442509886699, -1.2920206203653015, 0.0749186813352897, 0.2120295206583239, 1.182843648729612, -1.1122449131709833, 0.6272974182744673, 0.22777924320090764, -1.6251751647156196, 1.0411757059610847, 0.019367245918048063, -1.5738996411263415, -0.269270207865917, -0.5708394331822761, 1.8504054703733777, -0.22094889809967533, 1.1868455374446385, 0.5717141696167073, 0.8579212808811838, -0.49203515643303497, 0.42647412290047176, 1.0808047827262008, 0.010157228470302567, -1.719815859158772, 0.38805715778854427, -0.9969905666150687, -1.9361769141375387, 0.2474759878876688, -1.4221009001917095, -0.5918211873235646, -0.8058159270505826, 0.5438653208536682, 0.19307918373458596, -0.24237795984767208, 2.3297553315723163, -0.6782771653830929, -2.264267240688485, -1.3620513569200732, -1.9227157102467343, -0.5474383968696648, 0.24293097804441546, 0.8929260011447531, 0.049719985269798754, 1.3121549852716419, -0.7380138820116222, -0.011523274745424477, 0.7707761640355849, 0.2159962953115613, 0.5540026920594798, 0.09682345285130588, 0.398898061918644, -0.8325427357082503, -0.8742308162726118, 0.047733473640843245, 2.054543245821081, -1.3898902807090843, -0.12538538363326618, -0.09873796128345852, -1.4497902777439649, -0.4782177466678878, -1.5489795500879526, -0.29518331705238504, -0.44407598222159483, -0.9106356388426876, -1.550174445411619, 0.9328231660401188, 0.05594760595703414, 0.07566938845558267, 0.3298955808621695, -0.0017861668992007044, 0.586486364465265, -0.4362101979996282, 1.009729735572833, -0.042390290391845505, -0.2808285449424426, -1.0403468643014806, 1.131390812188699, -0.773890404524892, -0.22102358669926575, 0.6645483621647768, 0.7694091180284272, -0.03831164560096324, -0.3150960131582738, -1.0259652416179839, 0.20049882895150267, 0.03693677780369976, 1.6551618339165797, -0.22673604901843455, -2.417611359678329, 1.1106483704352281, -0.715751960430851, 0.5164952578195183, -0.6996317634146395, -1.897990257489308, -1.8041186305012002, -1.4690150868698797, -1.3087988024213557, -0.17486927381146705, -0.45353269534719165, -0.19149104316066032, -1.4266479569878736, 1.8919903045082074, -0.9473356590670324, 0.5173785755076394, -0.13818347423848865, -1.086849997656127, 0.36593831570404595, 0.6194226195093413, 1.4453714190862008, -1.3271158566185721, 0.60921787209085, -0.4832669384376709, 1.3186433317044879, 0.9513213947793335, -0.8548751359506115, 0.1071168124112579, 0.26717848135064914, 0.7030211740414508, -1.0709788797992723, 0.45569586838966974, 0.2887090154342446, -0.24229609713368583, 0.49390930613496803, 1.2738314634647165, 0.8139546371116826, -0.8058423065764165, 0.916823751781412, -0.6678215090538104, 1.4119852560554031, -1.3924034581122728, -0.48456149875876053, 1.0643581297073346, 0.3566463977388516, 1.0415975486050486, 0.028040080194454448, 1.0504197093941925, 0.44965919555783174, 0.8435496128685037, 1.7026256067041448, 0.14373254549294262, 0.7291427328749441, 1.2935074397997568, 1.1398931375510761, -0.18068743577377236, -0.6047067890923773, -0.5346294021251248, -0.10853463546664842, 2.24413601184453, 0.3297355179043857, 0.6657531282588651, 0.964251923438201, -0.5628928015239664, -0.0017106246437996794, -0.19257380601095586, -0.5999594838401076, 1.3310045638118178, 0.01078134546842449, -0.9551407698862096, 0.3885729820005979, -0.05434661623637475, 0.3767388172770911, -0.4898330949543117, -0.713441149440031, 0.42018478215791266, -0.8439100277112023, -0.19565425401483183, 1.2508445943709827, -0.598991758922596, 1.8429649718578998, -0.14258798772701783, -0.18138700905606242, 0.18618696335301746, -0.17087391761424983, -0.8432760462260274, -0.9939917370091027, 0.4305596597055404, 1.1091371083897912, 0.0790722776794302, 1.2495242586059518, -1.521274693280775, -0.7616476824293791, 0.19580408817424708, -1.3143027744001392, -2.091488061999562, 1.9663088091747154, 0.229879430005645, 1.4409375453185944, -0.36162055274827665, -0.27464439642870486, -0.6230996505620815, 0.5751002240784702, -0.16100067047853925, -0.09962621112274908, -0.4351501356168505, 1.3351792476960413, -0.5784998697471228, 1.3361458462940539, 2.3601479775013887, -0.4647589716386651, -0.4548988716102504, 0.7028762701773292, 0.5914980686358756, -0.6966115762392115, -0.7696723521588696, 0.03715612980676316, 0.32221017528830087, -0.4234227574937845, 0.34726424283234486, -0.48116562286295844, 0.3138392530237178, -3.16017434136752e-05, -0.3914227082899591, -0.581666722921146, 0.17111964776203006, -0.06008169278035282, -0.041886584782142536, -0.28699248044931597, 1.462175320301007, 0.1245846313065406, -0.1123526751684876, 2.092515176950615, 1.2272760858332872, -0.19552592726578952, 0.49191271925867636, 0.6144137708252538, -0.6106235763708134, 1.4976844345055038, 1.1892142848985179, -1.1357119642005757, -0.28436481789594376, -0.4421830922813949, -0.6328684584245098, -1.7040349067620155, 1.0820432527761576, -0.9968510182567392, -0.7985198199890275, -0.2588215482253829, 0.20174302514172218, 0.7287507331021361, 1.1722852714149967, 0.4322448567665407, -0.771155579801035, -2.612258680121964, -0.7051447495309736, -0.08301192443248484, -1.4472391477276658, -0.3526737726608245, 1.1294354483566833, -1.0899837588692494, -1.1395916553408674, 0.7779937885751342, 0.5183410812373956, 0.8509697670045957, 0.6208144564226835, -0.778892715214496, -1.0501461846073583, 0.8552859071722188, 0.8608448046488019, 0.5497428154557589, 0.04882443454369946, 1.6651080232070385, -0.32090016182105363, -0.3728486660772143, 0.8430133361143574, -0.5655459744432224, 0.7215544062511454, -1.9484490239876828, 0.6423145640402413, 0.014400283567776857, -0.7898745532400717, -1.586323922234601, -0.8458020923790143, -3.088311088273429, -0.7711672240651922, 0.9871615977182401, -0.9045757185197361, 1.1588809667487696, -1.3285096437778892, 0.5493583705018974, -0.17757552950573202, -1.6167076444272095, -0.6257691840041929, 0.3674989256823125, 1.5365222795738054, 0.3527319212488765, 1.0485204480487655, -1.660459836294662, -0.5794960248043395, -1.2465657293652699, 0.39414956926958317, -0.22431122185124802, -0.7424297725903407, -2.0183158330852966, 1.0943683904642862, 1.9180228164677529, 0.33125926943311296, -1.4098590113169003, -0.3049008568768526, 1.2884791320277762, -0.8304495335533479, 0.5648082533641575, -0.6324582858362591, 0.15519145016196245, -0.14331072524661, 0.5955341112172925, 0.2683604694117294, -0.46158779655753196, 0.07612773147707591, 0.4518924976580781, 0.4439502747372077, 0.8523538103367174, 0.6526631303289786, -0.14639057359720992, 0.11541815018151078, -0.14641912207628505, -0.28858965267185804, -1.1094993394266683, -0.13666302182060672, 1.1197245750262241, 0.5969030971713879, 0.7652826186532012, 0.5565420987155717, -0.39973686526861824, 0.7840343460033151, -1.1888373414791333, -0.38373069667860454, -0.2549327865564444, -0.831606465136574, -0.8020163962470959, -0.867149529466562, 0.3741626587437947, 0.009823237085445392, -1.7368701460461045, 0.9578205180189425, -0.30283019943674705, 1.1710486547250496, 1.3504432585716344, 2.135913369966061, -0.37144981581277836, 0.6683173129623053, 0.20836373808769923, 0.45158986081203556, -1.1459347939795756, -0.819138263097992, -0.44181173736632695, -2.228038352852804, 1.3450784569893894, -1.1523580752749787, -0.20464272457508284, -2.6483454695188007, 1.213210112709636, -1.4004764346361736, 0.09732611023114367, -0.44728592455565547, 0.10547550295522748, -0.42093313113048986, -0.5056183426815237, -0.35915275364763544, -1.0946537876925737, 0.31096146492651894, -1.8148942677707616, -0.3091292910916751, -0.07769189114014907, 0.8210353689958184, 0.9977559638388211, -0.9741254410868778, -0.532900582192196, 1.2326485600619295, -0.556852354708009, 0.5224831305011773, 0.2473387410334785, 1.1142299086991494, -1.1993099089239656, -2.3844231540204452, -0.031312298998023125, -0.2578374897963484, 1.3655566629409817, -1.978772520685182, 0.05702667001523861, -2.7661971160023278, 1.4379234027888605, -0.7192462186848305, -0.8359204541555126, -1.97072449798586, 1.2834263121409806, 0.5648994039770748, -0.10923252179999401, 0.5481965021182704, 0.192406781879664, 0.48581076499243303, -2.605560426009065, 1.03504983076068, 1.4042025146049608, -0.6532422029882547, 0.21720993132656635, 0.44583467031113655, -1.4473969873605004, 0.7442621658759352, 0.0035577574611439537, -1.5352838320153788, 0.36582337868920506, -0.43827718248031894, -0.331658585134989, 0.03475743065587794, 1.695364872590356, 1.558451620009631, -0.20689475301966134, -0.45129848619848684, -1.523170827436555, -1.694309335523152, -1.198176658548595, -0.19969177462827617, -0.05282460007952421, -1.1791283297361472, -1.0067735453064437, 0.17055987486894333, 1.548598735029748, 0.7208980223949303, 0.4530935835189574, 0.8089115623004025, 0.3351300125270723, 0.3800443655445466, 0.3736345544751257, 0.08967024919905225, 0.9223811114430721, -0.9791572872575997, 0.7490556870861242, 0.04211285779316042, -0.48675401364389137, 0.7892987384887062, 0.6514935495821761, -0.7389337564143339, 0.8226734205961588, 0.7249237684279655, 0.9660211264551801, -0.4532783587481408, -0.8511090310517235, -1.2152362800727083, -2.2688038747495143, 1.0639266151110012, -0.11852527671845324, -0.04079710558992621, -1.959172190759805, 0.634813706645387, -0.024392389160913488, -0.8994503599741844, 0.02058425261846817, -0.5502771537286061, -0.7627382878672573, 2.812113990163829, -0.35697622542008045, 0.8954830632884034, -1.2850622093830648, 0.9048756978263991, 1.295681539205646, -1.8039444541082827, 0.6289956120674256, -1.2464825605819987, -2.434105594966877, -0.7368776196463713, 0.07517741459098572, -0.7212226336631826, 0.6482644881693863, 0.7243697163628927, -1.015612682453925, -0.20576178987164687, -0.03565973922119395, 0.46655943398917193, -0.49256995004987253, -0.6208601544556013, -1.9147957069743964, 0.9111798522207986, -1.050789491681603, -0.17826554882391007, 0.0034287654351666343, 0.23891042130951867, -0.2896526657972369, -0.9678605370350775, -0.15606979834697407, -0.539588519878248, -0.9744762714085187, -0.1158787137991666, 0.463186013778498, -0.31756023012613327, 0.32352357908448803, -0.585725835882206, -1.7678336366681864, 1.5889268041950584, -0.20630705622264997, 1.232645492185463, -1.536865929859409, -0.9261652386696412, -2.0561143314389776, 0.4779964081018399, -0.8596011929021515, 1.0843957545428986, -0.9897567668916143, -2.3232928720337003, -0.03340641205022988, 0.7598708513617404, 0.6584247271159631, -2.3279582198317708, 0.24768310253870407, 0.8762008827221577, -0.6729640746468504, 1.2959884053547635, 0.9381350368383641, -1.1241425977603545, 0.4829581184819777, 0.44171108339691467, -0.1872572531285367, -1.2571533983758636, 0.2048074965235173, 1.6143344982484689, -1.3124698136215769, 0.3635463079780809, 1.3596873368910098, 1.081430863928576, -1.7061600182770245, 0.2118428338657974, -1.0006407692588688, -0.3401431816847726, -0.7813320328275092, -1.0011400049098196, -0.04519821459969004, 1.2603284232288081, -1.0630920047189185, -0.44789118146525986, 0.5582310695632384, -0.7090682864355446, -0.5133533644647693, -0.13049594943266846, 0.7311900472570971, 1.493841327862994, -0.25011186120154755, -0.7748595776465173, -0.5052909848740618, -0.5033837938274406, 1.0631419148120849, 2.2478394914416504, 0.7500249601704074, 1.5817576559551234, 0.8472836111216092, -0.470416237895585, -0.19965720263223283, 1.0216451463957437, -2.1860339921625407, -0.9948198936152898, -0.4396019229076382, 0.8734144476777804, -0.2965813670330133, 2.2470581118653734, -0.3395559758401316, -1.791968271962612, -1.9257914274985277, 0.3714309214848273, 0.703855673271628, -0.555710126333215, 1.0220050901401225, 0.20363711487789027, 0.8516796154742334, 1.5757937650329772, -0.09665836315586222, -0.776148895209055, -0.8004256779107253, -1.2413561284257886, -0.12925323644050332, -1.2379066703304404, 0.06651546025851007, 0.01391190021081403, -0.17367092702089812, -0.3287548140792935, -0.8711037772397026, -0.13391409347721686, 1.046744495577508, 0.8549541076563608, -1.14897045533444, -1.9386803001956516, -0.38823478112772664, -0.913589660602426, 0.2729518941831664, 0.15071694940790553, -0.10547684574045808, -1.2248164227256482, -1.351082215307864, -1.331163419569997, -1.3025284037326679, 1.591100615537101, 1.6839972656851228, -1.5013406493986328, -0.014560098841445244, 0.8758316571675913, -0.8616058158966454, 0.5237127012367585, -1.196778610697725, -0.35407288196013637, 0.6942107386263077, -1.8315746797885266, 1.4846155028429848, 0.43076769047114793, 0.384367439106405, -0.23394885184834452, 1.2198064491495224, -0.5383323547980174, 0.8160510810336509, -0.4573571329857449, -1.7335152974789638, -0.4636249816670279, -0.15318904243505294, -0.42412709535096155, -1.2846318534528511, 1.325417287661619, -0.24420837398318634, 1.7225099174527827, -1.3858598478981758, -0.350222801326749, 0.22885965098157468, 1.4051554822746368, 0.3335772936910085, -0.6286767607540873, -0.07004282442105106, 0.04489437050367313, -0.4059451088431407, -0.8094857079707901, 1.7505330159261117, -0.583610420693528, -0.7366008689555579, 0.3984745730971409, -0.06377005585758136, -0.8206644772162646, -0.6843563782443158, 0.413445320652666, -0.4554691818585017, -0.6229184879111299, -0.2413741831461815, 0.5506155379147128, -1.3103237870729614, 0.551465002061796, -0.5526669452272004, -1.432939322764634, 1.783677814895783, -0.2619175408084894, -1.7366570861134099, -0.35564945315684077, 0.10137133388748105, 0.7235998519780015, 0.09403042929115289, 0.15425730783069394, -1.8572780611255473, 0.5058501044761556, -0.7574907452490733, 0.17607281289803361, -0.8396945461067945, -0.7292802178089858, -0.7002824669050794, 0.5503576214615272, -1.5890603582592648, 1.793036043038875, 2.7878235846616866, 0.38956928497568377, 0.26174869373444265, 1.711065590611669, -0.21780984024318578, -0.7476219519355383, 0.18354455463527203, 0.9102969356546101, -0.9733253628488144, -2.344766204767146, 0.07301118913271507, -0.4917986474536467, 0.7416391329516281, -1.2880000713234445, -0.46197477360345757, 0.30212819705891386, -1.5167184180382485, 0.8501535296247528, 0.5175168374586809, 0.1763279409946514, 0.5808980947903934, 1.8472712753780864, 0.5887473330756161, 2.1954184977584354, -0.03769822240764868, -0.15613316317636414, 0.5004769377495568, -0.7455652599230427, 0.7677830295108011, -0.1441337502428087, -0.7523387828605589, -0.36755553576567623, 0.34105345138077786, -1.1914248220126447, 1.2303531748948233, 1.3432678076153106, -0.4313094961431832, -0.716554553207416, -0.36217498101423934, -1.5133659288612389, 1.4950695017357467, -0.5715269477785132, 1.1593421463571147, 0.43789720927678055, 0.09116342195238117, -0.3049393765588991, -0.837272212664342, -0.5766435716140458, -0.7356401726215391, -0.9485280265926767, -0.1250772778287353, -0.24361064177838979, 0.8522508371598432, -0.0037377039062253593, -2.5439058613954306, -0.0569000266151025, 0.4320024316685166, 2.194478575759713, 1.4396842305532822, 0.36543499574809074, -0.3770338147135057, -0.8552418236779827, -2.641615137447347, -0.01832206949724758, -1.220279075748726, -0.4532959432254292, 0.2687666926125023, -0.8588555314205266, 0.2995859931505431, -0.5333350265572113, 1.2847615357173254, -0.6750734120371739, 0.8097130403145714, -1.6270630113161542, -0.9700686987748345, -0.626750470435254, -0.873880059260819, -2.302124621855377, -0.2119446632235012, -0.45104357068515205, 1.474647321380819, -2.452150203161443, -0.26422200819131053, 0.3355570393620066, 0.4521192920529254, 0.6898023906005871, -1.0228088805014108, -1.5620067151329697, 0.2114421450103242, 0.16571047265242836, -0.9976369476833716, 0.2707035595461758, 1.527376877291636, -1.1501231170867043, -0.8215138548193065, 1.1255100205347468, -1.4908295737477542, -0.9614784827261649, 1.253875753998538, 0.6502131896760401, 0.5459866901410766, 1.4600197648017388, -0.0961460203532497, 0.7266795346872365, 0.24327467641293096, 0.6629927940460294, 0.1425139446241705, 0.6769287783907216, -1.3236927946900179, 1.7325000099103491, -0.44398667144970083, -0.06250247294850679, 0.7996605229107876, -0.8781887569136042, -0.04685771081608833, -2.1381243641968757, -1.1057101272330927, -0.2334652569852083, 0.9622037237887306, 0.6635341672421278, 0.12296392422848872, 0.16098800191091994, -1.9738778562669794, 0.878801521788013, 1.1264406225655363, 0.9266111456784218, -0.5837955300185679, -1.1381689631937657, -0.7637975260788618, 0.6253414266910773, 0.2560476374285288, 0.6225515550412877, -1.4003990017303332, 0.33627768607969516, -1.9427666341170824, -0.6932243069544903, -1.6260875697896702, -0.7277319111014768, 1.4038229847386294, 0.2920548422295979, -0.4789539104472966, -1.5162957655731588, 0.7303018926046246, -0.08451244525442732, 0.784113042439586, -1.5334585479514933, 0.5670458287729787, 0.42975930410924124, 2.449800593141972, -0.747332434740572, -1.2322385206168842, -0.7568040112448173, -1.4135743704317814, 0.02577746009056378, -2.0837637677880294, 0.49143275227877103, -0.09302281017834362, 0.7031745485857588, 1.9067771128764397, 0.017922750249444862, -1.0118512011569816, 1.098381595132738, 0.7341755899609803, 1.2311978717249155, -1.0213846091416032, -0.30656617450535995, 0.2039715668363261, 0.9137009208505903, -0.1853547296025253, -0.4531226067380201, 0.4791486178122148, 0.4244894303034229, -0.21125213591144995, -0.9006724834631074, 0.687500015940671, 1.5478498713739013, 0.5971262704659354, -0.28221603850355226, 0.1853982344045198, -0.4972609839585217, 0.09701023695712938, 0.5695911267833031, -0.3164094642230819, -0.14706947612684826, -1.3149133497939054, 0.6864680014836566, -0.772852350625843, -0.5806236044379457, -0.3330938726043226, -0.2730406772068024, 0.5762813326703923, -1.4304622484096188, -0.8424942170683648, -1.3966094397492712, -0.895345937295373, -2.1450526226610602, 0.8982603474010731, 0.2447347737164159, -0.14421939866277614, -0.32759685565611457, 0.296699608032958, 0.4488491381463045, -0.9366906772433812, 0.8575927698912629, -0.21528850062417895, -1.1881007189482282, 1.126951428099562, -0.9182517838371076, 0.03845610449911805, 0.21538710321609011, 0.4345124212863915, 0.22806905558766796, -0.0433565930969285, 0.7593857162181715, -0.31477607928734513, 0.45451779677564275, 1.1460305154279424, 0.17511551763090402, -1.8856875430269369, 0.8346203714049741, -0.0696682533840345, -1.477209694338219, 1.167580661482926, -0.17554887202590774, -0.8474837486432465, 0.34080524465178785, -1.067656844368498, -1.2235746072702904, -0.1496059091339221, -0.6271075452205968, 0.17720185109195266, 0.4353918232872083, 0.5660926079329978, 2.8554574415424483, -0.6620166583187813, -1.7269876019682948, -0.4078387228577495, -1.7228178107762542, 0.3726054112499986, -1.1217641084697834, -0.4549722253573668, -1.1732831794353027, 0.6575544136481785, -0.9201334492342766, 1.6328222950437552, 1.6244241347609476, 1.5613555902002136, 1.4668846483103386, -0.3487215605525855, 0.12066051762324873, -1.3338304508691319, -2.838826297994906, -0.6706495059056897, -0.2112553589247857, 0.4093088155814143, 0.0586543436679839, -1.9337244019029907, 0.07171251023300006, -0.453400009742923, 1.1415999381407176, -1.1548675809496596, -2.382993633047374, 1.665455784920222, 0.36977079711240063, -0.535727132830006, -1.4579294636750366, -1.6520070983625739, 0.08837369320935094, 1.1015994425060465, -1.2436747485612611, -0.16173195775871396, 0.7874586254788326, 0.8455365274680086, -0.47385229544186175, 0.8581794726994194, 1.9141693890868874, 1.2111468774347625, -1.283834409703804, 1.4122001960991903, 1.4246122083213058, 0.09617143246488447, -0.680416520345397, 0.7939074419436761, 0.05082061802593895, -0.3375681951224267, 0.2728075634559421, 1.8677062690963786, -1.2849446512608989, -0.3646522458534046, 0.917024620691813, 0.836213051287984, 0.4199460834454394, -1.2038519270531134, 0.12232264627089835, -2.2232529926712767, 0.32822411605932045, 0.2221878465543045, -0.40914638546335264, -0.5038836046014628, 1.8256305544491191, -0.7565556539701808, -2.7739792692396126, 0.28066845231027215, 1.3738789070045716, 1.7661381760831198, -0.9580232806819591, -0.1780922624537117, -1.0984645221049045, 0.12603798766445923, -0.1849675475219486, -1.4475049162679143, 0.9388707018063479, -0.5362768656635394, 0.9452817076530887, -0.37341197131483667, -0.2629170752516286, 1.325991973487167, 0.9619471376599076, 2.1975015359014103, -1.9973341541819725, 0.8588312686492864, 0.13666135012685632, 0.3102389236196128, 0.6936509306420062, 0.05434653570011313, 0.3886040413097377, -1.3881648803578328, -0.24232672717865358, -2.3006844443180974, -1.518751357394444, -0.3706901669875656, 0.7539809084190491, 0.4912794553641408, 1.285898467547851, -1.2234469904502512, -0.08958864363508236, 0.583078020131131, -0.23178079681176902, 0.4769446061135408, -0.4016965792806681, 2.1618387681417497, -0.3808916318031749, 0.7019003947692466, 0.6921832736273762, 0.2010723299967834, 0.23634082843208823, 0.6056544806575411, -0.11651743275509928, 0.5766313042860137, -0.5190655005970012, -0.4579416002427724, -0.424209530527786, 2.232559210366838, -1.8171412233712165, -0.6495312007257151, 0.01454464350825512, -0.012160378768442833, 0.45900058613553946, 1.622427208224704, -0.8381648037082366, -0.06922690164521429, -1.1571533446018838, 1.2962530073258305, -0.4164012434169487, -0.14957792428793357, -0.0966188865041463, -0.17162818417291137, 1.5823601195567514, 1.0185460546773435, -0.27435903244422055, 1.0624307534321238, 1.6824917464322542, 0.3499999101405133, -1.7539284490002658, 0.3415515608898923, -0.9304971196835875, 0.04252683790482448, -1.5965834974215565, 1.3596129553980816, 0.5975052601318105, 0.7282491018628274, -0.8685422050617817, 0.8955457613350786, -0.43664776638074715, -0.8206970291571989, -1.2898007224720796, -0.3186171612571654, -0.3330818341118064, 0.6655752973348447, 1.6764347205970604, 0.6078743574830635, -1.2342507922222805, 1.9210718505914963, 0.26510984025007406, 0.2685882654026507, 0.7102430456245953, -1.0462145584529572, 0.3857191152427833, -1.8835805633826779, -2.768761193953574, -0.4915726819365157, -1.5089924717034593, 0.013278831567490521, 1.5474176875871273, 1.7045030442907954, -0.7048211460588357, 1.0382872389284454, -0.4236141117291399, -1.1507654519546344, -1.6074537360491772, -0.7267874141115397, 0.11876040295645178, -0.6408806028454356, -0.12049820175789154, 1.1256684566373316, -1.1503658259476168, 0.3808406082354331, 0.16166298056768014, -0.9796873977838907, 1.0438547113586458, 0.2695904409689415, 0.7097366282641338, 0.36812978605144314, 1.1038117080137047, -0.5807051449206111, 1.027731721586947, 0.9661580338116212, 0.2598371929157506, -1.2798102496315147, 0.8352067419464927, -0.1452621149892954, 1.8549267889124994, 0.5665323669164135, 1.5421593189692089, -1.4677264718771512, 0.9585639718948312, -1.6479655417171202, 0.22271257385409565, -1.161398773427602, -0.861813501728504, -0.33065924746715947, -1.2370435572165541, 0.13012798200740622, -0.17426050640126142, -0.38744989631009263, 1.4307827967619229, 0.03543562533000589, -0.9972687727886126, -0.5170550450401604, -0.7750247609617125, -1.5190613124777796, -0.45895251295378553, -1.8056739512190008, 0.568360571435928, -0.2004869809428556, -0.14483685708825503, 0.5258043449164731, -0.16813587996429707, 0.10846389250099084, -0.05315797521827668, -0.21651365686613308, 0.06006145597959008, -1.4024064633139812, 0.689880904910238, -1.3428757039530983, 0.4589303661569864, -1.4188669947772765, 0.29352168212647334, 0.7308608932842507, -0.1353758679174761, 0.17358923934048226, -0.40216684119518126, 0.43993814071860016, -1.2871086596268482, -1.2622185432193231, 0.5955345200199184, -0.8657767655249429, -2.0777147735575694, -1.0097475327974674, -0.29221483234147594, 0.2292766310482291, -1.1056969652514455, 1.4876657299426514, -0.036104835108870456, -0.6423673306131062, 1.17645837315232, -0.27627899423171265, -2.1294237281854707, 1.0389397167884664, -0.6156099069368945, 0.5660062401217804, -0.34735225445425977, -0.32061267845758085, -0.898048854923999, 2.3890802889591454, -0.1207700865946951, 0.9658162458846846, 2.1295380289836494, 0.22730977326083576, 0.307795221689862, -3.159470294922449, 0.8956823805247126, 1.4364518339011614, -1.6940979672180807, 0.165976015208281, 1.0227277830757575, 0.9471964236813554, 1.3689187788341273, 2.0082590219654723, -1.4127390079463908, -1.4582830839548455, 2.057655232622654, -1.6262107983377108, 0.8065089603585295, 0.059317700347295395, 0.13330649608758663, 0.41871631403681064, -1.6670993078179417, -0.4557222192488648, 0.8358412168608853, 1.1485241583907668, 0.42382769612443416, 0.07067530896807704, 0.7805845452452761, -0.9230705042306333, -0.7008265657860365, 0.1238579585529523, -1.5033879105374937, -0.8006324477609928, -0.44793642959253405, -0.27299529722657506, -0.42911609794809474, -0.04754182561350199, 0.4678169668023181, 0.9609426463686324, -1.135854381028605, -0.9604027706620838, -0.8759778130611081, 1.3255392992467154, 1.4437271577682296, 0.4932168845856174, 1.1198442202865473, 1.2097953377572856, -1.4782787622655886, 1.534331937472566, -0.18592464788213361, 0.9065510875978713, 0.2441526620364802, 1.2142409950847504, -0.005934606839626211, -0.19071981471485608, -0.3040583507442866, 0.060081676730458174, 0.018762337319815515, -0.9902130995818926, 1.3074986871427252, -1.2758677347357341, 1.0698936415205338, 0.5702156020946687, 0.3041015469962475, 1.0315316803895331, -1.3625531333588328, -0.4647788936504099, 1.3043793230085174, -2.2931238782528447, -1.8655685521053629, -0.9669629869645776, 0.1883663353758491, -1.0634824082910936, 0.8013306975599391, -1.5443624045591937, 0.32715347959892516, -1.1042425552504813, -1.6161041406680392, -0.5109993363057571, -0.9190886093343267, -0.6077428272848499, -0.5002569071129503, 0.9756689510277916, 0.2772218606494787, -0.43287852998208237, 0.6296681915983172, -0.8502843261320427, -0.9505069068832771, -0.650584341206366, -1.661723761397373, 1.007089074815852, -0.11873490106540271, -0.1272993611104505, 0.9298614676390998, -0.5153289230941936, -1.556702035787103, 0.3807701443952423, 0.6123807492207072, 1.1867467887368908, 0.14654907176430795, -0.5370416367498603, -2.1139883997425315, -0.7876830210703504, -0.6237996086335619, 0.13592084587607914, 0.6393276776955494, 0.13991569771729745, -0.81809230737367, -0.6683486553698732, 1.115178173122076, 2.446771414213701, -0.1637585890568815, -1.1209704564711065, 0.4467511515071406, -0.9534092482312004, 0.3182330919933401, 0.271683759433474, -0.9573363828477164, -1.0712413179694105, -0.30255813778652974, 0.958247674089883, 0.4979415521551006, -0.8376872519699228, 0.022535961046091832, 0.6840510626836408, -0.21077828406318735, 0.584447240190305, 0.3410263701239205, 1.187176771555195, -2.1172358171100973, 0.30995019232039317, 0.7901976578611829, 0.30913468523891424, -0.9844146654250953, 0.3474506697688135, 0.6259418281233743, 0.4794626029480261, -0.06173762343825315, -1.3627102955192472, -0.20031835021540442, 1.6870429458740388, 1.6083459881399655, 0.2789050227337342, -1.2719884064904396, 1.1853106830638485, -0.9913580737072663, 1.2233104543278213, 0.8134432318899081, 1.886557959191833, 0.11022533467624505, -0.7681413266984113, 1.436892344457456, -0.5556957709754798, 2.3038212660346935, -0.682772274731363, -0.4746168209407287, 0.5511129315383609, 0.4215246673091607, -1.4860625654820405, 0.1897176503580621, 0.44020540443738876, 0.7496215071681255, 2.552398472469107, 0.7607506386602476, 1.0820709259858656, 0.19917231987970416, 0.7942499355919473, 0.19973021075409347, 0.29481380935757473, -0.6357637486064631, 0.12863791178542627, 1.8561515112410554, -1.4521073859968245, -0.44690133813439353, -0.5281516778029656, 0.23031228507637702, -0.05163289925469105, 1.4531091939178806, 0.06594794127602743, 1.9158929778743325, 1.3893544881471012, 0.8377158542991587, 0.4599670791005717, 0.6058828013346426, 0.21069233748771843, 2.0847766207434564, -0.029268516047371095, -0.3252030660188709, 0.13202105483543372, -1.2051521919108732, 0.08810029046160057, 0.2998899394140385, -1.329901911797941, -0.35244571721201917, 1.0093949421205954, -0.6561924048355037, -0.6769220785633787, 0.9004707724740563, 0.4215313341559502, -0.7375271922065233, 1.0706249247137103, -0.028892244945197036, -0.5183281825357204, 0.5736153002965058, -0.3758685831678415, -0.7918995871067815, 1.2782634446781616, -0.6356995421752419, -0.4833863369287177, 0.9974534142023732, 0.29124328932605514, -0.8236355220229586, -0.08699050597488259, 0.6590141733829847, 2.441583292882557, 1.8873452628569025, 2.2474275746061965, -1.2084812281924566, -0.8018851520041654, 0.6759181159646618, 0.00313769957548172, 0.31474207170695445, -0.07736951126774436, -0.25018161293926583, -1.2830507962514812, -1.5628441907653305, 2.8453969247062276, -0.6342184442111992, -0.592854552706071, -0.653723999513639, -0.76565949917059, -0.730526998162015, 0.09075307806432394, -0.9481548645415303, -0.04755585978648472, 1.3476101538895733, -0.9875559107864285, -0.7896939152505444, 0.4816267344514175, -2.1648165937072137, -0.7268788889746165, 1.2960347147856455, 2.9109429440400323, -1.065376273609101, 0.18513796404565092, -0.8814138828253623, 1.2409135508501319, -0.012877656665903105, -0.6476617613042353, -1.994768600369764, 1.3443028214739667, -1.8514533014456531, -0.7379582086548833, 1.694396228823381, 0.4026562338082194, -1.2758466479856054, -0.25334115795781886, -0.10298131523967101, -1.3748667924232236, 0.6293890561733958, 0.2738888278899806, 0.5612373487486728, -0.35340678348969806, -0.736843748234479, -0.40367835808832514, -1.2439466232262497, 1.2570138663363715, 0.45632423807954914, -1.170707965548015, -0.9587623429264018, 0.6425982154718701, 1.5567146540543542, 1.2516374448322218, -0.22322323181634318, -0.5695167025136576, 1.3827725588378879, 0.529065899193698, -1.5470827592965664, -1.0944906269170949, 0.2905472841355263, -0.987585623182969, -0.3515621243107407, -1.1366040859833553, -0.5160321145422849, -1.6442173347711861, 1.3423907595439113, 0.31986604002016844, -0.5786595172834021, 0.73801532386848, 0.5788365796442495, -0.7375548663739422, 0.45423130001442397, -1.225358779977498, 0.7678067565519512, -0.05078757448886205, 1.512293872317004, 1.106989348588503, 1.3272064524680798, -1.0102290516604413, 1.3418085812620126, 0.4314053354881663, -0.8698836928173348, -0.33508116195249105, 2.273858285763485, 0.41127055898865217, -0.5417916233776102, 1.3173262896619646, -0.06588492371272986, 0.5969382095462551, 0.6197204718248582, 0.3742348312569251, -0.04007772711014461, -1.6143631344300409, -1.2617480510616137, -1.2401273803885422, 0.3822358970465057, 1.8061346386866513, -0.22702264172388117, 0.37048462734622856, -0.11799395539242921, -0.005235059103559137, -0.6489984366966667, 0.7782101694572308, -0.024126859434724878, -0.09798935833649829, -1.0417284651310414, -0.6605483359597034, 0.6972000521784677, -0.15225780204879624, -0.36034171752445354, 0.5934576132973614, -0.25056255516564263, -0.7310153609877714, -1.8861910032233697, 0.254480151361828, 1.4148114593503607, -0.8002251737459469, -1.3914075562421209, 2.6894920671041236, -0.1506644941293263, 0.4047667831579401, 0.5611273432518382, 1.779203788992058, -0.48565136522391056, -0.26653744823132164, -0.8829510316719237, 2.532755174768609, 0.5582799591535964, 0.3625488756486719, 0.8429610656748877, -0.1422677046514221, 0.059560937411363916, -1.54096863376706, -3.409308449483486, -1.501482227036858, -0.17084770021492382, 2.3317238025849716, -1.2471763217303788, 0.6742533376141315, -0.4671654422272103, -0.7254154200533441, 0.23441703660981258, -0.4694323705405022, -1.612196166706617, -0.32563743615759183, 1.3898422646804982, 0.859146411700291, -0.2601661523404493, 0.3217117418244543, -1.0494347817905338, -0.5991667659706216, 0.8881794866760082, 0.5840210011255069, -1.2075635705473267, -0.3377101947699321, 0.13603306699179857, 0.5802301275309478, -0.704852221496425, 0.9615592481981307, 0.5450775566697076, -1.3780611142397772, -1.6167118554509825, -1.2811556928029282, -1.2724034602241299, 0.16120409249117293, 0.42750602102457846, 1.2666174612779004, -1.5508664421057543, 0.2620798945065646, 2.0332984208088303, 0.1261854523088127, 0.8345628189160572, -0.687707400490003, 1.0656169293117534, -0.31887838781706285, -0.005112174834790412, 0.2023207919468502, -0.5067392202386992, 1.823953396894383, 0.1523428263375545, 2.2440789764565605, -0.6697609733471732, -0.34309395149284333, -0.3824068477398153, -0.33303131558596377, 0.9716664193169441, 0.8311581421420695, -0.22780854741625758, 0.20032616901737238, -1.2785511330679982, -0.3197180135822623, 0.4959834053798831, 0.6752515974385053, 0.5334780166422973, -2.002795187816773, 0.27050605525523075, -0.9424869426824867, 0.458248932225858, -0.46118697878329784, 0.47832198627914324, -0.3661079341479641, -0.09319576406942727, 0.577819340020893, 1.2520997452677414, -0.2933921906178384, 1.136343377990995, 0.2468127074537116, -1.2252940887079373, 0.6375579341674809, 0.3462788965739153, -0.5177836733288577, -0.035284483529249705, -0.5338255181822806, 0.5193809161508848, 0.21798950092913766, -0.6956597590579882, 0.8046664677176151, -0.11463713804889088, -0.19176077914163675, 0.791885645189318, -1.4328882682847868, -0.9528659659051965, -1.637558975422558, -1.989264868496837, -0.8459538105074142, 0.944828292676069, -1.1921028346027158, 0.2546472038919744, 0.3861916389251654, -1.521512495954636, 1.535375205330882, -1.8914196543962882, 0.5149418901648063, 0.7752013519581096, 0.9145512827088738, -0.5080387911664219, 0.05031436015329658, -0.41216922303342934, 0.37227191099516266, -1.6600720014787667, -0.17968185610490092, 0.31830407850338693, 0.7686158224111359, 0.3658407552939923, -0.7165726159358554, 0.013357030158994452, -0.3372894061190394, -0.6789238357123408, -0.3832898769073804, -0.3227036184382978, 0.4460521819485986, 0.061892643502349666, -0.32267506934792967, 1.484633534363464, 0.4021774493619681, 0.4307762865129178, -0.5296069271797403, 4.151195369087241, 0.5487000909862146, 0.7163468748574175, 0.3808084179332832, -0.4772621640085183, 0.5479157515300286, -1.1044576899329694, -1.2036713335057232, 0.6909028182382742, -0.6529263174772725, -1.4725628267518027, -0.7473406606454858, 0.7387557364279378, -0.8760308731605688, -0.967180804004829, -0.49221734292555436, -1.4382474439405089, -0.3481040054911766, 0.22254446316102353, 1.731032969663649, 2.8055652681876384, 2.1160837251189757, -1.379194059803083, 0.6326539345516785, 0.15520482328940885, 0.8119547790137315, -1.610952801893542, 0.008918798158614715, 0.477564041851444, 0.25533528319659754, 0.998197782393884, -1.6484421505039013, -0.3004410869764593, 0.6057050457224126, -0.32020257217470566, 1.3359336989858763, 0.535133451920879, -0.5673962878727761, 0.24055606737735033, -1.6590194676777759, 1.9066265876591473, 0.2721183739248777, 0.06834872118107038, -0.7693837262978656, 0.6000193521872865, 0.20157135480173424, 2.472674269826056, 0.8258740084136792, 0.47137911495882484, 1.244572899040009, -0.3130562609295631, -0.7435497606216963, 0.13509423548484906, 0.6656236185332783, -0.5980179153119386, -0.6435416164377876, -1.3312882258359282, 1.0671430529417514, -0.09759042594372078, -0.35648374184511217, -1.2269456519162936, 1.6814992783555787, 0.04184788447848968, 1.68139083696507, -0.3030041682277847, 2.2849057798957273, -1.196531329787736, 0.6523992375423346, 1.4893905469952924, -0.6823297566186022, -1.1041446305707252, 0.4421841974696293, -1.4167436314301174, -1.5920898580925384, 1.4343243359414184, -1.9045005981467849, 0.057069471507391965, 0.5278224067845345, -0.7362602350911139, 0.19448161568570255, 1.5261487666748228, 0.004388839910851893, 0.015470814085829732, 1.615975884645819, 0.8879261649672402, -0.1326774466682177, 1.9382951563961202, -0.44547041979800195, 0.021230799239171535, -0.1571038497582797, -0.16148117044663435, -0.36447608885124355, 0.9360978659212479, -1.9835447885628907, -1.8064899970710941, 0.9036470769919311, 2.425086908712557, -0.6272015905517969, 1.957160646153106, -1.7538826809290353, -1.2373863108002687, -0.42249715021397544, -0.02100757430425144, 0.7526038212912296, 0.2047007870068672, 0.570705167349308, -0.7783611682766279, -2.3095477705978107, 0.22606718794222244, -0.32290132655615966, -1.597852946819715, -0.8952260637834641, 0.5568680007496093, 0.31733948888023006, -0.24697424901807427, -1.1633182632185708, -0.261549901914151, -1.855510767468883, -0.12245837196266503, -0.041080160924985655, -0.585409894265932, -0.4138566348289641, -0.6980329178942006, -1.0029216664042124, 0.10979946351080472, -1.6542257294131706, 1.393533502384212, 0.5174318732191945, 0.30147088153612134, 0.13176508644926532, -0.21802556521053773, -0.55329143084434, 0.2739291983626038, -0.6883020380352294, 0.6825537252923997, -1.5046508987238285, -0.5828333121318955, -1.1884290907589348, 0.1665509776472768, 1.3971140199197725, -1.3673567412727532, 3.0130147873449924, 0.7896539284272303, -1.055832543621147, 0.16658265730062774, 0.5232158049212052, 0.28570121739370363, -0.5325889850018535, 1.2918469178499534, 1.9819733294664026, -0.8093143209894869, 1.469595195954295, -1.2932943712519451, -2.1208284016640415, -0.4050898165492931, -1.1517011911443218, 0.8998956145443444, -0.23384644657433187, 0.526560658434697, 1.1222026129349756, 0.2160342440751586, 0.6797496626133915, -0.5331175042591417, 0.6637291624241468, -1.0147033164625645, -0.5049005083720637, 2.0659370602844436, -1.5900216896103532, -1.5339789892006166, -0.3200566858112642, 1.2830977533887504, 0.04654283897838462, 1.7838815763897529, 0.3904401499994594, -0.4111612807908421, 1.1847627666014435, -0.3955642857036182, 0.3675601425931492, 0.088662611923031, 0.46299757634197497, -2.2893235368562155, -2.268927460602336, 1.283516393286584, 0.20920007589000394, 2.4411204448502586, 1.1389069409067243, -1.1898031767179975, -0.43341406963651063, 1.7741298995608883, -0.016709317081657786, 0.11517899718492178, -1.5511855060356194, -1.3117417253404795, 0.13351391911792548, 1.1637653113813886, -0.27570074398670863, -1.5697680634730649, -1.954956462100421, 0.5552656916393576, 0.2373994429321212, -1.9303747103380289, -0.1921132978172397, 0.6250698172881495, -0.5949372282094622, -0.7826608913130164, 1.4562229269964548, -0.5416543116490529, 0.6936768940278385, 0.6261775893704643, -0.5859171652539004, 0.8555032381807751, -1.3676477362552337, 4.238533804853162, 2.4545185017647904, -0.913404759221193, 0.4250981319720471, -0.9763799065871701, 0.7808586039540816, -1.0328656450097617, -0.7721604644533069, -0.3530813727528884, -1.5411637128692925, 0.6539840707892913, 0.008229110336607592, 0.7966890453416182, 0.7037436956153061, 0.6614113279704881, -0.202848267721112, -0.29922308805427594, -0.5522097500427048, 0.09875065962242098, 0.7083328933399845, 1.7362802880024957, -0.2266535118741716, 0.5299005404626365, 0.6719364752934611, -1.8615906591576734, -0.09068813508526216, -0.1888891414579059, 1.3423077781666952, -0.6924470819765697, 1.1041424493388294, 0.4134851965057971, -0.4735791706069265, -0.7356651547484112, -1.575469178834194, 0.2059058482018911, -1.317543434131728, 2.347983690185328, -0.9350302948592141, 1.0039027596124084, 0.30969112449845376, 0.2541035100649089, 0.4211688015877788, 1.0647819562744412, 1.2886070484626828, 1.4453593413552184, -0.026423761925036916, -0.10046863824315762, 0.9375145304857443, -0.8794152043439424, 0.6161524124555712, 2.1765363841706007, -0.17519057418498793, 0.40239774219958097, -0.5314020562312248, -0.028260581879397745, 0.5266158478069836, -0.8130604924415793, -0.1620471073410965, 1.368895928096441, 0.2544222901453687, 0.0682140981898076, -0.08305873685961358, 1.1551649925205691, 0.20488815881813946, 0.9788412565833704, 0.6730413277634831, -0.10343628631794778, -0.011056773466636922, -0.26893242071811874, -0.22234819963659333, -2.063667484853198, -0.9528556130697672, -2.298918544448265, 1.4641851715761252, -0.6443216828282126, -0.7448597363782805, -0.5637254977251447, 0.026036289664867818, 1.7947458799857385, 0.47823466572724166, -0.6009031631006543, 1.5622161381793802, -0.012361922782423504, 1.1320815868058798, 0.2666111797781486, 1.0800481352272358, -1.3534368975569377, -0.12565159569358056, 0.8269760280151415, 0.4101805250340873, 0.5459250834776258, -0.578841318268924, -0.7708632540651004, -0.004711348442621566, 0.9139140784227678, -0.5887863731031122, 0.5255711160933076, 0.6899347371240381, 1.8406881042526044, -0.1494953868420972, -1.487372075437836, 0.04531226841225139, -0.8785887917514404, 0.6773321050874577, -0.0983506278141217, 0.5597628029545394, 0.9487620637619515, -2.0252012328413445, -0.3325641975286207, -1.1258330017788327, 0.023802932989263906, 0.42532764883918267, -0.1719694477750812, 1.1366386876717014, -0.06950662371831764, -0.5610077364219385, 0.6924775343736279, -0.08202929488370111, 0.03632839803067284, 0.2035677562126695, 0.48902609842042033, 1.0804149661369027, -0.7425106537204975, -0.5702977393123885, -1.3826240552189546, -0.5228635824639636, 2.541990031610674, -0.3358484399232096, 0.2708627260856431, 0.3577767439219406, 1.0481739531875494, 0.41502512979161693, 1.945039667472124, -1.333971998047096, -1.6319888693166744, 1.8081668907285702, -1.126545357015281, 1.017481115516176, -0.8746343950821853, 1.613464623094451, -0.987275067228173, -0.7782780233402289, 0.9358137937887636, 1.2685709811916313, -0.9922941446951046, 0.6495420807278994, -0.5015976512021791, -1.4515930568861974, -0.3017145427194569, 0.22396206990737433, 0.2449168875921067, 2.4353212694888504, 0.17708064085180888, 1.6379030780705819, 1.3277860775740942, 1.9763199313325732, -0.7129095818443579, -1.2469376388413769, -0.6242116235182271, -0.48041188552500946, -0.14268548581723478, -1.6604837693733687, -0.03806802185256857, 0.6963957195724964, 1.0623750746697818, 0.6233441558858677, 0.36657697739573364, -2.295074935487194, 1.0845561474708743, 0.4905268784109729, 0.9510955040687479, -0.5026253874469225, 0.5855406556971665, -0.4674907407543193, -0.5608509773657036, -0.054561000082436986, -0.13488620479039842, -1.6100667806518532, -0.3709803597469035, 0.29582203102054655, 0.8410085106517383, -0.6645326878187746, 1.1367845966619665, -1.3201243250510812, 0.13674546078719402, 0.9775512964502551, -0.6593867653205457, -0.16315112660697673, -0.6429666213286755, 0.5269463017070531, 0.13689944560905168, 0.2704736580667669, 1.0956057892301136, 2.0377599847068084, 1.1896914387079371, -1.1056334740369136, -0.061419064162327903, 0.6558988396743295, 1.1616563231258492, 0.05233437675572931, -0.43279599457514883, -0.6310196056008639, -0.07017445588897313, 0.21859133324465385, 1.7464304327601714, -0.38374464463022673, -0.4116300533373271, -0.9012559637626759, -0.29838378562277373, 0.1776181377502974, 0.5337179529206251, -1.6927309440114802, 0.19627841167268098, -1.3375053577369045, 0.34292489957433187, 1.7252380623451755, 0.3893308049876548, -1.6138835583138924, 0.24320533391068808, -1.503402740971457, -0.9820815913055403, 0.02826537327258336, -0.8677808012629867, -0.15732458310810252, 1.6448055242437023, 0.3882793537178024, -0.4745596075074129, 0.1657838803136746, -2.6918015152661914, 0.7632486195032542, 0.6973513947209198, 0.4101471209696532, -2.2799074841609177, 1.284770153684539, 0.03995086580146711, -0.2991581182473426, -0.08304172354784842, 0.28042933971050626, -1.0923071947444258, 0.9164084413681113, -0.6812760370027394, 1.5480579290916134, 1.4837613730950547, 0.023182419970626405, -0.2668022486973583, -0.1188765567232481, -0.22450605274030175, -0.01068777580695019, -0.5681288373513323, -0.798016193089919, 1.112093456749927, 1.4289069908566108, -0.8325323358283204, 0.6527204397669472, 0.45576965736433434, -0.05177234665505003, 1.1825820243015825, 0.5633724078799881, -0.2598338582029702, 1.2260636343236992, -0.06502314120499497, 1.3554177601202826, 0.015378075446720483, 1.771795744777381, 0.19716116753361734, -0.9289545353666014, -0.01120548540552129, -1.6568561810835647, -0.9711632993719995, 0.2888457566302567, -0.33812030790826947, -0.6944997091883152, -0.08753361436324024, -1.0825962267681306, -0.4698117598324523, -0.31391779051735585, 0.5155485258897468, -1.3906426323765313, -0.08794713693189429, 1.323299166667676, -0.1281180737897692, -0.7313549630276092, 0.30727046798040325, 1.1752251844693715, -0.7441249207177553, 1.6052690350217986, 0.18649308224250258, 0.17892852927651728, -0.0995691575256924, 0.4348534499771249, 1.484991734895783, -0.5720258392859724, -0.08690696328546704, 0.7713939696120472, 1.1722789472312292, 1.9496467641354467, 0.22942775691626238, 0.7124499254350729, -0.40961823346856296, -1.5841557574786587, -0.5783735657948544, 1.7072885072301731, -0.9760682458530513, -0.7133260677207641, -0.17406636751269225, 1.5115376392568705, 0.3444982802650086, 0.5618620561647593, 0.7768151831330067, -1.8495980414473379, -0.022772431183660354, -0.2688258642531703, -0.2316501235768239, -0.4349049986098626, 0.09524082099485014, 0.18287945969711975, 0.9756566821517488, 1.2112951490716906, -0.8350588047652798, -0.7894781658614808, -0.8425885522378407, 1.0078366331542066, -2.170943513352494, -0.07697039348999336, 0.624710432231761, -1.5714538060400307, 0.25497055299290833, 0.9193656642088831, 1.0914383490187152, -0.2746559451582547, -0.24795001040712014, -0.1821963308600328, -0.6151863420266909, -0.07974289047525698, 0.864835252508244, -0.11852133979339911, -0.5867385141837459, 0.7425778869302543, 0.7772435416319093, 0.7418518577569089, 0.18477538422252776, -0.862469199675159, -0.7201960090993764, 0.7441788487719844, -0.44740979333359115, -2.011406066578824, -2.0397719472330946, 1.6317617740438857, 0.501298361621573, 0.46480805036189093, -0.6492071444203512, -0.9962577891956758, -1.176143672100762, -1.460358133281756, 0.91939184535992, -2.6115193413417344, -0.11701441464426601, 0.36330899947821516, -0.7619851206952822, -0.9791836397007687, 0.06605184536205168, 0.9852736131214399, 0.18316974821162169, -0.16385983370688456, 1.769889718870536, -0.7568083172666948, -0.07093554823462433, 0.34915804932546474, 0.04394955212420144, -0.3412151969411125, -0.037998909530440356, -0.7920940693112494, 0.23924283654785033, -0.7218726802077204, 0.756794397487571, 1.129998141517764, 0.06199671202439378, 1.5818825635871332, -2.0927309142911965, -1.009720388820037, -1.161041154747722, -0.8447671692136892, -1.0157929981350513, 0.7904271516718387, 0.7254384385818724, -0.603295486359894, 0.25924412778603606, -0.04640660866056171, -1.6000423263326133, 1.8143254523998487, -0.08862538404196012, 0.5332621638876169, 1.1045997215315637, -0.41584450160976266, 0.9441745490519653, 0.24798697093505728, 0.007684578291883661, 0.10198392659226542, 1.6199201784700468, -0.32528736620138143, -0.5826981266958557, -0.36325256797247957, 1.1471577477638135, 0.6178987140946427, 0.36972297251343633, 0.5437284650592201, -1.4459624565283546, 0.05792287061159475, 0.41648235426252744, -0.3752827187450667, 1.6652887251405053, -0.42564437336001554, 0.9761973006448895, -0.7275241033025399, 0.6934458083833381, -0.29112188437100084, 1.3282243166189927, -0.9536927875603478, -0.719434212611784, 0.6748136465043926, -0.03597354593983007, 1.94009058703115, 0.09882655123973512, 2.1053876175385304, 1.4185342675315131, 0.1206620765251783, 0.14903745714080963, 0.10442318495551679, -0.17795681161591564, 1.2580662909953826, -0.309432614193383, -1.0905944849250224, 0.4769931537784153, 0.42744787996997274, 0.015299040637353436, -0.35211140544489866, 0.2588719668529644, 0.39806242670614195, 0.0982957694556772, -0.3643039151707563, -1.661352851241187, -0.7050125329026734, -0.943960952206926, -1.4473953121799084, 0.6926023466644213, 0.284659435800313, 1.6730413075943111, 0.6423676343810131, 0.3968310937206259, -0.8342984203305135, -0.06635863092332817, 0.48133940282415283, -0.34365908316039695, 0.8195486752084361, -0.2781857864218842, -1.0136587780355568, -0.4538474341770635, -1.1337344789342048, -0.5150244531135606, 0.958566232938252, -0.16105129432877321, 0.38436738614303156, -0.5172439276028532, 0.23093709347387772, -0.30272270953081704, -0.21962749662435752, 0.9566459591875526, -0.788349928603636, -0.44952615913370747, 0.525332205545319, -0.5812548660484521, 1.2956320514491553, -1.752164482642109, -0.6047121066028011, -0.15329007945272555, -0.04110361189064399, 0.2075100652227872, -0.04955642332135181, -1.2847570979710345, 0.4806820630644186, 0.8112350665109486, 0.577438605043487, -0.5506815219471743, 0.7858766373478445, -1.101050840231404, -2.2244251571050273, 0.09434075969634925, 0.19198836106624168, 1.0670984516256519, -0.7989553140491875, -0.20794218769948203, 1.5326125420890269, 0.020895643272767377, 1.429434237396836, -0.09226519337744446, 0.2530160966559398, -1.2052909073582596, 0.18629835668130743, -1.1412717735009497, 1.2293983703310951, 0.20963090073800605, 0.2771037033747804, 1.1176243523307434, -1.7749390137644867, -0.6160566595276167, 0.37431077650255806, -0.628817850166509, -1.5457989014436102, 1.0413567521072367, -0.6687052895376355, 0.08823501338384936, -0.8504561089335623, 2.674041129993747, -1.5899356389768722, -0.12358228035838018, 0.4957660906211637, 0.31851942141963985, -2.077120767009975, -0.5844799194788266, 1.9510391355162264, -0.347560684365186, 1.3086755801775074, 0.34475766053720236, -0.4033872470813162, 1.1582973308383313, -1.0684599760113471, 0.529968393960725, -1.6526921510620116, 0.9524384542696674, -0.22909069471152455, 0.6652418786019982, 0.0030589233668147898, 0.11365610389048802, -0.2480098634476716, -1.739708416005498, 0.13128969246670458, -0.8124775515041727, 0.09211054412374194, -0.5372875032406812, -0.0032089521665293573, -0.8316736236057737, 1.5059153046848375, 0.5055489101297763, -0.9926899954404349, 0.06717218616117565, 0.7564225434228204, -1.1172446398752929, -0.0971278427942958, 0.1783634876571702, -0.43831740139818265, -0.9897246258630265, 0.42789947696918956, -1.1881782474146696, -2.2595621851300622, 0.6418731773450146, 0.2534262764606806, 0.4316556467189196, -0.1404488018967209, 0.8263074484867586, -0.14552757065621125, 0.0789242186302759, 0.8209702417714765, -0.25903816299191046, 0.6767653743426741, 1.6145117461589933, 0.6926264703024766, -0.32214772217430293, 0.9292349516554164, -1.0508805938355477, -2.749764645898245, 0.013188601563584493, 0.33055296889149677, -1.1958215283600067, 0.1405450269372766, -0.508425415799171, 1.4570136536517577, -1.0251431195020073, 1.0969073653806085, 0.2995765466625078, -0.7079203015696985, 0.1288388731533383, 0.7296772632654821, -0.5084827629757859, -0.9959874907849151, 0.7608364139386558, -1.1970996777698375, 1.9127937929371042, 0.38743478707694207, 0.21795474706617954, -0.29993899538603785, -1.4785086866034736, -1.5956467908439216, -1.2082094773229581, 0.03773293580577447, 0.790311941516555, 0.5111896121176778, -1.1940258469292004, 1.2227006637979814, 0.836882842830787, -1.4311686461788606, -1.2744460342013122, 1.4644637457684015, 0.9728193611804964, 0.555860074890682, -0.4409659816734968, -1.268835784551248, 1.830337701005201, 0.5659326920677746, -0.5949593269450844, -0.48933591057504616, -0.5902894454298842, 0.8313257587194035, -0.014541865211528828, 0.42819120074867917, 0.12344083343107326, -1.5259370836437376, -0.4422937354316872, 0.2663102136658507, 0.7711270876630171, -0.6631414912664546, 0.7010024223490354, 2.074527616332793, 0.1267033512168494, 0.5771332153363341, -0.1669943788998164, 0.37570932219774306, -0.009486467375681047, 0.6339720925542973, -1.100679804820569, 0.208089727845949, -0.9425617416684303, -1.4440593374039066, -0.4882367066101957, 0.7163657255326146, -1.0357588950466872, -3.0737220356886374, 0.2470950795522819, 0.2864288554119523, 0.1483978221958065, 2.1154989451643167, -0.4001965762118845, -0.6462203956080385, 1.1265359562700552, -1.2596675882237476, -1.0043123290637297, -1.2085727111478823, 1.4452610642730932, -1.5066630796353353, -0.26195290731609777, -0.14271399927968614, -0.6530276111308737, 0.31402361422899266, -0.615575261840529, -1.5382467581744872, -1.146638529472436, -1.2566936090246918, -0.11659270837613013, 0.35542964402643873, 0.02526277564568483, -1.7743572584114875, -0.7085383632824588, -0.63517949386522, 0.7100322417458258, 0.37725139473966673, -0.5759538564824571, 0.08180511402950946, 0.41407533287471754, -0.24200104577387313, -0.4385693241008144, 1.6526863394676001, -0.11474769466518762, -0.7778772946580198, -0.28839425476706665, -1.9107601252457116, 1.2251863883694925, -0.6102167805929645, 1.314166180001923, 0.33549111757526723, 0.1642165334041994, -0.2711391207536865, -0.7227241249586495, -0.20242746834599726, 0.511635243911443, 0.7803547739974653, -0.327423000785996, 0.3502846670812043, -0.6690281009028096, -1.603564129628161, 0.651294169982652, 1.5346475986331407, 0.6076831921328979, 0.09553225219459871, -0.7254748961580175, 0.5000694612537876, 0.41285641663749495, -0.6307563086891868, 0.10304359933774031, 0.6906693939179498, -0.6117088277209861, -0.37359085726781716, 0.6415372041475905, 0.5667199392606257, -0.471612466163586, -0.28409429557130345, -1.1000185275940002, 1.2078426552444212, 1.820822882585083, -0.049716516450738324, 0.48541676042055915, -0.24833733761952417, 1.9706194085315605, -1.9357972478544503, 1.2746428725319756, 0.8787450667483632, -0.5743399181816461, 1.146477625622449, 0.82904607165605, -0.6240307749078965, -0.5201093385684066, 1.7563590799610034, 0.9291759054010359, 0.03949431623274768, 0.09878351123218292, 0.4678794507416003, -0.21611204185496907, -1.9415038866503043, 2.2711411739440632, -0.7573422816803704, 0.4462925903632097, -0.7789087537529676, -0.5503182367952988, 0.5971424930574555, -0.07203878009168195, -0.5217028851935946, 1.082108216219426, 0.41790242250612963, -0.0679066357661384, -1.263509598957737, 0.8004808096290376, -0.2541222406082443, -0.2133433497515408, -0.26792364723437295, 0.20112906676382966, -0.32435552792181394, 0.23282205608740192, 2.2221675354748855, -1.4830106452698057, 0.9891247273398209, 0.2603986195227453, 0.4910300720533456, -1.357238648432873, -1.2514963996484836, -0.30125845912815724, 0.1928097450048526, 1.4448018223442105, 0.5625834185014028, -1.1979257187589254, -0.07857776228971138, 0.06045821558284647, 0.7133596907037718, -0.8010426610921747, 2.0440257915732163, -0.5915625781476785, 0.4614571279264127, -0.8323915586162163, -0.12281522077241769, -1.891751987785829, -1.436820011323204, -0.3375407922826853, -0.4583639388670451, -0.09352467965350812, -0.09376078246251955, -1.104789843452201, -1.9113071146131402, -0.3080107984257694, 0.6890879947469407, 1.6298325324990017, 1.7332383276272256, -0.6570721931348752, 0.5011093119580866, 1.4256340832824121, -1.6409542816000537, 0.3031292239641022, 2.064237216045931, -0.051705902095611905, -0.7832897005596622, -0.7454241686325258, 0.7295020332844333, 1.6375808311567626, -1.2299275543889183, -0.5600159935032863, 0.36276227989135124, -0.0841421034314566, -0.34511214955582953, 0.1013965878283084, -0.18098461747365058, 0.9191251794719164, 0.06765779742714738, -0.24919806799835556, -1.7584641099826481, -0.2408943706631287, 1.1586506587846426, -0.6941027599159496, -0.40284176463802435, -0.07218934233754541, -0.6866794606674014, -1.136814985867382, -1.0286542111302972, -1.0753215203338025, -0.523524292626774, -1.1218134808250722, -0.874089313385567, 0.09331272041243248, 0.9386738047553144, 0.09076349142987619, -1.2160470369625689, 0.27900325888755534, -1.3482125481314258, -2.0470437247953943, -0.40859660863279956, 0.2828811548709021, 2.4800984064132803, 0.19294989666278736, 0.28212861056292143, -1.610912083835489, -0.5315801864225906, 1.706608368850939, -1.8501729731293364, -0.630002988972623, 1.4757143328892797, -1.6396479208187233, -1.8371716642350544, -1.0742314481301545, 1.0754611432095824, -0.5378007226773498, -0.3178784375535398, 0.5735335996600629, 0.4868994275345122, -0.21549627729467807, -0.16640172916066487, 0.908080649370133, 2.173437328284729, 0.4190344084566232, -0.9569146506578511, 0.45263575951706014, 1.778059009562198, 1.4488553145210796, 0.07467679612778716, -1.3459068501008828, 1.0900502612985628, 1.8272758673855272, -0.23894381261705294, 0.12043314967623445, -0.5773200285051094, 0.5216921180645022, -1.5092635778866117, 0.18102168205190566, 0.8965052639560143, 0.9201255573471795, -1.2903912922821366, 0.9873211691804024, 1.172724388329733, 0.20376377055663986, 2.138854170658406, -0.9316113182700534, -1.2475280594655904, 0.417911924644604, 0.3104385253889033, 0.8962967028920321, -0.5778036698087538, 1.0180641994003492, 1.978139527067393, 0.37723162368545265, -0.3153731448300482, -0.28043983006620493, 1.2268346250368896, -0.17227523540812437, 0.2580612644636763, 0.7839164309552376, -1.6857109421253955, -1.3003167935540005, 1.933409068497346, -0.720369637396077, 0.5104055429987321, -1.08388129713197, 0.23369005993420508, -0.8857461821887489, 0.21884110679487903, 0.3399839311138383, 2.2927612097100596, -0.1302670929713838, -0.2227227695346543, -1.4346253879586792, -0.8344086694038684, -0.7002516953857244, 0.43509420272323845, 0.8609631356011878, -0.43270705045183616, -0.24001073577599197, 0.28609176501217787, 0.7031717689478829, 0.23204270200931182, 2.1505272334979897, 0.2861763181933207, -0.7584547841123832, 0.5168757252968688, -1.1092933224722437, 0.28264197275089215, -0.7359352757039123, 0.7696916736749783, 1.1693904145377578, -0.03894762164617204, 0.6641135169499479, -0.7147964181583462, -0.3596311141562558, -1.8435871360153697, -1.0008815336080084, -0.8745896149619665, -1.7854772192044157, 1.4101601051693955, 0.3989081511969654, -0.46138352582140285, -2.070033977081843, -0.18644561980439622, 1.2400855648899223, -1.164136732605302, -0.7927090251554685, 0.5630168884076489, 1.1671379510254194, 2.231868835700232, 0.4565350508345933, -0.3389202312449233, -1.5275179745183336, 0.3230936836149417, 0.6082923125809354, -1.385778896370543, 0.4933263314478739, -1.9751095768562033, -0.2065779574546836, -0.19565497391904002, 0.19507228882058708, 1.1491676003071556, 0.47753659551701444, 1.267566892973097, 1.2699972267061581, -0.14783471801597317, 1.3947086641636515, 0.13849276493060986, 1.543713937406089, 0.8793567120723491, -0.19166319681661234, -2.178011595451856, -0.047935435051166216, 1.0519017754831546, -1.1503195176998693, 0.9590735535318957, -0.4101942648351055, -0.9291595233845755, 0.04827969552760872, -0.006591472103865717, -0.8287084685787525, 0.510991782645471, 1.1993354234468527, -0.6249200800653011, 0.06906024810652203, -0.2810131831119284, 1.7132565332176783, 0.3715878450725023, 0.4232188686511501, -0.23751681917622205, -0.284138784599415, -0.9181240192735334, 1.7200351673814782, -0.5646085076036653, 0.9511857419563984, -1.2703881921689144, 1.044280055990386, 0.03786689772227966, 1.4182728427165774, 0.8337325218228854, -1.0587247347181652, -0.5031113248889103, 0.8873021806079839, -1.6837264548806383, -0.963353987660909, -0.3925379775035674, 0.030351645171583227, -0.1480784901933993, 0.5971587614103617, -0.5966536682782796, -0.32585054539846936, -1.2881189235714545, 1.4626168790196996, 0.4876451579697916, -2.5512587798294053, -0.22746942805830464, 0.22714076786745147, -1.2367287849167479, -1.4958341332392378, 0.8404569974160938, -0.5250803172042454, 1.1030214409483563, -0.9430810970721388, 0.8419017021480036, 0.10747778668821155, -0.3872490592960608, -0.5972525446631549, 0.9643730616194118, -1.9150859939615104, -0.16132999883201363, 2.247013458758037, 0.2793924489497806, 0.22445447609820876, -0.5935321078971101, -1.021619853538392, -0.5669336330928147, 1.51072676166332, -0.4577459477554841, 0.2856756020469671, 1.3003683403048245, 1.6681883000570241, 0.29140173625397836, 1.4448227513845624, -0.49337735263206095, 0.3063926208053877, -0.8839906748898476, -0.8508338033152001, 0.32884664967404276, 0.8225807552240499, 0.28615338220135916, -0.6459677898912536, 0.456084692916367, 1.1816323117108978, 0.005750129390048088, -0.23080308943910496, 1.2329424071409298, -3.103298270774514, 1.2457064642869893, -1.438732143788353, -0.5069669088042135, 1.9410370006144513, -0.680135288988108, -0.684441394790031, -0.9299498749943689, -1.0023257557431406, -0.20085573890294844, 2.1892107786913413, 1.0539082768590986, -0.12946159481571648, -0.9603859816501762, -0.6759566438229674, 0.6063321523892387, -2.04080451980182, 0.3448387208567922, 0.6188680405937481, -2.53483233750232, 0.4718381152261103, 0.5204602861759604, -0.37294274011868744, -1.0608122326322948, 0.876995543974861, 1.6208103493973607, -0.10501804755065293, -1.144605534391477, -0.11545809967020526, -1.5254381527091445, 0.704971452166678, -1.1385423962074352, -1.0702260829994228, -0.8042670395297246, -1.9958053298936345, 0.06149218869846654, 0.0034778293679331336, -1.6309611881902848, -1.579450043003391, -0.812854397163873, -1.3440391096930395, -0.7992158635130223, -0.7307305666236779, 0.563033821782763, 0.5929740847991084, -0.4072124328227139, -0.9597031772508735, 0.6326426393413165, -1.26743591058185, 0.012961789096372823, 1.3690236683244486, 0.5626351995527971, 0.3930969343026333, 0.3804639938085295, -0.7055289460485151, -1.1137071825718237, -0.32401279261679405, -0.25360651639701537, -0.3629288727538312, 0.40309857005433064, 1.6124254520554622, 1.145346015655076, 0.18482864793147852, 1.0146132489781052, 0.5762713361888263, -0.4302922143454036, -0.7781673008888688, 0.3165266777932903, -1.3210033528584464, 0.47419403592709836, -0.02875008939599337, 0.14714621419460175, 1.4797797158907586, 0.6830428568029596, -1.051712101999051, 1.194440018218743, -1.1642432883696971, 1.04395640790416, -0.3903019504585278, -0.9469832104094259, -0.15920476878484313, 1.2958603176641055, 1.2195200287127348, -0.18102374320360753, -1.1645019636692635, 0.31512163398607973, 0.4112140952226413, 0.799068132489134, -0.194553356476797, -0.24713828227948162, 1.1162744704218956, -0.5100587555940508, -1.7306779449877614, -1.3161139044492312, 0.6341932724742192, -0.7347849903121613, 0.9645835907250738, 1.5026031951659682, -1.4760744795962333, -0.06731259930616487, 0.7042872721353796, -0.5335137254930029, 0.0716602316769604, 0.6043539708627061, 0.11692324897196178, -0.05768277951806856, 1.1162713764449659, 1.8796989655172829, 0.43088724829364505, 2.38688392018114, 0.29310955804355704, 0.7462035664728303, -1.4923332297842067, -1.2280466714373701, 1.0734872965346725, 0.5262032697307816, 0.7693518738655505, -0.28211783832137927, -0.0290036682453748, -2.931607725174539, -0.61001449056912, -0.7025484586715276, 0.7759827155138221, -0.19166960568471056, 0.9694902932312826, -1.04530914742025, 0.9727250463770896, 0.06310226379325519, 1.0818373134406507, 1.1047859736064884, -0.9784634968885791, -0.9146592081968249, 0.15142025533299056, 0.23328387697346153, 1.482068026300734, 1.4017194403233817, 0.5839385941999119, -3.499091269336771, 0.6898991159514024, -0.76367161011779, 0.271889761583164, -0.2648955270675521, -0.05132512877225392, -1.1445243383154795, -0.9341941596618715, -0.2758301417114395, -0.12386224872925095, 0.3429318698923175, -0.20380183235337243, -1.442620516648269, -0.08857891832728218, -0.5685844707827721, 0.31653125437081814, -0.7630932541957661, 1.0549727437086984, -0.23903901917404402, 0.13881369002402355, -0.277058267581059, -1.1828348650720584, 0.41122688905564325, -0.11093465300197233, 0.05700186250342231, -0.8530057143017865, -1.1330141754733023, -0.788433518694048, 0.0410432386990952, -0.2526837758051426, -0.7365204396871289, 2.374275605228078, 0.24647701310468878, 0.6189709904599635, -0.3036782549769593, -0.6671553020762782, 0.9568820989023366, -1.079178482400065, 0.29500583173695416, -0.9289020636769935, 0.7791599475788574, -0.1983372320556875, -0.49097598732772324, -1.2327667862306246, -0.463786196952311, -0.7468162049628737, 1.8137576226948215, 0.4907226689424396, 0.3853672976926061, 1.405986757744362, 0.006148904928010884, 0.5727386445488017, 0.09397490448508446, -0.35506525618267476, 1.7351653184984497, -0.39253263749716394, 0.12196757373920339, 0.38004382713166907, 0.7006111800175882, 0.4987705634227367, -0.7645303868257485, -0.5146892069655717, -0.5835515156473441, -1.1547773890712476, -0.05898296492235115}; + + +static const double gemm_checksum[64] = {-45.1525872455864, -53.56382313501859, 75.37190918194668, 81.51135315789973, -15.61415231827229, -60.60307561986312, 47.96036541651724, 65.73237574275608, -4.4727051387073935, -33.991042035520486, -26.416772446199882, 1.7860331769884112, 63.625439870165444, 11.62205632780551, -15.064831482590407, -47.33578990077392, 31.789427261811298, 45.60325302655279, 46.39784351481784, -41.63175282633895, -37.58415419207174, 52.811751728757756, 17.491718577483027, 95.99796882635259, -31.290609142980582, 56.18913870959351, -9.784406747318776, -47.798468293167936, -68.85425504150908, 14.518540879027748, 12.444849316598145, 27.044449299453333, 34.41753472048874, 37.24202029503455, 0.0015372059941842764, 56.49727200521621, 42.08187683985865, -60.80036174635206, -41.51354371054238, 25.39617622130028, 64.16199934240205, -49.723260643988866, -67.73199521937849, 14.061632619059395, -46.723037598164815, -1.4946901268404673, -19.516162199239137, 13.487866069963179, -23.19623129877386, 56.32942826668456, 67.64491765822369, 25.427295331888367, -3.9993280938311173, 70.5746407371274, 68.98981144920677, 11.672168486094769, 10.78240530670366, 31.25611590676771, 34.98838254510045, -129.95599475048968, 14.933419865189286, 35.74263691521163, 85.87277962177788, 93.68226272318962}; + + diff --git a/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/layer.h b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/layer.h new file mode 100644 index 00000000..ba49ef72 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/data/layer.h @@ -0,0 +1,134 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +typedef enum { FP64 = 8, FP32 = 4, FP16 = 2, FP8 = 1 } precision_t; + +/** + * @struct gemm_layer_struct + * @brief This structure contains all parameters necessary for GEMM. + * @var gemm_layer_struct::M + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::M_p + * M divided by number of compute cores + * @var gemm_layer_struct::N + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::K + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::TA + * Transpose matrix A + * @var gemm_layer_struct::TB + * Transpose matrix B + * @var gemm_layer_struct::TILE_M + * Tile factor across M dimension + * @var gemm_layer_struct::TILE_N + * Tile factor across N dimension + * @var gemm_layer_struct::TILE_K + * Tile factor across K dimension + * @var gemm_layer_struct::A + * Pointer to matrix A + * @var gemm_layer_struct::B + * Pointer to matrix B + * @var gemm_layer_struct::C + * Pointer to matrix C + * @var gemm_layer_struct::ALPHA + * constant factor: A * B + ALPHA * C + * @var gemm_layer_struct::dtype + * Precision of GEMM + * @var gemm_layer_struct::expand + * Use expanding DOTP instructions + */ +typedef struct gemm_layer_struct { + uint32_t M; + uint32_t M_p; + uint32_t N; + uint32_t K; + + uint32_t TA; + uint32_t TB; + + uint32_t TILE_M; + uint32_t TILE_N; + uint32_t TILE_K; + + double *A; + double *B; + double *C; + + uint32_t ALPHA; + + precision_t dtype; + uint32_t expand; +} gemm_layer; + +/** + * @struct conv_layer_struct + * @brief This structure contains all parameters necessary for Convolutional + * layers + * @var conv_layer_struct::CO + * Number of output channels + * @var conv_layer_struct::CI + * Number of input channels + * @var conv_layer_struct::IH + * Height of input feature map + * @var conv_layer_struct::IW + * Width of input feature map + * @var conv_layer_struct::OH + * Height of output feature map + * @var conv_layer_struct::OW + * Width of output feature map + * @var conv_layer_struct::FH + * Height of filter + * @var conv_layer_struct::FW + * Width of filter + * @var conv_layer_struct::pad + * Padding on all sides + * @var conv_layer_struct::ifmap + * Pointer to input feature map + * @var conv_layer_struct::weights + * Pointer to weights + * @var conv_layer_struct::ofmap + * Pointer to output feature map + * @var conv_layer_struct::TILE_CI + * Tiling factor of input channel + * @var conv_layer_struct::cluster2cluster + * Flag for enabling cluster 2 cluster communication + * @var conv_layer_struct::im2col + * Flag for enabling im2col + GEMM + * @var conv_layer_struct::gamma + * Pointer to gamma for BatchNorm + * @var conv_layer_struct::beta + * Pointer to beta for BatchNorm + * @var gemm_layer_struct::dtype + * Precision of Convolution layer + */ +typedef struct conv_layer_struct { + // CONV2D + uint32_t CO; + uint32_t CI; + uint32_t IH; + uint32_t IW; + uint32_t OH; + uint32_t OW; + uint32_t FH; + uint32_t FW; + uint32_t pad; + + double *ifmap; + double *weights; + double *ofmap; + + uint32_t TILE_CI; + uint32_t cluster2cluster; + uint32_t im2col; + + // BATCHNORM + double *gamma; + double *beta; + + precision_t dtype; +} conv_layer; diff --git a/sw/spatzBenchmarks/dp-fmatmul-4x4vl/kernel/dp-fmatmul.c b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/kernel/dp-fmatmul.c new file mode 100644 index 00000000..372aaf5d --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/kernel/dp-fmatmul.c @@ -0,0 +1,394 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Matheus Cavalcante, ETH Zurich + +#include "dp-fmatmul.h" +#include + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +void matmul(double *c, const double *a, const double *b, const unsigned int M, + const unsigned int N, const unsigned int P) { + if (M <= 4) { + matmul_2xVL(c, a, b, 0, M, N, P, 0, P); + } else if (M <= 8) { + matmul_4xVL(c, a, b, 0, M, N, P, 0, P); + } else { + matmul_8xVL(c, a, b, 0, M, N, P, 0, P); + } +} + +// --------------- +// 2xVL +// --------------- + +void matmul_2xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) { + + unsigned int p = p_start; + while (p < p_end) { + // Calculate the vl + size_t gvl; + asm volatile("vsetvli %[gvl], %[vl], e64, m8, ta, ma" + : [gvl] "=r"(gvl) + : [vl] "r"(p_end - p)); + + const double *b_ = b + p; + double *c_ = c + p; + + for (unsigned int m = m_start; m < m_end; m += 2) { + const double *a_ = a + m * N; + const double *a__ = a_; + + asm volatile("vle64.v v16, (%0);" ::"r"(b_)); + const double *b__ = b_ + P; + + double *c__ = c_ + m * P; + + double t0, t1; + + t0 = *a__; + a__ += N; + t1 = *a__; + + unsigned int n = 0; + + while (n < N) { + a__ = a_ + ++n; + + asm volatile("vle64.v v24, (%0);" ::"r"(b__)); + b__ += P; + + if (n == 1) { + asm volatile("vfmul.vf v0, v16, %0" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmul.vf v8, v16, %0" ::"f"(t1)); + t1 = *a__; + } else { + asm volatile("vfmacc.vf v0, %0, v16" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v16" ::"f"(t1)); + t1 = *a__; + } + + a__ = a_ + ++n; + + if (n == N) + break; + + asm volatile("vle64.v v16, (%0);" ::"r"(b__)); + b__ += P; + + asm volatile("vfmacc.vf v0, %0, v24" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v24" ::"f"(t1)); + t1 = *a__; + } + + asm volatile("vfmacc.vf v0, %0, v24" ::"f"(t0)); + asm volatile("vse64.v v0, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v8, %0, v24" ::"f"(t1)); + asm volatile("vse64.v v8, (%0);" ::"r"(c__)); + } + + p += gvl; + } +} + +// --------------- +// 4xVL +// --------------- + +void matmul_4xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) { + + unsigned int p = p_start; + while (p < p_end) { + // Calculate the vl + size_t gvl; + asm volatile("vsetvli %[gvl], %[vl], e64, m4, ta, ma" + : [gvl] "=r"(gvl) + : [vl] "r"(p_end - p)); + + const double *b_ = b + p; + double *c_ = c + p; + + for (unsigned int m = m_start; m < m_end; m += 4) { + const double *a_ = a + m * N; + const double *a__ = a_; + + asm volatile("vle64.v v16, (%0);" ::"r"(b_)); + const double *b__ = b_ + P; + + double *c__ = c_ + m * P; + + double t0, t1, t2, t3; + + t0 = *a__; + a__ += N; + t1 = *a__; + a__ += N; + t2 = *a__; + a__ += N; + t3 = *a__; + + unsigned int n = 0; + + while (n < N) { + asm volatile("vle64.v v20, (%0);" ::"r"(b__)); + b__ += P; + + a__ = a_ + ++n; + + if (n == 1) { + asm volatile("vfmul.vf v0, v16, %0" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmul.vf v4, v16, %0" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmul.vf v8, v16, %0" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmul.vf v12, v16, %0" ::"f"(t3)); + t3 = *a__; + } else { + asm volatile("vfmacc.vf v0, %0, v16" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v4, %0, v16" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v16" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmacc.vf v12, %0, v16" ::"f"(t3)); + t3 = *a__; + } + + a__ = a_ + ++n; + + if (n == N) + break; + + asm volatile("vle64.v v16, (%0);" ::"r"(b__)); + b__ += P; + + asm volatile("vfmacc.vf v0, %0, v20" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v4, %0, v20" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v20" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmacc.vf v12, %0, v20" ::"f"(t3)); + t3 = *a__; + } + + asm volatile("vfmacc.vf v0, %0, v20" ::"f"(t0)); + asm volatile("vse64.v v0, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v4, %0, v20" ::"f"(t1)); + asm volatile("vse64.v v4, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v8, %0, v20" ::"f"(t2)); + asm volatile("vse64.v v8, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v12, %0, v20" ::"f"(t3)); + asm volatile("vse64.v v12, (%0);" ::"r"(c__)); + } + + p += gvl; + } +} + +// --------------- +// 8xVL +// --------------- + +void matmul_8xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) { + + unsigned int p = p_start; + while (p < p_end) { + // Calculate the vl + size_t gvl; + asm volatile("vsetvli %[gvl], %[vl], e64, m2, ta, ma" + : [gvl] "=r"(gvl) + : [vl] "r"(p_end - p)); + + const double *b_ = b + p; + double *c_ = c + p; + + for (unsigned int m = m_start; m < m_end; m += 8) { + const double *a_ = a + m * N; + const double *a__ = a_; + + asm volatile("vle64.v v18, (%0);" ::"r"(b_)); + const double *b__ = b_ + P; + + double *c__ = c_ + m * P; + + double t0, t1, t2, t3, t4, t5, t6, t7; + + t0 = *a__; + a__ += N; + t1 = *a__; + a__ += N; + t2 = *a__; + a__ += N; + t3 = *a__; + a__ += N; + t4 = *a__; + a__ += N; + t5 = *a__; + a__ += N; + t6 = *a__; + a__ += N; + t7 = *a__; + + unsigned int n = 0; + + while (n < N) { + a__ = a_ + ++n; + + asm volatile("vle64.v v20, (%0);" ::"r"(b__)); + b__ += P; + + if (n == 1) { + asm volatile("vfmul.vf v0, v18, %0" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmul.vf v2, v18, %0" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmul.vf v4, v18, %0" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmul.vf v6, v18, %0" ::"f"(t3)); + t3 = *a__; + a__ += N; + asm volatile("vfmul.vf v8, v18, %0" ::"f"(t4)); + t4 = *a__; + a__ += N; + asm volatile("vfmul.vf v10, v18, %0" ::"f"(t5)); + t5 = *a__; + a__ += N; + asm volatile("vfmul.vf v12, v18, %0" ::"f"(t6)); + t6 = *a__; + a__ += N; + asm volatile("vfmul.vf v14, v18, %0" ::"f"(t7)); + t7 = *a__; + } else { + asm volatile("vfmacc.vf v0, %0, v18" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v2, %0, v18" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmacc.vf v4, %0, v18" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmacc.vf v6, %0, v18" ::"f"(t3)); + t3 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v18" ::"f"(t4)); + t4 = *a__; + a__ += N; + asm volatile("vfmacc.vf v10, %0, v18" ::"f"(t5)); + t5 = *a__; + a__ += N; + asm volatile("vfmacc.vf v12, %0, v18" ::"f"(t6)); + t6 = *a__; + a__ += N; + asm volatile("vfmacc.vf v14, %0, v18" ::"f"(t7)); + t7 = *a__; + } + + a__ = a_ + ++n; + + if (n == N) + break; + + asm volatile("vle64.v v18, (%0);" ::"r"(b__)); + b__ += P; + + asm volatile("vfmacc.vf v0, %0, v20" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v2, %0, v20" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmacc.vf v4, %0, v20" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmacc.vf v6, %0, v20" ::"f"(t3)); + t3 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v20" ::"f"(t4)); + t4 = *a__; + a__ += N; + asm volatile("vfmacc.vf v10, %0, v20" ::"f"(t5)); + t5 = *a__; + a__ += N; + asm volatile("vfmacc.vf v12, %0, v20" ::"f"(t6)); + t6 = *a__; + a__ += N; + asm volatile("vfmacc.vf v14, %0, v20" ::"f"(t7)); + t7 = *a__; + } + + asm volatile("vfmacc.vf v0, %0, v20" ::"f"(t0)); + asm volatile("vse64.v v0, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v2, %0, v20" ::"f"(t1)); + asm volatile("vse64.v v2, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v4, %0, v20" ::"f"(t2)); + asm volatile("vse64.v v4, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v6, %0, v20" ::"f"(t3)); + asm volatile("vse64.v v6, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v8, %0, v20" ::"f"(t4)); + asm volatile("vse64.v v8, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v10, %0, v20" ::"f"(t5)); + asm volatile("vse64.v v10, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v12, %0, v20" ::"f"(t6)); + asm volatile("vse64.v v12, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v14, %0, v20" ::"f"(t7)); + asm volatile("vse64.v v14, (%0);" ::"r"(c__)); + } + + p += gvl; + } +} diff --git a/sw/spatzBenchmarks/dp-fmatmul-4x4vl/kernel/dp-fmatmul.h b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/kernel/dp-fmatmul.h new file mode 100644 index 00000000..dfc27ae6 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/kernel/dp-fmatmul.h @@ -0,0 +1,45 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Matheus Cavalcante, ETH Zurich + +#ifndef DPFMATMUL_H +#define DPFMATMUL_H + +void matmul(double *c, const double *a, const double *b, const unsigned int M, + const unsigned int N, const unsigned int P); + +inline void matmul_single_unrolled(double *c, const double *a, const double *b, + const unsigned int N, const unsigned int P, + unsigned int vl) + __attribute__((always_inline)); +inline void matmul_2xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) + __attribute__((always_inline)); +inline void matmul_4xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) + __attribute__((always_inline)); +inline void matmul_8xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) + __attribute__((always_inline)); + +#endif diff --git a/sw/spatzBenchmarks/dp-fmatmul-4x4vl/main.c b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/main.c new file mode 100644 index 00000000..eb6dcc6e --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/main.c @@ -0,0 +1,163 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Matheus Cavalcante, ETH Zurich + +#include +#include +#include + +#include DATAHEADER +#include "kernel/dp-fmatmul.c" + +#ifndef KERNEL_SIZE +#define KERNEL_SIZE 4 +#endif + +double *a; +double *b; +double *c; + +// Verify the matrices +int verify_matrix(double *matrix, const double *checksum, + const unsigned int num_rows, const unsigned int num_columns) { + for (unsigned int i = 0; i < num_rows; ++i) { + double sum = 0; + for (unsigned int j = 0; j < num_columns; ++j) { + sum += (double)matrix[i * num_columns + j]; + } + + double diff = sum - (double)checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } + return 0; +} + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Set matrix dimension + kernel_size = KERNEL_SIZE; + + // Work over complete P dimension + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + + if (kernel_size == 2) { + matmul_2xVL(c, a, b, m_start, m_end, gemm_l.K, gemm_l.N, p_start, p_end); + } else if (kernel_size == 4) { + matmul_4xVL(c, a, b, m_start, m_end, gemm_l.K, gemm_l.N, p_start, p_end); + } else if (kernel_size == 8) { + matmul_8xVL(c, a, b, m_start, m_end, gemm_l.K, gemm_l.N, p_start, p_end); + } else { + return -2; + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * num_cores * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { + int error = + verify_matrix(c, (const double *)gemm_checksum, gemm_l.M, gemm_l.N); + + if (error != 0) { + printf("Error core %d: c[%d]=%u\n", cid, error, (int)c[error]); + return error; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-fmatmul-4x4vl/script/gen_data.py b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/script/gen_data.py new file mode 100755 index 00000000..42ace34e --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/script/gen_data.py @@ -0,0 +1,696 @@ +#!/usr/bin/env python3 +# Copyright 2022 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Author: Tim Fischer + +import numpy as np +import torch +import torch.nn as nn +import argparse +import pathlib +import hjson + +np.random.seed(42) +torch.manual_seed(42) + +global verbose + + +def array_to_cstr(a, fmt=float): + out = "{" + if fmt == float: + if isinstance(a, np.ndarray): + a = a.flat + if isinstance(a, torch.Tensor): + a = a.numpy().flat + for el in a: + out += "{}, ".format(el) + else: + for sign, exp, mant in zip( + a["sign"].numpy().flat, + a["exponent"].numpy().flat, + a["mantissa"].numpy().flat, + ): + value = sign * 2**7 + exp * 2**2 + mant + out += "0x{:02x}, ".format(value) + out = out[:-2] + "}" + return out + + +def emit_header_file(layer_type: str, **kwargs): + + file_path = pathlib.Path(__file__).parent.parent / "data" + emit_str = ( + "// Copyright 2022 ETH Zurich and University of Bologna.\n" + + "// Licensed under the Apache License, Version 2.0, see LICENSE for details.\n" + + "// SPDX-License-Identifier: Apache-2.0\n\n" + ) + + if layer_type == "Conv2d": + file = file_path / "data_conv2d.h" + emit_str += emit_conv2d_layer(**kwargs) + elif layer_type == "GEMM": + file = file_path / ("data_" + str(kwargs["M"]) + "_" + str(kwargs["N"]) + "_" + str(kwargs["K"]) + ".h") + emit_str += emit_GEMM_layer(**kwargs) + elif layer_type == "BatchNorm": + file = file_path / "data_batchnorm.h" + emit_str += emit_batchnorm_layer(**kwargs) + elif layer_type == "MaxPool": + file = file_path / "data_maxpool.h" + emit_str += emit_maxpool_layer(**kwargs) + elif layer_type == "FusedConv": + file = file_path / "data_fusedconv.h" + emit_str += emit_fusedconv(**kwargs) + with file.open("w") as f: + f.write(emit_str) + + +def emit_conv2d_layer(name="conv2d", **kwargs): + ifmap = kwargs["ifmap"] + ofmap = kwargs["ofmap"] + weights = kwargs["weights"] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + _, fh, fw, _ = weights.shape + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"conv_layer {name}_l = {{\n" + layer_str += f"\t.CO = {co},\n" + layer_str += f"\t.CI = {ci},\n" + layer_str += f"\t.IH = {ih},\n" + layer_str += f"\t.IW = {iw},\n" + layer_str += f"\t.OH = {oh},\n" + layer_str += f"\t.OW = {ow},\n" + layer_str += f"\t.FH = {fh},\n" + layer_str += f"\t.FW = {fw}\n" + layer_str += "};\n\n\n" + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += ( + f"static double {name}_checksum[{oh}][{ow}] = " + + array_to_cstr(torch.sum(ofmap, dim=-1)) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = " + + array_to_cstr(ifmap) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_weights_dram[{co}][{ci}][{fh}][{fw}] = " + + array_to_cstr(weights) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ofmap_dram[{oh}][{ow}][{co}] = " + + array_to_cstr(ofmap) + + ";\n\n\n" + ) + + return layer_str + + +def emit_linear_layer(input, weights, ofmap): + + layer_str = "" + return layer_str + + +def emit_GEMM_layer(name="gemm", **kwargs): + mat_A = kwargs["A"] + mat_B = kwargs["B"] + mat_C = kwargs["C"] + result = kwargs["result"] + + m = kwargs["M"] + n = kwargs["N"] + k = kwargs["K"] + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"const gemm_layer {name}_l = {{\n" + layer_str += f"\t.M = {m},\n" + layer_str += f"\t.N = {n},\n" + layer_str += f"\t.K = {k},\n" + layer_str += f'\t.TA = {int(kwargs["ta"])},\n' + layer_str += f'\t.TB = {int(kwargs["tb"])},\n' + layer_str += f'\t.ALPHA = {kwargs["alpha"]},\n' + layer_str += f'\t.dtype = FP{kwargs["prec"]},\n' + layer_str += f'\t.expand = {kwargs["expand"]}\n' + layer_str += "};\n\n\n" + + ctypes = {"64": "double", "32": "float", "16": "__fp16", "8": "char"} + + dtype = ctypes[str(kwargs["prec"])] + if dtype != "char": + layer_str += ( + f'static {dtype} {name}_A_dram [{m}*{k}] __attribute__((section(".data"))) = ' + + array_to_cstr(mat_A) + + ";\n\n\n" + ) + layer_str += ( + f'static {dtype} {name}_B_dram [{k}*{n}] __attribute__((section(".data"))) = ' + + array_to_cstr(mat_B) + + ";\n\n\n" + ) + layer_str += ( + f'static {dtype} {name}_C_dram [{m}*{n}] __attribute__((section(".data"))) = ' + + array_to_cstr(mat_C) + + ";\n\n\n" + ) + layer_str += ( + f"static const {dtype} {name}_checksum[{m}] = " + + array_to_cstr(torch.sum(result, dim=-1)) + + ";\n\n\n" + ) + else: + layer_str += ( + f"static {dtype} {name}_A_dram [{m}][{k}] = " + + array_to_cstr(kwargs["bits_A"], fmt="char") + + ";\n\n\n" + ) + layer_str += ( + f"static {dtype} {name}_B_dram [{k}][{n}] = " + + array_to_cstr(kwargs["bits_B"], fmt="char") + + ";\n\n\n" + ) + layer_str += ( + f"static {dtype} {name}_C_dram [{m}][{n}] = " + + array_to_cstr(kwargs["bits_C"], fmt="char") + + ";\n\n\n" + ) + + return layer_str + + +def emit_batchnorm_layer(name="batchnorm", **kwargs): + + ifmap = kwargs["ifmap"] + ofmap = kwargs["ofmap"] + beta = kwargs["beta"] + gamma = kwargs["gamma"] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"conv_layer {name}_l = {{\n" + layer_str += f"\t.CO = {co},\n" + layer_str += f"\t.CI = {ci},\n" + layer_str += f"\t.IH = {ih},\n" + layer_str += f"\t.IW = {iw},\n" + layer_str += f"\t.OH = {oh},\n" + layer_str += f"\t.OW = {ow},\n" + layer_str += "};\n\n\n" + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += ( + f"static double {name}_checksum[{oh}][{ow}] = " + + array_to_cstr(torch.sum(ofmap, dim=-1)) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = " + + array_to_cstr(ifmap) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_beta_dram[{ci}] = " + array_to_cstr(beta) + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_gamma_dram[{ci}] = " + array_to_cstr(gamma) + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ofmap_dram[{oh}][{ow}][{co}] = " + + array_to_cstr(ofmap) + + ";\n\n\n" + ) + + return layer_str + + +def emit_maxpool_layer(name="maxpool", **kwargs): + + ifmap = kwargs["ifmap"] + ofmap = kwargs["ofmap"] + k = kwargs["kernel_size"] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"conv_layer {name}_l = {{\n" + layer_str += f"\t.CO = {co},\n" + layer_str += f"\t.CI = {ci},\n" + layer_str += f"\t.IH = {ih},\n" + layer_str += f"\t.IW = {iw},\n" + layer_str += f"\t.OH = {oh},\n" + layer_str += f"\t.OW = {ow},\n" + layer_str += f"\t.FH = {k},\n" + layer_str += f"\t.FW = {k},\n" + layer_str += "};\n\n\n" + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += ( + f"static double {name}_checksum[{oh}][{ow}] = " + + array_to_cstr(torch.sum(ofmap, dim=-1)) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = " + + array_to_cstr(ifmap) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ofmap_dram[{oh}][{ow}][{co}] = " + + array_to_cstr(ofmap) + + ";\n\n\n" + ) + + return layer_str + + +def emit_fusedconv(name="fusedconv", **kwargs): + + ifmap = kwargs["ifmap"] + kernel = kwargs["kernel"] + bn_k = kwargs["bn_k"] + bn_l = kwargs["bn_l"] + ofmap = kwargs["ofmap"] + ofmap_before = kwargs["ofmap_before"] + ifmap_padded = kwargs["ifmap_padded"] + + padding = kwargs["padding"] + + if kwargs["depthwise"]: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + fh, fw, co = kernel.shape + ci = co + ih_pad, iw_pad, _ = ifmap_padded.shape + elif kwargs["chw_layer"]: + ci, ih, iw = ifmap.shape + oh, ow, co = ofmap.shape + co, ci, fh, fw = kernel.shape + _, ih_pad, iw_pad = ifmap_padded.shape + else: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + _, fh, fw, _ = kernel.shape + ih_pad, iw_pad, _ = ifmap_padded.shape + + ctypes = {"64": "double", "32": "float", "16": "__fp16", "8": "char"} + + dtype = ctypes[str(kwargs["prec"])] + + layer_str = "#include \n" + layer_str += '#include "conv2d.h"\n\n' + layer_str += "kernel_fp32 k = {\n" + layer_str += f"\t.ch_in = {ci},\n" + layer_str += f"\t.ch_out = {co},\n" + layer_str += f"\t.dim_in_x = {iw},\n" + layer_str += f"\t.dim_in_y = {ih},\n" + layer_str += f"\t.dim_kernel_x = {fw},\n" + layer_str += f"\t.dim_kernel_y = {fh},\n" + layer_str += f"\t.dim_out_x = {ow},\n" + layer_str += f"\t.dim_out_y = {oh},\n" + layer_str += f'\t.padding_y_top = {padding["padding_y_top"]},\n' + layer_str += f'\t.padding_y_bottom = {padding["padding_y_bottom"]},\n' + layer_str += f'\t.padding_x_left = {padding["padding_x_left"]},\n' + layer_str += f'\t.padding_x_right = {padding["padding_x_right"]},\n' + layer_str += f'\t.stride_x = {kwargs["stride"]["stride_x"]},\n' + layer_str += f'\t.stride_y = {kwargs["stride"]["stride_y"]},\n' + layer_str += f'\t.flag_relu = {kwargs["flags"]["flag_relu"]},\n' + layer_str += f'\t.flag_batch_norm = {kwargs["flags"]["flag_batch_norm"]},\n' + layer_str += ( + f'\t.flag_y_accumulate_start = {kwargs["flags"]["flag_y_accumulate_start"]},\n' + ) + layer_str += ( + f'\t.flag_y_accumulate_end = {kwargs["flags"]["flag_y_accumulate_end"]},\n' + ) + layer_str += "};\n\n" + layer_str += f'uint32_t dw = {kwargs["depthwise"]};\n' + layer_str += f'uint32_t chw_layer = {kwargs["chw_layer"]};\n' + + layer_str += ( + f"static {dtype} {name}_pInBuffer_dram[{ih_pad}][{iw_pad}][{ci}] = " + + array_to_cstr(ifmap_padded) + + ";\n\n" + ) + layer_str += f"static {dtype} {name}_pWeight_dram[{co}][{fh}][{fw}][{ci}] = {array_to_cstr(kernel)};\n\n" + layer_str += f"static {dtype} {name}_lambda_dram[{ci}] = {array_to_cstr(bn_l)};\n\n" + layer_str += f"static {dtype} {name}_kappa_dram[{ci}] = {array_to_cstr(bn_k)};\n\n" + layer_str += f"static {dtype} {name}_pOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap_before)};\n\n" + layer_str += f"static {dtype} {name}_pCheckOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap)};\n\n" + + return layer_str + + +def rand_data_generator(shape, prec, alt=False): + if prec == 64: + return torch.randn(shape, requires_grad=False, dtype=torch.float64), {} + elif prec == 32: + return torch.randn(shape, requires_grad=False, dtype=torch.float32), {} + elif prec == 16: + if alt: + return torch.randn(shape, requires_grad=False, dtype=torch.bfloat16), {} + else: + return torch.randn(shape, requires_grad=False, dtype=torch.float16), {} + elif prec == 8: + sign = torch.randint( + 0, 2, shape, requires_grad=False, dtype=torch.uint8 + ) # -1 or 1 + exponent = torch.randint( + 0, 16, shape, requires_grad=False, dtype=torch.uint8 + ) # < 0b01111 + mantissa = torch.randint( + 0, 4, shape, requires_grad=False, dtype=torch.uint8 + ) # can be arbitrary + bits = {"sign": sign, "exponent": exponent, "mantissa": mantissa} + # TODO: not actually correct + return ((-1.0) ** sign.double()) * (2.0 ** (exponent.double() - 15.0)) * ( + 1.0 + mantissa.double() / (2**2) + ), bits + + +def conv2d(ifmap, weights, padding=1, stride=1): + n, ci, ih, iw = ifmap.shape + co, _, fh, fw = weights.shape + + conv2d = nn.Conv2d(ci, co, (fh, fw), padding=((fh - 1) // 2, (fw - 1) // 2)) + conv2d.weight = nn.Parameter(weights, requires_grad=False) + conv2d.bias = nn.Parameter( + torch.zeros_like(conv2d.bias, dtype=weights.dtype), requires_grad=False + ) + ofmap = conv2d(ifmap) + + return ofmap + + +def max_pooling(ifmap, kernel): + n, ci, ih, iw = ifmap.shape + max_pool = nn.MaxPool2d(kernel_size=kernel) + ofmap = max_pool(ifmap) + + return ofmap + + +def batchnorm(ifmap): + n, ci, ih, iw = ifmap.shape + bn = torch.nn.BatchNorm2d(ci) + bn.weight.requires_grad = False + bn.bias.requires_grad = False + running_mean = torch.randn_like(bn.running_mean, requires_grad=False) + running_var = torch.rand_like(bn.running_var, requires_grad=False) + gamma = bn.weight / torch.sqrt(running_var + bn.eps) + beta = bn.bias - running_mean * bn.weight / torch.sqrt(running_var + bn.eps) + ofmap = ifmap * gamma.unsqueeze(-1).unsqueeze(-1) + beta.unsqueeze(-1).unsqueeze(-1) + + return ofmap, gamma, beta + + +def fused_conv( + ifmap, weights, bn_k, bn_l, padding, stride, bn, relu, accumulate, depthwise +): + + ih, iw, ci = ifmap.shape + if not depthwise: + co, fh, fw, _ = weights.shape + else: + fh, fw, co = weights.shape + ci = co + + ifmap_padded = torch.zeros( + ih + padding["padding_y_top"] + padding["padding_y_bottom"], + iw + padding["padding_x_left"] + padding["padding_x_right"], + ci, + requires_grad=False, + dtype=ifmap.dtype, + ) + ifmap_padded[ + padding["padding_y_top"] : ih + padding["padding_y_top"], + padding["padding_x_left"] : iw + padding["padding_x_left"], + ] = ifmap + + # Don't cover undefined behaviour when there are steps without a complete kernel window + if (ifmap_padded.shape[0] - (fh - 1) - 1) % stride["stride_y"] != 0: + print("Warning: rounding h output dimension") + if (ifmap_padded.shape[1] - (fw - 1) - 1) % stride["stride_x"] != 0: + print("Warning: rounding w output dimension") + + ofmap = torch.zeros( + (ifmap_padded.shape[0] - (fh - 1) - 1) // stride["stride_y"] + 1, + (ifmap_padded.shape[1] - (fw - 1) - 1) // stride["stride_x"] + 1, + co, + ) + if accumulate: + ofmap_before = torch.randn_like(ofmap, requires_grad=False) + else: + ofmap_before = torch.zeros_like(ofmap, requires_grad=False) + + if verbose: + print(ifmap.shape, ifmap_padded.shape, ofmap.shape) + + if depthwise: + # depthwise Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride["stride_y"]): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride["stride_x"]): + for c in range(co): + ofmap[ + h // stride["stride_y"], w // stride["stride_x"], c + ] = torch.dot( + ifmap_padded[h : h + fh, w : w + fw, c].flatten(), + weights[:, :, c].flatten(), + ) + else: + # Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride["stride_y"]): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride["stride_x"]): + for c in range(co): + ofmap[ + h // stride["stride_y"], w // stride["stride_x"], c + ] = torch.dot( + ifmap_padded[h : h + fh, w : w + fw].flatten(), + weights[c].flatten(), + ) + + ofmap += ofmap_before + + # BatchNorm + if bn: + ofmap = ofmap * bn_k + bn_l + + # ReLU + if relu: + ofmap = torch.nn.functional.relu(ofmap) + + return ofmap, ofmap_before, ifmap_padded + + +def main(): + + parser = argparse.ArgumentParser(description="Generate data for kernels") + parser.add_argument( + "-c", + "--cfg", + type=pathlib.Path, + required=True, + help="Select param config file kernel", + ) + parser.add_argument("-v", "--verbose", action="store_true", help="Set verbose") + + args = parser.parse_args() + + global verbose + verbose = args.verbose + + with args.cfg.open() as f: + param = hjson.loads(f.read()) + + if param["prec"] == 64: + dtype = torch.float64 + elif param["prec"] == 16: + dtype = torch.float16 + elif param["prec"] == 8: + dtype = None + else: + dtype = torch.float32 + + if param["kernel"] == "Conv2d": + ifmap = torch.randn( + 1, + param["channels"]["in"], + param["input_dim"]["height"], + param["input_dim"]["width"], + requires_grad=False, + dtype=dtype, + ) + weights = torch.randn( + param["channels"]["out"], + param["channels"]["in"], + param["filter"]["height"], + param["filter"]["width"], + requires_grad=False, + dtype=dtype, + ) + + ofmap = conv2d( + ifmap, + weights, + padding=param["filter"]["padding"], + stride=param["filter"]["stride"], + ) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + weights = weights.permute(0, 2, 3, 1) + kwargs = {"ifmap": ifmap, "weights": weights, "ofmap": ofmap} + emit_header_file("Conv2d", **kwargs) + + elif param["kernel"] == "GEMM": + mat_A, bits_A = rand_data_generator((param["M"], param["K"]), param["prec"]) + mat_B, bits_B = rand_data_generator((param["K"], param["N"]), param["prec"]) + mat_C, bits_C = rand_data_generator((param["M"], param["N"]), param["prec"]) + + result = param["alpha"] * mat_C + torch.matmul(mat_A, mat_B) + + if param["transpose_A"]: + mat_A = mat_A.T + if param["transpose_B"]: + mat_B = mat_B.T + + kwargs = { + "A": mat_A, + "B": mat_B, + "C": mat_C, + "result": result, + "M": param["M"], + "N": param["N"], + "K": param["K"], + "ta": param["transpose_A"], + "tb": param["transpose_B"], + "alpha": param["alpha"], + "prec": param["prec"], + "expand": param["expand"], + "bits_A": bits_A, + "bits_B": bits_B, + "bits_C": bits_C, + } + + emit_header_file("GEMM", **kwargs) + + elif param["kernel"] == "BatchNorm": + ifmap = torch.randn( + 1, + param["channels"]["in"], + param["input_dim"]["height"], + param["input_dim"]["width"], + requires_grad=False, + dtype=dtype, + ) + + ofmap, gamma, beta = batchnorm(ifmap) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {"ifmap": ifmap, "beta": beta, "gamma": gamma, "ofmap": ofmap} + emit_header_file("BatchNorm", **kwargs) + + elif param["kernel"] == "MaxPool": + ifmap = torch.randn( + 1, + param["channels"]["in"], + param["input_dim"]["height"], + param["input_dim"]["width"], + requires_grad=False, + dtype=dtype, + ) + + ofmap = max_pooling(ifmap, param["kernel_size"]) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {"ifmap": ifmap, "ofmap": ofmap, "kernel_size": param["kernel_size"]} + emit_header_file("MaxPool", **kwargs) + + elif param["kernel"] == "FusedConv": + ifmap = torch.randn( + param["dim_in_y"], + param["dim_in_x"], + param["ch_in"], + requires_grad=False, + dtype=dtype, + ) + if not param["depthwise"]: + kernel = torch.randn( + param["ch_out"], + param["dim_kernel_y"], + param["dim_kernel_x"], + param["ch_in"], + requires_grad=False, + dtype=dtype, + ) + else: + kernel = torch.randn( + param["dim_kernel_y"], + param["dim_kernel_x"], + param["ch_in"], + requires_grad=False, + dtype=dtype, + ) + + bn_k = torch.randn(param["ch_out"], requires_grad=False) + bn_l = torch.randn(param["ch_out"], requires_grad=False) + + ofmap, ofmap_before, ifmap_padded = fused_conv( + ifmap, + kernel, + bn_k, + bn_l, + param["padding"], + param["stride"], + param["flags"]["flag_batch_norm"], + param["flags"]["flag_relu"], + not param["flags"]["flag_y_accumulate_start"], + param["depthwise"], + ) + + if param["chw_layer"]: + ifmap = ifmap.permute(2, 0, 1) + ifmap_padded = ifmap_padded.permute(2, 0, 1) + kernel = kernel.permute(0, 3, 1, 2) + + kwargs = { + "ifmap": ifmap, + "ifmap_padded": ifmap_padded, + "ofmap": ofmap, + "ofmap_before": ofmap_before, + "kernel": kernel, + "bn_k": bn_k, + "bn_l": bn_l, + "padding": param["padding"], + "stride": param["stride"], + "prec": param["prec"], + "flags": param["flags"], + "depthwise": param["depthwise"], + "chw_layer": param["chw_layer"], + } + emit_header_file("FusedConv", **kwargs) + + else: + print("No valid kernel selected") + + +if __name__ == "__main__": + main() diff --git a/sw/spatzBenchmarks/dp-fmatmul-4x4vl/script/matmul.json b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/script/matmul.json new file mode 100644 index 00000000..201f68fd --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-4x4vl/script/matmul.json @@ -0,0 +1,17 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Solderpad Hardware License, Version 0.51, see LICENSE for details. +// SPDX-License-Identifier: SHL-0.51 + +// Parameters for a GEMM + +{ + kernel: "GEMM" + M: 64, + N: 64, + K: 64, + alpha: 0, + transpose_A: false, + transpose_B: false, + prec: 64, + expand: 0 +} diff --git a/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/.gitignore b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/.gitignore new file mode 100644 index 00000000..dacc7e49 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/.gitignore @@ -0,0 +1 @@ +data_gemm.h diff --git a/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/data_16_16_16.h b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/data_16_16_16.h new file mode 100644 index 00000000..eb2a17b6 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/data_16_16_16.h @@ -0,0 +1,30 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 16, + .N = 16, + .K = 16, + .TA = 0, + .TB = 0, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +static double gemm_A_dram [16*16] __attribute__((section(".data"))) = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033}; + + +static double gemm_B_dram [16*16] __attribute__((section(".data"))) = {0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774}; + + +static double gemm_C_dram [16*16] __attribute__((section(".data"))) = {0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222}; + + +static const double gemm_checksum[16] = {3.53318139833275, 18.910557186514914, 17.061557051251178, -17.86682606914221, -5.920568815540228, -16.80427557391132, 12.345786410219814, 24.565576004988085, 3.617111620044957, -18.771063102425778, 43.637805771956224, -17.699257074021574, -7.3420911665199835, 8.052332093906525, -16.822597494037367, 2.274275182397295}; + + diff --git a/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/data_32_32_32.h b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/data_32_32_32.h new file mode 100644 index 00000000..848709cf --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/data_32_32_32.h @@ -0,0 +1,30 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 32, + .N = 32, + .K = 32, + .TA = 0, + .TB = 0, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +static double gemm_A_dram [32*32] __attribute__((section(".data"))) = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342}; + + +static double gemm_B_dram [32*32] __attribute__((section(".data"))) = {1.8448885093030065, 0.572007132100381, -0.9020532459752512, 1.423932009681719, 1.1116421563744774, -0.609918694875925, 1.0390897743423966, -0.1305603800084962, 0.7049709576256773, -0.30985592801910117, -0.6566307196626123, -0.005304890708390932, 0.47214213858952303, 1.247922968974058, -1.434297700901899, -0.5773871236273995, 1.9951334816061994, -0.9419344596787323, -1.3864755081036366, -0.15540161000210675, 0.28089640344542804, 0.6902199813822665, 0.055137779443554184, -0.1316442026885298, -0.47920924486264665, -0.37134570058665717, 1.1612473442212157, 1.862246649641681, 1.1127961330998304, -0.449879365783737, -0.4581821737978766, 2.681801981114757, 0.622613137075688, -0.5264955185026189, 1.7456452297639542, -0.0032580522874735246, -0.08412480377121889, -0.09847618283385187, 0.5573182638994464, -1.1975598741016937, -0.25042914816475237, -0.24189491229960913, 0.1717462405241003, 0.5303343737606813, 0.8246091313323292, 1.010839700197812, -0.8902436270883701, 0.5757151238996234, -0.6241388306405901, 1.0306895727537915, 0.5437796109495969, -0.37254092473885336, 0.17302563058445183, 0.16431412357817202, -0.297796251553928, 1.0415794322065468, 0.27195785052081917, 0.8941462516437774, 1.8901581231152924, 0.16318485053532772, -0.42772830220525987, 2.22854455207779, 2.85934273014681, 0.620608819397525, -2.0773600718526932, 0.5102128857829208, -1.3425473236398795, 1.0664992078500592, -1.3978347586933288, -0.5082793586733352, 1.0293339145628106, 1.1953652639556394, -0.7592324149843712, -0.9927853948011712, -0.8401102070638347, 0.3955192048365272, 0.34215369871376844, -2.8791873832700547, -0.0421115170793464, 0.2803818171599705, -0.9401015854505796, -0.08972003336849564, -0.640338334227558, 2.0182530686564895, -0.7235603815620858, 0.6081345501547663, 1.7752306448722606, 0.031457706909880166, 0.899919260122491, -0.5364177308537464, 0.9954498087197619, 0.21059455079709405, 0.8203366802620794, 0.15551004552008937, -0.5905994619497847, 1.4571504499595769, -0.05879218788301025, 0.6116700031464317, -1.3093298447872528, -1.9790524548585495, 2.327922240143418, 0.5346029134452727, -0.2220392426765117, 1.0350931612437495, 0.579583179532083, -0.09395716249601935, -0.5606885258433681, -0.6916360198922066, -0.25495705935359947, -0.23051091319332653, 0.5226206406896088, -0.6035154511863011, 0.5592128760780101, -0.3223643795390148, 0.5138781656523993, -0.7592214987689807, 2.417337785331285, 0.17028885180838357, -0.18586838199027028, 0.40185795512569217, -0.5670525260070235, 0.14141128561714333, 0.536910685665978, -0.04468791360092496, -0.13107111869784893, 0.8500574802035589, -1.2986776963277358, 1.3299424270339977, -0.14883240827467462, 2.0486968982261202, -0.9909136952855094, -0.3600241005246587, 0.1602748303156346, 0.07168780603661637, 0.30202523579276225, -0.582835004754739, 1.0356927036283528, -1.0360800724687276, 1.993616236752697, -1.2365797403960304, 1.8548042098231963, 0.20499605949096963, 1.2010757276760113, 2.057751677950784, 0.2883899362101988, 1.6134203350119927, -0.9640624060585024, -1.1213275218434526, 0.6531743202785056, 0.2277981765470329, -0.8359861748374583, 0.5680057504067159, 0.28253652479051733, 1.1165497781562674, -0.5714364972858512, -0.09854463425203973, 2.395067138296113, 0.3316175009075528, -0.6884736402196919, -2.0231033737037047, -1.6070787249452574, -0.7165117692039605, -0.7553512437574256, 1.9280259690970352, -0.26733976223106926, -0.0673955495394241, -0.536406291194771, -0.7093789385459298, 1.744020696757244, -0.8126325347024919, -1.5969922983164335, -1.2686890383326754, -0.9291972010711246, 0.9031672530350638, 2.269233244076525, 0.40988533123157295, -1.7212576593177709, 0.7166427020983424, 0.3627363765292881, -1.5589258141736047, 1.3206137582172544, 0.22241582722694822, -0.5254557201726808, 0.4487811587655208, 1.4717430631656925, 0.6002964569533693, -0.7795697135851043, 0.610220453599741, 0.9796702201792316, -1.7646934144734967, -0.8420374077504474, 0.5166078996711738, -1.2752325216668503, -0.44546162876683887, -0.15696203458936964, -1.1862950949600968, 0.37408049529043713, -0.38524482721238545, 0.7842727318028115, 1.1538879916827052, -0.9454918159942679, -1.405125889371723, 1.0636457383418108, -0.7818062318843579, 0.8829476857079316, 0.8745221489151239, 0.6929310708225009, -0.39888705398196755, 0.9994754870230482, -1.666570871939696, 0.7961227485818212, 1.22745042848715, -0.6004867918118467, -0.5361669868684229, 0.4874774972013086, -1.890981268173993, -0.3938745167085202, 0.3139908715338594, -1.1261703254618494, 1.0966132130656288, -0.31621524862176864, 0.002668556331391873, -1.9226574720130702, -1.6380306920827867, -0.9710154441004514, 0.4763931829831273, -0.8587268321219447, 0.420689070376205, 0.6054083058374654, -0.7954680985571436, -0.20058537792435566, -0.19994075887630136, -1.895096099561938, -2.091666612524903, 0.0004974458415376117, -0.4080026099220151, -0.44867368855172923, 0.5700168037125656, -0.19142620469203458, 0.7614369056740486, 1.185949052557463, 0.6170757026559303, 1.650950629705662, 1.7703882319843902, -0.49884117664872785, -0.35212526236220854, 0.42973964778170143, -0.20813077355955645, 1.3420338787636203, 0.7397153430022654, 0.8838113044537101, -1.3377145615324746, -1.855416176565475, -0.8136295403887579, -0.7714846254184806, -1.2122365561438313, 2.8536471208979433, 1.3032022234889244, 0.4760756036980966, 0.04693766693045954, -0.5984449522911452, 0.7900271874549623, -1.969917184758775, 0.3503211304018375, -0.0008137206583593385, -0.6256281405885463, -0.3510577387659576, -0.13894191854589522, 1.199426224041857, 0.12132847331734303, -1.4608604499664002, -0.22948805550230816, 0.051902944512615914, -0.019119222645881905, -0.9757273564713941, 1.8473014772988974, 0.5263294510598043, 0.07053654437136757, 0.9547242579775002, -1.1278918446449648, 0.07734968673664687, -0.5799201931033439, 0.31678992899871267, -0.7432885872434457, 1.4335843287274053, -0.9465575672564711, 0.4879570553679617, -0.6623786574250906, 1.0259687873673153, -0.02932551729568818, -0.7891190307945258, 0.29564308636903597, -0.34927374642138076, 0.8136749201194545, 0.620245645223459, -0.43951272221042564, 0.46265400794768385, -1.869391305207575, 0.48193063531644537, -0.095540604007519, -0.16987767760770991, -0.19495692375454912, -0.08834646865917613, 1.2824833220745997, -0.13585649309388986, 0.6657305691375492, 0.6391954485208522, 0.3751449189250956, -0.19786418069226533, -1.1107085792532714, 0.16954868116772995, 0.0976102127373202, -0.22307281025633455, 0.5329264170127224, -0.7498434517605724, -2.2463793716496183, -2.030956619344538, 0.3469149176826813, 0.9569335370728702, 2.0063313680095405, -0.07729526178752644, -0.4820520883676177, -0.3642766707809299, 0.2721281447061126, -1.0173409588721802, -0.22291945275506458, 1.415842532715168, 0.3487504850213432, 0.3522443413976922, 0.9077850533771569, -1.0749257488285808, -2.072058608998672, -1.189733419675099, -0.5102992245699747, -0.5266987160364432, 0.38803217663099665, 1.2098862819236005, -1.0678208861159952, -1.6484340857205138, -0.6773093361468119, 0.19847908080770726, 0.43435982710100896, -0.06608174057217904, -0.4396025725464862, -0.06842865579333862, 0.0757461775588834, 0.945043974186398, -0.8271942633183708, -1.0171091372766654, 1.0045993947511778, 0.1215505686746317, 1.4850546815331578, 2.90124785320579, 0.9193799243970369, 1.4109003071198862, 0.9342714574384375, 0.7408981122108215, -1.501451886644788, -0.8528561599738412, -1.4502786649323292, -0.060333190180409904, -0.06215199874022316, 0.6962114020423124, 0.1737374420722428, 1.9987164641082087, 1.7922666332582982, 0.39258330183185886, -0.1955663537656974, 1.185062371327038, -0.24969600604011072, 0.5062590514320574, 0.7374924629427219, -1.0887076741188921, 0.9197089124134338, 1.4198792364404926, 1.13966263395932, 0.8820726768303652, 1.1454947730219187, 0.3830272308939737, 1.0330281295592512, 0.1958899672744909, 0.2610941691615629, -1.6928895703415128, 0.08949085370524765, -1.6099870201619317, 0.6146813355739139, 1.0232681185457035, -0.6120020584064751, -1.0855633146564565, 0.9035218354603602, 1.199279110133032, 0.21247320768848982, -0.8276719054682797, 0.34353353507020123, 0.7795065425753578, -0.31690501369321267, 0.08404007020790137, -2.0217996637419504, 1.4723540101508836, -0.5690532461968705, 0.7600008532793323, -0.09696213550941978, 0.49872412917775666, -0.6501714914135994, -1.4186463922997374, 0.4572717163404996, -0.6798540159722049, 0.8800683478695012, 1.1617475981837795, -1.2832223575262358, 0.01811044220476568, 0.5665224930728516, -1.7263899334779662, 1.0788518344074862, 0.5214662704113713, 2.207851490608375, -0.8847331619490723, -0.22393893146647295, 0.2604924986511237, -1.065720378325982, -2.4784405095403583, -1.397338674255014, 0.12733886071252698, -0.962990797187108, -0.4158341820319732, 0.8295084980828852, 1.129362539634652, 1.4448964367746397, -0.27202686813738103, -1.1376577043818543, 1.1669873661563108, -0.5526532153140147, 0.17431258922451653, -0.08674760587893786, -0.02662111271639052, -0.5787298408624987, -0.46418731609632075, -0.7338887598113502, 0.0037124668666011543, -0.4390315224865612, -0.5445053993271162, -1.1731970859703744, 1.557358039479812, 0.8235296531498106, 1.3403087264740343, 1.429798559996883, 0.8488733195590197, 0.6549815456848764, 0.5939979568631141, 0.571492357564412, 1.2838646589587073, 0.1968309175885564, 0.0125526247658802, -0.588379978175527, -1.459242663662794, -0.16058887298258492, -0.30513433025622483, 1.3958505210549053, 1.112993202632025, -0.6980224325960035, -1.1242172376210566, -0.04898442309094625, 1.7267743114344978, 0.3596144012700469, -0.359544416669036, 0.20255944297423273, 0.3676083732835713, 0.8149334833372205, 0.9572709382349587, -1.4303046720322652, -1.9840617027488057, 0.8352543400425974, -1.6685708178136907, 2.264358935950376, -1.1013820170238586, 0.6513073416660541, 0.5222811637226092, 1.6332065112971001, -0.18689854597886257, -0.8293836626550278, 1.2200036287220326, -0.948302395460301, 0.6269276746157323, -1.8413847347422614, 2.975492133500898, 0.5732253342246594, -1.876866690355531, -1.4492981424636866, -0.7472606420064576, 1.4876059940278459, -0.18934308720894036, 0.13020040181367357, 0.5331924552669381, 0.9913637676227545, -2.6437681894231435, -0.6461446779487539, -0.8660236542618331, 0.47452405238110584, -0.4790606483008819, 1.5321216571398668, -0.1636651452718229, -1.0332700298347521, 0.9892360243254097, -0.6416390065504894, -0.604900108391799, 1.535151051934949, -0.18334305957155458, -0.35686131551458816, -0.3292665860742744, 1.7738534285950363, -0.33142178700758057, -0.6235361522388553, 2.8510918408680124, -0.7318379837818061, -0.6194976835634578, 0.8118142867300344, 0.43758672808479837, -0.7150266134830248, -1.9406394619639358, 0.8679359705510734, 1.4354983174276066, 2.182868585469132, -1.1741764376487758, -0.9331282790464878, -0.2820770772397286, -1.9483310573156807, 0.31916263280850626, 0.6390360973776629, 0.5428826848071413, 1.5065733412421733, -0.47412499801799024, 0.2569777134684139, -0.18464959701431985, 0.707300443390559, 0.16960249404796737, -0.4185489493255141, -1.4509136246246903, 1.2609714707832425, -0.048585931918069494, -0.7466175012069378, -0.805144923911586, -1.6081696632587419, 0.2108448776087118, -0.626995367880836, -1.25582651238933, 0.03382654045677089, -0.45889090147992845, -0.2896301303848118, 0.4922810729687261, -0.11561150744781683, -2.0656398984212156, -0.15730996466261546, 0.7768976641774541, -0.7044791153933941, 0.8524501556338853, -0.3340090119288742, 0.08640562469139157, -0.059343641632369076, 0.1619562886451128, 0.15046570393731748, 2.7590525887014667, 0.22065232253703387, -1.3774088537570648, -0.29499229105904573, -2.4537835279476146, -0.8341158090629236, -0.43274207019506117, -0.14358452337381933, -0.8677025372132973, 1.0347284219371276, 0.48707383897255696, -0.06866257813543919, 0.2937618607534383, -1.161359070554741, 0.21001598604651528, 0.4159405289601604, -1.5043005890504582, 0.7372524407400997, -0.5334658384258053, 0.2567239585606655, -0.6299751233419266, 0.024035161278926437, 1.1244580271586777, 0.40836377201711715, -1.8739717517634698, -0.26853628794603523, 0.37761170331094157, -0.0050819767759484056, 0.009684786386250501, 0.2636875321138984, -0.08553945533113934, 0.33475288490766125, 3.4237712468503103, 0.744628978129671, -0.9096458649167182, -0.6827694846192245, 1.6425500385797525, -0.3900596403135759, -0.9509348833512404, 0.3229857369820825, 0.44175525248542286, 0.7931445181078505, -0.06988463350772384, 0.6819214512912009, -0.06839741587635721, 0.4734557044072717, -0.9215746025534817, -0.6195377638236638, 0.809667872762421, -0.4103668947560523, 1.749809215983805, 1.001647179219911, -1.7659243403508436, 0.15383957509758237, -1.2779831760745572, 0.2669263499455465, -1.4256436904962992, 0.040903466313536106, -0.9342945534262868, 0.7618231087000356, -0.30058739646889815, -0.5446714593776727, -0.4802089660362259, -1.1432227238603179, 0.5174957898345334, -0.26915089392842423, 0.3387263580347474, 1.2480509452812811, 1.9521841872543286, 0.9788396157168914, 1.001353646981955, 0.40906237950521346, 1.2380051766092655, -1.1622188132692055, 0.03880070372652659, -1.3157311036080868, 0.21159132832002855, 0.8251757971684041, -0.5943198935837782, -2.059249774668197, 0.4455096569146938, -1.5530036453685645, 0.24334104727505046, 1.9679440499519993, -0.14949638764508505, -0.1787890634869671, -0.8694565617159877, -0.02701940155527667, -2.327140574554701, -0.3493894186252125, -0.02711649643869937, -0.2125855163161856, -0.8626785926902893, 0.5125620452253108, 0.835126803441082, 0.4370304631746852, -1.4380277943151216, -0.15463871080474192, 1.427347151863727, -0.03594236427723813, -0.9987807222089615, 0.15285084511988004, -0.4453218737326093, -0.8774506171339351, -1.1301294572944445, 0.27932962145356316, 0.666378400360196, 1.0765917423686246, 0.2439549047998887, -1.00859364816552, -1.757528113553421, -0.7922512836603205, 1.4533777876325222, -1.508283926364581, -0.9454297378995183, -1.010459444419853, 0.0754147254586834, -1.2810537542822706, -0.7736354580243704, -0.811961379205231, 1.3638217257964536, 1.077496971491708, 0.5810375830537511, 0.3551271969105679, -0.043876281219692365, -1.0850332393056394, 1.109609770945844, -1.0337911892064604, -1.8807813444109054, -1.2265714811977597, 0.3936172157806796, 1.0778363941578806, -0.8644861643567047, -0.9521061052105131, -0.3765845085538441, 0.17855829086113095, 3.5953876986672255, -0.8488543068716493, 0.3153960860722241, -0.4124980314658376, -0.25957042793288443, -0.47466672457489073, 1.251745108485312, 1.9089401526170708, 0.08093711755806289, -2.256777082059624, 0.324177164165908, 1.062105790670867, 0.2886235312894662, -1.2983305542602077, -1.5005961252940438, -1.4260396412546816, 0.12572172650108407, -1.371518218990482, 0.5998645930096181, 1.2473531605780193, -0.9358060344486432, 0.49295286102524044, -0.3494884497630849, -0.9308402692062906, 0.3630283557686611, 1.7611911540817928, -0.7229213248269448, -0.4323877136781272, 0.09012216684853104, 1.2693688025965613, -0.05609728003750563, 0.2942911094966865, -0.7311965810915613, -0.21592794240105817, -0.4553253041620339, -0.13454483357874214, 0.3803586083160361, 1.2706120469339364, -0.868299098407261, 1.59925697493435, 0.5433594960509881, 0.5675579810614343, 1.9203285366540146, -0.5030970822643847, 0.8421602450844566, -2.316838061301056, -0.4201799135308444, 1.99145358910135, -1.1698739038813457, -0.48526560569590693, -0.664516213841126, -2.1784216925774254, -0.05592421534349575, -0.3735237580415768, -0.22461780649945687, -0.6015415198184665, -0.525149213451578, 0.20817264425532928, 1.0421502948740846, -0.24223189745187212, -1.5453453515930158, -0.565952007041841, -0.453301777620275, -0.26956499012979956, 0.6612001818907256, 0.6566383906736746, -0.7620891486112908, 0.4039229699126195, -0.03287499950025958, -1.728025679680301, -0.1351648490652594, 2.979844425070889, 0.21407749737048995, -0.41165660712793767, -0.8911684286042895, -0.49236046031915226, 0.08810619424950021, -1.4051338603716423, -2.3224238004285707, -0.3410883214075715, -0.12686282703773566, 0.23609553256542695, 0.23545196849666264, 1.371312887239788, 0.2318653380046876, 0.08464059182127714, 0.19008151199377613, 1.7562161679995132, 1.181971977987871, -0.8172519034071913, -0.31575932783054717, 0.2503737947188051, 0.028618079946139307, -1.723439924093865, -0.7885161782185284, -0.594263411951702, 0.5644435285732619, 0.8811148239408805, 0.7833035854562042, 1.0392171119322082, 1.8371154985886862, -1.2420591801850245, -0.23753657646460405, 0.19313774990116925, 0.5053866496884525, 0.3283028032403514, -2.225396433305001, -1.096249407991655, -0.9149883628966105, 0.21230053589695053, -0.6023002440801871, 1.4512382841053386, -1.5038113250304717, 0.11558860384831522, -0.06338166413389325, 0.22201020504142566, 1.4399368526678278, -1.536144263111769, -2.717778670757182, 0.1168039138752043, -0.5866181500734327, -1.5377442224077151, -2.0944415177169953, 0.7870016058915985, 0.8949404757727989, -1.2488701028525535, 1.8425900504983932, -0.8820586551654293, 0.31200772222466067, -1.4538990075976945, -0.4972028753925732, 0.30783322485667264, 0.534974938780373, -2.0058475112711514, -0.4541796977906028, -0.5567288589208035, -0.7063829736735863, 0.08317733846151737, -0.9039919874880522, -2.359353503098415, 0.11425878193276912, 0.64706666019578, 0.4359959376210403, -0.09281069482301793, -0.5382334133878951, -0.633983343063867, 0.49835413266819356, -0.6176307398455463, -0.58828999383318, -1.7334295099492802, -0.8643497543156821, 0.689824201173873, 1.524711206099055, -1.548684848469057, 1.2284263304913572, 0.19868751298961676, 0.11836116797672853, -0.06310268278090121, 0.7479073753397237, 0.19168429076964602, -2.501823109461287, -0.673945501033193, 1.2235988334078434, -1.1636116702452202, -0.22624467871026605, 0.5071009399593757, 0.6279007880533118, 0.5692262629524086, -1.7255159569914225, 0.6397252376986503, 0.23342621054073684, 0.21399479954715414, 1.1788921695577175, -0.4946728962147127, -1.8310549540520982, -0.3690830035843751, -0.42224783195423987, 0.32423026673778105, -0.4402301947763417, 0.7465865033369634, 0.43199223950922194, -1.939062107304355, -0.10453191019598392, 0.8153426406136252, -0.7800663274052761, -0.4477465519532468, 0.01545038682624204, 0.39608506375087277, 1.1493902335657455, -2.130104535188091, 1.1476608122361165, 0.9320022617397814, 0.03568906908977818, 1.4420580869170465, -0.5372177387698984, -1.1864962493216553, -0.5500096460519907, -0.763791941134191, -1.697389937955057, 0.2998477603655102, -1.3941268553154642, 0.5706575386796322, 0.7831976119427991, 0.28018300766602294, 0.13693472548612742, 1.0154445987056024, -1.1860807036684393, -0.19007920263882952, 0.1523832525182091, -1.2093360312349437, -2.100547843467698, -0.1530333323078057, 1.1971503331114541, -0.38189865297027337, 0.7916834209392376, -0.1728944869857963, 1.160481352505748, -1.0427224611678692, -1.040602541009036, 1.8273660232377136, 1.4195569065800453, 0.8386877142814951, -1.0778628423584962, 0.3469301281229362, 0.6711365751637789, 1.1526892923346204, -0.18194736753591428, -0.19855569336096057, 1.688961038095004, -0.8745505869548725, 0.32284669288734297, -0.8259830110426495, -0.3611221208798455, -1.4195164842808716, 1.1907305012760756, 0.1522501461827938, 0.922469684257407, 0.016501336648811274, 0.7429642513221194, 0.10750421501190041, 0.4808356602618045, 0.1323677945856938, -0.7034274377386549, 0.09645911224015045, 2.532325541632594, -1.5866221126564115, -1.971084122083064, -0.13301270859207348, 0.39343143403797187, 1.3390674367668436, -0.747255398772972, -0.16290875300595686, 0.4979804345513483, 0.08795913929250766, -1.1826687439735564, 0.8708434312878163, 0.10036766629128512, -0.5580601750838238, 1.0076432223870029, 0.8554191239588586, 0.5698707282163747, -0.20863591717796462, 1.3123618498586958, 0.820266660992923, -0.05334598793633222, 0.10738590560666669, 0.7476571054869932, -1.5691946737355327, 0.8999837788505479, 0.038792413114335636, 0.9914820089613138, 0.9465564741859593, -0.9548035752110309, 0.37108183095020375, -1.6932708709240643, 0.5742732453192894, 1.1869006875492747, 0.2555908214103616, -1.3999854653788708, -0.5270366881316677, 1.8409181821652891, -1.7547244042030132, 0.07405473692919617, -0.14925008749413637, -1.8439449535735588, 0.3444816081051852, -0.2983334069128005, 1.38335867526748, -1.9630063235244388, -0.5193463961965822, -0.11562338831110575, 0.352400820758953, 1.6482773735238936, 0.6711383514595195, 0.2238366057536359, -0.7182362270286512, -0.35435416471609005, 0.6485877172023825, -0.2757466733288484, -0.3563016808385527, -0.17817414950901492, -0.0019081140052624073, -0.39273602229275606, 0.06348346009811161, -0.8742437683710312, -1.8689872110353185, -1.5147133895052636, -1.0184612409555949, 0.18139626346512772, -0.7129650139254672, -1.3195899155857833, -0.21170557963600709, 0.49610977046001814, -1.107773982297535, 0.6462111934112551, 1.688912150364615, -1.3591299269239323, -0.7475464904708393, -0.9405677474521547, -1.693588315970276, 0.20250426856488513, 0.9856658198526146, -0.44166427943855957, 0.509830562978939, -0.5991965310798085, 1.4973252224613436, -0.5546344165085834, -2.2200296733850635}; + + +static double gemm_C_dram [32*32] __attribute__((section(".data"))) = {0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967}; + + +static const double gemm_checksum[32] = {19.171406532352187, 64.83908386369714, -15.833072522846592, -9.097406689220577, 38.77022492904121, 36.661072250530495, -19.204889499817334, -26.71405328485298, 2.199782273326125, 22.879340449675865, -25.495771295498592, -22.74413590136339, 41.027971509741164, 2.3121890057321304, -19.49682405405703, 25.832519909539464, 42.9907473021782, 30.112697137204815, 26.7239787914316, 85.07758200685522, 6.60571186375147, -12.02777529819674, -23.409006725121806, 27.330350323575306, -24.78504460632868, 53.946894048375924, 92.26090941929412, 27.603604435548316, -41.68101813310628, -19.73859198296261, 37.159087216031466, 20.44420834195346}; + + diff --git a/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/data_64_64_64.h b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/data_64_64_64.h new file mode 100644 index 00000000..e451225c --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/data_64_64_64.h @@ -0,0 +1,30 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 64, + .N = 64, + .K = 64, + .TA = 0, + .TB = 0, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +static double gemm_A_dram [64*64] __attribute__((section(".data"))) = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342, 1.8448885093030065, 0.572007132100381, -0.9020532459752512, 1.423932009681719, 1.1116421563744774, -0.609918694875925, 1.0390897743423966, -0.1305603800084962, 0.7049709576256773, -0.30985592801910117, -0.6566307196626123, -0.005304890708390932, 0.47214213858952303, 1.247922968974058, -1.434297700901899, -0.5773871236273995, 1.9951334816061994, -0.9419344596787323, -1.3864755081036366, -0.15540161000210675, 0.28089640344542804, 0.6902199813822665, 0.055137779443554184, -0.1316442026885298, -0.47920924486264665, -0.37134570058665717, 1.1612473442212157, 1.862246649641681, 1.1127961330998304, -0.449879365783737, -0.4581821737978766, 2.681801981114757, 0.622613137075688, -0.5264955185026189, 1.7456452297639542, -0.0032580522874735246, -0.08412480377121889, -0.09847618283385187, 0.5573182638994464, -1.1975598741016937, -0.25042914816475237, -0.24189491229960913, 0.1717462405241003, 0.5303343737606813, 0.8246091313323292, 1.010839700197812, -0.8902436270883701, 0.5757151238996234, -0.6241388306405901, 1.0306895727537915, 0.5437796109495969, -0.37254092473885336, 0.17302563058445183, 0.16431412357817202, -0.297796251553928, 1.0415794322065468, 0.27195785052081917, 0.8941462516437774, 1.8901581231152924, 0.16318485053532772, -0.42772830220525987, 2.22854455207779, 2.85934273014681, 0.620608819397525, -2.0773600718526932, 0.5102128857829208, -1.3425473236398795, 1.0664992078500592, -1.3978347586933288, -0.5082793586733352, 1.0293339145628106, 1.1953652639556394, -0.7592324149843712, -0.9927853948011712, -0.8401102070638347, 0.3955192048365272, 0.34215369871376844, -2.8791873832700547, -0.0421115170793464, 0.2803818171599705, -0.9401015854505796, -0.08972003336849564, -0.640338334227558, 2.0182530686564895, -0.7235603815620858, 0.6081345501547663, 1.7752306448722606, 0.031457706909880166, 0.899919260122491, -0.5364177308537464, 0.9954498087197619, 0.21059455079709405, 0.8203366802620794, 0.15551004552008937, -0.5905994619497847, 1.4571504499595769, -0.05879218788301025, 0.6116700031464317, -1.3093298447872528, -1.9790524548585495, 2.327922240143418, 0.5346029134452727, -0.2220392426765117, 1.0350931612437495, 0.579583179532083, -0.09395716249601935, -0.5606885258433681, -0.6916360198922066, -0.25495705935359947, -0.23051091319332653, 0.5226206406896088, -0.6035154511863011, 0.5592128760780101, -0.3223643795390148, 0.5138781656523993, -0.7592214987689807, 2.417337785331285, 0.17028885180838357, -0.18586838199027028, 0.40185795512569217, -0.5670525260070235, 0.14141128561714333, 0.536910685665978, -0.04468791360092496, -0.13107111869784893, 0.8500574802035589, -1.2986776963277358, 1.3299424270339977, -0.14883240827467462, 2.0486968982261202, -0.9909136952855094, -0.3600241005246587, 0.1602748303156346, 0.07168780603661637, 0.30202523579276225, -0.582835004754739, 1.0356927036283528, -1.0360800724687276, 1.993616236752697, -1.2365797403960304, 1.8548042098231963, 0.20499605949096963, 1.2010757276760113, 2.057751677950784, 0.2883899362101988, 1.6134203350119927, -0.9640624060585024, -1.1213275218434526, 0.6531743202785056, 0.2277981765470329, -0.8359861748374583, 0.5680057504067159, 0.28253652479051733, 1.1165497781562674, -0.5714364972858512, -0.09854463425203973, 2.395067138296113, 0.3316175009075528, -0.6884736402196919, -2.0231033737037047, -1.6070787249452574, -0.7165117692039605, -0.7553512437574256, 1.9280259690970352, -0.26733976223106926, -0.0673955495394241, -0.536406291194771, -0.7093789385459298, 1.744020696757244, -0.8126325347024919, -1.5969922983164335, -1.2686890383326754, -0.9291972010711246, 0.9031672530350638, 2.269233244076525, 0.40988533123157295, -1.7212576593177709, 0.7166427020983424, 0.3627363765292881, -1.5589258141736047, 1.3206137582172544, 0.22241582722694822, -0.5254557201726808, 0.4487811587655208, 1.4717430631656925, 0.6002964569533693, -0.7795697135851043, 0.610220453599741, 0.9796702201792316, -1.7646934144734967, -0.8420374077504474, 0.5166078996711738, -1.2752325216668503, -0.44546162876683887, -0.15696203458936964, -1.1862950949600968, 0.37408049529043713, -0.38524482721238545, 0.7842727318028115, 1.1538879916827052, -0.9454918159942679, -1.405125889371723, 1.0636457383418108, -0.7818062318843579, 0.8829476857079316, 0.8745221489151239, 0.6929310708225009, -0.39888705398196755, 0.9994754870230482, -1.666570871939696, 0.7961227485818212, 1.22745042848715, -0.6004867918118467, -0.5361669868684229, 0.4874774972013086, -1.890981268173993, -0.3938745167085202, 0.3139908715338594, -1.1261703254618494, 1.0966132130656288, -0.31621524862176864, 0.002668556331391873, -1.9226574720130702, -1.6380306920827867, -0.9710154441004514, 0.4763931829831273, -0.8587268321219447, 0.420689070376205, 0.6054083058374654, -0.7954680985571436, -0.20058537792435566, -0.19994075887630136, -1.895096099561938, -2.091666612524903, 0.0004974458415376117, -0.4080026099220151, -0.44867368855172923, 0.5700168037125656, -0.19142620469203458, 0.7614369056740486, 1.185949052557463, 0.6170757026559303, 1.650950629705662, 1.7703882319843902, -0.49884117664872785, -0.35212526236220854, 0.42973964778170143, -0.20813077355955645, 1.3420338787636203, 0.7397153430022654, 0.8838113044537101, -1.3377145615324746, -1.855416176565475, -0.8136295403887579, -0.7714846254184806, -1.2122365561438313, 2.8536471208979433, 1.3032022234889244, 0.4760756036980966, 0.04693766693045954, -0.5984449522911452, 0.7900271874549623, -1.969917184758775, 0.3503211304018375, -0.0008137206583593385, -0.6256281405885463, -0.3510577387659576, -0.13894191854589522, 1.199426224041857, 0.12132847331734303, -1.4608604499664002, -0.22948805550230816, 0.051902944512615914, -0.019119222645881905, -0.9757273564713941, 1.8473014772988974, 0.5263294510598043, 0.07053654437136757, 0.9547242579775002, -1.1278918446449648, 0.07734968673664687, -0.5799201931033439, 0.31678992899871267, -0.7432885872434457, 1.4335843287274053, -0.9465575672564711, 0.4879570553679617, -0.6623786574250906, 1.0259687873673153, -0.02932551729568818, -0.7891190307945258, 0.29564308636903597, -0.34927374642138076, 0.8136749201194545, 0.620245645223459, -0.43951272221042564, 0.46265400794768385, -1.869391305207575, 0.48193063531644537, -0.095540604007519, -0.16987767760770991, -0.19495692375454912, -0.08834646865917613, 1.2824833220745997, -0.13585649309388986, 0.6657305691375492, 0.6391954485208522, 0.3751449189250956, -0.19786418069226533, -1.1107085792532714, 0.16954868116772995, 0.0976102127373202, -0.22307281025633455, 0.5329264170127224, -0.7498434517605724, -2.2463793716496183, -2.030956619344538, 0.3469149176826813, 0.9569335370728702, 2.0063313680095405, -0.07729526178752644, -0.4820520883676177, -0.3642766707809299, 0.2721281447061126, -1.0173409588721802, -0.22291945275506458, 1.415842532715168, 0.3487504850213432, 0.3522443413976922, 0.9077850533771569, -1.0749257488285808, -2.072058608998672, -1.189733419675099, -0.5102992245699747, -0.5266987160364432, 0.38803217663099665, 1.2098862819236005, -1.0678208861159952, -1.6484340857205138, -0.6773093361468119, 0.19847908080770726, 0.43435982710100896, -0.06608174057217904, -0.4396025725464862, -0.06842865579333862, 0.0757461775588834, 0.945043974186398, -0.8271942633183708, -1.0171091372766654, 1.0045993947511778, 0.1215505686746317, 1.4850546815331578, 2.90124785320579, 0.9193799243970369, 1.4109003071198862, 0.9342714574384375, 0.7408981122108215, -1.501451886644788, -0.8528561599738412, -1.4502786649323292, -0.060333190180409904, -0.06215199874022316, 0.6962114020423124, 0.1737374420722428, 1.9987164641082087, 1.7922666332582982, 0.39258330183185886, -0.1955663537656974, 1.185062371327038, -0.24969600604011072, 0.5062590514320574, 0.7374924629427219, -1.0887076741188921, 0.9197089124134338, 1.4198792364404926, 1.13966263395932, 0.8820726768303652, 1.1454947730219187, 0.3830272308939737, 1.0330281295592512, 0.1958899672744909, 0.2610941691615629, -1.6928895703415128, 0.08949085370524765, -1.6099870201619317, 0.6146813355739139, 1.0232681185457035, -0.6120020584064751, -1.0855633146564565, 0.9035218354603602, 1.199279110133032, 0.21247320768848982, -0.8276719054682797, 0.34353353507020123, 0.7795065425753578, -0.31690501369321267, 0.08404007020790137, -2.0217996637419504, 1.4723540101508836, -0.5690532461968705, 0.7600008532793323, -0.09696213550941978, 0.49872412917775666, -0.6501714914135994, -1.4186463922997374, 0.4572717163404996, -0.6798540159722049, 0.8800683478695012, 1.1617475981837795, -1.2832223575262358, 0.01811044220476568, 0.5665224930728516, -1.7263899334779662, 1.0788518344074862, 0.5214662704113713, 2.207851490608375, -0.8847331619490723, -0.22393893146647295, 0.2604924986511237, -1.065720378325982, -2.4784405095403583, -1.397338674255014, 0.12733886071252698, -0.962990797187108, -0.4158341820319732, 0.8295084980828852, 1.129362539634652, 1.4448964367746397, -0.27202686813738103, -1.1376577043818543, 1.1669873661563108, -0.5526532153140147, 0.17431258922451653, -0.08674760587893786, -0.02662111271639052, -0.5787298408624987, -0.46418731609632075, -0.7338887598113502, 0.0037124668666011543, -0.4390315224865612, -0.5445053993271162, -1.1731970859703744, 1.557358039479812, 0.8235296531498106, 1.3403087264740343, 1.429798559996883, 0.8488733195590197, 0.6549815456848764, 0.5939979568631141, 0.571492357564412, 1.2838646589587073, 0.1968309175885564, 0.0125526247658802, -0.588379978175527, -1.459242663662794, -0.16058887298258492, -0.30513433025622483, 1.3958505210549053, 1.112993202632025, -0.6980224325960035, -1.1242172376210566, -0.04898442309094625, 1.7267743114344978, 0.3596144012700469, -0.359544416669036, 0.20255944297423273, 0.3676083732835713, 0.8149334833372205, 0.9572709382349587, -1.4303046720322652, -1.9840617027488057, 0.8352543400425974, -1.6685708178136907, 2.264358935950376, -1.1013820170238586, 0.6513073416660541, 0.5222811637226092, 1.6332065112971001, -0.18689854597886257, -0.8293836626550278, 1.2200036287220326, -0.948302395460301, 0.6269276746157323, -1.8413847347422614, 2.975492133500898, 0.5732253342246594, -1.876866690355531, -1.4492981424636866, -0.7472606420064576, 1.4876059940278459, -0.18934308720894036, 0.13020040181367357, 0.5331924552669381, 0.9913637676227545, -2.6437681894231435, -0.6461446779487539, -0.8660236542618331, 0.47452405238110584, -0.4790606483008819, 1.5321216571398668, -0.1636651452718229, -1.0332700298347521, 0.9892360243254097, -0.6416390065504894, -0.604900108391799, 1.535151051934949, -0.18334305957155458, -0.35686131551458816, -0.3292665860742744, 1.7738534285950363, -0.33142178700758057, -0.6235361522388553, 2.8510918408680124, -0.7318379837818061, -0.6194976835634578, 0.8118142867300344, 0.43758672808479837, -0.7150266134830248, -1.9406394619639358, 0.8679359705510734, 1.4354983174276066, 2.182868585469132, -1.1741764376487758, -0.9331282790464878, -0.2820770772397286, -1.9483310573156807, 0.31916263280850626, 0.6390360973776629, 0.5428826848071413, 1.5065733412421733, -0.47412499801799024, 0.2569777134684139, -0.18464959701431985, 0.707300443390559, 0.16960249404796737, -0.4185489493255141, -1.4509136246246903, 1.2609714707832425, -0.048585931918069494, -0.7466175012069378, -0.805144923911586, -1.6081696632587419, 0.2108448776087118, -0.626995367880836, -1.25582651238933, 0.03382654045677089, -0.45889090147992845, -0.2896301303848118, 0.4922810729687261, -0.11561150744781683, -2.0656398984212156, -0.15730996466261546, 0.7768976641774541, -0.7044791153933941, 0.8524501556338853, -0.3340090119288742, 0.08640562469139157, -0.059343641632369076, 0.1619562886451128, 0.15046570393731748, 2.7590525887014667, 0.22065232253703387, -1.3774088537570648, -0.29499229105904573, -2.4537835279476146, -0.8341158090629236, -0.43274207019506117, -0.14358452337381933, -0.8677025372132973, 1.0347284219371276, 0.48707383897255696, -0.06866257813543919, 0.2937618607534383, -1.161359070554741, 0.21001598604651528, 0.4159405289601604, -1.5043005890504582, 0.7372524407400997, -0.5334658384258053, 0.2567239585606655, -0.6299751233419266, 0.024035161278926437, 1.1244580271586777, 0.40836377201711715, -1.8739717517634698, -0.26853628794603523, 0.37761170331094157, -0.0050819767759484056, 0.009684786386250501, 0.2636875321138984, -0.08553945533113934, 0.33475288490766125, 3.4237712468503103, 0.744628978129671, -0.9096458649167182, -0.6827694846192245, 1.6425500385797525, -0.3900596403135759, -0.9509348833512404, 0.3229857369820825, 0.44175525248542286, 0.7931445181078505, -0.06988463350772384, 0.6819214512912009, -0.06839741587635721, 0.4734557044072717, -0.9215746025534817, -0.6195377638236638, 0.809667872762421, -0.4103668947560523, 1.749809215983805, 1.001647179219911, -1.7659243403508436, 0.15383957509758237, -1.2779831760745572, 0.2669263499455465, -1.4256436904962992, 0.040903466313536106, -0.9342945534262868, 0.7618231087000356, -0.30058739646889815, -0.5446714593776727, -0.4802089660362259, -1.1432227238603179, 0.5174957898345334, -0.26915089392842423, 0.3387263580347474, 1.2480509452812811, 1.9521841872543286, 0.9788396157168914, 1.001353646981955, 0.40906237950521346, 1.2380051766092655, -1.1622188132692055, 0.03880070372652659, -1.3157311036080868, 0.21159132832002855, 0.8251757971684041, -0.5943198935837782, -2.059249774668197, 0.4455096569146938, -1.5530036453685645, 0.24334104727505046, 1.9679440499519993, -0.14949638764508505, -0.1787890634869671, -0.8694565617159877, -0.02701940155527667, -2.327140574554701, -0.3493894186252125, -0.02711649643869937, -0.2125855163161856, -0.8626785926902893, 0.5125620452253108, 0.835126803441082, 0.4370304631746852, -1.4380277943151216, -0.15463871080474192, 1.427347151863727, -0.03594236427723813, -0.9987807222089615, 0.15285084511988004, -0.4453218737326093, -0.8774506171339351, -1.1301294572944445, 0.27932962145356316, 0.666378400360196, 1.0765917423686246, 0.2439549047998887, -1.00859364816552, -1.757528113553421, -0.7922512836603205, 1.4533777876325222, -1.508283926364581, -0.9454297378995183, -1.010459444419853, 0.0754147254586834, -1.2810537542822706, -0.7736354580243704, -0.811961379205231, 1.3638217257964536, 1.077496971491708, 0.5810375830537511, 0.3551271969105679, -0.043876281219692365, -1.0850332393056394, 1.109609770945844, -1.0337911892064604, -1.8807813444109054, -1.2265714811977597, 0.3936172157806796, 1.0778363941578806, -0.8644861643567047, -0.9521061052105131, -0.3765845085538441, 0.17855829086113095, 3.5953876986672255, -0.8488543068716493, 0.3153960860722241, -0.4124980314658376, -0.25957042793288443, -0.47466672457489073, 1.251745108485312, 1.9089401526170708, 0.08093711755806289, -2.256777082059624, 0.324177164165908, 1.062105790670867, 0.2886235312894662, -1.2983305542602077, -1.5005961252940438, -1.4260396412546816, 0.12572172650108407, -1.371518218990482, 0.5998645930096181, 1.2473531605780193, -0.9358060344486432, 0.49295286102524044, -0.3494884497630849, -0.9308402692062906, 0.3630283557686611, 1.7611911540817928, -0.7229213248269448, -0.4323877136781272, 0.09012216684853104, 1.2693688025965613, -0.05609728003750563, 0.2942911094966865, -0.7311965810915613, -0.21592794240105817, -0.4553253041620339, -0.13454483357874214, 0.3803586083160361, 1.2706120469339364, -0.868299098407261, 1.59925697493435, 0.5433594960509881, 0.5675579810614343, 1.9203285366540146, -0.5030970822643847, 0.8421602450844566, -2.316838061301056, -0.4201799135308444, 1.99145358910135, -1.1698739038813457, -0.48526560569590693, -0.664516213841126, -2.1784216925774254, -0.05592421534349575, -0.3735237580415768, -0.22461780649945687, -0.6015415198184665, -0.525149213451578, 0.20817264425532928, 1.0421502948740846, -0.24223189745187212, -1.5453453515930158, -0.565952007041841, -0.453301777620275, -0.26956499012979956, 0.6612001818907256, 0.6566383906736746, -0.7620891486112908, 0.4039229699126195, -0.03287499950025958, -1.728025679680301, -0.1351648490652594, 2.979844425070889, 0.21407749737048995, -0.41165660712793767, -0.8911684286042895, -0.49236046031915226, 0.08810619424950021, -1.4051338603716423, -2.3224238004285707, -0.3410883214075715, -0.12686282703773566, 0.23609553256542695, 0.23545196849666264, 1.371312887239788, 0.2318653380046876, 0.08464059182127714, 0.19008151199377613, 1.7562161679995132, 1.181971977987871, -0.8172519034071913, -0.31575932783054717, 0.2503737947188051, 0.028618079946139307, -1.723439924093865, -0.7885161782185284, -0.594263411951702, 0.5644435285732619, 0.8811148239408805, 0.7833035854562042, 1.0392171119322082, 1.8371154985886862, -1.2420591801850245, -0.23753657646460405, 0.19313774990116925, 0.5053866496884525, 0.3283028032403514, -2.225396433305001, -1.096249407991655, -0.9149883628966105, 0.21230053589695053, -0.6023002440801871, 1.4512382841053386, -1.5038113250304717, 0.11558860384831522, -0.06338166413389325, 0.22201020504142566, 1.4399368526678278, -1.536144263111769, -2.717778670757182, 0.1168039138752043, -0.5866181500734327, -1.5377442224077151, -2.0944415177169953, 0.7870016058915985, 0.8949404757727989, -1.2488701028525535, 1.8425900504983932, -0.8820586551654293, 0.31200772222466067, -1.4538990075976945, -0.4972028753925732, 0.30783322485667264, 0.534974938780373, -2.0058475112711514, -0.4541796977906028, -0.5567288589208035, -0.7063829736735863, 0.08317733846151737, -0.9039919874880522, -2.359353503098415, 0.11425878193276912, 0.64706666019578, 0.4359959376210403, -0.09281069482301793, -0.5382334133878951, -0.633983343063867, 0.49835413266819356, -0.6176307398455463, -0.58828999383318, -1.7334295099492802, -0.8643497543156821, 0.689824201173873, 1.524711206099055, -1.548684848469057, 1.2284263304913572, 0.19868751298961676, 0.11836116797672853, -0.06310268278090121, 0.7479073753397237, 0.19168429076964602, -2.501823109461287, -0.673945501033193, 1.2235988334078434, -1.1636116702452202, -0.22624467871026605, 0.5071009399593757, 0.6279007880533118, 0.5692262629524086, -1.7255159569914225, 0.6397252376986503, 0.23342621054073684, 0.21399479954715414, 1.1788921695577175, -0.4946728962147127, -1.8310549540520982, -0.3690830035843751, -0.42224783195423987, 0.32423026673778105, -0.4402301947763417, 0.7465865033369634, 0.43199223950922194, -1.939062107304355, -0.10453191019598392, 0.8153426406136252, -0.7800663274052761, -0.4477465519532468, 0.01545038682624204, 0.39608506375087277, 1.1493902335657455, -2.130104535188091, 1.1476608122361165, 0.9320022617397814, 0.03568906908977818, 1.4420580869170465, -0.5372177387698984, -1.1864962493216553, -0.5500096460519907, -0.763791941134191, -1.697389937955057, 0.2998477603655102, -1.3941268553154642, 0.5706575386796322, 0.7831976119427991, 0.28018300766602294, 0.13693472548612742, 1.0154445987056024, -1.1860807036684393, -0.19007920263882952, 0.1523832525182091, -1.2093360312349437, -2.100547843467698, -0.1530333323078057, 1.1971503331114541, -0.38189865297027337, 0.7916834209392376, -0.1728944869857963, 1.160481352505748, -1.0427224611678692, -1.040602541009036, 1.8273660232377136, 1.4195569065800453, 0.8386877142814951, -1.0778628423584962, 0.3469301281229362, 0.6711365751637789, 1.1526892923346204, -0.18194736753591428, -0.19855569336096057, 1.688961038095004, -0.8745505869548725, 0.32284669288734297, -0.8259830110426495, -0.3611221208798455, -1.4195164842808716, 1.1907305012760756, 0.1522501461827938, 0.922469684257407, 0.016501336648811274, 0.7429642513221194, 0.10750421501190041, 0.4808356602618045, 0.1323677945856938, -0.7034274377386549, 0.09645911224015045, 2.532325541632594, -1.5866221126564115, -1.971084122083064, -0.13301270859207348, 0.39343143403797187, 1.3390674367668436, -0.747255398772972, -0.16290875300595686, 0.4979804345513483, 0.08795913929250766, -1.1826687439735564, 0.8708434312878163, 0.10036766629128512, -0.5580601750838238, 1.0076432223870029, 0.8554191239588586, 0.5698707282163747, -0.20863591717796462, 1.3123618498586958, 0.820266660992923, -0.05334598793633222, 0.10738590560666669, 0.7476571054869932, -1.5691946737355327, 0.8999837788505479, 0.038792413114335636, 0.9914820089613138, 0.9465564741859593, -0.9548035752110309, 0.37108183095020375, -1.6932708709240643, 0.5742732453192894, 1.1869006875492747, 0.2555908214103616, -1.3999854653788708, -0.5270366881316677, 1.8409181821652891, -1.7547244042030132, 0.07405473692919617, -0.14925008749413637, -1.8439449535735588, 0.3444816081051852, -0.2983334069128005, 1.38335867526748, -1.9630063235244388, -0.5193463961965822, -0.11562338831110575, 0.352400820758953, 1.6482773735238936, 0.6711383514595195, 0.2238366057536359, -0.7182362270286512, -0.35435416471609005, 0.6485877172023825, -0.2757466733288484, -0.3563016808385527, -0.17817414950901492, -0.0019081140052624073, -0.39273602229275606, 0.06348346009811161, -0.8742437683710312, -1.8689872110353185, -1.5147133895052636, -1.0184612409555949, 0.18139626346512772, -0.7129650139254672, -1.3195899155857833, -0.21170557963600709, 0.49610977046001814, -1.107773982297535, 0.6462111934112551, 1.688912150364615, -1.3591299269239323, -0.7475464904708393, -0.9405677474521547, -1.693588315970276, 0.20250426856488513, 0.9856658198526146, -0.44166427943855957, 0.509830562978939, -0.5991965310798085, 1.4973252224613436, -0.5546344165085834, -2.2200296733850635, 0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967, -1.6848834226351845, -0.468054031300935, 0.2231411040063078, -1.2079120248207287, 2.0110030501455016, 1.4453850086239999, 0.34059707215507334, -1.8213959334958643, 0.8699402772722297, 0.4899667100861624, -0.01173787871675348, 1.1948559206670855, -0.8870269587625144, -1.555705163842219, -0.26533917383348415, -0.3325290424739039, 1.5977665804314234, -0.41203089860517084, 0.49183361850554513, 0.5136570154037132, -0.23309124875198506, -0.7998287164209388, 0.530066185314952, 0.47106304564421286, -1.0105968114955957, -0.8353508972894879, 0.12377709284481839, -0.07289187751377658, -0.6735741109340289, -2.0639344018430106, -0.014438189818046943, -0.4713457882035365, -1.3988791318705927, 0.7076705525000143, 1.0974072497097722, 1.1672671573256546, 0.5553099499949979, 0.12122031680888311, -1.3280507129101098, 1.1654608124772015, 1.3139075127865134, 1.28261825548601, 0.8583778828163117, 0.4508675701062839, -0.3773168693728364, 0.16884703765184494, -2.5899418769593017, 0.8980383022257733, -0.7871723126611332, 0.008146263601196916, 0.15100042746757067, -2.158690321719755, 0.5154773443584927, -0.8968793509306945, 0.12745529032276473, 0.3057102963260676, -1.127194036956006, 0.06889018035163645, -0.29649779158358486, 0.4000800574133786, 1.3294197922581654, -0.9809012577471112, 0.2604706024238921, 0.5802535538390949, -0.7974783258128166, -0.6640912726671294, -1.119222930304624, 0.5834025731102502, -0.25723586541301474, -1.618253196199123, -0.0570695619599075, -0.43841397343582966, -0.6767231131676439, -0.38371376805174173, -1.9996328333376983, -0.33850140623335534, -0.1183524981649774, 0.005796690030477999, -2.458306016054147, -1.099750705180441, 1.054860270281014, 1.1651235359219074, -0.8686068833819991, -1.4001372299430193, 1.1272944804074991, 0.03719751404379593, -0.06732456664178753, 1.0123217113273348, 1.396494377415687, -1.114892120467897, -0.23680354926169062, 1.1762829232717322, 0.35544788004728406, -0.41986744728203046, -0.3867023929082546, -1.483298749076887, -0.566334552372417, -0.03321061530877886, -0.8527679221181403, 1.4516682272189547, 0.7320822341298279, -0.05200885253027685, -0.9525949548843667, 0.5751795467491231, 1.178459960930901, -0.10762850518883417, 1.5651830651133336, 2.1380607452390663, 1.2280945171647695, 1.4042702000856067, 0.09325784801982663, -0.3557970327475224, -1.073778288097418, 0.8968276612463406, 1.399133831515596, -1.2439663723417378, -1.781799686206601, -0.33427106612358554, 0.889230360742913, -0.41170088971799085, 1.2155279834457413, 1.600649868770159, -1.6424774434123148, -0.30897369601229935, 1.047363878453214, -1.0791866371859211, 0.34680511458320423, 0.9927888544576774, -0.8514984695838704, -0.8372280244524042, -0.22804642016295132, -1.3868435427851724, 0.7441016059552877, 0.06972829881636747, 0.3420780025264497, -0.04386730461990216, -0.017778941397242242, 0.6102135468147727, 0.1101978218029996, -1.401046648194382, 0.6208120606616816, 0.26306079867835747, 1.6277476977056633, -1.4148077742490233, -1.12911289812443, -0.4018145604094114, -1.3755867441903893, -2.399920233063965, -0.020319571626188252, -0.895842610909627, -0.3494298955785707, -0.2738387174328631, 0.34922230639219626, 0.07109890321458032, -2.4101191646725644, -0.7411692543552041, -1.3233841458208606, 0.6863453426487733, 0.3632155343313335, -0.5590033258828403, -1.1449685446383917, -0.7258003922221851, 0.278797530701865, -0.3441402294664407, 1.441339424212574, -1.2335052347473323, 0.07612868920434228, -0.4241597163106437, -0.05332877983539378, 0.10099084201256278, -1.8787758687909357, 1.4045284087841965, -0.04347827565492549, -1.2990797348095602, 0.6319627183761264, -1.0748380347638893, -1.280830568026441, -0.4632576940943757, -1.2762157345443148, -0.4871099169463196, -0.8573516675952042, 0.2602500067557723, -0.663512812580364, 0.9193611678505703, 1.4195120671985408, 0.31768737978504635, -0.22676062071355782, 0.7472485772463154, 0.33979457913367445, -0.024989366536706515, -1.1780091950874647, 0.8422172106604986, -0.9853850143769382, 1.0084091587937258, -0.5446586568124329, 0.2287236140419025, 0.12649973956792954, -0.8624432460024017, -0.2042801144909528, 0.8201641258212513, -0.8429169760408267, 0.15786776211979775, 0.586990037118922, 0.7581270686613231, 0.13813966047716805, 0.14287983497159015, 1.542247836275435, 0.6889352238499454, 0.3790751131802156, -0.36007691647378387, 1.5453032787583676, 0.4475231964904419, -0.06905081640069816, -0.2556692520813782, -0.6423795723912976, -0.6500078649365075, -0.6577072095504994, -1.4866829628942408, 2.5030140049559653, -1.0572143847418314, -0.000571660449572993, -0.042894005602608545, -0.4591852328122149, 1.2843268761512387, 0.3968454779394536, 1.138745996685296, 2.4071733886455227, -0.10540633867195442, 1.2714215049136428, 0.04757946360595818, 1.2348108652417815, 1.6311115642560317, -1.6302649244099794, -1.2745470694966483, -0.8131839077565575, -0.6825393122927416, -1.0794370197645617, -0.7204636565534043, 2.1467941519636455, -0.18535362890328835, 0.6625127934408671, 0.38979365484662193, 0.7719784843101606, -0.4958538436662962, -0.658575404725063, -1.8250261743740281, -1.3009369789521832, 1.1569797741579901, 1.0803875458840382, 0.3519814471093802, -1.5678550885987372, 0.17700126122173684, 0.19570581803986603, -0.9713133420910822, -0.40681730492260765, -1.079374837348168, 0.9333820675088979, 0.7164115790249227, 1.5974993677559646, -0.27698287787067033, 2.0383895476075855, -0.6836849892211939, 0.8311193676081333, -2.4241121219014663, 0.31596002357495434, -0.999473279382509, -0.262687475352513, -0.46071381621370666, -0.8976883600787323, 0.5219272929937467, 0.9722622620644177, 0.552832436548929, -0.027467290841698567, -0.6107378749038481, 1.3506129449321138, -0.4521398968561788, -0.22117060492964993, 1.3204666166460701, 0.42542027990331455, -0.19467559818902735, 1.3362817877824478, 0.1643979281153062, -1.613150980719597, -0.5326178763831365, -1.5741387694417994, -0.2358632094400509, 0.35096623923842685, -0.40087086833885227, 1.547569381699142, -1.7090186764224344, 2.2199280575728784, 0.7516533958698258, 0.6804837145322774, -0.19556806995297935, 1.3537057525493934, -2.0138393066087383, 0.172351936169543, -1.7024086384702934, -1.0519290071418026, 1.6258351842437149, -0.11856858846558817, -0.8121335733777978, -0.02927583999406098, 1.548105034805526, 0.6981009969478109, -0.990277098683295, -0.15604117684813257, -0.9747927516511783, 0.4652704424950469, -0.31289780730884004, -1.651056798736739, 1.2755967903796157, -0.13648504411430237, -0.48481306969894616, 0.023313382404551213, 0.48504298344685315, -0.8507882704201493, -1.039212404883905, -0.653701398776706, -0.5189768622716721, -0.12449303534256825, -0.5128172446702866, -0.06818346256734656, 0.510667943805758, -0.20971767447744363, 0.7975878663589364, 0.3042695491801, 0.2654566914993375, -2.0012906991903865, 0.413870629899118, -0.6025010011948203, -0.14082858261327996, 1.075340195058932, 0.2593371488480129, 2.62922759693777, 0.3324210527578405, -1.2020419530087723, 1.1926421271709948, 0.2347858166167028, -0.9756048534996443, -1.8200265368846862, -0.5169307203823522, 0.1500518697766681, -0.038484274917838325, -0.5595155602432803, 0.7826664898369591, 0.4484219149387221, 0.29541985156163897, 1.3984689244673294, 0.25998037440140653, 0.42332643185294355, -1.2422400480672728, 0.2176902105319219, 0.728761958261402, -0.011206770084421624, 0.42373795905496436, -0.0772966783872132, -0.1844058501562145, 1.5231610698492861, 1.5815719719777372, -1.0224998294567542, -1.608411795245145, -1.8940383890496493, 0.5392647246180361, -0.9404210876785811, 0.24515734401955552, -0.8758837658412391, -1.528076170772824, 0.16773671218212843, -0.06372312245930913, -0.6625850298997638, 0.31931330490352056, -0.7703083579211024, 0.369010898692774, -0.9262558726002627, -0.021452503506505422, -0.6884402260487072, 1.5154027937733978, 0.8284697701567305, -0.07697958106921719, -0.4538814926580921, 0.5439309292438045, -0.5492443043774654, -1.220225030532012, -0.7053512461796413, 1.632643282613422, 0.5778426489678986, -0.9229177377752995, 1.588544297460673, -1.7481169305157809, 0.2618776316461439, -0.7711250331583439, 1.4721431859882452, 1.6321252809774605, 1.521708343024266, -0.46073261039758234, -0.7747734720993155, -1.3354599996427268, 0.9861401026653767, -0.575980258880269, 0.0853876730028182, -0.6195540436182536, -0.5432771078257063, 0.3060459872354665, -1.824118723913547, 0.8784176817828129, 0.8097094976615903, -0.361780627962229, -1.467071190440473, -1.8907115007272879, 1.1242546008439889, -0.4974181028535098, 1.829441455586246, 1.017979249905673, -0.7075497604105697, 0.059183606525579274, -0.13056990600722507, -0.5832122715205462, -0.01409309201012074, 0.016108610412205803, 0.1900118760884006, 0.24188780949423172, -0.8882450727066196, -1.3576659214518099, 0.07447367725510536, -2.991099769542917, -0.6488322635921112, 1.8595982643945574, -0.702641433986396, -0.6416959601570708, 1.3390388750212445, 0.057488906459266735, -1.808725561176733, 0.2948187135806436, 1.1497414866629478, 0.8709941695277267, -0.2850339815191343, -0.4997261831464098, -1.4398917507631508, -0.2148727154738073, -0.031164729254402425, 0.48150661412660234, 0.12415703923674576, -0.26613703422724105, 1.0565002395567262, -1.6752860867796824, 0.1869147939846373, -0.7272110183291539, 1.6245102578872348, -1.3773924349992401, 0.14296540214244555, 1.4878267201868336, 0.10331510654880505, 0.9062060348158155, 0.9324085143967664, -0.21818888199568304, -0.2522508930003547, -0.8562525871887124, 0.10204130138311729, -1.0184106320915587, 0.1825164284873822, 1.056310703030919, 1.7552903725196911, -0.12454007621445604, 0.31880532192621097, -0.35541825354040035, -0.8580393155101081, -0.2682711254651047, -0.30783295275138195, 1.3170139199898268, 0.7531186614185573, 1.192570085627795, -0.6615475858876328, 1.4991876630051717, 0.30861856418442385, 0.46151436623585584, 0.3960375120229514, -1.5852068567014443, 1.9903541747766398, -1.1185087223822021, -0.5183442785156127, 0.06782511507671637, -0.13813126796841926, -0.8649990189511263, 0.6978353775870149, 0.16085392211498364, 0.7383270750320552, -0.6856342770612354, -0.6045226539767258, 0.8110514204550441, -0.36508901079756473, 2.2802828142762928, -0.7663535452926638, -0.3887166303815122, 0.9034427218611359, 0.21868488058095606, -0.30457226174639157, -0.287175489125426, 1.3568449350217864, 0.39711905418048105, -1.1763187968954603, -0.33474769656895564, 0.917254226523988, 1.0804852401399638, -0.9584787505991971, 1.7478622379080422, -1.2473029790869914, -1.982585782186715, -0.41852445481952294, -0.9465815043529053, 1.3486167490991765, -1.3147522922373933, -0.14921512592164993, -0.6510935828594568, 0.009685462499594857, -1.0764421921168665, -0.12975724308626338, 0.4720265080850217, 0.3117809833804109, 0.8469168005900016, -0.520242573974674, 0.27675686046474957, -1.7178145403893597, 0.439729002709256, -0.30048055544717606, -0.6302171098523444, 1.241050608643494, 0.5721350887681553, -0.0022023636536079735, -0.4924114110139152, 0.9950463422748212, 0.9816810712679719, 1.9924377989279343, 0.03900009491657034, -0.2935571188258591, 0.1266892245615102, -0.715464769225636, 0.3145853867440553, -0.3835873169761903, -1.0953446648325833, 1.0121232148460444, -1.0957236224096085, 0.17063463111383734, 0.5102992173497909, -0.3658969046671184, 1.23797611806204, -0.18059200075977175, 0.9936325102325779, 0.18430235850671245, 0.16517189020344797, -2.016269812957052, -0.3616199185761283, 0.7527532999342817, 1.3277176349050535, 0.2920534284459897, 1.0606099435377094, 1.848598832091733, -1.3301443272735525, -0.5759958625549068, 0.27878675140631204, -0.2315083920631258, -0.8288316208067809, -0.2635580627160318, 1.3355871376746895, -0.8117302674348011, -0.23432703924765444, 1.92799930513707, -0.23101856846075614, -1.4238524703136513, 0.1368000358051577, -0.2055684135567207, -0.15855445409422964, -1.2600442043395892, 0.1701769006730323, -1.068866010850334, -0.1904292641612836, 0.5892434527813512, -0.2157459392172624, 0.4055498592698905, 1.6497067243577175, 0.7890192766736421, -1.044353487265588, 0.7953139847174688, -1.5740154854045074, 0.9665654379132748, -0.3889094455704384, -1.8426397459593846, -0.9001191779220159, 1.7045921258988515, -0.8923330121142684, -0.5956915482032328, 0.011227289589172133, 1.7111591357647962, -0.9587860284026688, 0.7548194520215976, -0.32603844480628175, -0.2353359336920787, -0.16729381132141224, -0.6023878547302806, 1.371156314999161, -0.2459473828028695, -0.2620130902224386, -1.2172056461838572, -0.20656000988613168, 0.5008110746890201, -1.4028780271648753, 0.7193747259694553, 0.0660307754939295, -1.3093771377458805, 0.407051194515542, -1.1823392140768092, -0.4019555472426395, -0.26250820888118304, 1.2702869545254583, -0.24272141574465245, -0.42155102572483116, -0.05194109601117269, 3.292873619493133, 0.7890333104486489, -0.6211877906484109, -0.8047810389893006, 0.9678567436130486, -2.079988930109922, -0.6016769585932343, 0.12364670959331653, 0.7229553379296235, -0.5227730192140618, 0.023991105176350242, -0.0017528334343272331, 1.2586605379107056, 0.8446327540395329, -2.252502331262609, -0.5270068966745032, 1.6223796347828976, -0.4278645067985037, 1.6333830568090013, -0.8062257833307152, -0.30685337459460577, 0.3507708774563464, 0.424527526741457, -0.03735386264172313, 0.229879937036083, 1.1454140027646036, -1.1872670475847902, 0.6262020869197982, 0.7589488691885292, -1.6862092963785988, 0.7944545737967115, 0.9971081922053232, 0.7560471613916118, -1.1851981001821967, 1.0965175918763284, -0.46530937265986, -1.2761702411382863, -0.9791491731581209, 1.1589807765966766, -0.8156014346461856, -2.8072546995497247, 0.5334627416087777, -1.3798149493182552, 1.3972706448160608, 0.4552374166958973, -0.535433943499853, 0.8920580452737524, -0.5856331944062472, 1.7623274652492553, -0.2852747983665435, -0.18313041510663963, 1.4659299617833124, 0.1519470164480292, 0.23355499681619366, -0.836602381173288, 0.18618502715241547, -0.08859676768441688, -0.7180391575300691, -0.36232537769580714, 0.36477740973605915, -0.9281105879066266, -0.46197664970984853, 0.6483976493075976, -0.3812217162848902, 0.4303579894467762, 2.0043530514779873, 0.39102979400332366, 0.37534637396631415, -1.071734524715999, -0.16045645113900145, -2.998145904788263, -0.36470187389744846, 0.03991547011616779, -0.7008645685896715, 0.9912516955548382, -0.7450675439952815, 0.3264674970899282, 1.601666916097199, 0.5405397248625541, -1.1861306612606524, -0.522172803007203, -0.7727094284088601, 1.2277562505941912, 0.37759283992313625, 0.7444682278368736, -0.6522853231400494, -1.0696424743836717, -0.8054574164094268, 0.905380130000978, -1.1121207299686113, 0.2063449976062078, 0.5176153181186626, 0.2301751658467518, -0.17968415020039138, -0.5804234791794292, 0.522042470813759, -0.47680230351950187, 0.7668678996668346, 2.1152176375874023, 0.4635399730851282, 0.7692324460373827, -0.5214713943997042, -1.6311809160767827, 0.7017462722924709, -0.31859839125881545, 0.20304228378387937, -0.18790051825211995, 0.18432739014512065, 1.1541296937922023, 0.4450818568868103, -0.13551483948610296, -0.2758105920455811, -0.5849315949646472, -1.0646125679003637, 0.27411289538745437, -0.5032261617196119, -0.04351057134624247, 0.7743236339777182, -0.6756715811861062, -0.2671752620926679, -0.23914374307205996, 0.16461452793247355, -1.4436309225983486, -2.20506341329235, -1.0189819575984795, 1.5608022939480573, 2.31499985378701, -0.4181529433643855, -0.2711132087457424, -0.7206084096900425, -1.2504073094445143, 0.31340429692041716, -0.1447897506201982, 1.1850402988106572, 1.9541706849775027, 0.11232761778850357, -0.4382234425091706, -0.3947615339868321, 0.7015762348678443, 0.43950731587232217, 0.4486281613565141, -0.33259394965579864, -1.2893276502905346, -0.5665027824228605, -0.9867864794525018, 1.7152028381164288, 0.7425175887812803, -0.4541542908237512, -0.04974419881485532, 0.7205327224864219, -0.49642760570489125, 0.5806736618394556, 0.8088452773706619, -0.15195744367862507, -0.12096553277305616, 0.6220396950025358, 0.8874367244840082, -0.960123924615042, -0.2512769100863725, -1.3487372983592427, 1.9195263893870158, 0.1391130058484598, 0.3556392382753691, 0.022946113835703726, 0.06403402028906036, 2.01431714516637, 0.9153269759513197, 0.45535078555080316, 0.8164902531014034, 0.7554878281598991, 0.7302943512899034, 0.9227450720901643, -0.2149435624765486, -1.9175638929241665, -0.47494584965396475, -0.8209686635530825, -1.475086806478942, 1.5375697346337323, 0.43409387407100747, -0.5748944134752534, -0.1207717673708367, 0.10757938709427231, 2.24973612340786, 0.5656573548928321, 0.7510332313304937, 0.2925755284670311, -1.1385387437599415, 0.9278383480094607, -1.9329319879816766, 0.8833452963447278, -0.9531724053699292, -0.1039290425260258, 0.4382286101469634, 1.8998623656623255, 0.19200494459198952, -0.6716950287224315, 0.5638093918454188, -1.6242049283972644, 1.7704636715303947, 1.6534314391102312, 0.92655666075164, -2.1666623771571185, 0.3089037330906556, -0.34387294467445684, -0.17869075221031164, 0.45228978471381315, -0.9526180775686287, -1.1784311215584218, -1.4588182758831976, -0.3751354576229393, -0.3058513410728059, 0.9384734481636833, 1.1326237644059438, 0.12950394282796612, 0.7421113354249786, 2.22774088023295, -0.38297985887788083, 1.184609638956563, -0.28900852784476955, -0.38476787730344003, 0.06257594537962448, -0.8447175394855944, -0.3276448761445928, 0.9520069001238655, -0.7029145751675628, -1.6244073387265128, 1.622978343226983, -1.2795553886248943, 0.2494267093436905, 0.6236424924999387, -0.04290636875881789, 1.8562326434548018, -1.3390517668015733, 0.5090655455389611, 1.2848563335735044, -0.5387392229559257, 1.6741064751678032, 0.10066535315992477, 0.8949591322162106, 1.6846660415357275, -0.47037844642707904, 0.4157622049238856, 0.540404845364168, 0.3967936830533677, 0.43668944123398024, 0.2112361885627918, 1.185672884091169, -0.33641286222705097, 0.5497594019101291, 0.12465203566067538, 0.38350811363315446, 1.4507326394999236, 0.14723038127353738, -0.7869045408490771, 0.39357209249435554, 0.9743220259735553, -0.06453115565194864, 0.38254243983530506, -0.8643740939583053, -1.684728335866361, -0.20622146179421566, -0.2747979191346741, -0.07028871827775147, -0.5729020560099904, -0.6189757445377713, -0.1510371111896753, -1.1820077963068163, 0.6043354866597276, -0.9774217378587312, -1.3380178663597784, -1.4201147833071752, 0.18880445993987796, -0.8427639940831457, -0.32186427356745245, -0.006664725012722541, 0.8058032956183504, -0.23641847937920588, -0.6756647705708424, 0.4773883748212866, -2.185477701275724, 0.7531165422993013, -0.8203844714762077, -0.4004758384259698, -0.6468022951980026, 2.2667765095579213, -0.1464154957378096, 2.098114036236069, 1.0184508455410493, 0.8103126555466662, -0.40972058902905745, -1.1414090507678094, -1.3867326701405396, -0.4507753555588849, 0.10028961530046718, 0.13126844765242035, 1.8046340365305968, 1.0498294815194782, -0.1970397367331956, -1.4653721149167949, 0.28738863276181814, 0.5271374800610847, -0.1451944493283091, -0.9800599971955779, 0.6516285157791157, 0.3396200289963888, -0.8198525721107438, 0.6319579574491423, -0.3772650215173409, 0.3077068224849206, 0.31720206688921, 0.12158776309046304, 1.0809042082121207, 1.0642567891228714, 1.8179097447438652, -0.43206935605397984, 0.37786874569296014, 0.3952043620022568, 0.3619801074518372, 0.836701763727239, 0.13589241191151316, 0.5983402387018408, 0.11083062853937264, -0.47684235510432976, -1.425496108886025, 0.5861440987479868, -1.086649842646286, 0.8692343861045037, -1.5595017100635853, -0.11939217655297334, 1.867839017091306, 0.1529344462913203, -0.4142188866098133, -0.015382150772253089, 0.02331025826997036, -0.31332150638072576, 0.07177806286427546, 0.9588513248678675, 0.4790246289141386, 0.1782800679264196, 0.8316439535085373, 1.3697451219813022, -0.29239194315140027, 1.7130334754533454, 0.15301199433584703, 0.2516538496321531, 0.8052203626705442, -0.8193169757784692, 0.8297372716531863, -1.6382362402194854, -1.039626938505833, -0.8865946056863021, -0.9294253652017392, -1.7978162276590155, -1.992621134234571, -0.05491414933488196, 0.7607121087371761, 0.07984366129268702, 0.5462619894735057, -0.2682509648059717, 2.6409716720600263, 0.45749720934429716, -1.5363699364147407, -0.7376116600379029, -0.00034809918522295523, -0.0446268595336354, -1.0661827948417526, 0.20144275615808793, 0.7334562425309233, 1.552508206699953, -0.4212114236659149, -0.18798580599722212, 0.362342131367099, -0.40201566793731663, 0.24422295735481817, 0.5936899101332285, 1.4911129590651635, -0.012571888777807325, 1.1564868960369348, -0.4347382827914363, -0.03991151500405277, 0.8894520643614005, 0.6750877041971858, -0.8924490272423622, 0.06802820117873785, 1.3941390498912603, -2.2183459123693248, 0.728823441885771, -0.20738631995329626, 0.5619451894738027, 0.24102109818707865, 0.5988075233622759, -1.197341333157397, 1.141794439805377, -1.4503023284963743, 0.17970074803850108, 2.2516048850144963, -0.56902356791673, 0.5251052705298633, 0.41230439233508803, -2.0610354044549024, 1.6463483630850755, -0.3895932560221762, 0.023372481314313378, 0.3726580742458444, 1.6009305244339782, -0.5079472543165146, 0.026058442391582896}; + + +static double gemm_B_dram [64*64] __attribute__((section(".data"))) = {0.189669602985114, -0.4909043876322673, 1.251004287596872, -0.006491959097523364, -0.34124077949668935, -0.7483757154858288, 1.1325804441514433, -1.359337165187181, 0.08751016369069563, -0.03871848811440984, -0.4955048405923246, 0.290692491485043, -0.01520214370946306, 0.22914631673454838, -0.7461512339849881, -0.6443114053235841, 0.11847291756872175, 0.19439551671935018, 0.7833381602627896, -0.046667928646890046, -1.0787563446019552, 0.592125761379138, 0.8248616990025323, -0.03807672876925321, -0.48943896240142126, 0.32030678738297486, 1.2611027845782836, -0.8146138503383921, 0.707894179465638, 1.42836604641047, -0.6933696474669173, 1.6507389021911445, -1.8867586637765072, -0.6801063289945823, 2.506643391838216, 0.5179032468570114, 0.9157906679850603, -1.4615127877407137, -0.7014811604960124, 0.7482144125451611, -0.45231597591557254, -0.43328033036609237, 0.5546620950055203, -0.5335895092359707, -0.5577499923860028, -1.2434580142633445, 0.7479993507037666, -0.2454859351558673, -1.9763318246520143, -0.617052799856045, 0.8295099746093358, -0.7985138795193706, -1.9669454509751187, 0.21568313531934488, 0.06218865917825329, -0.21979058106116164, 0.551630007075062, 1.588518953960295, 1.7006327293948955, 0.4788544238385019, -0.41615197068085047, 0.32476024918516005, 0.4828001936355227, -0.2857415896451339, 1.325049359243402, 0.5943271959845479, -0.09542742482466746, 0.6091191876188028, -1.0204861021625729, -0.07122776033319436, 0.25474731658461836, 1.0326277403651098, -0.4032539921927929, -0.2859438908875716, 0.4275765566731029, 0.2610713689915173, -0.15565017655025964, 0.4811708838672695, 0.46865565860373054, -0.525365919337175, 0.39464486011730787, 1.4521501913227826, 0.4920754113025742, 0.01001877915514528, 1.1302339241072494, 0.5012574226736635, 0.40239815358228387, -1.023646734531218, -0.9290930154151816, 1.9346717432885199, -1.2125355152651964, -0.5977126284420752, 1.181293809817535, -0.6689545864836354, 0.33663422390191694, -0.9150073073042401, -0.46210018982909373, 1.0727263376369174, 0.25920697127003867, 0.19738682741687985, -0.2176025539922073, 1.5618547104206084, 0.0874164574098187, -0.18022449922123449, -2.177291625468745, -0.6691715014457149, 0.26238802318984583, 0.7114854381779321, 1.3594786178950642, -0.5105267831106245, 0.8957599457510734, -1.8832700802531435, 0.3734138241025368, 0.8513556242527552, -0.06483231029486143, -0.07775530075881103, -0.731458954443067, -0.1906549073376802, 0.5839211556095644, -0.18220420821816138, 0.5399541172046803, 1.5514984760944803, -0.23835669566472859, -0.8129680193587631, 1.6959480854121158, -1.542485498562725, -0.10582221958284689, -1.1602067061862453, -0.732183062829934, -1.032232792355313, 0.40740998722283345, -0.4461691518402758, -1.639602822546497, 1.737408764400146, 0.5102671515154679, -1.104532973746827, 0.20282323529368904, 0.5451864270031233, -0.4174196455050283, -1.4803962625447804, 0.0711312016026537, -2.4575219310050103, -0.29715235983531224, -0.9060734662625927, 1.0377336775259156, 0.9787682718988012, 0.7181988996772725, 0.5755430190021412, 0.7397220744929801, 0.5318564513368325, -1.3215398823928493, 0.40397027552612724, 1.3257611388643007, 1.8091618397708604, -1.6680040155978901, 0.19219664371439094, -0.5576196967532386, 0.7132732615745503, -1.2150580083595408, -1.4463083092451903, 0.9548065220526738, -0.12789818738063033, -1.000610995686859, 0.7832918030824878, -1.8489698667637202, 1.3870856731187504, -0.6090513936305421, 0.5193597474251914, 0.2818036067134789, 0.5815463164249131, -0.567803366150921, -1.2006864703832458, -0.06290120845238856, 1.962828854249686, -1.1333475754839513, -0.16505100921916624, 0.3678799166519874, 1.6492263827929101, -0.4626305949889216, 0.9386977073001513, 0.01711080123922268, 0.9872047773741, -0.7134319737419914, -0.44937185484417963, 0.3885563045101157, -0.1988361913928128, -1.0830569238314645, -0.3597416459932602, 0.6560019605281613, 0.19154241112008105, -1.4668221584548882, -0.6920493662799277, 0.572714186764936, 0.6916475040075348, -0.46840541134330865, 0.9121131054406446, 1.6074096919057093, 0.11841252923863307, -1.4402773937935691, -1.6930804949542624, -1.1162555921139607, 1.096287644463553, 1.0639045161507725, -0.28203213808230204, 1.1732559505317561, 1.3898278424498873, -0.12386177897129297, 1.1385254001814025, -0.7663128158804938, -0.10502618788525488, -1.2868290476443027, 0.39333359256220896, 0.10555634094791072, -1.2555614763203795, -0.3695707657351879, -1.3087493812000008, -1.2121987546438076, 0.7016264290342246, 0.11644777354668061, -0.9859202287793376, -0.39767440147104705, -0.037356754428425336, 1.0076307089633902, 1.8450467799321841, -0.4770321781666495, 1.1781691723419236, 1.2069309607629284, -0.4175503084970734, 0.3129035109422391, 0.6794906080144418, 0.24235117892116984, -0.00015134736402941756, 0.3528969484018996, -1.351170406870033, 1.2155283753301906, -1.402537825666173, -0.6203795676764393, -1.3742391623665489, 0.6052811339871745, -0.6746837003668393, 0.24199407601003217, 0.28736119321050707, 1.7974505990090723, 0.3186949805078729, -1.0063738446337889, 0.043447057275043346, -0.9162521618284151, 0.5740193687324415, 1.524994279141021, 0.42122454074468846, -0.5058031215088832, -0.001935251987053423, -0.059249535360658356, 0.30669357584478807, 0.22049638564358517, -0.7209260326374053, 0.578590600877031, -0.2814338568695432, 0.6471911034482357, 0.6355326129684161, -1.1584852824016685, 0.8754522360715343, 1.3631571444107151, 0.8948572423285246, 0.12695806790569364, -2.0123992429307687, 0.17385489080177374, -0.31875591594593894, 0.5421847899339702, 0.20730337920079658, 0.505578016119112, -0.889916275322328, 1.222002486711219, -1.545636873356207, -0.5794523266184156, -1.3620271852148316, 1.5575703663389617, -0.2193018045216694, -0.4677903230735593, 0.48272717104738166, -0.4675832048242394, -0.7543230939085693, -0.6098586620173682, -2.3682295377243645, 0.6261136824601904, -1.4955905073070523, 2.70409271869755, 1.6902670347280917, 0.4675422030146951, -0.7686061607983937, -0.8420265795888455, 0.04748961117866384, -1.5506214471694328, 0.6597456051505508, 0.9810895192151013, 1.2060122914372473, 0.5094505048346659, 0.948354175015636, 1.1841352702569934, -1.6107945297750212, 0.37363430210542137, 0.36301946174407, -0.4713654733277363, -0.1357900352713401, -0.8317998284783682, 0.143060129811001, 0.357954244463521, -1.0013479121939963, 1.1320693665450008, -1.0722974377446446, -0.3378876880640738, 0.6373983419863073, -0.7974884472315626, 0.09171832221402072, 1.1137754394535067, -0.5173249508895911, 0.3641096108993, 0.37562510410149125, 1.149953675035897, -2.4150876953168714, 1.2388796995290943, 0.3019276636231262, 0.35532009889140853, -1.268683781896227, -0.7208155426015784, -0.343031757238289, -0.8745959707232299, 0.6340160893384413, -1.406093789252919, 0.5129399194497606, 1.884693292443038, -0.7579009703382211, -1.086805433546504, 0.8863788687809607, -0.759425281130206, 0.5268352654420474, -2.508898843182651, 0.41955502862273386, 2.077603848983364, 0.7432663945852148, 1.4916593464656478, -0.8128170056509231, -1.4563234165763541, -0.9539524744639091, -1.408413616302921, 0.3718249353749545, 1.4767717300094048, -1.2913932275907674, 0.09416680314491302, 0.6229077094186778, 0.30995661293173044, -1.8878093325127658, -0.4463001426607724, -0.6393035105594692, -0.5219090322847073, -1.1431032202175238, 0.23996231659805162, 1.1809752738189252, 0.8051030956141957, 0.400987603269216, 0.9557302887303304, -1.7460166934842984, -0.36154499394302375, -0.06522295552167409, -0.6009801257039329, 1.9887587169725671, -0.7018354826915972, -0.2041348043523018, -0.6175366203935166, 0.13159474089261292, -0.9446699924851863, 0.2068538637260416, 0.31382355603718387, 0.30840240507887645, 1.2878146580745333, 0.5856219393424119, -0.6568938854009293, -0.05232317203714638, -0.37799051437745823, -0.3901095063695634, -0.37088956582253585, -1.0038556934540235, 0.5356482043193802, -1.345197705402757, 1.0500306672776403, 0.30840104248656297, 0.7653967450899795, -0.21309922823334831, 0.8392040761097412, -0.16416710878946741, -0.6709972930186268, -1.5423915961168462, -1.0433007967333698, -0.4096728112440253, -0.9174412411641567, 2.4195675460926807, 0.08813241769030257, -0.5916662331186044, 1.1922469683938692, -0.009977679759738923, -0.5222022711446821, 1.6344397845287502, -0.6799665641060869, 0.8410052507767574, -0.1350848011563506, 0.2508398220742027, 0.2465317823851017, 0.6839967409804478, 1.681812863852406, -0.39747629739679413, 0.0954623781181105, 0.22696508074722685, -0.9432999224955897, 0.3002815391057095, 0.6247436756056247, -0.28001777607518696, -0.268935060413408, 0.9243691012328462, 1.0528496388391924, -0.7876280793719912, 0.43382470243213683, 0.6289022860101765, -0.033711366761932496, 0.5805204623048469, -0.6754668943387816, -0.394637468929365, 0.48355518941861697, -0.22244804258316303, 1.685628214162959, -0.11568422609670699, -0.14295613102166807, -0.37391290726473403, -1.5435990936321167, -0.556050658038526, 1.0753715521250267, 0.46704881675224336, 1.0723003552935109, 1.231529689961776, -0.15439993951522968, 0.34112426931531764, 0.27947376218479614, 0.5107161167447202, 0.4689867373861166, -1.8048261251158957, -0.7118422460610452, 0.17700385429720378, 2.209744990011742, 0.5891707013601143, 1.8192381659692514, 1.1260293291302985, 0.9524656674056426, -0.4526268909737412, 1.4407795793808869, -0.19531408663845634, 0.2283470744920325, 0.011234729330484954, -0.6034955540076896, -1.0733837614648305, 0.28332303940663434, 2.247768381111992, -1.3579610652989789, -1.4299091422968209, 0.7741861134374209, -0.7448851196209746, 1.5139575345025822, -0.6996137533248805, 1.189260513704343, 0.7560345480854492, -0.5955564946507164, -1.892210580413274, -1.507844840921064, 0.6443820369253852, -1.4107609501193221, 0.1755020796040547, 1.107261067809891, 1.6407744690151982, -0.4798733122332927, 0.40063712375861044, 0.08195954117181646, 2.0152721910595703, -0.4021684274370984, -0.7504431079196243, 3.4052517316861657, -0.1670293961990677, -1.2975465623015716, -0.6311541134061391, -0.1405561945796084, -1.052764847449791, -0.02729241829228328, -0.7854270758121915, 0.028516722473608622, -0.6353277757640107, -2.036958121665058, -0.642928398294438, -0.854329570376376, -0.4402500408509159, 0.15257075985667826, -0.6819127080659984, 0.6468347012501044, 0.0930693446845866, -0.48887663896467776, 1.289961254197282, 0.3077351479215355, -0.6084945465256884, -0.4955153130182802, 0.6648048184574585, 0.8846331641907219, 1.0191412836502698, -0.4547337947749852, 0.3866792602527052, -0.3608091685311371, 0.4315664458823607, -1.1405729828723672, 1.0658378320568267, -1.6215943351797741, -1.4960032394689278, -1.1752867571353782, 0.7754013715005769, -0.12596887340485374, 0.08870089142026438, 0.17102026852126964, 0.005037630800198677, 0.5154356751840908, -1.2980855885884446, -0.95942170120491, 0.025064490896124083, 0.05774506261158576, -0.44666312777814293, -0.36009115973957706, 0.7734222385388448, 0.20931239869905546, -0.6405935855372006, -0.9779825570939976, -1.2602630407674884, -0.11213116060164738, 0.31683998325190177, 0.9608162613161545, 1.7617259402782062, 0.5332249726108867, 0.0480691978209954, 0.4698413593912798, 0.7079213520824291, -1.4719055966627554, -0.3554080437826893, 2.1224401502693415, 0.8671446299467845, 0.3939521074267198, -1.042531579871164, 0.3447086045230242, 1.2430525196600999, 0.8932360765812469, -1.0899041626739954, -0.10185537856378798, -1.7802874942339497, -0.5872424427404682, 1.1342357318491285, -2.2425671656367667, -0.3803110761017083, 2.600781602195285, -1.2290888874925296, 0.24569789929243, 0.2854925491407574, 0.7325172508900486, 0.9087490791207049, 0.16351892393813683, -1.415052295757837, -1.7206306176358126, 0.060234739722926374, -0.08942974231790239, -0.5326903183397282, -0.862827297911899, -0.15735909472717494, 1.6833283452032104, -0.048846256996197955, 1.4441404573947205, -0.6577610674094022, 1.0122300292640196, -1.309665630454003, -0.2686500917542327, 0.5540823200822727, 0.13944705380804281, 2.1332591207760423, 0.8065789677701352, 0.3252000063592445, 0.7887411128500289, -0.21228362057381842, 0.4527845805518231, -0.6529880062202584, 1.459939956281907, 1.8440846679363176, 2.127957081016315, -0.11724072209427554, -0.49699571473838994, 0.7646349717820928, -2.3009614984683644, -0.7185790399995472, 1.4575816264107626, 0.0009566262638368953, 0.8182082579799453, -0.13585198410986143, 1.3382523033803306, -0.6484224375517338, 2.027865524163214, -0.9966208197342079, -0.5301112335696907, 0.39150882760380246, 0.803042507106028, 0.3410600781005436, -0.5308353724645087, -0.698898758742007, -1.2280870462459705, 1.4250241437929307, -0.5029629441562755, -0.1258884709654688, -0.2781538960944018, -0.26209920904526157, -0.4591265210119423, 1.2686458890561711, 1.3501269652114032, 1.1802856827413442, -1.9918630409006053, 1.4124073508805255, 0.15947531968114928, -0.13562273551657536, 0.2973109282823203, -0.17685951799635244, -0.8235967956477911, -1.1095909880643675, 0.6923423498891493, 0.3542872190261509, -0.17985102389955504, 0.7847874077044223, 1.3102764929145028, -0.40375562127323683, -0.02378812527403701, 0.3259968219452401, -1.6932063886335549, 1.0608228443140864, -2.2581574537180726, 0.0005062460095738251, -0.6803068888120192, 0.03270078938345398, 0.9449563832937318, 0.2560919649556906, -2.1057408864224376, -0.5052118758709067, 1.421469323382145, -0.3788953447378539, -0.703456192532379, 1.0230324323469668, -1.0762757525300937, -1.1234187168399243, 1.0117046306174486, 1.0939727242689221, -1.5401055327147126, -0.9165098978210413, -0.7320998923855627, 0.36213834223499025, -0.4660635928974643, 0.8929178346215048, -0.5635566812842832, 0.8443361157461801, 0.2257379259786798, -0.46836797703096, -1.142429334719264, 0.5942375319267897, 0.5776330966220249, 1.11889000511201, -0.6225115798235682, -0.665277265086938, 1.3021608863661167, 0.3080846247560111, 0.2305268915721791, -1.4195690799131522, 0.7021465907786252, -0.5065603208361397, -1.0515292011570208, 0.03676529016321239, 0.19083714569711607, -0.45158221578290686, 1.430262537673349, 0.8564108501854661, -0.4684289952147731, 0.7358095889904793, -1.376958147267138, 0.29869224683807033, -1.9492123387745222, -1.6500691440373887, -1.0464692699857279, -1.5861004634732518, -1.8197269407302108, 0.13620180501268486, -1.2674896295636169, 0.5064578533223967, 1.14519788200572, -0.31357045824328467, 1.5444242142322857, -0.9755898265306233, 0.7260021867969293, 0.2983002122558138, 0.33007518208148007, -0.3012251999336654, -1.13629994945274, 1.2591509479456338, 0.23558756797719393, -1.042853289185364, -0.20293909969523755, 0.6958730281917784, 1.8791244019244464, 0.7131591899986326, 0.4556508032642018, -1.6345167208845197, -1.403341194881998, -0.3656703260246628, -1.179877567884639, -0.6956208755464927, 1.236197607064445, 0.7256395410256029, -0.9942873953265658, 0.40637929060102135, 0.001340784350614637, -1.2242281615824748, -0.0830634473482318, 0.027651783756700472, -0.13730254477957476, 1.0745886240915608, 0.5232663992732692, -1.1069337244040973, 0.3068199062637968, 0.5412303781268201, -0.1584788333976485, 0.055360709785356864, -0.010179517498452952, -1.4631874840764194, 0.43434043468018996, 0.4956327203352371, 0.1608750017124351, 0.21204181061562222, -0.848269051241505, -0.05190576930487508, 0.4342286760696506, -0.15638601277079034, 1.1680467944309245, 0.23523486252012651, 0.2931013470203736, 0.05383532865352654, -0.3722041294537168, 0.4322781449509412, -1.8638660542434666, 2.0608887843113273, 0.4025575201110334, 0.46665062174560024, 1.4335012256250086, 0.7398075993729516, -0.7527397495032649, -1.2318793580686687, 1.1497258936055144, -0.7014386812841402, -0.8522103401341584, -0.4526081006714111, 0.476164533281359, 1.093816318098742, 1.1597883185839557, -0.2865809153674455, -0.9793326842802514, 1.2156737659864476, 0.7265837346915243, -0.6063765414897068, 0.4590523848413457, -1.1963506272729019, 0.020177369737896966, -0.5196649709771612, -0.11042132844938202, -1.7803264017675031, -1.0983863507243814, -1.9943938078659595, -1.0180851564689184, 1.343090275133355, 0.05121250188699606, 0.18965693411991652, -1.2847595366907714, -0.8590688058956931, 0.7559867086719737, -0.6093457976035641, 2.287441638998896, 0.2849485575478564, -0.6258324519513977, 1.4242859506295802, 3.1760359675054914, 0.8806279132304711, 0.3677500720568211, 1.2699629292559889, -1.373229118623735, 1.3148250600931315, 0.6221202243471828, 2.161209836417307, -2.4149736340373655, 1.5154278721952714, 0.7974627211294567, 0.23813604752289289, -0.900197705620758, 0.4516990863796165, 1.8523087243586671, -0.9440633915033274, -0.13944564531024706, -1.9962862794970841, -0.876802883170169, -0.45909954643471435, -0.42349373411850877, 0.6253901471648027, 0.2884795399986682, 0.1993641699969819, -0.9750244314786808, -1.357435592557576, 0.5377569832746467, -0.24566106658181208, 0.7760340274462584, -0.13718006475583142, -1.0471331516010438, 2.3698156234871006, -0.8608042226343801, -0.21695269183024965, -0.3963647723939556, 1.3140655172664333, -1.5496430190473407, 0.8299243008006667, -0.23469208225352878, 1.17563374798573, -0.5685406484500056, 0.04936433736528017, 0.3097883608445818, -1.7607966379468067, 0.039978934156923385, 0.22648827570429167, 1.8868326165910845, -1.3359468501779264, 0.6020370854831343, 0.09420444683357239, -0.6254964658092993, 0.5933545751971042, -1.207196105637615, 1.22200570063805, -0.8370218706835116, -0.7362169554932866, 0.47824603981077524, 0.33189582274019075, -1.1410350461719765, -0.20545838480263884, 2.6831380407821084, 0.34587641407530284, -0.37209211976632794, 1.3972167882558741, 1.5468541517541319, 1.3774160713468802, 0.0890331713821522, -0.7617963846193975, 0.7359602107842439, -0.4591000552529005, 0.822805243465044, -1.3704452982024895, 1.1241415524841798, -0.39079861469985133, -0.3682221393582528, -2.862730990973833, 0.3127318821569574, -0.5488202376298091, 1.8942511988856663, 0.5697559112545517, -0.3016669085440337, -1.0631859015069938, -2.5359882587942857, 1.0391700460549405, 1.2895062553420336, -2.202145401537113, 0.06557171746910258, 0.04402596162369398, 0.9080815115907477, -0.04818489310611712, 0.8230410704104014, -0.797744380603796, 0.030779877800647056, -1.2360195428922787, 0.954992325464375, -0.41043047284201517, -0.9164072583967519, -0.8504048338756758, -0.7056726337225566, -0.6237624307170951, -1.8678225332641818, -1.4928026705324111, 2.113734390813324, 0.9503886873331864, -0.6764406676203423, 0.3300941747271548, -0.8577004158636681, -0.9508899749801195, 0.7649728251851297, -0.27781730274050287, 0.4576448036103095, -0.9612977596469916, 1.123017096832584, -1.0472700356156177, 1.070974103218303, 0.1442610329440957, 1.3037843089034824, -0.19194700432383366, 0.3936578615259371, 1.7754003059642411, 0.30763463139827374, 0.00448664532664562, -0.9659194892052072, -0.8249002512298813, 0.9455827325947566, -0.7695467082668787, -1.4939045852147155, 0.49132298190860557, 0.6712301995907592, -0.19850197254674795, 1.0175234856545008, 1.4541756482189356, -0.08027367417510534, -0.5181152695539641, 1.875280493218953, 0.1620107139280786, -0.7384881145759171, -0.5171161188288925, -0.06403923371006702, 0.12978190732109626, 2.4681068345281907, 1.1769716081503954, -0.7324609521575315, -0.19152297948200578, 0.2091053252025545, 0.3954333505187698, 0.15717459862331037, -1.1768146617436632, -1.254123931164029, -0.041531422478273954, 0.04187102672842283, -0.618389217305553, 0.018142080648009342, 0.9811928870760606, 0.38678827937826166, 0.055547484850162934, 0.13317012902523476, -1.800475631340105, -0.6487949930861694, 0.9647930068590418, -1.487718346596927, 1.9671268250571596, -0.37501801123158296, 0.34610293084708627, -0.05437993080264503, -0.6150924237870229, -0.43787079759759806, -0.017150838121724413, 0.27223581970527805, 0.13579425531133751, 0.17114666895138375, 1.4880740849985945, -0.6523866340206094, 0.6724032102680387, -0.2498818144309833, 0.3684109792157164, -0.05652868718922079, -1.141024988505546, 1.0062944399776677, 0.8612263693463771, -0.8651985363612925, 1.6409555329882874, 0.4760963910597331, -1.4235677497447479, 1.1982758403837634, -0.6480863852455645, 1.6982344632787765, -0.8187706458007767, -0.6608925110148092, -1.878968801793851, 0.8393277068222, 1.2099518385773633, -0.3010794489170866, 1.2234601520436406, -0.5316019239972422, 1.4282755674874026, 0.5703393562713633, 1.0888867653411374, 1.0643032788775597, 1.6935580592037394, 1.9364675418998223, 0.47240320094667826, 0.4170350364772233, -1.5902014047218211, -0.8490049971049308, -0.47339514182184983, -0.7405519451390545, 0.014168618743096923, -0.2220062149826033, 1.305130180708799, 0.22749278757750177, 0.6791469709199983, 0.007274426609199737, 0.29066318209770114, -1.2970923134475996, -0.19855173166745999, -0.9320767794783268, -0.40967432838228596, 1.1036337112977639, -1.7195390885648585, -0.6096349652250187, -0.6653270917294025, 0.5412489072541421, 0.7035313262086113, 1.4350188139062847, 1.0909763189822588, 1.4130923511612945, -1.0050719223251598, 0.3236472053381355, 0.6827457566049314, 0.40094481205354565, -1.5498598643101793, 2.6210019152932134, 2.0300902584395386, -0.7043940938451111, 1.0865988277002356, 0.9057001363970097, 1.4810649208771722, -0.10142946285532765, 0.46874289915027023, 0.9625740766310946, 0.09968113439098554, -0.2034198776993104, 1.0358096108450814, 0.16224668087220992, -0.045055182295066304, 0.5554786252919994, 1.2291191037431475, -0.3864008241497015, -0.19365121140022182, -0.20931069081798342, 0.4689683976066863, -0.5298256491030603, 0.6439945266787103, -0.19085594755902638, -1.1213635437310359, 2.375386241376686, 0.5881989810255106, 0.008273393570788342, -0.1861092734243662, 0.8224893358060019, -0.4218577232399481, -0.0032231663149655688, -1.81141037991999, -0.959887551414178, -0.5680617901151106, 0.9541157159307389, 1.12682412380246, 0.43895749888939467, -0.6706243964684786, 0.7825799663791051, -0.7723577262137622, 2.2529183253773697, -0.6198793866416389, 0.04618501623459061, 1.011174817648215, -0.6746114093338123, -0.5115801644049819, -0.01629195036762023, -0.5969933305425132, 0.26546536698365886, -0.3030480871350583, 0.3934547673395094, -0.23801758053719915, 1.8769504574256326, -0.24529552485016695, -0.9744135424772613, -0.7357611817796008, -0.21184761253034057, 1.1465910271880095, 0.11630436842876272, -0.4541508223849615, -0.36746508462131555, -0.1250927382677157, -0.440940747042338, 2.568724923652603, -0.09677977060333055, -0.3659348731125605, -0.3009786276980547, -1.1046192339132022, -1.4969909024911252, -1.705538843107525, -1.449579663145317, -0.23500821987366438, -0.9673606956637038, -0.5500313848742133, 0.808780940775045, 0.6111080247478592, 1.6395521189037061, 0.9609987857589979, 0.623642262045472, 0.723527014546075, -0.26343272683881636, -0.769665428394861, 0.17013249407359873, 0.465846208938873, 0.45598613407332417, 0.39401855978146333, 0.6591988409228787, 1.7266262581251506, 0.39676442311673654, -0.4965304502203755, -0.5142557769956214, -1.6655794153163535, -1.2675332626508233, -0.03314875902158776, -0.783876097094789, 0.4953254858094202, 0.28676342719419945, -1.0849457635502189, 0.3239859963424095, -1.5041496090466209, 0.5864069300955381, -0.9391275890746287, -1.0570473532938447, 1.0555673924267797, 0.09380606672705916, -0.3671423775673435, -0.35514842522056567, 0.411199894209508, 0.9946171745115864, -0.2316865971443836, -0.9112994229878664, 1.2023959036495757, -0.7622509288960355, 0.9136149401717509, 0.30962342705126583, -1.3385900681264526, 1.8165778911592796, -0.3070462119648475, 1.1668079912055098, -0.33944606940905453, 1.3710129669800468, 0.9300579839066637, 1.185142796653237, 0.10854220774737425, 0.6826304187866886, -0.5461042938952528, -0.11638255103314456, -0.08029464734292162, -0.42338854207086507, 0.5084747076597527, -0.8165363388123666, 0.6131311512926562, 0.5583314398652852, 0.09082361393666324, -0.8489450230349159, -1.2492858128054651, 0.34492034644528907, -0.8741986078561492, 0.5534680689510987, 0.3509848535144375, -1.463483294540364, -0.19006125129863014, 1.1315240293178561, -1.3435315937863141, -1.750741728784698, -0.6311931076898489, 0.7270923030390775, -0.5387718100480267, 0.9056367098865701, -1.846270591936921, 1.2272709847028767, 0.6799784552405994, -1.2083016255148442, -0.9766777894153844, 1.3236020557952743, -0.9018831271999473, 0.09157528929486593, -0.45525424561822153, -1.0049561715754778, -0.6200845763863535, 1.733477852496386, 0.4598612881320188, -0.2949519680069482, -0.10651038985747713, 1.478184862839466, -1.66916461604128, 1.0071272154577544, -0.3191246615023448, -1.3762881219090572, -0.05091349499804217, 0.8668706188030013, -0.7152198360224954, 0.2864085373632313, 0.04820236445222125, 2.0590829933787136, 0.10533466463098612, -1.185039046008763, -1.0208925536710525, 1.139829687497562, 1.5281883065641328, -2.029543137642918, 0.5209731324914566, 0.5071573516626207, 0.975792856064161, -1.2943315365568762, 0.19877285881355367, 0.011204445485047487, -0.602040653782272, 0.5736299498569932, -1.9785054425068482, -0.5976246285724223, 0.7019319162248578, 0.46197386760890474, -1.214555459415656, -0.9289682655079575, -0.9873330073605263, -0.4452115501359032, -0.7042276239280941, -0.6568950465417366, -0.9712261431242842, -1.5375361503838323, 1.0386438045163713, 0.8961184107636236, -1.1231152704037288, -0.7310087129802972, 0.4532745570836223, 0.6513772767640275, -0.17217271634298267, -0.7351692274922426, -1.3627698357475697, 0.7204891484463551, 0.29854415380834715, 0.3468095182692027, 0.8119840231832707, 0.06978447405544162, -0.24016735136695966, -0.08960307423878197, -0.21817961411038742, 1.1683267443828442, -1.037689638483834, -0.6239271870188987, 0.6620103621803525, -0.09434442862031094, -0.4030152273570181, 0.47070117017904045, 3.1976163385397074, 0.2619100970459515, -1.335463053243616, 0.6057649340496221, -0.32069248128125416, 0.008367224499531539, 0.10177303682522976, -1.0798033214501017, 0.19572546628132184, -0.9972708114342066, -1.1980320139463696, -1.2280764417902754, 2.043254030499081, 0.39400030768000005, -1.4071046643902017, 0.3997987346703504, -0.3505675095839659, -0.6649904581148862, -0.7190676510974615, -0.7314038673207472, 0.8294618413486863, -1.4971922309648993, -0.7580109890249522, -0.19362259003418086, 0.4033127688590755, -0.20302508970364014, 1.0547536665950978, 0.8053111300585767, 0.6621698769014782, 0.10949744083274207, -0.3680243157771866, 0.3011535518111016, 0.23882541455141687, -0.12244992044143885, 1.3013956438407601, -0.3304347302314844, -0.2383161417380752, -1.67036939630407, -0.11106638365989584, 0.4990455041789286, -0.25198767361062563, -0.5842103728027922, -0.1305107898573894, -1.409361808083387, -1.2557975528603051, 0.9117480009446275, 0.14983346550614027, -1.1349702581587906, 0.6622092567614445, -0.39207799039317925, -1.3665663590081276, -0.41128275516824825, 0.4632560672239587, -0.12326350295229303, 1.4215773652232737, 0.3356703315379674, 1.419239328081392, -1.326046400550978, 0.8498409192473517, -1.333424030987914, -0.4828556213675988, 1.159075456642561, 1.9463103138523798, -0.8415052898911937, 1.0060936340045976, -1.6511900176435539, 1.4022116059874739, 0.866511884032407, -0.9339415936059193, -0.9832761022039055, 0.2576454260927928, -0.030459679752091188, 0.481387386454465, -1.9786433296694181, 0.4839032883340431, -0.52661829084419, 0.5378888526826829, -0.7975908049246164, -0.30217127261876753, -0.8390830626369119, -1.71190823631273, -1.5139589626882188, -0.123355719896304, 0.16788051959333397, -0.17019749451831728, 1.6732330041304837, -0.9388831491865992, 0.7187438609965356, -0.5693078627176211, 0.9178670073251192, 0.7073102150037632, 1.7107199047271453, 1.6911825874334077, -1.213522552035225, -1.526918066370356, 0.3182607957611916, -0.7048446726313435, 1.542896177144803, 0.7414214926541779, 0.027571386474332372, -0.5754942139316102, -1.7958306634788441, 0.9412519070406014, -0.9489277592897538, 1.6311155422356378, 0.5653085033471172, -0.41201313101807663, -1.6742963677191696, 1.266664141133199, 2.0918988065309074, -0.21891340206561175, 1.587266678692178, 0.24357517704777013, -0.7155255221813551, 0.6177965287355739, -1.9946284216093966, 0.8872512984658244, 0.4001647745043678, 0.3292899527453197, -0.298976814312964, -1.6703766117775312, -0.877558359633544, -0.07982833124499089, 1.542228511553581, 1.0197136724339582, -1.7015354910808584, -0.48212576394146445, 1.48342039099686, -1.4829678245607811, 0.24934133729286487, -0.18269475995297718, 0.3839558739092927, 1.6891904534141162, 0.4619748421824861, 0.09993013315995518, 1.0462656041957057, 0.18766811525805024, 0.5447603805656711, -1.5745057434452947, 1.5827795236366957, -0.6502743062505872, 0.24046578837235552, -0.04403547820029734, 0.7664612539005661, 0.20144681297018477, 0.5785053189296201, 0.7764022341446827, -1.287512490286816, -0.23619342552685957, 0.6658466177075605, 0.16631539872440593, -1.4536544736540666, 0.2771445813826407, 1.129883095823573, -0.9555005854035606, 0.5683041332657001, -0.4512292838434167, -0.2801704266168622, -1.5059053494163779, 1.1190392605031392, -1.1718879290253827, -0.8841551589218146, -0.8920958466820361, 0.8939826883481805, 0.2034652918512655, -1.1021273970619352, 0.49297323422258654, -0.44848662225935687, -0.5489949380720973, -2.1257290549864827, -0.03594780788378006, 0.31488414200224113, 0.7341021381288548, -0.18111164825082318, -0.010486184647393863, -1.2860170377857756, 0.503103320093718, 1.5011465291329578, -0.21396707680556573, 1.3045604895745035, -0.6531242638897106, 1.8718755909371418, 0.13524241974414905, -1.7665651290994233, 0.41191565756029835, -1.2811663730152782, -1.2088906569879048, -0.8290994826950859, 0.8136601745512939, 0.43626266846062023, 1.6089090600319198, 0.1593815740133984, 0.9298775421247323, -0.4154891414125775, -1.3404214162908434, 0.09528931157394888, 0.448704117525186, 0.6054527978627932, 2.4408592434196965, -0.5166066202685516, 0.4204577595863723, -1.29987773563286, -0.41956356832710956, 0.15024675730990028, 0.826238085727147, 1.504682832366687, -0.2335959164195668, 1.1452390705220412, -0.7142725656031783, -0.6976263977299514, -0.30040150524704784, -0.17978414420698238, 0.03462283540349657, 0.004961040538083645, -0.9686623661641447, 1.0156800590204957, -0.5910526566968882, 0.42668333759774785, -2.0723034039377595, 0.697952343937172, 0.31893183399956626, -0.23088144999338397, -1.509751062694838, 0.10747571439392618, 0.10611992491921178, -0.9208567330224402, 0.41616978812279903, -1.872118961147354, 1.0314063302051917, -0.21287356137371105, -0.8131389146040623, 0.20225111438661522, 1.4199156443209913, -1.5901962373203609, -0.9547182114259212, -1.0807755665828445, 1.0225863410319447, 0.14578447935362185, 1.2886811180355797, -0.4801752859875242, -0.20595689226841954, 0.5459497541973576, -1.7406726509793795, -0.31854406317287715, 0.8234509000335084, -0.6642196576581617, -0.6033204455513134, -1.092767255651449, 0.5099444391903665, -0.007179640854720999, 1.9388046452293908, 1.6002179297200447, -1.7574981376543641, 0.4657480592549505, -1.1366638959357926, -1.0466970244656812, -2.348820269680322, 0.7849763826831557, -0.2438165410162293, -0.4023438236960017, -0.6576455996483718, -0.8069427471635754, -0.1674045631751715, 1.099907646476609, 0.31278547680895696, 0.24422468441969067, 0.9839964884211916, -0.4248525421861309, -0.9541804382014959, -0.8911225638653535, -1.1388382692559194, -0.44118709528048106, 0.10941276154357217, -0.48521233846001877, -0.3686167969737519, 0.6413441803591936, 0.2479211831622872, 0.9766610530990674, 0.11101021374002976, 0.5854427384212253, 2.277491279753263, -0.7693262395031812, 0.5893216873540514, -0.6541864315768986, -0.06938245071569392, 0.8531392120125499, 0.707105319149386, 1.3205623217552738, 1.474365496672677, -0.6540118144074791, -1.1208556692016416, 0.5298280317907396, -0.5483340133806348, 0.4835462118207064, 1.6400307701149688, -0.7527660556091446, -0.2207014712546088, -1.9012367446206324, -0.011845221890036848, 0.11328910546500368, 1.0410718138994182, 0.7752307161020041, 0.10616567929962695, 1.6636658079534445, -0.13618936070901688, 0.07243706212858651, -0.9472077744730275, 0.5219610405531087, -0.8470430861883507, -1.177488097714965, 1.2434604281943695, 1.3975407829596296, -1.4309207608869086, -0.1558221865207312, -0.6512630617583657, -0.7290687216113811, 0.5152733116422641, -2.3595114280610967, -1.6052774277617399, 0.35428426550521314, 1.4875415958593063, -0.7841888048100197, 2.336027669010424, -0.4953367269783747, -0.8787818682467556, 0.7695845202396114, -2.5321239122945287, -0.44810406970440003, 2.260226631338183, -0.8780654507613918, 0.015979923325116736, -0.5691386244762248, 0.6060754235439968, -0.3936854489607823, 0.7969342297703721, 0.26214721724628937, -0.010518057969719493, -0.9001322196203593, 0.0943659621832766, -0.03816736449793848, 0.721589399500632, 1.217004629489626, 1.2833168243970015, -0.5260200198486596, 0.656638231269999, 0.5989106795317751, 0.1659232479155957, 0.364406640125318, -0.8685919574091027, -0.5131891025804275, 0.3759576560377138, -0.869982416258327, -0.7345685181989616, -0.5171796742457738, -0.8894703034997085, -1.0826478091988276, 0.7261075561744313, -0.706131682059633, 1.0589667993101595, -1.1152440995018695, -0.4933058762731387, -0.6712383697091975, 1.12335088041976, -0.09407603144337613, 0.7172806738325695, -0.7579177299008238, -0.609164835229734, -1.3553330327978614, -0.019650584704433195, -0.4803076283069569, 1.2519402070664514, -0.6641421031054549, 0.7043960474728573, -0.2921906301066324, -1.3676515621225143, 1.141874801312204, -0.015024811232282593, 0.5717555419933172, 1.1866504013111483, 0.9827490621042851, 1.7275770946339244, 0.432788235995093, -0.47813886421591933, -0.8714460344191897, -0.3178590722956541, -1.0286045457899349, -0.8025341000321401, -0.9411870219959466, 1.7783275330439052, 0.7255817354960545, 0.5150701229891861, -0.11226405829821795, -0.44163717594473184, -0.1375102757192428, 0.2762049181371265, -1.2497033166837888, -0.27474418761709474, -0.6384138322177773, 0.0025006347911576314, -0.4951545553209257, 0.7986018616075307, -1.660622472181582, -0.3974661297032506, 0.14195508782466876, 1.1742488499645927, 2.15632219900788, 2.3501189146758734, -1.1553701278196844, 0.7966594580004646, -2.1834227246100535, -0.691145872673244, 0.39958220554572854, -1.216755898801281, 1.2147647043866772, 0.6475726058839647, -0.3050369611353702, -0.36082108102321997, -0.6023620659122336, -0.8309067844131225, 1.2084845569673108, 0.24325632249018914, -0.0005784215469045945, -0.4626925507420147, -0.678649964720999, -0.27150483339996007, -1.5234460098622955, -0.9774107703754668, -1.4910310277195566, 0.7903692364559284, -1.4643865224645813, -2.4211016076172376, -0.9100195679190681, 0.7262082426269985, -1.0054943042359705, -1.500777460440331, -0.8688348040549531, 0.16029656369225695, 0.35352988537757307, -0.29194920862061935, -0.9828236038024252, 1.9220050485455538, 1.400174656314241, -0.33869047227217647, -1.016128789591686, -0.6596098468939191, 1.1432761980922856, -0.8707692499175943, -1.772284863316179, 0.1356924010752182, 0.6553645303577179, -0.07983117172640133, 0.1449619784129578, 0.9849951430194023, -2.076356254004693, 0.8728012372431501, 0.03079777593049583, 1.7281834262032811, 2.362709945312936, 0.6098483704805613, 0.7243884070840325, 0.8956610419016614, 0.29369615979985814, 0.4618061956689532, -0.11879885987832625, 0.4091757607417071, -2.2786897073448547, -0.6247729926926385, -1.3077696693750356, -0.7209553934014017, 0.2992554016895504, -0.7419808119512225, -0.27349200057360523, 0.5030962029782104, 0.5078594213457716, 1.8692666106818923, -0.28761598269501143, 0.43218338233503684, 0.2396978620703071, 1.338795258808114, 0.3649867693439435, 0.9999061228905383, 1.0635672960360585, -1.8606842678184219, -0.17218404794239636, 1.2040307377783537, 0.6574250653163278, -1.4812253208994315, -0.0170582056258441, -0.609287115241384, -0.5907400058854823, -0.34076482193730445, 0.7879699185151358, -1.2222599875487237, 0.03389748036349978, 0.9463913483379409, -1.0672796342182451, -0.506270084550158, -0.5237739778480014, 1.8997820918004282, -1.4043267718460093, -0.9199716837319385, 0.6046877389175205, -0.5181588907438721, 3.4474956927651337, 0.8175509219535936, 0.5405546279191125, -0.4062584258255965, 1.1178052087911723, 0.8691431128119826, -1.2312064629781365, -0.20229126984501603, 0.8553434412271401, 0.21621700648737333, 0.2653791661210467, 0.9264513733160266, -1.1659336494666324, -0.948815962845082, -1.866170928563386, 0.1605968107424527, -0.5730941391354524, 1.6610908786986758, -0.5102994863283247, 0.4862291698694014, -0.8880262098400197, -1.0996407788536786, -1.1026872898279598, 0.9316220945417517, 1.3282328751747563, 1.3254764619646495, -0.6396523522765016, -1.3907256888978008, -0.2788578604231624, -0.5677211833764197, -0.19074076031070328, 3.3177770321629443, -1.2338491844820385, 1.2239112871910003, 0.9932110431979975, -0.7005044755324946, 0.6201596788722094, -1.482305424213906, -0.6513123608903771, 1.8598847911090388, 0.7208855533271251, 0.8174526543777195, -1.134330817545791, -0.07194654199784922, -0.3252179452060136, 1.8952069586290123, 0.17766778608163517, -0.44695524379636, -0.7846907726938122, 1.8620527369297897, 0.5435115627741249, -0.4446802970229687, -0.22617275756319744, -1.1506465980729734, 2.120628606940419, -1.2980770068731349, 0.5487025003986162, -0.7099417203135552, -0.09835515549724476, -0.9743457775230356, 0.30435888123608246, 1.7516428594841185, -0.46544921540870143, -0.8497114521365112, -1.0339825534946439, 0.08115843671613096, -0.6066094336440838, -0.13047088702582313, -0.11201905921608454, -0.5019581461983088, 0.47490063643075286, 0.17173503092906178, 0.6431899649395725, -0.23872149766619224, -0.028721712652565425, -1.4369204429877465, -0.7043483767241477, 0.04360439333359939, 2.4960999423984482, -0.13722954472953605, -1.5304535066575236, -1.2346970008334854, -2.266949913807307, -0.4624922500096108, 0.022565602731663952, -0.257368300223374, 0.4356763930115034, -0.586857161879394, 0.06968815002457066, 0.37900863212459757, 0.42857993052128573, 0.3787327798855857, -0.7927822730097527, -0.8920108887781215, -0.08513462495764972, -0.378854974046106, 1.7074643949762172, -2.135423288869684, -0.017934502044962136, 3.406168768770632, -0.3666201942589558, -0.20624326083624842, 1.1189830026785335, -0.05763592033876413, 2.45889669000764, -0.012197041307958149, 0.7516849917169492, -0.07117390174891772, 0.3945233627729552, 0.07195894063173909, -1.8727680007027385, -0.5088098786201557, 1.464993202427589, 0.3449111247951254, 0.8494509722996453, 1.750328003641402, -0.18453310046988597, -0.5931209140159687, 0.8014787143841253, -2.686933468264052, -0.1791076550181655, 0.45165053042716463, 0.5775290716411025, 0.3295729377044873, 1.7846564254581045, 1.53571695111567, 1.3311200985616656, 0.18939885573177215, -0.22625665352238514, 0.00670673012745847, 0.3074008062852501, -0.2920609026154828, 1.545158085939111, 0.1369233115111857, -0.28730531011989763, 1.1047377340309825, 2.063848597546665, -0.38611367554412396, -0.5496375596740606, 0.658716342473419, 1.2177044932260268, 1.1754643008394154, 1.7821255702296483, -0.13443581273542884, -1.6366657813941712, 1.7791989418010552, 0.47287943204761507, 0.2846677372677902, 2.813014693165735, -1.018696411251144, -1.4259861740067266, -0.8038099773962392, -1.1182821619345513, 0.2801496864889041, -0.47159666033630393, -0.1261918572820217, 0.033625917152435035, -0.2951205793197307, 1.4398343939227665, 1.1894959769491664, 1.8501418087438086, 0.956905678821742, 0.014618718399019298, 0.6178045437029894, -1.4101911998665215, -0.0987004649563861, -0.329502482141717, -0.8688135009341061, -1.6481274773858574, -1.7718376142638643, -1.3768346295850198, 0.5659822119815847, 0.2425669838461522, 0.41620952444354886, -1.5710173931120528, 0.7417386987297616, -0.23851486543700182, 0.47062028183460747, 0.39541460589373995, 0.11174788170294983, -0.8088417376829332, 0.0009066596896233819, -0.20745942068486495, -0.03499567459563232, -0.08327198475097396, 1.1300405981040555, 0.9348827174613787, 0.7301012356968105, -0.9673767387337057, -0.5923963974647823, -0.3326058332617738, -1.405921031876885, -0.5013121080507481, 0.4372668690607546, -0.7266655582548127, -1.5721710704372442, -1.201782983516858, 1.2132056318163653, -0.26041490757239677, 0.5373785703708618, 1.2107520352104826, 0.7079229883060726, -1.3471754095333917, -0.7939169687464911, -0.8968784595700237, 0.4176607904866504, 0.3249685672047233, 0.24838805492190696, -0.3672873484804794, -0.6921188907852247, -0.4958325728592973, 1.367317839020472, 0.2524261198492061, 0.6579800168488112, 1.4839827513865715, -0.561632309015, 0.23652079790675906, -0.4903324954119249, 0.09912656547054303, 0.333666129561352, 0.22077326511399206, -0.194041077024394, 0.7531587527492296, 0.5170237486499323, 0.5436111298236262, -0.29364649759959877, 0.43615689634540583, 0.209522404413903, -0.4412538914508458, 0.052580690462736515, -0.4408963005006592, 0.019960962804798733, -1.624333610347512, 0.5003281667388737, -0.2887033795344619, 1.916753711583183, -0.2564454574318479, -0.38792744247312216, 1.7986529290207192, 1.9120910039247294, -0.21705046983702211, -1.1545294505661057, 0.34454168140199853, -1.565777190842104, -0.3039969187778905, 0.8988006272366036, -0.2879768579253691, -0.34422522533382366, -1.3750289943854572, -0.24719613566322082, -1.1210113987995936, -1.2391980530651758, -0.2252780643800041, -0.09421724289639898, -0.33093067100049683, 0.6278696550297107, -1.8800871143889077, 0.17009166575934964, 1.0200651816876847, -0.7529385991063793, 0.2987368142749938, -0.07648699416462335, -2.1502487223253324, -1.5876796588068274, 2.068182515581034, -0.2936924251847691, -1.388799522496814, -0.408484607372628, -2.0180274699762313, -0.032791860424978336, 1.0516193586445621, 0.9494869845586946, 0.995515961126187, 0.41412723052308587, 1.6089495844965989, -0.9474871099590387, -0.5815627560037311, -1.7964528440425043, 0.16538982992587942, -0.7319527488671081, 0.3692795793157511, 1.5611921907449, -0.8978325685014887, -0.2268078626149827, -0.5309962861055292, 0.07201516715432071, -2.434314852616728, 1.449757482527173, 0.4744077558142584, -0.5416351205869433, 2.2660916638054056, 1.11020426427447, -1.6829197968369678, 0.15082170348420298, 1.7621110917013203, 1.7401095555504877, 0.5392519410260627, -1.4235098831155986, 0.056463263594405004, -0.6963548682808837, 2.0415809465850456, 0.43271658564463056, -0.18797275721228432, -0.5568304246735866, -0.48796761821159795, -1.292810580741897, -0.5998570139754461, -0.2346242003304713, 0.8286501834765244, -0.7368561086985402, -0.44376875474220623, -0.0004908173861640336, 0.4208708674265662, 1.2071293877520475, -0.7552071013929652, 0.9236351835845457, -0.05837566001580252, 0.6951583529670979, 0.8306989177074579, -0.19610956093284193, -0.8372845710288846, 0.9482553703319297, -0.9169096044014198, -0.4409489430185798, -0.013881908859372263, 1.6772557940687784, 2.002776378754567, -1.1350981303051662, -0.949826787922004, 0.17216377194136315, 0.29599312680859097, 1.081321363447789, 0.5569746847793453, 1.6637836123504004, 1.6029894061563263, -0.8053048546223888, 0.09560804918091349, 0.013963859727831377, -0.4037770686515219, -1.756106996546998, 0.065952148847621, -0.8570639935152126, -1.2275565773734964, -2.215500214281302, -1.140728747827738, 0.8801581363850509, 0.63667062531427, 0.35899627766440534, -0.14874114920579462, -1.7926897922269955, 0.018698508958621483, -0.11005429828053218, 0.5678560114121703, 0.4524513169226536, -1.4481002752982226, -0.935303827291181, 0.32907480828411917, 1.815968946976184, 0.37263249289836775, -0.6280597716378297, 1.1694640247181916, 1.773715315343277, -0.2319843130014002, -0.7855412487214021, 0.6967377843326548, -0.7152907230181043, -1.3910123695349608, 1.082342797278427, 0.06955842538462975, -0.6289136729611903, 1.4125085287986676, 2.025590134435565, 1.746576388943919, -2.060685831545258, -1.431453126891794, 0.6734912677572197, 0.6401350535533352, 0.435400868244206, -1.0007141329301783, 0.6089290100942146, 0.4291753233203228, -0.9029293377217025, -1.1200409825086644, 0.04397693978192499, -1.10244612265024, -0.2773813968150354, -0.005352229277594311, 0.6573725024011854, -1.4662280689414051, 0.926974844165011, -0.6572916671523635, -0.6537352511089607, 1.55283475817559, -0.6251678518688363, 2.140988791886186, -0.8278147672247551, 0.38572633069031625, -0.6318610716818912, 0.7111190742818572, -0.4416437044439307, 0.367469145902725, 1.2495146354884694, 0.9353787074591674, 0.2988197956163671, -1.5839049003439432, 0.42330444919804316, -0.6469351862385775, 1.2095052233589756, 0.5263061454716625, 0.23899617476391827, -0.9285968325105913, 0.4003040718066842, -2.1561599667291262, 0.5269357871669345, 1.530666394156561, -0.7094783265215441, -0.7181957190268707, 2.1047567102187923, 0.6458685948033749, -0.30107511733828557, -0.24881581245959397, -1.801525657427965, -0.4859330788946545, 0.3473435634019159, -1.4936888563147976, 1.219914038937146, -1.5167554485466308, 0.8047069590125108, -0.9048546980985884, -0.27441611835118457, 0.4306425799188508, -1.7235037406979286, 1.354628016983049, 1.2737042271707677, 1.6191319296034328, 0.735919593851651, 0.4585966464736884, 0.5996372458926001, -0.11047101043242392, 0.3525723705153651, -0.14063353058666744, -0.6142313942856545, 1.130624877307917, -0.12102325767564293, 0.5442117526259592, -0.5403629622028528, 0.8296377545936948, 1.27214363752744, -0.3821121209536119, -1.6498126033020835, 0.9229483990313, 0.9779867268215527, 1.195364231090116, -0.039740256852109336, -0.6468504633660788, -0.1835463801348843, 0.18702699770560685, -0.6190596403307621, -1.7758304801107512, 1.508807177607114, -0.24109338697797905, 0.4631965911323548, -0.7186297277267051, -0.5932230289976798, 0.1649134830430658, 0.9217529559230451, -2.113107054187719, 1.495739110209002, -0.32991814907198524, -1.1285000187041665, 0.7977508692229875, -0.6324676669003331, -0.5207546968661813, 0.4941237199528515, -0.41245780364313256, 0.04939169628599765, 0.21857950385145597, 1.0775869197853591, 1.4174088220386398, 0.10745076413242229, 1.9652881178044732, 1.2144059061100803, 0.45170197162057635, 0.0005771812107460632, -2.027089220978618, -0.35269438817590215, -0.6067042421983502, -0.4462968771961304, 0.22169790172897152, -2.213860133799711, -0.25185231053466395, 0.18349468568397984, -1.234321257122067, -1.2767143227797635, -1.219748011178242, 0.803163868309887, 1.1723362156850679, -1.0511082561993392, 0.5896315959519233, -0.3026497563524433, 0.25857411751629744, -2.6379391495512574, 0.24254161271823366, 0.26758049299320774, 1.3736446383002492, -0.2808055784619822, 0.2722502138472599, 1.3403384783597367, 1.694634248553822, 0.6026873450172656, 1.62299765872056, 0.4762447251944673, 0.08810124426666355, 0.11117370308283465, -0.5050805874169455, -1.1338038691333352, -1.0207840815730405, -1.6422093576684975, 0.22368175843112467, 0.7426490550608933, -0.3142644472236707, 1.0103278730986882, -0.8660143027878295, 0.5697618899554041, 0.4264092604031469, 0.7240844437060513, 0.8266707092330077, -2.0643157683856, 1.9434979202863867, -0.6408643293198005, 1.6432896343445524, 0.9277333393877758, 1.3189945049352763, -0.25650286505666625, 1.965560992268791, 1.8213621585713746, -1.503533271861299, -0.19580489922245364, 0.191616368806377, 1.3181095248614239, -0.39674562813596553, 0.5356448376759921, 0.39311606885126577, 1.6224830274878241, -0.6639884519602309, 0.15546139261435685, -0.7387052243324294, 0.6289350238005109, 0.7282873752125394, 0.3165612132575932, -0.652281974301976, 1.5433942416056965, 2.47683597304532, -0.14916713468644752, 0.9501800034747293, 0.13587660177551125, 0.03613326393674803, -0.7237480311094019, 1.0949707620919027, -0.9769340341766338, -0.05921619047971073, 1.426825388255249, 1.6752120980115939, 0.795453306662201, -0.7755037047860419, -0.15461646907210536, -1.3890767080063884, 1.0529967718142275, 0.9976936151350384, 1.332735503169351, -1.7108387910528222, -0.10824453003093894, 1.2354760527115538, -0.8904457098799401, -0.8169754874480261, -1.1370577022172665, -0.6071774956226643, 2.0511476913856406, -0.7830498896948143, -0.03676275814229943, 0.6038293322962383, 1.472165824690626, -0.7056222632601199, -0.0467107787449815, 0.18807094004824762, -0.42216692790377014, -0.13855549523146243, -0.5433190954101608, -0.9226064296533822, 0.42507353110252416, -0.8172819525228391, -0.7809729727827792, 1.6446573868197591, -0.3656165913939135, 0.6023089914246612, -0.5643132881556219, -0.9633738886349973, 0.24632151425551105, 0.8204484828263375, -0.16201666001698542, 1.685912359362119, 3.06700252986585, 0.6617774942176655, -1.0040453137475622, -0.6172994137123726, 1.6180226180054886, 0.8429893215764661, 0.025460594268897623, 0.3479450777176482, 2.0078238030698636, 1.3393361998974052, 1.4317466616428682, 0.4579330597709827, -1.1274985211458544, 0.9767244079433385, 1.2587933112859289, 0.8476731372760178, 1.7628714799535847, 1.3049896091031608, -0.36150957824597807, 1.5030525940981552, -0.7801386726592521, 0.1513762139476246, -0.35112463351229073, 1.837739007328147, -0.015158507511135831, -0.2991192109089548, 0.46657766925371513, 1.420943752567541, 0.5809320989641804, 0.3551940772843608, -1.0999426989251082, 1.1041690429383328, -1.1560021403810814, -1.1062867754981813, -0.7827461172580052, 0.7959395609646354, -0.18153071461918635, -0.24116708825317848, 0.3990519149808553, -0.15564993281113088, 0.4372657274738833, -1.201873278369289, -1.3700180959347181, 0.6920833223124919, -0.5312294981487146, -0.10902101632296987, 1.248118109915001, 0.20872088585274678, -0.6083934186789268, 0.7423053567212846, -0.34444959772498385, -0.9777483292652849, 2.223789705043405, 0.6694591532307673, 0.28847229101563315, 0.11229000519845835, 1.6408969472159909, 0.6625981775877482, -0.1558226529617167, -0.7205611597593764, 0.24962408033917283, -0.09569261310086963, 0.9771306394522535, 0.034636130743337525, 2.075939890459903, 1.3566617676123918, 1.0270565232586033, 0.7237763615783379, 0.09591731457863975, 0.6889143877613391, 0.6425343157670212, -0.7279578424760957, 0.6830117763416009, 0.6185085759613994, -1.7337209714531534, 1.15745181629871, -1.2081895706309593, 0.6586845642819952, -2.78079601104039, -0.08882181771534245, 0.2339849515986858, -1.2018551498395114, -0.9508896526834771, 0.039812401385598245, 0.5873572672607883, 1.9338021854764944, 1.089671633947238, 1.8393226614447074, -1.273327662575822, 0.9223415325858076, 1.3719765295674315, -0.7945878809532562, 1.2787415555120119, -0.4821841102534756, 0.607473797642488, 0.5683312485637652, -0.6195875521757297, 0.5689569196095314, 0.8781962552006474, -0.8911113251956342, -0.7683616776084702, -0.47162079773443777, -0.03191869811931289, 1.022293595012591, -0.7946302231549325, 0.6032417486934556, 0.4980096428874349, 0.48928276635174567, 0.5660281554370863, -0.12191577116310535, 1.5524890878524804, 1.4946073381353722, 0.48484746551641333, 0.44908973109546657, 1.4917081663181815, -1.8614061954392773, -0.624587572177733, 0.3170694850496892, 1.2875393651128213, 0.1176439522089831, 0.46769590500613, -1.1477561641710432, -0.4888512541791814, 0.29087939445256583, -1.156431660359815, 1.0444105776920733, 0.08884650272073365, -0.48051165567394033, -1.0531656839887626, 0.02766324341023624, -0.10527902120387268, -0.6628173764404989, -0.3033610094512978, 1.7048899457191737, -0.31898415130533375, -0.46058272586248855, 0.21062683777699748, -0.36812460265029606, 0.33652676986636315, 0.3236159180652725, 0.8947763791232438, -0.046623060723555695, -0.47512302722136024, 1.575370258034113, -0.03761268839633734, -1.352386595817521, -0.9483356430836982, -1.028716739224381, -1.5638814718009917, -1.7210422812237611, 1.4945995510345567, -0.5268796561342607, 0.3566423182164152, -0.7167872516194996, -0.4428217812148648, -0.46422664555214305, 0.9369918534027788, -1.7404902110705263, -0.4324428804621579, -1.3367051291338052, 0.25810834246088477, 1.398762352581004, 0.034791693460034315, 0.3981107862143589, -0.7723477433968918, -1.8381312799299088, 0.11133077808104638, 0.9689358555384477, 0.07669974844112153, -1.1946344297396054, -1.8841567320644628, -0.20719681719458505, 0.9002601404675714, 0.2333724929750161, -2.0084680514191806, -0.7270727909976298, 1.0506326108080541, 0.5684322570795058, -1.6364404568511535, -0.07181480501491022, -1.3259578694687586, -0.9984287239140569, 0.030979117600469074, -0.08402038714892086, 1.2942189441837226, 1.5082843130642087, 0.3410030049413046, 0.0057889375667351094, -0.2432666473105903, 0.3981939687558286, 0.17119383734576185, 1.0460524144567587, -0.5746240339508544, -1.0349560837804677, 1.0184000283100978, -0.09955687084553429, 0.35200443059829245, 0.8279914080421767, -1.0798679506403541, -0.4390700834752314, 0.3680381824722795, 0.11464668364155528, 1.2353463697524734, 0.15743561049159477, 0.9256072483796912, -2.1849581690080555, -0.065984099161594, -0.4650474770641444, 2.143907078190805, 0.8816491221888422, -0.003902815411469966, 0.905199590933292, 1.0026700985921706, 0.9885068182490291, -0.9605994188901047, -0.009364231583693152, 1.7276268792428473, 0.22778147331011792, 0.7438423244369328, -0.5870832701281387, -0.6875243358298012, -0.40990083463094634, -0.8747836211413581, 0.2753721538148257, -1.4065218105605355, -0.33899470403862797, 1.4473751097143777, -0.6038191850464151, -1.1385745044486548, -0.4816987181224384, -1.3445513835383933, -2.5957409768073245, 1.260664230909938, 0.2240479886640547, -0.36671037716186844, 1.0528037049861176, -0.5193311511183563, 1.5718955134357182, -0.8159713739539352, -1.4616528319169775, 0.18574134153247543, 0.7170502881582332, 1.088677730777631, -0.33916355744140897, 1.821890903560027, -0.6246604296669839, -0.16633856709516748, 0.7274091035559674, -2.4715771243751226, 1.2879637708344551, 0.8125696535679003, 0.02150375939915354, 1.822498098193285, -0.17001990885000728, -0.052205598859868016, -1.0839349618672527, -1.2509817722769654, 0.9570579186595424, 0.37032567852749, 0.7661708667508003, 0.6372500799705507, 0.3841808718708592, 0.5735256411790288, 1.485071764115552, -1.921358153981379, -1.791669964880979, -0.5758839644664974, -1.4532306051766954, 0.1160156247366876, 1.0767435169705282, 0.6888533485394165, -0.301534039019897, -1.0015286896665496, -0.5136584805608818, 0.6106885504696978, 0.07238255324721113, -0.20658267805579636, -0.9803371411601391, 1.8558602683726249, -0.34684234783223405, -0.138705499081124, -0.7313561090591182, -1.0044446714902608, 1.3591013677668105, 1.4942643445597592, 1.8406160691146698, -0.7615340045466905, -1.6017596501358158, -1.3610928866213383, -2.076656356422838, 1.203987441260602, 1.410835808709077, 1.2990481267032234, 1.4153255218561738, -0.6573925555742512, -0.42027115973485385, -1.5213565790072734, -1.332033491041734, -0.33102623775307954, 1.340110048415235, -1.4261107490492029, -0.5232145959705184, -2.2848088931420065, 0.8902512659612491, 1.674110486119981, -0.972793451864786, -0.07743011620298457, -0.4913319447167086, 0.18282418791198085, 2.2772797990691647, 1.5324980852375782, -0.1815847476714992, 0.4617271801485095, 0.9632684685006433, -0.14506424114808303, 0.5103962896847007, 0.3177090775637023, 0.03191303725869083, 0.6308204756962924, -2.1211644723131724, -0.02930485583633999, -0.13078780011810998, -1.1038727471781569, 2.050182109550436, -0.6470129923265721, 0.4345613421962533, 1.3484671879831278, 1.4888034597366457, 0.8720229260359057, -0.7254503276995763, 0.8285985659333751, -0.5917126528319241, -0.44837495229842944, 0.12722050362405046, 1.2305141892155638, 0.7151072657003036, -0.40010337492322895, 0.413721469429948, 0.19376914373215087, 0.9920291161315633, 1.1147082449222048, 0.29682676074294506, 1.2656905677375838, -2.176072940640231, -0.3306294574129653, 0.2921479170003794, 1.154104526108482, 0.5825126289522653, 0.2701534137189382, 1.1343291794639416, -1.3987613199365359, 2.0374743389978627, -1.1598317103172542, -1.0004947044013306, -0.6198007001117833, -2.11493035968152, 0.6920712069054653, 0.5404300549763246, -1.8568976733896805, -0.0461425798346585, -0.26684094546500337, 0.3621050864222061, 0.44082885192374405, 1.0572972351619618, 0.7193849792885922, 0.6697172441294476, -2.372309233730456, 0.8397967248644236, 1.6908321897138245, 1.0213495345802792, 0.12679064943416948, 0.7409940265311785, 1.0718527529100068, 0.7458811584103926, -0.6468105502000671, -0.869284801742413, -1.3054611274711465, 0.276232984051142, -0.5563759421336263, -0.7791629303501022, 1.3319015834176797, -0.22703800554331624, 1.2742399221121468, -1.0311758922985133, 0.4955890468754583, -0.7995854873426, 2.06240141354978, -1.1343231763411903, 0.4563870076575751, 0.9814598643661121, 1.1276215638225833, -1.9695365549171249, -2.4572973110469056, -1.0220519870845493, 0.018064999514862144, 0.754060062389077, -0.2739183590275094, 0.9986033617806298, -0.6518789292799052, -0.5139154643660516, -0.6566439248016585, -0.34300581824604537, 1.1932986357592312, 1.607092129619061, -1.8735264640919256, 0.5079171532797483, 0.42254046476492185, -0.09860764477494396, -0.25875806103153426, -1.625666094056695, 0.8839111136542974, 0.6302719139868384, -1.1816059491920998, -0.8770360698657584, 1.4760791332584298, 1.0455690189454758, -0.3269341470162602, -0.06246586753421959, 1.301362501195787, 0.06393518361722653, 0.13819751107759315, 1.134165955447205, 0.4153648416666165, 1.9376580364864786, -1.781805734225342, -0.7508280591488423, 1.613113523011985, -0.7972871839181324, -0.8161020873770328, -0.4925971310656774, 2.2419857626757587, -0.8310381295604786, 1.584396674715407, 0.3588891143774135, -0.8422775912109417, 0.8195938255125932, -1.390080439023078, -0.26479485589503565, 0.0373559919191076, -0.8618126688825368, -0.6148341510806443, 1.3144782369860601, -1.413259141058041, -0.1566257320081451, 0.4571443687995678, 1.8139801219827336, -0.8729416492214658, -1.2021446452680054, -0.18287439285074464, 0.7151367410023329, 0.0724635819839709, -0.394150602661191, 0.3086697829408736, 1.1001489018141712, -0.7541391904025803, 0.6506253211085398, -0.6789193350439231, 0.7459004970720945, -0.8583929015402073, -0.3751247341071256, 1.1153679055306462, 0.3243622406515602, 1.6086260544405733, -0.8973214534592038, 1.4505614500774051, 0.6390192112355659, -1.097567907692405, -0.7789509309904787, -0.010118223620103015, -1.0067592408859265, 1.6858550771091214, -1.375924608815696, 0.9880995543293336, -0.6445948416979022, -1.4508885825739297, -1.4892296911532181, 0.33872966509087593, -1.308217262167615, -0.6692014546820036, -1.938665276478024, 0.08570043587182144, 0.3367745011191109, 0.30216625220261106, -0.029139117833403446, -1.6994515863979083, 0.36168092874820507, 1.1666478841476853, 1.3588702019634644, 1.3731126700876528, -0.6990041625840486, 0.23245328885846092, -1.445715944658206, 1.3926227501034782, -1.1446072903750102, -0.3816077510920729, -0.8630891545947001, -0.6716403178792367, 1.4677584224643059, 0.5204410421666292, 1.8760662842613385, -0.7032982984900227, 0.8890929266772621, 0.769892531358705, -0.9255303897325509, 0.5230236705061742, 1.3209816351528552, 0.4721963640474325, -0.12533254753908293, -0.15115069978271048, 0.918270672574204, -0.41451142025139015, 0.06983434930473358, 0.4428019418512945, -0.12167714338407565, -0.6749483178493708, -0.4005731600700831, 0.15795477733282282, -0.5361865265613242, -0.00765546636667677, -0.2486297625885688, -3.616244826516541, -1.240093138147424, 1.640939453974592, -0.4967717054593357, 1.3928570054101417, 0.3488571494425995, 0.29196792037545233, 1.353278291959696, -0.5810568006549722, 0.2576064001530712, 0.25150655593518184, -0.8098065870783787, 1.3128640032531393, -1.1852909158053921, 1.157878804816697, -0.3811363408541145, -1.8623261901283767, -0.05395662589269566, 3.0611733845656395, -0.054354803805188714, -0.24720917613413934, -0.06936303775634156, 0.04206641378767387, 1.252770550122401, -1.9223819765041372, 1.202712320404443, -0.39889697987982026, -1.0055963360448883, -1.6867607272487752, -1.0277579618997654, -0.46112981399687764, 0.3263146874682954, -0.5693906145441722, -0.3589843137912688, -1.936031194784913, 0.249550573252273, -0.10765873957312352, 0.8349991429830456, 0.7108618513078415, 0.29222682765828795, -2.1165124622742204, -1.8483066026640207, 0.07816241030036447, -0.08022928270577098, 0.606806535748979, 2.605058213283425, 0.42397577027479655, 0.675291066744399, 0.1948581130574186, 0.053796140071209864, -1.336800515204708, 0.3677730246474584, -0.9271093020874797, -1.4990654058428237, 1.0896473253676273, -1.5815367050307532, -0.7067595339381431, 1.6209549425055911, 1.3752140381174898, -0.6133729043121271, -0.28995254504887596, 0.21775129927781378, -1.4513065159005456, -0.5519419806661555, 0.5200969859479287, 0.36284766593900053, 0.5647216927706189, -1.1834916327999798, -0.905378910739902, -0.28194417652034437, 1.527761638614743, -0.785705814458699, -1.6162077232566219, 0.9782101083250803, 0.4292062014732737, 0.2185071569653127, -1.2394667444809362, -0.24870697467690292, 0.4573643259259206, -0.25535084881820336, 0.4777716036036974, -0.32651136607182046, 0.07901046926896166, 1.2886090146135347, -0.3605679983284582, -0.39764667123450276, -0.9954780884334878, 0.2561807897177513, -1.0843685493072819, 0.12986086111190515, 1.4638160519035035, -0.7926601642106428, 0.11386912747556614, 0.05064223484110245, 0.9535530862878486, 1.581370038498723, -0.7467107303747241, -1.1294768284497914, -0.6863173758499714, 1.7425897413780096, -1.750080716659231, 1.0200201403878384, 0.09216683237316162, 1.4445890756559074, -0.7575386400758898, -1.0267595764809776, -0.743203277087611, -0.3617902098106558, 0.9807379610674246, -0.4494919815199539, -0.139645087546484, -0.45590558967109956, -0.8314871492327359, -0.4016237646146306, 0.15802207902328172, 0.6808297404105077, -0.4004107535270797, 1.2013287338621885, -0.11531924092553854, 1.0876986546066656, -0.5880758813860446, 0.37634955414789306, -0.18527094825241655, -0.006937209118528061, -1.3608513191181555, -0.5197236573250131, 0.463408611045455, 0.1895096241785028, -0.8348270288277571, 1.1310636505387424, 0.019320381958476556, 1.2936501822037318, 0.7753045815203952, -0.5174529713073618, 1.6303894518830946, -1.424798288107138, 0.18463910494905925, 0.6357892633788328, 1.0191286705659799, -1.0776572234997361, -0.058071070610180346, 1.5263388569653553, 0.024994765804824147, -0.5151247779921773, 0.7487573413181321, -0.5718694030200041, 0.035058228455775144, -1.871894006094185, -0.6613196865194579, 0.5769725286701373, -0.7367371645074806, 0.6323524439681041, -1.6036518992044688, 0.47863453049805044, 1.4441827711806823, -0.9735425062205508, -1.4741086101976333, 1.2814696296764614, 0.3473471655658854, 0.7910848434880573, 0.30046251963870085, 0.08522935573665827, -1.403980406004003, -0.6146482994249365, -1.2315289364819961, -0.8977027776830132, -0.42433779835516944, -1.408345197598874, 0.42207025179163454, 0.8461892348632205, -0.2490679239134021, 0.8773618510991119, -1.301799608995058, 0.2625572138302102, -0.9427058228766325, -1.3881643437611735, -0.23483236113230144, 1.0207985074811297, 0.7713401976605815, -0.006814522630420675, 0.18837621181964065, -0.6573210575280002, -1.0449722114717626, 2.0186122729964926, 1.1741037427266254, -0.6846815563905236, -0.49771622437764096, 0.8746192365726885, -0.5174181206012595, -0.9476378494963715, 0.056782072073773386, -0.8790965213306376, -1.5574761449522962, 0.21609065407695296, -1.8626818101777476, -2.0961349093879544, -0.33105364449783375, -1.1589669416210095, 0.15132243302789938, 0.8521605677636602, 0.7742911410807676, -2.538589768176732, -0.03253742612676552, 1.0422979672486086, 0.3326917440450766, 0.3621209495718994, 0.6922554384196643, -1.9166699100712044, 0.2064510369320226, -0.6239270633688702, -2.529204012749036, -0.17706345246737432, -0.41998189317162704, 0.5896270638633384, -0.21469214077392976, 0.44731860905074394, -1.0540791458678187, -0.5301057190296372, 0.5084134433716269, 0.4554630839524932, -0.4084554473716878, -1.3027980677359505, -0.4161422881398393, -2.460697055036825, 0.5421086409579616, -0.8932238012324163, 0.5048363560164861, 0.3414417673370007, 1.5271676147265836, 0.18977908394646267, -0.06629069340678465, 0.7729936640614463, 0.34281900309511515, -1.1555368611628043, 0.296537366216279, -0.3026417513931259, -1.2210833218836539, -1.4742411434507334, -0.14560303293072532, 0.046983698579071434, -1.3665590045394855, 1.471863012837933, -0.8451617487867245, -1.6332734431577842, 0.2361034586065518, -0.3475342578604577, -1.3905060397760676, 1.811073181558942, -2.2845558148071, -0.13340769738466304, -1.5563678592094914, 0.9627065829455164, 0.15321158202821022, 0.8334286814456744, -0.3398650955417231, -0.6376838625799586, 0.6081958963575117, 0.9901982501221922, 0.35623705928968014, 1.0842624515579264, -1.5667536820401184, -0.6257925557519216, 0.7682912494990076, 1.1173074404160004, 0.14496376455100546, 0.44695349034542475, 0.050433113577438515, 0.35098947793500807, -1.3418569139214052, -0.10875592605323897, -1.0810666579003045, -0.7282751936534643, -0.6262881610175278, 0.5293884091632937, 2.2253130444496216, 0.8586917015117914, -1.4697058573054282, 0.9362446576484363, 0.79863673183808, -1.5602090121872974, 0.5783162278332646, 1.1951555259879219, -0.6532108007553509, -1.2992896271871042, 1.2611098853442282, -0.7545827594608056, -0.36198900956783775, 0.6447035193294413, 0.8194948647249047, 1.4598549115209354, 0.2836464927146788, 0.5211686346384714, -1.3692385165909204, 1.4964190701230657, 1.2462956506064462, -0.5556592512747162, -0.17330930073486658, 0.6290502769928877, -0.5802577510870809, 1.0746072114312424, 0.8485594404128306, 0.6119113473927877, 0.15531221334147638, -2.2593684559557246, -0.14329578244546745, 0.8696374882353123, 0.34178117698250476, -0.31084462878259445, -0.049667590380486994, 0.001024958794340004, 0.01745826015650065, 2.061655680618017, -0.20091142427273523, 1.62999490749593, 0.30641413633727077, -0.004195755687396656, -1.0735391094616389, -1.447030660023786, -0.3278301461019186, -0.8514356912425605, 0.19058848286262964, 1.4142801306207733, -1.3920535728295902, 0.004210702344412748, 1.1950148433456729, 0.7845203905386896, -2.7992162064438526, 1.1078334261149487, 0.8838498428601247, 1.7303935529284833, 0.10814583704412964, 1.058321853508688, -0.35250711745478874, 1.5707754718355267, -0.993616522481608, -0.770819120513824, 0.7353602889754229, 0.8538659984117739, -0.4836215067602598, 0.9881224827101989, 0.8301051921559156, -0.27937299969585233, 0.5075977458329036, 0.16086045997109896, -0.3724907451950873, 1.0407276314629512, 0.1035243161974872, 0.17829226436911383, -0.29302661250863893, 2.355379772816784, -0.6339438086298942, -0.24547841579497692, 0.553142239737994, -1.4447712869600169, -0.10581740020796536, -0.4720635039991762, -1.2665210758120529, -2.6540996410436106, 0.11891915476573794, 1.0996078153848807, -0.5185221739427627, 0.6938132809945982, -0.9727316982881665, 0.8949816226916981, 0.9129734868959687, 1.3070889916855144, 0.7867393096524915, -1.0714842437075964, -1.807462368498706, 1.2014866344567057, 0.6229076512220945, -0.2816212687484363, -0.7731735216366021, -1.3091664900629916, -1.1196034509026367, 0.8146717603062831, -0.9327486743061679, 0.24590379716684088, 0.6888572155488026, -1.431856899763485, 0.9498709387195441, 1.6027755842182616, -0.5506101111181769, 0.44713349005542324, 1.0023339789202066, -0.5075874816754351, -0.04025364308925709, 0.8784821536444274, 0.354165616551781, -0.34496828558498516, 0.252765632632188, 0.5060403800263849, -0.34941054966462454, -0.9684600861287586, -1.05385401691128, 0.21414179532614872, 1.062335579748586, -0.058214043298022156, 2.5847749332602, 0.09989507970317545, -0.51667585170615, -0.08646896041984872, 0.16087228538156456, 1.7896888081081215, 0.41312510613488473, -0.610273978130261, -1.1234803559227962, -0.8663998447283321, 0.7280800945640448, -0.6060289812671181, 0.3054072741705922, 1.5977020899206693, -2.0886778227205594, 2.04718791252273, -1.3944739484632676, -0.07769395725697413, 2.485647389509429, 1.161056885783272, -0.6422446354858306, -1.6866627876101177, 0.5835547255432384, 0.32799163478787424, -0.8074432428697494, 1.4534847934773354, -0.6520860152162103, -0.6257637502682993, -0.35347806043290736, -0.6064010457787304, -1.609303253469617, -0.44956874651117795, -0.5932212618722055, -0.7980109810319539, 0.23801683948070443, -1.8078078993421411, 1.6110932188650129, 0.8306217769227588, 1.5079696883540965, 1.7052265295882478, 0.16835781469295008, -1.5968498453112046, 0.05419468096069937, 2.080737900190375, -0.7813997319688913, 1.1723324732423348, -1.1791274655949502, 1.522909575863655, -1.838129548833068, 0.8885460864971125, -0.3112079672420133, -1.8009636793346049, -2.1219812182033895, 1.6211488910349103, 1.7647325336720354, -0.55392401828593, -0.18536494230320436, -0.7559434902011402, 2.02035055742048, 0.10236207599063739, -0.09071516667529367, 0.87002060394994, 0.20356887701465726, 0.11649757853760016, -0.5049684014655186, -0.878538580803181, 1.219994070236117, -0.4591311530517561, 0.7529292801127621, 1.8466624703615426, -0.3119279752724232, 0.3618651906707751, -0.11931261167544333, -0.15184679830362122, -0.08142618606573834, -0.45188168827767916, -0.34435155003796397, 0.5447850111120647, 1.461016480023341, -1.759834086257933, -0.20387130619003158, -1.1061309579704512, 2.047571834848655, -1.3625301397704557, 0.03847861193968079, -0.41908164540912235, 1.5267142534760538, -0.8074216676664461, 1.0942537068290124, -0.8589893343576649, 0.02880708722030125, 0.07541789139329211, -0.8964204184288705, 0.6104271933326174, -1.8896306217640972, -0.5715779960963441, 0.4862407608854612, 0.9376060820449048, -0.28981493648460016, 1.0601815230005722, -0.7181795974169856, -1.4223291833641392, 0.2547235818307659, 0.4253120949833701, -1.1337994252104073, -2.0662599115172653, 0.5696294165103171, 0.4807972440746681, -0.3334732608283706, -0.7907307751741902, 0.3401662792087062, 1.3672741814009857, -0.6528412434007834, -0.984898049801574, 0.44178370023062646, 2.3589933091709563, 2.2492879960896084, 0.6098625542626688, 0.34842243659368244, 0.21742125464736634, 0.1286412370033291, -1.7506912234691885, -0.33887856780628234, -0.058130587212581325, -0.23849827593955103, -0.588672020705869, -1.5085222292073164, 2.20745259723818, -1.1395828435290725, 0.7867474162185699, 0.08511682154742599, 0.530729446677609, 0.3021529756635018, -0.652536121488528, 0.4832898322611189, -1.2687776942664193, -0.9031732659236469, -1.8365049505188262, -0.8401997607017293, 1.1672764414566084, -1.0278570477914484, 0.17559902453769902, 0.42560541758942194, 0.8184067330416113, -1.2701487841608123, 0.49835521087482404, 1.0547915487532276, -0.035297958124361, -1.6367117659354635, 0.9350268770492959, 0.4735793365879849, 2.066401169980402, -0.33085780821604055, 1.0662489588346322, -0.7236136907093336, -0.2366005418237537, 0.3118694011837782, -0.29251836991064384, -1.2745280345294823, -0.8602100327750805, -0.07780553709972224, 1.5088601684612821, -1.4362173161200273, 0.2828495091475873, 0.009266781617777662, -1.1328914140136568, 1.710880865859913, 1.0311326194819417, 0.6707102828626799, -0.5461790439353942, 0.9711793150927074, 1.9233090609717092, 1.2077222840020747, -1.2383233071901971, -1.3746370296756663, -1.6085273302015077, -0.22203922522726993, 1.9226056756793166, -0.5048076251130126, -0.043963810041906456, -2.2117506504974447, -2.162347704092384, -1.1445904695784506, 0.1940339202350278, 0.7444904216395526, 1.6010916611258923, -0.8213769209241042, -0.6593728867487116, 0.23738288144814607, -0.9012431889469893, -0.20122570212640017, 0.22508102515092662, 0.7605771798197924, -0.6197714222289087, 0.461487533016861, 0.9885369669648936, 0.4830310122781418, 1.3010866809132744, 0.07210674722777907, 1.0626862705466873, -1.5609889694409194, -0.6194981237001738, 0.4112577930821558, -0.7601267361673396, -0.12173258785663424, -1.4737831888237733, 0.6191588554531684, -0.562184039487719, 0.8796180040454592, 0.28668491714510613, -0.8404839317066655, -0.33008069949103136, 0.7105602568018861, 0.2628866171785153, 0.2713271999760396, 2.509721984172877, -1.1030272605184115, -0.8131357663444699, -0.7012590434919239, -0.35370856166896436, 0.4272160752827559, -1.235928055595834, -1.4589951124432525, 0.10606974809893534, 1.0490144034143574, 1.1401676515714214, 1.5602518232258726, -0.1316931030152692, -0.5588298639233481, -1.1798315543869777, 0.25423148693344516, -2.329708589685058, -0.1611008305495774, -1.293954740300037, 1.5638669636681488, -0.7457053375145688, -0.6696185160915793, 0.4450622193871014, -1.820015514626756, -0.6841212925165058, -0.11557789598708554, 1.151756816890297, -1.3994069725233815, -0.9225837945409925, -0.7015293372430998, 0.14557157851798416, -0.6488915404249679, 0.5181013615346238, 1.1101965867010084, 1.1400621104262982, 0.5669351554200318, 1.628655977372503, 1.1169088997424437, -1.1027247239157423, -1.2154057454628897, 0.30413440003257725, 0.4408163359631587, -0.7670250649875356, -1.4324664872243593, -0.10094123058942654, -0.8075856256378251, -0.09621481510992093, 0.46221378683028386, 0.1667616956765533, 0.027729684273670476, -0.6491132407601561, 1.5228201136451585, -0.16562850009431018, 0.5950528675438397, -1.0419185868083787, -0.5985193479741547, -1.0738447527439543, 1.788948584745946, -1.2325612333443072, -0.836914713668649, 0.5239932036193977, 1.9161683660322844, -1.4272699417780046, 0.8293178842537923, -1.2264705966483058, -0.04597990324972495, 1.8906549668204278, 0.9421047560257181, -0.807010114883981, -1.119951155966275, 1.1821055005631875, 0.17397451011234072, 1.6568916173993327, -2.161361822163266, -0.10893182605495363, 0.08045279279873387, 1.9409424148662304, -0.1767614344743045, 0.25880349272739006, -0.12417094682887361, -1.5666613380497623, 1.8891773441773552, -0.04669787176283761, -1.399980051448174, 1.2931674090867675, -1.7441216997483413, 0.6135856643531975, 0.5904282098582874, 0.8714988428569002, -1.9693756516575391, -1.3439533152505785, -0.17955195369335797, -0.6390092243100048, -1.3386346301502519, 0.1956419307017713, -0.154811442924692, 0.6838608318277294, 0.09583878264956507, -0.9490178938632181, -0.42298733389277077, -0.9761527761546062, 0.5886653092379591, 0.20399290647527346, 0.5158621290601251, 0.3361637150433332, -0.0840611891215317, -1.1346435642707655, -0.2831471438083741, 0.7532893387345917, 0.26676009847445914, 0.4195057830533126, -0.37907311341065303, 0.8138441501785322, -0.0017713213496273143, -1.4279315144128575, 0.127297463548603, -0.43860049222365943, -0.9207821659942775, -0.6982628146742288, -0.47737501108118235, 1.0973524489753268, -1.1631704471876354, -0.6448462257352514, 1.2478277285342685, -0.9535748485371196, 1.1010957888549868, -1.5176019318982594, -0.3678275742008581, -0.25822269433889045, -1.461390865704153, -0.221189396941947, -0.6079997861419684, 0.2605821179006874, 0.8907214317482947, -0.2897775819027704, -0.09849861993514802, 0.6885256728955403, -0.2791053970836441, -0.6793666542903476, 1.249783890153001, 0.4796806532708648, -0.9226697694236917, -1.176722232598049, 0.14355110585703812, -0.20129982865454085, 0.22194994994725567, 0.23146865620783758, 1.6694377251663244, -0.5389819127967479, -0.1443175790084589, 0.41087999419331056, -0.7640243887629617, -0.7180711780751314, 0.10517217800088413, -1.3828305275303805, -0.06758378480990582, 0.10006348512241166, 0.45434785513478976, 0.46311517202542646, 1.647219601375317, 0.0963437586410137, 0.20541837056183218, 0.08236269987589594, -0.6005548745768965, 0.9272948375646727, -0.24354050181310793, -0.22033680012834594, 0.9695271692142623, -0.29948851492748413, -0.9527439222312267, -1.0880912464935015, 0.054981156346117374, -0.5660396507329793, -0.29717856392002556, -0.04083288515295536, 1.0338668347332045, 1.6828432679771586, -1.7998106503968425, -1.4527159141395913, -1.2407599011227048, 0.19265871886562935, 0.7261815748689618, 0.2928989175106737, -1.34361075336494, 1.9618314891849296, -1.961477519039208, 0.6067798642374093, -0.9398734941624577, -1.4160404491189216, -0.12160407112688297, -0.5045820104317634, -0.5196865213591367, -0.4480735859571536, -0.6649026362109189, -1.0066499489098275, 0.30874446046730514, 0.2423808558861513, -0.6475131446929849, 0.6479427567431872, 0.5213927711113006, -0.2948202171449642, 0.2634627733105601, 1.9224975768533579, 0.026976636733625492, 0.30952752417150853, 0.7076376663118469, -0.9138103973636641, -0.30889227644936884, 1.4540261677025847, -0.8221389943598081, -0.588038234461568, -0.5244820252135467, 1.3378716219526687, 1.2530385228003316, -0.9106010889982076, 1.899332176169294, 0.5764950939705556, -1.034395434153627, 0.9810008154794896, 1.7922435643746273, -0.9257763652451753, 0.7429073598196138, 0.2606189680155636, 0.12852481855920034, 0.16605883874954933, -0.43900022720898685, 1.1360090499605335, 1.6430054310046425, 0.27513668932269936, 1.117611053039336, 0.41392188096741706, 0.3441306717260009, -1.4644211330145278, 0.6926562526915562, 1.068458625377813, -1.3700696100114267, -2.0027194859651005, 1.2712147826101827, 0.6108022121551525, 1.827883401988348, 1.49682253754663, -1.498807717939337, -1.2860024861530703, -0.8552188536617934, 0.3369896727544974, 0.7245355697839364, -0.8214315460621029, 0.44109611654147907, 0.5705572269774465, 0.06590179873448668, -0.8354277456713564, 1.3858886068530871, -1.2653282493985, 1.4925214870472732, 2.3669803699198972, 1.2467715006725173, 1.041820098630538, 0.17729372155344567, 0.14833291807982577, -0.5762449399777807, -0.20913684813592306, -0.8840313111682832, -1.7256511687931952, 0.4464567604000436, 1.5696072864217565, -1.5107411614291475, -1.919045525488347, -0.39284231136024667, 0.642261212971914, -1.5566853652081156, -1.4195908701604916, -0.19518744408626176, -0.062796460600534, 0.14773366666584706, 0.5933124208465305, -1.257281067913892, 0.46191592051764446, 0.48953706269055897, 1.537140159071271, 1.8001612651602614, -0.09035661359187494, -0.08008953380065702, 0.5550625182987955, -0.6192862077789711, -0.6194490923758899, -1.3842131227703087, -0.6442854252008431, 0.004310308986859974, -0.8192859105507256, 1.8446971502738685, -0.6822008865400492, 1.6035130190910534, -1.8234460501370229, -0.2161013013225925, -0.42930260307085955, -2.1992152335223514, -1.1645688132881276, -0.0027305349396484877, -1.3222351936152148, 0.3096752736763023, 0.5301317384831784, 1.3176937460170013, -1.0750510120212, 1.4366607957461852, -1.1863230769603135, 0.8169615081274427, 1.945998082166153, -1.4741717842067263, 1.0727046962527615, 0.7604354547177733, 1.0127275799116227, -1.1504741483205345, 0.046663848882222324, -0.41614806490650597, -0.130333521585836, 0.6584361564011335, 0.9528088241690057, 0.3264326568315127, 0.04468306472425897, 0.36881071704357293, -0.693824507410013, 0.7571894944422922, -1.6944446869650207, -0.41610271882814304, 1.445612205825981, -0.7344446459241352, 0.2379834287461269, 1.7658010428921032, 0.899476846965225, -0.5446415556288037, 0.5940059593484025, -0.20541102682291998, 1.2972810373469248, -0.8619329742338163, -0.9995107551919223, -0.38657348236703737, -2.3750929169938804, 0.7482169422869621, -1.0163085846469417, 0.2808453440838143, -0.12685025114948897, -1.1454774810030333, 1.203007531467209, 0.11754067768731466, 1.0682344096280718, -3.0001454304286095, 1.9741629526950777, -1.6310903545738005, -1.0763155593061657, -0.730674268674942, 1.2224106966606128, -0.876142611650797, 0.3425249914970222, 1.525269777862721, 1.2299082010225988, -1.0319391121636672, -0.9808233679288441, -0.7694711307041686, 2.008106278814718, -1.3802722217172205, 1.7112956696610628, -0.17986472316396296, -1.066593964724342, 1.194241938484396, 1.7010094716661732, -1.4531100825401797, 2.0140943483593357, 0.00961089155518196, -1.5117519393616556, -1.225033387547948, -0.4013256550665814, 1.2671552063447231, 0.35280285161085073, -0.5960613431486281, 2.540754369404317, 0.12452161850318348, 0.6489189020968069, -0.266000444569746, -0.9088480640459227, -0.32532143347778014, 1.8950184827415795, 0.1233803144398878, -0.8506586820583893, -0.013146295073653665, 0.8791204277882693, 0.17210568890449163, 1.632367328013707, 0.15862039487955654, -0.16339120814322525, 0.23897405779048442, -0.6421838621896824, -0.17334884721929977, -1.1070943362639738, -1.2216533790784645, -0.07491402130843892, 0.39581632483835966, -0.5710516304874607, 2.051139469309425, -1.82773175657593, 0.5747008941265317, -0.22853438210232366, 0.8634619143586166, 0.2521752390452931, 0.48904471670322064, -0.564392245951514, -0.10072099150740713, 0.4522478618181492, 0.3451387680566698, 0.27136338383972597, -0.7355092140807842, 0.8414467402239644, -1.1690021151149572, -2.788511038384896, 1.8189971647722083, 0.9032792502072324, -1.1969960098569172, 1.206963641510476, 0.34107287068465036, 0.5747472954848997, -0.09774507597793355, 0.3505076901816651, -0.2800587010869735, -0.17141366812550005, -0.6034656461417384, 0.3665551294097223, 0.6422610144258437, 0.6852370705793731, 1.8141528512917984, -0.6006505084403668, -0.401073196111487, 0.4481129685052948, 1.1215412005788055, 0.294281094993007, -0.8400996437124898, -0.23659055793172576, 1.2337003308820302, -0.7944425795053791, -0.12501859797022763, 0.12669952550269392, -0.26145501283663203, 1.0612872544961902, 0.1643712657991143, 1.3638181337811686, 0.1671936246779602, 0.536660694982275, 0.046322463990348964, 0.5357032817625664, -0.3910850558251935, 0.7037151344594822, 0.42634767130989204, 0.4020635808682617, -0.1452834786642244, -0.28685192204171245, 1.5813119435145027, -0.3313666238103324, -1.630863443675375, 1.8975968381884851, 1.497988454976838, -1.2833894894614397, -0.4271835840370606, 1.296428671679604, 1.0147636236527358, 0.008499718134879552, 0.7763218624280281, -0.9911165491373074, -0.28955079825767266, -1.2106468003843902, 0.6563624003164797, 0.054901669351109676, -1.4690725419140442, 0.06901440689355592, 0.4252773778706197, -1.093914555087802, 1.0594616327950752, 0.9903516449069268, -1.2093145024199112, 0.37967646564114543, -0.4758820769224347, -0.5921632526896037, 2.505246673635534, 1.2072370620006596, 1.370225466799814, -0.9917405164498511, -0.6520088992578232, -0.5696532524323059, -0.8093412890185301, -1.0826275786645045, -0.4801083441565978, -0.892280722293537, 1.412615895841031, -0.7113480780630511, -1.58398942271415, 0.07178044356560984, -1.2871905265662251, -0.9859321167207238, -0.9367274619902408, -0.2266617043180088, -0.8235377496257132, 1.6616248255857569, 0.2110414345000711, 0.4195206213331096, 0.4557109402631586, -1.1844739993372275, 1.0737929954280732, 0.10979465007800482, 0.38488576234322136, 1.3142064281473396, 0.6090123241409612, 1.0358009972485072, 0.7961360452240189, -0.7504240210817026, -0.4717852822314755, -1.9977526467992452, -0.21152758583251302, -1.869102265647399, 0.03226987415993391, 1.6172348405102026, 0.571609333114801, 0.11015187322020059, 0.10883356045207511, -1.1062908985717914, -1.1092367045073637, -0.012251254567757242, 0.8371704017648944, 0.1882536400549766, 0.4182684075319435, -0.3447023347644645, -0.7932199304382765, -0.9849697798584544, 0.7168358822007905, 1.418999037385018, -2.403734256558076, 0.9390772175487241, 0.22773646275302892, 0.5616178375297155, 1.2930499113213374, -0.37115833509731555, -0.4189488435377704, 0.30384787269295527, -3.09516529226863, 1.4376287260090312, 0.4409253327910705, -0.4403250314077104, -0.01839259972989579, -0.09132107400635489, 0.8993074950529176, 0.7860707096819252, 0.0477880560338064, -0.3208932477679777, 0.1259803458217062, -0.9116258668673404, 0.8538691740175305, 0.23500589115883444, -0.8278577538333346, -0.40942559335898576, 0.2567713855866453, -0.7177231480244217, 0.23493164012909643, -0.08362383634635764, -0.6322235536233912, -0.41000204751825736, -0.4364264295280201, 0.9472591623961788, -0.49591180781239114, -1.2168293697790002, -0.4506714771692287, 0.04189705377801499, -0.3919359249696162, -0.08424919865351914, 0.2840733616903701, 0.2849199073658345, -1.0924306659919145, 0.33684764607473267, 0.2452347016349107, 1.2244644861038698, 1.058925836769312, 0.2157094268939756, 0.8842025248865851, 0.7511051409587467, 0.84229162019877, -0.24636947592105027, 0.5054648516804614, -1.1738282480311948, 0.9209592920512764, 0.09202643450386803, -1.618664478117834, 1.0424262856623745, 0.2635251007081735, 0.12024192413580576, 1.8816350118726597, 1.296344926519369, -0.38004377705918146, 1.0908056348553017, -2.0710700397722674, 1.1108278459257963, 1.8072200656396853, -0.2832080542168339, 2.1495481922715567, -0.913304278073554, -0.13497558680801955, -1.2339441459427007, 0.16781086931278816, -0.5118420624618873, 0.43169942287551266, -0.22804268789046647, 0.9449444726231594, 0.09900173255653308, -0.42338324819041095, -0.4915708710890753, 0.388987193739956, 2.094613031828752, 0.5747081768308763, -0.7983286790842801, -0.3736394395978573}; + + +static double gemm_C_dram [64*64] __attribute__((section(".data"))) = {0.029004260079962152, -0.8006824757561799, 1.1197336711178068, -0.9896157373454266, 0.4966790956650833, -0.320720861795497, 0.2404711868912757, 1.7983471339688688, -0.45215688264510606, 0.896961504429265, -1.1616159798557508, -0.840560393015905, 0.07480233754961872, 0.17992670342491432, 0.40524411436169705, -1.6268041045901802, -0.515842081058143, 0.3550333279229013, -0.7169358889557749, 0.2669144829157952, -0.7584809853254146, -0.8370380914872608, 0.48072270248825516, -0.40604137567306653, -1.0335439663756396, -2.069883524764944, 0.6487461014247821, 0.011710122578667713, 0.7558956908425195, 0.5521614840818139, -0.25174889683631496, -0.9515208767957234, 0.7906470835496024, 0.16009301473206583, -0.9156242627130992, -0.8294654016291866, 0.6405496416929598, -1.1150477048464416, -1.4778148420891877, -0.6532442833617729, 1.0668677881031745, 0.42505345945888107, 0.07673387953069587, 1.1717799752861355, 2.372817497973731, 0.31201596993898206, 0.6638888271489586, -0.8305561220137307, 0.028066442063465726, 0.5327162396709624, 0.1408772044753154, 0.7686937307721734, 1.2407913952843508, -1.7571668440478188, -1.4407261503018678, 0.46966304643082196, 1.067965459457961, -0.39086059969793585, 0.18266961756344147, -0.09601667538677204, -1.6541976778103968, 1.7762728362797546, 0.044625271683577473, -0.05332555492084246, 1.5519660869822542, -0.5164453460006669, 0.3735110292906932, -0.14055947835504265, -0.4662885370095864, -1.5754096176009653, -0.5279910388184064, 0.1877355482506709, -0.33550084881023345, -0.2335582239599356, -2.000574246170347, -0.5830606097499693, 0.7201314957738653, 0.2767541956493462, 0.4410172346230466, 0.1496171764974113, 0.25584855399911693, 0.4231757850905495, 0.819138838244574, -0.21665970285704256, 0.7993969106462642, -0.0524553739237593, -0.10297969217994243, 0.10341500732243082, 1.3960023077483688, -0.3532908554905869, 0.2203147660382962, -0.09582033114984764, -2.2210275614128365, 0.606197840696221, -0.8083685791528877, -0.5880259036476851, 1.3096925869345688, 0.14641410716326553, 1.0053476857132149, 0.7403000763828661, -0.5588102569869894, -1.8250095277930243, -1.0186046335834653, 0.7832698999328468, 0.3231401688432538, -0.8047074876514235, 0.22535724026429152, -1.3470992648831748, 0.4765280552548135, -0.04554836049444112, 1.0856094027781182, 0.11016455864671677, -0.07169925780054585, 0.0271210087334666, -1.880645185815656, -0.6627766870787014, -2.8871893512281774, -0.5590779904078584, -0.2852107316710877, -0.14430057889633358, -1.3447542589401562, 2.2915669321114898, 0.1728899952093592, -1.421973566402149, 0.08592097416861628, 1.0123703420638568, -0.9558110283152651, -0.9027941505852196, 0.5300767150099646, -1.9419175079586657, -0.2760382915222782, -1.0179287043200682, -0.1606599622524637, -0.3767181010147598, -1.1725123233730355, 0.9572648447195339, -0.1936224437544405, 0.42763321723323666, 0.0597133381305523, -0.9990105347232393, -0.4832753666973765, 0.6204763319584289, 1.960673372068261, 0.8079703046097372, -0.3452734166837273, 0.3245617375208927, -0.07491582919001254, 0.2743378624516145, 0.5983093934031979, -0.25216135518238597, 0.596753836231434, 2.245459616334286, -0.2948256683719357, 0.28882168918856443, 1.0813537774504756, 1.8535627999465232, 1.1961057282238132, 1.318252064967893, -0.3950711849667241, -1.377281651368375, -1.408790244923528, -0.4636389874147835, 0.4564524135315159, -1.6380091071491378, 0.9185995000712671, 0.4692427417861781, 1.276662831833898, -0.9447062381422022, 1.0877432601911943, -0.22886776336281126, -0.012711978863996708, -0.030811506691294257, 0.38780634756191124, -0.47366773078962465, 1.4814958435930687, -1.1828980688637942, -0.19863200267049605, -1.3001223272185354, -0.4242285448896925, 0.08898755668384477, -1.694063278944873, -1.6602985696240946, -0.6264097653393359, 2.1301257422525035, -0.9460005244382601, -0.5374812634338685, -0.43004926797690446, 0.29036657258875936, -0.8172987007397908, -0.5094563820595255, -0.6841925657572985, -0.008910378204569518, -0.7731489284211737, -0.616010025614043, 1.1972052729129066, 1.1413513407181342, 0.1378551765169379, -1.4064193442890494, 0.47683432031632644, -1.0476861800204984, -0.06901359480920458, -1.2496780870132282, 1.6753024031738708, 0.041143324574971704, -1.4522215930201885, 0.7573346464645373, -0.15931444765366126, -0.7557308301686515, 0.196471099443403, 0.9564572866814582, -1.4803875895078311, -0.9249142102969159, -1.0917150382335596, 1.2585219246267312, -1.2891710566522292, 0.2768772021936127, -0.11943879225386107, 1.4656182572667367, 0.021005580078823815, 1.015858071109535, 1.3572500812200858, 0.5985933296458931, 0.5118443929095804, 1.3341173368810655, 0.25975515970872654, -1.237917055905442, -1.5278312160468452, 2.1781558314592333, 0.4138981989747854, 0.9117147230752412, -0.0703340663019803, -1.0158619558246755, -0.10701579101103097, 1.1466314764426422, 1.6748325965852073, 0.5314453542027439, 0.22641290320796856, -0.6327321154028427, -0.3761520310209821, -0.9094876923198735, 0.5199396339404194, -0.6279140323320965, -0.5316788990880681, -0.7754230114648885, 1.6645731868153486, -0.25248989955644296, -0.07000691089126687, -1.4833807861581225, 0.2847398900881516, -0.4709041665604012, 0.21337597451344031, 0.4752659270130253, -0.6322357393536067, 0.8609686485998456, 0.6154141944357284, -0.5912751549232785, -1.3228568966598775, -0.0850817349853954, -0.8896445451859949, 0.30012988995739986, -2.946119896252344, 0.036167602681861456, -0.028803490284605167, -0.11461775128822176, -0.19075498390300027, 0.29202031786639293, -0.3294293306975217, -1.2138544157908646, -1.0972607879764735, 0.8248759718159153, -0.8925466032322242, -0.16541550491454302, -3.4465386476151045, -0.9566298189710206, -1.078687196973154, -0.4891250155546176, -0.19531569651548852, -0.5990381399213928, -0.7036039565674199, -0.5527767107100636, 0.16920318370993273, 0.5427235579499587, 0.5503428910211222, -0.7497767572001619, 0.011571029854715547, 0.49984033903822517, -1.7283983057101304, 0.8594792530055284, -0.12824597747986724, 1.130107130041837, -0.4987262662830606, -0.13416057776817544, 0.5080625985293201, 0.2117295363547809, -0.8118692986997613, 0.9424962371461574, 0.6300633108154001, 1.2746895140278918, -0.003615756251429331, -0.05126805599191769, -1.6138120917239291, 0.7882409923880206, -0.47367442818736116, -0.43963455311049604, 0.712317456491045, 1.3326960118808617, 0.5896451874379312, 0.9762107134249405, 0.5626831277485056, -0.4376044921422135, 1.5861409442199574, -0.3308751028344161, 0.45942840764057974, -1.7057231513870459, -0.9254725284067791, -0.11018949372955511, -0.7616338202748348, -1.0857700920096018, -0.4372008083571365, -0.40109369588497923, -0.644818536292368, 0.25281756977441044, 2.4197071280480786, -0.22106488208438388, -1.095650643379566, 1.894125695645947, -1.2761684375038809, 0.02036098869546291, 0.7947496785408548, 0.3421126605593487, 0.7949003661056283, 1.1747154329748026, -1.165207479384505, 1.183093398265755, -0.35715333224519835, 0.09841575912600005, 1.574023689454931, -0.23482068201661857, 1.2386946627395476, -1.6783552822721601, 0.8611354052037511, -0.03315728672592852, 1.0193997600753135, 0.8649479142208678, 0.4164604631092424, -1.7829228532488806, 1.18355749410558, 1.57769088119824, -1.686257098236667, -1.1607340307397962, 1.0433166175934159, -0.27772980615804893, -0.6837779231673817, 0.3903294683158698, -0.3671124601982576, -0.1276413455606181, -1.700409020471655, 2.268428305186674, 0.2736751307318294, 0.4618308615774054, -0.14119264307379673, 2.2199837786106715, -1.375939861531243, -0.7221917522954365, 1.1098492022750432, -1.4505379826083395, 0.26060143268332325, 0.9771611195144573, 0.3765145109829216, 2.215882692348702, 0.4047556377415391, 0.17708325001281291, -1.9644517128168955, 0.3982782935193131, -0.6262164185787708, 0.15245667799057772, -0.6508467682648665, -0.040947126846172834, 1.7119976409288793, 0.21779845582679846, -0.04145965880856733, 0.13225304399295884, 0.1739378890012343, 0.08037751104228624, -0.9411877899806691, 0.38565902729297424, 1.0958429749681566, 0.0669055558927883, 0.4361448377834406, -0.5901261511098935, -0.8885190831394413, -1.4871156416726072, 1.3669107918561987, 2.3091823854788514, 0.622552717517235, 0.2783143206723023, -2.1305113526512396, -1.4978709762185878, 0.8018120395351532, -0.33995160613042685, 0.1777765322633653, -0.2258895695037579, 0.19586512261588473, 0.45301580114334045, 0.18103013768124301, -0.5147488863527064, 0.20662933937315553, -0.09581792397706412, -0.4704069093141071, -0.13483315552265066, -0.5594310075701671, -1.5755216037255442, -1.5674068340789091, -0.5157357110184205, -0.10054465770334044, -0.7071565768766122, -0.4099340274741994, 0.35968200228333286, -0.18585633976713617, 1.5416706566134035, 1.9286900603543355, -0.5159285075025919, 0.16886996206928914, -0.9067434891373716, -0.6039824452258518, 0.27720989342858937, -0.8814432879855706, -0.6919477366657376, -3.300499554594386, -0.6173928008586741, 0.8153244286523782, -0.35573315997666993, -0.20534234860472675, 1.9722365498950571, -0.1019166129902459, 0.08112220912426235, 0.7463452888856003, 1.1314090216181174, 1.1725026304304351, -1.3737070495742683, 1.734619629252936, 2.481740839103901, 0.9194703215452048, -0.34821661861545355, 0.9728026357332336, -0.10658444194926611, 1.3646609952054927, -0.20423441003137643, -0.06138988353092309, -0.1103302198524375, -0.3172315867238737, -0.8436575516229253, -0.5086533079781693, -0.1020901909331111, 0.041548802438476466, -0.9989480071569191, -0.19084542074059116, -1.012929236908774, 0.37846266910121795, 1.5569101781200219, 0.03186861709827397, -1.9643672831540329, -0.9559693601351081, 1.0476398922384702, 0.4753938790634957, -1.9155181532004628, 2.7851118312057928, -0.4660427767210397, -0.7434686806220159, -1.8644578336246445, 0.7950519234725988, -1.5175445270408634, -0.18967795984276006, -0.07354703638985319, -0.0028940583295309318, 0.05057720453427609, -0.2571010737906899, 1.841219462891703, -2.1896361652733782, 1.2511986406908666, 0.5753085882254242, 1.1153018270644537, 0.13982610960157404, -1.383864413771338, 0.7931811133480174, 2.1309464599529786, -0.3672255367396895, 1.2349500491253345, -0.2851321814733262, 0.8721818251187332, -0.2026228852474988, -0.2791938533272248, 0.08040090821476319, 1.0892882614640076, 0.09768943644705562, 0.4204417256351771, 1.3114392443815635, 0.04829268265664478, 1.2850500288988436, -0.2779162535369758, -0.43169391727862744, -1.5832048871215894, -1.6962198203895802, 1.0729777959132656, -0.3475301277658165, 0.5554189051412136, -0.3178837805858156, 0.5327674010524779, 0.6755622625790911, -0.1842302677407756, 0.43041683511575013, -0.8115483237447811, 1.3968996263534743, -0.17863606115051833, 1.585212875612633, 1.3280038403293726, 1.6695928015875903, 0.6109821394084319, 1.1349894473760842, 0.28476618327344827, 1.4784673864794742, -0.2823155837802257, -0.9183380787461971, 0.18428479751772892, 0.9836044862804338, 2.025235066042294, 0.8265404261612499, 2.088855400024876, 1.2286394369048508, 0.6715801392320037, -1.0498151352816971, -0.8931372957848912, 0.009361893370829872, 0.9162789715980914, 0.006157909931788802, -0.4922874423094256, 0.18089602650564962, -0.9841484655534926, -1.1301889231546511, 1.3001340798635899, 0.13693015400741945, 1.0390411986454737, 0.09933412649399904, 1.7158843111310522, 1.904568532616043, -0.48794979349112055, -0.4338145756826169, -1.0370401983449686, 1.0390032114803736, 1.1522094113772554, -0.4274833545676901, -0.8753567770565199, -1.6315994757003491, -1.7385506630534566, 2.532384190967428, -1.7056567691204445, 0.5413608251407436, -0.7741297263854691, -0.9447738094748025, 0.6661287246658135, 1.2031380054266403, 1.10368337423764, -1.2970356849209472, -0.6566436584727551, -0.14816924917182495, 0.7899980629195169, 1.8273852077888946, -0.9277938527847925, 1.9598998746936958, -0.27099375424892697, 0.6313744587208714, 0.40220491996516095, -0.29639672770006376, -1.8023859026222553, -0.7750540161682024, 0.1947076125945104, 0.5471135873496065, -0.652969912710415, 0.8404848088284015, 0.12894499297938444, 0.6032885408701868, 1.2514835286413495, -2.3974894979687105, -0.9304443816961642, 0.5235805043032368, 0.9237070587307208, -1.2232371757835139, 0.5076176935522306, 0.11779678439009704, -0.34612498438387546, -0.7314860546390927, 1.553910216869756, 0.373159475336515, -0.30618102562662347, -1.0154187441535123, -1.3683721575144063, -1.6848734071167453, 0.7057898542723938, 0.7127375808855136, 0.6820908867090917, 0.14243208748778438, -0.49764571567254134, -0.34993722444753544, 0.28263895634917763, -0.0811609390230422, -0.8001263943467075, 1.2016381946021464, 0.6300938668214966, 2.0197124104278883, -0.39730245577489043, 1.1082615629881487, 0.46812678384907336, 0.666746788576162, 0.26123698644751225, -0.7024810946461257, -0.5922965445684787, -0.48103667153342716, -2.24353922047969, -0.9337194785548774, 1.3686185555811365, 0.3972741496203757, 0.37354079869199974, -1.1743179438700706, -1.1748244659763896, 0.1406513465704322, 0.7766944125577693, 0.6468554295128249, 0.8402029124529626, -0.5495888272912638, 0.2752226876433018, -1.0617295543596483, 0.45862157925707286, 1.1714768594080485, 1.1805224647157246, -1.6892820684956078, -2.393405099847649, -1.6331785264764314, -0.7303247685543807, -0.37576096935444997, 0.4013478691603241, -1.0157957733816363, 0.14002890339339075, -1.0252839102787974, -1.0375314340230521, 0.8172730168671789, 1.062543562593135, 1.2810809804809749, 1.3999493985992992, -0.1750138803985548, 1.395734920938993, 0.20896311087749608, -1.3682057826232348, 0.004699216277132869, 0.4764319522852837, 0.12823174581788757, -0.546109883020964, 0.2523240224674329, 1.9724181468899409, 0.571137816454056, 0.522392971014453, 0.06334935501567902, -1.4920451846109672, -1.0225677061413179, 0.44255002330819526, -0.4682032342920937, 1.0350483070201422, 0.8200797384116898, -0.3029007829607368, -0.9845615009741489, 0.7582526902117465, 1.4833592773254187, -1.3989560209509306, -0.02010565525754588, 1.696186541558, -0.14162189076683343, -0.6537141574516205, -0.38621139164560747, 0.8184053985461378, 0.6452934033126237, 0.7403406155596476, 0.5169782497985267, -0.8189857182537518, -0.3298835390479515, 0.4237001612173338, 0.7833162409431745, -0.0019372831953367766, 0.2733210830893454, -0.6400595311632477, 0.6228358338196626, 0.3278665095994055, 3.081520639298892, -1.4435639267846334, 1.7053027215702756, -0.9588347501825313, 0.8266484324217002, 0.6242654188330886, -0.6407113941329479, 0.2772593629992858, 0.24814190447973083, 0.03363219264335503, 0.04496534388566153, 0.7087040051423135, -0.9221069417630742, -1.5268364676636788, -1.2896607997985812, -1.3661213777130599, -1.2075968696301782, -2.389243136958518, 1.4955588874856782, 1.2032086179453023, -0.14139077396705954, 0.2105872325884853, -0.5266170806972954, -1.9635764068165913, -1.2961941687735021, -2.2835960332407423, 0.33843875542096646, 2.3953920170177923, -1.1837497023332566, 0.496939041745984, -1.6834236268645497, 0.0947364755311612, 1.3677509022976098, 1.3010190519580898, -1.7668063834316443, 0.21564869547117013, -0.44708261946187283, -0.002380181670482115, 0.650945443490256, 1.4074149358152999, -0.3502584098400984, -2.275975800589525, -0.713875724177341, 0.5589684491426312, -1.965116029720147, 0.47575103008133773, 0.1679025472894861, 0.5439197139149357, 0.18336508565925638, 0.3219885649627636, 1.7554902588109447, 0.4642725270837393, -0.4390920573164246, 2.2698459891448923, 1.9524244471530363, -0.14392435570038756, 0.8876434758028264, -1.6577043260766187, -1.0198707516700816, -0.5961056777066923, -0.34369290129618396, 2.3123203551692133, 0.9307680048590791, -0.002081134721685804, -0.4816298626933, 0.5166419734688004, 0.09544852566577597, 0.738769513030866, -0.5320413954446367, -0.4940048696009806, -0.6416355699204741, -0.9125056647182483, -1.1862204740038778, -0.6555000958717663, -0.833470938908399, -1.1616778894644986, -0.5822364941000208, 1.5789499695762335, 1.6906076958567484, -0.6682910973489802, -1.5375408783188134, -1.7035671717673282, 0.5113501775091176, 1.3627201535356952, 0.34281653314195654, -0.0361566378498718, 1.283526267201893, -2.2745695742593397, 0.19000854891098337, -0.9356963719873145, 0.7771715931847443, 1.1747876035023088, -0.6581782060160273, 2.1514708443588093, -0.36624102952776444, -1.02996208423095, 0.7217520972507986, -1.3423248117021074, 0.29948769841449313, -0.9983234204192304, -1.1349975297569361, 0.2390417601230243, 0.7072204486510455, 0.35832543994067206, 0.8041102924500155, 0.3028670857744879, 2.7623138131362417, -0.7089157750419613, 0.22621529706629703, 1.0159042552872546, 0.4778866048560423, 0.13862524435273077, -0.6817769904192166, 1.2905800338344828, -0.5617711995631723, -0.937878912770488, 0.036259068904784184, 0.3074683196641872, 0.02334508317808002, -0.056636545167360136, -0.6105722560497783, 0.22034125973327826, 1.3981176980080354, 0.002830930797289729, -0.24195892578863437, 1.3598231207188574, -0.5983975108140343, 1.509108735185707, -0.3108584778552104, -1.2228769868033365, 0.5943397739409046, 0.31935177535483583, -0.036439093781717204, 0.14778839039885514, -0.11651573539454131, -1.4649049971267012, -0.2683259472901276, -0.1143739595865752, 1.7635913804869325, -0.16130246501945172, 0.4072876137215747, -0.31103626857775446, -0.05171663918837877, -0.7274085567918993, -0.869998251494505, -0.7193321231806105, 1.7505951189711304, 0.7440630635174471, 0.0016957841800653661, -0.983556012268064, 0.5131452298233552, -0.21520406798199235, 1.2554935163458343, -1.0675348115557104, 0.7469420795328888, -0.9963438487998225, -0.6229174823536682, -0.6770598584016285, 1.2562729341933596, -0.2712138170575698, -3.068642230593467, -3.0531360276822577, -0.5584911390555901, 0.7473315149504595, -0.18706483628559678, 0.14675010155914514, -0.006368544270069353, 1.6844988114574022, -0.6214979241607808, -0.3355320210713104, -0.09820727272027757, 0.8687934479912008, -1.2005133663272494, -0.33084789733891284, 1.1571084045756281, 1.4246451046643682, 1.6962376428779853, -0.01965764703939021, -0.7773091413938378, 0.7348575748530396, -0.23216605868100404, -0.8192776375683218, -0.2080446140023382, -0.44904006003328667, -0.4432456841776011, 0.06399763185741875, 0.21563610206370648, -0.2508963268128007, -2.5393973783220463, 0.323376954594191, 0.1384357529412035, 0.021153113599300586, -1.6410540709354358, 0.3691910055245278, -0.17495885529094257, 0.554361827175954, 0.20816477209501544, 1.2322688447103174, 0.2259606292852208, 0.5140029111794593, 0.37718842026130545, 0.33603722021339, -0.017669087842033065, 0.3990879000210093, 2.178612539524806, -1.4021972726687062, -0.059858631189209026, -1.0031183337604832, 1.383398163582628, -1.0611670406818532, -0.6074540386699645, 0.25468663161832605, 0.13474280254470264, -0.10885846887714488, -1.3619488838854161, -1.1865743468938024, 0.8343602196452481, -0.31636758410943266, 0.0822806179687328, 0.03610500422763477, 0.36975660962214374, -0.37447984002912227, 0.9006398818186364, 0.4263942528559476, -0.8471405691528062, 0.6370923472128284, -2.771271846414234, -0.2775641216533752, -1.9698060876925318, -0.7631948292304876, -0.11501310895829121, 1.2264502383793572, 0.44510581587390197, 0.7850830340365011, -0.8972456251148753, 0.6916483637375145, -0.5297453646047573, -1.901732896640853, -1.007326391309077, 0.2220310453886031, 1.0724562599385534, 0.40011245153735736, -1.1593565442528044, 1.5287688772353074, -1.2265309382410865, 0.17812058438692274, -2.1424196963250663, -0.5365247347682954, -0.175882228830132, 0.20779436050052882, -1.2395880259585617, 0.04832542895494312, 0.07093709252503462, -0.056371503668414216, 1.3597592757778154, 0.3828295662314724, -0.5315492554139866, 0.6360780600344075, 0.7531154590527323, -0.7824250791522117, 1.0617544257117932, 0.5489962301017025, 0.6286191631180904, -0.7554812899095874, 1.3460101201505388, -0.6564959907077351, 0.16698785124367177, 0.09451925409687266, 0.17705768947811729, 1.0138194440077566, -0.24231907310256842, -2.546273886239003, -0.05507329609619993, 0.3576296538398323, 0.27507225100326244, -0.7942125094255036, 1.0744369972956842, -1.1548545340061322, -0.15997902636302005, 0.2950954321082824, 0.8845493763065855, -0.8132679790365331, 0.21153971778686953, 2.2177421007414084, -0.9299613122041496, -1.6733913807379388, 1.3474760825861976, 0.9816143450439703, -0.3855895553937516, 0.8502913770246404, -0.016034574759692683, -1.1339934776440412, -1.7563721581739282, -0.06647491888759757, -1.8920747028441938, 2.3760043080911335, 1.8177530262775197, -1.8575847163422115, 0.844553214178571, 1.5954993729399956, 2.1252863078605264, -0.9089236614521397, -2.0469171775640773, -0.9384063102943723, -1.5482176543034978, 0.4526740914408505, 1.4013381381239929, 0.991045705937935, -0.47656146801187094, -0.27582104974046956, -0.5642658623540668, 0.325163151043837, -1.544633482053262, 0.15518857788732585, 0.15382265815454396, -0.6343026666433687, -0.8052290074500515, -0.01691923834054946, 0.6541683607771073, 0.5338183805463347, -0.9091383582478858, 0.3968969223456185, -0.17061628431357603, 1.747323697825887, 0.8012341564226836, -1.255442509886699, -1.2920206203653015, 0.0749186813352897, 0.2120295206583239, 1.182843648729612, -1.1122449131709833, 0.6272974182744673, 0.22777924320090764, -1.6251751647156196, 1.0411757059610847, 0.019367245918048063, -1.5738996411263415, -0.269270207865917, -0.5708394331822761, 1.8504054703733777, -0.22094889809967533, 1.1868455374446385, 0.5717141696167073, 0.8579212808811838, -0.49203515643303497, 0.42647412290047176, 1.0808047827262008, 0.010157228470302567, -1.719815859158772, 0.38805715778854427, -0.9969905666150687, -1.9361769141375387, 0.2474759878876688, -1.4221009001917095, -0.5918211873235646, -0.8058159270505826, 0.5438653208536682, 0.19307918373458596, -0.24237795984767208, 2.3297553315723163, -0.6782771653830929, -2.264267240688485, -1.3620513569200732, -1.9227157102467343, -0.5474383968696648, 0.24293097804441546, 0.8929260011447531, 0.049719985269798754, 1.3121549852716419, -0.7380138820116222, -0.011523274745424477, 0.7707761640355849, 0.2159962953115613, 0.5540026920594798, 0.09682345285130588, 0.398898061918644, -0.8325427357082503, -0.8742308162726118, 0.047733473640843245, 2.054543245821081, -1.3898902807090843, -0.12538538363326618, -0.09873796128345852, -1.4497902777439649, -0.4782177466678878, -1.5489795500879526, -0.29518331705238504, -0.44407598222159483, -0.9106356388426876, -1.550174445411619, 0.9328231660401188, 0.05594760595703414, 0.07566938845558267, 0.3298955808621695, -0.0017861668992007044, 0.586486364465265, -0.4362101979996282, 1.009729735572833, -0.042390290391845505, -0.2808285449424426, -1.0403468643014806, 1.131390812188699, -0.773890404524892, -0.22102358669926575, 0.6645483621647768, 0.7694091180284272, -0.03831164560096324, -0.3150960131582738, -1.0259652416179839, 0.20049882895150267, 0.03693677780369976, 1.6551618339165797, -0.22673604901843455, -2.417611359678329, 1.1106483704352281, -0.715751960430851, 0.5164952578195183, -0.6996317634146395, -1.897990257489308, -1.8041186305012002, -1.4690150868698797, -1.3087988024213557, -0.17486927381146705, -0.45353269534719165, -0.19149104316066032, -1.4266479569878736, 1.8919903045082074, -0.9473356590670324, 0.5173785755076394, -0.13818347423848865, -1.086849997656127, 0.36593831570404595, 0.6194226195093413, 1.4453714190862008, -1.3271158566185721, 0.60921787209085, -0.4832669384376709, 1.3186433317044879, 0.9513213947793335, -0.8548751359506115, 0.1071168124112579, 0.26717848135064914, 0.7030211740414508, -1.0709788797992723, 0.45569586838966974, 0.2887090154342446, -0.24229609713368583, 0.49390930613496803, 1.2738314634647165, 0.8139546371116826, -0.8058423065764165, 0.916823751781412, -0.6678215090538104, 1.4119852560554031, -1.3924034581122728, -0.48456149875876053, 1.0643581297073346, 0.3566463977388516, 1.0415975486050486, 0.028040080194454448, 1.0504197093941925, 0.44965919555783174, 0.8435496128685037, 1.7026256067041448, 0.14373254549294262, 0.7291427328749441, 1.2935074397997568, 1.1398931375510761, -0.18068743577377236, -0.6047067890923773, -0.5346294021251248, -0.10853463546664842, 2.24413601184453, 0.3297355179043857, 0.6657531282588651, 0.964251923438201, -0.5628928015239664, -0.0017106246437996794, -0.19257380601095586, -0.5999594838401076, 1.3310045638118178, 0.01078134546842449, -0.9551407698862096, 0.3885729820005979, -0.05434661623637475, 0.3767388172770911, -0.4898330949543117, -0.713441149440031, 0.42018478215791266, -0.8439100277112023, -0.19565425401483183, 1.2508445943709827, -0.598991758922596, 1.8429649718578998, -0.14258798772701783, -0.18138700905606242, 0.18618696335301746, -0.17087391761424983, -0.8432760462260274, -0.9939917370091027, 0.4305596597055404, 1.1091371083897912, 0.0790722776794302, 1.2495242586059518, -1.521274693280775, -0.7616476824293791, 0.19580408817424708, -1.3143027744001392, -2.091488061999562, 1.9663088091747154, 0.229879430005645, 1.4409375453185944, -0.36162055274827665, -0.27464439642870486, -0.6230996505620815, 0.5751002240784702, -0.16100067047853925, -0.09962621112274908, -0.4351501356168505, 1.3351792476960413, -0.5784998697471228, 1.3361458462940539, 2.3601479775013887, -0.4647589716386651, -0.4548988716102504, 0.7028762701773292, 0.5914980686358756, -0.6966115762392115, -0.7696723521588696, 0.03715612980676316, 0.32221017528830087, -0.4234227574937845, 0.34726424283234486, -0.48116562286295844, 0.3138392530237178, -3.16017434136752e-05, -0.3914227082899591, -0.581666722921146, 0.17111964776203006, -0.06008169278035282, -0.041886584782142536, -0.28699248044931597, 1.462175320301007, 0.1245846313065406, -0.1123526751684876, 2.092515176950615, 1.2272760858332872, -0.19552592726578952, 0.49191271925867636, 0.6144137708252538, -0.6106235763708134, 1.4976844345055038, 1.1892142848985179, -1.1357119642005757, -0.28436481789594376, -0.4421830922813949, -0.6328684584245098, -1.7040349067620155, 1.0820432527761576, -0.9968510182567392, -0.7985198199890275, -0.2588215482253829, 0.20174302514172218, 0.7287507331021361, 1.1722852714149967, 0.4322448567665407, -0.771155579801035, -2.612258680121964, -0.7051447495309736, -0.08301192443248484, -1.4472391477276658, -0.3526737726608245, 1.1294354483566833, -1.0899837588692494, -1.1395916553408674, 0.7779937885751342, 0.5183410812373956, 0.8509697670045957, 0.6208144564226835, -0.778892715214496, -1.0501461846073583, 0.8552859071722188, 0.8608448046488019, 0.5497428154557589, 0.04882443454369946, 1.6651080232070385, -0.32090016182105363, -0.3728486660772143, 0.8430133361143574, -0.5655459744432224, 0.7215544062511454, -1.9484490239876828, 0.6423145640402413, 0.014400283567776857, -0.7898745532400717, -1.586323922234601, -0.8458020923790143, -3.088311088273429, -0.7711672240651922, 0.9871615977182401, -0.9045757185197361, 1.1588809667487696, -1.3285096437778892, 0.5493583705018974, -0.17757552950573202, -1.6167076444272095, -0.6257691840041929, 0.3674989256823125, 1.5365222795738054, 0.3527319212488765, 1.0485204480487655, -1.660459836294662, -0.5794960248043395, -1.2465657293652699, 0.39414956926958317, -0.22431122185124802, -0.7424297725903407, -2.0183158330852966, 1.0943683904642862, 1.9180228164677529, 0.33125926943311296, -1.4098590113169003, -0.3049008568768526, 1.2884791320277762, -0.8304495335533479, 0.5648082533641575, -0.6324582858362591, 0.15519145016196245, -0.14331072524661, 0.5955341112172925, 0.2683604694117294, -0.46158779655753196, 0.07612773147707591, 0.4518924976580781, 0.4439502747372077, 0.8523538103367174, 0.6526631303289786, -0.14639057359720992, 0.11541815018151078, -0.14641912207628505, -0.28858965267185804, -1.1094993394266683, -0.13666302182060672, 1.1197245750262241, 0.5969030971713879, 0.7652826186532012, 0.5565420987155717, -0.39973686526861824, 0.7840343460033151, -1.1888373414791333, -0.38373069667860454, -0.2549327865564444, -0.831606465136574, -0.8020163962470959, -0.867149529466562, 0.3741626587437947, 0.009823237085445392, -1.7368701460461045, 0.9578205180189425, -0.30283019943674705, 1.1710486547250496, 1.3504432585716344, 2.135913369966061, -0.37144981581277836, 0.6683173129623053, 0.20836373808769923, 0.45158986081203556, -1.1459347939795756, -0.819138263097992, -0.44181173736632695, -2.228038352852804, 1.3450784569893894, -1.1523580752749787, -0.20464272457508284, -2.6483454695188007, 1.213210112709636, -1.4004764346361736, 0.09732611023114367, -0.44728592455565547, 0.10547550295522748, -0.42093313113048986, -0.5056183426815237, -0.35915275364763544, -1.0946537876925737, 0.31096146492651894, -1.8148942677707616, -0.3091292910916751, -0.07769189114014907, 0.8210353689958184, 0.9977559638388211, -0.9741254410868778, -0.532900582192196, 1.2326485600619295, -0.556852354708009, 0.5224831305011773, 0.2473387410334785, 1.1142299086991494, -1.1993099089239656, -2.3844231540204452, -0.031312298998023125, -0.2578374897963484, 1.3655566629409817, -1.978772520685182, 0.05702667001523861, -2.7661971160023278, 1.4379234027888605, -0.7192462186848305, -0.8359204541555126, -1.97072449798586, 1.2834263121409806, 0.5648994039770748, -0.10923252179999401, 0.5481965021182704, 0.192406781879664, 0.48581076499243303, -2.605560426009065, 1.03504983076068, 1.4042025146049608, -0.6532422029882547, 0.21720993132656635, 0.44583467031113655, -1.4473969873605004, 0.7442621658759352, 0.0035577574611439537, -1.5352838320153788, 0.36582337868920506, -0.43827718248031894, -0.331658585134989, 0.03475743065587794, 1.695364872590356, 1.558451620009631, -0.20689475301966134, -0.45129848619848684, -1.523170827436555, -1.694309335523152, -1.198176658548595, -0.19969177462827617, -0.05282460007952421, -1.1791283297361472, -1.0067735453064437, 0.17055987486894333, 1.548598735029748, 0.7208980223949303, 0.4530935835189574, 0.8089115623004025, 0.3351300125270723, 0.3800443655445466, 0.3736345544751257, 0.08967024919905225, 0.9223811114430721, -0.9791572872575997, 0.7490556870861242, 0.04211285779316042, -0.48675401364389137, 0.7892987384887062, 0.6514935495821761, -0.7389337564143339, 0.8226734205961588, 0.7249237684279655, 0.9660211264551801, -0.4532783587481408, -0.8511090310517235, -1.2152362800727083, -2.2688038747495143, 1.0639266151110012, -0.11852527671845324, -0.04079710558992621, -1.959172190759805, 0.634813706645387, -0.024392389160913488, -0.8994503599741844, 0.02058425261846817, -0.5502771537286061, -0.7627382878672573, 2.812113990163829, -0.35697622542008045, 0.8954830632884034, -1.2850622093830648, 0.9048756978263991, 1.295681539205646, -1.8039444541082827, 0.6289956120674256, -1.2464825605819987, -2.434105594966877, -0.7368776196463713, 0.07517741459098572, -0.7212226336631826, 0.6482644881693863, 0.7243697163628927, -1.015612682453925, -0.20576178987164687, -0.03565973922119395, 0.46655943398917193, -0.49256995004987253, -0.6208601544556013, -1.9147957069743964, 0.9111798522207986, -1.050789491681603, -0.17826554882391007, 0.0034287654351666343, 0.23891042130951867, -0.2896526657972369, -0.9678605370350775, -0.15606979834697407, -0.539588519878248, -0.9744762714085187, -0.1158787137991666, 0.463186013778498, -0.31756023012613327, 0.32352357908448803, -0.585725835882206, -1.7678336366681864, 1.5889268041950584, -0.20630705622264997, 1.232645492185463, -1.536865929859409, -0.9261652386696412, -2.0561143314389776, 0.4779964081018399, -0.8596011929021515, 1.0843957545428986, -0.9897567668916143, -2.3232928720337003, -0.03340641205022988, 0.7598708513617404, 0.6584247271159631, -2.3279582198317708, 0.24768310253870407, 0.8762008827221577, -0.6729640746468504, 1.2959884053547635, 0.9381350368383641, -1.1241425977603545, 0.4829581184819777, 0.44171108339691467, -0.1872572531285367, -1.2571533983758636, 0.2048074965235173, 1.6143344982484689, -1.3124698136215769, 0.3635463079780809, 1.3596873368910098, 1.081430863928576, -1.7061600182770245, 0.2118428338657974, -1.0006407692588688, -0.3401431816847726, -0.7813320328275092, -1.0011400049098196, -0.04519821459969004, 1.2603284232288081, -1.0630920047189185, -0.44789118146525986, 0.5582310695632384, -0.7090682864355446, -0.5133533644647693, -0.13049594943266846, 0.7311900472570971, 1.493841327862994, -0.25011186120154755, -0.7748595776465173, -0.5052909848740618, -0.5033837938274406, 1.0631419148120849, 2.2478394914416504, 0.7500249601704074, 1.5817576559551234, 0.8472836111216092, -0.470416237895585, -0.19965720263223283, 1.0216451463957437, -2.1860339921625407, -0.9948198936152898, -0.4396019229076382, 0.8734144476777804, -0.2965813670330133, 2.2470581118653734, -0.3395559758401316, -1.791968271962612, -1.9257914274985277, 0.3714309214848273, 0.703855673271628, -0.555710126333215, 1.0220050901401225, 0.20363711487789027, 0.8516796154742334, 1.5757937650329772, -0.09665836315586222, -0.776148895209055, -0.8004256779107253, -1.2413561284257886, -0.12925323644050332, -1.2379066703304404, 0.06651546025851007, 0.01391190021081403, -0.17367092702089812, -0.3287548140792935, -0.8711037772397026, -0.13391409347721686, 1.046744495577508, 0.8549541076563608, -1.14897045533444, -1.9386803001956516, -0.38823478112772664, -0.913589660602426, 0.2729518941831664, 0.15071694940790553, -0.10547684574045808, -1.2248164227256482, -1.351082215307864, -1.331163419569997, -1.3025284037326679, 1.591100615537101, 1.6839972656851228, -1.5013406493986328, -0.014560098841445244, 0.8758316571675913, -0.8616058158966454, 0.5237127012367585, -1.196778610697725, -0.35407288196013637, 0.6942107386263077, -1.8315746797885266, 1.4846155028429848, 0.43076769047114793, 0.384367439106405, -0.23394885184834452, 1.2198064491495224, -0.5383323547980174, 0.8160510810336509, -0.4573571329857449, -1.7335152974789638, -0.4636249816670279, -0.15318904243505294, -0.42412709535096155, -1.2846318534528511, 1.325417287661619, -0.24420837398318634, 1.7225099174527827, -1.3858598478981758, -0.350222801326749, 0.22885965098157468, 1.4051554822746368, 0.3335772936910085, -0.6286767607540873, -0.07004282442105106, 0.04489437050367313, -0.4059451088431407, -0.8094857079707901, 1.7505330159261117, -0.583610420693528, -0.7366008689555579, 0.3984745730971409, -0.06377005585758136, -0.8206644772162646, -0.6843563782443158, 0.413445320652666, -0.4554691818585017, -0.6229184879111299, -0.2413741831461815, 0.5506155379147128, -1.3103237870729614, 0.551465002061796, -0.5526669452272004, -1.432939322764634, 1.783677814895783, -0.2619175408084894, -1.7366570861134099, -0.35564945315684077, 0.10137133388748105, 0.7235998519780015, 0.09403042929115289, 0.15425730783069394, -1.8572780611255473, 0.5058501044761556, -0.7574907452490733, 0.17607281289803361, -0.8396945461067945, -0.7292802178089858, -0.7002824669050794, 0.5503576214615272, -1.5890603582592648, 1.793036043038875, 2.7878235846616866, 0.38956928497568377, 0.26174869373444265, 1.711065590611669, -0.21780984024318578, -0.7476219519355383, 0.18354455463527203, 0.9102969356546101, -0.9733253628488144, -2.344766204767146, 0.07301118913271507, -0.4917986474536467, 0.7416391329516281, -1.2880000713234445, -0.46197477360345757, 0.30212819705891386, -1.5167184180382485, 0.8501535296247528, 0.5175168374586809, 0.1763279409946514, 0.5808980947903934, 1.8472712753780864, 0.5887473330756161, 2.1954184977584354, -0.03769822240764868, -0.15613316317636414, 0.5004769377495568, -0.7455652599230427, 0.7677830295108011, -0.1441337502428087, -0.7523387828605589, -0.36755553576567623, 0.34105345138077786, -1.1914248220126447, 1.2303531748948233, 1.3432678076153106, -0.4313094961431832, -0.716554553207416, -0.36217498101423934, -1.5133659288612389, 1.4950695017357467, -0.5715269477785132, 1.1593421463571147, 0.43789720927678055, 0.09116342195238117, -0.3049393765588991, -0.837272212664342, -0.5766435716140458, -0.7356401726215391, -0.9485280265926767, -0.1250772778287353, -0.24361064177838979, 0.8522508371598432, -0.0037377039062253593, -2.5439058613954306, -0.0569000266151025, 0.4320024316685166, 2.194478575759713, 1.4396842305532822, 0.36543499574809074, -0.3770338147135057, -0.8552418236779827, -2.641615137447347, -0.01832206949724758, -1.220279075748726, -0.4532959432254292, 0.2687666926125023, -0.8588555314205266, 0.2995859931505431, -0.5333350265572113, 1.2847615357173254, -0.6750734120371739, 0.8097130403145714, -1.6270630113161542, -0.9700686987748345, -0.626750470435254, -0.873880059260819, -2.302124621855377, -0.2119446632235012, -0.45104357068515205, 1.474647321380819, -2.452150203161443, -0.26422200819131053, 0.3355570393620066, 0.4521192920529254, 0.6898023906005871, -1.0228088805014108, -1.5620067151329697, 0.2114421450103242, 0.16571047265242836, -0.9976369476833716, 0.2707035595461758, 1.527376877291636, -1.1501231170867043, -0.8215138548193065, 1.1255100205347468, -1.4908295737477542, -0.9614784827261649, 1.253875753998538, 0.6502131896760401, 0.5459866901410766, 1.4600197648017388, -0.0961460203532497, 0.7266795346872365, 0.24327467641293096, 0.6629927940460294, 0.1425139446241705, 0.6769287783907216, -1.3236927946900179, 1.7325000099103491, -0.44398667144970083, -0.06250247294850679, 0.7996605229107876, -0.8781887569136042, -0.04685771081608833, -2.1381243641968757, -1.1057101272330927, -0.2334652569852083, 0.9622037237887306, 0.6635341672421278, 0.12296392422848872, 0.16098800191091994, -1.9738778562669794, 0.878801521788013, 1.1264406225655363, 0.9266111456784218, -0.5837955300185679, -1.1381689631937657, -0.7637975260788618, 0.6253414266910773, 0.2560476374285288, 0.6225515550412877, -1.4003990017303332, 0.33627768607969516, -1.9427666341170824, -0.6932243069544903, -1.6260875697896702, -0.7277319111014768, 1.4038229847386294, 0.2920548422295979, -0.4789539104472966, -1.5162957655731588, 0.7303018926046246, -0.08451244525442732, 0.784113042439586, -1.5334585479514933, 0.5670458287729787, 0.42975930410924124, 2.449800593141972, -0.747332434740572, -1.2322385206168842, -0.7568040112448173, -1.4135743704317814, 0.02577746009056378, -2.0837637677880294, 0.49143275227877103, -0.09302281017834362, 0.7031745485857588, 1.9067771128764397, 0.017922750249444862, -1.0118512011569816, 1.098381595132738, 0.7341755899609803, 1.2311978717249155, -1.0213846091416032, -0.30656617450535995, 0.2039715668363261, 0.9137009208505903, -0.1853547296025253, -0.4531226067380201, 0.4791486178122148, 0.4244894303034229, -0.21125213591144995, -0.9006724834631074, 0.687500015940671, 1.5478498713739013, 0.5971262704659354, -0.28221603850355226, 0.1853982344045198, -0.4972609839585217, 0.09701023695712938, 0.5695911267833031, -0.3164094642230819, -0.14706947612684826, -1.3149133497939054, 0.6864680014836566, -0.772852350625843, -0.5806236044379457, -0.3330938726043226, -0.2730406772068024, 0.5762813326703923, -1.4304622484096188, -0.8424942170683648, -1.3966094397492712, -0.895345937295373, -2.1450526226610602, 0.8982603474010731, 0.2447347737164159, -0.14421939866277614, -0.32759685565611457, 0.296699608032958, 0.4488491381463045, -0.9366906772433812, 0.8575927698912629, -0.21528850062417895, -1.1881007189482282, 1.126951428099562, -0.9182517838371076, 0.03845610449911805, 0.21538710321609011, 0.4345124212863915, 0.22806905558766796, -0.0433565930969285, 0.7593857162181715, -0.31477607928734513, 0.45451779677564275, 1.1460305154279424, 0.17511551763090402, -1.8856875430269369, 0.8346203714049741, -0.0696682533840345, -1.477209694338219, 1.167580661482926, -0.17554887202590774, -0.8474837486432465, 0.34080524465178785, -1.067656844368498, -1.2235746072702904, -0.1496059091339221, -0.6271075452205968, 0.17720185109195266, 0.4353918232872083, 0.5660926079329978, 2.8554574415424483, -0.6620166583187813, -1.7269876019682948, -0.4078387228577495, -1.7228178107762542, 0.3726054112499986, -1.1217641084697834, -0.4549722253573668, -1.1732831794353027, 0.6575544136481785, -0.9201334492342766, 1.6328222950437552, 1.6244241347609476, 1.5613555902002136, 1.4668846483103386, -0.3487215605525855, 0.12066051762324873, -1.3338304508691319, -2.838826297994906, -0.6706495059056897, -0.2112553589247857, 0.4093088155814143, 0.0586543436679839, -1.9337244019029907, 0.07171251023300006, -0.453400009742923, 1.1415999381407176, -1.1548675809496596, -2.382993633047374, 1.665455784920222, 0.36977079711240063, -0.535727132830006, -1.4579294636750366, -1.6520070983625739, 0.08837369320935094, 1.1015994425060465, -1.2436747485612611, -0.16173195775871396, 0.7874586254788326, 0.8455365274680086, -0.47385229544186175, 0.8581794726994194, 1.9141693890868874, 1.2111468774347625, -1.283834409703804, 1.4122001960991903, 1.4246122083213058, 0.09617143246488447, -0.680416520345397, 0.7939074419436761, 0.05082061802593895, -0.3375681951224267, 0.2728075634559421, 1.8677062690963786, -1.2849446512608989, -0.3646522458534046, 0.917024620691813, 0.836213051287984, 0.4199460834454394, -1.2038519270531134, 0.12232264627089835, -2.2232529926712767, 0.32822411605932045, 0.2221878465543045, -0.40914638546335264, -0.5038836046014628, 1.8256305544491191, -0.7565556539701808, -2.7739792692396126, 0.28066845231027215, 1.3738789070045716, 1.7661381760831198, -0.9580232806819591, -0.1780922624537117, -1.0984645221049045, 0.12603798766445923, -0.1849675475219486, -1.4475049162679143, 0.9388707018063479, -0.5362768656635394, 0.9452817076530887, -0.37341197131483667, -0.2629170752516286, 1.325991973487167, 0.9619471376599076, 2.1975015359014103, -1.9973341541819725, 0.8588312686492864, 0.13666135012685632, 0.3102389236196128, 0.6936509306420062, 0.05434653570011313, 0.3886040413097377, -1.3881648803578328, -0.24232672717865358, -2.3006844443180974, -1.518751357394444, -0.3706901669875656, 0.7539809084190491, 0.4912794553641408, 1.285898467547851, -1.2234469904502512, -0.08958864363508236, 0.583078020131131, -0.23178079681176902, 0.4769446061135408, -0.4016965792806681, 2.1618387681417497, -0.3808916318031749, 0.7019003947692466, 0.6921832736273762, 0.2010723299967834, 0.23634082843208823, 0.6056544806575411, -0.11651743275509928, 0.5766313042860137, -0.5190655005970012, -0.4579416002427724, -0.424209530527786, 2.232559210366838, -1.8171412233712165, -0.6495312007257151, 0.01454464350825512, -0.012160378768442833, 0.45900058613553946, 1.622427208224704, -0.8381648037082366, -0.06922690164521429, -1.1571533446018838, 1.2962530073258305, -0.4164012434169487, -0.14957792428793357, -0.0966188865041463, -0.17162818417291137, 1.5823601195567514, 1.0185460546773435, -0.27435903244422055, 1.0624307534321238, 1.6824917464322542, 0.3499999101405133, -1.7539284490002658, 0.3415515608898923, -0.9304971196835875, 0.04252683790482448, -1.5965834974215565, 1.3596129553980816, 0.5975052601318105, 0.7282491018628274, -0.8685422050617817, 0.8955457613350786, -0.43664776638074715, -0.8206970291571989, -1.2898007224720796, -0.3186171612571654, -0.3330818341118064, 0.6655752973348447, 1.6764347205970604, 0.6078743574830635, -1.2342507922222805, 1.9210718505914963, 0.26510984025007406, 0.2685882654026507, 0.7102430456245953, -1.0462145584529572, 0.3857191152427833, -1.8835805633826779, -2.768761193953574, -0.4915726819365157, -1.5089924717034593, 0.013278831567490521, 1.5474176875871273, 1.7045030442907954, -0.7048211460588357, 1.0382872389284454, -0.4236141117291399, -1.1507654519546344, -1.6074537360491772, -0.7267874141115397, 0.11876040295645178, -0.6408806028454356, -0.12049820175789154, 1.1256684566373316, -1.1503658259476168, 0.3808406082354331, 0.16166298056768014, -0.9796873977838907, 1.0438547113586458, 0.2695904409689415, 0.7097366282641338, 0.36812978605144314, 1.1038117080137047, -0.5807051449206111, 1.027731721586947, 0.9661580338116212, 0.2598371929157506, -1.2798102496315147, 0.8352067419464927, -0.1452621149892954, 1.8549267889124994, 0.5665323669164135, 1.5421593189692089, -1.4677264718771512, 0.9585639718948312, -1.6479655417171202, 0.22271257385409565, -1.161398773427602, -0.861813501728504, -0.33065924746715947, -1.2370435572165541, 0.13012798200740622, -0.17426050640126142, -0.38744989631009263, 1.4307827967619229, 0.03543562533000589, -0.9972687727886126, -0.5170550450401604, -0.7750247609617125, -1.5190613124777796, -0.45895251295378553, -1.8056739512190008, 0.568360571435928, -0.2004869809428556, -0.14483685708825503, 0.5258043449164731, -0.16813587996429707, 0.10846389250099084, -0.05315797521827668, -0.21651365686613308, 0.06006145597959008, -1.4024064633139812, 0.689880904910238, -1.3428757039530983, 0.4589303661569864, -1.4188669947772765, 0.29352168212647334, 0.7308608932842507, -0.1353758679174761, 0.17358923934048226, -0.40216684119518126, 0.43993814071860016, -1.2871086596268482, -1.2622185432193231, 0.5955345200199184, -0.8657767655249429, -2.0777147735575694, -1.0097475327974674, -0.29221483234147594, 0.2292766310482291, -1.1056969652514455, 1.4876657299426514, -0.036104835108870456, -0.6423673306131062, 1.17645837315232, -0.27627899423171265, -2.1294237281854707, 1.0389397167884664, -0.6156099069368945, 0.5660062401217804, -0.34735225445425977, -0.32061267845758085, -0.898048854923999, 2.3890802889591454, -0.1207700865946951, 0.9658162458846846, 2.1295380289836494, 0.22730977326083576, 0.307795221689862, -3.159470294922449, 0.8956823805247126, 1.4364518339011614, -1.6940979672180807, 0.165976015208281, 1.0227277830757575, 0.9471964236813554, 1.3689187788341273, 2.0082590219654723, -1.4127390079463908, -1.4582830839548455, 2.057655232622654, -1.6262107983377108, 0.8065089603585295, 0.059317700347295395, 0.13330649608758663, 0.41871631403681064, -1.6670993078179417, -0.4557222192488648, 0.8358412168608853, 1.1485241583907668, 0.42382769612443416, 0.07067530896807704, 0.7805845452452761, -0.9230705042306333, -0.7008265657860365, 0.1238579585529523, -1.5033879105374937, -0.8006324477609928, -0.44793642959253405, -0.27299529722657506, -0.42911609794809474, -0.04754182561350199, 0.4678169668023181, 0.9609426463686324, -1.135854381028605, -0.9604027706620838, -0.8759778130611081, 1.3255392992467154, 1.4437271577682296, 0.4932168845856174, 1.1198442202865473, 1.2097953377572856, -1.4782787622655886, 1.534331937472566, -0.18592464788213361, 0.9065510875978713, 0.2441526620364802, 1.2142409950847504, -0.005934606839626211, -0.19071981471485608, -0.3040583507442866, 0.060081676730458174, 0.018762337319815515, -0.9902130995818926, 1.3074986871427252, -1.2758677347357341, 1.0698936415205338, 0.5702156020946687, 0.3041015469962475, 1.0315316803895331, -1.3625531333588328, -0.4647788936504099, 1.3043793230085174, -2.2931238782528447, -1.8655685521053629, -0.9669629869645776, 0.1883663353758491, -1.0634824082910936, 0.8013306975599391, -1.5443624045591937, 0.32715347959892516, -1.1042425552504813, -1.6161041406680392, -0.5109993363057571, -0.9190886093343267, -0.6077428272848499, -0.5002569071129503, 0.9756689510277916, 0.2772218606494787, -0.43287852998208237, 0.6296681915983172, -0.8502843261320427, -0.9505069068832771, -0.650584341206366, -1.661723761397373, 1.007089074815852, -0.11873490106540271, -0.1272993611104505, 0.9298614676390998, -0.5153289230941936, -1.556702035787103, 0.3807701443952423, 0.6123807492207072, 1.1867467887368908, 0.14654907176430795, -0.5370416367498603, -2.1139883997425315, -0.7876830210703504, -0.6237996086335619, 0.13592084587607914, 0.6393276776955494, 0.13991569771729745, -0.81809230737367, -0.6683486553698732, 1.115178173122076, 2.446771414213701, -0.1637585890568815, -1.1209704564711065, 0.4467511515071406, -0.9534092482312004, 0.3182330919933401, 0.271683759433474, -0.9573363828477164, -1.0712413179694105, -0.30255813778652974, 0.958247674089883, 0.4979415521551006, -0.8376872519699228, 0.022535961046091832, 0.6840510626836408, -0.21077828406318735, 0.584447240190305, 0.3410263701239205, 1.187176771555195, -2.1172358171100973, 0.30995019232039317, 0.7901976578611829, 0.30913468523891424, -0.9844146654250953, 0.3474506697688135, 0.6259418281233743, 0.4794626029480261, -0.06173762343825315, -1.3627102955192472, -0.20031835021540442, 1.6870429458740388, 1.6083459881399655, 0.2789050227337342, -1.2719884064904396, 1.1853106830638485, -0.9913580737072663, 1.2233104543278213, 0.8134432318899081, 1.886557959191833, 0.11022533467624505, -0.7681413266984113, 1.436892344457456, -0.5556957709754798, 2.3038212660346935, -0.682772274731363, -0.4746168209407287, 0.5511129315383609, 0.4215246673091607, -1.4860625654820405, 0.1897176503580621, 0.44020540443738876, 0.7496215071681255, 2.552398472469107, 0.7607506386602476, 1.0820709259858656, 0.19917231987970416, 0.7942499355919473, 0.19973021075409347, 0.29481380935757473, -0.6357637486064631, 0.12863791178542627, 1.8561515112410554, -1.4521073859968245, -0.44690133813439353, -0.5281516778029656, 0.23031228507637702, -0.05163289925469105, 1.4531091939178806, 0.06594794127602743, 1.9158929778743325, 1.3893544881471012, 0.8377158542991587, 0.4599670791005717, 0.6058828013346426, 0.21069233748771843, 2.0847766207434564, -0.029268516047371095, -0.3252030660188709, 0.13202105483543372, -1.2051521919108732, 0.08810029046160057, 0.2998899394140385, -1.329901911797941, -0.35244571721201917, 1.0093949421205954, -0.6561924048355037, -0.6769220785633787, 0.9004707724740563, 0.4215313341559502, -0.7375271922065233, 1.0706249247137103, -0.028892244945197036, -0.5183281825357204, 0.5736153002965058, -0.3758685831678415, -0.7918995871067815, 1.2782634446781616, -0.6356995421752419, -0.4833863369287177, 0.9974534142023732, 0.29124328932605514, -0.8236355220229586, -0.08699050597488259, 0.6590141733829847, 2.441583292882557, 1.8873452628569025, 2.2474275746061965, -1.2084812281924566, -0.8018851520041654, 0.6759181159646618, 0.00313769957548172, 0.31474207170695445, -0.07736951126774436, -0.25018161293926583, -1.2830507962514812, -1.5628441907653305, 2.8453969247062276, -0.6342184442111992, -0.592854552706071, -0.653723999513639, -0.76565949917059, -0.730526998162015, 0.09075307806432394, -0.9481548645415303, -0.04755585978648472, 1.3476101538895733, -0.9875559107864285, -0.7896939152505444, 0.4816267344514175, -2.1648165937072137, -0.7268788889746165, 1.2960347147856455, 2.9109429440400323, -1.065376273609101, 0.18513796404565092, -0.8814138828253623, 1.2409135508501319, -0.012877656665903105, -0.6476617613042353, -1.994768600369764, 1.3443028214739667, -1.8514533014456531, -0.7379582086548833, 1.694396228823381, 0.4026562338082194, -1.2758466479856054, -0.25334115795781886, -0.10298131523967101, -1.3748667924232236, 0.6293890561733958, 0.2738888278899806, 0.5612373487486728, -0.35340678348969806, -0.736843748234479, -0.40367835808832514, -1.2439466232262497, 1.2570138663363715, 0.45632423807954914, -1.170707965548015, -0.9587623429264018, 0.6425982154718701, 1.5567146540543542, 1.2516374448322218, -0.22322323181634318, -0.5695167025136576, 1.3827725588378879, 0.529065899193698, -1.5470827592965664, -1.0944906269170949, 0.2905472841355263, -0.987585623182969, -0.3515621243107407, -1.1366040859833553, -0.5160321145422849, -1.6442173347711861, 1.3423907595439113, 0.31986604002016844, -0.5786595172834021, 0.73801532386848, 0.5788365796442495, -0.7375548663739422, 0.45423130001442397, -1.225358779977498, 0.7678067565519512, -0.05078757448886205, 1.512293872317004, 1.106989348588503, 1.3272064524680798, -1.0102290516604413, 1.3418085812620126, 0.4314053354881663, -0.8698836928173348, -0.33508116195249105, 2.273858285763485, 0.41127055898865217, -0.5417916233776102, 1.3173262896619646, -0.06588492371272986, 0.5969382095462551, 0.6197204718248582, 0.3742348312569251, -0.04007772711014461, -1.6143631344300409, -1.2617480510616137, -1.2401273803885422, 0.3822358970465057, 1.8061346386866513, -0.22702264172388117, 0.37048462734622856, -0.11799395539242921, -0.005235059103559137, -0.6489984366966667, 0.7782101694572308, -0.024126859434724878, -0.09798935833649829, -1.0417284651310414, -0.6605483359597034, 0.6972000521784677, -0.15225780204879624, -0.36034171752445354, 0.5934576132973614, -0.25056255516564263, -0.7310153609877714, -1.8861910032233697, 0.254480151361828, 1.4148114593503607, -0.8002251737459469, -1.3914075562421209, 2.6894920671041236, -0.1506644941293263, 0.4047667831579401, 0.5611273432518382, 1.779203788992058, -0.48565136522391056, -0.26653744823132164, -0.8829510316719237, 2.532755174768609, 0.5582799591535964, 0.3625488756486719, 0.8429610656748877, -0.1422677046514221, 0.059560937411363916, -1.54096863376706, -3.409308449483486, -1.501482227036858, -0.17084770021492382, 2.3317238025849716, -1.2471763217303788, 0.6742533376141315, -0.4671654422272103, -0.7254154200533441, 0.23441703660981258, -0.4694323705405022, -1.612196166706617, -0.32563743615759183, 1.3898422646804982, 0.859146411700291, -0.2601661523404493, 0.3217117418244543, -1.0494347817905338, -0.5991667659706216, 0.8881794866760082, 0.5840210011255069, -1.2075635705473267, -0.3377101947699321, 0.13603306699179857, 0.5802301275309478, -0.704852221496425, 0.9615592481981307, 0.5450775566697076, -1.3780611142397772, -1.6167118554509825, -1.2811556928029282, -1.2724034602241299, 0.16120409249117293, 0.42750602102457846, 1.2666174612779004, -1.5508664421057543, 0.2620798945065646, 2.0332984208088303, 0.1261854523088127, 0.8345628189160572, -0.687707400490003, 1.0656169293117534, -0.31887838781706285, -0.005112174834790412, 0.2023207919468502, -0.5067392202386992, 1.823953396894383, 0.1523428263375545, 2.2440789764565605, -0.6697609733471732, -0.34309395149284333, -0.3824068477398153, -0.33303131558596377, 0.9716664193169441, 0.8311581421420695, -0.22780854741625758, 0.20032616901737238, -1.2785511330679982, -0.3197180135822623, 0.4959834053798831, 0.6752515974385053, 0.5334780166422973, -2.002795187816773, 0.27050605525523075, -0.9424869426824867, 0.458248932225858, -0.46118697878329784, 0.47832198627914324, -0.3661079341479641, -0.09319576406942727, 0.577819340020893, 1.2520997452677414, -0.2933921906178384, 1.136343377990995, 0.2468127074537116, -1.2252940887079373, 0.6375579341674809, 0.3462788965739153, -0.5177836733288577, -0.035284483529249705, -0.5338255181822806, 0.5193809161508848, 0.21798950092913766, -0.6956597590579882, 0.8046664677176151, -0.11463713804889088, -0.19176077914163675, 0.791885645189318, -1.4328882682847868, -0.9528659659051965, -1.637558975422558, -1.989264868496837, -0.8459538105074142, 0.944828292676069, -1.1921028346027158, 0.2546472038919744, 0.3861916389251654, -1.521512495954636, 1.535375205330882, -1.8914196543962882, 0.5149418901648063, 0.7752013519581096, 0.9145512827088738, -0.5080387911664219, 0.05031436015329658, -0.41216922303342934, 0.37227191099516266, -1.6600720014787667, -0.17968185610490092, 0.31830407850338693, 0.7686158224111359, 0.3658407552939923, -0.7165726159358554, 0.013357030158994452, -0.3372894061190394, -0.6789238357123408, -0.3832898769073804, -0.3227036184382978, 0.4460521819485986, 0.061892643502349666, -0.32267506934792967, 1.484633534363464, 0.4021774493619681, 0.4307762865129178, -0.5296069271797403, 4.151195369087241, 0.5487000909862146, 0.7163468748574175, 0.3808084179332832, -0.4772621640085183, 0.5479157515300286, -1.1044576899329694, -1.2036713335057232, 0.6909028182382742, -0.6529263174772725, -1.4725628267518027, -0.7473406606454858, 0.7387557364279378, -0.8760308731605688, -0.967180804004829, -0.49221734292555436, -1.4382474439405089, -0.3481040054911766, 0.22254446316102353, 1.731032969663649, 2.8055652681876384, 2.1160837251189757, -1.379194059803083, 0.6326539345516785, 0.15520482328940885, 0.8119547790137315, -1.610952801893542, 0.008918798158614715, 0.477564041851444, 0.25533528319659754, 0.998197782393884, -1.6484421505039013, -0.3004410869764593, 0.6057050457224126, -0.32020257217470566, 1.3359336989858763, 0.535133451920879, -0.5673962878727761, 0.24055606737735033, -1.6590194676777759, 1.9066265876591473, 0.2721183739248777, 0.06834872118107038, -0.7693837262978656, 0.6000193521872865, 0.20157135480173424, 2.472674269826056, 0.8258740084136792, 0.47137911495882484, 1.244572899040009, -0.3130562609295631, -0.7435497606216963, 0.13509423548484906, 0.6656236185332783, -0.5980179153119386, -0.6435416164377876, -1.3312882258359282, 1.0671430529417514, -0.09759042594372078, -0.35648374184511217, -1.2269456519162936, 1.6814992783555787, 0.04184788447848968, 1.68139083696507, -0.3030041682277847, 2.2849057798957273, -1.196531329787736, 0.6523992375423346, 1.4893905469952924, -0.6823297566186022, -1.1041446305707252, 0.4421841974696293, -1.4167436314301174, -1.5920898580925384, 1.4343243359414184, -1.9045005981467849, 0.057069471507391965, 0.5278224067845345, -0.7362602350911139, 0.19448161568570255, 1.5261487666748228, 0.004388839910851893, 0.015470814085829732, 1.615975884645819, 0.8879261649672402, -0.1326774466682177, 1.9382951563961202, -0.44547041979800195, 0.021230799239171535, -0.1571038497582797, -0.16148117044663435, -0.36447608885124355, 0.9360978659212479, -1.9835447885628907, -1.8064899970710941, 0.9036470769919311, 2.425086908712557, -0.6272015905517969, 1.957160646153106, -1.7538826809290353, -1.2373863108002687, -0.42249715021397544, -0.02100757430425144, 0.7526038212912296, 0.2047007870068672, 0.570705167349308, -0.7783611682766279, -2.3095477705978107, 0.22606718794222244, -0.32290132655615966, -1.597852946819715, -0.8952260637834641, 0.5568680007496093, 0.31733948888023006, -0.24697424901807427, -1.1633182632185708, -0.261549901914151, -1.855510767468883, -0.12245837196266503, -0.041080160924985655, -0.585409894265932, -0.4138566348289641, -0.6980329178942006, -1.0029216664042124, 0.10979946351080472, -1.6542257294131706, 1.393533502384212, 0.5174318732191945, 0.30147088153612134, 0.13176508644926532, -0.21802556521053773, -0.55329143084434, 0.2739291983626038, -0.6883020380352294, 0.6825537252923997, -1.5046508987238285, -0.5828333121318955, -1.1884290907589348, 0.1665509776472768, 1.3971140199197725, -1.3673567412727532, 3.0130147873449924, 0.7896539284272303, -1.055832543621147, 0.16658265730062774, 0.5232158049212052, 0.28570121739370363, -0.5325889850018535, 1.2918469178499534, 1.9819733294664026, -0.8093143209894869, 1.469595195954295, -1.2932943712519451, -2.1208284016640415, -0.4050898165492931, -1.1517011911443218, 0.8998956145443444, -0.23384644657433187, 0.526560658434697, 1.1222026129349756, 0.2160342440751586, 0.6797496626133915, -0.5331175042591417, 0.6637291624241468, -1.0147033164625645, -0.5049005083720637, 2.0659370602844436, -1.5900216896103532, -1.5339789892006166, -0.3200566858112642, 1.2830977533887504, 0.04654283897838462, 1.7838815763897529, 0.3904401499994594, -0.4111612807908421, 1.1847627666014435, -0.3955642857036182, 0.3675601425931492, 0.088662611923031, 0.46299757634197497, -2.2893235368562155, -2.268927460602336, 1.283516393286584, 0.20920007589000394, 2.4411204448502586, 1.1389069409067243, -1.1898031767179975, -0.43341406963651063, 1.7741298995608883, -0.016709317081657786, 0.11517899718492178, -1.5511855060356194, -1.3117417253404795, 0.13351391911792548, 1.1637653113813886, -0.27570074398670863, -1.5697680634730649, -1.954956462100421, 0.5552656916393576, 0.2373994429321212, -1.9303747103380289, -0.1921132978172397, 0.6250698172881495, -0.5949372282094622, -0.7826608913130164, 1.4562229269964548, -0.5416543116490529, 0.6936768940278385, 0.6261775893704643, -0.5859171652539004, 0.8555032381807751, -1.3676477362552337, 4.238533804853162, 2.4545185017647904, -0.913404759221193, 0.4250981319720471, -0.9763799065871701, 0.7808586039540816, -1.0328656450097617, -0.7721604644533069, -0.3530813727528884, -1.5411637128692925, 0.6539840707892913, 0.008229110336607592, 0.7966890453416182, 0.7037436956153061, 0.6614113279704881, -0.202848267721112, -0.29922308805427594, -0.5522097500427048, 0.09875065962242098, 0.7083328933399845, 1.7362802880024957, -0.2266535118741716, 0.5299005404626365, 0.6719364752934611, -1.8615906591576734, -0.09068813508526216, -0.1888891414579059, 1.3423077781666952, -0.6924470819765697, 1.1041424493388294, 0.4134851965057971, -0.4735791706069265, -0.7356651547484112, -1.575469178834194, 0.2059058482018911, -1.317543434131728, 2.347983690185328, -0.9350302948592141, 1.0039027596124084, 0.30969112449845376, 0.2541035100649089, 0.4211688015877788, 1.0647819562744412, 1.2886070484626828, 1.4453593413552184, -0.026423761925036916, -0.10046863824315762, 0.9375145304857443, -0.8794152043439424, 0.6161524124555712, 2.1765363841706007, -0.17519057418498793, 0.40239774219958097, -0.5314020562312248, -0.028260581879397745, 0.5266158478069836, -0.8130604924415793, -0.1620471073410965, 1.368895928096441, 0.2544222901453687, 0.0682140981898076, -0.08305873685961358, 1.1551649925205691, 0.20488815881813946, 0.9788412565833704, 0.6730413277634831, -0.10343628631794778, -0.011056773466636922, -0.26893242071811874, -0.22234819963659333, -2.063667484853198, -0.9528556130697672, -2.298918544448265, 1.4641851715761252, -0.6443216828282126, -0.7448597363782805, -0.5637254977251447, 0.026036289664867818, 1.7947458799857385, 0.47823466572724166, -0.6009031631006543, 1.5622161381793802, -0.012361922782423504, 1.1320815868058798, 0.2666111797781486, 1.0800481352272358, -1.3534368975569377, -0.12565159569358056, 0.8269760280151415, 0.4101805250340873, 0.5459250834776258, -0.578841318268924, -0.7708632540651004, -0.004711348442621566, 0.9139140784227678, -0.5887863731031122, 0.5255711160933076, 0.6899347371240381, 1.8406881042526044, -0.1494953868420972, -1.487372075437836, 0.04531226841225139, -0.8785887917514404, 0.6773321050874577, -0.0983506278141217, 0.5597628029545394, 0.9487620637619515, -2.0252012328413445, -0.3325641975286207, -1.1258330017788327, 0.023802932989263906, 0.42532764883918267, -0.1719694477750812, 1.1366386876717014, -0.06950662371831764, -0.5610077364219385, 0.6924775343736279, -0.08202929488370111, 0.03632839803067284, 0.2035677562126695, 0.48902609842042033, 1.0804149661369027, -0.7425106537204975, -0.5702977393123885, -1.3826240552189546, -0.5228635824639636, 2.541990031610674, -0.3358484399232096, 0.2708627260856431, 0.3577767439219406, 1.0481739531875494, 0.41502512979161693, 1.945039667472124, -1.333971998047096, -1.6319888693166744, 1.8081668907285702, -1.126545357015281, 1.017481115516176, -0.8746343950821853, 1.613464623094451, -0.987275067228173, -0.7782780233402289, 0.9358137937887636, 1.2685709811916313, -0.9922941446951046, 0.6495420807278994, -0.5015976512021791, -1.4515930568861974, -0.3017145427194569, 0.22396206990737433, 0.2449168875921067, 2.4353212694888504, 0.17708064085180888, 1.6379030780705819, 1.3277860775740942, 1.9763199313325732, -0.7129095818443579, -1.2469376388413769, -0.6242116235182271, -0.48041188552500946, -0.14268548581723478, -1.6604837693733687, -0.03806802185256857, 0.6963957195724964, 1.0623750746697818, 0.6233441558858677, 0.36657697739573364, -2.295074935487194, 1.0845561474708743, 0.4905268784109729, 0.9510955040687479, -0.5026253874469225, 0.5855406556971665, -0.4674907407543193, -0.5608509773657036, -0.054561000082436986, -0.13488620479039842, -1.6100667806518532, -0.3709803597469035, 0.29582203102054655, 0.8410085106517383, -0.6645326878187746, 1.1367845966619665, -1.3201243250510812, 0.13674546078719402, 0.9775512964502551, -0.6593867653205457, -0.16315112660697673, -0.6429666213286755, 0.5269463017070531, 0.13689944560905168, 0.2704736580667669, 1.0956057892301136, 2.0377599847068084, 1.1896914387079371, -1.1056334740369136, -0.061419064162327903, 0.6558988396743295, 1.1616563231258492, 0.05233437675572931, -0.43279599457514883, -0.6310196056008639, -0.07017445588897313, 0.21859133324465385, 1.7464304327601714, -0.38374464463022673, -0.4116300533373271, -0.9012559637626759, -0.29838378562277373, 0.1776181377502974, 0.5337179529206251, -1.6927309440114802, 0.19627841167268098, -1.3375053577369045, 0.34292489957433187, 1.7252380623451755, 0.3893308049876548, -1.6138835583138924, 0.24320533391068808, -1.503402740971457, -0.9820815913055403, 0.02826537327258336, -0.8677808012629867, -0.15732458310810252, 1.6448055242437023, 0.3882793537178024, -0.4745596075074129, 0.1657838803136746, -2.6918015152661914, 0.7632486195032542, 0.6973513947209198, 0.4101471209696532, -2.2799074841609177, 1.284770153684539, 0.03995086580146711, -0.2991581182473426, -0.08304172354784842, 0.28042933971050626, -1.0923071947444258, 0.9164084413681113, -0.6812760370027394, 1.5480579290916134, 1.4837613730950547, 0.023182419970626405, -0.2668022486973583, -0.1188765567232481, -0.22450605274030175, -0.01068777580695019, -0.5681288373513323, -0.798016193089919, 1.112093456749927, 1.4289069908566108, -0.8325323358283204, 0.6527204397669472, 0.45576965736433434, -0.05177234665505003, 1.1825820243015825, 0.5633724078799881, -0.2598338582029702, 1.2260636343236992, -0.06502314120499497, 1.3554177601202826, 0.015378075446720483, 1.771795744777381, 0.19716116753361734, -0.9289545353666014, -0.01120548540552129, -1.6568561810835647, -0.9711632993719995, 0.2888457566302567, -0.33812030790826947, -0.6944997091883152, -0.08753361436324024, -1.0825962267681306, -0.4698117598324523, -0.31391779051735585, 0.5155485258897468, -1.3906426323765313, -0.08794713693189429, 1.323299166667676, -0.1281180737897692, -0.7313549630276092, 0.30727046798040325, 1.1752251844693715, -0.7441249207177553, 1.6052690350217986, 0.18649308224250258, 0.17892852927651728, -0.0995691575256924, 0.4348534499771249, 1.484991734895783, -0.5720258392859724, -0.08690696328546704, 0.7713939696120472, 1.1722789472312292, 1.9496467641354467, 0.22942775691626238, 0.7124499254350729, -0.40961823346856296, -1.5841557574786587, -0.5783735657948544, 1.7072885072301731, -0.9760682458530513, -0.7133260677207641, -0.17406636751269225, 1.5115376392568705, 0.3444982802650086, 0.5618620561647593, 0.7768151831330067, -1.8495980414473379, -0.022772431183660354, -0.2688258642531703, -0.2316501235768239, -0.4349049986098626, 0.09524082099485014, 0.18287945969711975, 0.9756566821517488, 1.2112951490716906, -0.8350588047652798, -0.7894781658614808, -0.8425885522378407, 1.0078366331542066, -2.170943513352494, -0.07697039348999336, 0.624710432231761, -1.5714538060400307, 0.25497055299290833, 0.9193656642088831, 1.0914383490187152, -0.2746559451582547, -0.24795001040712014, -0.1821963308600328, -0.6151863420266909, -0.07974289047525698, 0.864835252508244, -0.11852133979339911, -0.5867385141837459, 0.7425778869302543, 0.7772435416319093, 0.7418518577569089, 0.18477538422252776, -0.862469199675159, -0.7201960090993764, 0.7441788487719844, -0.44740979333359115, -2.011406066578824, -2.0397719472330946, 1.6317617740438857, 0.501298361621573, 0.46480805036189093, -0.6492071444203512, -0.9962577891956758, -1.176143672100762, -1.460358133281756, 0.91939184535992, -2.6115193413417344, -0.11701441464426601, 0.36330899947821516, -0.7619851206952822, -0.9791836397007687, 0.06605184536205168, 0.9852736131214399, 0.18316974821162169, -0.16385983370688456, 1.769889718870536, -0.7568083172666948, -0.07093554823462433, 0.34915804932546474, 0.04394955212420144, -0.3412151969411125, -0.037998909530440356, -0.7920940693112494, 0.23924283654785033, -0.7218726802077204, 0.756794397487571, 1.129998141517764, 0.06199671202439378, 1.5818825635871332, -2.0927309142911965, -1.009720388820037, -1.161041154747722, -0.8447671692136892, -1.0157929981350513, 0.7904271516718387, 0.7254384385818724, -0.603295486359894, 0.25924412778603606, -0.04640660866056171, -1.6000423263326133, 1.8143254523998487, -0.08862538404196012, 0.5332621638876169, 1.1045997215315637, -0.41584450160976266, 0.9441745490519653, 0.24798697093505728, 0.007684578291883661, 0.10198392659226542, 1.6199201784700468, -0.32528736620138143, -0.5826981266958557, -0.36325256797247957, 1.1471577477638135, 0.6178987140946427, 0.36972297251343633, 0.5437284650592201, -1.4459624565283546, 0.05792287061159475, 0.41648235426252744, -0.3752827187450667, 1.6652887251405053, -0.42564437336001554, 0.9761973006448895, -0.7275241033025399, 0.6934458083833381, -0.29112188437100084, 1.3282243166189927, -0.9536927875603478, -0.719434212611784, 0.6748136465043926, -0.03597354593983007, 1.94009058703115, 0.09882655123973512, 2.1053876175385304, 1.4185342675315131, 0.1206620765251783, 0.14903745714080963, 0.10442318495551679, -0.17795681161591564, 1.2580662909953826, -0.309432614193383, -1.0905944849250224, 0.4769931537784153, 0.42744787996997274, 0.015299040637353436, -0.35211140544489866, 0.2588719668529644, 0.39806242670614195, 0.0982957694556772, -0.3643039151707563, -1.661352851241187, -0.7050125329026734, -0.943960952206926, -1.4473953121799084, 0.6926023466644213, 0.284659435800313, 1.6730413075943111, 0.6423676343810131, 0.3968310937206259, -0.8342984203305135, -0.06635863092332817, 0.48133940282415283, -0.34365908316039695, 0.8195486752084361, -0.2781857864218842, -1.0136587780355568, -0.4538474341770635, -1.1337344789342048, -0.5150244531135606, 0.958566232938252, -0.16105129432877321, 0.38436738614303156, -0.5172439276028532, 0.23093709347387772, -0.30272270953081704, -0.21962749662435752, 0.9566459591875526, -0.788349928603636, -0.44952615913370747, 0.525332205545319, -0.5812548660484521, 1.2956320514491553, -1.752164482642109, -0.6047121066028011, -0.15329007945272555, -0.04110361189064399, 0.2075100652227872, -0.04955642332135181, -1.2847570979710345, 0.4806820630644186, 0.8112350665109486, 0.577438605043487, -0.5506815219471743, 0.7858766373478445, -1.101050840231404, -2.2244251571050273, 0.09434075969634925, 0.19198836106624168, 1.0670984516256519, -0.7989553140491875, -0.20794218769948203, 1.5326125420890269, 0.020895643272767377, 1.429434237396836, -0.09226519337744446, 0.2530160966559398, -1.2052909073582596, 0.18629835668130743, -1.1412717735009497, 1.2293983703310951, 0.20963090073800605, 0.2771037033747804, 1.1176243523307434, -1.7749390137644867, -0.6160566595276167, 0.37431077650255806, -0.628817850166509, -1.5457989014436102, 1.0413567521072367, -0.6687052895376355, 0.08823501338384936, -0.8504561089335623, 2.674041129993747, -1.5899356389768722, -0.12358228035838018, 0.4957660906211637, 0.31851942141963985, -2.077120767009975, -0.5844799194788266, 1.9510391355162264, -0.347560684365186, 1.3086755801775074, 0.34475766053720236, -0.4033872470813162, 1.1582973308383313, -1.0684599760113471, 0.529968393960725, -1.6526921510620116, 0.9524384542696674, -0.22909069471152455, 0.6652418786019982, 0.0030589233668147898, 0.11365610389048802, -0.2480098634476716, -1.739708416005498, 0.13128969246670458, -0.8124775515041727, 0.09211054412374194, -0.5372875032406812, -0.0032089521665293573, -0.8316736236057737, 1.5059153046848375, 0.5055489101297763, -0.9926899954404349, 0.06717218616117565, 0.7564225434228204, -1.1172446398752929, -0.0971278427942958, 0.1783634876571702, -0.43831740139818265, -0.9897246258630265, 0.42789947696918956, -1.1881782474146696, -2.2595621851300622, 0.6418731773450146, 0.2534262764606806, 0.4316556467189196, -0.1404488018967209, 0.8263074484867586, -0.14552757065621125, 0.0789242186302759, 0.8209702417714765, -0.25903816299191046, 0.6767653743426741, 1.6145117461589933, 0.6926264703024766, -0.32214772217430293, 0.9292349516554164, -1.0508805938355477, -2.749764645898245, 0.013188601563584493, 0.33055296889149677, -1.1958215283600067, 0.1405450269372766, -0.508425415799171, 1.4570136536517577, -1.0251431195020073, 1.0969073653806085, 0.2995765466625078, -0.7079203015696985, 0.1288388731533383, 0.7296772632654821, -0.5084827629757859, -0.9959874907849151, 0.7608364139386558, -1.1970996777698375, 1.9127937929371042, 0.38743478707694207, 0.21795474706617954, -0.29993899538603785, -1.4785086866034736, -1.5956467908439216, -1.2082094773229581, 0.03773293580577447, 0.790311941516555, 0.5111896121176778, -1.1940258469292004, 1.2227006637979814, 0.836882842830787, -1.4311686461788606, -1.2744460342013122, 1.4644637457684015, 0.9728193611804964, 0.555860074890682, -0.4409659816734968, -1.268835784551248, 1.830337701005201, 0.5659326920677746, -0.5949593269450844, -0.48933591057504616, -0.5902894454298842, 0.8313257587194035, -0.014541865211528828, 0.42819120074867917, 0.12344083343107326, -1.5259370836437376, -0.4422937354316872, 0.2663102136658507, 0.7711270876630171, -0.6631414912664546, 0.7010024223490354, 2.074527616332793, 0.1267033512168494, 0.5771332153363341, -0.1669943788998164, 0.37570932219774306, -0.009486467375681047, 0.6339720925542973, -1.100679804820569, 0.208089727845949, -0.9425617416684303, -1.4440593374039066, -0.4882367066101957, 0.7163657255326146, -1.0357588950466872, -3.0737220356886374, 0.2470950795522819, 0.2864288554119523, 0.1483978221958065, 2.1154989451643167, -0.4001965762118845, -0.6462203956080385, 1.1265359562700552, -1.2596675882237476, -1.0043123290637297, -1.2085727111478823, 1.4452610642730932, -1.5066630796353353, -0.26195290731609777, -0.14271399927968614, -0.6530276111308737, 0.31402361422899266, -0.615575261840529, -1.5382467581744872, -1.146638529472436, -1.2566936090246918, -0.11659270837613013, 0.35542964402643873, 0.02526277564568483, -1.7743572584114875, -0.7085383632824588, -0.63517949386522, 0.7100322417458258, 0.37725139473966673, -0.5759538564824571, 0.08180511402950946, 0.41407533287471754, -0.24200104577387313, -0.4385693241008144, 1.6526863394676001, -0.11474769466518762, -0.7778772946580198, -0.28839425476706665, -1.9107601252457116, 1.2251863883694925, -0.6102167805929645, 1.314166180001923, 0.33549111757526723, 0.1642165334041994, -0.2711391207536865, -0.7227241249586495, -0.20242746834599726, 0.511635243911443, 0.7803547739974653, -0.327423000785996, 0.3502846670812043, -0.6690281009028096, -1.603564129628161, 0.651294169982652, 1.5346475986331407, 0.6076831921328979, 0.09553225219459871, -0.7254748961580175, 0.5000694612537876, 0.41285641663749495, -0.6307563086891868, 0.10304359933774031, 0.6906693939179498, -0.6117088277209861, -0.37359085726781716, 0.6415372041475905, 0.5667199392606257, -0.471612466163586, -0.28409429557130345, -1.1000185275940002, 1.2078426552444212, 1.820822882585083, -0.049716516450738324, 0.48541676042055915, -0.24833733761952417, 1.9706194085315605, -1.9357972478544503, 1.2746428725319756, 0.8787450667483632, -0.5743399181816461, 1.146477625622449, 0.82904607165605, -0.6240307749078965, -0.5201093385684066, 1.7563590799610034, 0.9291759054010359, 0.03949431623274768, 0.09878351123218292, 0.4678794507416003, -0.21611204185496907, -1.9415038866503043, 2.2711411739440632, -0.7573422816803704, 0.4462925903632097, -0.7789087537529676, -0.5503182367952988, 0.5971424930574555, -0.07203878009168195, -0.5217028851935946, 1.082108216219426, 0.41790242250612963, -0.0679066357661384, -1.263509598957737, 0.8004808096290376, -0.2541222406082443, -0.2133433497515408, -0.26792364723437295, 0.20112906676382966, -0.32435552792181394, 0.23282205608740192, 2.2221675354748855, -1.4830106452698057, 0.9891247273398209, 0.2603986195227453, 0.4910300720533456, -1.357238648432873, -1.2514963996484836, -0.30125845912815724, 0.1928097450048526, 1.4448018223442105, 0.5625834185014028, -1.1979257187589254, -0.07857776228971138, 0.06045821558284647, 0.7133596907037718, -0.8010426610921747, 2.0440257915732163, -0.5915625781476785, 0.4614571279264127, -0.8323915586162163, -0.12281522077241769, -1.891751987785829, -1.436820011323204, -0.3375407922826853, -0.4583639388670451, -0.09352467965350812, -0.09376078246251955, -1.104789843452201, -1.9113071146131402, -0.3080107984257694, 0.6890879947469407, 1.6298325324990017, 1.7332383276272256, -0.6570721931348752, 0.5011093119580866, 1.4256340832824121, -1.6409542816000537, 0.3031292239641022, 2.064237216045931, -0.051705902095611905, -0.7832897005596622, -0.7454241686325258, 0.7295020332844333, 1.6375808311567626, -1.2299275543889183, -0.5600159935032863, 0.36276227989135124, -0.0841421034314566, -0.34511214955582953, 0.1013965878283084, -0.18098461747365058, 0.9191251794719164, 0.06765779742714738, -0.24919806799835556, -1.7584641099826481, -0.2408943706631287, 1.1586506587846426, -0.6941027599159496, -0.40284176463802435, -0.07218934233754541, -0.6866794606674014, -1.136814985867382, -1.0286542111302972, -1.0753215203338025, -0.523524292626774, -1.1218134808250722, -0.874089313385567, 0.09331272041243248, 0.9386738047553144, 0.09076349142987619, -1.2160470369625689, 0.27900325888755534, -1.3482125481314258, -2.0470437247953943, -0.40859660863279956, 0.2828811548709021, 2.4800984064132803, 0.19294989666278736, 0.28212861056292143, -1.610912083835489, -0.5315801864225906, 1.706608368850939, -1.8501729731293364, -0.630002988972623, 1.4757143328892797, -1.6396479208187233, -1.8371716642350544, -1.0742314481301545, 1.0754611432095824, -0.5378007226773498, -0.3178784375535398, 0.5735335996600629, 0.4868994275345122, -0.21549627729467807, -0.16640172916066487, 0.908080649370133, 2.173437328284729, 0.4190344084566232, -0.9569146506578511, 0.45263575951706014, 1.778059009562198, 1.4488553145210796, 0.07467679612778716, -1.3459068501008828, 1.0900502612985628, 1.8272758673855272, -0.23894381261705294, 0.12043314967623445, -0.5773200285051094, 0.5216921180645022, -1.5092635778866117, 0.18102168205190566, 0.8965052639560143, 0.9201255573471795, -1.2903912922821366, 0.9873211691804024, 1.172724388329733, 0.20376377055663986, 2.138854170658406, -0.9316113182700534, -1.2475280594655904, 0.417911924644604, 0.3104385253889033, 0.8962967028920321, -0.5778036698087538, 1.0180641994003492, 1.978139527067393, 0.37723162368545265, -0.3153731448300482, -0.28043983006620493, 1.2268346250368896, -0.17227523540812437, 0.2580612644636763, 0.7839164309552376, -1.6857109421253955, -1.3003167935540005, 1.933409068497346, -0.720369637396077, 0.5104055429987321, -1.08388129713197, 0.23369005993420508, -0.8857461821887489, 0.21884110679487903, 0.3399839311138383, 2.2927612097100596, -0.1302670929713838, -0.2227227695346543, -1.4346253879586792, -0.8344086694038684, -0.7002516953857244, 0.43509420272323845, 0.8609631356011878, -0.43270705045183616, -0.24001073577599197, 0.28609176501217787, 0.7031717689478829, 0.23204270200931182, 2.1505272334979897, 0.2861763181933207, -0.7584547841123832, 0.5168757252968688, -1.1092933224722437, 0.28264197275089215, -0.7359352757039123, 0.7696916736749783, 1.1693904145377578, -0.03894762164617204, 0.6641135169499479, -0.7147964181583462, -0.3596311141562558, -1.8435871360153697, -1.0008815336080084, -0.8745896149619665, -1.7854772192044157, 1.4101601051693955, 0.3989081511969654, -0.46138352582140285, -2.070033977081843, -0.18644561980439622, 1.2400855648899223, -1.164136732605302, -0.7927090251554685, 0.5630168884076489, 1.1671379510254194, 2.231868835700232, 0.4565350508345933, -0.3389202312449233, -1.5275179745183336, 0.3230936836149417, 0.6082923125809354, -1.385778896370543, 0.4933263314478739, -1.9751095768562033, -0.2065779574546836, -0.19565497391904002, 0.19507228882058708, 1.1491676003071556, 0.47753659551701444, 1.267566892973097, 1.2699972267061581, -0.14783471801597317, 1.3947086641636515, 0.13849276493060986, 1.543713937406089, 0.8793567120723491, -0.19166319681661234, -2.178011595451856, -0.047935435051166216, 1.0519017754831546, -1.1503195176998693, 0.9590735535318957, -0.4101942648351055, -0.9291595233845755, 0.04827969552760872, -0.006591472103865717, -0.8287084685787525, 0.510991782645471, 1.1993354234468527, -0.6249200800653011, 0.06906024810652203, -0.2810131831119284, 1.7132565332176783, 0.3715878450725023, 0.4232188686511501, -0.23751681917622205, -0.284138784599415, -0.9181240192735334, 1.7200351673814782, -0.5646085076036653, 0.9511857419563984, -1.2703881921689144, 1.044280055990386, 0.03786689772227966, 1.4182728427165774, 0.8337325218228854, -1.0587247347181652, -0.5031113248889103, 0.8873021806079839, -1.6837264548806383, -0.963353987660909, -0.3925379775035674, 0.030351645171583227, -0.1480784901933993, 0.5971587614103617, -0.5966536682782796, -0.32585054539846936, -1.2881189235714545, 1.4626168790196996, 0.4876451579697916, -2.5512587798294053, -0.22746942805830464, 0.22714076786745147, -1.2367287849167479, -1.4958341332392378, 0.8404569974160938, -0.5250803172042454, 1.1030214409483563, -0.9430810970721388, 0.8419017021480036, 0.10747778668821155, -0.3872490592960608, -0.5972525446631549, 0.9643730616194118, -1.9150859939615104, -0.16132999883201363, 2.247013458758037, 0.2793924489497806, 0.22445447609820876, -0.5935321078971101, -1.021619853538392, -0.5669336330928147, 1.51072676166332, -0.4577459477554841, 0.2856756020469671, 1.3003683403048245, 1.6681883000570241, 0.29140173625397836, 1.4448227513845624, -0.49337735263206095, 0.3063926208053877, -0.8839906748898476, -0.8508338033152001, 0.32884664967404276, 0.8225807552240499, 0.28615338220135916, -0.6459677898912536, 0.456084692916367, 1.1816323117108978, 0.005750129390048088, -0.23080308943910496, 1.2329424071409298, -3.103298270774514, 1.2457064642869893, -1.438732143788353, -0.5069669088042135, 1.9410370006144513, -0.680135288988108, -0.684441394790031, -0.9299498749943689, -1.0023257557431406, -0.20085573890294844, 2.1892107786913413, 1.0539082768590986, -0.12946159481571648, -0.9603859816501762, -0.6759566438229674, 0.6063321523892387, -2.04080451980182, 0.3448387208567922, 0.6188680405937481, -2.53483233750232, 0.4718381152261103, 0.5204602861759604, -0.37294274011868744, -1.0608122326322948, 0.876995543974861, 1.6208103493973607, -0.10501804755065293, -1.144605534391477, -0.11545809967020526, -1.5254381527091445, 0.704971452166678, -1.1385423962074352, -1.0702260829994228, -0.8042670395297246, -1.9958053298936345, 0.06149218869846654, 0.0034778293679331336, -1.6309611881902848, -1.579450043003391, -0.812854397163873, -1.3440391096930395, -0.7992158635130223, -0.7307305666236779, 0.563033821782763, 0.5929740847991084, -0.4072124328227139, -0.9597031772508735, 0.6326426393413165, -1.26743591058185, 0.012961789096372823, 1.3690236683244486, 0.5626351995527971, 0.3930969343026333, 0.3804639938085295, -0.7055289460485151, -1.1137071825718237, -0.32401279261679405, -0.25360651639701537, -0.3629288727538312, 0.40309857005433064, 1.6124254520554622, 1.145346015655076, 0.18482864793147852, 1.0146132489781052, 0.5762713361888263, -0.4302922143454036, -0.7781673008888688, 0.3165266777932903, -1.3210033528584464, 0.47419403592709836, -0.02875008939599337, 0.14714621419460175, 1.4797797158907586, 0.6830428568029596, -1.051712101999051, 1.194440018218743, -1.1642432883696971, 1.04395640790416, -0.3903019504585278, -0.9469832104094259, -0.15920476878484313, 1.2958603176641055, 1.2195200287127348, -0.18102374320360753, -1.1645019636692635, 0.31512163398607973, 0.4112140952226413, 0.799068132489134, -0.194553356476797, -0.24713828227948162, 1.1162744704218956, -0.5100587555940508, -1.7306779449877614, -1.3161139044492312, 0.6341932724742192, -0.7347849903121613, 0.9645835907250738, 1.5026031951659682, -1.4760744795962333, -0.06731259930616487, 0.7042872721353796, -0.5335137254930029, 0.0716602316769604, 0.6043539708627061, 0.11692324897196178, -0.05768277951806856, 1.1162713764449659, 1.8796989655172829, 0.43088724829364505, 2.38688392018114, 0.29310955804355704, 0.7462035664728303, -1.4923332297842067, -1.2280466714373701, 1.0734872965346725, 0.5262032697307816, 0.7693518738655505, -0.28211783832137927, -0.0290036682453748, -2.931607725174539, -0.61001449056912, -0.7025484586715276, 0.7759827155138221, -0.19166960568471056, 0.9694902932312826, -1.04530914742025, 0.9727250463770896, 0.06310226379325519, 1.0818373134406507, 1.1047859736064884, -0.9784634968885791, -0.9146592081968249, 0.15142025533299056, 0.23328387697346153, 1.482068026300734, 1.4017194403233817, 0.5839385941999119, -3.499091269336771, 0.6898991159514024, -0.76367161011779, 0.271889761583164, -0.2648955270675521, -0.05132512877225392, -1.1445243383154795, -0.9341941596618715, -0.2758301417114395, -0.12386224872925095, 0.3429318698923175, -0.20380183235337243, -1.442620516648269, -0.08857891832728218, -0.5685844707827721, 0.31653125437081814, -0.7630932541957661, 1.0549727437086984, -0.23903901917404402, 0.13881369002402355, -0.277058267581059, -1.1828348650720584, 0.41122688905564325, -0.11093465300197233, 0.05700186250342231, -0.8530057143017865, -1.1330141754733023, -0.788433518694048, 0.0410432386990952, -0.2526837758051426, -0.7365204396871289, 2.374275605228078, 0.24647701310468878, 0.6189709904599635, -0.3036782549769593, -0.6671553020762782, 0.9568820989023366, -1.079178482400065, 0.29500583173695416, -0.9289020636769935, 0.7791599475788574, -0.1983372320556875, -0.49097598732772324, -1.2327667862306246, -0.463786196952311, -0.7468162049628737, 1.8137576226948215, 0.4907226689424396, 0.3853672976926061, 1.405986757744362, 0.006148904928010884, 0.5727386445488017, 0.09397490448508446, -0.35506525618267476, 1.7351653184984497, -0.39253263749716394, 0.12196757373920339, 0.38004382713166907, 0.7006111800175882, 0.4987705634227367, -0.7645303868257485, -0.5146892069655717, -0.5835515156473441, -1.1547773890712476, -0.05898296492235115}; + + +static const double gemm_checksum[64] = {-45.1525872455864, -53.56382313501859, 75.37190918194668, 81.51135315789973, -15.61415231827229, -60.60307561986312, 47.96036541651724, 65.73237574275608, -4.4727051387073935, -33.991042035520486, -26.416772446199882, 1.7860331769884112, 63.625439870165444, 11.62205632780551, -15.064831482590407, -47.33578990077392, 31.789427261811298, 45.60325302655279, 46.39784351481784, -41.63175282633895, -37.58415419207174, 52.811751728757756, 17.491718577483027, 95.99796882635259, -31.290609142980582, 56.18913870959351, -9.784406747318776, -47.798468293167936, -68.85425504150908, 14.518540879027748, 12.444849316598145, 27.044449299453333, 34.41753472048874, 37.24202029503455, 0.0015372059941842764, 56.49727200521621, 42.08187683985865, -60.80036174635206, -41.51354371054238, 25.39617622130028, 64.16199934240205, -49.723260643988866, -67.73199521937849, 14.061632619059395, -46.723037598164815, -1.4946901268404673, -19.516162199239137, 13.487866069963179, -23.19623129877386, 56.32942826668456, 67.64491765822369, 25.427295331888367, -3.9993280938311173, 70.5746407371274, 68.98981144920677, 11.672168486094769, 10.78240530670366, 31.25611590676771, 34.98838254510045, -129.95599475048968, 14.933419865189286, 35.74263691521163, 85.87277962177788, 93.68226272318962}; + + diff --git a/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/layer.h b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/layer.h new file mode 100644 index 00000000..ba49ef72 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/data/layer.h @@ -0,0 +1,134 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +typedef enum { FP64 = 8, FP32 = 4, FP16 = 2, FP8 = 1 } precision_t; + +/** + * @struct gemm_layer_struct + * @brief This structure contains all parameters necessary for GEMM. + * @var gemm_layer_struct::M + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::M_p + * M divided by number of compute cores + * @var gemm_layer_struct::N + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::K + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::TA + * Transpose matrix A + * @var gemm_layer_struct::TB + * Transpose matrix B + * @var gemm_layer_struct::TILE_M + * Tile factor across M dimension + * @var gemm_layer_struct::TILE_N + * Tile factor across N dimension + * @var gemm_layer_struct::TILE_K + * Tile factor across K dimension + * @var gemm_layer_struct::A + * Pointer to matrix A + * @var gemm_layer_struct::B + * Pointer to matrix B + * @var gemm_layer_struct::C + * Pointer to matrix C + * @var gemm_layer_struct::ALPHA + * constant factor: A * B + ALPHA * C + * @var gemm_layer_struct::dtype + * Precision of GEMM + * @var gemm_layer_struct::expand + * Use expanding DOTP instructions + */ +typedef struct gemm_layer_struct { + uint32_t M; + uint32_t M_p; + uint32_t N; + uint32_t K; + + uint32_t TA; + uint32_t TB; + + uint32_t TILE_M; + uint32_t TILE_N; + uint32_t TILE_K; + + double *A; + double *B; + double *C; + + uint32_t ALPHA; + + precision_t dtype; + uint32_t expand; +} gemm_layer; + +/** + * @struct conv_layer_struct + * @brief This structure contains all parameters necessary for Convolutional + * layers + * @var conv_layer_struct::CO + * Number of output channels + * @var conv_layer_struct::CI + * Number of input channels + * @var conv_layer_struct::IH + * Height of input feature map + * @var conv_layer_struct::IW + * Width of input feature map + * @var conv_layer_struct::OH + * Height of output feature map + * @var conv_layer_struct::OW + * Width of output feature map + * @var conv_layer_struct::FH + * Height of filter + * @var conv_layer_struct::FW + * Width of filter + * @var conv_layer_struct::pad + * Padding on all sides + * @var conv_layer_struct::ifmap + * Pointer to input feature map + * @var conv_layer_struct::weights + * Pointer to weights + * @var conv_layer_struct::ofmap + * Pointer to output feature map + * @var conv_layer_struct::TILE_CI + * Tiling factor of input channel + * @var conv_layer_struct::cluster2cluster + * Flag for enabling cluster 2 cluster communication + * @var conv_layer_struct::im2col + * Flag for enabling im2col + GEMM + * @var conv_layer_struct::gamma + * Pointer to gamma for BatchNorm + * @var conv_layer_struct::beta + * Pointer to beta for BatchNorm + * @var gemm_layer_struct::dtype + * Precision of Convolution layer + */ +typedef struct conv_layer_struct { + // CONV2D + uint32_t CO; + uint32_t CI; + uint32_t IH; + uint32_t IW; + uint32_t OH; + uint32_t OW; + uint32_t FH; + uint32_t FW; + uint32_t pad; + + double *ifmap; + double *weights; + double *ofmap; + + uint32_t TILE_CI; + uint32_t cluster2cluster; + uint32_t im2col; + + // BATCHNORM + double *gamma; + double *beta; + + precision_t dtype; +} conv_layer; diff --git a/sw/spatzBenchmarks/dp-fmatmul-8x2vl/kernel/dp-fmatmul.c b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/kernel/dp-fmatmul.c new file mode 100644 index 00000000..372aaf5d --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/kernel/dp-fmatmul.c @@ -0,0 +1,394 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Matheus Cavalcante, ETH Zurich + +#include "dp-fmatmul.h" +#include + +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +void matmul(double *c, const double *a, const double *b, const unsigned int M, + const unsigned int N, const unsigned int P) { + if (M <= 4) { + matmul_2xVL(c, a, b, 0, M, N, P, 0, P); + } else if (M <= 8) { + matmul_4xVL(c, a, b, 0, M, N, P, 0, P); + } else { + matmul_8xVL(c, a, b, 0, M, N, P, 0, P); + } +} + +// --------------- +// 2xVL +// --------------- + +void matmul_2xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) { + + unsigned int p = p_start; + while (p < p_end) { + // Calculate the vl + size_t gvl; + asm volatile("vsetvli %[gvl], %[vl], e64, m8, ta, ma" + : [gvl] "=r"(gvl) + : [vl] "r"(p_end - p)); + + const double *b_ = b + p; + double *c_ = c + p; + + for (unsigned int m = m_start; m < m_end; m += 2) { + const double *a_ = a + m * N; + const double *a__ = a_; + + asm volatile("vle64.v v16, (%0);" ::"r"(b_)); + const double *b__ = b_ + P; + + double *c__ = c_ + m * P; + + double t0, t1; + + t0 = *a__; + a__ += N; + t1 = *a__; + + unsigned int n = 0; + + while (n < N) { + a__ = a_ + ++n; + + asm volatile("vle64.v v24, (%0);" ::"r"(b__)); + b__ += P; + + if (n == 1) { + asm volatile("vfmul.vf v0, v16, %0" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmul.vf v8, v16, %0" ::"f"(t1)); + t1 = *a__; + } else { + asm volatile("vfmacc.vf v0, %0, v16" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v16" ::"f"(t1)); + t1 = *a__; + } + + a__ = a_ + ++n; + + if (n == N) + break; + + asm volatile("vle64.v v16, (%0);" ::"r"(b__)); + b__ += P; + + asm volatile("vfmacc.vf v0, %0, v24" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v24" ::"f"(t1)); + t1 = *a__; + } + + asm volatile("vfmacc.vf v0, %0, v24" ::"f"(t0)); + asm volatile("vse64.v v0, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v8, %0, v24" ::"f"(t1)); + asm volatile("vse64.v v8, (%0);" ::"r"(c__)); + } + + p += gvl; + } +} + +// --------------- +// 4xVL +// --------------- + +void matmul_4xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) { + + unsigned int p = p_start; + while (p < p_end) { + // Calculate the vl + size_t gvl; + asm volatile("vsetvli %[gvl], %[vl], e64, m4, ta, ma" + : [gvl] "=r"(gvl) + : [vl] "r"(p_end - p)); + + const double *b_ = b + p; + double *c_ = c + p; + + for (unsigned int m = m_start; m < m_end; m += 4) { + const double *a_ = a + m * N; + const double *a__ = a_; + + asm volatile("vle64.v v16, (%0);" ::"r"(b_)); + const double *b__ = b_ + P; + + double *c__ = c_ + m * P; + + double t0, t1, t2, t3; + + t0 = *a__; + a__ += N; + t1 = *a__; + a__ += N; + t2 = *a__; + a__ += N; + t3 = *a__; + + unsigned int n = 0; + + while (n < N) { + asm volatile("vle64.v v20, (%0);" ::"r"(b__)); + b__ += P; + + a__ = a_ + ++n; + + if (n == 1) { + asm volatile("vfmul.vf v0, v16, %0" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmul.vf v4, v16, %0" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmul.vf v8, v16, %0" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmul.vf v12, v16, %0" ::"f"(t3)); + t3 = *a__; + } else { + asm volatile("vfmacc.vf v0, %0, v16" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v4, %0, v16" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v16" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmacc.vf v12, %0, v16" ::"f"(t3)); + t3 = *a__; + } + + a__ = a_ + ++n; + + if (n == N) + break; + + asm volatile("vle64.v v16, (%0);" ::"r"(b__)); + b__ += P; + + asm volatile("vfmacc.vf v0, %0, v20" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v4, %0, v20" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v20" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmacc.vf v12, %0, v20" ::"f"(t3)); + t3 = *a__; + } + + asm volatile("vfmacc.vf v0, %0, v20" ::"f"(t0)); + asm volatile("vse64.v v0, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v4, %0, v20" ::"f"(t1)); + asm volatile("vse64.v v4, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v8, %0, v20" ::"f"(t2)); + asm volatile("vse64.v v8, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v12, %0, v20" ::"f"(t3)); + asm volatile("vse64.v v12, (%0);" ::"r"(c__)); + } + + p += gvl; + } +} + +// --------------- +// 8xVL +// --------------- + +void matmul_8xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) { + + unsigned int p = p_start; + while (p < p_end) { + // Calculate the vl + size_t gvl; + asm volatile("vsetvli %[gvl], %[vl], e64, m2, ta, ma" + : [gvl] "=r"(gvl) + : [vl] "r"(p_end - p)); + + const double *b_ = b + p; + double *c_ = c + p; + + for (unsigned int m = m_start; m < m_end; m += 8) { + const double *a_ = a + m * N; + const double *a__ = a_; + + asm volatile("vle64.v v18, (%0);" ::"r"(b_)); + const double *b__ = b_ + P; + + double *c__ = c_ + m * P; + + double t0, t1, t2, t3, t4, t5, t6, t7; + + t0 = *a__; + a__ += N; + t1 = *a__; + a__ += N; + t2 = *a__; + a__ += N; + t3 = *a__; + a__ += N; + t4 = *a__; + a__ += N; + t5 = *a__; + a__ += N; + t6 = *a__; + a__ += N; + t7 = *a__; + + unsigned int n = 0; + + while (n < N) { + a__ = a_ + ++n; + + asm volatile("vle64.v v20, (%0);" ::"r"(b__)); + b__ += P; + + if (n == 1) { + asm volatile("vfmul.vf v0, v18, %0" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmul.vf v2, v18, %0" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmul.vf v4, v18, %0" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmul.vf v6, v18, %0" ::"f"(t3)); + t3 = *a__; + a__ += N; + asm volatile("vfmul.vf v8, v18, %0" ::"f"(t4)); + t4 = *a__; + a__ += N; + asm volatile("vfmul.vf v10, v18, %0" ::"f"(t5)); + t5 = *a__; + a__ += N; + asm volatile("vfmul.vf v12, v18, %0" ::"f"(t6)); + t6 = *a__; + a__ += N; + asm volatile("vfmul.vf v14, v18, %0" ::"f"(t7)); + t7 = *a__; + } else { + asm volatile("vfmacc.vf v0, %0, v18" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v2, %0, v18" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmacc.vf v4, %0, v18" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmacc.vf v6, %0, v18" ::"f"(t3)); + t3 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v18" ::"f"(t4)); + t4 = *a__; + a__ += N; + asm volatile("vfmacc.vf v10, %0, v18" ::"f"(t5)); + t5 = *a__; + a__ += N; + asm volatile("vfmacc.vf v12, %0, v18" ::"f"(t6)); + t6 = *a__; + a__ += N; + asm volatile("vfmacc.vf v14, %0, v18" ::"f"(t7)); + t7 = *a__; + } + + a__ = a_ + ++n; + + if (n == N) + break; + + asm volatile("vle64.v v18, (%0);" ::"r"(b__)); + b__ += P; + + asm volatile("vfmacc.vf v0, %0, v20" ::"f"(t0)); + t0 = *a__; + a__ += N; + asm volatile("vfmacc.vf v2, %0, v20" ::"f"(t1)); + t1 = *a__; + a__ += N; + asm volatile("vfmacc.vf v4, %0, v20" ::"f"(t2)); + t2 = *a__; + a__ += N; + asm volatile("vfmacc.vf v6, %0, v20" ::"f"(t3)); + t3 = *a__; + a__ += N; + asm volatile("vfmacc.vf v8, %0, v20" ::"f"(t4)); + t4 = *a__; + a__ += N; + asm volatile("vfmacc.vf v10, %0, v20" ::"f"(t5)); + t5 = *a__; + a__ += N; + asm volatile("vfmacc.vf v12, %0, v20" ::"f"(t6)); + t6 = *a__; + a__ += N; + asm volatile("vfmacc.vf v14, %0, v20" ::"f"(t7)); + t7 = *a__; + } + + asm volatile("vfmacc.vf v0, %0, v20" ::"f"(t0)); + asm volatile("vse64.v v0, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v2, %0, v20" ::"f"(t1)); + asm volatile("vse64.v v2, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v4, %0, v20" ::"f"(t2)); + asm volatile("vse64.v v4, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v6, %0, v20" ::"f"(t3)); + asm volatile("vse64.v v6, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v8, %0, v20" ::"f"(t4)); + asm volatile("vse64.v v8, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v10, %0, v20" ::"f"(t5)); + asm volatile("vse64.v v10, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v12, %0, v20" ::"f"(t6)); + asm volatile("vse64.v v12, (%0);" ::"r"(c__)); + c__ += P; + asm volatile("vfmacc.vf v14, %0, v20" ::"f"(t7)); + asm volatile("vse64.v v14, (%0);" ::"r"(c__)); + } + + p += gvl; + } +} diff --git a/sw/spatzBenchmarks/dp-fmatmul-8x2vl/kernel/dp-fmatmul.h b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/kernel/dp-fmatmul.h new file mode 100644 index 00000000..dfc27ae6 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/kernel/dp-fmatmul.h @@ -0,0 +1,45 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Matheus Cavalcante, ETH Zurich + +#ifndef DPFMATMUL_H +#define DPFMATMUL_H + +void matmul(double *c, const double *a, const double *b, const unsigned int M, + const unsigned int N, const unsigned int P); + +inline void matmul_single_unrolled(double *c, const double *a, const double *b, + const unsigned int N, const unsigned int P, + unsigned int vl) + __attribute__((always_inline)); +inline void matmul_2xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) + __attribute__((always_inline)); +inline void matmul_4xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) + __attribute__((always_inline)); +inline void matmul_8xVL(double *c, const double *a, const double *b, + const unsigned int m_start, const unsigned int m_end, + const unsigned int N, const unsigned int P, + const unsigned int p_start, const unsigned int p_end) + __attribute__((always_inline)); + +#endif diff --git a/sw/spatzBenchmarks/dp-fmatmul-8x2vl/main.c b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/main.c new file mode 100644 index 00000000..377d8f3b --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/main.c @@ -0,0 +1,163 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Matheus Cavalcante, ETH Zurich + +#include +#include +#include + +#include DATAHEADER +#include "kernel/dp-fmatmul.c" + +#ifndef KERNEL_SIZE +#define KERNEL_SIZE 8 +#endif + +double *a; +double *b; +double *c; + +// Verify the matrices +int verify_matrix(double *matrix, const double *checksum, + const unsigned int num_rows, const unsigned int num_columns) { + for (unsigned int i = 0; i < num_rows; ++i) { + double sum = 0; + for (unsigned int j = 0; j < num_columns; ++j) { + sum += (double)matrix[i * num_columns + j]; + } + + double diff = sum - (double)checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } + return 0; +} + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Set matrix dimension + kernel_size = KERNEL_SIZE; + + // Work over complete P dimension + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + + if (kernel_size == 2) { + matmul_2xVL(c, a, b, m_start, m_end, gemm_l.K, gemm_l.N, p_start, p_end); + } else if (kernel_size == 4) { + matmul_4xVL(c, a, b, m_start, m_end, gemm_l.K, gemm_l.N, p_start, p_end); + } else if (kernel_size == 8) { + matmul_8xVL(c, a, b, m_start, m_end, gemm_l.K, gemm_l.N, p_start, p_end); + } else { + return -2; + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * num_cores * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { + int error = + verify_matrix(c, (const double *)gemm_checksum, gemm_l.M, gemm_l.N); + + if (error != 0) { + printf("Error core %d: c[%d]=%u\n", cid, error, (int)c[error]); + return error; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-fmatmul-8x2vl/main.c~ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/main.c~ new file mode 100644 index 00000000..eb6dcc6e --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/main.c~ @@ -0,0 +1,163 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Matheus Cavalcante, ETH Zurich + +#include +#include +#include + +#include DATAHEADER +#include "kernel/dp-fmatmul.c" + +#ifndef KERNEL_SIZE +#define KERNEL_SIZE 4 +#endif + +double *a; +double *b; +double *c; + +// Verify the matrices +int verify_matrix(double *matrix, const double *checksum, + const unsigned int num_rows, const unsigned int num_columns) { + for (unsigned int i = 0; i < num_rows; ++i) { + double sum = 0; + for (unsigned int j = 0; j < num_columns; ++j) { + sum += (double)matrix[i * num_columns + j]; + } + + double diff = sum - (double)checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } + return 0; +} + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Set matrix dimension + kernel_size = KERNEL_SIZE; + + // Work over complete P dimension + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + + if (kernel_size == 2) { + matmul_2xVL(c, a, b, m_start, m_end, gemm_l.K, gemm_l.N, p_start, p_end); + } else if (kernel_size == 4) { + matmul_4xVL(c, a, b, m_start, m_end, gemm_l.K, gemm_l.N, p_start, p_end); + } else if (kernel_size == 8) { + matmul_8xVL(c, a, b, m_start, m_end, gemm_l.K, gemm_l.N, p_start, p_end); + } else { + return -2; + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * num_cores * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { + int error = + verify_matrix(c, (const double *)gemm_checksum, gemm_l.M, gemm_l.N); + + if (error != 0) { + printf("Error core %d: c[%d]=%u\n", cid, error, (int)c[error]); + return error; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-fmatmul-8x2vl/script/gen_data.py b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/script/gen_data.py new file mode 100755 index 00000000..42ace34e --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/script/gen_data.py @@ -0,0 +1,696 @@ +#!/usr/bin/env python3 +# Copyright 2022 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Author: Tim Fischer + +import numpy as np +import torch +import torch.nn as nn +import argparse +import pathlib +import hjson + +np.random.seed(42) +torch.manual_seed(42) + +global verbose + + +def array_to_cstr(a, fmt=float): + out = "{" + if fmt == float: + if isinstance(a, np.ndarray): + a = a.flat + if isinstance(a, torch.Tensor): + a = a.numpy().flat + for el in a: + out += "{}, ".format(el) + else: + for sign, exp, mant in zip( + a["sign"].numpy().flat, + a["exponent"].numpy().flat, + a["mantissa"].numpy().flat, + ): + value = sign * 2**7 + exp * 2**2 + mant + out += "0x{:02x}, ".format(value) + out = out[:-2] + "}" + return out + + +def emit_header_file(layer_type: str, **kwargs): + + file_path = pathlib.Path(__file__).parent.parent / "data" + emit_str = ( + "// Copyright 2022 ETH Zurich and University of Bologna.\n" + + "// Licensed under the Apache License, Version 2.0, see LICENSE for details.\n" + + "// SPDX-License-Identifier: Apache-2.0\n\n" + ) + + if layer_type == "Conv2d": + file = file_path / "data_conv2d.h" + emit_str += emit_conv2d_layer(**kwargs) + elif layer_type == "GEMM": + file = file_path / ("data_" + str(kwargs["M"]) + "_" + str(kwargs["N"]) + "_" + str(kwargs["K"]) + ".h") + emit_str += emit_GEMM_layer(**kwargs) + elif layer_type == "BatchNorm": + file = file_path / "data_batchnorm.h" + emit_str += emit_batchnorm_layer(**kwargs) + elif layer_type == "MaxPool": + file = file_path / "data_maxpool.h" + emit_str += emit_maxpool_layer(**kwargs) + elif layer_type == "FusedConv": + file = file_path / "data_fusedconv.h" + emit_str += emit_fusedconv(**kwargs) + with file.open("w") as f: + f.write(emit_str) + + +def emit_conv2d_layer(name="conv2d", **kwargs): + ifmap = kwargs["ifmap"] + ofmap = kwargs["ofmap"] + weights = kwargs["weights"] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + _, fh, fw, _ = weights.shape + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"conv_layer {name}_l = {{\n" + layer_str += f"\t.CO = {co},\n" + layer_str += f"\t.CI = {ci},\n" + layer_str += f"\t.IH = {ih},\n" + layer_str += f"\t.IW = {iw},\n" + layer_str += f"\t.OH = {oh},\n" + layer_str += f"\t.OW = {ow},\n" + layer_str += f"\t.FH = {fh},\n" + layer_str += f"\t.FW = {fw}\n" + layer_str += "};\n\n\n" + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += ( + f"static double {name}_checksum[{oh}][{ow}] = " + + array_to_cstr(torch.sum(ofmap, dim=-1)) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = " + + array_to_cstr(ifmap) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_weights_dram[{co}][{ci}][{fh}][{fw}] = " + + array_to_cstr(weights) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ofmap_dram[{oh}][{ow}][{co}] = " + + array_to_cstr(ofmap) + + ";\n\n\n" + ) + + return layer_str + + +def emit_linear_layer(input, weights, ofmap): + + layer_str = "" + return layer_str + + +def emit_GEMM_layer(name="gemm", **kwargs): + mat_A = kwargs["A"] + mat_B = kwargs["B"] + mat_C = kwargs["C"] + result = kwargs["result"] + + m = kwargs["M"] + n = kwargs["N"] + k = kwargs["K"] + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"const gemm_layer {name}_l = {{\n" + layer_str += f"\t.M = {m},\n" + layer_str += f"\t.N = {n},\n" + layer_str += f"\t.K = {k},\n" + layer_str += f'\t.TA = {int(kwargs["ta"])},\n' + layer_str += f'\t.TB = {int(kwargs["tb"])},\n' + layer_str += f'\t.ALPHA = {kwargs["alpha"]},\n' + layer_str += f'\t.dtype = FP{kwargs["prec"]},\n' + layer_str += f'\t.expand = {kwargs["expand"]}\n' + layer_str += "};\n\n\n" + + ctypes = {"64": "double", "32": "float", "16": "__fp16", "8": "char"} + + dtype = ctypes[str(kwargs["prec"])] + if dtype != "char": + layer_str += ( + f'static {dtype} {name}_A_dram [{m}*{k}] __attribute__((section(".data"))) = ' + + array_to_cstr(mat_A) + + ";\n\n\n" + ) + layer_str += ( + f'static {dtype} {name}_B_dram [{k}*{n}] __attribute__((section(".data"))) = ' + + array_to_cstr(mat_B) + + ";\n\n\n" + ) + layer_str += ( + f'static {dtype} {name}_C_dram [{m}*{n}] __attribute__((section(".data"))) = ' + + array_to_cstr(mat_C) + + ";\n\n\n" + ) + layer_str += ( + f"static const {dtype} {name}_checksum[{m}] = " + + array_to_cstr(torch.sum(result, dim=-1)) + + ";\n\n\n" + ) + else: + layer_str += ( + f"static {dtype} {name}_A_dram [{m}][{k}] = " + + array_to_cstr(kwargs["bits_A"], fmt="char") + + ";\n\n\n" + ) + layer_str += ( + f"static {dtype} {name}_B_dram [{k}][{n}] = " + + array_to_cstr(kwargs["bits_B"], fmt="char") + + ";\n\n\n" + ) + layer_str += ( + f"static {dtype} {name}_C_dram [{m}][{n}] = " + + array_to_cstr(kwargs["bits_C"], fmt="char") + + ";\n\n\n" + ) + + return layer_str + + +def emit_batchnorm_layer(name="batchnorm", **kwargs): + + ifmap = kwargs["ifmap"] + ofmap = kwargs["ofmap"] + beta = kwargs["beta"] + gamma = kwargs["gamma"] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"conv_layer {name}_l = {{\n" + layer_str += f"\t.CO = {co},\n" + layer_str += f"\t.CI = {ci},\n" + layer_str += f"\t.IH = {ih},\n" + layer_str += f"\t.IW = {iw},\n" + layer_str += f"\t.OH = {oh},\n" + layer_str += f"\t.OW = {ow},\n" + layer_str += "};\n\n\n" + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += ( + f"static double {name}_checksum[{oh}][{ow}] = " + + array_to_cstr(torch.sum(ofmap, dim=-1)) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = " + + array_to_cstr(ifmap) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_beta_dram[{ci}] = " + array_to_cstr(beta) + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_gamma_dram[{ci}] = " + array_to_cstr(gamma) + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ofmap_dram[{oh}][{ow}][{co}] = " + + array_to_cstr(ofmap) + + ";\n\n\n" + ) + + return layer_str + + +def emit_maxpool_layer(name="maxpool", **kwargs): + + ifmap = kwargs["ifmap"] + ofmap = kwargs["ofmap"] + k = kwargs["kernel_size"] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"conv_layer {name}_l = {{\n" + layer_str += f"\t.CO = {co},\n" + layer_str += f"\t.CI = {ci},\n" + layer_str += f"\t.IH = {ih},\n" + layer_str += f"\t.IW = {iw},\n" + layer_str += f"\t.OH = {oh},\n" + layer_str += f"\t.OW = {ow},\n" + layer_str += f"\t.FH = {k},\n" + layer_str += f"\t.FW = {k},\n" + layer_str += "};\n\n\n" + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += ( + f"static double {name}_checksum[{oh}][{ow}] = " + + array_to_cstr(torch.sum(ofmap, dim=-1)) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = " + + array_to_cstr(ifmap) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ofmap_dram[{oh}][{ow}][{co}] = " + + array_to_cstr(ofmap) + + ";\n\n\n" + ) + + return layer_str + + +def emit_fusedconv(name="fusedconv", **kwargs): + + ifmap = kwargs["ifmap"] + kernel = kwargs["kernel"] + bn_k = kwargs["bn_k"] + bn_l = kwargs["bn_l"] + ofmap = kwargs["ofmap"] + ofmap_before = kwargs["ofmap_before"] + ifmap_padded = kwargs["ifmap_padded"] + + padding = kwargs["padding"] + + if kwargs["depthwise"]: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + fh, fw, co = kernel.shape + ci = co + ih_pad, iw_pad, _ = ifmap_padded.shape + elif kwargs["chw_layer"]: + ci, ih, iw = ifmap.shape + oh, ow, co = ofmap.shape + co, ci, fh, fw = kernel.shape + _, ih_pad, iw_pad = ifmap_padded.shape + else: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + _, fh, fw, _ = kernel.shape + ih_pad, iw_pad, _ = ifmap_padded.shape + + ctypes = {"64": "double", "32": "float", "16": "__fp16", "8": "char"} + + dtype = ctypes[str(kwargs["prec"])] + + layer_str = "#include \n" + layer_str += '#include "conv2d.h"\n\n' + layer_str += "kernel_fp32 k = {\n" + layer_str += f"\t.ch_in = {ci},\n" + layer_str += f"\t.ch_out = {co},\n" + layer_str += f"\t.dim_in_x = {iw},\n" + layer_str += f"\t.dim_in_y = {ih},\n" + layer_str += f"\t.dim_kernel_x = {fw},\n" + layer_str += f"\t.dim_kernel_y = {fh},\n" + layer_str += f"\t.dim_out_x = {ow},\n" + layer_str += f"\t.dim_out_y = {oh},\n" + layer_str += f'\t.padding_y_top = {padding["padding_y_top"]},\n' + layer_str += f'\t.padding_y_bottom = {padding["padding_y_bottom"]},\n' + layer_str += f'\t.padding_x_left = {padding["padding_x_left"]},\n' + layer_str += f'\t.padding_x_right = {padding["padding_x_right"]},\n' + layer_str += f'\t.stride_x = {kwargs["stride"]["stride_x"]},\n' + layer_str += f'\t.stride_y = {kwargs["stride"]["stride_y"]},\n' + layer_str += f'\t.flag_relu = {kwargs["flags"]["flag_relu"]},\n' + layer_str += f'\t.flag_batch_norm = {kwargs["flags"]["flag_batch_norm"]},\n' + layer_str += ( + f'\t.flag_y_accumulate_start = {kwargs["flags"]["flag_y_accumulate_start"]},\n' + ) + layer_str += ( + f'\t.flag_y_accumulate_end = {kwargs["flags"]["flag_y_accumulate_end"]},\n' + ) + layer_str += "};\n\n" + layer_str += f'uint32_t dw = {kwargs["depthwise"]};\n' + layer_str += f'uint32_t chw_layer = {kwargs["chw_layer"]};\n' + + layer_str += ( + f"static {dtype} {name}_pInBuffer_dram[{ih_pad}][{iw_pad}][{ci}] = " + + array_to_cstr(ifmap_padded) + + ";\n\n" + ) + layer_str += f"static {dtype} {name}_pWeight_dram[{co}][{fh}][{fw}][{ci}] = {array_to_cstr(kernel)};\n\n" + layer_str += f"static {dtype} {name}_lambda_dram[{ci}] = {array_to_cstr(bn_l)};\n\n" + layer_str += f"static {dtype} {name}_kappa_dram[{ci}] = {array_to_cstr(bn_k)};\n\n" + layer_str += f"static {dtype} {name}_pOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap_before)};\n\n" + layer_str += f"static {dtype} {name}_pCheckOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap)};\n\n" + + return layer_str + + +def rand_data_generator(shape, prec, alt=False): + if prec == 64: + return torch.randn(shape, requires_grad=False, dtype=torch.float64), {} + elif prec == 32: + return torch.randn(shape, requires_grad=False, dtype=torch.float32), {} + elif prec == 16: + if alt: + return torch.randn(shape, requires_grad=False, dtype=torch.bfloat16), {} + else: + return torch.randn(shape, requires_grad=False, dtype=torch.float16), {} + elif prec == 8: + sign = torch.randint( + 0, 2, shape, requires_grad=False, dtype=torch.uint8 + ) # -1 or 1 + exponent = torch.randint( + 0, 16, shape, requires_grad=False, dtype=torch.uint8 + ) # < 0b01111 + mantissa = torch.randint( + 0, 4, shape, requires_grad=False, dtype=torch.uint8 + ) # can be arbitrary + bits = {"sign": sign, "exponent": exponent, "mantissa": mantissa} + # TODO: not actually correct + return ((-1.0) ** sign.double()) * (2.0 ** (exponent.double() - 15.0)) * ( + 1.0 + mantissa.double() / (2**2) + ), bits + + +def conv2d(ifmap, weights, padding=1, stride=1): + n, ci, ih, iw = ifmap.shape + co, _, fh, fw = weights.shape + + conv2d = nn.Conv2d(ci, co, (fh, fw), padding=((fh - 1) // 2, (fw - 1) // 2)) + conv2d.weight = nn.Parameter(weights, requires_grad=False) + conv2d.bias = nn.Parameter( + torch.zeros_like(conv2d.bias, dtype=weights.dtype), requires_grad=False + ) + ofmap = conv2d(ifmap) + + return ofmap + + +def max_pooling(ifmap, kernel): + n, ci, ih, iw = ifmap.shape + max_pool = nn.MaxPool2d(kernel_size=kernel) + ofmap = max_pool(ifmap) + + return ofmap + + +def batchnorm(ifmap): + n, ci, ih, iw = ifmap.shape + bn = torch.nn.BatchNorm2d(ci) + bn.weight.requires_grad = False + bn.bias.requires_grad = False + running_mean = torch.randn_like(bn.running_mean, requires_grad=False) + running_var = torch.rand_like(bn.running_var, requires_grad=False) + gamma = bn.weight / torch.sqrt(running_var + bn.eps) + beta = bn.bias - running_mean * bn.weight / torch.sqrt(running_var + bn.eps) + ofmap = ifmap * gamma.unsqueeze(-1).unsqueeze(-1) + beta.unsqueeze(-1).unsqueeze(-1) + + return ofmap, gamma, beta + + +def fused_conv( + ifmap, weights, bn_k, bn_l, padding, stride, bn, relu, accumulate, depthwise +): + + ih, iw, ci = ifmap.shape + if not depthwise: + co, fh, fw, _ = weights.shape + else: + fh, fw, co = weights.shape + ci = co + + ifmap_padded = torch.zeros( + ih + padding["padding_y_top"] + padding["padding_y_bottom"], + iw + padding["padding_x_left"] + padding["padding_x_right"], + ci, + requires_grad=False, + dtype=ifmap.dtype, + ) + ifmap_padded[ + padding["padding_y_top"] : ih + padding["padding_y_top"], + padding["padding_x_left"] : iw + padding["padding_x_left"], + ] = ifmap + + # Don't cover undefined behaviour when there are steps without a complete kernel window + if (ifmap_padded.shape[0] - (fh - 1) - 1) % stride["stride_y"] != 0: + print("Warning: rounding h output dimension") + if (ifmap_padded.shape[1] - (fw - 1) - 1) % stride["stride_x"] != 0: + print("Warning: rounding w output dimension") + + ofmap = torch.zeros( + (ifmap_padded.shape[0] - (fh - 1) - 1) // stride["stride_y"] + 1, + (ifmap_padded.shape[1] - (fw - 1) - 1) // stride["stride_x"] + 1, + co, + ) + if accumulate: + ofmap_before = torch.randn_like(ofmap, requires_grad=False) + else: + ofmap_before = torch.zeros_like(ofmap, requires_grad=False) + + if verbose: + print(ifmap.shape, ifmap_padded.shape, ofmap.shape) + + if depthwise: + # depthwise Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride["stride_y"]): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride["stride_x"]): + for c in range(co): + ofmap[ + h // stride["stride_y"], w // stride["stride_x"], c + ] = torch.dot( + ifmap_padded[h : h + fh, w : w + fw, c].flatten(), + weights[:, :, c].flatten(), + ) + else: + # Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride["stride_y"]): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride["stride_x"]): + for c in range(co): + ofmap[ + h // stride["stride_y"], w // stride["stride_x"], c + ] = torch.dot( + ifmap_padded[h : h + fh, w : w + fw].flatten(), + weights[c].flatten(), + ) + + ofmap += ofmap_before + + # BatchNorm + if bn: + ofmap = ofmap * bn_k + bn_l + + # ReLU + if relu: + ofmap = torch.nn.functional.relu(ofmap) + + return ofmap, ofmap_before, ifmap_padded + + +def main(): + + parser = argparse.ArgumentParser(description="Generate data for kernels") + parser.add_argument( + "-c", + "--cfg", + type=pathlib.Path, + required=True, + help="Select param config file kernel", + ) + parser.add_argument("-v", "--verbose", action="store_true", help="Set verbose") + + args = parser.parse_args() + + global verbose + verbose = args.verbose + + with args.cfg.open() as f: + param = hjson.loads(f.read()) + + if param["prec"] == 64: + dtype = torch.float64 + elif param["prec"] == 16: + dtype = torch.float16 + elif param["prec"] == 8: + dtype = None + else: + dtype = torch.float32 + + if param["kernel"] == "Conv2d": + ifmap = torch.randn( + 1, + param["channels"]["in"], + param["input_dim"]["height"], + param["input_dim"]["width"], + requires_grad=False, + dtype=dtype, + ) + weights = torch.randn( + param["channels"]["out"], + param["channels"]["in"], + param["filter"]["height"], + param["filter"]["width"], + requires_grad=False, + dtype=dtype, + ) + + ofmap = conv2d( + ifmap, + weights, + padding=param["filter"]["padding"], + stride=param["filter"]["stride"], + ) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + weights = weights.permute(0, 2, 3, 1) + kwargs = {"ifmap": ifmap, "weights": weights, "ofmap": ofmap} + emit_header_file("Conv2d", **kwargs) + + elif param["kernel"] == "GEMM": + mat_A, bits_A = rand_data_generator((param["M"], param["K"]), param["prec"]) + mat_B, bits_B = rand_data_generator((param["K"], param["N"]), param["prec"]) + mat_C, bits_C = rand_data_generator((param["M"], param["N"]), param["prec"]) + + result = param["alpha"] * mat_C + torch.matmul(mat_A, mat_B) + + if param["transpose_A"]: + mat_A = mat_A.T + if param["transpose_B"]: + mat_B = mat_B.T + + kwargs = { + "A": mat_A, + "B": mat_B, + "C": mat_C, + "result": result, + "M": param["M"], + "N": param["N"], + "K": param["K"], + "ta": param["transpose_A"], + "tb": param["transpose_B"], + "alpha": param["alpha"], + "prec": param["prec"], + "expand": param["expand"], + "bits_A": bits_A, + "bits_B": bits_B, + "bits_C": bits_C, + } + + emit_header_file("GEMM", **kwargs) + + elif param["kernel"] == "BatchNorm": + ifmap = torch.randn( + 1, + param["channels"]["in"], + param["input_dim"]["height"], + param["input_dim"]["width"], + requires_grad=False, + dtype=dtype, + ) + + ofmap, gamma, beta = batchnorm(ifmap) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {"ifmap": ifmap, "beta": beta, "gamma": gamma, "ofmap": ofmap} + emit_header_file("BatchNorm", **kwargs) + + elif param["kernel"] == "MaxPool": + ifmap = torch.randn( + 1, + param["channels"]["in"], + param["input_dim"]["height"], + param["input_dim"]["width"], + requires_grad=False, + dtype=dtype, + ) + + ofmap = max_pooling(ifmap, param["kernel_size"]) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {"ifmap": ifmap, "ofmap": ofmap, "kernel_size": param["kernel_size"]} + emit_header_file("MaxPool", **kwargs) + + elif param["kernel"] == "FusedConv": + ifmap = torch.randn( + param["dim_in_y"], + param["dim_in_x"], + param["ch_in"], + requires_grad=False, + dtype=dtype, + ) + if not param["depthwise"]: + kernel = torch.randn( + param["ch_out"], + param["dim_kernel_y"], + param["dim_kernel_x"], + param["ch_in"], + requires_grad=False, + dtype=dtype, + ) + else: + kernel = torch.randn( + param["dim_kernel_y"], + param["dim_kernel_x"], + param["ch_in"], + requires_grad=False, + dtype=dtype, + ) + + bn_k = torch.randn(param["ch_out"], requires_grad=False) + bn_l = torch.randn(param["ch_out"], requires_grad=False) + + ofmap, ofmap_before, ifmap_padded = fused_conv( + ifmap, + kernel, + bn_k, + bn_l, + param["padding"], + param["stride"], + param["flags"]["flag_batch_norm"], + param["flags"]["flag_relu"], + not param["flags"]["flag_y_accumulate_start"], + param["depthwise"], + ) + + if param["chw_layer"]: + ifmap = ifmap.permute(2, 0, 1) + ifmap_padded = ifmap_padded.permute(2, 0, 1) + kernel = kernel.permute(0, 3, 1, 2) + + kwargs = { + "ifmap": ifmap, + "ifmap_padded": ifmap_padded, + "ofmap": ofmap, + "ofmap_before": ofmap_before, + "kernel": kernel, + "bn_k": bn_k, + "bn_l": bn_l, + "padding": param["padding"], + "stride": param["stride"], + "prec": param["prec"], + "flags": param["flags"], + "depthwise": param["depthwise"], + "chw_layer": param["chw_layer"], + } + emit_header_file("FusedConv", **kwargs) + + else: + print("No valid kernel selected") + + +if __name__ == "__main__": + main() diff --git a/sw/spatzBenchmarks/dp-fmatmul-8x2vl/script/matmul.json b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/script/matmul.json new file mode 100644 index 00000000..201f68fd --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmatmul-8x2vl/script/matmul.json @@ -0,0 +1,17 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Solderpad Hardware License, Version 0.51, see LICENSE for details. +// SPDX-License-Identifier: SHL-0.51 + +// Parameters for a GEMM + +{ + kernel: "GEMM" + M: 64, + N: 64, + K: 64, + alpha: 0, + transpose_A: false, + transpose_B: false, + prec: 64, + expand: 0 +} diff --git a/sw/spatzBenchmarks/dp-fmxu-toy/data/.gitignore b/sw/spatzBenchmarks/dp-fmxu-toy/data/.gitignore new file mode 100644 index 00000000..dacc7e49 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmxu-toy/data/.gitignore @@ -0,0 +1 @@ +data_gemm.h diff --git a/sw/spatzBenchmarks/dp-fmxu-toy/data/data_8_4_4.h b/sw/spatzBenchmarks/dp-fmxu-toy/data/data_8_4_4.h new file mode 100644 index 00000000..35327728 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmxu-toy/data/data_8_4_4.h @@ -0,0 +1,53 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = {.M = 8, + .N = 4, + .K = 4, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0}; + +static double gemm_A_dram[8 * 4] __attribute__((section(".data"))) = { + 0.2995562877502637, 0.24237779080894106, 0.28320739441795323, + -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, + -1.7903080050220619, -1.748402801489203, 0.17347640142361004, + 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, + -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, + -1.4920727283504345, 0.4212009947066779, 1.504572275678796, + 1.2715909667771088, 0.618669993885617, -0.03720300727052493, + 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, + 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, + 0.875893884648022, 0.39238484373268534, 1.108461181451433, + 0.8651734647119074, 0.855215961472287}; + +static double gemm_B_dram[4 * 4] __attribute__((section(".data"))) = { + 0.6551143052731048, 1.9312142505772192, -0.28692658848988356, + -0.226715890674857, 0.6284835523998145, 0.14532018661151294, + 0.6076122224111371, -0.21202045663845112, -1.2405276437359183, + -0.6426551784819938, 0.6058412077786697, 0.5717787885763634, + -0.32069813902911876, 0.8636024370428342, 1.3109621860249783, + 0.6217140784054469}; + +static double gemm_C_dram[8 * 4] __attribute__((section(".data"))) = { + 0.16048920142982762, -0.9214988800859956, -1.108152357089335, + -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, + -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, + 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, + 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, + -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, + -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, + -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, + 0.87049067708538, 0.42876533202174155, -1.0822943886075476, + 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, + 0.9723184024569489, 2.5161385989502594}; + +static const double gemm_checksum[8] = {0.9315521338675612, -3.7156475744497075, + 1.6987138618089972, 1.137088160054231, + 6.651906152423485, 2.433759800069301, + 0.2363944665214806, 5.019028241847918}; diff --git a/sw/spatzBenchmarks/dp-fmxu-toy/data/layer.h b/sw/spatzBenchmarks/dp-fmxu-toy/data/layer.h new file mode 100644 index 00000000..ba49ef72 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmxu-toy/data/layer.h @@ -0,0 +1,134 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +typedef enum { FP64 = 8, FP32 = 4, FP16 = 2, FP8 = 1 } precision_t; + +/** + * @struct gemm_layer_struct + * @brief This structure contains all parameters necessary for GEMM. + * @var gemm_layer_struct::M + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::M_p + * M divided by number of compute cores + * @var gemm_layer_struct::N + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::K + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::TA + * Transpose matrix A + * @var gemm_layer_struct::TB + * Transpose matrix B + * @var gemm_layer_struct::TILE_M + * Tile factor across M dimension + * @var gemm_layer_struct::TILE_N + * Tile factor across N dimension + * @var gemm_layer_struct::TILE_K + * Tile factor across K dimension + * @var gemm_layer_struct::A + * Pointer to matrix A + * @var gemm_layer_struct::B + * Pointer to matrix B + * @var gemm_layer_struct::C + * Pointer to matrix C + * @var gemm_layer_struct::ALPHA + * constant factor: A * B + ALPHA * C + * @var gemm_layer_struct::dtype + * Precision of GEMM + * @var gemm_layer_struct::expand + * Use expanding DOTP instructions + */ +typedef struct gemm_layer_struct { + uint32_t M; + uint32_t M_p; + uint32_t N; + uint32_t K; + + uint32_t TA; + uint32_t TB; + + uint32_t TILE_M; + uint32_t TILE_N; + uint32_t TILE_K; + + double *A; + double *B; + double *C; + + uint32_t ALPHA; + + precision_t dtype; + uint32_t expand; +} gemm_layer; + +/** + * @struct conv_layer_struct + * @brief This structure contains all parameters necessary for Convolutional + * layers + * @var conv_layer_struct::CO + * Number of output channels + * @var conv_layer_struct::CI + * Number of input channels + * @var conv_layer_struct::IH + * Height of input feature map + * @var conv_layer_struct::IW + * Width of input feature map + * @var conv_layer_struct::OH + * Height of output feature map + * @var conv_layer_struct::OW + * Width of output feature map + * @var conv_layer_struct::FH + * Height of filter + * @var conv_layer_struct::FW + * Width of filter + * @var conv_layer_struct::pad + * Padding on all sides + * @var conv_layer_struct::ifmap + * Pointer to input feature map + * @var conv_layer_struct::weights + * Pointer to weights + * @var conv_layer_struct::ofmap + * Pointer to output feature map + * @var conv_layer_struct::TILE_CI + * Tiling factor of input channel + * @var conv_layer_struct::cluster2cluster + * Flag for enabling cluster 2 cluster communication + * @var conv_layer_struct::im2col + * Flag for enabling im2col + GEMM + * @var conv_layer_struct::gamma + * Pointer to gamma for BatchNorm + * @var conv_layer_struct::beta + * Pointer to beta for BatchNorm + * @var gemm_layer_struct::dtype + * Precision of Convolution layer + */ +typedef struct conv_layer_struct { + // CONV2D + uint32_t CO; + uint32_t CI; + uint32_t IH; + uint32_t IW; + uint32_t OH; + uint32_t OW; + uint32_t FH; + uint32_t FW; + uint32_t pad; + + double *ifmap; + double *weights; + double *ofmap; + + uint32_t TILE_CI; + uint32_t cluster2cluster; + uint32_t im2col; + + // BATCHNORM + double *gamma; + double *beta; + + precision_t dtype; +} conv_layer; diff --git a/sw/spatzBenchmarks/dp-fmxu-toy/kernel/mxmatmul.c b/sw/spatzBenchmarks/dp-fmxu-toy/kernel/mxmatmul.c new file mode 100644 index 00000000..7710fe9e --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmxu-toy/kernel/mxmatmul.c @@ -0,0 +1,93 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include "mxmatmul.h" +#ifdef MEMPOOL +#include "runtime.h" +#endif +#define MIN(a, b) ((a) < (b) ? (a) : (b)) + +#define TILE_LD_A +#define TILE_LD_B +#define MXMACC_TEST + +void matmul_tiled_load_store_test(double *c, const double *a, const double *b, + const unsigned int dim) { + + /* Vector Length Setting*/ + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(16)); + + /* Tile Load Settings*/ + // asm volatile("msettilem t1, %0" ::"r" (8):"t1"); + // asm volatile("msettilen t2, %0" ::"r" (8):"t2"); + // asm volatile("msettilek t3, %0" ::"r" (8):"t3"); + + /* Clean up result register*/ + asm volatile("vmv.v.i v0, 0"); + + /* Input and Output address*/ + const double *a_ = a; + const double *c_ = c; + + /* Load and Store Testing*/ + // Load test (Tile load + Vector store) + // asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(dim)); + // asm volatile("vse64.v v0, (%0);" ::"r"(c_)); + + // Store test (Vector load + Tile store) + asm volatile("vle64.v v0, (%0);" ::"r"(a_)); + asm volatile("mse64.v.c v0, (%0), %1;" ::"r"(c_), "r"(8)); +} + +void matmul_tiled_mxmacc_test(double *c, const double *a, const double *b, + const unsigned int dim) { + + /* Vector Length Setting*/ + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(32)); + const double *a_ = a; + const double *b_ = b; + const double *c_ = c; + + /* Tile Load A*/ +#ifdef TILE_LD_A + asm volatile("msettilem t1, %0" ::"r"(8) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(4) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(4) : "t3"); + asm volatile("vmv.v.i v0, 0"); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(4)); +// asm volatile("vse64.v v0, (%0);" ::"r"(c_)); // Optional Print +#endif + + /* Tile Load B*/ +#ifdef TILE_LD_B + asm volatile("msettilem t1, %0" ::"r"(8) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(4) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(4) : "t3"); + asm volatile("vmv.v.i v4, 0"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(4)); +// asm volatile("vse64.v v4, (%0);" ::"r"(c_)); // Optional Print +#endif + + /* mxmacc Testing*/ +#ifdef MXMACC_TEST + asm volatile("vmv.v.i v8, 0"); + asm volatile("mxfmacc.vv v8, v0, v4"); + asm volatile("mse64.v.c v8, (%0), %1;" ::"r"(c_), "r"(4)); + // asm volatile("vse64.v v8, (%0);" ::"r"(c_)); // Optional Print +#endif +} diff --git a/sw/spatzBenchmarks/dp-fmxu-toy/kernel/mxmatmul.h b/sw/spatzBenchmarks/dp-fmxu-toy/kernel/mxmatmul.h new file mode 100644 index 00000000..74038de8 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmxu-toy/kernel/mxmatmul.h @@ -0,0 +1,29 @@ +// Copyright 2021 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#ifndef MXMATMUL_H +#define MXMATMUL_H + +#include +void matmul_tiled_load_store_test(double *c, const double *a, const double *b, + const unsigned int dim) + __attribute__((always_inline)); +void matmul_tiled_mxmacc_test(double *c, const double *a, const double *b, + const unsigned int dim) + __attribute__((always_inline)); +#endif diff --git a/sw/spatzBenchmarks/dp-fmxu-toy/main.c b/sw/spatzBenchmarks/dp-fmxu-toy/main.c new file mode 100644 index 00000000..d39c5e0e --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmxu-toy/main.c @@ -0,0 +1,146 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich + +#include +#include +#include + +#include "data/data_8_4_4.h" +#include "kernel/mxmatmul.c" + +// Enable result check +#define CHECK + +// Initialize the matrices +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +// Verify the matrices +int verify_matrix(double *matrix, const double *checksum, + const unsigned int num_rows, const unsigned int num_columns) { + for (unsigned int i = 0; i < num_rows; ++i) { + double sum = 0; + for (unsigned int j = 0; j < num_columns; ++j) { + // printf("The matrix result at row %d column %d is %d. \n", i, j, + // matrix[i * num_columns + j] ); + sum += (double)matrix[i * num_columns + j]; + } + printf("%d times sum checking. \n", i); + printf("The golden is %d. \n", checksum[i]); + printf("The sum is %d. \n", sum); + if (sum != checksum[i]) { + return i == 0 ? -1 : (int)i; + } + } + return 0; +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + unsigned int dim = 4; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + if (cid == 0) { + for (unsigned int i = 0; i < 32; i++) { + c[i] = 0; + // printf("The martix a[%d]=%x, c[%d]=%x, \n", i, a[i], i, c[i]); + } + // matmul_tiled_load_store_test(c, a, b, dim); + matmul_tiled_mxmacc_test(c, a, b, dim); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + double checksum = 0; + if (cid == 0) { + // Print first 32 elements of matrix C + for (unsigned int i = 0; i < 32; i++) { + printf("The martix c[%d]=%f, \n", i, c[i]); + } +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-fmxu-toy/script/gen_data.py b/sw/spatzBenchmarks/dp-fmxu-toy/script/gen_data.py new file mode 100644 index 00000000..42ace34e --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmxu-toy/script/gen_data.py @@ -0,0 +1,696 @@ +#!/usr/bin/env python3 +# Copyright 2022 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Author: Tim Fischer + +import numpy as np +import torch +import torch.nn as nn +import argparse +import pathlib +import hjson + +np.random.seed(42) +torch.manual_seed(42) + +global verbose + + +def array_to_cstr(a, fmt=float): + out = "{" + if fmt == float: + if isinstance(a, np.ndarray): + a = a.flat + if isinstance(a, torch.Tensor): + a = a.numpy().flat + for el in a: + out += "{}, ".format(el) + else: + for sign, exp, mant in zip( + a["sign"].numpy().flat, + a["exponent"].numpy().flat, + a["mantissa"].numpy().flat, + ): + value = sign * 2**7 + exp * 2**2 + mant + out += "0x{:02x}, ".format(value) + out = out[:-2] + "}" + return out + + +def emit_header_file(layer_type: str, **kwargs): + + file_path = pathlib.Path(__file__).parent.parent / "data" + emit_str = ( + "// Copyright 2022 ETH Zurich and University of Bologna.\n" + + "// Licensed under the Apache License, Version 2.0, see LICENSE for details.\n" + + "// SPDX-License-Identifier: Apache-2.0\n\n" + ) + + if layer_type == "Conv2d": + file = file_path / "data_conv2d.h" + emit_str += emit_conv2d_layer(**kwargs) + elif layer_type == "GEMM": + file = file_path / ("data_" + str(kwargs["M"]) + "_" + str(kwargs["N"]) + "_" + str(kwargs["K"]) + ".h") + emit_str += emit_GEMM_layer(**kwargs) + elif layer_type == "BatchNorm": + file = file_path / "data_batchnorm.h" + emit_str += emit_batchnorm_layer(**kwargs) + elif layer_type == "MaxPool": + file = file_path / "data_maxpool.h" + emit_str += emit_maxpool_layer(**kwargs) + elif layer_type == "FusedConv": + file = file_path / "data_fusedconv.h" + emit_str += emit_fusedconv(**kwargs) + with file.open("w") as f: + f.write(emit_str) + + +def emit_conv2d_layer(name="conv2d", **kwargs): + ifmap = kwargs["ifmap"] + ofmap = kwargs["ofmap"] + weights = kwargs["weights"] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + _, fh, fw, _ = weights.shape + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"conv_layer {name}_l = {{\n" + layer_str += f"\t.CO = {co},\n" + layer_str += f"\t.CI = {ci},\n" + layer_str += f"\t.IH = {ih},\n" + layer_str += f"\t.IW = {iw},\n" + layer_str += f"\t.OH = {oh},\n" + layer_str += f"\t.OW = {ow},\n" + layer_str += f"\t.FH = {fh},\n" + layer_str += f"\t.FW = {fw}\n" + layer_str += "};\n\n\n" + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += ( + f"static double {name}_checksum[{oh}][{ow}] = " + + array_to_cstr(torch.sum(ofmap, dim=-1)) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = " + + array_to_cstr(ifmap) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_weights_dram[{co}][{ci}][{fh}][{fw}] = " + + array_to_cstr(weights) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ofmap_dram[{oh}][{ow}][{co}] = " + + array_to_cstr(ofmap) + + ";\n\n\n" + ) + + return layer_str + + +def emit_linear_layer(input, weights, ofmap): + + layer_str = "" + return layer_str + + +def emit_GEMM_layer(name="gemm", **kwargs): + mat_A = kwargs["A"] + mat_B = kwargs["B"] + mat_C = kwargs["C"] + result = kwargs["result"] + + m = kwargs["M"] + n = kwargs["N"] + k = kwargs["K"] + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"const gemm_layer {name}_l = {{\n" + layer_str += f"\t.M = {m},\n" + layer_str += f"\t.N = {n},\n" + layer_str += f"\t.K = {k},\n" + layer_str += f'\t.TA = {int(kwargs["ta"])},\n' + layer_str += f'\t.TB = {int(kwargs["tb"])},\n' + layer_str += f'\t.ALPHA = {kwargs["alpha"]},\n' + layer_str += f'\t.dtype = FP{kwargs["prec"]},\n' + layer_str += f'\t.expand = {kwargs["expand"]}\n' + layer_str += "};\n\n\n" + + ctypes = {"64": "double", "32": "float", "16": "__fp16", "8": "char"} + + dtype = ctypes[str(kwargs["prec"])] + if dtype != "char": + layer_str += ( + f'static {dtype} {name}_A_dram [{m}*{k}] __attribute__((section(".data"))) = ' + + array_to_cstr(mat_A) + + ";\n\n\n" + ) + layer_str += ( + f'static {dtype} {name}_B_dram [{k}*{n}] __attribute__((section(".data"))) = ' + + array_to_cstr(mat_B) + + ";\n\n\n" + ) + layer_str += ( + f'static {dtype} {name}_C_dram [{m}*{n}] __attribute__((section(".data"))) = ' + + array_to_cstr(mat_C) + + ";\n\n\n" + ) + layer_str += ( + f"static const {dtype} {name}_checksum[{m}] = " + + array_to_cstr(torch.sum(result, dim=-1)) + + ";\n\n\n" + ) + else: + layer_str += ( + f"static {dtype} {name}_A_dram [{m}][{k}] = " + + array_to_cstr(kwargs["bits_A"], fmt="char") + + ";\n\n\n" + ) + layer_str += ( + f"static {dtype} {name}_B_dram [{k}][{n}] = " + + array_to_cstr(kwargs["bits_B"], fmt="char") + + ";\n\n\n" + ) + layer_str += ( + f"static {dtype} {name}_C_dram [{m}][{n}] = " + + array_to_cstr(kwargs["bits_C"], fmt="char") + + ";\n\n\n" + ) + + return layer_str + + +def emit_batchnorm_layer(name="batchnorm", **kwargs): + + ifmap = kwargs["ifmap"] + ofmap = kwargs["ofmap"] + beta = kwargs["beta"] + gamma = kwargs["gamma"] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"conv_layer {name}_l = {{\n" + layer_str += f"\t.CO = {co},\n" + layer_str += f"\t.CI = {ci},\n" + layer_str += f"\t.IH = {ih},\n" + layer_str += f"\t.IW = {iw},\n" + layer_str += f"\t.OH = {oh},\n" + layer_str += f"\t.OW = {ow},\n" + layer_str += "};\n\n\n" + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += ( + f"static double {name}_checksum[{oh}][{ow}] = " + + array_to_cstr(torch.sum(ofmap, dim=-1)) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = " + + array_to_cstr(ifmap) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_beta_dram[{ci}] = " + array_to_cstr(beta) + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_gamma_dram[{ci}] = " + array_to_cstr(gamma) + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ofmap_dram[{oh}][{ow}][{co}] = " + + array_to_cstr(ofmap) + + ";\n\n\n" + ) + + return layer_str + + +def emit_maxpool_layer(name="maxpool", **kwargs): + + ifmap = kwargs["ifmap"] + ofmap = kwargs["ofmap"] + k = kwargs["kernel_size"] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = "" + layer_str += '#include "layer.h"\n\n' + layer_str += f"conv_layer {name}_l = {{\n" + layer_str += f"\t.CO = {co},\n" + layer_str += f"\t.CI = {ci},\n" + layer_str += f"\t.IH = {ih},\n" + layer_str += f"\t.IW = {iw},\n" + layer_str += f"\t.OH = {oh},\n" + layer_str += f"\t.OW = {ow},\n" + layer_str += f"\t.FH = {k},\n" + layer_str += f"\t.FW = {k},\n" + layer_str += "};\n\n\n" + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += ( + f"static double {name}_checksum[{oh}][{ow}] = " + + array_to_cstr(torch.sum(ofmap, dim=-1)) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = " + + array_to_cstr(ifmap) + + ";\n\n\n" + ) + layer_str += ( + f"static double {name}_ofmap_dram[{oh}][{ow}][{co}] = " + + array_to_cstr(ofmap) + + ";\n\n\n" + ) + + return layer_str + + +def emit_fusedconv(name="fusedconv", **kwargs): + + ifmap = kwargs["ifmap"] + kernel = kwargs["kernel"] + bn_k = kwargs["bn_k"] + bn_l = kwargs["bn_l"] + ofmap = kwargs["ofmap"] + ofmap_before = kwargs["ofmap_before"] + ifmap_padded = kwargs["ifmap_padded"] + + padding = kwargs["padding"] + + if kwargs["depthwise"]: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + fh, fw, co = kernel.shape + ci = co + ih_pad, iw_pad, _ = ifmap_padded.shape + elif kwargs["chw_layer"]: + ci, ih, iw = ifmap.shape + oh, ow, co = ofmap.shape + co, ci, fh, fw = kernel.shape + _, ih_pad, iw_pad = ifmap_padded.shape + else: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + _, fh, fw, _ = kernel.shape + ih_pad, iw_pad, _ = ifmap_padded.shape + + ctypes = {"64": "double", "32": "float", "16": "__fp16", "8": "char"} + + dtype = ctypes[str(kwargs["prec"])] + + layer_str = "#include \n" + layer_str += '#include "conv2d.h"\n\n' + layer_str += "kernel_fp32 k = {\n" + layer_str += f"\t.ch_in = {ci},\n" + layer_str += f"\t.ch_out = {co},\n" + layer_str += f"\t.dim_in_x = {iw},\n" + layer_str += f"\t.dim_in_y = {ih},\n" + layer_str += f"\t.dim_kernel_x = {fw},\n" + layer_str += f"\t.dim_kernel_y = {fh},\n" + layer_str += f"\t.dim_out_x = {ow},\n" + layer_str += f"\t.dim_out_y = {oh},\n" + layer_str += f'\t.padding_y_top = {padding["padding_y_top"]},\n' + layer_str += f'\t.padding_y_bottom = {padding["padding_y_bottom"]},\n' + layer_str += f'\t.padding_x_left = {padding["padding_x_left"]},\n' + layer_str += f'\t.padding_x_right = {padding["padding_x_right"]},\n' + layer_str += f'\t.stride_x = {kwargs["stride"]["stride_x"]},\n' + layer_str += f'\t.stride_y = {kwargs["stride"]["stride_y"]},\n' + layer_str += f'\t.flag_relu = {kwargs["flags"]["flag_relu"]},\n' + layer_str += f'\t.flag_batch_norm = {kwargs["flags"]["flag_batch_norm"]},\n' + layer_str += ( + f'\t.flag_y_accumulate_start = {kwargs["flags"]["flag_y_accumulate_start"]},\n' + ) + layer_str += ( + f'\t.flag_y_accumulate_end = {kwargs["flags"]["flag_y_accumulate_end"]},\n' + ) + layer_str += "};\n\n" + layer_str += f'uint32_t dw = {kwargs["depthwise"]};\n' + layer_str += f'uint32_t chw_layer = {kwargs["chw_layer"]};\n' + + layer_str += ( + f"static {dtype} {name}_pInBuffer_dram[{ih_pad}][{iw_pad}][{ci}] = " + + array_to_cstr(ifmap_padded) + + ";\n\n" + ) + layer_str += f"static {dtype} {name}_pWeight_dram[{co}][{fh}][{fw}][{ci}] = {array_to_cstr(kernel)};\n\n" + layer_str += f"static {dtype} {name}_lambda_dram[{ci}] = {array_to_cstr(bn_l)};\n\n" + layer_str += f"static {dtype} {name}_kappa_dram[{ci}] = {array_to_cstr(bn_k)};\n\n" + layer_str += f"static {dtype} {name}_pOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap_before)};\n\n" + layer_str += f"static {dtype} {name}_pCheckOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap)};\n\n" + + return layer_str + + +def rand_data_generator(shape, prec, alt=False): + if prec == 64: + return torch.randn(shape, requires_grad=False, dtype=torch.float64), {} + elif prec == 32: + return torch.randn(shape, requires_grad=False, dtype=torch.float32), {} + elif prec == 16: + if alt: + return torch.randn(shape, requires_grad=False, dtype=torch.bfloat16), {} + else: + return torch.randn(shape, requires_grad=False, dtype=torch.float16), {} + elif prec == 8: + sign = torch.randint( + 0, 2, shape, requires_grad=False, dtype=torch.uint8 + ) # -1 or 1 + exponent = torch.randint( + 0, 16, shape, requires_grad=False, dtype=torch.uint8 + ) # < 0b01111 + mantissa = torch.randint( + 0, 4, shape, requires_grad=False, dtype=torch.uint8 + ) # can be arbitrary + bits = {"sign": sign, "exponent": exponent, "mantissa": mantissa} + # TODO: not actually correct + return ((-1.0) ** sign.double()) * (2.0 ** (exponent.double() - 15.0)) * ( + 1.0 + mantissa.double() / (2**2) + ), bits + + +def conv2d(ifmap, weights, padding=1, stride=1): + n, ci, ih, iw = ifmap.shape + co, _, fh, fw = weights.shape + + conv2d = nn.Conv2d(ci, co, (fh, fw), padding=((fh - 1) // 2, (fw - 1) // 2)) + conv2d.weight = nn.Parameter(weights, requires_grad=False) + conv2d.bias = nn.Parameter( + torch.zeros_like(conv2d.bias, dtype=weights.dtype), requires_grad=False + ) + ofmap = conv2d(ifmap) + + return ofmap + + +def max_pooling(ifmap, kernel): + n, ci, ih, iw = ifmap.shape + max_pool = nn.MaxPool2d(kernel_size=kernel) + ofmap = max_pool(ifmap) + + return ofmap + + +def batchnorm(ifmap): + n, ci, ih, iw = ifmap.shape + bn = torch.nn.BatchNorm2d(ci) + bn.weight.requires_grad = False + bn.bias.requires_grad = False + running_mean = torch.randn_like(bn.running_mean, requires_grad=False) + running_var = torch.rand_like(bn.running_var, requires_grad=False) + gamma = bn.weight / torch.sqrt(running_var + bn.eps) + beta = bn.bias - running_mean * bn.weight / torch.sqrt(running_var + bn.eps) + ofmap = ifmap * gamma.unsqueeze(-1).unsqueeze(-1) + beta.unsqueeze(-1).unsqueeze(-1) + + return ofmap, gamma, beta + + +def fused_conv( + ifmap, weights, bn_k, bn_l, padding, stride, bn, relu, accumulate, depthwise +): + + ih, iw, ci = ifmap.shape + if not depthwise: + co, fh, fw, _ = weights.shape + else: + fh, fw, co = weights.shape + ci = co + + ifmap_padded = torch.zeros( + ih + padding["padding_y_top"] + padding["padding_y_bottom"], + iw + padding["padding_x_left"] + padding["padding_x_right"], + ci, + requires_grad=False, + dtype=ifmap.dtype, + ) + ifmap_padded[ + padding["padding_y_top"] : ih + padding["padding_y_top"], + padding["padding_x_left"] : iw + padding["padding_x_left"], + ] = ifmap + + # Don't cover undefined behaviour when there are steps without a complete kernel window + if (ifmap_padded.shape[0] - (fh - 1) - 1) % stride["stride_y"] != 0: + print("Warning: rounding h output dimension") + if (ifmap_padded.shape[1] - (fw - 1) - 1) % stride["stride_x"] != 0: + print("Warning: rounding w output dimension") + + ofmap = torch.zeros( + (ifmap_padded.shape[0] - (fh - 1) - 1) // stride["stride_y"] + 1, + (ifmap_padded.shape[1] - (fw - 1) - 1) // stride["stride_x"] + 1, + co, + ) + if accumulate: + ofmap_before = torch.randn_like(ofmap, requires_grad=False) + else: + ofmap_before = torch.zeros_like(ofmap, requires_grad=False) + + if verbose: + print(ifmap.shape, ifmap_padded.shape, ofmap.shape) + + if depthwise: + # depthwise Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride["stride_y"]): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride["stride_x"]): + for c in range(co): + ofmap[ + h // stride["stride_y"], w // stride["stride_x"], c + ] = torch.dot( + ifmap_padded[h : h + fh, w : w + fw, c].flatten(), + weights[:, :, c].flatten(), + ) + else: + # Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride["stride_y"]): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride["stride_x"]): + for c in range(co): + ofmap[ + h // stride["stride_y"], w // stride["stride_x"], c + ] = torch.dot( + ifmap_padded[h : h + fh, w : w + fw].flatten(), + weights[c].flatten(), + ) + + ofmap += ofmap_before + + # BatchNorm + if bn: + ofmap = ofmap * bn_k + bn_l + + # ReLU + if relu: + ofmap = torch.nn.functional.relu(ofmap) + + return ofmap, ofmap_before, ifmap_padded + + +def main(): + + parser = argparse.ArgumentParser(description="Generate data for kernels") + parser.add_argument( + "-c", + "--cfg", + type=pathlib.Path, + required=True, + help="Select param config file kernel", + ) + parser.add_argument("-v", "--verbose", action="store_true", help="Set verbose") + + args = parser.parse_args() + + global verbose + verbose = args.verbose + + with args.cfg.open() as f: + param = hjson.loads(f.read()) + + if param["prec"] == 64: + dtype = torch.float64 + elif param["prec"] == 16: + dtype = torch.float16 + elif param["prec"] == 8: + dtype = None + else: + dtype = torch.float32 + + if param["kernel"] == "Conv2d": + ifmap = torch.randn( + 1, + param["channels"]["in"], + param["input_dim"]["height"], + param["input_dim"]["width"], + requires_grad=False, + dtype=dtype, + ) + weights = torch.randn( + param["channels"]["out"], + param["channels"]["in"], + param["filter"]["height"], + param["filter"]["width"], + requires_grad=False, + dtype=dtype, + ) + + ofmap = conv2d( + ifmap, + weights, + padding=param["filter"]["padding"], + stride=param["filter"]["stride"], + ) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + weights = weights.permute(0, 2, 3, 1) + kwargs = {"ifmap": ifmap, "weights": weights, "ofmap": ofmap} + emit_header_file("Conv2d", **kwargs) + + elif param["kernel"] == "GEMM": + mat_A, bits_A = rand_data_generator((param["M"], param["K"]), param["prec"]) + mat_B, bits_B = rand_data_generator((param["K"], param["N"]), param["prec"]) + mat_C, bits_C = rand_data_generator((param["M"], param["N"]), param["prec"]) + + result = param["alpha"] * mat_C + torch.matmul(mat_A, mat_B) + + if param["transpose_A"]: + mat_A = mat_A.T + if param["transpose_B"]: + mat_B = mat_B.T + + kwargs = { + "A": mat_A, + "B": mat_B, + "C": mat_C, + "result": result, + "M": param["M"], + "N": param["N"], + "K": param["K"], + "ta": param["transpose_A"], + "tb": param["transpose_B"], + "alpha": param["alpha"], + "prec": param["prec"], + "expand": param["expand"], + "bits_A": bits_A, + "bits_B": bits_B, + "bits_C": bits_C, + } + + emit_header_file("GEMM", **kwargs) + + elif param["kernel"] == "BatchNorm": + ifmap = torch.randn( + 1, + param["channels"]["in"], + param["input_dim"]["height"], + param["input_dim"]["width"], + requires_grad=False, + dtype=dtype, + ) + + ofmap, gamma, beta = batchnorm(ifmap) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {"ifmap": ifmap, "beta": beta, "gamma": gamma, "ofmap": ofmap} + emit_header_file("BatchNorm", **kwargs) + + elif param["kernel"] == "MaxPool": + ifmap = torch.randn( + 1, + param["channels"]["in"], + param["input_dim"]["height"], + param["input_dim"]["width"], + requires_grad=False, + dtype=dtype, + ) + + ofmap = max_pooling(ifmap, param["kernel_size"]) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {"ifmap": ifmap, "ofmap": ofmap, "kernel_size": param["kernel_size"]} + emit_header_file("MaxPool", **kwargs) + + elif param["kernel"] == "FusedConv": + ifmap = torch.randn( + param["dim_in_y"], + param["dim_in_x"], + param["ch_in"], + requires_grad=False, + dtype=dtype, + ) + if not param["depthwise"]: + kernel = torch.randn( + param["ch_out"], + param["dim_kernel_y"], + param["dim_kernel_x"], + param["ch_in"], + requires_grad=False, + dtype=dtype, + ) + else: + kernel = torch.randn( + param["dim_kernel_y"], + param["dim_kernel_x"], + param["ch_in"], + requires_grad=False, + dtype=dtype, + ) + + bn_k = torch.randn(param["ch_out"], requires_grad=False) + bn_l = torch.randn(param["ch_out"], requires_grad=False) + + ofmap, ofmap_before, ifmap_padded = fused_conv( + ifmap, + kernel, + bn_k, + bn_l, + param["padding"], + param["stride"], + param["flags"]["flag_batch_norm"], + param["flags"]["flag_relu"], + not param["flags"]["flag_y_accumulate_start"], + param["depthwise"], + ) + + if param["chw_layer"]: + ifmap = ifmap.permute(2, 0, 1) + ifmap_padded = ifmap_padded.permute(2, 0, 1) + kernel = kernel.permute(0, 3, 1, 2) + + kwargs = { + "ifmap": ifmap, + "ifmap_padded": ifmap_padded, + "ofmap": ofmap, + "ofmap_before": ofmap_before, + "kernel": kernel, + "bn_k": bn_k, + "bn_l": bn_l, + "padding": param["padding"], + "stride": param["stride"], + "prec": param["prec"], + "flags": param["flags"], + "depthwise": param["depthwise"], + "chw_layer": param["chw_layer"], + } + emit_header_file("FusedConv", **kwargs) + + else: + print("No valid kernel selected") + + +if __name__ == "__main__": + main() diff --git a/sw/spatzBenchmarks/dp-fmxu-toy/script/matmul.json b/sw/spatzBenchmarks/dp-fmxu-toy/script/matmul.json new file mode 100644 index 00000000..fe53509a --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmxu-toy/script/matmul.json @@ -0,0 +1,17 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Solderpad Hardware License, Version 0.51, see LICENSE for details. +// SPDX-License-Identifier: SHL-0.51 + +// Parameters for a GEMM + +{ + kernel: "GEMM" + M: 8, + N: 4, + K: 4, + alpha: 0, + transpose_A: false, + transpose_B: true, + prec: 64, + expand: 0 +} diff --git a/sw/spatzBenchmarks/dp-fmxu-toy/script/test.py b/sw/spatzBenchmarks/dp-fmxu-toy/script/test.py new file mode 100644 index 00000000..286417f3 --- /dev/null +++ b/sw/spatzBenchmarks/dp-fmxu-toy/script/test.py @@ -0,0 +1,34 @@ +import numpy as np +import torch + +dtype = torch.int32 + +# Define the matrices as 1D arrays +gemm_A_dram = np.array([0x315, 0x269, 0xfa, 0x31, 0x3f, 0x1b2, 0x19c, 0x3ad, 0x2cb, 0x362, 0x28, 0x340, 0x39e, 0x183, 0x99, 0x112, 0x29c, 0x205, 0x2f7, 0x31, 0xf7, 0x194, 0x3cd, 0xb0, 0x317, 0x12d, 0x1bb, 0x75, 0x1, 0x1, 0x36c, 0x255]) +gemm_B_dram = np.array([0x1ed, 0x2c0, 0x1cb, 0xa3, 0x3dc, 0x3a2, 0xda, 0x7a, 0x320, 0x12a, 0x2ee, 0x2a8, 0x3af, 0x93, 0x13b, 0x15, 0x311, 0x2ca, 0x334, 0x107, 0x20f, 0x22d, 0x2d, 0x1c5, 0x2bf, 0xe6, 0x394, 0x29c, 0x9c, 0x28, 0x29e, 0x178]) + +# Reshape the 1D arrays into 2D arrays +gemm_A_dram = gemm_A_dram.reshape((8, 4)) +gemm_B_dram = gemm_B_dram.reshape((4, 8)) + +# Perform the matrix multiplication with original B +# result = np.matmul(gemm_A_dram, gemm_B_dram) + + +# Convert numpy arrays to PyTorch tensors +gemm_A_dram_torch = torch.from_numpy(gemm_A_dram).type(torch.int32) +gemm_B_dram_torch = torch.from_numpy(gemm_B_dram).type(torch.int32) +result = torch.matmul(gemm_A_dram_torch, gemm_B_dram_torch) + +print("Mat_A:") +for row in gemm_A_dram_torch: + print([hex(x) for x in row]) + +print("Mat_B:") +for row in gemm_B_dram_torch: + print([hex(x) for x in row]) + +# Print the result in hexadecimal format +print("Result with GEMM:") +for row in result: + print([hex(x) for x in row]) diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/data_16_16_16.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/data_16_16_16.h new file mode 100644 index 00000000..1052e7cf --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/data_16_16_16.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 16, + .N = 16, + .K = 16, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[16] __attribute__((section(".l1"))); + +static double gemm_A_dram [16*16] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033}; + + +static double gemm_B_dram [16*16] = {0.4780347016744464, -0.20314173587596263, 1.797754234791071, 0.23274595474814475, -0.9954168307888536, 1.8547476587140206, 0.09402273928088646, -0.9430074874135619, 0.8239191817788585, 0.11501735450468505, 0.8545701717376761, -0.007188030468140175, -0.018728729244763993, -0.9533932980859413, -0.12165398416725498, -0.42661916146469137, 0.9340946495293597, 0.19522143581405244, 0.23182973839731683, -1.2546554715250677, -0.7025528681323762, -0.03019556689050345, -1.4671607394596426, -0.1734020738525506, 1.0202696745617659, 1.0157942265133257, -0.4324600332331524, -0.296150919949663, 0.056387506785403815, 1.5109902204218253, -0.13585017018841927, 0.6485611566020152, -1.149354106366614, 0.24917168366560993, -0.4778501888006765, 0.8387576576827396, 0.41098923499226014, -0.2256181742270194, -1.219750082862799, 0.9803566659279874, 1.3346481596559676, 1.6129488803273395, -0.024493143878920487, -0.7591698936771379, -0.48921141096064424, -0.062040923189698165, 0.8520383693040029, -1.128094765763347, -0.07195237845460918, -0.46610241187034174, 0.29946965798993297, -0.6354031061312012, 0.7739177723108309, 0.19368409881631005, -1.3274229125145334, 0.0627858851186502, 0.36384746366328413, -0.19175241722939693, 1.980986216379721, 1.1809578134345797, -0.7306000207552646, -1.7641855643145632, 0.7245001435289563, -1.5840451502971633, 0.09414818556627164, -0.9029006394421663, 0.8488782882116401, -1.2173643223619721, -1.2762292342683303, 0.5058710736668895, 0.6099936154303692, 1.0423699879551078, 0.7611949933670529, 0.6164470190315824, -0.2658724362020457, -0.14668266051521825, -0.6274502774485388, 1.4985053270616493, 1.3299880805922875, 0.6965634921004461, -0.23035924547300898, -0.4005606761098726, 0.3315215039285197, 1.231436269706581, -0.1434065696905791, 0.1038460098414191, -0.11014269025953972, 1.5545069571528942, -0.8829189545685341, -0.20570447804044192, 0.011103897250099562, 0.5946658094550371, -0.6020537188199624, -0.4079372826543253, -0.1805351705743782, -0.33600719481813285, -1.8998197674219859, -1.3514084083199862, 0.12891223912089034, -0.12220432019599553, 0.199025684270468, -1.4076687315200758, -1.3293671463788634, 1.5849730687530486, 0.26915516555170543, 0.42155963063098567, 1.0111021595209633, -0.4752871063125886, 1.313122245567395, 1.429769590030981, -0.22203877342660364, -0.3359458033736853, 0.9478581977287968, -0.9017993731080081, -1.2238040021173409, -1.5066610314377438, -1.5400573604406471, 1.029960808199997, 0.7101787049919178, 0.7199388940089966, -0.09599439254200862, -0.5707540620409073, -1.1665892611773085, 1.1838674589073483, -0.14388808008330586, -0.2897447883816845, -0.5230311319816758, -1.3453794288815801, -0.5774972459244567, -1.6874596492942056, -0.6243273110799229, -0.131168025357405, 1.548288167937, 2.177326020841736, -0.01670896018294231, 2.6380786365181796, -0.6554716217755595, 0.6536593231539053, -0.7991803895400539, -0.48408003859590065, 1.3163800108985646, 0.7736151342348289, 0.045765518028111664, 0.782406872557914, 0.6273242190434466, 0.8505308967944145, 0.002119877636176426, -0.03123667988254042, 0.9288465316923816, 0.4365480813048655, 0.43343311885236446, -0.27680484002022715, 0.6816100143946399, -0.29432626362033404, 0.18661178764402744, -0.34832623473704294, -0.12593952342837475, 0.6104204582278638, 2.1112388578012884, 0.16436581820924961, 0.08511336387296158, 0.6772607869261693, -1.0103642468106544, 0.5124772757514626, 0.08390244767011035, -0.42153332375097163, -0.014621424093204098, 0.1962794539558957, -0.29262366803238393, -0.47610390457226875, 0.8742346952912949, -0.031424129829246916, 1.25609380794485, -0.5422032040096507, 1.9700777629678679, -0.6098672123657596, -0.1733949212480647, 0.07380298739515019, -1.1195878651441893, 0.8173767150222387, 0.3572785103117973, -0.9320608828189856, 0.6955788134794414, 0.8731470189472956, 0.9362614654567366, -1.3121219556703199, 0.22713168745929768, 0.6027021077218985, 1.1658575421017066, -1.149255707834347, 0.1456185008563352, -0.5846446870404606, 1.2335858050609876, 1.9920454844101763, -1.2632446956429335, -0.2772483620390129, 0.17859923880951847, 1.8110431275164358, 0.5722528182048355, 0.010205327986369436, 0.1418089057088939, -0.9264218514606051, -0.5133236613036435, -0.1269124796513161, -1.7009294128404835, 1.7075504892947724, 0.6952680695280342, 1.7665907233368394, 1.3917635799868133, -0.33044907219753716, 1.452604901391212, -0.8170580592759659, -0.6768899292657692, -1.4858191479600487, -1.481720319316519, -0.8838416943783096, -0.4836971414215709, 0.14788650580579352, -0.5447919995948828, -0.132580840204314, -0.3443663683433915, 1.4528943457305363, 1.289500316820128, 2.253287365111219, -0.9181737147627111, -0.39032216747009113, 0.6929251584566181, 0.11041826907812055, 0.8504258697467754, 0.7389689210845545, -0.15323533618009222, 0.8068577169597195, -1.242898069994524, 0.0069296369726892315, -1.4490806809539707, 0.8622146933847438, -0.9552666410033216, 1.5535736491676595, -0.3238211924056418, 2.1818716851528808, 0.8067649829193638, 1.498700405481595, 0.3435160724199721, 0.024119499618272, 0.9425485271043043, 0.6644577289945207, 1.090316288383937, 0.29925023340409146, 0.2730005353024221, 0.3306231644074124, -0.5830552203885363, -0.6652501624993471, -2.123695546730074, 0.8145713078829363, -0.8891278822176073, -0.5497385523974774}; + + +static double gemm_C_dram [16*16] = {0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222}; + + +static double gemm_checksum[16] = {3.53318139833275, 18.910557186514914, 17.061557051251178, -17.86682606914221, -5.920568815540228, -16.80427557391132, 12.345786410219814, 24.565576004988085, 3.617111620044957, -18.771063102425778, 43.637805771956224, -17.699257074021574, -7.3420911665199835, 8.052332093906525, -16.822597494037367, 2.274275182397295}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/data_32_32_32.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/data_32_32_32.h new file mode 100644 index 00000000..667ffd2d --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/data_32_32_32.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 32, + .N = 32, + .K = 32, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[32] __attribute__((section(".l1"))); + +static double gemm_A_dram [32*32] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342}; + + +static double gemm_B_dram [32*32] = {1.8448885093030065, 0.622613137075688, -2.0773600718526932, -0.05879218788301025, -0.14883240827467462, -1.6070787249452574, -1.2752325216668503, -0.9710154441004514, 2.8536471208979433, 1.0259687873673153, -0.07729526178752644, 2.90124785320579, -1.6099870201619317, -0.8847331619490723, 0.5939979568631141, 1.2200036287220326, 2.8510918408680124, -1.25582651238933, -1.5043005890504582, 0.809667872762421, 0.4455096569146938, 1.4533777876325222, 0.08093711755806289, 0.5433594960509881, 0.21407749737048995, 0.5053866496884525, -0.7063829736735863, -1.7255159569914225, -1.3941268553154642, -0.3611221208798455, -0.05334598793633222, -0.35435416471609005, 0.572007132100381, -0.5264955185026189, 0.5102128857829208, 0.6116700031464317, 2.0486968982261202, -0.7165117692039605, -0.44546162876683887, 0.4763931829831273, 1.3032022234889244, -0.02932551729568818, -0.4820520883676177, 0.9193799243970369, 0.6146813355739139, -0.22393893146647295, 0.571492357564412, -0.948302395460301, -0.7318379837818061, 0.03382654045677089, 0.7372524407400997, -0.4103668947560523, -1.5530036453685645, -1.508283926364581, -2.256777082059624, 0.5675579810614343, -0.41165660712793767, 0.3283028032403514, 0.08317733846151737, 0.6397252376986503, 0.5706575386796322, -1.4195164842808716, 0.10738590560666669, 0.6485877172023825, -0.9020532459752512, 1.7456452297639542, -1.3425473236398795, -1.3093298447872528, -0.9909136952855094, -0.7553512437574256, -0.15696203458936964, -0.8587268321219447, 0.4760756036980966, -0.7891190307945258, -0.3642766707809299, 1.4109003071198862, 1.0232681185457035, 0.2604924986511237, 1.2838646589587073, 0.6269276746157323, -0.6194976835634578, -0.45889090147992845, -0.5334658384258053, 1.749809215983805, 0.24334104727505046, -0.9454297378995183, 0.324177164165908, 1.9203285366540146, -0.8911684286042895, -2.225396433305001, -0.9039919874880522, 0.23342621054073684, 0.7831976119427991, 1.1907305012760756, 0.7476571054869932, -0.2757466733288484, 1.423932009681719, -0.0032580522874735246, 1.0664992078500592, -1.9790524548585495, -0.3600241005246587, 1.9280259690970352, -1.1862950949600968, 0.420689070376205, 0.04693766693045954, 0.29564308636903597, 0.2721281447061126, 0.9342714574384375, -0.6120020584064751, -1.065720378325982, 0.1968309175885564, -1.8413847347422614, 0.8118142867300344, -0.2896301303848118, 0.2567239585606655, 1.001647179219911, 1.9679440499519993, -1.010459444419853, 1.062105790670867, -0.5030970822643847, -0.49236046031915226, -1.096249407991655, -2.359353503098415, 0.21399479954715414, 0.28018300766602294, 0.1522501461827938, -1.5691946737355327, -0.3563016808385527, 1.1116421563744774, -0.08412480377121889, -1.3978347586933288, 2.327922240143418, 0.1602748303156346, -0.26733976223106926, 0.37408049529043713, 0.6054083058374654, -0.5984449522911452, -0.34927374642138076, -1.0173409588721802, 0.7408981122108215, -1.0855633146564565, -2.4784405095403583, 0.0125526247658802, 2.975492133500898, 0.43758672808479837, 0.4922810729687261, -0.6299751233419266, -1.7659243403508436, -0.14949638764508505, 0.0754147254586834, 0.2886235312894662, 0.8421602450844566, 0.08810619424950021, -0.9149883628966105, 0.11425878193276912, 1.1788921695577175, 0.13693472548612742, 0.922469684257407, 0.8999837788505479, -0.17817414950901492, -0.609918694875925, -0.09847618283385187, -0.5082793586733352, 0.5346029134452727, 0.07168780603661637, -0.0673955495394241, -0.38524482721238545, -0.7954680985571436, 0.7900271874549623, 0.8136749201194545, -0.22291945275506458, -1.501451886644788, 0.9035218354603602, -1.397338674255014, -0.588379978175527, 0.5732253342246594, -0.7150266134830248, -0.11561150744781683, 0.024035161278926437, 0.15383957509758237, -0.1787890634869671, -1.2810537542822706, -1.2983305542602077, -2.316838061301056, -1.4051338603716423, 0.21230053589695053, 0.64706666019578, -0.4946728962147127, 1.0154445987056024, 0.016501336648811274, 0.038792413114335636, -0.0019081140052624073, 1.0390897743423966, 0.5573182638994464, 1.0293339145628106, -0.2220392426765117, 0.30202523579276225, -0.536406291194771, 0.7842727318028115, -0.20058537792435566, -1.969917184758775, 0.620245645223459, 1.415842532715168, -0.8528561599738412, 1.199279110133032, 0.12733886071252698, -1.459242663662794, -1.876866690355531, -1.9406394619639358, -2.0656398984212156, 1.1244580271586777, -1.2779831760745572, -0.8694565617159877, -0.7736354580243704, -1.5005961252940438, -0.4201799135308444, -2.3224238004285707, -0.6023002440801871, 0.4359959376210403, -1.8310549540520982, -1.1860807036684393, 0.7429642513221194, 0.9914820089613138, -0.39273602229275606, -0.1305603800084962, -1.1975598741016937, 1.1953652639556394, 1.0350931612437495, -0.582835004754739, -0.7093789385459298, 1.1538879916827052, -0.19994075887630136, 0.3503211304018375, -0.43951272221042564, 0.3487504850213432, -1.4502786649323292, 0.21247320768848982, -0.962990797187108, -0.16058887298258492, -1.4492981424636866, 0.8679359705510734, -0.15730996466261546, 0.40836377201711715, 0.2669263499455465, -0.02701940155527667, -0.811961379205231, -1.4260396412546816, 1.99145358910135, -0.3410883214075715, 1.4512382841053386, -0.09281069482301793, -0.3690830035843751, -0.19007920263882952, 0.10750421501190041, 0.9465564741859593, 0.06348346009811161, 0.7049709576256773, -0.25042914816475237, -0.7592324149843712, 0.579583179532083, 1.0356927036283528, 1.744020696757244, -0.9454918159942679, -1.895096099561938, -0.0008137206583593385, 0.46265400794768385, 0.3522443413976922, -0.060333190180409904, -0.8276719054682797, -0.4158341820319732, -0.30513433025622483, -0.7472606420064576, 1.4354983174276066, 0.7768976641774541, -1.8739717517634698, -1.4256436904962992, -2.327140574554701, 1.3638217257964536, 0.12572172650108407, -1.1698739038813457, -0.12686282703773566, -1.5038113250304717, -0.5382334133878951, -0.42224783195423987, 0.1523832525182091, 0.4808356602618045, -0.9548035752110309, -0.8742437683710312, -0.30985592801910117, -0.24189491229960913, -0.9927853948011712, -0.09395716249601935, -1.0360800724687276, -0.8126325347024919, -1.405125889371723, -2.091666612524903, -0.6256281405885463, -1.869391305207575, 0.9077850533771569, -0.06215199874022316, 0.34353353507020123, 0.8295084980828852, 1.3958505210549053, 1.4876059940278459, 2.182868585469132, -0.7044791153933941, -0.26853628794603523, 0.040903466313536106, -0.3493894186252125, 1.077496971491708, -1.371518218990482, -0.48526560569590693, 0.23609553256542695, 0.11558860384831522, -0.633983343063867, 0.32423026673778105, -1.2093360312349437, 0.1323677945856938, 0.37108183095020375, -1.8689872110353185, -0.6566307196626123, 0.1717462405241003, -0.8401102070638347, -0.5606885258433681, 1.993616236752697, -1.5969922983164335, 1.0636457383418108, 0.0004974458415376117, -0.3510577387659576, 0.48193063531644537, -1.0749257488285808, 0.6962114020423124, 0.7795065425753578, 1.129362539634652, 1.112993202632025, -0.18934308720894036, -1.1741764376487758, 0.8524501556338853, 0.37761170331094157, -0.9342945534262868, -0.02711649643869937, 0.5810375830537511, 0.5998645930096181, -0.664516213841126, 0.23545196849666264, -0.06338166413389325, 0.49835413266819356, -0.4402301947763417, -2.100547843467698, -0.7034274377386549, -1.6932708709240643, -1.5147133895052636, -0.005304890708390932, 0.5303343737606813, 0.3955192048365272, -0.6916360198922066, -1.2365797403960304, -1.2686890383326754, -0.7818062318843579, -0.4080026099220151, -0.13894191854589522, -0.095540604007519, -2.072058608998672, 0.1737374420722428, -0.31690501369321267, 1.4448964367746397, -0.6980224325960035, 0.13020040181367357, -0.9331282790464878, -0.3340090119288742, -0.0050819767759484056, 0.7618231087000356, -0.2125855163161856, 0.3551271969105679, 1.2473531605780193, -2.1784216925774254, 1.371312887239788, 0.22201020504142566, -0.6176307398455463, 0.7465865033369634, -0.1530333323078057, 0.09645911224015045, 0.5742732453192894, -1.0184612409555949, 0.47214213858952303, 0.8246091313323292, 0.34215369871376844, -0.25495705935359947, 1.8548042098231963, -0.9291972010711246, 0.8829476857079316, -0.44867368855172923, 1.199426224041857, -0.16987767760770991, -1.189733419675099, 1.9987164641082087, 0.08404007020790137, -0.27202686813738103, -1.1242172376210566, 0.5331924552669381, -0.2820770772397286, 0.08640562469139157, 0.009684786386250501, -0.30058739646889815, -0.8626785926902893, -0.043876281219692365, -0.9358060344486432, -0.05592421534349575, 0.2318653380046876, 1.4399368526678278, -0.58828999383318, 0.43199223950922194, 1.1971503331114541, 2.532325541632594, 1.1869006875492747, 0.18139626346512772, 1.247922968974058, 1.010839700197812, -2.8791873832700547, -0.23051091319332653, 0.20499605949096963, 0.9031672530350638, 0.8745221489151239, 0.5700168037125656, 0.12132847331734303, -0.19495692375454912, -0.5102992245699747, 1.7922666332582982, -2.0217996637419504, -1.1376577043818543, -0.04898442309094625, 0.9913637676227545, -1.9483310573156807, -0.059343641632369076, 0.2636875321138984, -0.5446714593776727, 0.5125620452253108, -1.0850332393056394, 0.49295286102524044, -0.3735237580415768, 0.08464059182127714, -1.536144263111769, -1.7334295099492802, -1.939062107304355, -0.38189865297027337, -1.5866221126564115, 0.2555908214103616, -0.7129650139254672, -1.434297700901899, -0.8902436270883701, -0.0421115170793464, 0.5226206406896088, 1.2010757276760113, 2.269233244076525, 0.6929310708225009, -0.19142620469203458, -1.4608604499664002, -0.08834646865917613, -0.5266987160364432, 0.39258330183185886, 1.4723540101508836, 1.1669873661563108, 1.7267743114344978, -2.6437681894231435, 0.31916263280850626, 0.1619562886451128, -0.08553945533113934, -0.4802089660362259, 0.835126803441082, 1.109609770945844, -0.3494884497630849, -0.22461780649945687, 0.19008151199377613, -2.717778670757182, -0.8643497543156821, -0.10453191019598392, 0.7916834209392376, -1.971084122083064, -1.3999854653788708, -1.3195899155857833, -0.5773871236273995, 0.5757151238996234, 0.2803818171599705, -0.6035154511863011, 2.057751677950784, 0.40988533123157295, -0.39888705398196755, 0.7614369056740486, -0.22948805550230816, 1.2824833220745997, 0.38803217663099665, -0.1955663537656974, -0.5690532461968705, -0.5526532153140147, 0.3596144012700469, -0.6461446779487539, 0.6390360973776629, 0.15046570393731748, 0.33475288490766125, -1.1432227238603179, 0.4370304631746852, -1.0337911892064604, -0.9308402692062906, -0.6015415198184665, 1.7562161679995132, 0.1168039138752043, 0.689824201173873, 0.8153426406136252, -0.1728944869857963, -0.13301270859207348, -0.5270366881316677, -0.21170557963600709, 1.9951334816061994, -0.6241388306405901, -0.9401015854505796, 0.5592128760780101, 0.2883899362101988, -1.7212576593177709, 0.9994754870230482, 1.185949052557463, 0.051902944512615914, -0.13585649309388986, 1.2098862819236005, 1.185062371327038, 0.7600008532793323, 0.17431258922451653, -0.359544416669036, -0.8660236542618331, 0.5428826848071413, 2.7590525887014667, 3.4237712468503103, 0.5174957898345334, -1.4380277943151216, -1.8807813444109054, 0.3630283557686611, -0.525149213451578, 1.181971977987871, -0.5866181500734327, 1.524711206099055, -0.7800663274052761, 1.160481352505748, 0.39343143403797187, 1.8409181821652891, 0.49610977046001814, -0.9419344596787323, 1.0306895727537915, -0.08972003336849564, -0.3223643795390148, 1.6134203350119927, 0.7166427020983424, -1.666570871939696, 0.6170757026559303, -0.019119222645881905, 0.6657305691375492, -1.0678208861159952, -0.24969600604011072, -0.09696213550941978, -0.08674760587893786, 0.20255944297423273, 0.47452405238110584, 1.5065733412421733, 0.22065232253703387, 0.744628978129671, -0.26915089392842423, -0.15463871080474192, -1.2265714811977597, 1.7611911540817928, 0.20817264425532928, -0.8172519034071913, -1.5377442224077151, -1.548684848469057, -0.4477465519532468, -1.0427224611678692, 1.3390674367668436, -1.7547244042030132, -1.107773982297535, -1.3864755081036366, 0.5437796109495969, -0.640338334227558, 0.5138781656523993, -0.9640624060585024, 0.3627363765292881, 0.7961227485818212, 1.650950629705662, -0.9757273564713941, 0.6391954485208522, -1.6484340857205138, 0.5062590514320574, 0.49872412917775666, -0.02662111271639052, 0.3676083732835713, -0.4790606483008819, -0.47412499801799024, -1.3774088537570648, -0.9096458649167182, 0.3387263580347474, 1.427347151863727, 0.3936172157806796, -0.7229213248269448, 1.0421502948740846, -0.31575932783054717, -2.0944415177169953, 1.2284263304913572, 0.01545038682624204, -1.040602541009036, -0.747255398772972, 0.07405473692919617, 0.6462111934112551, -0.15540161000210675, -0.37254092473885336, 2.0182530686564895, -0.7592214987689807, -1.1213275218434526, -1.5589258141736047, 1.22745042848715, 1.7703882319843902, 1.8473014772988974, 0.3751449189250956, -0.6773093361468119, 0.7374924629427219, -0.6501714914135994, -0.5787298408624987, 0.8149334833372205, 1.5321216571398668, 0.2569777134684139, -0.29499229105904573, -0.6827694846192245, 1.2480509452812811, -0.03594236427723813, 1.0778363941578806, -0.4323877136781272, -0.24223189745187212, 0.2503737947188051, 0.7870016058915985, 0.19868751298961676, 0.39608506375087277, 1.8273660232377136, -0.16290875300595686, -0.14925008749413637, 1.688912150364615, 0.28089640344542804, 0.17302563058445183, -0.7235603815620858, 2.417337785331285, 0.6531743202785056, 1.3206137582172544, -0.6004867918118467, -0.49884117664872785, 0.5263294510598043, -0.19786418069226533, 0.19847908080770726, -1.0887076741188921, -1.4186463922997374, -0.46418731609632075, 0.9572709382349587, -0.1636651452718229, -0.18464959701431985, -2.4537835279476146, 1.6425500385797525, 1.9521841872543286, -0.9987807222089615, -0.8644861643567047, 0.09012216684853104, -1.5453453515930158, 0.028618079946139307, 0.8949404757727989, 0.11836116797672853, 1.1493902335657455, 1.4195569065800453, 0.4979804345513483, -1.8439449535735588, -1.3591299269239323, 0.6902199813822665, 0.16431412357817202, 0.6081345501547663, 0.17028885180838357, 0.2277981765470329, 0.22241582722694822, -0.5361669868684229, -0.35212526236220854, 0.07053654437136757, -1.1107085792532714, 0.43435982710100896, 0.9197089124134338, 0.4572717163404996, -0.7338887598113502, -1.4303046720322652, -1.0332700298347521, 0.707300443390559, -0.8341158090629236, -0.3900596403135759, 0.9788396157168914, 0.15285084511988004, -0.9521061052105131, 1.2693688025965613, -0.565952007041841, -1.723439924093865, -1.2488701028525535, -0.06310268278090121, -2.130104535188091, 0.8386877142814951, 0.08795913929250766, 0.3444816081051852, -0.7475464904708393, 0.055137779443554184, -0.297796251553928, 1.7752306448722606, -0.18586838199027028, -0.8359861748374583, -0.5254557201726808, 0.4874774972013086, 0.42973964778170143, 0.9547242579775002, 0.16954868116772995, -0.06608174057217904, 1.4198792364404926, -0.6798540159722049, 0.0037124668666011543, -1.9840617027488057, 0.9892360243254097, 0.16960249404796737, -0.43274207019506117, -0.9509348833512404, 1.001353646981955, -0.4453218737326093, -0.3765845085538441, -0.05609728003750563, -0.453301777620275, -0.7885161782185284, 1.8425900504983932, 0.7479073753397237, 1.1476608122361165, -1.0778628423584962, -1.1826687439735564, -0.2983334069128005, -0.9405677474521547, -0.1316442026885298, 1.0415794322065468, 0.031457706909880166, 0.40185795512569217, 0.5680057504067159, 0.4487811587655208, -1.890981268173993, -0.20813077355955645, -1.1278918446449648, 0.0976102127373202, -0.4396025725464862, 1.13966263395932, 0.8800683478695012, -0.4390315224865612, 0.8352543400425974, -0.6416390065504894, -0.4185489493255141, -0.14358452337381933, 0.3229857369820825, 0.40906237950521346, -0.8774506171339351, 0.17855829086113095, 0.2942911094966865, -0.26956499012979956, -0.594263411951702, -0.8820586551654293, 0.19168429076964602, 0.9320022617397814, 0.3469301281229362, 0.8708434312878163, 1.38335867526748, -1.693588315970276, -0.47920924486264665, 0.27195785052081917, 0.899919260122491, -0.5670525260070235, 0.28253652479051733, 1.4717430631656925, -0.3938745167085202, 1.3420338787636203, 0.07734968673664687, -0.22307281025633455, -0.06842865579333862, 0.8820726768303652, 1.1617475981837795, -0.5445053993271162, -1.6685708178136907, -0.604900108391799, -1.4509136246246903, -0.8677025372132973, 0.44175525248542286, 1.2380051766092655, -1.1301294572944445, 3.5953876986672255, -0.7311965810915613, 0.6612001818907256, 0.5644435285732619, 0.31200772222466067, -2.501823109461287, 0.03568906908977818, 0.6711365751637789, 0.10036766629128512, -1.9630063235244388, 0.20250426856488513, -0.37134570058665717, 0.8941462516437774, -0.5364177308537464, 0.14141128561714333, 1.1165497781562674, 0.6002964569533693, 0.3139908715338594, 0.7397153430022654, -0.5799201931033439, 0.5329264170127224, 0.0757461775588834, 1.1454947730219187, -1.2832223575262358, -1.1731970859703744, 2.264358935950376, 1.535151051934949, 1.2609714707832425, 1.0347284219371276, 0.7931445181078505, -1.1622188132692055, 0.27932962145356316, -0.8488543068716493, -0.21592794240105817, 0.6566383906736746, 0.8811148239408805, -1.4538990075976945, -0.673945501033193, 1.4420580869170465, 1.1526892923346204, -0.5580601750838238, -0.5193463961965822, 0.9856658198526146, 1.1612473442212157, 1.8901581231152924, 0.9954498087197619, 0.536910685665978, -0.5714364972858512, -0.7795697135851043, -1.1261703254618494, 0.8838113044537101, 0.31678992899871267, -0.7498434517605724, 0.945043974186398, 0.3830272308939737, 0.01811044220476568, 1.557358039479812, -1.1013820170238586, -0.18334305957155458, -0.048585931918069494, 0.48707383897255696, -0.06988463350772384, 0.03880070372652659, 0.666378400360196, 0.3153960860722241, -0.4553253041620339, -0.7620891486112908, 0.7833035854562042, -0.4972028753925732, 1.2235988334078434, -0.5372177387698984, -0.18194736753591428, 1.0076432223870029, -0.11562338831110575, -0.44166427943855957, 1.862246649641681, 0.16318485053532772, 0.21059455079709405, -0.04468791360092496, -0.09854463425203973, 0.610220453599741, 1.0966132130656288, -1.3377145615324746, -0.7432885872434457, -2.2463793716496183, -0.8271942633183708, 1.0330281295592512, 0.5665224930728516, 0.8235296531498106, 0.6513073416660541, -0.35686131551458816, -0.7466175012069378, -0.06866257813543919, 0.6819214512912009, -1.3157311036080868, 1.0765917423686246, -0.4124980314658376, -0.13454483357874214, 0.4039229699126195, 1.0392171119322082, 0.30783322485667264, -1.1636116702452202, -1.1864962493216553, -0.19855569336096057, 0.8554191239588586, 0.352400820758953, 0.509830562978939, 1.1127961330998304, -0.42772830220525987, 0.8203366802620794, -0.13107111869784893, 2.395067138296113, 0.9796702201792316, -0.31621524862176864, -1.855416176565475, 1.4335843287274053, -2.030956619344538, -1.0171091372766654, 0.1958899672744909, -1.7263899334779662, 1.3403087264740343, 0.5222811637226092, -0.3292665860742744, -0.805144923911586, 0.2937618607534383, -0.06839741587635721, 0.21159132832002855, 0.2439549047998887, -0.25957042793288443, 0.3803586083160361, -0.03287499950025958, 1.8371154985886862, 0.534974938780373, -0.22624467871026605, -0.5500096460519907, 1.688961038095004, 0.5698707282163747, 1.6482773735238936, -0.5991965310798085, -0.449879365783737, 2.22854455207779, 0.15551004552008937, 0.8500574802035589, 0.3316175009075528, -1.7646934144734967, 0.002668556331391873, -0.8136295403887579, -0.9465575672564711, 0.3469149176826813, 1.0045993947511778, 0.2610941691615629, 1.0788518344074862, 1.429798559996883, 1.6332065112971001, 1.7738534285950363, -1.6081696632587419, -1.161359070554741, 0.4734557044072717, 0.8251757971684041, -1.00859364816552, -0.47466672457489073, 1.2706120469339364, -1.728025679680301, -1.2420591801850245, -2.0058475112711514, 0.5071009399593757, -0.763791941134191, -0.8745505869548725, -0.20863591717796462, 0.6711383514595195, 1.4973252224613436, -0.4581821737978766, 2.85934273014681, -0.5905994619497847, -1.2986776963277358, -0.6884736402196919, -0.8420374077504474, -1.9226574720130702, -0.7714846254184806, 0.4879570553679617, 0.9569335370728702, 0.1215505686746317, -1.6928895703415128, 0.5214662704113713, 0.8488733195590197, -0.18689854597886257, -0.33142178700758057, 0.2108448776087118, 0.21001598604651528, -0.9215746025534817, -0.5943198935837782, -1.757528113553421, 1.251745108485312, -0.868299098407261, -0.1351648490652594, -0.23753657646460405, -0.4541796977906028, 0.6279007880533118, -1.697389937955057, 0.32284669288734297, 1.3123618498586958, 0.2238366057536359, -0.5546344165085834, 2.681801981114757, 0.620608819397525, 1.4571504499595769, 1.3299424270339977, -2.0231033737037047, 0.5166078996711738, -1.6380306920827867, -1.2122365561438313, -0.6623786574250906, 2.0063313680095405, 1.4850546815331578, 0.08949085370524765, 2.207851490608375, 0.6549815456848764, -0.8293836626550278, -0.6235361522388553, -0.626995367880836, 0.4159405289601604, -0.6195377638236638, -2.059249774668197, -0.7922512836603205, 1.9089401526170708, 1.59925697493435, 2.979844425070889, 0.19313774990116925, -0.5567288589208035, 0.5692262629524086, 0.2998477603655102, -0.8259830110426495, 0.820266660992923, -0.7182362270286512, -2.2200296733850635}; + + +static double gemm_C_dram [32*32] = {0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967}; + + +static double gemm_checksum[32] = {19.171406532352187, 64.83908386369714, -15.833072522846592, -9.097406689220577, 38.77022492904121, 36.661072250530495, -19.204889499817334, -26.71405328485298, 2.199782273326125, 22.879340449675865, -25.495771295498592, -22.74413590136339, 41.027971509741164, 2.3121890057321304, -19.49682405405703, 25.832519909539464, 42.9907473021782, 30.112697137204815, 26.7239787914316, 85.07758200685522, 6.60571186375147, -12.02777529819674, -23.409006725121806, 27.330350323575306, -24.78504460632868, 53.946894048375924, 92.26090941929412, 27.603604435548316, -41.68101813310628, -19.73859198296261, 37.159087216031466, 20.44420834195346}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/data_64_64_64.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/data_64_64_64.h new file mode 100644 index 00000000..1c964152 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/data_64_64_64.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 64, + .N = 64, + .K = 64, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[64] __attribute__((section(".l1"))); + +static double gemm_A_dram [64*64] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342, 1.8448885093030065, 0.572007132100381, -0.9020532459752512, 1.423932009681719, 1.1116421563744774, -0.609918694875925, 1.0390897743423966, -0.1305603800084962, 0.7049709576256773, -0.30985592801910117, -0.6566307196626123, -0.005304890708390932, 0.47214213858952303, 1.247922968974058, -1.434297700901899, -0.5773871236273995, 1.9951334816061994, -0.9419344596787323, -1.3864755081036366, -0.15540161000210675, 0.28089640344542804, 0.6902199813822665, 0.055137779443554184, -0.1316442026885298, -0.47920924486264665, -0.37134570058665717, 1.1612473442212157, 1.862246649641681, 1.1127961330998304, -0.449879365783737, -0.4581821737978766, 2.681801981114757, 0.622613137075688, -0.5264955185026189, 1.7456452297639542, -0.0032580522874735246, -0.08412480377121889, -0.09847618283385187, 0.5573182638994464, -1.1975598741016937, -0.25042914816475237, -0.24189491229960913, 0.1717462405241003, 0.5303343737606813, 0.8246091313323292, 1.010839700197812, -0.8902436270883701, 0.5757151238996234, -0.6241388306405901, 1.0306895727537915, 0.5437796109495969, -0.37254092473885336, 0.17302563058445183, 0.16431412357817202, -0.297796251553928, 1.0415794322065468, 0.27195785052081917, 0.8941462516437774, 1.8901581231152924, 0.16318485053532772, -0.42772830220525987, 2.22854455207779, 2.85934273014681, 0.620608819397525, -2.0773600718526932, 0.5102128857829208, -1.3425473236398795, 1.0664992078500592, -1.3978347586933288, -0.5082793586733352, 1.0293339145628106, 1.1953652639556394, -0.7592324149843712, -0.9927853948011712, -0.8401102070638347, 0.3955192048365272, 0.34215369871376844, -2.8791873832700547, -0.0421115170793464, 0.2803818171599705, -0.9401015854505796, -0.08972003336849564, -0.640338334227558, 2.0182530686564895, -0.7235603815620858, 0.6081345501547663, 1.7752306448722606, 0.031457706909880166, 0.899919260122491, -0.5364177308537464, 0.9954498087197619, 0.21059455079709405, 0.8203366802620794, 0.15551004552008937, -0.5905994619497847, 1.4571504499595769, -0.05879218788301025, 0.6116700031464317, -1.3093298447872528, -1.9790524548585495, 2.327922240143418, 0.5346029134452727, -0.2220392426765117, 1.0350931612437495, 0.579583179532083, -0.09395716249601935, -0.5606885258433681, -0.6916360198922066, -0.25495705935359947, -0.23051091319332653, 0.5226206406896088, -0.6035154511863011, 0.5592128760780101, -0.3223643795390148, 0.5138781656523993, -0.7592214987689807, 2.417337785331285, 0.17028885180838357, -0.18586838199027028, 0.40185795512569217, -0.5670525260070235, 0.14141128561714333, 0.536910685665978, -0.04468791360092496, -0.13107111869784893, 0.8500574802035589, -1.2986776963277358, 1.3299424270339977, -0.14883240827467462, 2.0486968982261202, -0.9909136952855094, -0.3600241005246587, 0.1602748303156346, 0.07168780603661637, 0.30202523579276225, -0.582835004754739, 1.0356927036283528, -1.0360800724687276, 1.993616236752697, -1.2365797403960304, 1.8548042098231963, 0.20499605949096963, 1.2010757276760113, 2.057751677950784, 0.2883899362101988, 1.6134203350119927, -0.9640624060585024, -1.1213275218434526, 0.6531743202785056, 0.2277981765470329, -0.8359861748374583, 0.5680057504067159, 0.28253652479051733, 1.1165497781562674, -0.5714364972858512, -0.09854463425203973, 2.395067138296113, 0.3316175009075528, -0.6884736402196919, -2.0231033737037047, -1.6070787249452574, -0.7165117692039605, -0.7553512437574256, 1.9280259690970352, -0.26733976223106926, -0.0673955495394241, -0.536406291194771, -0.7093789385459298, 1.744020696757244, -0.8126325347024919, -1.5969922983164335, -1.2686890383326754, -0.9291972010711246, 0.9031672530350638, 2.269233244076525, 0.40988533123157295, -1.7212576593177709, 0.7166427020983424, 0.3627363765292881, -1.5589258141736047, 1.3206137582172544, 0.22241582722694822, -0.5254557201726808, 0.4487811587655208, 1.4717430631656925, 0.6002964569533693, -0.7795697135851043, 0.610220453599741, 0.9796702201792316, -1.7646934144734967, -0.8420374077504474, 0.5166078996711738, -1.2752325216668503, -0.44546162876683887, -0.15696203458936964, -1.1862950949600968, 0.37408049529043713, -0.38524482721238545, 0.7842727318028115, 1.1538879916827052, -0.9454918159942679, -1.405125889371723, 1.0636457383418108, -0.7818062318843579, 0.8829476857079316, 0.8745221489151239, 0.6929310708225009, -0.39888705398196755, 0.9994754870230482, -1.666570871939696, 0.7961227485818212, 1.22745042848715, -0.6004867918118467, -0.5361669868684229, 0.4874774972013086, -1.890981268173993, -0.3938745167085202, 0.3139908715338594, -1.1261703254618494, 1.0966132130656288, -0.31621524862176864, 0.002668556331391873, -1.9226574720130702, -1.6380306920827867, -0.9710154441004514, 0.4763931829831273, -0.8587268321219447, 0.420689070376205, 0.6054083058374654, -0.7954680985571436, -0.20058537792435566, -0.19994075887630136, -1.895096099561938, -2.091666612524903, 0.0004974458415376117, -0.4080026099220151, -0.44867368855172923, 0.5700168037125656, -0.19142620469203458, 0.7614369056740486, 1.185949052557463, 0.6170757026559303, 1.650950629705662, 1.7703882319843902, -0.49884117664872785, -0.35212526236220854, 0.42973964778170143, -0.20813077355955645, 1.3420338787636203, 0.7397153430022654, 0.8838113044537101, -1.3377145615324746, -1.855416176565475, -0.8136295403887579, -0.7714846254184806, -1.2122365561438313, 2.8536471208979433, 1.3032022234889244, 0.4760756036980966, 0.04693766693045954, -0.5984449522911452, 0.7900271874549623, -1.969917184758775, 0.3503211304018375, -0.0008137206583593385, -0.6256281405885463, -0.3510577387659576, -0.13894191854589522, 1.199426224041857, 0.12132847331734303, -1.4608604499664002, -0.22948805550230816, 0.051902944512615914, -0.019119222645881905, -0.9757273564713941, 1.8473014772988974, 0.5263294510598043, 0.07053654437136757, 0.9547242579775002, -1.1278918446449648, 0.07734968673664687, -0.5799201931033439, 0.31678992899871267, -0.7432885872434457, 1.4335843287274053, -0.9465575672564711, 0.4879570553679617, -0.6623786574250906, 1.0259687873673153, -0.02932551729568818, -0.7891190307945258, 0.29564308636903597, -0.34927374642138076, 0.8136749201194545, 0.620245645223459, -0.43951272221042564, 0.46265400794768385, -1.869391305207575, 0.48193063531644537, -0.095540604007519, -0.16987767760770991, -0.19495692375454912, -0.08834646865917613, 1.2824833220745997, -0.13585649309388986, 0.6657305691375492, 0.6391954485208522, 0.3751449189250956, -0.19786418069226533, -1.1107085792532714, 0.16954868116772995, 0.0976102127373202, -0.22307281025633455, 0.5329264170127224, -0.7498434517605724, -2.2463793716496183, -2.030956619344538, 0.3469149176826813, 0.9569335370728702, 2.0063313680095405, -0.07729526178752644, -0.4820520883676177, -0.3642766707809299, 0.2721281447061126, -1.0173409588721802, -0.22291945275506458, 1.415842532715168, 0.3487504850213432, 0.3522443413976922, 0.9077850533771569, -1.0749257488285808, -2.072058608998672, -1.189733419675099, -0.5102992245699747, -0.5266987160364432, 0.38803217663099665, 1.2098862819236005, -1.0678208861159952, -1.6484340857205138, -0.6773093361468119, 0.19847908080770726, 0.43435982710100896, -0.06608174057217904, -0.4396025725464862, -0.06842865579333862, 0.0757461775588834, 0.945043974186398, -0.8271942633183708, -1.0171091372766654, 1.0045993947511778, 0.1215505686746317, 1.4850546815331578, 2.90124785320579, 0.9193799243970369, 1.4109003071198862, 0.9342714574384375, 0.7408981122108215, -1.501451886644788, -0.8528561599738412, -1.4502786649323292, -0.060333190180409904, -0.06215199874022316, 0.6962114020423124, 0.1737374420722428, 1.9987164641082087, 1.7922666332582982, 0.39258330183185886, -0.1955663537656974, 1.185062371327038, -0.24969600604011072, 0.5062590514320574, 0.7374924629427219, -1.0887076741188921, 0.9197089124134338, 1.4198792364404926, 1.13966263395932, 0.8820726768303652, 1.1454947730219187, 0.3830272308939737, 1.0330281295592512, 0.1958899672744909, 0.2610941691615629, -1.6928895703415128, 0.08949085370524765, -1.6099870201619317, 0.6146813355739139, 1.0232681185457035, -0.6120020584064751, -1.0855633146564565, 0.9035218354603602, 1.199279110133032, 0.21247320768848982, -0.8276719054682797, 0.34353353507020123, 0.7795065425753578, -0.31690501369321267, 0.08404007020790137, -2.0217996637419504, 1.4723540101508836, -0.5690532461968705, 0.7600008532793323, -0.09696213550941978, 0.49872412917775666, -0.6501714914135994, -1.4186463922997374, 0.4572717163404996, -0.6798540159722049, 0.8800683478695012, 1.1617475981837795, -1.2832223575262358, 0.01811044220476568, 0.5665224930728516, -1.7263899334779662, 1.0788518344074862, 0.5214662704113713, 2.207851490608375, -0.8847331619490723, -0.22393893146647295, 0.2604924986511237, -1.065720378325982, -2.4784405095403583, -1.397338674255014, 0.12733886071252698, -0.962990797187108, -0.4158341820319732, 0.8295084980828852, 1.129362539634652, 1.4448964367746397, -0.27202686813738103, -1.1376577043818543, 1.1669873661563108, -0.5526532153140147, 0.17431258922451653, -0.08674760587893786, -0.02662111271639052, -0.5787298408624987, -0.46418731609632075, -0.7338887598113502, 0.0037124668666011543, -0.4390315224865612, -0.5445053993271162, -1.1731970859703744, 1.557358039479812, 0.8235296531498106, 1.3403087264740343, 1.429798559996883, 0.8488733195590197, 0.6549815456848764, 0.5939979568631141, 0.571492357564412, 1.2838646589587073, 0.1968309175885564, 0.0125526247658802, -0.588379978175527, -1.459242663662794, -0.16058887298258492, -0.30513433025622483, 1.3958505210549053, 1.112993202632025, -0.6980224325960035, -1.1242172376210566, -0.04898442309094625, 1.7267743114344978, 0.3596144012700469, -0.359544416669036, 0.20255944297423273, 0.3676083732835713, 0.8149334833372205, 0.9572709382349587, -1.4303046720322652, -1.9840617027488057, 0.8352543400425974, -1.6685708178136907, 2.264358935950376, -1.1013820170238586, 0.6513073416660541, 0.5222811637226092, 1.6332065112971001, -0.18689854597886257, -0.8293836626550278, 1.2200036287220326, -0.948302395460301, 0.6269276746157323, -1.8413847347422614, 2.975492133500898, 0.5732253342246594, -1.876866690355531, -1.4492981424636866, -0.7472606420064576, 1.4876059940278459, -0.18934308720894036, 0.13020040181367357, 0.5331924552669381, 0.9913637676227545, -2.6437681894231435, -0.6461446779487539, -0.8660236542618331, 0.47452405238110584, -0.4790606483008819, 1.5321216571398668, -0.1636651452718229, -1.0332700298347521, 0.9892360243254097, -0.6416390065504894, -0.604900108391799, 1.535151051934949, -0.18334305957155458, -0.35686131551458816, -0.3292665860742744, 1.7738534285950363, -0.33142178700758057, -0.6235361522388553, 2.8510918408680124, -0.7318379837818061, -0.6194976835634578, 0.8118142867300344, 0.43758672808479837, -0.7150266134830248, -1.9406394619639358, 0.8679359705510734, 1.4354983174276066, 2.182868585469132, -1.1741764376487758, -0.9331282790464878, -0.2820770772397286, -1.9483310573156807, 0.31916263280850626, 0.6390360973776629, 0.5428826848071413, 1.5065733412421733, -0.47412499801799024, 0.2569777134684139, -0.18464959701431985, 0.707300443390559, 0.16960249404796737, -0.4185489493255141, -1.4509136246246903, 1.2609714707832425, -0.048585931918069494, -0.7466175012069378, -0.805144923911586, -1.6081696632587419, 0.2108448776087118, -0.626995367880836, -1.25582651238933, 0.03382654045677089, -0.45889090147992845, -0.2896301303848118, 0.4922810729687261, -0.11561150744781683, -2.0656398984212156, -0.15730996466261546, 0.7768976641774541, -0.7044791153933941, 0.8524501556338853, -0.3340090119288742, 0.08640562469139157, -0.059343641632369076, 0.1619562886451128, 0.15046570393731748, 2.7590525887014667, 0.22065232253703387, -1.3774088537570648, -0.29499229105904573, -2.4537835279476146, -0.8341158090629236, -0.43274207019506117, -0.14358452337381933, -0.8677025372132973, 1.0347284219371276, 0.48707383897255696, -0.06866257813543919, 0.2937618607534383, -1.161359070554741, 0.21001598604651528, 0.4159405289601604, -1.5043005890504582, 0.7372524407400997, -0.5334658384258053, 0.2567239585606655, -0.6299751233419266, 0.024035161278926437, 1.1244580271586777, 0.40836377201711715, -1.8739717517634698, -0.26853628794603523, 0.37761170331094157, -0.0050819767759484056, 0.009684786386250501, 0.2636875321138984, -0.08553945533113934, 0.33475288490766125, 3.4237712468503103, 0.744628978129671, -0.9096458649167182, -0.6827694846192245, 1.6425500385797525, -0.3900596403135759, -0.9509348833512404, 0.3229857369820825, 0.44175525248542286, 0.7931445181078505, -0.06988463350772384, 0.6819214512912009, -0.06839741587635721, 0.4734557044072717, -0.9215746025534817, -0.6195377638236638, 0.809667872762421, -0.4103668947560523, 1.749809215983805, 1.001647179219911, -1.7659243403508436, 0.15383957509758237, -1.2779831760745572, 0.2669263499455465, -1.4256436904962992, 0.040903466313536106, -0.9342945534262868, 0.7618231087000356, -0.30058739646889815, -0.5446714593776727, -0.4802089660362259, -1.1432227238603179, 0.5174957898345334, -0.26915089392842423, 0.3387263580347474, 1.2480509452812811, 1.9521841872543286, 0.9788396157168914, 1.001353646981955, 0.40906237950521346, 1.2380051766092655, -1.1622188132692055, 0.03880070372652659, -1.3157311036080868, 0.21159132832002855, 0.8251757971684041, -0.5943198935837782, -2.059249774668197, 0.4455096569146938, -1.5530036453685645, 0.24334104727505046, 1.9679440499519993, -0.14949638764508505, -0.1787890634869671, -0.8694565617159877, -0.02701940155527667, -2.327140574554701, -0.3493894186252125, -0.02711649643869937, -0.2125855163161856, -0.8626785926902893, 0.5125620452253108, 0.835126803441082, 0.4370304631746852, -1.4380277943151216, -0.15463871080474192, 1.427347151863727, -0.03594236427723813, -0.9987807222089615, 0.15285084511988004, -0.4453218737326093, -0.8774506171339351, -1.1301294572944445, 0.27932962145356316, 0.666378400360196, 1.0765917423686246, 0.2439549047998887, -1.00859364816552, -1.757528113553421, -0.7922512836603205, 1.4533777876325222, -1.508283926364581, -0.9454297378995183, -1.010459444419853, 0.0754147254586834, -1.2810537542822706, -0.7736354580243704, -0.811961379205231, 1.3638217257964536, 1.077496971491708, 0.5810375830537511, 0.3551271969105679, -0.043876281219692365, -1.0850332393056394, 1.109609770945844, -1.0337911892064604, -1.8807813444109054, -1.2265714811977597, 0.3936172157806796, 1.0778363941578806, -0.8644861643567047, -0.9521061052105131, -0.3765845085538441, 0.17855829086113095, 3.5953876986672255, -0.8488543068716493, 0.3153960860722241, -0.4124980314658376, -0.25957042793288443, -0.47466672457489073, 1.251745108485312, 1.9089401526170708, 0.08093711755806289, -2.256777082059624, 0.324177164165908, 1.062105790670867, 0.2886235312894662, -1.2983305542602077, -1.5005961252940438, -1.4260396412546816, 0.12572172650108407, -1.371518218990482, 0.5998645930096181, 1.2473531605780193, -0.9358060344486432, 0.49295286102524044, -0.3494884497630849, -0.9308402692062906, 0.3630283557686611, 1.7611911540817928, -0.7229213248269448, -0.4323877136781272, 0.09012216684853104, 1.2693688025965613, -0.05609728003750563, 0.2942911094966865, -0.7311965810915613, -0.21592794240105817, -0.4553253041620339, -0.13454483357874214, 0.3803586083160361, 1.2706120469339364, -0.868299098407261, 1.59925697493435, 0.5433594960509881, 0.5675579810614343, 1.9203285366540146, -0.5030970822643847, 0.8421602450844566, -2.316838061301056, -0.4201799135308444, 1.99145358910135, -1.1698739038813457, -0.48526560569590693, -0.664516213841126, -2.1784216925774254, -0.05592421534349575, -0.3735237580415768, -0.22461780649945687, -0.6015415198184665, -0.525149213451578, 0.20817264425532928, 1.0421502948740846, -0.24223189745187212, -1.5453453515930158, -0.565952007041841, -0.453301777620275, -0.26956499012979956, 0.6612001818907256, 0.6566383906736746, -0.7620891486112908, 0.4039229699126195, -0.03287499950025958, -1.728025679680301, -0.1351648490652594, 2.979844425070889, 0.21407749737048995, -0.41165660712793767, -0.8911684286042895, -0.49236046031915226, 0.08810619424950021, -1.4051338603716423, -2.3224238004285707, -0.3410883214075715, -0.12686282703773566, 0.23609553256542695, 0.23545196849666264, 1.371312887239788, 0.2318653380046876, 0.08464059182127714, 0.19008151199377613, 1.7562161679995132, 1.181971977987871, -0.8172519034071913, -0.31575932783054717, 0.2503737947188051, 0.028618079946139307, -1.723439924093865, -0.7885161782185284, -0.594263411951702, 0.5644435285732619, 0.8811148239408805, 0.7833035854562042, 1.0392171119322082, 1.8371154985886862, -1.2420591801850245, -0.23753657646460405, 0.19313774990116925, 0.5053866496884525, 0.3283028032403514, -2.225396433305001, -1.096249407991655, -0.9149883628966105, 0.21230053589695053, -0.6023002440801871, 1.4512382841053386, -1.5038113250304717, 0.11558860384831522, -0.06338166413389325, 0.22201020504142566, 1.4399368526678278, -1.536144263111769, -2.717778670757182, 0.1168039138752043, -0.5866181500734327, -1.5377442224077151, -2.0944415177169953, 0.7870016058915985, 0.8949404757727989, -1.2488701028525535, 1.8425900504983932, -0.8820586551654293, 0.31200772222466067, -1.4538990075976945, -0.4972028753925732, 0.30783322485667264, 0.534974938780373, -2.0058475112711514, -0.4541796977906028, -0.5567288589208035, -0.7063829736735863, 0.08317733846151737, -0.9039919874880522, -2.359353503098415, 0.11425878193276912, 0.64706666019578, 0.4359959376210403, -0.09281069482301793, -0.5382334133878951, -0.633983343063867, 0.49835413266819356, -0.6176307398455463, -0.58828999383318, -1.7334295099492802, -0.8643497543156821, 0.689824201173873, 1.524711206099055, -1.548684848469057, 1.2284263304913572, 0.19868751298961676, 0.11836116797672853, -0.06310268278090121, 0.7479073753397237, 0.19168429076964602, -2.501823109461287, -0.673945501033193, 1.2235988334078434, -1.1636116702452202, -0.22624467871026605, 0.5071009399593757, 0.6279007880533118, 0.5692262629524086, -1.7255159569914225, 0.6397252376986503, 0.23342621054073684, 0.21399479954715414, 1.1788921695577175, -0.4946728962147127, -1.8310549540520982, -0.3690830035843751, -0.42224783195423987, 0.32423026673778105, -0.4402301947763417, 0.7465865033369634, 0.43199223950922194, -1.939062107304355, -0.10453191019598392, 0.8153426406136252, -0.7800663274052761, -0.4477465519532468, 0.01545038682624204, 0.39608506375087277, 1.1493902335657455, -2.130104535188091, 1.1476608122361165, 0.9320022617397814, 0.03568906908977818, 1.4420580869170465, -0.5372177387698984, -1.1864962493216553, -0.5500096460519907, -0.763791941134191, -1.697389937955057, 0.2998477603655102, -1.3941268553154642, 0.5706575386796322, 0.7831976119427991, 0.28018300766602294, 0.13693472548612742, 1.0154445987056024, -1.1860807036684393, -0.19007920263882952, 0.1523832525182091, -1.2093360312349437, -2.100547843467698, -0.1530333323078057, 1.1971503331114541, -0.38189865297027337, 0.7916834209392376, -0.1728944869857963, 1.160481352505748, -1.0427224611678692, -1.040602541009036, 1.8273660232377136, 1.4195569065800453, 0.8386877142814951, -1.0778628423584962, 0.3469301281229362, 0.6711365751637789, 1.1526892923346204, -0.18194736753591428, -0.19855569336096057, 1.688961038095004, -0.8745505869548725, 0.32284669288734297, -0.8259830110426495, -0.3611221208798455, -1.4195164842808716, 1.1907305012760756, 0.1522501461827938, 0.922469684257407, 0.016501336648811274, 0.7429642513221194, 0.10750421501190041, 0.4808356602618045, 0.1323677945856938, -0.7034274377386549, 0.09645911224015045, 2.532325541632594, -1.5866221126564115, -1.971084122083064, -0.13301270859207348, 0.39343143403797187, 1.3390674367668436, -0.747255398772972, -0.16290875300595686, 0.4979804345513483, 0.08795913929250766, -1.1826687439735564, 0.8708434312878163, 0.10036766629128512, -0.5580601750838238, 1.0076432223870029, 0.8554191239588586, 0.5698707282163747, -0.20863591717796462, 1.3123618498586958, 0.820266660992923, -0.05334598793633222, 0.10738590560666669, 0.7476571054869932, -1.5691946737355327, 0.8999837788505479, 0.038792413114335636, 0.9914820089613138, 0.9465564741859593, -0.9548035752110309, 0.37108183095020375, -1.6932708709240643, 0.5742732453192894, 1.1869006875492747, 0.2555908214103616, -1.3999854653788708, -0.5270366881316677, 1.8409181821652891, -1.7547244042030132, 0.07405473692919617, -0.14925008749413637, -1.8439449535735588, 0.3444816081051852, -0.2983334069128005, 1.38335867526748, -1.9630063235244388, -0.5193463961965822, -0.11562338831110575, 0.352400820758953, 1.6482773735238936, 0.6711383514595195, 0.2238366057536359, -0.7182362270286512, -0.35435416471609005, 0.6485877172023825, -0.2757466733288484, -0.3563016808385527, -0.17817414950901492, -0.0019081140052624073, -0.39273602229275606, 0.06348346009811161, -0.8742437683710312, -1.8689872110353185, -1.5147133895052636, -1.0184612409555949, 0.18139626346512772, -0.7129650139254672, -1.3195899155857833, -0.21170557963600709, 0.49610977046001814, -1.107773982297535, 0.6462111934112551, 1.688912150364615, -1.3591299269239323, -0.7475464904708393, -0.9405677474521547, -1.693588315970276, 0.20250426856488513, 0.9856658198526146, -0.44166427943855957, 0.509830562978939, -0.5991965310798085, 1.4973252224613436, -0.5546344165085834, -2.2200296733850635, 0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967, -1.6848834226351845, -0.468054031300935, 0.2231411040063078, -1.2079120248207287, 2.0110030501455016, 1.4453850086239999, 0.34059707215507334, -1.8213959334958643, 0.8699402772722297, 0.4899667100861624, -0.01173787871675348, 1.1948559206670855, -0.8870269587625144, -1.555705163842219, -0.26533917383348415, -0.3325290424739039, 1.5977665804314234, -0.41203089860517084, 0.49183361850554513, 0.5136570154037132, -0.23309124875198506, -0.7998287164209388, 0.530066185314952, 0.47106304564421286, -1.0105968114955957, -0.8353508972894879, 0.12377709284481839, -0.07289187751377658, -0.6735741109340289, -2.0639344018430106, -0.014438189818046943, -0.4713457882035365, -1.3988791318705927, 0.7076705525000143, 1.0974072497097722, 1.1672671573256546, 0.5553099499949979, 0.12122031680888311, -1.3280507129101098, 1.1654608124772015, 1.3139075127865134, 1.28261825548601, 0.8583778828163117, 0.4508675701062839, -0.3773168693728364, 0.16884703765184494, -2.5899418769593017, 0.8980383022257733, -0.7871723126611332, 0.008146263601196916, 0.15100042746757067, -2.158690321719755, 0.5154773443584927, -0.8968793509306945, 0.12745529032276473, 0.3057102963260676, -1.127194036956006, 0.06889018035163645, -0.29649779158358486, 0.4000800574133786, 1.3294197922581654, -0.9809012577471112, 0.2604706024238921, 0.5802535538390949, -0.7974783258128166, -0.6640912726671294, -1.119222930304624, 0.5834025731102502, -0.25723586541301474, -1.618253196199123, -0.0570695619599075, -0.43841397343582966, -0.6767231131676439, -0.38371376805174173, -1.9996328333376983, -0.33850140623335534, -0.1183524981649774, 0.005796690030477999, -2.458306016054147, -1.099750705180441, 1.054860270281014, 1.1651235359219074, -0.8686068833819991, -1.4001372299430193, 1.1272944804074991, 0.03719751404379593, -0.06732456664178753, 1.0123217113273348, 1.396494377415687, -1.114892120467897, -0.23680354926169062, 1.1762829232717322, 0.35544788004728406, -0.41986744728203046, -0.3867023929082546, -1.483298749076887, -0.566334552372417, -0.03321061530877886, -0.8527679221181403, 1.4516682272189547, 0.7320822341298279, -0.05200885253027685, -0.9525949548843667, 0.5751795467491231, 1.178459960930901, -0.10762850518883417, 1.5651830651133336, 2.1380607452390663, 1.2280945171647695, 1.4042702000856067, 0.09325784801982663, -0.3557970327475224, -1.073778288097418, 0.8968276612463406, 1.399133831515596, -1.2439663723417378, -1.781799686206601, -0.33427106612358554, 0.889230360742913, -0.41170088971799085, 1.2155279834457413, 1.600649868770159, -1.6424774434123148, -0.30897369601229935, 1.047363878453214, -1.0791866371859211, 0.34680511458320423, 0.9927888544576774, -0.8514984695838704, -0.8372280244524042, -0.22804642016295132, -1.3868435427851724, 0.7441016059552877, 0.06972829881636747, 0.3420780025264497, -0.04386730461990216, -0.017778941397242242, 0.6102135468147727, 0.1101978218029996, -1.401046648194382, 0.6208120606616816, 0.26306079867835747, 1.6277476977056633, -1.4148077742490233, -1.12911289812443, -0.4018145604094114, -1.3755867441903893, -2.399920233063965, -0.020319571626188252, -0.895842610909627, -0.3494298955785707, -0.2738387174328631, 0.34922230639219626, 0.07109890321458032, -2.4101191646725644, -0.7411692543552041, -1.3233841458208606, 0.6863453426487733, 0.3632155343313335, -0.5590033258828403, -1.1449685446383917, -0.7258003922221851, 0.278797530701865, -0.3441402294664407, 1.441339424212574, -1.2335052347473323, 0.07612868920434228, -0.4241597163106437, -0.05332877983539378, 0.10099084201256278, -1.8787758687909357, 1.4045284087841965, -0.04347827565492549, -1.2990797348095602, 0.6319627183761264, -1.0748380347638893, -1.280830568026441, -0.4632576940943757, -1.2762157345443148, -0.4871099169463196, -0.8573516675952042, 0.2602500067557723, -0.663512812580364, 0.9193611678505703, 1.4195120671985408, 0.31768737978504635, -0.22676062071355782, 0.7472485772463154, 0.33979457913367445, -0.024989366536706515, -1.1780091950874647, 0.8422172106604986, -0.9853850143769382, 1.0084091587937258, -0.5446586568124329, 0.2287236140419025, 0.12649973956792954, -0.8624432460024017, -0.2042801144909528, 0.8201641258212513, -0.8429169760408267, 0.15786776211979775, 0.586990037118922, 0.7581270686613231, 0.13813966047716805, 0.14287983497159015, 1.542247836275435, 0.6889352238499454, 0.3790751131802156, -0.36007691647378387, 1.5453032787583676, 0.4475231964904419, -0.06905081640069816, -0.2556692520813782, -0.6423795723912976, -0.6500078649365075, -0.6577072095504994, -1.4866829628942408, 2.5030140049559653, -1.0572143847418314, -0.000571660449572993, -0.042894005602608545, -0.4591852328122149, 1.2843268761512387, 0.3968454779394536, 1.138745996685296, 2.4071733886455227, -0.10540633867195442, 1.2714215049136428, 0.04757946360595818, 1.2348108652417815, 1.6311115642560317, -1.6302649244099794, -1.2745470694966483, -0.8131839077565575, -0.6825393122927416, -1.0794370197645617, -0.7204636565534043, 2.1467941519636455, -0.18535362890328835, 0.6625127934408671, 0.38979365484662193, 0.7719784843101606, -0.4958538436662962, -0.658575404725063, -1.8250261743740281, -1.3009369789521832, 1.1569797741579901, 1.0803875458840382, 0.3519814471093802, -1.5678550885987372, 0.17700126122173684, 0.19570581803986603, -0.9713133420910822, -0.40681730492260765, -1.079374837348168, 0.9333820675088979, 0.7164115790249227, 1.5974993677559646, -0.27698287787067033, 2.0383895476075855, -0.6836849892211939, 0.8311193676081333, -2.4241121219014663, 0.31596002357495434, -0.999473279382509, -0.262687475352513, -0.46071381621370666, -0.8976883600787323, 0.5219272929937467, 0.9722622620644177, 0.552832436548929, -0.027467290841698567, -0.6107378749038481, 1.3506129449321138, -0.4521398968561788, -0.22117060492964993, 1.3204666166460701, 0.42542027990331455, -0.19467559818902735, 1.3362817877824478, 0.1643979281153062, -1.613150980719597, -0.5326178763831365, -1.5741387694417994, -0.2358632094400509, 0.35096623923842685, -0.40087086833885227, 1.547569381699142, -1.7090186764224344, 2.2199280575728784, 0.7516533958698258, 0.6804837145322774, -0.19556806995297935, 1.3537057525493934, -2.0138393066087383, 0.172351936169543, -1.7024086384702934, -1.0519290071418026, 1.6258351842437149, -0.11856858846558817, -0.8121335733777978, -0.02927583999406098, 1.548105034805526, 0.6981009969478109, -0.990277098683295, -0.15604117684813257, -0.9747927516511783, 0.4652704424950469, -0.31289780730884004, -1.651056798736739, 1.2755967903796157, -0.13648504411430237, -0.48481306969894616, 0.023313382404551213, 0.48504298344685315, -0.8507882704201493, -1.039212404883905, -0.653701398776706, -0.5189768622716721, -0.12449303534256825, -0.5128172446702866, -0.06818346256734656, 0.510667943805758, -0.20971767447744363, 0.7975878663589364, 0.3042695491801, 0.2654566914993375, -2.0012906991903865, 0.413870629899118, -0.6025010011948203, -0.14082858261327996, 1.075340195058932, 0.2593371488480129, 2.62922759693777, 0.3324210527578405, -1.2020419530087723, 1.1926421271709948, 0.2347858166167028, -0.9756048534996443, -1.8200265368846862, -0.5169307203823522, 0.1500518697766681, -0.038484274917838325, -0.5595155602432803, 0.7826664898369591, 0.4484219149387221, 0.29541985156163897, 1.3984689244673294, 0.25998037440140653, 0.42332643185294355, -1.2422400480672728, 0.2176902105319219, 0.728761958261402, -0.011206770084421624, 0.42373795905496436, -0.0772966783872132, -0.1844058501562145, 1.5231610698492861, 1.5815719719777372, -1.0224998294567542, -1.608411795245145, -1.8940383890496493, 0.5392647246180361, -0.9404210876785811, 0.24515734401955552, -0.8758837658412391, -1.528076170772824, 0.16773671218212843, -0.06372312245930913, -0.6625850298997638, 0.31931330490352056, -0.7703083579211024, 0.369010898692774, -0.9262558726002627, -0.021452503506505422, -0.6884402260487072, 1.5154027937733978, 0.8284697701567305, -0.07697958106921719, -0.4538814926580921, 0.5439309292438045, -0.5492443043774654, -1.220225030532012, -0.7053512461796413, 1.632643282613422, 0.5778426489678986, -0.9229177377752995, 1.588544297460673, -1.7481169305157809, 0.2618776316461439, -0.7711250331583439, 1.4721431859882452, 1.6321252809774605, 1.521708343024266, -0.46073261039758234, -0.7747734720993155, -1.3354599996427268, 0.9861401026653767, -0.575980258880269, 0.0853876730028182, -0.6195540436182536, -0.5432771078257063, 0.3060459872354665, -1.824118723913547, 0.8784176817828129, 0.8097094976615903, -0.361780627962229, -1.467071190440473, -1.8907115007272879, 1.1242546008439889, -0.4974181028535098, 1.829441455586246, 1.017979249905673, -0.7075497604105697, 0.059183606525579274, -0.13056990600722507, -0.5832122715205462, -0.01409309201012074, 0.016108610412205803, 0.1900118760884006, 0.24188780949423172, -0.8882450727066196, -1.3576659214518099, 0.07447367725510536, -2.991099769542917, -0.6488322635921112, 1.8595982643945574, -0.702641433986396, -0.6416959601570708, 1.3390388750212445, 0.057488906459266735, -1.808725561176733, 0.2948187135806436, 1.1497414866629478, 0.8709941695277267, -0.2850339815191343, -0.4997261831464098, -1.4398917507631508, -0.2148727154738073, -0.031164729254402425, 0.48150661412660234, 0.12415703923674576, -0.26613703422724105, 1.0565002395567262, -1.6752860867796824, 0.1869147939846373, -0.7272110183291539, 1.6245102578872348, -1.3773924349992401, 0.14296540214244555, 1.4878267201868336, 0.10331510654880505, 0.9062060348158155, 0.9324085143967664, -0.21818888199568304, -0.2522508930003547, -0.8562525871887124, 0.10204130138311729, -1.0184106320915587, 0.1825164284873822, 1.056310703030919, 1.7552903725196911, -0.12454007621445604, 0.31880532192621097, -0.35541825354040035, -0.8580393155101081, -0.2682711254651047, -0.30783295275138195, 1.3170139199898268, 0.7531186614185573, 1.192570085627795, -0.6615475858876328, 1.4991876630051717, 0.30861856418442385, 0.46151436623585584, 0.3960375120229514, -1.5852068567014443, 1.9903541747766398, -1.1185087223822021, -0.5183442785156127, 0.06782511507671637, -0.13813126796841926, -0.8649990189511263, 0.6978353775870149, 0.16085392211498364, 0.7383270750320552, -0.6856342770612354, -0.6045226539767258, 0.8110514204550441, -0.36508901079756473, 2.2802828142762928, -0.7663535452926638, -0.3887166303815122, 0.9034427218611359, 0.21868488058095606, -0.30457226174639157, -0.287175489125426, 1.3568449350217864, 0.39711905418048105, -1.1763187968954603, -0.33474769656895564, 0.917254226523988, 1.0804852401399638, -0.9584787505991971, 1.7478622379080422, -1.2473029790869914, -1.982585782186715, -0.41852445481952294, -0.9465815043529053, 1.3486167490991765, -1.3147522922373933, -0.14921512592164993, -0.6510935828594568, 0.009685462499594857, -1.0764421921168665, -0.12975724308626338, 0.4720265080850217, 0.3117809833804109, 0.8469168005900016, -0.520242573974674, 0.27675686046474957, -1.7178145403893597, 0.439729002709256, -0.30048055544717606, -0.6302171098523444, 1.241050608643494, 0.5721350887681553, -0.0022023636536079735, -0.4924114110139152, 0.9950463422748212, 0.9816810712679719, 1.9924377989279343, 0.03900009491657034, -0.2935571188258591, 0.1266892245615102, -0.715464769225636, 0.3145853867440553, -0.3835873169761903, -1.0953446648325833, 1.0121232148460444, -1.0957236224096085, 0.17063463111383734, 0.5102992173497909, -0.3658969046671184, 1.23797611806204, -0.18059200075977175, 0.9936325102325779, 0.18430235850671245, 0.16517189020344797, -2.016269812957052, -0.3616199185761283, 0.7527532999342817, 1.3277176349050535, 0.2920534284459897, 1.0606099435377094, 1.848598832091733, -1.3301443272735525, -0.5759958625549068, 0.27878675140631204, -0.2315083920631258, -0.8288316208067809, -0.2635580627160318, 1.3355871376746895, -0.8117302674348011, -0.23432703924765444, 1.92799930513707, -0.23101856846075614, -1.4238524703136513, 0.1368000358051577, -0.2055684135567207, -0.15855445409422964, -1.2600442043395892, 0.1701769006730323, -1.068866010850334, -0.1904292641612836, 0.5892434527813512, -0.2157459392172624, 0.4055498592698905, 1.6497067243577175, 0.7890192766736421, -1.044353487265588, 0.7953139847174688, -1.5740154854045074, 0.9665654379132748, -0.3889094455704384, -1.8426397459593846, -0.9001191779220159, 1.7045921258988515, -0.8923330121142684, -0.5956915482032328, 0.011227289589172133, 1.7111591357647962, -0.9587860284026688, 0.7548194520215976, -0.32603844480628175, -0.2353359336920787, -0.16729381132141224, -0.6023878547302806, 1.371156314999161, -0.2459473828028695, -0.2620130902224386, -1.2172056461838572, -0.20656000988613168, 0.5008110746890201, -1.4028780271648753, 0.7193747259694553, 0.0660307754939295, -1.3093771377458805, 0.407051194515542, -1.1823392140768092, -0.4019555472426395, -0.26250820888118304, 1.2702869545254583, -0.24272141574465245, -0.42155102572483116, -0.05194109601117269, 3.292873619493133, 0.7890333104486489, -0.6211877906484109, -0.8047810389893006, 0.9678567436130486, -2.079988930109922, -0.6016769585932343, 0.12364670959331653, 0.7229553379296235, -0.5227730192140618, 0.023991105176350242, -0.0017528334343272331, 1.2586605379107056, 0.8446327540395329, -2.252502331262609, -0.5270068966745032, 1.6223796347828976, -0.4278645067985037, 1.6333830568090013, -0.8062257833307152, -0.30685337459460577, 0.3507708774563464, 0.424527526741457, -0.03735386264172313, 0.229879937036083, 1.1454140027646036, -1.1872670475847902, 0.6262020869197982, 0.7589488691885292, -1.6862092963785988, 0.7944545737967115, 0.9971081922053232, 0.7560471613916118, -1.1851981001821967, 1.0965175918763284, -0.46530937265986, -1.2761702411382863, -0.9791491731581209, 1.1589807765966766, -0.8156014346461856, -2.8072546995497247, 0.5334627416087777, -1.3798149493182552, 1.3972706448160608, 0.4552374166958973, -0.535433943499853, 0.8920580452737524, -0.5856331944062472, 1.7623274652492553, -0.2852747983665435, -0.18313041510663963, 1.4659299617833124, 0.1519470164480292, 0.23355499681619366, -0.836602381173288, 0.18618502715241547, -0.08859676768441688, -0.7180391575300691, -0.36232537769580714, 0.36477740973605915, -0.9281105879066266, -0.46197664970984853, 0.6483976493075976, -0.3812217162848902, 0.4303579894467762, 2.0043530514779873, 0.39102979400332366, 0.37534637396631415, -1.071734524715999, -0.16045645113900145, -2.998145904788263, -0.36470187389744846, 0.03991547011616779, -0.7008645685896715, 0.9912516955548382, -0.7450675439952815, 0.3264674970899282, 1.601666916097199, 0.5405397248625541, -1.1861306612606524, -0.522172803007203, -0.7727094284088601, 1.2277562505941912, 0.37759283992313625, 0.7444682278368736, -0.6522853231400494, -1.0696424743836717, -0.8054574164094268, 0.905380130000978, -1.1121207299686113, 0.2063449976062078, 0.5176153181186626, 0.2301751658467518, -0.17968415020039138, -0.5804234791794292, 0.522042470813759, -0.47680230351950187, 0.7668678996668346, 2.1152176375874023, 0.4635399730851282, 0.7692324460373827, -0.5214713943997042, -1.6311809160767827, 0.7017462722924709, -0.31859839125881545, 0.20304228378387937, -0.18790051825211995, 0.18432739014512065, 1.1541296937922023, 0.4450818568868103, -0.13551483948610296, -0.2758105920455811, -0.5849315949646472, -1.0646125679003637, 0.27411289538745437, -0.5032261617196119, -0.04351057134624247, 0.7743236339777182, -0.6756715811861062, -0.2671752620926679, -0.23914374307205996, 0.16461452793247355, -1.4436309225983486, -2.20506341329235, -1.0189819575984795, 1.5608022939480573, 2.31499985378701, -0.4181529433643855, -0.2711132087457424, -0.7206084096900425, -1.2504073094445143, 0.31340429692041716, -0.1447897506201982, 1.1850402988106572, 1.9541706849775027, 0.11232761778850357, -0.4382234425091706, -0.3947615339868321, 0.7015762348678443, 0.43950731587232217, 0.4486281613565141, -0.33259394965579864, -1.2893276502905346, -0.5665027824228605, -0.9867864794525018, 1.7152028381164288, 0.7425175887812803, -0.4541542908237512, -0.04974419881485532, 0.7205327224864219, -0.49642760570489125, 0.5806736618394556, 0.8088452773706619, -0.15195744367862507, -0.12096553277305616, 0.6220396950025358, 0.8874367244840082, -0.960123924615042, -0.2512769100863725, -1.3487372983592427, 1.9195263893870158, 0.1391130058484598, 0.3556392382753691, 0.022946113835703726, 0.06403402028906036, 2.01431714516637, 0.9153269759513197, 0.45535078555080316, 0.8164902531014034, 0.7554878281598991, 0.7302943512899034, 0.9227450720901643, -0.2149435624765486, -1.9175638929241665, -0.47494584965396475, -0.8209686635530825, -1.475086806478942, 1.5375697346337323, 0.43409387407100747, -0.5748944134752534, -0.1207717673708367, 0.10757938709427231, 2.24973612340786, 0.5656573548928321, 0.7510332313304937, 0.2925755284670311, -1.1385387437599415, 0.9278383480094607, -1.9329319879816766, 0.8833452963447278, -0.9531724053699292, -0.1039290425260258, 0.4382286101469634, 1.8998623656623255, 0.19200494459198952, -0.6716950287224315, 0.5638093918454188, -1.6242049283972644, 1.7704636715303947, 1.6534314391102312, 0.92655666075164, -2.1666623771571185, 0.3089037330906556, -0.34387294467445684, -0.17869075221031164, 0.45228978471381315, -0.9526180775686287, -1.1784311215584218, -1.4588182758831976, -0.3751354576229393, -0.3058513410728059, 0.9384734481636833, 1.1326237644059438, 0.12950394282796612, 0.7421113354249786, 2.22774088023295, -0.38297985887788083, 1.184609638956563, -0.28900852784476955, -0.38476787730344003, 0.06257594537962448, -0.8447175394855944, -0.3276448761445928, 0.9520069001238655, -0.7029145751675628, -1.6244073387265128, 1.622978343226983, -1.2795553886248943, 0.2494267093436905, 0.6236424924999387, -0.04290636875881789, 1.8562326434548018, -1.3390517668015733, 0.5090655455389611, 1.2848563335735044, -0.5387392229559257, 1.6741064751678032, 0.10066535315992477, 0.8949591322162106, 1.6846660415357275, -0.47037844642707904, 0.4157622049238856, 0.540404845364168, 0.3967936830533677, 0.43668944123398024, 0.2112361885627918, 1.185672884091169, -0.33641286222705097, 0.5497594019101291, 0.12465203566067538, 0.38350811363315446, 1.4507326394999236, 0.14723038127353738, -0.7869045408490771, 0.39357209249435554, 0.9743220259735553, -0.06453115565194864, 0.38254243983530506, -0.8643740939583053, -1.684728335866361, -0.20622146179421566, -0.2747979191346741, -0.07028871827775147, -0.5729020560099904, -0.6189757445377713, -0.1510371111896753, -1.1820077963068163, 0.6043354866597276, -0.9774217378587312, -1.3380178663597784, -1.4201147833071752, 0.18880445993987796, -0.8427639940831457, -0.32186427356745245, -0.006664725012722541, 0.8058032956183504, -0.23641847937920588, -0.6756647705708424, 0.4773883748212866, -2.185477701275724, 0.7531165422993013, -0.8203844714762077, -0.4004758384259698, -0.6468022951980026, 2.2667765095579213, -0.1464154957378096, 2.098114036236069, 1.0184508455410493, 0.8103126555466662, -0.40972058902905745, -1.1414090507678094, -1.3867326701405396, -0.4507753555588849, 0.10028961530046718, 0.13126844765242035, 1.8046340365305968, 1.0498294815194782, -0.1970397367331956, -1.4653721149167949, 0.28738863276181814, 0.5271374800610847, -0.1451944493283091, -0.9800599971955779, 0.6516285157791157, 0.3396200289963888, -0.8198525721107438, 0.6319579574491423, -0.3772650215173409, 0.3077068224849206, 0.31720206688921, 0.12158776309046304, 1.0809042082121207, 1.0642567891228714, 1.8179097447438652, -0.43206935605397984, 0.37786874569296014, 0.3952043620022568, 0.3619801074518372, 0.836701763727239, 0.13589241191151316, 0.5983402387018408, 0.11083062853937264, -0.47684235510432976, -1.425496108886025, 0.5861440987479868, -1.086649842646286, 0.8692343861045037, -1.5595017100635853, -0.11939217655297334, 1.867839017091306, 0.1529344462913203, -0.4142188866098133, -0.015382150772253089, 0.02331025826997036, -0.31332150638072576, 0.07177806286427546, 0.9588513248678675, 0.4790246289141386, 0.1782800679264196, 0.8316439535085373, 1.3697451219813022, -0.29239194315140027, 1.7130334754533454, 0.15301199433584703, 0.2516538496321531, 0.8052203626705442, -0.8193169757784692, 0.8297372716531863, -1.6382362402194854, -1.039626938505833, -0.8865946056863021, -0.9294253652017392, -1.7978162276590155, -1.992621134234571, -0.05491414933488196, 0.7607121087371761, 0.07984366129268702, 0.5462619894735057, -0.2682509648059717, 2.6409716720600263, 0.45749720934429716, -1.5363699364147407, -0.7376116600379029, -0.00034809918522295523, -0.0446268595336354, -1.0661827948417526, 0.20144275615808793, 0.7334562425309233, 1.552508206699953, -0.4212114236659149, -0.18798580599722212, 0.362342131367099, -0.40201566793731663, 0.24422295735481817, 0.5936899101332285, 1.4911129590651635, -0.012571888777807325, 1.1564868960369348, -0.4347382827914363, -0.03991151500405277, 0.8894520643614005, 0.6750877041971858, -0.8924490272423622, 0.06802820117873785, 1.3941390498912603, -2.2183459123693248, 0.728823441885771, -0.20738631995329626, 0.5619451894738027, 0.24102109818707865, 0.5988075233622759, -1.197341333157397, 1.141794439805377, -1.4503023284963743, 0.17970074803850108, 2.2516048850144963, -0.56902356791673, 0.5251052705298633, 0.41230439233508803, -2.0610354044549024, 1.6463483630850755, -0.3895932560221762, 0.023372481314313378, 0.3726580742458444, 1.6009305244339782, -0.5079472543165146, 0.026058442391582896}; + + +static double gemm_B_dram [64*64] = {0.189669602985114, 1.325049359243402, -0.732183062829934, 0.572714186764936, 0.578590600877031, 1.2388796995290943, 1.0500306672776403, 1.8192381659692514, -1.1405729828723672, 1.0122300292640196, -0.6803068888120192, 0.23558756797719393, 0.4590523848413457, 0.039978934156923385, 0.7649728251851297, -0.6523866340206094, 0.9057001363970097, -1.4969909024911252, 0.5583314398652852, -0.4452115501359032, -0.3304347302314844, 0.027571386474332372, 0.8939826883481805, -1.872118961147354, 0.5298280317907396, -1.0826478091988276, 1.2084845569673108, -0.17218404794239636, -0.3252179452060136, 0.3945233627729552, 0.2425669838461522, -0.2564454574318479, 2.0415809465850456, 0.6967377843326548, -0.9048546980985884, -1.234321257122067, 0.03613326393674803, 1.5030525940981552, 0.039812401385598245, -1.028716739224381, 0.905199590933292, 0.07238255324721113, 0.9920291161315633, 1.607092129619061, -0.7789509309904787, -0.8098065870783787, 0.2185071569653127, -1.0776572234997361, 1.0422979672486086, 0.35098947793500807, 1.058321853508688, 0.21414179532614872, 0.87002060394994, -0.588672020705869, -0.9012431889469893, -1.1027247239157423, 0.20399290647527346, -0.22033680012834594, 0.41392188096741706, -0.42930260307085955, 2.008106278814718, -0.17141366812550005, -1.0826275786645045, -0.9116258668673404, -0.4909043876322673, 0.5943271959845479, -1.032232792355313, 0.6916475040075348, -0.2814338568695432, 0.3019276636231262, 0.30840104248656297, 1.1260293291302985, 1.0658378320568267, -1.309665630454003, 0.03270078938345398, -1.042853289185364, -1.1963506272729019, 0.22648827570429167, -0.27781730274050287, 0.6724032102680387, 1.4810649208771722, -1.705538843107525, 0.09082361393666324, -0.7042276239280941, -0.2383161417380752, -0.5754942139316102, 0.2034652918512655, 1.0314063302051917, -0.5483340133806348, 0.7261075561744313, 0.24325632249018914, 1.2040307377783537, 1.8952069586290123, 0.07195894063173909, 0.41620952444354886, -0.38792744247312216, 0.43271658564463056, -0.7152907230181043, -0.27441611835118457, -1.2767143227797635, -0.7237480311094019, -0.7801386726592521, 0.5873572672607883, -1.5638814718009917, 1.0026700985921706, -0.20658267805579636, 1.1147082449222048, -1.8735264640919256, -0.010118223620103015, 1.3128640032531393, -1.2394667444809362, -0.058071070610180346, 0.3326917440450766, -1.3418569139214052, -0.35250711745478874, 1.062335579748586, 0.20356887701465726, -1.5085222292073164, -0.20122570212640017, -1.2154057454628897, 0.5158621290601251, 0.9695271692142623, 0.3441306717260009, -2.1992152335223514, -1.3802722217172205, -0.6034656461417384, -0.4801083441565978, 0.8538691740175305, 1.251004287596872, -0.09542742482466746, 0.40740998722283345, -0.46840541134330865, 0.6471911034482357, 0.35532009889140853, 0.7653967450899795, 0.9524656674056426, -1.6215943351797741, -0.2686500917542327, 0.9449563832937318, -0.20293909969523755, 0.020177369737896966, 1.8868326165910845, 0.4576448036103095, -0.2498818144309833, -0.10142946285532765, -1.449579663145317, -0.8489450230349159, -0.6568950465417366, -1.67036939630407, -1.7958306634788441, -1.1021273970619352, -0.21287356137371105, 0.4835462118207064, -0.706131682059633, -0.0005784215469045945, 0.6574250653163278, 0.17766778608163517, -1.8727680007027385, -1.5710173931120528, 1.7986529290207192, -0.18797275721228432, -1.3910123695349608, 0.4306425799188508, -1.219748011178242, 1.0949707620919027, 0.1513762139476246, 1.9338021854764944, -1.7210422812237611, 0.9885068182490291, -0.9803371411601391, 0.29682676074294506, 0.5079171532797483, -1.0067592408859265, -1.1852909158053921, -0.24870697467690292, 1.5263388569653553, 0.3621209495718994, -0.10875592605323897, 1.5707754718355267, -0.058214043298022156, 0.11649757853760016, 2.20745259723818, 0.22508102515092662, 0.30413440003257725, 0.3361637150433332, -0.29948851492748413, -1.4644211330145278, -1.1645688132881276, 1.7112956696610628, 0.3665551294097223, -0.892280722293537, 0.23500589115883444, -0.006491959097523364, 0.6091191876188028, -0.4461691518402758, 0.9121131054406446, 0.6355326129684161, -1.268683781896227, -0.21309922823334831, -0.4526268909737412, -1.4960032394689278, 0.5540823200822727, 0.2560919649556906, 0.6958730281917784, -0.5196649709771612, -1.3359468501779264, -0.9612977596469916, 0.3684109792157164, 0.46874289915027023, -0.23500821987366438, -1.2492858128054651, -0.9712261431242842, -0.11106638365989584, 0.9412519070406014, 0.49297323422258654, -0.8131389146040623, 1.6400307701149688, 1.0589667993101595, -0.4626925507420147, -1.4812253208994315, -0.44695524379636, -0.5088098786201557, 0.7417386987297616, 1.9120910039247294, -0.5568304246735866, 1.082342797278427, -1.7235037406979286, 0.803163868309887, -0.9769340341766338, -0.35112463351229073, 1.089671633947238, 1.4945995510345567, -0.9605994188901047, 1.8558602683726249, 1.2656905677375838, 0.42254046476492185, 1.6858550771091214, 1.157878804816697, 0.4573643259259206, 0.024994765804824147, 0.6922554384196643, -1.0810666579003045, -0.993616522481608, 2.5847749332602, -0.5049684014655186, -1.1395828435290725, 0.7605771798197924, 0.4408163359631587, -0.0840611891215317, -0.9527439222312267, 0.6926562526915562, -0.0027305349396484877, -0.17986472316396296, 0.6422610144258437, 1.412615895841031, -0.8278577538333346, -0.34124077949668935, -1.0204861021625729, -1.639602822546497, 1.6074096919057093, -1.1584852824016685, -0.7208155426015784, 0.8392040761097412, 1.4407795793808869, -1.1752867571353782, 0.13944705380804281, -2.1057408864224376, 1.8791244019244464, -0.11042132844938202, 0.6020370854831343, 1.123017096832584, -0.05652868718922079, 0.9625740766310946, -0.9673606956637038, 0.34492034644528907, -1.5375361503838323, 0.4990455041789286, -0.9489277592897538, -0.44848662225935687, 0.20225111438661522, -0.7527660556091446, -1.1152440995018695, -0.678649964720999, -0.0170582056258441, -0.7846907726938122, 1.464993202427589, -0.23851486543700182, -0.21705046983702211, -0.48796761821159795, 0.06955842538462975, 1.354628016983049, 1.1723362156850679, -0.05921619047971073, 1.837739007328147, 1.8393226614447074, -0.5268796561342607, -0.009364231583693152, -0.34684234783223405, -2.176072940640231, -0.09860764477494396, -1.375924608815696, -0.3811363408541145, -0.25535084881820336, -0.5151247779921773, -1.9166699100712044, -0.7282751936534643, -0.770819120513824, 0.09989507970317545, -0.878538580803181, 0.7867474162185699, -0.6197714222289087, -0.7670250649875356, -1.1346435642707655, -1.0880912464935015, 1.068458625377813, -1.3222351936152148, -1.066593964724342, 0.6852370705793731, -0.7113480780630511, -0.40942559335898576, -0.7483757154858288, -0.07122776033319436, 1.737408764400146, 0.11841252923863307, 0.8754522360715343, -0.343031757238289, -0.16416710878946741, -0.19531408663845634, 0.7754013715005769, 2.1332591207760423, -0.5052118758709067, 0.7131591899986326, -1.7803264017675031, 0.09420444683357239, -1.0472700356156177, -1.141024988505546, 0.09968113439098554, -0.5500313848742133, -0.8741986078561492, 1.0386438045163713, -0.25198767361062563, 1.6311155422356378, -0.5489949380720973, 1.4199156443209913, -0.2207014712546088, -0.4933058762731387, -0.27150483339996007, -0.609287115241384, 1.8620527369297897, 0.3449111247951254, 0.47062028183460747, -1.1545294505661057, -1.292810580741897, -0.6289136729611903, 1.2737042271707677, -1.0511082561993392, 1.426825388255249, -0.015158507511135831, -1.273327662575822, 0.3566423182164152, 1.7276268792428473, -0.138705499081124, -0.3306294574129653, -0.25875806103153426, 0.9880995543293336, -1.8623261901283767, 0.4777716036036974, 0.7487573413181321, 0.2064510369320226, -0.6262881610175278, 0.7353602889754229, -0.51667585170615, 1.219994070236117, 0.08511682154742599, 0.461487533016861, -1.4324664872243593, -0.2831471438083741, 0.054981156346117374, -1.3700696100114267, 0.3096752736763023, 1.194241938484396, 1.8141528512917984, -1.58398942271415, 0.2567713855866453, 1.1325804441514433, 0.25474731658461836, 0.5102671515154679, -1.4402773937935691, 1.3631571444107151, -0.8745959707232299, -0.6709972930186268, 0.2283470744920325, -0.12596887340485374, 0.8065789677701352, 1.421469323382145, 0.4556508032642018, -1.0983863507243814, -0.6254964658092993, 1.070974103218303, 1.0062944399776677, -0.2034198776993104, 0.808780940775045, 0.5534680689510987, 0.8961184107636236, -0.5842103728027922, 0.5653085033471172, -2.1257290549864827, -1.5901962373203609, -1.9012367446206324, -0.6712383697091975, -1.5234460098622955, -0.5907400058854823, 0.5435115627741249, 0.8494509722996453, 0.39541460589373995, 0.34454168140199853, -0.5998570139754461, 1.4125085287986676, 1.6191319296034328, 0.5896315959519233, 1.6752120980115939, -0.2991192109089548, 0.9223415325858076, -0.7167872516194996, 0.22778147331011792, -0.7313561090591182, 0.2921479170003794, -1.625666094056695, -0.6445948416979022, -0.05395662589269566, -0.32651136607182046, -0.5718694030200041, -0.6239270633688702, 0.5293884091632937, 0.8538659984117739, -0.08646896041984872, -0.4591311530517561, 0.530729446677609, 0.9885369669648936, -0.10094123058942654, 0.7532893387345917, -0.5660396507329793, -2.0027194859651005, 0.5301317384831784, 1.7010094716661732, -0.6006505084403668, 0.07178044356560984, -0.7177231480244217, -1.359337165187181, 1.0326277403651098, -1.104532973746827, -1.6930804949542624, 0.8948572423285246, 0.6340160893384413, -1.5423915961168462, 0.011234729330484954, 0.08870089142026438, 0.3252000063592445, -0.3788953447378539, -1.6345167208845197, -1.9943938078659595, 0.5933545751971042, 0.1442610329440957, 0.8612263693463771, 1.0358096108450814, 0.6111080247478592, 0.3509848535144375, -1.1231152704037288, -0.1305107898573894, -0.41201313101807663, -0.03594780788378006, -0.9547182114259212, -0.011845221890036848, 1.12335088041976, -0.9774107703754668, -0.34076482193730445, -0.4446802970229687, 1.750328003641402, 0.11174788170294983, -1.565777190842104, -0.2346242003304713, 2.025590134435565, 0.735919593851651, -0.3026497563524433, 0.795453306662201, 0.46657766925371513, 1.3719765295674315, -0.4428217812148648, 0.7438423244369328, -1.0044446714902608, 1.154104526108482, 0.8839111136542974, -1.4508885825739297, 3.0611733845656395, 0.07901046926896166, 0.035058228455775144, -2.529204012749036, 2.2253130444496216, -0.4836215067602598, 0.16087228538156456, 0.7529292801127621, 0.3021529756635018, 0.4830310122781418, -0.8075856256378251, 0.26676009847445914, -0.29717856392002556, 1.2712147826101827, 1.3176937460170013, -1.4531100825401797, -0.401073196111487, -1.2871905265662251, 0.23493164012909643, 0.08751016369069563, -0.4032539921927929, 0.20282323529368904, -1.1162555921139607, 0.12695806790569364, -1.406093789252919, -1.0433007967333698, -0.6034955540076896, 0.17102026852126964, 0.7887411128500289, -0.703456192532379, -1.403341194881998, -1.0180851564689184, -1.207196105637615, 1.3037843089034824, -0.8651985363612925, 0.16224668087220992, 1.6395521189037061, -1.463483294540364, -0.7310087129802972, -1.409361808083387, -1.6742963677191696, 0.31488414200224113, -1.0807755665828445, 0.11328910546500368, -0.09407603144337613, -1.4910310277195566, 0.7879699185151358, -0.22617275756319744, -0.18453310046988597, -0.8088417376829332, -0.3039969187778905, 0.8286501834765244, 1.746576388943919, 0.4585966464736884, 0.25857411751629744, -0.7755037047860419, 1.420943752567541, -0.7945878809532562, -0.46422664555214305, -0.5870832701281387, 1.3591013677668105, 0.5825126289522653, 0.6302719139868384, -1.4892296911532181, -0.054354803805188714, 1.2886090146135347, -1.871894006094185, -0.17706345246737432, 0.8586917015117914, 0.9881224827101989, 1.7896888081081215, 1.8466624703615426, -0.652536121488528, 1.3010866809132744, -0.09621481510992093, 0.4195057830533126, -0.04083288515295536, 0.6108022121551525, -1.0750510120212, 2.0140943483593357, 0.4481129685052948, -0.9859321167207238, -0.08362383634635764, -0.03871848811440984, -0.2859438908875716, 0.5451864270031233, 1.096287644463553, -2.0123992429307687, 0.5129399194497606, -0.4096728112440253, -1.0733837614648305, 0.005037630800198677, -0.21228362057381842, 1.0230324323469668, -0.3656703260246628, 1.343090275133355, 1.22200570063805, -0.19194700432383366, 1.6409555329882874, -0.045055182295066304, 0.9609987857589979, -0.19006125129863014, 0.4532745570836223, -1.2557975528603051, 1.266664141133199, 0.7341021381288548, 1.0225863410319447, 1.0410718138994182, 0.7172806738325695, 0.7903692364559284, -1.2222599875487237, -1.1506465980729734, -0.5931209140159687, 0.0009066596896233819, 0.8988006272366036, -0.7368561086985402, -2.060685831545258, 0.5996372458926001, -2.6379391495512574, -0.15461646907210536, 0.5809320989641804, 1.2787415555120119, 0.9369918534027788, -0.6875243358298012, 1.4942643445597592, 0.2701534137189382, -1.1816059491920998, 0.33872966509087593, -0.24720917613413934, -0.3605679983284582, -0.6613196865194579, -0.41998189317162704, -1.4697058573054282, 0.8301051921559156, 0.41312510613488473, -0.3119279752724232, 0.4832898322611189, 0.07210674722777907, 0.46221378683028386, -0.37907311341065303, 1.0338668347332045, 1.827883401988348, 1.4366607957461852, 0.00961089155518196, 1.1215412005788055, -0.9367274619902408, -0.6322235536233912, -0.4955048405923246, 0.4275765566731029, -0.4174196455050283, 1.0639045161507725, 0.17385489080177374, 1.884693292443038, -0.9174412411641567, 0.28332303940663434, 0.5154356751840908, 0.4527845805518231, -1.0762757525300937, -1.179877567884639, 0.05121250188699606, -0.8370218706835116, 0.3936578615259371, 0.4760963910597331, 0.5554786252919994, 0.623642262045472, 1.1315240293178561, 0.6513772767640275, 0.9117480009446275, 2.0918988065309074, -0.18111164825082318, 0.14578447935362185, 0.7752307161020041, -0.7579177299008238, -1.4643865224645813, 0.03389748036349978, 2.120628606940419, 0.8014787143841253, -0.20745942068486495, -0.2879768579253691, -0.44376875474220623, -1.431453126891794, -0.11047101043242392, 0.24254161271823366, -1.3890767080063884, 0.3551940772843608, -0.4821841102534756, -1.7404902110705263, -0.40990083463094634, 1.8406160691146698, 1.1343291794639416, -0.8770360698657584, -1.308217262167615, -0.06936303775634156, -0.39764667123450276, 0.5769725286701373, 0.5896270638633384, 0.9362446576484363, -0.27937299969585233, -0.610273978130261, 0.3618651906707751, -1.2687776942664193, 1.0626862705466873, 0.1667616956765533, 0.8138441501785322, 1.6828432679771586, 1.49682253754663, -1.1863230769603135, -1.5117519393616556, 0.294281094993007, -0.2266617043180088, -0.41000204751825736, 0.290692491485043, 0.2610713689915173, -1.4803962625447804, -0.28203213808230204, -0.31875591594593894, -0.7579009703382211, 2.4195675460926807, 2.247768381111992, -1.2980855885884446, -0.6529880062202584, -1.1234187168399243, -0.6956208755464927, 0.18965693411991652, -0.7362169554932866, 1.7754003059642411, -1.4235677497447479, 1.2291191037431475, 0.723527014546075, -1.3435315937863141, -0.17217271634298267, 0.14983346550614027, -0.21891340206561175, -0.010486184647393863, 1.2886811180355797, 0.10616567929962695, -0.609164835229734, -2.4211016076172376, 0.9463913483379409, -1.2980770068731349, -2.686933468264052, -0.03499567459563232, -0.34422522533382366, -0.0004908173861640336, 0.6734912677572197, 0.3525723705153651, 0.26758049299320774, 1.0529967718142275, -1.0999426989251082, 0.607473797642488, -0.4324428804621579, -0.8747836211413581, -0.7615340045466905, -1.3987613199365359, 1.4760791332584298, -0.6692014546820036, 0.04206641378767387, -0.9954780884334878, -0.7367371645074806, -0.21469214077392976, 0.79863673183808, 0.5075977458329036, -1.1234803559227962, -0.11931261167544333, -0.9031732659236469, -1.5609889694409194, 0.027729684273670476, -0.0017713213496273143, -1.7998106503968425, -1.498807717939337, 0.8169615081274427, -1.225033387547948, -0.8400996437124898, -0.8235377496257132, -0.4364264295280201, -0.01520214370946306, -0.15565017655025964, 0.0711312016026537, 1.1732559505317561, 0.5421847899339702, -1.086805433546504, 0.08813241769030257, -1.3579610652989789, -0.95942170120491, 1.459939956281907, 1.0117046306174486, 1.236197607064445, -1.2847595366907714, 0.47824603981077524, 0.30763463139827374, 1.1982758403837634, -0.3864008241497015, -0.26343272683881636, -1.750741728784698, -0.7351692274922426, -1.1349702581587906, 1.587266678692178, -1.2860170377857756, -0.4801752859875242, 1.6636658079534445, -1.3553330327978614, -0.9100195679190681, -1.0672796342182451, 0.5487025003986162, -0.1791076550181655, -0.08327198475097396, -1.3750289943854572, 0.4208708674265662, 0.6401350535533352, -0.14063353058666744, 1.3736446383002492, 0.9976936151350384, 1.1041690429383328, 0.5683312485637652, -1.3367051291338052, 0.2753721538148257, -1.6017596501358158, 2.0374743389978627, 1.0455690189454758, -1.938665276478024, 1.252770550122401, 0.2561807897177513, 0.6323524439681041, 0.44731860905074394, -1.5602090121872974, 0.16086045997109896, -0.8663998447283321, -0.15184679830362122, -1.8365049505188262, -0.6194981237001738, -0.6491132407601561, -1.4279315144128575, -1.4527159141395913, -1.2860024861530703, 1.945998082166153, -0.4013256550665814, -0.23659055793172576, 1.6616248255857569, 0.9472591623961788, 0.22914631673454838, 0.4811708838672695, -2.4575219310050103, 1.3898278424498873, 0.20730337920079658, 0.8863788687809607, -0.5916662331186044, -1.4299091422968209, 0.025064490896124083, 1.8440846679363176, 1.0939727242689221, 0.7256395410256029, -0.8590688058956931, 0.33189582274019075, 0.00448664532664562, -0.6480863852455645, -0.19365121140022182, -0.769665428394861, -0.6311931076898489, -1.3627698357475697, 0.6622092567614445, 0.24357517704777013, 0.503103320093718, -0.20595689226841954, -0.13618936070901688, -0.019650584704433195, 0.7262082426269985, -0.506270084550158, -0.7099417203135552, 0.45165053042716463, 1.1300405981040555, -0.24719613566322082, 1.2071293877520475, 0.435400868244206, -0.6142313942856545, -0.2808055784619822, 1.332735503169351, -1.1560021403810814, -0.6195875521757297, 0.25810834246088477, -1.4065218105605355, -1.3610928866213383, -1.1598317103172542, -0.3269341470162602, 0.08570043587182144, -1.9223819765041372, -1.0843685493072819, -1.6036518992044688, -1.0540791458678187, 0.5783162278332646, -0.3724907451950873, 0.7280800945640448, -0.08142618606573834, -0.8401997607017293, 0.4112577930821558, 1.5228201136451585, 0.127297463548603, -1.2407599011227048, -0.8552188536617934, -1.4741717842067263, 1.2671552063447231, 1.2337003308820302, 0.2110414345000711, -0.49591180781239114, -0.7461512339849881, 0.46865565860373054, -0.29715235983531224, -0.12386177897129297, 0.505578016119112, -0.759425281130206, 1.1922469683938692, 0.7741861134374209, 0.05774506261158576, 2.127957081016315, -1.5401055327147126, -0.9942873953265658, 0.7559867086719737, -1.1410350461719765, -0.9659194892052072, 1.6982344632787765, -0.20931069081798342, 0.17013249407359873, 0.7270923030390775, 0.7204891484463551, -0.39207799039317925, -0.7155255221813551, 1.5011465291329578, 0.5459497541973576, 0.07243706212858651, -0.4803076283069569, -1.0054943042359705, -0.5237739778480014, -0.09835515549724476, 0.5775290716411025, 0.9348827174613787, -1.1210113987995936, -0.7552071013929652, -1.0007141329301783, 1.130624877307917, 0.2722502138472599, -1.7108387910528222, -1.1062867754981813, 0.5689569196095314, 1.398762352581004, -0.33899470403862797, -2.076656356422838, -1.0004947044013306, -0.06246586753421959, 0.3367745011191109, 1.202712320404443, 0.12986086111190515, 0.47863453049805044, -0.5301057190296372, 1.1951555259879219, 1.0407276314629512, -0.6060289812671181, -0.45188168827767916, 1.1672764414566084, -0.7601267361673396, -0.16562850009431018, -0.43860049222365943, 0.19265871886562935, 0.3369896727544974, 1.0727046962527615, 0.35280285161085073, -0.7944425795053791, 0.4195206213331096, -1.2168293697790002, -0.6443114053235841, -0.525365919337175, -0.9060734662625927, 1.1385254001814025, -0.889916275322328, 0.5268352654420474, -0.009977679759738923, -0.7448851196209746, -0.44666312777814293, -0.11724072209427554, -0.9165098978210413, 0.40637929060102135, -0.6093457976035641, -0.20545838480263884, -0.8249002512298813, -0.8187706458007767, 0.4689683976066863, 0.465846208938873, -0.5387718100480267, 0.29854415380834715, -1.3665663590081276, 0.6177965287355739, -0.21396707680556573, -1.7406726509793795, -0.9472077744730275, 1.2519402070664514, -1.500777460440331, 1.8997820918004282, -0.9743457775230356, 0.3295729377044873, 0.7301012356968105, -1.2391980530651758, 0.9236351835845457, 0.6089290100942146, -0.12102325767564293, 1.3403384783597367, -0.10824453003093894, -0.7827461172580052, 0.8781962552006474, 0.034791693460034315, 1.4473751097143777, 1.203987441260602, -0.6198007001117833, 1.301362501195787, 0.30216625220261106, -0.39889697987982026, 1.4638160519035035, 1.4441827711806823, 0.5084134433716269, -0.6532108007553509, 0.1035243161974872, 0.3054072741705922, -0.34435155003796397, -1.0278570477914484, -0.12173258785663424, 0.5950528675438397, -0.9207821659942775, 0.7261815748689618, 0.7245355697839364, 0.7604354547177733, -0.5960613431486281, -0.12501859797022763, 0.4557109402631586, -0.4506714771692287, 0.11847291756872175, 0.39464486011730787, 1.0377336775259156, -0.7663128158804938, 1.222002486711219, -2.508898843182651, -0.5222022711446821, 1.5139575345025822, -0.36009115973957706, -0.49699571473838994, -0.7320998923855627, 0.001340784350614637, 2.287441638998896, 2.6831380407821084, 0.9455827325947566, -0.6608925110148092, -0.5298256491030603, 0.45598613407332417, 0.9056367098865701, 0.3468095182692027, -0.41128275516824825, -1.9946284216093966, 1.3045604895745035, -0.31854406317287715, 0.5219610405531087, -0.6641421031054549, -0.8688348040549531, -1.4043267718460093, 0.30435888123608246, 1.7846564254581045, -0.9673767387337057, -0.2252780643800041, -0.05837566001580252, 0.4291753233203228, 0.5442117526259592, 1.694634248553822, 1.2354760527115538, 0.7959395609646354, -0.8911113251956342, 0.3981107862143589, -0.6038191850464151, 1.410835808709077, -2.11493035968152, 0.06393518361722653, -0.029139117833403446, -1.0055963360448883, -0.7926601642106428, -0.9735425062205508, 0.4554630839524932, -1.2992896271871042, 0.17829226436911383, 1.5977020899206693, 0.5447850111120647, 0.17559902453769902, -1.4737831888237733, -1.0419185868083787, -0.6982628146742288, 0.2928989175106737, -0.8214315460621029, 1.0127275799116227, 2.540754369404317, 0.12669952550269392, -1.1844739993372275, 0.04189705377801499, 0.19439551671935018, 1.4521501913227826, 0.9787682718988012, -0.10502618788525488, -1.545636873356207, 0.41955502862273386, 1.6344397845287502, -0.6996137533248805, 0.7734222385388448, 0.7646349717820928, 0.36213834223499025, -1.2242281615824748, 0.2849485575478564, 0.34587641407530284, -0.7695467082668787, -1.878968801793851, 0.6439945266787103, 0.39401855978146333, -1.846270591936921, 0.8119840231832707, 0.4632560672239587, 0.8872512984658244, -0.6531242638897106, 0.8234509000335084, -0.8470430861883507, 0.7043960474728573, 0.16029656369225695, -0.9199716837319385, 1.7516428594841185, 1.53571695111567, -0.5923963974647823, -0.09421724289639898, 0.6951583529670979, -0.9029293377217025, -0.5403629622028528, 0.6026873450172656, -0.8904457098799401, -0.18153071461918635, -0.7683616776084702, -0.7723477433968918, -1.1385745044486548, 1.2990481267032234, 0.6920712069054653, 0.13819751107759315, -1.6994515863979083, -1.6867607272487752, 0.11386912747556614, -1.4741086101976333, -0.4084554473716878, 1.2611098853442282, -0.29302661250863893, -2.0886778227205594, 1.461016480023341, 0.42560541758942194, 0.6191588554531684, -0.5985193479741547, -0.47737501108118235, -1.34361075336494, 0.44109611654147907, -1.1504741483205345, 0.12452161850318348, -0.26145501283663203, 1.0737929954280732, -0.3919359249696162, 0.7833381602627896, 0.4920754113025742, 0.7181988996772725, -1.2868290476443027, -0.5794523266184156, 2.077603848983364, -0.6799665641060869, 1.189260513704343, 0.20931239869905546, -2.3009614984683644, -0.4660635928974643, -0.0830634473482318, -0.6258324519513977, -0.37209211976632794, -1.4939045852147155, 0.8393277068222, -0.19085594755902638, 0.6591988409228787, 1.2272709847028767, 0.06978447405544162, -0.12326350295229303, 0.4001647745043678, 1.8718755909371418, -0.6642196576581617, -1.177488097714965, -0.2921906301066324, 0.35352988537757307, 0.6046877389175205, -0.46544921540870143, 1.3311200985616656, -0.3326058332617738, -0.33093067100049683, 0.8306989177074579, -1.1200409825086644, 0.8296377545936948, 1.62299765872056, -0.8169754874480261, -0.24116708825317848, -0.47162079773443777, -1.8381312799299088, -0.4816987181224384, 1.4153255218561738, 0.5404300549763246, 1.134165955447205, 0.36168092874820507, -1.0277579618997654, 0.05064223484110245, 1.2814696296764614, -1.3027980677359505, -0.7545827594608056, 2.355379772816784, 2.04718791252273, -1.759834086257933, 0.8184067330416113, -0.562184039487719, -1.0738447527439543, 1.0973524489753268, 1.9618314891849296, 0.5705572269774465, 0.046663848882222324, 0.6489189020968069, 1.0612872544961902, 0.10979465007800482, -0.08424919865351914, -0.046667928646890046, 0.01001877915514528, 0.5755430190021412, 0.39333359256220896, -1.3620271852148316, 0.7432663945852148, 0.8410052507767574, 0.7560345480854492, -0.6405935855372006, -0.7185790399995472, 0.8929178346215048, 0.027651783756700472, 1.4242859506295802, 1.3972167882558741, 0.49132298190860557, 1.2099518385773633, -1.1213635437310359, 1.7266262581251506, 0.6799784552405994, -0.24016735136695966, 1.4215773652232737, 0.3292899527453197, 0.13524241974414905, -0.6033204455513134, 1.2434604281943695, -1.3676515621225143, -0.29194920862061935, -0.5181588907438721, -0.8497114521365112, 0.18939885573177215, -1.405921031876885, 0.6278696550297107, -0.19610956093284193, 0.04397693978192499, 1.27214363752744, 0.4762447251944673, -1.1370577022172665, 0.3990519149808553, -0.03191869811931289, 0.11133077808104638, -1.3445513835383933, -0.6573925555742512, -1.8568976733896805, 0.4153648416666165, 1.1666478841476853, -0.46112981399687764, 0.9535530862878486, 0.3473471655658854, -0.4161422881398393, -0.36198900956783775, -0.6339438086298942, -1.3944739484632676, -0.20387130619003158, -1.2701487841608123, 0.8796180040454592, 1.788948584745946, -1.1631704471876354, -1.961477519039208, 0.06590179873448668, -0.41614806490650597, -0.266000444569746, 0.1643712657991143, 0.38488576234322136, 0.2840733616903701, -1.0787563446019552, 1.1302339241072494, 0.7397220744929801, 0.10555634094791072, 1.5575703663389617, 1.4916593464656478, -0.1350848011563506, -0.5955564946507164, -0.9779825570939976, 1.4575816264107626, -0.5635566812842832, -0.13730254477957476, 3.1760359675054914, 1.5468541517541319, 0.6712301995907592, -0.3010794489170866, 2.375386241376686, 0.39676442311673654, -1.2083016255148442, -0.08960307423878197, 0.3356703315379674, -0.298976814312964, -1.7665651290994233, -1.092767255651449, 1.3975407829596296, 1.141874801312204, -0.9828236038024252, 3.4474956927651337, -1.0339825534946439, -0.22625665352238514, -0.5013121080507481, -1.8800871143889077, -0.8372845710288846, -1.10244612265024, -0.3821121209536119, 0.08810124426666355, -0.6071774956226643, -0.15564993281113088, 1.022293595012591, 0.9689358555384477, -2.5957409768073245, -0.42027115973485385, -0.0461425798346585, 1.9376580364864786, 1.3588702019634644, 0.3263146874682954, 1.581370038498723, 0.7910848434880573, -2.460697055036825, 0.6447035193294413, -0.24547841579497692, -0.07769395725697413, -1.1061309579704512, 0.49835521087482404, 0.28668491714510613, -1.2325612333443072, -0.6448462257352514, 0.6067798642374093, -0.8354277456713564, -0.130333521585836, -0.9088480640459227, 1.3638181337811686, 1.3142064281473396, 0.2849199073658345, 0.592125761379138, 0.5012574226736635, 0.5318564513368325, -1.2555614763203795, -0.2193018045216694, -0.8128170056509231, 0.2508398220742027, -1.892210580413274, -1.2602630407674884, 0.0009566262638368953, 0.8443361157461801, 1.0745886240915608, 0.8806279132304711, 1.3774160713468802, -0.19850197254674795, 1.2234601520436406, 0.5881989810255106, -0.4965304502203755, -0.9766777894153844, -0.21817961411038742, 1.419239328081392, -1.6703766117775312, 0.41191565756029835, 0.5099444391903665, -1.4309207608869086, -0.015024811232282593, 1.9220050485455538, 0.8175509219535936, 0.08115843671613096, 0.00670673012745847, 0.4372668690607546, 0.17009166575934964, 0.9482553703319297, -0.2773813968150354, -1.6498126033020835, 0.11117370308283465, 2.0511476913856406, 0.4372657274738833, -0.7946302231549325, 0.07669974844112153, 1.260664230909938, -1.5213565790072734, -0.26684094546500337, -1.781805734225342, 1.3731126700876528, -0.5693906145441722, -0.7467107303747241, 0.30046251963870085, 0.5421086409579616, 0.8194948647249047, 0.553142239737994, 2.485647389509429, 2.047571834848655, 1.0547915487532276, -0.8404839317066655, -0.836914713668649, 1.2478277285342685, -0.9398734941624577, 1.3858886068530871, 0.6584361564011335, -0.32532143347778014, 0.1671936246779602, 0.6090123241409612, -1.0924306659919145, 0.8248616990025323, 0.40239815358228387, -1.3215398823928493, -0.3695707657351879, -0.4677903230735593, -1.4563234165763541, 0.2465317823851017, -1.507844840921064, -0.11213116060164738, 0.8182082579799453, 0.2257379259786798, 0.5232663992732692, 0.3677500720568211, 0.0890331713821522, 1.0175234856545008, -0.5316019239972422, 0.008273393570788342, -0.5142557769956214, 1.3236020557952743, 1.1683267443828442, -1.326046400550978, -0.877558359633544, -1.2811663730152782, -0.007179640854720999, -0.1558221865207312, 0.5717555419933172, 1.400174656314241, 0.5405546279191125, -0.6066094336440838, 0.3074008062852501, -0.7266655582548127, 1.0200651816876847, -0.9169096044014198, -0.005352229277594311, 0.9229483990313, -0.5050805874169455, -0.7830498896948143, -1.201873278369289, 0.6032417486934556, -1.1946344297396054, 0.2240479886640547, -1.332033491041734, 0.3621050864222061, -0.7508280591488423, -0.6990041625840486, -0.3589843137912688, -1.1294768284497914, 0.08522935573665827, -0.8932238012324163, 1.4598549115209354, -1.4447712869600169, 1.161056885783272, -1.3625301397704557, -0.035297958124361, -0.33008069949103136, 0.5239932036193977, -0.9535748485371196, -1.4160404491189216, -1.2653282493985, 0.9528088241690057, 1.8950184827415795, 0.536660694982275, 1.0358009972485072, 0.33684764607473267, -0.03807672876925321, -1.023646734531218, 0.40397027552612724, -1.3087493812000008, 0.48272717104738166, -0.9539524744639091, 0.6839967409804478, 0.6443820369253852, 0.31683998325190177, -0.13585198410986143, -0.46836797703096, -1.1069337244040973, 1.2699629292559889, -0.7617963846193975, 1.4541756482189356, 1.4282755674874026, -0.1861092734243662, -1.6655794153163535, -0.9018831271999473, -1.037689638483834, 0.8498409192473517, -0.07982833124499089, -1.2088906569879048, 1.9388046452293908, -0.6512630617583657, 1.1866504013111483, -0.33869047227217647, -0.4062584258255965, -0.13047088702582313, -0.2920609026154828, -1.5721710704372442, -0.7529385991063793, -0.4409489430185798, 0.6573725024011854, 0.9779867268215527, -1.1338038691333352, -0.03676275814229943, -1.3700180959347181, 0.4980096428874349, -1.8841567320644628, -0.36671037716186844, -0.33102623775307954, 0.44082885192374405, 1.613113523011985, 0.23245328885846092, -1.936031194784913, -0.6863173758499714, -1.403980406004003, 0.5048363560164861, 0.2836464927146788, -0.10581740020796536, -0.6422446354858306, 0.03847861193968079, -1.6367117659354635, 0.7105602568018861, 1.9161683660322844, 1.1010957888549868, -0.12160407112688297, 1.4925214870472732, 0.3264326568315127, 0.1233803144398878, 0.046322463990348964, 0.7961360452240189, 0.2452347016349107, -0.48943896240142126, -0.9290930154151816, 1.3257611388643007, -1.2121987546438076, -0.4675832048242394, -1.408413616302921, 1.681812863852406, -1.4107609501193221, 0.9608162613161545, 1.3382523033803306, -1.142429334719264, 0.3068199062637968, -1.373229118623735, 0.7359602107842439, -0.08027367417510534, 0.5703393562713633, 0.8224893358060019, -1.2675332626508233, 0.09157528929486593, -0.6239271870188987, -1.333424030987914, 1.542228511553581, -0.8290994826950859, 1.6002179297200447, -0.7290687216113811, 0.9827490621042851, -1.016128789591686, 1.1178052087911723, -0.11201905921608454, 1.545158085939111, -1.201782983516858, 0.2987368142749938, -0.013881908859372263, -1.4662280689414051, 1.195364231090116, -1.0207840815730405, 0.6038293322962383, 0.6920833223124919, 0.48928276635174567, -0.20719681719458505, 1.0528037049861176, 1.340110048415235, 1.0572972351619618, -0.7972871839181324, -1.445715944658206, 0.249550573252273, 1.7425897413780096, -0.6146482994249365, 0.3414417673370007, 0.5211686346384714, -0.4720635039991762, -1.6866627876101177, -0.41908164540912235, 0.9350268770492959, 0.2628866171785153, -1.4272699417780046, -1.5176019318982594, -0.5045820104317634, 2.3669803699198972, 0.04468306472425897, -0.8506586820583893, 0.5357032817625664, -0.7504240210817026, 1.2244644861038698, 0.32030678738297486, 1.9346717432885199, 1.8091618397708604, 0.7016264290342246, -0.7543230939085693, 0.3718249353749545, -0.39747629739679413, 0.1755020796040547, 1.7617259402782062, -0.6484224375517338, 0.5942375319267897, 0.5412303781268201, 1.3148250600931315, -0.4591000552529005, -0.5181152695539641, 1.0888867653411374, -0.4218577232399481, -0.03314875902158776, -0.45525424561822153, 0.6620103621803525, -0.4828556213675988, 1.0197136724339582, 0.8136601745512939, -1.7574981376543641, 0.5152733116422641, 1.7275770946339244, -0.6596098468939191, 0.8691431128119826, -0.5019581461983088, 0.1369233115111857, 1.2132056318163653, -0.07648699416462335, 1.6772557940687784, 0.926974844165011, -0.039740256852109336, -1.6422093576684975, 1.472165824690626, -0.5312294981487146, 0.5660281554370863, 0.9002601404675714, -0.5193311511183563, -1.4261107490492029, 0.7193849792885922, -0.8161020873770328, 1.3926227501034782, -0.10765873957312352, -1.750080716659231, -1.2315289364819961, 1.5271676147265836, -1.3692385165909204, -1.2665210758120529, 0.5835547255432384, 1.5267142534760538, 0.4735793365879849, 0.2713271999760396, 0.8293178842537923, -0.3678275742008581, -0.5196865213591367, 1.2467715006725173, 0.36881071704357293, -0.013146295073653665, -0.3910850558251935, -0.4717852822314755, 1.058925836769312, 1.2611027845782836, -1.2125355152651964, -1.6680040155978901, 0.11644777354668061, -0.6098586620173682, 1.4767717300094048, 0.0954623781181105, 1.107261067809891, 0.5332249726108867, 2.027865524163214, 0.5776330966220249, -0.1584788333976485, 0.6221202243471828, 0.822805243465044, 1.875280493218953, 1.0643032788775597, -0.0032231663149655688, -0.783876097094789, -1.0049561715754778, -0.09434442862031094, 1.159075456642561, -1.7015354910808584, 0.43626266846062023, 0.4657480592549505, -2.3595114280610967, 0.432788235995093, 1.1432761980922856, -1.2312064629781365, 0.47490063643075286, -0.28730531011989763, -0.26041490757239677, -2.1502487223253324, 2.002776378754567, -0.6572916671523635, -0.6468504633660788, 0.22368175843112467, -0.7056222632601199, -0.10902101632296987, -0.12191577116310535, 0.2333724929750161, 1.5718955134357182, -0.5232145959705184, 0.6697172441294476, -0.4925971310656774, -1.1446072903750102, 0.8349991429830456, 1.0200201403878384, -0.8977027776830132, 0.18977908394646267, 1.4964190701230657, -2.6540996410436106, 0.32799163478787424, -0.8074216676664461, 2.066401169980402, 2.509721984172877, -1.2264705966483058, -0.25822269433889045, -0.4480735859571536, 1.041820098630538, -0.693824507410013, 0.8791204277882693, 0.7037151344594822, -1.9977526467992452, 0.2157094268939756, -0.8146138503383921, -0.5977126284420752, 0.19219664371439094, -0.9859202287793376, -2.3682295377243645, -1.2913932275907674, 0.22696508074722685, 1.6407744690151982, 0.0480691978209954, -0.9966208197342079, 1.11889000511201, 0.055360709785356864, 2.161209836417307, -1.3704452982024895, 0.1620107139280786, 1.6935580592037394, -1.81141037991999, 0.4953254858094202, -0.6200845763863535, -0.4030152273570181, 1.9463103138523798, -0.48212576394146445, 1.6089090600319198, -1.1366638959357926, -1.6052774277617399, -0.47813886421591933, -0.8707692499175943, -0.20229126984501603, 0.17173503092906178, 1.1047377340309825, 0.5373785703708618, -1.5876796588068274, -1.1350981303051662, -0.6537352511089607, -0.1835463801348843, 0.7426490550608933, -0.0467107787449815, 1.248118109915001, 1.5524890878524804, -2.0084680514191806, -0.8159713739539352, -2.2848088931420065, -2.372309233730456, 2.2419857626757587, -0.3816077510920729, 0.7108618513078415, 0.09216683237316162, -0.42433779835516944, -0.06629069340678465, 1.2462956506064462, 0.11891915476573794, -0.8074432428697494, 1.0942537068290124, -0.33085780821604055, -1.1030272605184115, -0.04597990324972495, -1.461390865704153, -0.6649026362109189, 0.17729372155344567, 0.7571894944422922, 0.17210568890449163, 0.42634767130989204, -0.21152758583251302, 0.8842025248865851, 0.707894179465638, 1.181293809817535, -0.5576196967532386, -0.39767440147104705, 0.6261136824601904, 0.09416680314491302, -0.9432999224955897, -0.4798733122332927, 0.4698413593912798, -0.5301112335696907, -0.6225115798235682, -0.010179517498452952, -2.4149736340373655, 1.1241415524841798, -0.7384881145759171, 1.9364675418998223, -0.959887551414178, 0.28676342719419945, 1.733477852496386, 0.47070117017904045, -0.8415052898911937, 1.48342039099686, 0.1593815740133984, -1.0466970244656812, 0.35428426550521314, -0.8714460344191897, -1.772284863316179, 0.8553434412271401, 0.6431899649395725, 2.063848597546665, 1.2107520352104826, 2.068182515581034, -0.949826787922004, 1.55283475817559, 0.18702699770560685, -0.3142644472236707, 0.18807094004824762, 0.20872088585274678, 1.4946073381353722, -0.7270727909976298, -1.4616528319169775, 0.8902512659612491, 0.8397967248644236, -0.8310381295604786, -0.8630891545947001, 0.29222682765828795, 1.4445890756559074, -1.408345197598874, 0.7729936640614463, -0.5556592512747162, 1.0996078153848807, 1.4534847934773354, -0.8589893343576649, 1.0662489588346322, -0.8131357663444699, 1.8906549668204278, -0.221189396941947, -1.0066499489098275, 0.14833291807982577, -1.6944446869650207, 1.632367328013707, 0.4020635808682617, -1.869102265647399, 0.7511051409587467, 1.42836604641047, -0.6689545864836354, 0.7132732615745503, -0.037356754428425336, -1.4955905073070523, 0.6229077094186778, 0.3002815391057095, 0.40063712375861044, 0.7079213520824291, 0.39150882760380246, -0.665277265086938, -1.4631874840764194, 1.5154278721952714, -0.39079861469985133, -0.5171161188288925, 0.47240320094667826, -0.5680617901151106, -1.0849457635502189, 0.4598612881320188, 3.1976163385397074, 1.0060936340045976, -1.4829678245607811, 0.9298775421247323, -2.348820269680322, 1.4875415958593063, -0.3178590722956541, 0.1356924010752182, 0.21621700648737333, -0.23872149766619224, -0.38611367554412396, 0.7079229883060726, -0.2936924251847691, 0.17216377194136315, -0.6251678518688363, -0.6190596403307621, 1.0103278730986882, -0.42216692790377014, -0.6083934186789268, 0.48484746551641333, 1.0506326108080541, 0.18574134153247543, 1.674110486119981, 1.6908321897138245, 1.584396674715407, -0.6716403178792367, -2.1165124622742204, -0.7575386400758898, 0.42207025179163454, 0.34281900309511515, -0.17330930073486658, -0.5185221739427627, -0.6520860152162103, 0.02880708722030125, -0.7236136907093336, -0.7012590434919239, 0.9421047560257181, -0.6079997861419684, 0.30874446046730514, -0.5762449399777807, -0.41610271882814304, 0.15862039487955654, -0.1452834786642244, 0.03226987415993391, 0.84229162019877, -0.6933696474669173, 0.33663422390191694, -1.2150580083595408, 1.0076307089633902, 2.70409271869755, 0.30995661293173044, 0.6247436756056247, 0.08195954117181646, -1.4719055966627554, 0.803042507106028, 1.3021608863661167, 0.43434043468018996, 0.7974627211294567, -0.3682221393582528, -0.06403923371006702, 0.4170350364772233, 0.9541157159307389, 0.3239859963424095, -0.2949519680069482, 0.2619100970459515, -1.6511900176435539, 0.24934133729286487, -0.4154891414125775, 0.7849763826831557, -0.7841888048100197, -1.0286045457899349, 0.6553645303577179, 0.2653791661210467, -0.028721712652565425, -0.5496375596740606, -1.3471754095333917, -1.388799522496814, 0.29599312680859097, 2.140988791886186, -1.7758304801107512, -0.8660143027878295, -0.13855549523146243, 0.7423053567212846, 0.44908973109546657, 0.5684322570795058, 0.7170502881582332, -0.972793451864786, 1.0213495345802792, 0.3588891143774135, 1.4677584224643059, -1.8483066026640207, -1.0267595764809776, 0.8461892348632205, -1.1555368611628043, 0.6290502769928877, 0.6938132809945982, -0.6257637502682993, 0.07541789139329211, -0.2366005418237537, -0.35370856166896436, -0.807010114883981, 0.2605821179006874, 0.2423808558861513, -0.20913684813592306, 1.445612205825981, -0.16339120814322525, -0.28685192204171245, 1.6172348405102026, -0.24636947592105027, 1.6507389021911445, -0.9150073073042401, -1.4463083092451903, 1.8450467799321841, 1.6902670347280917, -1.8878093325127658, -0.28001777607518696, 2.0152721910595703, -0.3554080437826893, 0.3410600781005436, 0.3080846247560111, 0.4956327203352371, 0.23813604752289289, -2.862730990973833, 0.12978190732109626, -1.5902014047218211, 1.12682412380246, -1.5041496090466209, -0.10651038985747713, -1.335463053243616, 1.4022116059874739, -0.18269475995297718, -1.3404214162908434, -0.2438165410162293, 2.336027669010424, -0.8025341000321401, -0.07983117172640133, 0.9264513733160266, -1.4369204429877465, 0.658716342473419, -0.7939169687464911, -0.408484607372628, 1.081321363447789, -0.8278147672247551, 1.508807177607114, 0.5697618899554041, -0.5433190954101608, -0.34444959772498385, 1.4917081663181815, -1.6364404568511535, 1.088677730777631, -0.07743011620298457, 0.12679064943416948, -0.8422775912109417, 0.5204410421666292, 0.07816241030036447, -0.743203277087611, -0.2490679239134021, 0.296537366216279, -0.5802577510870809, -0.9727316982881665, -0.35347806043290736, -0.8964204184288705, 0.3118694011837782, 0.4272160752827559, -1.119951155966275, 0.8907214317482947, -0.6475131446929849, -0.8840313111682832, -0.7344446459241352, 0.23897405779048442, 1.5813119435145027, 0.571609333114801, 0.5054648516804614, -1.8867586637765072, -0.46210018982909373, 0.9548065220526738, -0.4770321781666495, 0.4675422030146951, -0.4463001426607724, -0.268935060413408, -0.4021684274370984, 2.1224401502693415, -0.5308353724645087, 0.2305268915721791, 0.1608750017124351, -0.900197705620758, 0.3127318821569574, 2.4681068345281907, -0.8490049971049308, 0.43895749888939467, 0.5864069300955381, 1.478184862839466, 0.6057649340496221, 0.866511884032407, 0.3839558739092927, 0.09528931157394888, -0.4023438236960017, -0.4953367269783747, -0.9411870219959466, 0.1449619784129578, -1.1659336494666324, -0.7043483767241477, 1.2177044932260268, -0.8968784595700237, -2.0180274699762313, 0.5569746847793453, 0.38572633069031625, -0.24109338697797905, 0.4264092604031469, -0.9226064296533822, -0.9777483292652849, -1.8614061954392773, -0.07181480501491022, -0.33916355744140897, -0.4913319447167086, 0.7409940265311785, 0.8195938255125932, 1.8760662842613385, -0.08022928270577098, -0.3617902098106558, 0.8773618510991119, -0.3026417513931259, 1.0746072114312424, 0.8949816226916981, -0.6064010457787304, 0.6104271933326174, -0.29251836991064384, -1.235928055595834, 1.1821055005631875, -0.2897775819027704, 0.6479427567431872, -1.7256511687931952, 0.2379834287461269, -0.6421838621896824, -0.3313666238103324, 0.11015187322020059, -1.1738282480311948, -0.6801063289945823, 1.0727263376369174, -0.12789818738063033, 1.1781691723419236, -0.7686061607983937, -0.6393035105594692, 0.9243691012328462, -0.7504431079196243, 0.8671446299467845, -0.698898758742007, -1.4195690799131522, 0.21204181061562222, 0.4516990863796165, -0.5488202376298091, 1.1769716081503954, -0.47339514182184983, -0.6706243964684786, -0.9391275890746287, -1.66916461604128, -0.32069248128125416, -0.9339415936059193, 1.6891904534141162, 0.448704117525186, -0.6576455996483718, -0.8787818682467556, 1.7783275330439052, 0.9849951430194023, -0.948815962845082, 0.04360439333359939, 1.1754643008394154, 0.4176607904866504, -0.032791860424978336, 1.6637836123504004, -0.6318610716818912, 0.4631965911323548, 0.7240844437060513, 0.42507353110252416, 2.223789705043405, -0.624587572177733, -1.3259578694687586, 1.821890903560027, 0.18282418791198085, 1.0718527529100068, -1.390080439023078, -0.7032982984900227, 0.606806535748979, 0.9807379610674246, -1.301799608995058, -1.2210833218836539, 0.8485594404128306, 0.9129734868959687, -1.609303253469617, -1.8896306217640972, -1.2745280345294823, -1.4589951124432525, 0.17397451011234072, -0.09849861993514802, 0.5213927711113006, 0.4464567604000436, 1.7658010428921032, -0.17334884721929977, -1.630863443675375, 0.10883356045207511, 0.9209592920512764, 2.506643391838216, 0.25920697127003867, -1.000610995686859, 1.2069309607629284, -0.8420265795888455, -0.5219090322847073, 1.0528496388391924, 3.4052517316861657, 0.3939521074267198, -1.2280870462459705, 0.7021465907786252, -0.848269051241505, 1.8523087243586671, 1.8942511988856663, -0.7324609521575315, -0.7405519451390545, 0.7825799663791051, -1.0570473532938447, 1.0071272154577544, 0.008367224499531539, -0.9832761022039055, 0.4619748421824861, 0.6054527978627932, -0.8069427471635754, 0.7695845202396114, 0.7255817354960545, -2.076356254004693, -1.866170928563386, 2.4960999423984482, 1.7821255702296483, 0.3249685672047233, 1.0516193586445621, 1.6029894061563263, 0.7111190742818572, -0.7186297277267051, 0.8266707092330077, -0.8172819525228391, 0.6694591532307673, 0.3170694850496892, -0.9984287239140569, -0.6246604296669839, 2.2772797990691647, 0.7458811584103926, -0.26479485589503565, 0.8890929266772621, 2.605058213283425, -0.4494919815199539, 0.2625572138302102, -1.4742411434507334, 0.6119113473927877, 1.3070889916855144, -0.44956874651117795, -0.5715779960963441, -0.8602100327750805, 0.10606974809893534, 1.6568916173993327, 0.6885256728955403, -0.2948202171449642, 1.5696072864217565, 0.899476846965225, -1.1070943362639738, 1.8975968381884851, -1.1062908985717914, 0.09202643450386803, 0.5179032468570114, 0.19738682741687985, 0.7832918030824878, -0.4175503084970734, 0.04748961117866384, -1.1431032202175238, -0.7876280793719912, -0.1670293961990677, -1.042531579871164, 1.4250241437929307, -0.5065603208361397, -0.05190576930487508, -0.9440633915033274, 0.5697559112545517, -0.19152297948200578, 0.014168618743096923, -0.7723577262137622, 1.0555673924267797, -0.3191246615023448, 0.10177303682522976, 0.2576454260927928, 0.09993013315995518, 2.4408592434196965, -0.1674045631751715, -2.5321239122945287, 0.5150701229891861, 0.8728012372431501, 0.1605968107424527, -0.13722954472953605, -0.13443581273542884, 0.24838805492190696, 0.9494869845586946, -0.8053048546223888, -0.4416437044439307, -0.5932230289976798, -2.0643157683856, -0.7809729727827792, 0.28847229101563315, 1.2875393651128213, 0.030979117600469074, -0.16633856709516748, 1.5324980852375782, -0.6468105502000671, 0.0373559919191076, 0.769892531358705, 0.42397577027479655, -0.139645087546484, -0.9427058228766325, -0.14560303293072532, 0.15531221334147638, 0.7867393096524915, -0.5932212618722055, 0.4862407608854612, -0.07780553709972224, 1.0490144034143574, -2.161361822163266, -0.2791053970836441, 0.2634627733105601, -1.5107411614291475, -0.5446415556288037, -1.2216533790784645, 1.497988454976838, -1.1092367045073637, -1.618664478117834, 0.9157906679850603, -0.2176025539922073, -1.8489698667637202, 0.3129035109422391, -1.5506214471694328, 0.23996231659805162, 0.43382470243213683, -1.2975465623015716, 0.3447086045230242, -0.5029629441562755, -1.0515292011570208, 0.4342286760696506, -0.13944564531024706, -0.3016669085440337, 0.2091053252025545, -0.2220062149826033, 2.2529183253773697, 0.09380606672705916, -1.3762881219090572, -1.0798033214501017, -0.030459679752091188, 1.0462656041957057, -0.5166066202685516, 1.099907646476609, -0.44810406970440003, -0.11226405829821795, 0.03079777593049583, -0.5730941391354524, -1.5304535066575236, -1.6366657813941712, -0.3672873484804794, 0.995515961126187, 0.09560804918091349, 0.367469145902725, 0.1649134830430658, 1.9434979202863867, 1.6446573868197591, 0.11229000519845835, 0.1176439522089831, -0.08402038714892086, 0.7274091035559674, -0.1815847476714992, -0.869284801742413, -0.8618126688825368, -0.9255303897325509, 0.675291066744399, -0.45590558967109956, -1.3881643437611735, 0.046983698579071434, -2.2593684559557246, -1.0714842437075964, -0.7980109810319539, 0.9376060820449048, 1.5088601684612821, 1.1401676515714214, -0.10893182605495363, -0.6793666542903476, 1.9224975768533579, -1.919045525488347, 0.5940059593484025, -0.07491402130843892, -1.2833894894614397, -0.012251254567757242, 1.0424262856623745, -1.4615127877407137, 1.5618547104206084, 1.3870856731187504, 0.6794906080144418, 0.6597456051505508, 1.1809752738189252, 0.6289022860101765, -0.6311541134061391, 1.2430525196600999, -0.1258884709654688, 0.03676529016321239, -0.15638601277079034, -1.9962862794970841, -1.0631859015069938, 0.3954333505187698, 1.305130180708799, -0.6198793866416389, -0.3671423775673435, -0.05091349499804217, 0.19572546628132184, 0.481387386454465, 0.18766811525805024, 0.4204577595863723, 0.31278547680895696, 2.260226631338183, -0.44163717594473184, 1.7281834262032811, 1.6610908786986758, -1.2346970008334854, 1.7791989418010552, -0.6921188907852247, 0.41412723052308587, 0.013963859727831377, 1.2495146354884694, 0.9217529559230451, -0.6408643293198005, -0.3656165913939135, 1.6408969472159909, 0.46769590500613, 1.2942189441837226, -2.4715771243751226, 0.4617271801485095, -1.3054611274711465, -0.6148341510806443, 0.5230236705061742, 0.1948581130574186, -0.8314871492327359, -0.23483236113230144, -1.3665590045394855, -0.14329578244546745, -1.807462368498706, 0.23801683948070443, -0.28981493648460016, -1.4362173161200273, 1.5602518232258726, 0.08045279279873387, 1.249783890153001, 0.026976636733625492, -0.39284231136024667, -0.20541102682291998, 0.39581632483835966, -0.4271835840370606, 0.8371704017648944, 0.2635251007081735, -0.7014811604960124, 0.0874164574098187, -0.6090513936305421, 0.24235117892116984, 0.9810895192151013, 0.8051030956141957, -0.033711366761932496, -0.1405561945796084, 0.8932360765812469, -0.2781538960944018, 0.19083714569711607, 1.1680467944309245, -0.876802883170169, -2.5359882587942857, 0.15717459862331037, 0.22749278757750177, 0.04618501623459061, -0.35514842522056567, 0.8668706188030013, -0.9972708114342066, -1.9786433296694181, 0.5447603805656711, -1.29987773563286, 0.24422468441969067, -0.8780654507613918, -0.1375102757192428, 2.362709945312936, -0.5102994863283247, -2.266949913807307, 0.47287943204761507, -0.4958325728592973, 1.6089495844965989, -0.4037770686515219, 0.9353787074591674, -2.113107054187719, 1.6432896343445524, 0.6023089914246612, 0.6625981775877482, -1.1477561641710432, 1.5082843130642087, 1.2879637708344551, 0.9632684685006433, 0.276232984051142, 1.3144782369860601, 1.3209816351528552, 0.053796140071209864, -0.4016237646146306, 1.0207985074811297, 1.471863012837933, 0.8696374882353123, 1.2014866344567057, -1.8078078993421411, 1.0601815230005722, 0.2828495091475873, -0.1316931030152692, 1.9409424148662304, 0.4796806532708648, 0.30952752417150853, 0.642261212971914, 1.2972810373469248, -0.5710516304874607, 1.296428671679604, 0.1882536400549766, 0.12024192413580576, 0.7482144125451611, -0.18022449922123449, 0.5193597474251914, -0.00015134736402941756, 1.2060122914372473, 0.400987603269216, 0.5805204623048469, -1.052764847449791, -1.0899041626739954, -0.26209920904526157, -0.45158221578290686, 0.23523486252012651, -0.45909954643471435, 1.0391700460549405, -1.1768146617436632, 0.6791469709199983, 1.011174817648215, 0.411199894209508, -0.7152198360224954, -1.1980320139463696, 0.4839032883340431, -1.5745057434452947, -0.41956356832710956, 0.9839964884211916, 0.015979923325116736, 0.2762049181371265, 0.6098483704805613, 0.4862291698694014, -0.4624922500096108, 0.2846677372677902, 1.367317839020472, -0.9474871099590387, -1.756106996546998, 0.2988197956163671, 1.495739110209002, 0.9277333393877758, -0.5643132881556219, -0.1558226529617167, -0.4888512541791814, 0.3410030049413046, 0.8125696535679003, -0.14506424114808303, -0.5563759421336263, -1.413259141058041, 0.4721963640474325, -1.336800515204708, 0.15802207902328172, 0.7713401976605815, -0.8451617487867245, 0.34178117698250476, 0.6229076512220945, 1.6110932188650129, -0.7181795974169856, 0.009266781617777662, -0.5588298639233481, -0.1767614344743045, -0.9226697694236917, 0.7076376663118469, -1.5566853652081156, -0.8619329742338163, 2.051139469309425, 1.0147636236527358, 0.4182684075319435, 1.8816350118726597, -0.45231597591557254, -2.177291625468745, 0.2818036067134789, 0.3528969484018996, 0.5094505048346659, 0.9557302887303304, -0.6754668943387816, -0.02729241829228328, -0.10185537856378798, -0.4591265210119423, 1.430262537673349, 0.2931013470203736, -0.42349373411850877, 1.2895062553420336, -1.254123931164029, 0.007274426609199737, -0.6746114093338123, 0.9946171745115864, 0.2864085373632313, -1.2280764417902754, -0.52661829084419, 1.5827795236366957, 0.15024675730990028, -0.4248525421861309, -0.5691386244762248, -1.2497033166837888, 0.7243884070840325, -0.8880262098400197, 0.022565602731663952, 2.813014693165735, 0.2524261198492061, -0.5815627560037311, 0.065952148847621, -1.5839049003439432, -0.32991814907198524, 1.3189945049352763, -0.9633738886349973, -0.7205611597593764, 0.29087939445256583, 0.0057889375667351094, 0.02150375939915354, 0.5103962896847007, -0.7791629303501022, -0.1566257320081451, -0.12533254753908293, 0.3677730246474584, 0.6808297404105077, -0.006814522630420675, -1.6332734431577842, -0.31084462878259445, -0.2816212687484363, 0.8306217769227588, -1.4223291833641392, -1.1328914140136568, -1.1798315543869777, 0.25880349272739006, -1.176722232598049, -0.9138103973636641, -1.4195908701604916, -0.9995107551919223, -1.82773175657593, 0.008499718134879552, -0.3447023347644645, 1.296344926519369, -0.43328033036609237, -0.6691715014457149, 0.5815463164249131, -1.351170406870033, 0.948354175015636, -1.7460166934842984, -0.394637468929365, -0.7854270758121915, -1.7802874942339497, 1.2686458890561711, 0.8564108501854661, 0.05383532865352654, 0.6253901471648027, -2.202145401537113, -0.041531422478273954, 0.29066318209770114, -0.5115801644049819, -0.2316865971443836, 0.04820236445222125, 2.043254030499081, 0.5378888526826829, -0.6502743062505872, 0.826238085727147, -0.9541804382014959, 0.6060754235439968, -0.27474418761709474, 0.8956610419016614, -1.0996407788536786, -0.257368300223374, -1.018696411251144, 0.6579800168488112, -1.7964528440425043, -0.8570639935152126, 0.42330444919804316, -1.1285000187041665, -0.25650286505666625, 0.24632151425551105, 0.24962408033917283, -1.156431660359815, -0.2432666473105903, 1.822498098193285, 0.3177090775637023, 1.3319015834176797, 0.4571443687995678, -0.15115069978271048, -0.9271093020874797, -0.4004107535270797, 0.18837621181964065, 0.2361034586065518, -0.049667590380486994, -0.7731735216366021, 1.5079696883540965, 0.2547235818307659, 1.710880865859913, 0.25423148693344516, -0.12417094682887361, 0.14355110585703812, -0.30889227644936884, -0.19518744408626176, -0.38657348236703737, 0.5747008941265317, 0.7763218624280281, -0.7932199304382765, -0.38004377705918146, 0.5546620950055203, 0.26238802318984583, -0.567803366150921, 1.2155283753301906, 1.1841352702569934, -0.36154499394302375, 0.48355518941861697, 0.028516722473608622, -0.5872424427404682, 1.3501269652114032, -0.4684289952147731, -0.3722041294537168, 0.2884795399986682, 0.06557171746910258, 0.04187102672842283, -1.2970923134475996, -0.01629195036762023, -0.9112994229878664, 2.0590829933787136, 0.39400030768000005, -0.7975908049246164, 0.24046578837235552, 1.504682832366687, -0.8911225638653535, -0.3936854489607823, -0.6384138322177773, 0.29369615979985814, -1.1026872898279598, 0.4356763930115034, -1.4259861740067266, 1.4839827513865715, 0.16538982992587942, -1.2275565773734964, -0.6469351862385775, 0.7977508692229875, 1.965560992268791, 0.8204484828263375, -0.09569261310086963, 1.0444105776920733, 0.3981939687558286, -0.17001990885000728, 0.03191303725869083, -0.22703800554331624, 1.8139801219827336, 0.918270672574204, -1.4990654058428237, 1.2013287338621885, -0.6573210575280002, -0.3475342578604577, 0.001024958794340004, -1.3091664900629916, 1.7052265295882478, 0.4253120949833701, 1.0311326194819417, -2.329708589685058, -1.5666613380497623, -0.20129982865454085, 1.4540261677025847, -0.062796460600534, -2.3750929169938804, -0.22853438210232366, -0.9911165491373074, -0.9849697798584544, 1.0908056348553017, -0.5335895092359707, 0.7114854381779321, -1.2006864703832458, -1.402537825666173, -1.6107945297750212, -0.06522295552167409, -0.22244804258316303, -0.6353277757640107, 1.1342357318491285, 1.1802856827413442, 0.7358095889904793, 0.4322781449509412, 0.1993641699969819, 0.04402596162369398, -0.618389217305553, -0.19855173166745999, -0.5969933305425132, 1.2023959036495757, 0.10533466463098612, -1.4071046643902017, -0.30217127261876753, -0.04403547820029734, -0.2335959164195668, -1.1388382692559194, 0.7969342297703721, 0.0025006347911576314, 0.4618061956689532, 0.9316220945417517, -0.586857161879394, -0.8038099773962392, -0.561632309015, -0.7319527488671081, -2.215500214281302, 1.2095052233589756, -0.6324676669003331, 1.8213621585713746, -0.16201666001698542, 0.9771306394522535, 0.08884650272073365, 0.17119383734576185, -0.052205598859868016, 0.6308204756962924, 1.2742399221121468, -0.8729416492214658, -0.41451142025139015, 1.0896473253676273, -0.11531924092553854, -1.0449722114717626, -1.3905060397760676, 0.01745826015650065, -1.1196034509026367, 0.16835781469295008, -1.1337994252104073, 0.6707102828626799, -0.1611008305495774, 1.8891773441773552, 0.22194994994725567, -0.8221389943598081, 0.14773366666584706, 0.7482169422869621, 0.8634619143586166, -0.28955079825767266, 0.7168358822007905, -2.0710700397722674, -0.5577499923860028, 1.3594786178950642, -0.06290120845238856, -0.6203795676764393, 0.37363430210542137, -0.6009801257039329, 1.685628214162959, -2.036958121665058, -2.2425671656367667, -1.9918630409006053, -1.376958147267138, -1.8638660542434666, -0.9750244314786808, 0.9080815115907477, 0.018142080648009342, -0.9320767794783268, 0.26546536698365886, -0.7622509288960355, -1.185039046008763, 0.3997987346703504, -0.8390830626369119, 0.7664612539005661, 1.1452390705220412, -0.44118709528048106, 0.26214721724628937, -0.4951545553209257, -0.11879885987832625, 1.3282328751747563, 0.06968815002457066, -1.1182821619345513, 0.23652079790675906, 0.3692795793157511, -1.140728747827738, 0.5263061454716625, -0.5207546968661813, -1.503533271861299, 1.685912359362119, 0.034636130743337525, -0.48051165567394033, 1.0460524144567587, -1.0839349618672527, -2.1211644723131724, -1.0311758922985133, -1.2021446452680054, 0.06983434930473358, -1.5815367050307532, 1.0876986546066656, 2.0186122729964926, 1.811073181558942, 2.061655680618017, 0.8146717603062831, -1.5968498453112046, -2.0662599115172653, -0.5461790439353942, -1.293954740300037, -0.04669787176283761, 0.23146865620783758, -0.588038234461568, 0.5933124208465305, -1.0163085846469417, 0.2521752390452931, -1.2106468003843902, 1.418999037385018, 1.1108278459257963, -1.2434580142633445, -0.5105267831106245, 1.962828854249686, -1.3742391623665489, 0.36301946174407, 1.9887587169725671, -0.11568422609670699, -0.642928398294438, -0.3803110761017083, 1.4124073508805255, 0.29869224683807033, 2.0608887843113273, -1.357435592557576, -0.04818489310611712, 0.9811928870760606, -0.40967432838228596, -0.3030480871350583, 0.9136149401717509, -1.0208925536710525, -0.3505675095839659, -1.71190823631273, 0.20144681297018477, -0.7142725656031783, 0.10941276154357217, -0.010518057969719493, 0.7986018616075307, 0.4091757607417071, 1.3254764619646495, 0.37900863212459757, 0.2801496864889041, -0.4903324954119249, 1.5611921907449, 0.8801581363850509, 0.23899617476391827, 0.4941237199528515, -0.19580489922245364, 3.06700252986585, 2.075939890459903, -1.0531656839887626, -0.5746240339508544, -1.2509817722769654, -0.02930485583633999, 0.4955890468754583, -0.18287439285074464, 0.4428019418512945, -0.7067595339381431, -0.5880758813860446, 1.1741037427266254, -2.2845558148071, -0.20091142427273523, -0.9327486743061679, 0.05419468096069937, 0.5696294165103171, 0.9711793150927074, 1.5638669636681488, -1.399980051448174, 1.6694377251663244, -0.5244820252135467, -1.257281067913892, 0.2808453440838143, 0.48904471670322064, 0.6563624003164797, -2.403734256558076, 1.8072200656396853, 0.7479993507037666, 0.8957599457510734, -1.1333475754839513, 0.6052811339871745, -0.4713654733277363, -0.7018354826915972, -0.14295613102166807, -0.854329570376376, 2.600781602195285, 0.15947531968114928, -1.9492123387745222, 0.4025575201110334, 0.5377569832746467, 0.8230410704104014, 0.38678827937826166, 1.1036337112977639, 0.3934547673395094, 0.30962342705126583, 1.139829687497562, -0.6649904581148862, -1.5139589626882188, 0.5785053189296201, -0.6976263977299514, -0.48521233846001877, -0.9001322196203593, -1.660622472181582, -2.2786897073448547, -0.6396523522765016, 0.42857993052128573, -0.47159666033630393, 0.09912656547054303, -0.8978325685014887, 0.63667062531427, -0.9285968325105913, -0.41245780364313256, 0.191616368806377, 0.6617774942176655, 1.3566617676123918, 0.02766324341023624, -1.0349560837804677, 0.9570579186595424, -0.13078780011810998, -0.7995854873426, 0.7151367410023329, -0.12167714338407565, 1.6209549425055911, 0.37634955414789306, -0.6846815563905236, -0.13340769738466304, 1.62999490749593, 0.24590379716684088, 2.080737900190375, 0.4807972440746681, 1.9233090609717092, -0.7457053375145688, 1.2931674090867675, -0.5389819127967479, 1.3378716219526687, 0.46191592051764446, -0.12685025114948897, -0.564392245951514, 0.054901669351109676, 0.9390772175487241, -0.2832080542168339, -0.2454859351558673, -1.8832700802531435, -0.16505100921916624, -0.6746837003668393, -0.1357900352713401, -0.2041348043523018, -0.37391290726473403, -0.4402500408509159, -1.2290888874925296, -0.13562273551657536, -1.6500691440373887, 0.46665062174560024, -0.24566106658181208, -0.797744380603796, 0.055547484850162934, -1.7195390885648585, -0.23801758053719915, -1.3385900681264526, 1.5281883065641328, -0.7190676510974615, -0.123355719896304, 0.7764022341446827, -0.30040150524704784, -0.3686167969737519, 0.0943659621832766, -0.3974661297032506, -0.6247729926926385, -1.3907256888978008, 0.3787327798855857, -0.1261918572820217, 0.333666129561352, -0.2268078626149827, 0.35899627766440534, 0.4003040718066842, 0.04939169628599765, 1.3181095248614239, -1.0040453137475622, 1.0270565232586033, -0.10527902120387268, 1.0184000283100978, 0.37032567852749, -1.1038727471781569, 2.06240141354978, 0.0724635819839709, -0.6749483178493708, 1.3752140381174898, -0.18527094825241655, -0.49771622437764096, -1.5563678592094914, 0.30641413633727077, 0.6888572155488026, -0.7813997319688913, -0.3334732608283706, 1.2077222840020747, -0.6696185160915793, -1.7441216997483413, -0.1443175790084589, 1.2530385228003316, 0.48953706269055897, -1.1454774810030333, -0.10072099150740713, -1.4690725419140442, 0.22773646275302892, 2.1495481922715567, -1.9763318246520143, 0.3734138241025368, 0.3678799166519874, 0.24199407601003217, -0.8317998284783682, -0.6175366203935166, -1.5435990936321167, 0.15257075985667826, 0.24569789929243, 0.2973109282823203, -1.0464692699857279, 1.4335012256250086, 0.7760340274462584, 0.030779877800647056, 0.13317012902523476, -0.6096349652250187, 1.8769504574256326, 1.8165778911592796, -2.029543137642918, -0.7314038673207472, 0.16788051959333397, -1.287512490286816, -0.17978414420698238, 0.6413441803591936, -0.03816736449793848, 0.14195508782466876, -1.3077696693750356, -0.2788578604231624, -0.7927822730097527, 0.033625917152435035, 0.22077326511399206, -0.5309962861055292, -0.14874114920579462, -2.1561599667291262, 0.21857950385145597, -0.39674562813596553, -0.6172994137123726, 0.7237763615783379, -0.6628173764404989, -0.09955687084553429, 0.7661708667508003, 2.050182109550436, -1.1343231763411903, -0.394150602661191, -0.4005731600700831, -0.6133729043121271, -0.006937209118528061, 0.8746192365726885, 0.9627065829455164, -0.004195755687396656, -1.431856899763485, 1.1723324732423348, -0.7907307751741902, -1.2383233071901971, 0.4450622193871014, 0.6135856643531975, 0.41087999419331056, -0.9106010889982076, 1.537140159071271, 1.203007531467209, 0.4522478618181492, 0.06901440689355592, 0.5616178375297155, -0.913304278073554, -0.617052799856045, 0.8513556242527552, 1.6492263827929101, 0.28736119321050707, 0.143060129811001, 0.13159474089261292, -0.556050658038526, -0.6819127080659984, 0.2854925491407574, -0.17685951799635244, -1.5861004634732518, 0.7398075993729516, -0.13718006475583142, -1.2360195428922787, -1.800475631340105, -0.6653270917294025, -0.24529552485016695, -0.3070462119648475, 0.5209731324914566, 0.8294618413486863, -0.17019749451831728, -0.23619342552685957, 0.03462283540349657, 0.2479211831622872, 0.721589399500632, 1.1742488499645927, -0.7209553934014017, -0.5677211833764197, -0.8920108887781215, -0.2951205793197307, -0.194041077024394, 0.07201516715432071, -1.7926897922269955, 0.5269357871669345, 1.0775869197853591, 0.5356448376759921, 1.6180226180054886, 0.09591731457863975, -0.3033610094512978, 0.35200443059829245, 0.6372500799705507, -0.6470129923265721, 0.4563870076575751, 0.3086697829408736, 0.15795477733282282, -0.28995254504887596, -1.3608513191181555, -0.5174181206012595, 0.15321158202821022, -1.0735391094616389, 0.9498709387195441, -1.1791274655949502, 0.3401662792087062, -1.3746370296756663, -1.820015514626756, 0.5904282098582874, -0.7640243887629617, 1.899332176169294, 1.8001612651602614, 0.11754067768731466, 0.3451387680566698, 0.4252773778706197, 1.2930499113213374, -0.13497558680801955, 0.8295099746093358, -0.06483231029486143, -0.4626305949889216, 1.7974505990090723, 0.357954244463521, -0.9446699924851863, 1.0753715521250267, 0.6468347012501044, 0.7325172508900486, -0.8235967956477911, -1.8197269407302108, -0.7527397495032649, -1.0471331516010438, 0.954992325464375, -0.6487949930861694, 0.5412489072541421, -0.9744135424772613, 1.1668079912055098, 0.5071573516626207, -1.4971922309648993, 1.6732330041304837, 0.6658466177075605, 0.004961040538083645, 0.9766610530990674, 1.217004629489626, 2.15632219900788, 0.2992554016895504, -0.19074076031070328, -0.08513462495764972, 1.4398343939227665, 0.7531587527492296, -2.434314852616728, 0.018698508958621483, 1.530666394156561, 1.4174088220386398, 0.39311606885126577, 0.8429893215764661, 0.6889143877613391, 1.7048899457191737, 0.8279914080421767, 0.3841808718708592, 0.4345613421962533, 0.9814598643661121, 1.1001489018141712, -0.5361865265613242, 0.21775129927781378, -0.5197236573250131, -0.9476378494963715, 0.8334286814456744, -1.447030660023786, 1.6027755842182616, 1.522909575863655, 1.3672741814009857, -1.6085273302015077, -0.6841212925165058, 0.8714988428569002, -0.7180711780751314, 0.5764950939705556, -0.09035661359187494, 1.0682344096280718, 0.27136338383972597, -1.093914555087802, -0.37115833509731555, -1.2339441459427007, -0.7985138795193706, -0.07775530075881103, 0.9386977073001513, 0.3186949805078729, -1.0013479121939963, 0.2068538637260416, 0.46704881675224336, 0.0930693446845866, 0.9087490791207049, -1.1095909880643675, 0.13620180501268486, -1.2318793580686687, 2.3698156234871006, -0.41043047284201517, 0.9647930068590418, 0.7035313262086113, -0.7357611817796008, -0.33944606940905453, 0.975792856064161, -0.7580109890249522, -0.9388831491865992, 0.16631539872440593, -0.9686623661641447, 0.11101021374002976, 1.2833168243970015, 2.3501189146758734, -0.7419808119512225, 3.3177770321629443, -0.378854974046106, 1.1894959769491664, 0.5170237486499323, 1.449757482527173, -0.11005429828053218, -0.7094783265215441, 0.10745076413242229, 1.6224830274878241, 0.025460594268897623, 0.6425343157670212, -0.31898415130533375, -1.0798679506403541, 0.5735256411790288, 1.3484671879831278, 1.1276215638225833, -0.7541391904025803, -0.00765546636667677, -1.4513065159005456, 0.463408611045455, 0.056782072073773386, -0.3398650955417231, -0.3278301461019186, -0.5506101111181769, -1.838129548833068, -0.6528412434007834, -0.22203922522726993, -0.11557789598708554, -1.9693756516575391, 0.10517217800088413, -1.034395434153627, -0.08008953380065702, -3.0001454304286095, -0.7355092140807842, 1.0594616327950752, -0.4189488435377704, 0.16781086931278816, -1.9669454509751187, -0.731458954443067, 0.01711080123922268, -1.0063738446337889, 1.1320693665450008, 0.31382355603718387, 1.0723003552935109, -0.48887663896467776, 0.16351892393813683, 0.6923423498891493, -1.2674896295636169, 1.1497258936055144, -0.8608042226343801, -0.9164072583967519, -1.487718346596927, 1.4350188139062847, -0.21184761253034057, 1.3710129669800468, -1.2943315365568762, -0.19362259003418086, 0.7187438609965356, -1.4536544736540666, 1.0156800590204957, 0.5854427384212253, -0.5260200198486596, -1.1553701278196844, -0.27349200057360523, -1.2338491844820385, 1.7074643949762172, 1.8501418087438086, 0.5436111298236262, 0.4744077558142584, 0.5678560114121703, -0.7181957190268707, 1.9652881178044732, -0.6639884519602309, 0.3479450777176482, -0.7279578424760957, -0.46058272586248855, -0.4390700834752314, 1.485071764115552, 1.4888034597366457, -1.9695365549171249, 0.6506253211085398, -0.2486297625885688, -0.5519419806661555, 0.1895096241785028, -0.8790965213306376, -0.6376838625799586, -0.8514356912425605, 0.44713349005542324, 0.8885460864971125, -0.984898049801574, 1.9226056756793166, 1.151756816890297, -1.3439533152505785, -1.3828305275303805, 0.9810008154794896, 0.5550625182987955, 1.9741629526950777, 0.8414467402239644, 0.9903516449069268, 0.30384787269295527, -0.5118420624618873, 0.21568313531934488, -0.1906549073376802, 0.9872047773741, 0.043447057275043346, -1.0722974377446446, 0.30840240507887645, 1.231529689961776, 1.289961254197282, -1.415052295757837, 0.3542872190261509, 0.5064578533223967, -0.7014386812841402, -0.21695269183024965, -0.8504048338756758, 1.9671268250571596, 1.0909763189822588, 1.1465910271880095, 0.9300579839066637, 0.19877285881355367, 0.4033127688590755, -0.5693078627176211, 0.2771445813826407, -0.5910526566968882, 2.277491279753263, 0.656638231269999, 0.7966594580004646, 0.5030962029782104, 1.2239112871910003, -2.135423288869684, 0.956905678821742, -0.29364649759959877, -0.5416351205869433, 0.4524513169226536, 2.1047567102187923, 1.2144059061100803, 0.15546139261435685, 2.0078238030698636, 0.6830117763416009, 0.21062683777699748, 0.3680381824722795, -1.921358153981379, 0.8720229260359057, -2.4572973110469056, -0.6789193350439231, -3.616244826516541, 0.5200969859479287, -0.8348270288277571, -1.5574761449522962, 0.6081958963575117, 0.19058848286262964, 1.0023339789202066, -0.3112079672420133, 0.44178370023062646, -0.5048076251130126, -1.3994069725233815, -0.17955195369335797, -0.06758378480990582, 1.7922435643746273, -0.6192862077789711, -1.6310903545738005, -1.1690021151149572, -1.2093145024199112, -3.09516529226863, 0.43169942287551266, 0.06218865917825329, 0.5839211556095644, -0.7134319737419914, -0.9162521618284151, -0.3378876880640738, 1.2878146580745333, -0.15439993951522968, 0.3077351479215355, -1.7206306176358126, -0.17985102389955504, 1.14519788200572, -0.8522103401341584, -0.3963647723939556, -0.7056726337225566, -0.37501801123158296, 1.4130923511612945, 0.11630436842876272, 1.185142796653237, 0.011204445485047487, -0.20302508970364014, 0.9178670073251192, 1.129883095823573, 0.42668333759774785, -0.7693262395031812, 0.5989106795317751, -2.1834227246100535, 0.5078594213457716, 0.9932110431979975, -0.017934502044962136, 0.014618718399019298, 0.43615689634540583, 2.2660916638054056, -1.4481002752982226, 0.6458685948033749, 0.45170197162057635, -0.7387052243324294, 1.3393361998974052, 0.6185085759613994, -0.36812460265029606, 0.11464668364155528, -1.791669964880979, -0.7254503276995763, -1.0220519870845493, 0.7459004970720945, -1.240093138147424, 0.36284766593900053, 1.1310636505387424, 0.21609065407695296, 0.9901982501221922, 1.4142801306207733, -0.5075874816754351, -1.8009636793346049, 2.3589933091709563, -0.043963810041906456, -0.9225837945409925, -0.6390092243100048, 0.10006348512241166, -0.9257763652451753, -0.6194490923758899, -1.0763155593061657, -2.788511038384896, 0.37967646564114543, 1.4376287260090312, -0.22804268789046647, -0.21979058106116164, -0.18220420821816138, -0.44937185484417963, 0.5740193687324415, 0.6373983419863073, 0.5856219393424119, 0.34112426931531764, -0.6084945465256884, 0.060234739722926374, 0.7847874077044223, -0.31357045824328467, -0.4526081006714111, 1.3140655172664333, -0.6237624307170951, 0.34610293084708627, -1.0050719223251598, -0.4541508223849615, 0.10854220774737425, -0.602040653782272, 1.0547536665950978, 0.7073102150037632, -0.9555005854035606, -2.0723034039377595, 0.5893216873540514, 0.1659232479155957, -0.691145872673244, 1.8692666106818923, -0.7005044755324946, 3.406168768770632, 0.6178045437029894, 0.209522404413903, 1.11020426427447, -0.935303827291181, -0.30107511733828557, 0.0005771812107460632, 0.6289350238005109, 1.4317466616428682, -1.7337209714531534, 0.33652676986636315, 1.2353463697524734, -0.5758839644664974, 0.8285985659333751, 0.018064999514862144, -0.8583929015402073, 1.640939453974592, 0.5647216927706189, 0.019320381958476556, -1.8626818101777476, 0.35623705928968014, -1.3920535728295902, -0.04025364308925709, -2.1219812182033895, 2.2492879960896084, -2.2117506504974447, -0.7015293372430998, -1.3386346301502519, 0.45434785513478976, 0.7429073598196138, -1.3842131227703087, -0.730674268674942, 1.8189971647722083, -0.4758820769224347, 0.4409253327910705, 0.9449444726231594, 0.551630007075062, 0.5399541172046803, 0.3885563045101157, 1.524994279141021, -0.7974884472315626, -0.6568938854009293, 0.27947376218479614, -0.4955153130182802, -0.08942974231790239, 1.3102764929145028, 1.5444242142322857, 0.476164533281359, -1.5496430190473407, -1.8678225332641818, -0.05437993080264503, 0.3236472053381355, -0.36746508462131555, 0.6826304187866886, 0.5736299498569932, 0.8053111300585767, 1.7107199047271453, 0.5683041332657001, 0.697952343937172, -0.6541864315768986, 0.364406640125318, 0.39958220554572854, -0.28761598269501143, 0.6201596788722094, -0.3666201942589558, -1.4101911998665215, -0.4412538914508458, -1.6829197968369678, 0.32907480828411917, -0.24881581245959397, -2.027089220978618, 0.7282873752125394, 0.4579330597709827, 1.15745181629871, 0.3236159180652725, 0.15743561049159477, -1.4532306051766954, -0.5917126528319241, 0.754060062389077, -0.3751247341071256, -0.4967717054593357, -1.1834916327999798, 1.2936501822037318, -2.0961349093879544, 1.0842624515579264, 0.004210702344412748, 0.8784821536444274, 1.6211488910349103, 0.6098625542626688, -2.162347704092384, 0.14557157851798416, 0.1956419307017713, 0.46311517202542646, 0.2606189680155636, -0.6442854252008431, 1.2224106966606128, 0.9032792502072324, -0.5921632526896037, -0.4403250314077104, 0.09900173255653308, 1.588518953960295, 1.5514984760944803, -0.1988361913928128, 0.42122454074468846, 0.09171832221402072, -0.05232317203714638, 0.5107161167447202, 0.6648048184574585, -0.5326903183397282, -0.40375562127323683, -0.9755898265306233, 1.093816318098742, 0.8299243008006667, -1.4928026705324111, -0.6150924237870229, 0.6827457566049314, -0.1250927382677157, -0.5461042938952528, -1.9785054425068482, 0.6621698769014782, 1.6911825874334077, -0.4512292838434167, 0.31893183399956626, -0.06938245071569392, -0.8685919574091027, -1.216755898801281, 0.43218338233503684, -1.482305424213906, -0.20624326083624842, -0.0987004649563861, 0.052580690462736515, 0.15082170348420298, 1.815968946976184, -1.801525657427965, -0.35269438817590215, 0.3165612132575932, -1.1274985211458544, -1.2081895706309593, 0.8947763791232438, 0.9256072483796912, 0.1160156247366876, -0.44837495229842944, -0.2739183590275094, 1.1153679055306462, 1.3928570054101417, -0.905378910739902, 0.7753045815203952, -0.33105364449783375, -1.5667536820401184, 1.1950148433456729, 0.354165616551781, 1.7647325336720354, 0.34842243659368244, -1.1445904695784506, -0.6488915404249679, -0.154811442924692, 1.647219601375317, 0.12852481855920034, 0.004310308986859974, -0.876142611650797, -1.1969960098569172, 2.505246673635534, -0.01839259972989579, -0.42338324819041095, 1.7006327293948955, -0.23835669566472859, -1.0830569238314645, -0.5058031215088832, 1.1137754394535067, -0.37799051437745823, 0.4689867373861166, 0.8846331641907219, -0.862827297911899, -0.02378812527403701, 0.7260021867969293, 1.1597883185839557, -0.23469208225352878, 2.113734390813324, -0.43787079759759806, 0.40094481205354565, -0.440940747042338, -0.11638255103314456, -0.5976246285724223, 0.10949744083274207, -1.213522552035225, -0.2801704266168622, -0.23088144999338397, 0.8531392120125499, -0.5131891025804275, 1.2147647043866772, 0.2396978620703071, -0.6513123608903771, 1.1189830026785335, -0.329502482141717, -0.4408963005006592, 1.7621110917013203, 0.37263249289836775, -0.4859330788946545, -0.6067042421983502, -0.652281974301976, 0.9767244079433385, 0.6586845642819952, -0.046623060723555695, -2.1849581690080555, 1.0767435169705282, 0.12722050362405046, 0.9986033617806298, 0.3243622406515602, 0.3488571494425995, -0.28194417652034437, -0.5174529713073618, -1.1589669416210095, -0.6257925557519216, 0.7845203905386896, -0.34496828558498516, -0.55392401828593, 0.21742125464736634, 0.1940339202350278, 0.5181013615346238, 0.6838608318277294, 0.0963437586410137, 0.16605883874954933, -0.8192859105507256, 0.3425249914970222, 1.206963641510476, 1.2072370620006596, -0.09132107400635489, -0.4915708710890753, 0.4788544238385019, -0.8129680193587631, -0.3597416459932602, -0.001935251987053423, -0.5173249508895911, -0.3901095063695634, -1.8048261251158957, 1.0191412836502698, -0.15735909472717494, 0.3259968219452401, 0.2983002122558138, -0.2865809153674455, 1.17563374798573, 0.9503886873331864, -0.017150838121724413, -1.5498598643101793, 2.568724923652603, -0.08029464734292162, 0.7019319162248578, -0.3680243157771866, -1.526918066370356, -1.5059053494163779, -1.509751062694838, 0.707105319149386, 0.3759576560377138, 0.6475726058839647, 1.338795258808114, 1.8598847911090388, -0.05763592033876413, -0.8688135009341061, 0.019960962804798733, 1.7401095555504877, -0.6280597716378297, 0.3473435634019159, -0.4462968771961304, 1.5433942416056965, 1.2587933112859289, -2.78079601104039, -0.47512302722136024, -0.065984099161594, 0.6888533485394165, 1.2305141892155638, -0.6518789292799052, 1.6086260544405733, 0.29196792037545233, 1.527761638614743, 1.6303894518830946, 0.15132243302789938, 0.7682912494990076, -2.7992162064438526, 0.252765632632188, -0.18536494230320436, 0.1286412370033291, 0.7444904216395526, 1.1101965867010084, 0.09583878264956507, 0.20541837056183218, -0.43900022720898685, 1.8446971502738685, 1.525269777862721, 0.34107287068465036, 1.370225466799814, 0.8993074950529176, 0.388987193739956, -0.41615197068085047, 1.6959480854121158, 0.6560019605281613, -0.059249535360658356, 0.3641096108993, -0.37088956582253585, -0.7118422460610452, -0.4547337947749852, 1.6833283452032104, -1.6932063886335549, 0.33007518208148007, -0.9793326842802514, -0.5685406484500056, -0.6764406676203423, 0.27223581970527805, 2.6210019152932134, -0.09677977060333055, -0.42338854207086507, 0.46197386760890474, 0.3011535518111016, 0.3182607957611916, 1.1190392605031392, 0.10747571439392618, 1.3205623217552738, -0.869982416258327, -0.3050369611353702, 0.3649867693439435, 0.7208855533271251, 2.45889669000764, -1.6481274773858574, -1.624333610347512, 0.5392519410260627, 1.1694640247181916, -1.4936888563147976, 0.22169790172897152, 2.47683597304532, 0.8476731372760178, -0.08882181771534245, 1.575370258034113, -0.4650474770641444, -0.301534039019897, 0.7151072657003036, -0.5139154643660516, -0.8973214534592038, 1.353278291959696, -0.785705814458699, -1.424798288107138, 0.8521605677636602, 1.1173074404160004, 1.1078334261149487, 0.5060403800263849, -0.7559434902011402, -1.7506912234691885, 1.6010916611258923, 1.1400621104262982, -0.9490178938632181, 0.08236269987589594, 1.1360090499605335, -0.6822008865400492, 1.2299082010225988, 0.5747472954848997, -0.9917405164498511, 0.7860707096819252, 2.094613031828752, 0.32476024918516005, -1.542485498562725, 0.19154241112008105, 0.30669357584478807, 0.37562510410149125, -1.0038556934540235, 0.17700385429720378, 0.3866792602527052, -0.048846256996197955, 1.0608228443140864, -0.3012251999336654, 1.2156737659864476, 0.04936433736528017, 0.3300941747271548, 0.13579425531133751, 2.0300902584395386, -0.3659348731125605, 0.5084747076597527, -1.214555459415656, 0.23882541455141687, -0.7048446726313435, -1.1718879290253827, 0.10611992491921178, 1.474365496672677, -0.7345685181989616, -0.36082108102321997, 0.9999061228905383, 0.8174526543777195, -0.012197041307958149, -1.7718376142638643, 0.5003281667388737, -1.4235098831155986, 1.773715315343277, 1.219914038937146, -2.213860133799711, -0.14916713468644752, 1.7628714799535847, 0.2339849515986858, -0.03761268839633734, 2.143907078190805, -1.0015286896665496, -0.40010337492322895, -0.6566439248016585, 1.4505614500774051, -0.5810568006549722, -1.6162077232566219, 0.18463910494905925, 0.7742911410807676, 0.14496376455100546, 0.8838498428601247, -0.34941054966462454, 2.02035055742048, -0.33887856780628234, -0.8213769209241042, 0.5669351554200318, -0.42298733389277077, -0.6005548745768965, 1.6430054310046425, 1.6035130190910534, -1.0319391121636672, -0.09774507597793355, -0.6520088992578232, 0.0477880560338064, 0.5747081768308763, 0.4828001936355227, -0.10582221958284689, -1.4668221584548882, 0.22049638564358517, 1.149953675035897, 0.5356482043193802, 2.209744990011742, -0.3608091685311371, 1.4441404573947205, -2.2581574537180726, -1.13629994945274, 0.7265837346915243, 0.3097883608445818, -0.8577004158636681, 0.17114666895138375, -0.7043940938451111, -0.3009786276980547, -0.8165363388123666, -0.9289682655079575, -0.12244992044143885, 1.542896177144803, -0.8841551589218146, -0.9208567330224402, -0.6540118144074791, -0.5171796742457738, -0.6023620659122336, 1.0635672960360585, -1.134330817545791, 0.7516849917169492, -1.3768346295850198, -0.2887033795344619, 0.056463263594405004, -0.2319843130014002, -1.5167554485466308, -0.25185231053466395, 0.9501800034747293, 1.3049896091031608, -1.2018551498395114, -1.352386595817521, 0.8816491221888422, -0.5136584805608818, 0.413721469429948, -0.34300581824604537, 0.6390192112355659, 0.2576064001530712, 0.9782101083250803, 0.6357892633788328, -2.538589768176732, 0.44695349034542475, 1.7303935529284833, -0.9684600861287586, 0.10236207599063739, -0.058130587212581325, -0.6593728867487116, 1.628655977372503, -0.9761527761546062, 0.9272948375646727, 0.27513668932269936, -1.8234460501370229, -0.9808233679288441, 0.3505076901816651, -0.5696532524323059, -0.3208932477679777, -0.7983286790842801, -0.2857415896451339, -1.1602067061862453, -0.6920493662799277, -0.7209260326374053, -2.4150876953168714, -1.345197705402757, 0.5891707013601143, 0.4315664458823607, -0.6577610674094022, 0.0005062460095738251, 1.2591509479456338, -0.6063765414897068, -1.7607966379468067, -0.9508899749801195, 1.4880740849985945, 1.0865988277002356, -1.1046192339132022, 0.6131311512926562, -0.9873330073605263, 1.3013956438407601, 0.7414214926541779, -0.8920958466820361, 0.41616978812279903, -1.1208556692016416, -0.8894703034997085, -0.8309067844131225, -1.8606842678184219, -0.07194654199784922, -0.07117390174891772, 0.5659822119815847, 1.916753711583183, -0.6963548682808837, -0.7855412487214021, 0.8047069590125108, 0.18349468568397984, 0.13587660177551125, -0.36150957824597807, -0.9508896526834771, -0.9483356430836982, -0.003902815411469966, 0.6106885504696978, 0.19376914373215087, 1.1932986357592312, -1.097567907692405, 0.25150655593518184, 0.4292062014732737, 1.0191286705659799, -0.03253742612676552, 0.050433113577438515, 0.10814583704412964, -1.05385401691128, -0.09071516667529367, -0.23849827593955103, 0.23738288144814607, 1.1169088997424437, 0.5886653092379591, -0.24354050181310793, 1.117611053039336, -0.2161013013225925, -0.7694711307041686, -0.2800587010869735, -0.8093412890185301, 0.1259803458217062, -0.3736394395978573}; + + +static double gemm_C_dram [64*64] = {0.029004260079962152, -0.8006824757561799, 1.1197336711178068, -0.9896157373454266, 0.4966790956650833, -0.320720861795497, 0.2404711868912757, 1.7983471339688688, -0.45215688264510606, 0.896961504429265, -1.1616159798557508, -0.840560393015905, 0.07480233754961872, 0.17992670342491432, 0.40524411436169705, -1.6268041045901802, -0.515842081058143, 0.3550333279229013, -0.7169358889557749, 0.2669144829157952, -0.7584809853254146, -0.8370380914872608, 0.48072270248825516, -0.40604137567306653, -1.0335439663756396, -2.069883524764944, 0.6487461014247821, 0.011710122578667713, 0.7558956908425195, 0.5521614840818139, -0.25174889683631496, -0.9515208767957234, 0.7906470835496024, 0.16009301473206583, -0.9156242627130992, -0.8294654016291866, 0.6405496416929598, -1.1150477048464416, -1.4778148420891877, -0.6532442833617729, 1.0668677881031745, 0.42505345945888107, 0.07673387953069587, 1.1717799752861355, 2.372817497973731, 0.31201596993898206, 0.6638888271489586, -0.8305561220137307, 0.028066442063465726, 0.5327162396709624, 0.1408772044753154, 0.7686937307721734, 1.2407913952843508, -1.7571668440478188, -1.4407261503018678, 0.46966304643082196, 1.067965459457961, -0.39086059969793585, 0.18266961756344147, -0.09601667538677204, -1.6541976778103968, 1.7762728362797546, 0.044625271683577473, -0.05332555492084246, 1.5519660869822542, -0.5164453460006669, 0.3735110292906932, -0.14055947835504265, -0.4662885370095864, -1.5754096176009653, -0.5279910388184064, 0.1877355482506709, -0.33550084881023345, -0.2335582239599356, -2.000574246170347, -0.5830606097499693, 0.7201314957738653, 0.2767541956493462, 0.4410172346230466, 0.1496171764974113, 0.25584855399911693, 0.4231757850905495, 0.819138838244574, -0.21665970285704256, 0.7993969106462642, -0.0524553739237593, -0.10297969217994243, 0.10341500732243082, 1.3960023077483688, -0.3532908554905869, 0.2203147660382962, -0.09582033114984764, -2.2210275614128365, 0.606197840696221, -0.8083685791528877, -0.5880259036476851, 1.3096925869345688, 0.14641410716326553, 1.0053476857132149, 0.7403000763828661, -0.5588102569869894, -1.8250095277930243, -1.0186046335834653, 0.7832698999328468, 0.3231401688432538, -0.8047074876514235, 0.22535724026429152, -1.3470992648831748, 0.4765280552548135, -0.04554836049444112, 1.0856094027781182, 0.11016455864671677, -0.07169925780054585, 0.0271210087334666, -1.880645185815656, -0.6627766870787014, -2.8871893512281774, -0.5590779904078584, -0.2852107316710877, -0.14430057889633358, -1.3447542589401562, 2.2915669321114898, 0.1728899952093592, -1.421973566402149, 0.08592097416861628, 1.0123703420638568, -0.9558110283152651, -0.9027941505852196, 0.5300767150099646, -1.9419175079586657, -0.2760382915222782, -1.0179287043200682, -0.1606599622524637, -0.3767181010147598, -1.1725123233730355, 0.9572648447195339, -0.1936224437544405, 0.42763321723323666, 0.0597133381305523, -0.9990105347232393, -0.4832753666973765, 0.6204763319584289, 1.960673372068261, 0.8079703046097372, -0.3452734166837273, 0.3245617375208927, -0.07491582919001254, 0.2743378624516145, 0.5983093934031979, -0.25216135518238597, 0.596753836231434, 2.245459616334286, -0.2948256683719357, 0.28882168918856443, 1.0813537774504756, 1.8535627999465232, 1.1961057282238132, 1.318252064967893, -0.3950711849667241, -1.377281651368375, -1.408790244923528, -0.4636389874147835, 0.4564524135315159, -1.6380091071491378, 0.9185995000712671, 0.4692427417861781, 1.276662831833898, -0.9447062381422022, 1.0877432601911943, -0.22886776336281126, -0.012711978863996708, -0.030811506691294257, 0.38780634756191124, -0.47366773078962465, 1.4814958435930687, -1.1828980688637942, -0.19863200267049605, -1.3001223272185354, -0.4242285448896925, 0.08898755668384477, -1.694063278944873, -1.6602985696240946, -0.6264097653393359, 2.1301257422525035, -0.9460005244382601, -0.5374812634338685, -0.43004926797690446, 0.29036657258875936, -0.8172987007397908, -0.5094563820595255, -0.6841925657572985, -0.008910378204569518, -0.7731489284211737, -0.616010025614043, 1.1972052729129066, 1.1413513407181342, 0.1378551765169379, -1.4064193442890494, 0.47683432031632644, -1.0476861800204984, -0.06901359480920458, -1.2496780870132282, 1.6753024031738708, 0.041143324574971704, -1.4522215930201885, 0.7573346464645373, -0.15931444765366126, -0.7557308301686515, 0.196471099443403, 0.9564572866814582, -1.4803875895078311, -0.9249142102969159, -1.0917150382335596, 1.2585219246267312, -1.2891710566522292, 0.2768772021936127, -0.11943879225386107, 1.4656182572667367, 0.021005580078823815, 1.015858071109535, 1.3572500812200858, 0.5985933296458931, 0.5118443929095804, 1.3341173368810655, 0.25975515970872654, -1.237917055905442, -1.5278312160468452, 2.1781558314592333, 0.4138981989747854, 0.9117147230752412, -0.0703340663019803, -1.0158619558246755, -0.10701579101103097, 1.1466314764426422, 1.6748325965852073, 0.5314453542027439, 0.22641290320796856, -0.6327321154028427, -0.3761520310209821, -0.9094876923198735, 0.5199396339404194, -0.6279140323320965, -0.5316788990880681, -0.7754230114648885, 1.6645731868153486, -0.25248989955644296, -0.07000691089126687, -1.4833807861581225, 0.2847398900881516, -0.4709041665604012, 0.21337597451344031, 0.4752659270130253, -0.6322357393536067, 0.8609686485998456, 0.6154141944357284, -0.5912751549232785, -1.3228568966598775, -0.0850817349853954, -0.8896445451859949, 0.30012988995739986, -2.946119896252344, 0.036167602681861456, -0.028803490284605167, -0.11461775128822176, -0.19075498390300027, 0.29202031786639293, -0.3294293306975217, -1.2138544157908646, -1.0972607879764735, 0.8248759718159153, -0.8925466032322242, -0.16541550491454302, -3.4465386476151045, -0.9566298189710206, -1.078687196973154, -0.4891250155546176, -0.19531569651548852, -0.5990381399213928, -0.7036039565674199, -0.5527767107100636, 0.16920318370993273, 0.5427235579499587, 0.5503428910211222, -0.7497767572001619, 0.011571029854715547, 0.49984033903822517, -1.7283983057101304, 0.8594792530055284, -0.12824597747986724, 1.130107130041837, -0.4987262662830606, -0.13416057776817544, 0.5080625985293201, 0.2117295363547809, -0.8118692986997613, 0.9424962371461574, 0.6300633108154001, 1.2746895140278918, -0.003615756251429331, -0.05126805599191769, -1.6138120917239291, 0.7882409923880206, -0.47367442818736116, -0.43963455311049604, 0.712317456491045, 1.3326960118808617, 0.5896451874379312, 0.9762107134249405, 0.5626831277485056, -0.4376044921422135, 1.5861409442199574, -0.3308751028344161, 0.45942840764057974, -1.7057231513870459, -0.9254725284067791, -0.11018949372955511, -0.7616338202748348, -1.0857700920096018, -0.4372008083571365, -0.40109369588497923, -0.644818536292368, 0.25281756977441044, 2.4197071280480786, -0.22106488208438388, -1.095650643379566, 1.894125695645947, -1.2761684375038809, 0.02036098869546291, 0.7947496785408548, 0.3421126605593487, 0.7949003661056283, 1.1747154329748026, -1.165207479384505, 1.183093398265755, -0.35715333224519835, 0.09841575912600005, 1.574023689454931, -0.23482068201661857, 1.2386946627395476, -1.6783552822721601, 0.8611354052037511, -0.03315728672592852, 1.0193997600753135, 0.8649479142208678, 0.4164604631092424, -1.7829228532488806, 1.18355749410558, 1.57769088119824, -1.686257098236667, -1.1607340307397962, 1.0433166175934159, -0.27772980615804893, -0.6837779231673817, 0.3903294683158698, -0.3671124601982576, -0.1276413455606181, -1.700409020471655, 2.268428305186674, 0.2736751307318294, 0.4618308615774054, -0.14119264307379673, 2.2199837786106715, -1.375939861531243, -0.7221917522954365, 1.1098492022750432, -1.4505379826083395, 0.26060143268332325, 0.9771611195144573, 0.3765145109829216, 2.215882692348702, 0.4047556377415391, 0.17708325001281291, -1.9644517128168955, 0.3982782935193131, -0.6262164185787708, 0.15245667799057772, -0.6508467682648665, -0.040947126846172834, 1.7119976409288793, 0.21779845582679846, -0.04145965880856733, 0.13225304399295884, 0.1739378890012343, 0.08037751104228624, -0.9411877899806691, 0.38565902729297424, 1.0958429749681566, 0.0669055558927883, 0.4361448377834406, -0.5901261511098935, -0.8885190831394413, -1.4871156416726072, 1.3669107918561987, 2.3091823854788514, 0.622552717517235, 0.2783143206723023, -2.1305113526512396, -1.4978709762185878, 0.8018120395351532, -0.33995160613042685, 0.1777765322633653, -0.2258895695037579, 0.19586512261588473, 0.45301580114334045, 0.18103013768124301, -0.5147488863527064, 0.20662933937315553, -0.09581792397706412, -0.4704069093141071, -0.13483315552265066, -0.5594310075701671, -1.5755216037255442, -1.5674068340789091, -0.5157357110184205, -0.10054465770334044, -0.7071565768766122, -0.4099340274741994, 0.35968200228333286, -0.18585633976713617, 1.5416706566134035, 1.9286900603543355, -0.5159285075025919, 0.16886996206928914, -0.9067434891373716, -0.6039824452258518, 0.27720989342858937, -0.8814432879855706, -0.6919477366657376, -3.300499554594386, -0.6173928008586741, 0.8153244286523782, -0.35573315997666993, -0.20534234860472675, 1.9722365498950571, -0.1019166129902459, 0.08112220912426235, 0.7463452888856003, 1.1314090216181174, 1.1725026304304351, -1.3737070495742683, 1.734619629252936, 2.481740839103901, 0.9194703215452048, -0.34821661861545355, 0.9728026357332336, -0.10658444194926611, 1.3646609952054927, -0.20423441003137643, -0.06138988353092309, -0.1103302198524375, -0.3172315867238737, -0.8436575516229253, -0.5086533079781693, -0.1020901909331111, 0.041548802438476466, -0.9989480071569191, -0.19084542074059116, -1.012929236908774, 0.37846266910121795, 1.5569101781200219, 0.03186861709827397, -1.9643672831540329, -0.9559693601351081, 1.0476398922384702, 0.4753938790634957, -1.9155181532004628, 2.7851118312057928, -0.4660427767210397, -0.7434686806220159, -1.8644578336246445, 0.7950519234725988, -1.5175445270408634, -0.18967795984276006, -0.07354703638985319, -0.0028940583295309318, 0.05057720453427609, -0.2571010737906899, 1.841219462891703, -2.1896361652733782, 1.2511986406908666, 0.5753085882254242, 1.1153018270644537, 0.13982610960157404, -1.383864413771338, 0.7931811133480174, 2.1309464599529786, -0.3672255367396895, 1.2349500491253345, -0.2851321814733262, 0.8721818251187332, -0.2026228852474988, -0.2791938533272248, 0.08040090821476319, 1.0892882614640076, 0.09768943644705562, 0.4204417256351771, 1.3114392443815635, 0.04829268265664478, 1.2850500288988436, -0.2779162535369758, -0.43169391727862744, -1.5832048871215894, -1.6962198203895802, 1.0729777959132656, -0.3475301277658165, 0.5554189051412136, -0.3178837805858156, 0.5327674010524779, 0.6755622625790911, -0.1842302677407756, 0.43041683511575013, -0.8115483237447811, 1.3968996263534743, -0.17863606115051833, 1.585212875612633, 1.3280038403293726, 1.6695928015875903, 0.6109821394084319, 1.1349894473760842, 0.28476618327344827, 1.4784673864794742, -0.2823155837802257, -0.9183380787461971, 0.18428479751772892, 0.9836044862804338, 2.025235066042294, 0.8265404261612499, 2.088855400024876, 1.2286394369048508, 0.6715801392320037, -1.0498151352816971, -0.8931372957848912, 0.009361893370829872, 0.9162789715980914, 0.006157909931788802, -0.4922874423094256, 0.18089602650564962, -0.9841484655534926, -1.1301889231546511, 1.3001340798635899, 0.13693015400741945, 1.0390411986454737, 0.09933412649399904, 1.7158843111310522, 1.904568532616043, -0.48794979349112055, -0.4338145756826169, -1.0370401983449686, 1.0390032114803736, 1.1522094113772554, -0.4274833545676901, -0.8753567770565199, -1.6315994757003491, -1.7385506630534566, 2.532384190967428, -1.7056567691204445, 0.5413608251407436, -0.7741297263854691, -0.9447738094748025, 0.6661287246658135, 1.2031380054266403, 1.10368337423764, -1.2970356849209472, -0.6566436584727551, -0.14816924917182495, 0.7899980629195169, 1.8273852077888946, -0.9277938527847925, 1.9598998746936958, -0.27099375424892697, 0.6313744587208714, 0.40220491996516095, -0.29639672770006376, -1.8023859026222553, -0.7750540161682024, 0.1947076125945104, 0.5471135873496065, -0.652969912710415, 0.8404848088284015, 0.12894499297938444, 0.6032885408701868, 1.2514835286413495, -2.3974894979687105, -0.9304443816961642, 0.5235805043032368, 0.9237070587307208, -1.2232371757835139, 0.5076176935522306, 0.11779678439009704, -0.34612498438387546, -0.7314860546390927, 1.553910216869756, 0.373159475336515, -0.30618102562662347, -1.0154187441535123, -1.3683721575144063, -1.6848734071167453, 0.7057898542723938, 0.7127375808855136, 0.6820908867090917, 0.14243208748778438, -0.49764571567254134, -0.34993722444753544, 0.28263895634917763, -0.0811609390230422, -0.8001263943467075, 1.2016381946021464, 0.6300938668214966, 2.0197124104278883, -0.39730245577489043, 1.1082615629881487, 0.46812678384907336, 0.666746788576162, 0.26123698644751225, -0.7024810946461257, -0.5922965445684787, -0.48103667153342716, -2.24353922047969, -0.9337194785548774, 1.3686185555811365, 0.3972741496203757, 0.37354079869199974, -1.1743179438700706, -1.1748244659763896, 0.1406513465704322, 0.7766944125577693, 0.6468554295128249, 0.8402029124529626, -0.5495888272912638, 0.2752226876433018, -1.0617295543596483, 0.45862157925707286, 1.1714768594080485, 1.1805224647157246, -1.6892820684956078, -2.393405099847649, -1.6331785264764314, -0.7303247685543807, -0.37576096935444997, 0.4013478691603241, -1.0157957733816363, 0.14002890339339075, -1.0252839102787974, -1.0375314340230521, 0.8172730168671789, 1.062543562593135, 1.2810809804809749, 1.3999493985992992, -0.1750138803985548, 1.395734920938993, 0.20896311087749608, -1.3682057826232348, 0.004699216277132869, 0.4764319522852837, 0.12823174581788757, -0.546109883020964, 0.2523240224674329, 1.9724181468899409, 0.571137816454056, 0.522392971014453, 0.06334935501567902, -1.4920451846109672, -1.0225677061413179, 0.44255002330819526, -0.4682032342920937, 1.0350483070201422, 0.8200797384116898, -0.3029007829607368, -0.9845615009741489, 0.7582526902117465, 1.4833592773254187, -1.3989560209509306, -0.02010565525754588, 1.696186541558, -0.14162189076683343, -0.6537141574516205, -0.38621139164560747, 0.8184053985461378, 0.6452934033126237, 0.7403406155596476, 0.5169782497985267, -0.8189857182537518, -0.3298835390479515, 0.4237001612173338, 0.7833162409431745, -0.0019372831953367766, 0.2733210830893454, -0.6400595311632477, 0.6228358338196626, 0.3278665095994055, 3.081520639298892, -1.4435639267846334, 1.7053027215702756, -0.9588347501825313, 0.8266484324217002, 0.6242654188330886, -0.6407113941329479, 0.2772593629992858, 0.24814190447973083, 0.03363219264335503, 0.04496534388566153, 0.7087040051423135, -0.9221069417630742, -1.5268364676636788, -1.2896607997985812, -1.3661213777130599, -1.2075968696301782, -2.389243136958518, 1.4955588874856782, 1.2032086179453023, -0.14139077396705954, 0.2105872325884853, -0.5266170806972954, -1.9635764068165913, -1.2961941687735021, -2.2835960332407423, 0.33843875542096646, 2.3953920170177923, -1.1837497023332566, 0.496939041745984, -1.6834236268645497, 0.0947364755311612, 1.3677509022976098, 1.3010190519580898, -1.7668063834316443, 0.21564869547117013, -0.44708261946187283, -0.002380181670482115, 0.650945443490256, 1.4074149358152999, -0.3502584098400984, -2.275975800589525, -0.713875724177341, 0.5589684491426312, -1.965116029720147, 0.47575103008133773, 0.1679025472894861, 0.5439197139149357, 0.18336508565925638, 0.3219885649627636, 1.7554902588109447, 0.4642725270837393, -0.4390920573164246, 2.2698459891448923, 1.9524244471530363, -0.14392435570038756, 0.8876434758028264, -1.6577043260766187, -1.0198707516700816, -0.5961056777066923, -0.34369290129618396, 2.3123203551692133, 0.9307680048590791, -0.002081134721685804, -0.4816298626933, 0.5166419734688004, 0.09544852566577597, 0.738769513030866, -0.5320413954446367, -0.4940048696009806, -0.6416355699204741, -0.9125056647182483, -1.1862204740038778, -0.6555000958717663, -0.833470938908399, -1.1616778894644986, -0.5822364941000208, 1.5789499695762335, 1.6906076958567484, -0.6682910973489802, -1.5375408783188134, -1.7035671717673282, 0.5113501775091176, 1.3627201535356952, 0.34281653314195654, -0.0361566378498718, 1.283526267201893, -2.2745695742593397, 0.19000854891098337, -0.9356963719873145, 0.7771715931847443, 1.1747876035023088, -0.6581782060160273, 2.1514708443588093, -0.36624102952776444, -1.02996208423095, 0.7217520972507986, -1.3423248117021074, 0.29948769841449313, -0.9983234204192304, -1.1349975297569361, 0.2390417601230243, 0.7072204486510455, 0.35832543994067206, 0.8041102924500155, 0.3028670857744879, 2.7623138131362417, -0.7089157750419613, 0.22621529706629703, 1.0159042552872546, 0.4778866048560423, 0.13862524435273077, -0.6817769904192166, 1.2905800338344828, -0.5617711995631723, -0.937878912770488, 0.036259068904784184, 0.3074683196641872, 0.02334508317808002, -0.056636545167360136, -0.6105722560497783, 0.22034125973327826, 1.3981176980080354, 0.002830930797289729, -0.24195892578863437, 1.3598231207188574, -0.5983975108140343, 1.509108735185707, -0.3108584778552104, -1.2228769868033365, 0.5943397739409046, 0.31935177535483583, -0.036439093781717204, 0.14778839039885514, -0.11651573539454131, -1.4649049971267012, -0.2683259472901276, -0.1143739595865752, 1.7635913804869325, -0.16130246501945172, 0.4072876137215747, -0.31103626857775446, -0.05171663918837877, -0.7274085567918993, -0.869998251494505, -0.7193321231806105, 1.7505951189711304, 0.7440630635174471, 0.0016957841800653661, -0.983556012268064, 0.5131452298233552, -0.21520406798199235, 1.2554935163458343, -1.0675348115557104, 0.7469420795328888, -0.9963438487998225, -0.6229174823536682, -0.6770598584016285, 1.2562729341933596, -0.2712138170575698, -3.068642230593467, -3.0531360276822577, -0.5584911390555901, 0.7473315149504595, -0.18706483628559678, 0.14675010155914514, -0.006368544270069353, 1.6844988114574022, -0.6214979241607808, -0.3355320210713104, -0.09820727272027757, 0.8687934479912008, -1.2005133663272494, -0.33084789733891284, 1.1571084045756281, 1.4246451046643682, 1.6962376428779853, -0.01965764703939021, -0.7773091413938378, 0.7348575748530396, -0.23216605868100404, -0.8192776375683218, -0.2080446140023382, -0.44904006003328667, -0.4432456841776011, 0.06399763185741875, 0.21563610206370648, -0.2508963268128007, -2.5393973783220463, 0.323376954594191, 0.1384357529412035, 0.021153113599300586, -1.6410540709354358, 0.3691910055245278, -0.17495885529094257, 0.554361827175954, 0.20816477209501544, 1.2322688447103174, 0.2259606292852208, 0.5140029111794593, 0.37718842026130545, 0.33603722021339, -0.017669087842033065, 0.3990879000210093, 2.178612539524806, -1.4021972726687062, -0.059858631189209026, -1.0031183337604832, 1.383398163582628, -1.0611670406818532, -0.6074540386699645, 0.25468663161832605, 0.13474280254470264, -0.10885846887714488, -1.3619488838854161, -1.1865743468938024, 0.8343602196452481, -0.31636758410943266, 0.0822806179687328, 0.03610500422763477, 0.36975660962214374, -0.37447984002912227, 0.9006398818186364, 0.4263942528559476, -0.8471405691528062, 0.6370923472128284, -2.771271846414234, -0.2775641216533752, -1.9698060876925318, -0.7631948292304876, -0.11501310895829121, 1.2264502383793572, 0.44510581587390197, 0.7850830340365011, -0.8972456251148753, 0.6916483637375145, -0.5297453646047573, -1.901732896640853, -1.007326391309077, 0.2220310453886031, 1.0724562599385534, 0.40011245153735736, -1.1593565442528044, 1.5287688772353074, -1.2265309382410865, 0.17812058438692274, -2.1424196963250663, -0.5365247347682954, -0.175882228830132, 0.20779436050052882, -1.2395880259585617, 0.04832542895494312, 0.07093709252503462, -0.056371503668414216, 1.3597592757778154, 0.3828295662314724, -0.5315492554139866, 0.6360780600344075, 0.7531154590527323, -0.7824250791522117, 1.0617544257117932, 0.5489962301017025, 0.6286191631180904, -0.7554812899095874, 1.3460101201505388, -0.6564959907077351, 0.16698785124367177, 0.09451925409687266, 0.17705768947811729, 1.0138194440077566, -0.24231907310256842, -2.546273886239003, -0.05507329609619993, 0.3576296538398323, 0.27507225100326244, -0.7942125094255036, 1.0744369972956842, -1.1548545340061322, -0.15997902636302005, 0.2950954321082824, 0.8845493763065855, -0.8132679790365331, 0.21153971778686953, 2.2177421007414084, -0.9299613122041496, -1.6733913807379388, 1.3474760825861976, 0.9816143450439703, -0.3855895553937516, 0.8502913770246404, -0.016034574759692683, -1.1339934776440412, -1.7563721581739282, -0.06647491888759757, -1.8920747028441938, 2.3760043080911335, 1.8177530262775197, -1.8575847163422115, 0.844553214178571, 1.5954993729399956, 2.1252863078605264, -0.9089236614521397, -2.0469171775640773, -0.9384063102943723, -1.5482176543034978, 0.4526740914408505, 1.4013381381239929, 0.991045705937935, -0.47656146801187094, -0.27582104974046956, -0.5642658623540668, 0.325163151043837, -1.544633482053262, 0.15518857788732585, 0.15382265815454396, -0.6343026666433687, -0.8052290074500515, -0.01691923834054946, 0.6541683607771073, 0.5338183805463347, -0.9091383582478858, 0.3968969223456185, -0.17061628431357603, 1.747323697825887, 0.8012341564226836, -1.255442509886699, -1.2920206203653015, 0.0749186813352897, 0.2120295206583239, 1.182843648729612, -1.1122449131709833, 0.6272974182744673, 0.22777924320090764, -1.6251751647156196, 1.0411757059610847, 0.019367245918048063, -1.5738996411263415, -0.269270207865917, -0.5708394331822761, 1.8504054703733777, -0.22094889809967533, 1.1868455374446385, 0.5717141696167073, 0.8579212808811838, -0.49203515643303497, 0.42647412290047176, 1.0808047827262008, 0.010157228470302567, -1.719815859158772, 0.38805715778854427, -0.9969905666150687, -1.9361769141375387, 0.2474759878876688, -1.4221009001917095, -0.5918211873235646, -0.8058159270505826, 0.5438653208536682, 0.19307918373458596, -0.24237795984767208, 2.3297553315723163, -0.6782771653830929, -2.264267240688485, -1.3620513569200732, -1.9227157102467343, -0.5474383968696648, 0.24293097804441546, 0.8929260011447531, 0.049719985269798754, 1.3121549852716419, -0.7380138820116222, -0.011523274745424477, 0.7707761640355849, 0.2159962953115613, 0.5540026920594798, 0.09682345285130588, 0.398898061918644, -0.8325427357082503, -0.8742308162726118, 0.047733473640843245, 2.054543245821081, -1.3898902807090843, -0.12538538363326618, -0.09873796128345852, -1.4497902777439649, -0.4782177466678878, -1.5489795500879526, -0.29518331705238504, -0.44407598222159483, -0.9106356388426876, -1.550174445411619, 0.9328231660401188, 0.05594760595703414, 0.07566938845558267, 0.3298955808621695, -0.0017861668992007044, 0.586486364465265, -0.4362101979996282, 1.009729735572833, -0.042390290391845505, -0.2808285449424426, -1.0403468643014806, 1.131390812188699, -0.773890404524892, -0.22102358669926575, 0.6645483621647768, 0.7694091180284272, -0.03831164560096324, -0.3150960131582738, -1.0259652416179839, 0.20049882895150267, 0.03693677780369976, 1.6551618339165797, -0.22673604901843455, -2.417611359678329, 1.1106483704352281, -0.715751960430851, 0.5164952578195183, -0.6996317634146395, -1.897990257489308, -1.8041186305012002, -1.4690150868698797, -1.3087988024213557, -0.17486927381146705, -0.45353269534719165, -0.19149104316066032, -1.4266479569878736, 1.8919903045082074, -0.9473356590670324, 0.5173785755076394, -0.13818347423848865, -1.086849997656127, 0.36593831570404595, 0.6194226195093413, 1.4453714190862008, -1.3271158566185721, 0.60921787209085, -0.4832669384376709, 1.3186433317044879, 0.9513213947793335, -0.8548751359506115, 0.1071168124112579, 0.26717848135064914, 0.7030211740414508, -1.0709788797992723, 0.45569586838966974, 0.2887090154342446, -0.24229609713368583, 0.49390930613496803, 1.2738314634647165, 0.8139546371116826, -0.8058423065764165, 0.916823751781412, -0.6678215090538104, 1.4119852560554031, -1.3924034581122728, -0.48456149875876053, 1.0643581297073346, 0.3566463977388516, 1.0415975486050486, 0.028040080194454448, 1.0504197093941925, 0.44965919555783174, 0.8435496128685037, 1.7026256067041448, 0.14373254549294262, 0.7291427328749441, 1.2935074397997568, 1.1398931375510761, -0.18068743577377236, -0.6047067890923773, -0.5346294021251248, -0.10853463546664842, 2.24413601184453, 0.3297355179043857, 0.6657531282588651, 0.964251923438201, -0.5628928015239664, -0.0017106246437996794, -0.19257380601095586, -0.5999594838401076, 1.3310045638118178, 0.01078134546842449, -0.9551407698862096, 0.3885729820005979, -0.05434661623637475, 0.3767388172770911, -0.4898330949543117, -0.713441149440031, 0.42018478215791266, -0.8439100277112023, -0.19565425401483183, 1.2508445943709827, -0.598991758922596, 1.8429649718578998, -0.14258798772701783, -0.18138700905606242, 0.18618696335301746, -0.17087391761424983, -0.8432760462260274, -0.9939917370091027, 0.4305596597055404, 1.1091371083897912, 0.0790722776794302, 1.2495242586059518, -1.521274693280775, -0.7616476824293791, 0.19580408817424708, -1.3143027744001392, -2.091488061999562, 1.9663088091747154, 0.229879430005645, 1.4409375453185944, -0.36162055274827665, -0.27464439642870486, -0.6230996505620815, 0.5751002240784702, -0.16100067047853925, -0.09962621112274908, -0.4351501356168505, 1.3351792476960413, -0.5784998697471228, 1.3361458462940539, 2.3601479775013887, -0.4647589716386651, -0.4548988716102504, 0.7028762701773292, 0.5914980686358756, -0.6966115762392115, -0.7696723521588696, 0.03715612980676316, 0.32221017528830087, -0.4234227574937845, 0.34726424283234486, -0.48116562286295844, 0.3138392530237178, -3.16017434136752e-05, -0.3914227082899591, -0.581666722921146, 0.17111964776203006, -0.06008169278035282, -0.041886584782142536, -0.28699248044931597, 1.462175320301007, 0.1245846313065406, -0.1123526751684876, 2.092515176950615, 1.2272760858332872, -0.19552592726578952, 0.49191271925867636, 0.6144137708252538, -0.6106235763708134, 1.4976844345055038, 1.1892142848985179, -1.1357119642005757, -0.28436481789594376, -0.4421830922813949, -0.6328684584245098, -1.7040349067620155, 1.0820432527761576, -0.9968510182567392, -0.7985198199890275, -0.2588215482253829, 0.20174302514172218, 0.7287507331021361, 1.1722852714149967, 0.4322448567665407, -0.771155579801035, -2.612258680121964, -0.7051447495309736, -0.08301192443248484, -1.4472391477276658, -0.3526737726608245, 1.1294354483566833, -1.0899837588692494, -1.1395916553408674, 0.7779937885751342, 0.5183410812373956, 0.8509697670045957, 0.6208144564226835, -0.778892715214496, -1.0501461846073583, 0.8552859071722188, 0.8608448046488019, 0.5497428154557589, 0.04882443454369946, 1.6651080232070385, -0.32090016182105363, -0.3728486660772143, 0.8430133361143574, -0.5655459744432224, 0.7215544062511454, -1.9484490239876828, 0.6423145640402413, 0.014400283567776857, -0.7898745532400717, -1.586323922234601, -0.8458020923790143, -3.088311088273429, -0.7711672240651922, 0.9871615977182401, -0.9045757185197361, 1.1588809667487696, -1.3285096437778892, 0.5493583705018974, -0.17757552950573202, -1.6167076444272095, -0.6257691840041929, 0.3674989256823125, 1.5365222795738054, 0.3527319212488765, 1.0485204480487655, -1.660459836294662, -0.5794960248043395, -1.2465657293652699, 0.39414956926958317, -0.22431122185124802, -0.7424297725903407, -2.0183158330852966, 1.0943683904642862, 1.9180228164677529, 0.33125926943311296, -1.4098590113169003, -0.3049008568768526, 1.2884791320277762, -0.8304495335533479, 0.5648082533641575, -0.6324582858362591, 0.15519145016196245, -0.14331072524661, 0.5955341112172925, 0.2683604694117294, -0.46158779655753196, 0.07612773147707591, 0.4518924976580781, 0.4439502747372077, 0.8523538103367174, 0.6526631303289786, -0.14639057359720992, 0.11541815018151078, -0.14641912207628505, -0.28858965267185804, -1.1094993394266683, -0.13666302182060672, 1.1197245750262241, 0.5969030971713879, 0.7652826186532012, 0.5565420987155717, -0.39973686526861824, 0.7840343460033151, -1.1888373414791333, -0.38373069667860454, -0.2549327865564444, -0.831606465136574, -0.8020163962470959, -0.867149529466562, 0.3741626587437947, 0.009823237085445392, -1.7368701460461045, 0.9578205180189425, -0.30283019943674705, 1.1710486547250496, 1.3504432585716344, 2.135913369966061, -0.37144981581277836, 0.6683173129623053, 0.20836373808769923, 0.45158986081203556, -1.1459347939795756, -0.819138263097992, -0.44181173736632695, -2.228038352852804, 1.3450784569893894, -1.1523580752749787, -0.20464272457508284, -2.6483454695188007, 1.213210112709636, -1.4004764346361736, 0.09732611023114367, -0.44728592455565547, 0.10547550295522748, -0.42093313113048986, -0.5056183426815237, -0.35915275364763544, -1.0946537876925737, 0.31096146492651894, -1.8148942677707616, -0.3091292910916751, -0.07769189114014907, 0.8210353689958184, 0.9977559638388211, -0.9741254410868778, -0.532900582192196, 1.2326485600619295, -0.556852354708009, 0.5224831305011773, 0.2473387410334785, 1.1142299086991494, -1.1993099089239656, -2.3844231540204452, -0.031312298998023125, -0.2578374897963484, 1.3655566629409817, -1.978772520685182, 0.05702667001523861, -2.7661971160023278, 1.4379234027888605, -0.7192462186848305, -0.8359204541555126, -1.97072449798586, 1.2834263121409806, 0.5648994039770748, -0.10923252179999401, 0.5481965021182704, 0.192406781879664, 0.48581076499243303, -2.605560426009065, 1.03504983076068, 1.4042025146049608, -0.6532422029882547, 0.21720993132656635, 0.44583467031113655, -1.4473969873605004, 0.7442621658759352, 0.0035577574611439537, -1.5352838320153788, 0.36582337868920506, -0.43827718248031894, -0.331658585134989, 0.03475743065587794, 1.695364872590356, 1.558451620009631, -0.20689475301966134, -0.45129848619848684, -1.523170827436555, -1.694309335523152, -1.198176658548595, -0.19969177462827617, -0.05282460007952421, -1.1791283297361472, -1.0067735453064437, 0.17055987486894333, 1.548598735029748, 0.7208980223949303, 0.4530935835189574, 0.8089115623004025, 0.3351300125270723, 0.3800443655445466, 0.3736345544751257, 0.08967024919905225, 0.9223811114430721, -0.9791572872575997, 0.7490556870861242, 0.04211285779316042, -0.48675401364389137, 0.7892987384887062, 0.6514935495821761, -0.7389337564143339, 0.8226734205961588, 0.7249237684279655, 0.9660211264551801, -0.4532783587481408, -0.8511090310517235, -1.2152362800727083, -2.2688038747495143, 1.0639266151110012, -0.11852527671845324, -0.04079710558992621, -1.959172190759805, 0.634813706645387, -0.024392389160913488, -0.8994503599741844, 0.02058425261846817, -0.5502771537286061, -0.7627382878672573, 2.812113990163829, -0.35697622542008045, 0.8954830632884034, -1.2850622093830648, 0.9048756978263991, 1.295681539205646, -1.8039444541082827, 0.6289956120674256, -1.2464825605819987, -2.434105594966877, -0.7368776196463713, 0.07517741459098572, -0.7212226336631826, 0.6482644881693863, 0.7243697163628927, -1.015612682453925, -0.20576178987164687, -0.03565973922119395, 0.46655943398917193, -0.49256995004987253, -0.6208601544556013, -1.9147957069743964, 0.9111798522207986, -1.050789491681603, -0.17826554882391007, 0.0034287654351666343, 0.23891042130951867, -0.2896526657972369, -0.9678605370350775, -0.15606979834697407, -0.539588519878248, -0.9744762714085187, -0.1158787137991666, 0.463186013778498, -0.31756023012613327, 0.32352357908448803, -0.585725835882206, -1.7678336366681864, 1.5889268041950584, -0.20630705622264997, 1.232645492185463, -1.536865929859409, -0.9261652386696412, -2.0561143314389776, 0.4779964081018399, -0.8596011929021515, 1.0843957545428986, -0.9897567668916143, -2.3232928720337003, -0.03340641205022988, 0.7598708513617404, 0.6584247271159631, -2.3279582198317708, 0.24768310253870407, 0.8762008827221577, -0.6729640746468504, 1.2959884053547635, 0.9381350368383641, -1.1241425977603545, 0.4829581184819777, 0.44171108339691467, -0.1872572531285367, -1.2571533983758636, 0.2048074965235173, 1.6143344982484689, -1.3124698136215769, 0.3635463079780809, 1.3596873368910098, 1.081430863928576, -1.7061600182770245, 0.2118428338657974, -1.0006407692588688, -0.3401431816847726, -0.7813320328275092, -1.0011400049098196, -0.04519821459969004, 1.2603284232288081, -1.0630920047189185, -0.44789118146525986, 0.5582310695632384, -0.7090682864355446, -0.5133533644647693, -0.13049594943266846, 0.7311900472570971, 1.493841327862994, -0.25011186120154755, -0.7748595776465173, -0.5052909848740618, -0.5033837938274406, 1.0631419148120849, 2.2478394914416504, 0.7500249601704074, 1.5817576559551234, 0.8472836111216092, -0.470416237895585, -0.19965720263223283, 1.0216451463957437, -2.1860339921625407, -0.9948198936152898, -0.4396019229076382, 0.8734144476777804, -0.2965813670330133, 2.2470581118653734, -0.3395559758401316, -1.791968271962612, -1.9257914274985277, 0.3714309214848273, 0.703855673271628, -0.555710126333215, 1.0220050901401225, 0.20363711487789027, 0.8516796154742334, 1.5757937650329772, -0.09665836315586222, -0.776148895209055, -0.8004256779107253, -1.2413561284257886, -0.12925323644050332, -1.2379066703304404, 0.06651546025851007, 0.01391190021081403, -0.17367092702089812, -0.3287548140792935, -0.8711037772397026, -0.13391409347721686, 1.046744495577508, 0.8549541076563608, -1.14897045533444, -1.9386803001956516, -0.38823478112772664, -0.913589660602426, 0.2729518941831664, 0.15071694940790553, -0.10547684574045808, -1.2248164227256482, -1.351082215307864, -1.331163419569997, -1.3025284037326679, 1.591100615537101, 1.6839972656851228, -1.5013406493986328, -0.014560098841445244, 0.8758316571675913, -0.8616058158966454, 0.5237127012367585, -1.196778610697725, -0.35407288196013637, 0.6942107386263077, -1.8315746797885266, 1.4846155028429848, 0.43076769047114793, 0.384367439106405, -0.23394885184834452, 1.2198064491495224, -0.5383323547980174, 0.8160510810336509, -0.4573571329857449, -1.7335152974789638, -0.4636249816670279, -0.15318904243505294, -0.42412709535096155, -1.2846318534528511, 1.325417287661619, -0.24420837398318634, 1.7225099174527827, -1.3858598478981758, -0.350222801326749, 0.22885965098157468, 1.4051554822746368, 0.3335772936910085, -0.6286767607540873, -0.07004282442105106, 0.04489437050367313, -0.4059451088431407, -0.8094857079707901, 1.7505330159261117, -0.583610420693528, -0.7366008689555579, 0.3984745730971409, -0.06377005585758136, -0.8206644772162646, -0.6843563782443158, 0.413445320652666, -0.4554691818585017, -0.6229184879111299, -0.2413741831461815, 0.5506155379147128, -1.3103237870729614, 0.551465002061796, -0.5526669452272004, -1.432939322764634, 1.783677814895783, -0.2619175408084894, -1.7366570861134099, -0.35564945315684077, 0.10137133388748105, 0.7235998519780015, 0.09403042929115289, 0.15425730783069394, -1.8572780611255473, 0.5058501044761556, -0.7574907452490733, 0.17607281289803361, -0.8396945461067945, -0.7292802178089858, -0.7002824669050794, 0.5503576214615272, -1.5890603582592648, 1.793036043038875, 2.7878235846616866, 0.38956928497568377, 0.26174869373444265, 1.711065590611669, -0.21780984024318578, -0.7476219519355383, 0.18354455463527203, 0.9102969356546101, -0.9733253628488144, -2.344766204767146, 0.07301118913271507, -0.4917986474536467, 0.7416391329516281, -1.2880000713234445, -0.46197477360345757, 0.30212819705891386, -1.5167184180382485, 0.8501535296247528, 0.5175168374586809, 0.1763279409946514, 0.5808980947903934, 1.8472712753780864, 0.5887473330756161, 2.1954184977584354, -0.03769822240764868, -0.15613316317636414, 0.5004769377495568, -0.7455652599230427, 0.7677830295108011, -0.1441337502428087, -0.7523387828605589, -0.36755553576567623, 0.34105345138077786, -1.1914248220126447, 1.2303531748948233, 1.3432678076153106, -0.4313094961431832, -0.716554553207416, -0.36217498101423934, -1.5133659288612389, 1.4950695017357467, -0.5715269477785132, 1.1593421463571147, 0.43789720927678055, 0.09116342195238117, -0.3049393765588991, -0.837272212664342, -0.5766435716140458, -0.7356401726215391, -0.9485280265926767, -0.1250772778287353, -0.24361064177838979, 0.8522508371598432, -0.0037377039062253593, -2.5439058613954306, -0.0569000266151025, 0.4320024316685166, 2.194478575759713, 1.4396842305532822, 0.36543499574809074, -0.3770338147135057, -0.8552418236779827, -2.641615137447347, -0.01832206949724758, -1.220279075748726, -0.4532959432254292, 0.2687666926125023, -0.8588555314205266, 0.2995859931505431, -0.5333350265572113, 1.2847615357173254, -0.6750734120371739, 0.8097130403145714, -1.6270630113161542, -0.9700686987748345, -0.626750470435254, -0.873880059260819, -2.302124621855377, -0.2119446632235012, -0.45104357068515205, 1.474647321380819, -2.452150203161443, -0.26422200819131053, 0.3355570393620066, 0.4521192920529254, 0.6898023906005871, -1.0228088805014108, -1.5620067151329697, 0.2114421450103242, 0.16571047265242836, -0.9976369476833716, 0.2707035595461758, 1.527376877291636, -1.1501231170867043, -0.8215138548193065, 1.1255100205347468, -1.4908295737477542, -0.9614784827261649, 1.253875753998538, 0.6502131896760401, 0.5459866901410766, 1.4600197648017388, -0.0961460203532497, 0.7266795346872365, 0.24327467641293096, 0.6629927940460294, 0.1425139446241705, 0.6769287783907216, -1.3236927946900179, 1.7325000099103491, -0.44398667144970083, -0.06250247294850679, 0.7996605229107876, -0.8781887569136042, -0.04685771081608833, -2.1381243641968757, -1.1057101272330927, -0.2334652569852083, 0.9622037237887306, 0.6635341672421278, 0.12296392422848872, 0.16098800191091994, -1.9738778562669794, 0.878801521788013, 1.1264406225655363, 0.9266111456784218, -0.5837955300185679, -1.1381689631937657, -0.7637975260788618, 0.6253414266910773, 0.2560476374285288, 0.6225515550412877, -1.4003990017303332, 0.33627768607969516, -1.9427666341170824, -0.6932243069544903, -1.6260875697896702, -0.7277319111014768, 1.4038229847386294, 0.2920548422295979, -0.4789539104472966, -1.5162957655731588, 0.7303018926046246, -0.08451244525442732, 0.784113042439586, -1.5334585479514933, 0.5670458287729787, 0.42975930410924124, 2.449800593141972, -0.747332434740572, -1.2322385206168842, -0.7568040112448173, -1.4135743704317814, 0.02577746009056378, -2.0837637677880294, 0.49143275227877103, -0.09302281017834362, 0.7031745485857588, 1.9067771128764397, 0.017922750249444862, -1.0118512011569816, 1.098381595132738, 0.7341755899609803, 1.2311978717249155, -1.0213846091416032, -0.30656617450535995, 0.2039715668363261, 0.9137009208505903, -0.1853547296025253, -0.4531226067380201, 0.4791486178122148, 0.4244894303034229, -0.21125213591144995, -0.9006724834631074, 0.687500015940671, 1.5478498713739013, 0.5971262704659354, -0.28221603850355226, 0.1853982344045198, -0.4972609839585217, 0.09701023695712938, 0.5695911267833031, -0.3164094642230819, -0.14706947612684826, -1.3149133497939054, 0.6864680014836566, -0.772852350625843, -0.5806236044379457, -0.3330938726043226, -0.2730406772068024, 0.5762813326703923, -1.4304622484096188, -0.8424942170683648, -1.3966094397492712, -0.895345937295373, -2.1450526226610602, 0.8982603474010731, 0.2447347737164159, -0.14421939866277614, -0.32759685565611457, 0.296699608032958, 0.4488491381463045, -0.9366906772433812, 0.8575927698912629, -0.21528850062417895, -1.1881007189482282, 1.126951428099562, -0.9182517838371076, 0.03845610449911805, 0.21538710321609011, 0.4345124212863915, 0.22806905558766796, -0.0433565930969285, 0.7593857162181715, -0.31477607928734513, 0.45451779677564275, 1.1460305154279424, 0.17511551763090402, -1.8856875430269369, 0.8346203714049741, -0.0696682533840345, -1.477209694338219, 1.167580661482926, -0.17554887202590774, -0.8474837486432465, 0.34080524465178785, -1.067656844368498, -1.2235746072702904, -0.1496059091339221, -0.6271075452205968, 0.17720185109195266, 0.4353918232872083, 0.5660926079329978, 2.8554574415424483, -0.6620166583187813, -1.7269876019682948, -0.4078387228577495, -1.7228178107762542, 0.3726054112499986, -1.1217641084697834, -0.4549722253573668, -1.1732831794353027, 0.6575544136481785, -0.9201334492342766, 1.6328222950437552, 1.6244241347609476, 1.5613555902002136, 1.4668846483103386, -0.3487215605525855, 0.12066051762324873, -1.3338304508691319, -2.838826297994906, -0.6706495059056897, -0.2112553589247857, 0.4093088155814143, 0.0586543436679839, -1.9337244019029907, 0.07171251023300006, -0.453400009742923, 1.1415999381407176, -1.1548675809496596, -2.382993633047374, 1.665455784920222, 0.36977079711240063, -0.535727132830006, -1.4579294636750366, -1.6520070983625739, 0.08837369320935094, 1.1015994425060465, -1.2436747485612611, -0.16173195775871396, 0.7874586254788326, 0.8455365274680086, -0.47385229544186175, 0.8581794726994194, 1.9141693890868874, 1.2111468774347625, -1.283834409703804, 1.4122001960991903, 1.4246122083213058, 0.09617143246488447, -0.680416520345397, 0.7939074419436761, 0.05082061802593895, -0.3375681951224267, 0.2728075634559421, 1.8677062690963786, -1.2849446512608989, -0.3646522458534046, 0.917024620691813, 0.836213051287984, 0.4199460834454394, -1.2038519270531134, 0.12232264627089835, -2.2232529926712767, 0.32822411605932045, 0.2221878465543045, -0.40914638546335264, -0.5038836046014628, 1.8256305544491191, -0.7565556539701808, -2.7739792692396126, 0.28066845231027215, 1.3738789070045716, 1.7661381760831198, -0.9580232806819591, -0.1780922624537117, -1.0984645221049045, 0.12603798766445923, -0.1849675475219486, -1.4475049162679143, 0.9388707018063479, -0.5362768656635394, 0.9452817076530887, -0.37341197131483667, -0.2629170752516286, 1.325991973487167, 0.9619471376599076, 2.1975015359014103, -1.9973341541819725, 0.8588312686492864, 0.13666135012685632, 0.3102389236196128, 0.6936509306420062, 0.05434653570011313, 0.3886040413097377, -1.3881648803578328, -0.24232672717865358, -2.3006844443180974, -1.518751357394444, -0.3706901669875656, 0.7539809084190491, 0.4912794553641408, 1.285898467547851, -1.2234469904502512, -0.08958864363508236, 0.583078020131131, -0.23178079681176902, 0.4769446061135408, -0.4016965792806681, 2.1618387681417497, -0.3808916318031749, 0.7019003947692466, 0.6921832736273762, 0.2010723299967834, 0.23634082843208823, 0.6056544806575411, -0.11651743275509928, 0.5766313042860137, -0.5190655005970012, -0.4579416002427724, -0.424209530527786, 2.232559210366838, -1.8171412233712165, -0.6495312007257151, 0.01454464350825512, -0.012160378768442833, 0.45900058613553946, 1.622427208224704, -0.8381648037082366, -0.06922690164521429, -1.1571533446018838, 1.2962530073258305, -0.4164012434169487, -0.14957792428793357, -0.0966188865041463, -0.17162818417291137, 1.5823601195567514, 1.0185460546773435, -0.27435903244422055, 1.0624307534321238, 1.6824917464322542, 0.3499999101405133, -1.7539284490002658, 0.3415515608898923, -0.9304971196835875, 0.04252683790482448, -1.5965834974215565, 1.3596129553980816, 0.5975052601318105, 0.7282491018628274, -0.8685422050617817, 0.8955457613350786, -0.43664776638074715, -0.8206970291571989, -1.2898007224720796, -0.3186171612571654, -0.3330818341118064, 0.6655752973348447, 1.6764347205970604, 0.6078743574830635, -1.2342507922222805, 1.9210718505914963, 0.26510984025007406, 0.2685882654026507, 0.7102430456245953, -1.0462145584529572, 0.3857191152427833, -1.8835805633826779, -2.768761193953574, -0.4915726819365157, -1.5089924717034593, 0.013278831567490521, 1.5474176875871273, 1.7045030442907954, -0.7048211460588357, 1.0382872389284454, -0.4236141117291399, -1.1507654519546344, -1.6074537360491772, -0.7267874141115397, 0.11876040295645178, -0.6408806028454356, -0.12049820175789154, 1.1256684566373316, -1.1503658259476168, 0.3808406082354331, 0.16166298056768014, -0.9796873977838907, 1.0438547113586458, 0.2695904409689415, 0.7097366282641338, 0.36812978605144314, 1.1038117080137047, -0.5807051449206111, 1.027731721586947, 0.9661580338116212, 0.2598371929157506, -1.2798102496315147, 0.8352067419464927, -0.1452621149892954, 1.8549267889124994, 0.5665323669164135, 1.5421593189692089, -1.4677264718771512, 0.9585639718948312, -1.6479655417171202, 0.22271257385409565, -1.161398773427602, -0.861813501728504, -0.33065924746715947, -1.2370435572165541, 0.13012798200740622, -0.17426050640126142, -0.38744989631009263, 1.4307827967619229, 0.03543562533000589, -0.9972687727886126, -0.5170550450401604, -0.7750247609617125, -1.5190613124777796, -0.45895251295378553, -1.8056739512190008, 0.568360571435928, -0.2004869809428556, -0.14483685708825503, 0.5258043449164731, -0.16813587996429707, 0.10846389250099084, -0.05315797521827668, -0.21651365686613308, 0.06006145597959008, -1.4024064633139812, 0.689880904910238, -1.3428757039530983, 0.4589303661569864, -1.4188669947772765, 0.29352168212647334, 0.7308608932842507, -0.1353758679174761, 0.17358923934048226, -0.40216684119518126, 0.43993814071860016, -1.2871086596268482, -1.2622185432193231, 0.5955345200199184, -0.8657767655249429, -2.0777147735575694, -1.0097475327974674, -0.29221483234147594, 0.2292766310482291, -1.1056969652514455, 1.4876657299426514, -0.036104835108870456, -0.6423673306131062, 1.17645837315232, -0.27627899423171265, -2.1294237281854707, 1.0389397167884664, -0.6156099069368945, 0.5660062401217804, -0.34735225445425977, -0.32061267845758085, -0.898048854923999, 2.3890802889591454, -0.1207700865946951, 0.9658162458846846, 2.1295380289836494, 0.22730977326083576, 0.307795221689862, -3.159470294922449, 0.8956823805247126, 1.4364518339011614, -1.6940979672180807, 0.165976015208281, 1.0227277830757575, 0.9471964236813554, 1.3689187788341273, 2.0082590219654723, -1.4127390079463908, -1.4582830839548455, 2.057655232622654, -1.6262107983377108, 0.8065089603585295, 0.059317700347295395, 0.13330649608758663, 0.41871631403681064, -1.6670993078179417, -0.4557222192488648, 0.8358412168608853, 1.1485241583907668, 0.42382769612443416, 0.07067530896807704, 0.7805845452452761, -0.9230705042306333, -0.7008265657860365, 0.1238579585529523, -1.5033879105374937, -0.8006324477609928, -0.44793642959253405, -0.27299529722657506, -0.42911609794809474, -0.04754182561350199, 0.4678169668023181, 0.9609426463686324, -1.135854381028605, -0.9604027706620838, -0.8759778130611081, 1.3255392992467154, 1.4437271577682296, 0.4932168845856174, 1.1198442202865473, 1.2097953377572856, -1.4782787622655886, 1.534331937472566, -0.18592464788213361, 0.9065510875978713, 0.2441526620364802, 1.2142409950847504, -0.005934606839626211, -0.19071981471485608, -0.3040583507442866, 0.060081676730458174, 0.018762337319815515, -0.9902130995818926, 1.3074986871427252, -1.2758677347357341, 1.0698936415205338, 0.5702156020946687, 0.3041015469962475, 1.0315316803895331, -1.3625531333588328, -0.4647788936504099, 1.3043793230085174, -2.2931238782528447, -1.8655685521053629, -0.9669629869645776, 0.1883663353758491, -1.0634824082910936, 0.8013306975599391, -1.5443624045591937, 0.32715347959892516, -1.1042425552504813, -1.6161041406680392, -0.5109993363057571, -0.9190886093343267, -0.6077428272848499, -0.5002569071129503, 0.9756689510277916, 0.2772218606494787, -0.43287852998208237, 0.6296681915983172, -0.8502843261320427, -0.9505069068832771, -0.650584341206366, -1.661723761397373, 1.007089074815852, -0.11873490106540271, -0.1272993611104505, 0.9298614676390998, -0.5153289230941936, -1.556702035787103, 0.3807701443952423, 0.6123807492207072, 1.1867467887368908, 0.14654907176430795, -0.5370416367498603, -2.1139883997425315, -0.7876830210703504, -0.6237996086335619, 0.13592084587607914, 0.6393276776955494, 0.13991569771729745, -0.81809230737367, -0.6683486553698732, 1.115178173122076, 2.446771414213701, -0.1637585890568815, -1.1209704564711065, 0.4467511515071406, -0.9534092482312004, 0.3182330919933401, 0.271683759433474, -0.9573363828477164, -1.0712413179694105, -0.30255813778652974, 0.958247674089883, 0.4979415521551006, -0.8376872519699228, 0.022535961046091832, 0.6840510626836408, -0.21077828406318735, 0.584447240190305, 0.3410263701239205, 1.187176771555195, -2.1172358171100973, 0.30995019232039317, 0.7901976578611829, 0.30913468523891424, -0.9844146654250953, 0.3474506697688135, 0.6259418281233743, 0.4794626029480261, -0.06173762343825315, -1.3627102955192472, -0.20031835021540442, 1.6870429458740388, 1.6083459881399655, 0.2789050227337342, -1.2719884064904396, 1.1853106830638485, -0.9913580737072663, 1.2233104543278213, 0.8134432318899081, 1.886557959191833, 0.11022533467624505, -0.7681413266984113, 1.436892344457456, -0.5556957709754798, 2.3038212660346935, -0.682772274731363, -0.4746168209407287, 0.5511129315383609, 0.4215246673091607, -1.4860625654820405, 0.1897176503580621, 0.44020540443738876, 0.7496215071681255, 2.552398472469107, 0.7607506386602476, 1.0820709259858656, 0.19917231987970416, 0.7942499355919473, 0.19973021075409347, 0.29481380935757473, -0.6357637486064631, 0.12863791178542627, 1.8561515112410554, -1.4521073859968245, -0.44690133813439353, -0.5281516778029656, 0.23031228507637702, -0.05163289925469105, 1.4531091939178806, 0.06594794127602743, 1.9158929778743325, 1.3893544881471012, 0.8377158542991587, 0.4599670791005717, 0.6058828013346426, 0.21069233748771843, 2.0847766207434564, -0.029268516047371095, -0.3252030660188709, 0.13202105483543372, -1.2051521919108732, 0.08810029046160057, 0.2998899394140385, -1.329901911797941, -0.35244571721201917, 1.0093949421205954, -0.6561924048355037, -0.6769220785633787, 0.9004707724740563, 0.4215313341559502, -0.7375271922065233, 1.0706249247137103, -0.028892244945197036, -0.5183281825357204, 0.5736153002965058, -0.3758685831678415, -0.7918995871067815, 1.2782634446781616, -0.6356995421752419, -0.4833863369287177, 0.9974534142023732, 0.29124328932605514, -0.8236355220229586, -0.08699050597488259, 0.6590141733829847, 2.441583292882557, 1.8873452628569025, 2.2474275746061965, -1.2084812281924566, -0.8018851520041654, 0.6759181159646618, 0.00313769957548172, 0.31474207170695445, -0.07736951126774436, -0.25018161293926583, -1.2830507962514812, -1.5628441907653305, 2.8453969247062276, -0.6342184442111992, -0.592854552706071, -0.653723999513639, -0.76565949917059, -0.730526998162015, 0.09075307806432394, -0.9481548645415303, -0.04755585978648472, 1.3476101538895733, -0.9875559107864285, -0.7896939152505444, 0.4816267344514175, -2.1648165937072137, -0.7268788889746165, 1.2960347147856455, 2.9109429440400323, -1.065376273609101, 0.18513796404565092, -0.8814138828253623, 1.2409135508501319, -0.012877656665903105, -0.6476617613042353, -1.994768600369764, 1.3443028214739667, -1.8514533014456531, -0.7379582086548833, 1.694396228823381, 0.4026562338082194, -1.2758466479856054, -0.25334115795781886, -0.10298131523967101, -1.3748667924232236, 0.6293890561733958, 0.2738888278899806, 0.5612373487486728, -0.35340678348969806, -0.736843748234479, -0.40367835808832514, -1.2439466232262497, 1.2570138663363715, 0.45632423807954914, -1.170707965548015, -0.9587623429264018, 0.6425982154718701, 1.5567146540543542, 1.2516374448322218, -0.22322323181634318, -0.5695167025136576, 1.3827725588378879, 0.529065899193698, -1.5470827592965664, -1.0944906269170949, 0.2905472841355263, -0.987585623182969, -0.3515621243107407, -1.1366040859833553, -0.5160321145422849, -1.6442173347711861, 1.3423907595439113, 0.31986604002016844, -0.5786595172834021, 0.73801532386848, 0.5788365796442495, -0.7375548663739422, 0.45423130001442397, -1.225358779977498, 0.7678067565519512, -0.05078757448886205, 1.512293872317004, 1.106989348588503, 1.3272064524680798, -1.0102290516604413, 1.3418085812620126, 0.4314053354881663, -0.8698836928173348, -0.33508116195249105, 2.273858285763485, 0.41127055898865217, -0.5417916233776102, 1.3173262896619646, -0.06588492371272986, 0.5969382095462551, 0.6197204718248582, 0.3742348312569251, -0.04007772711014461, -1.6143631344300409, -1.2617480510616137, -1.2401273803885422, 0.3822358970465057, 1.8061346386866513, -0.22702264172388117, 0.37048462734622856, -0.11799395539242921, -0.005235059103559137, -0.6489984366966667, 0.7782101694572308, -0.024126859434724878, -0.09798935833649829, -1.0417284651310414, -0.6605483359597034, 0.6972000521784677, -0.15225780204879624, -0.36034171752445354, 0.5934576132973614, -0.25056255516564263, -0.7310153609877714, -1.8861910032233697, 0.254480151361828, 1.4148114593503607, -0.8002251737459469, -1.3914075562421209, 2.6894920671041236, -0.1506644941293263, 0.4047667831579401, 0.5611273432518382, 1.779203788992058, -0.48565136522391056, -0.26653744823132164, -0.8829510316719237, 2.532755174768609, 0.5582799591535964, 0.3625488756486719, 0.8429610656748877, -0.1422677046514221, 0.059560937411363916, -1.54096863376706, -3.409308449483486, -1.501482227036858, -0.17084770021492382, 2.3317238025849716, -1.2471763217303788, 0.6742533376141315, -0.4671654422272103, -0.7254154200533441, 0.23441703660981258, -0.4694323705405022, -1.612196166706617, -0.32563743615759183, 1.3898422646804982, 0.859146411700291, -0.2601661523404493, 0.3217117418244543, -1.0494347817905338, -0.5991667659706216, 0.8881794866760082, 0.5840210011255069, -1.2075635705473267, -0.3377101947699321, 0.13603306699179857, 0.5802301275309478, -0.704852221496425, 0.9615592481981307, 0.5450775566697076, -1.3780611142397772, -1.6167118554509825, -1.2811556928029282, -1.2724034602241299, 0.16120409249117293, 0.42750602102457846, 1.2666174612779004, -1.5508664421057543, 0.2620798945065646, 2.0332984208088303, 0.1261854523088127, 0.8345628189160572, -0.687707400490003, 1.0656169293117534, -0.31887838781706285, -0.005112174834790412, 0.2023207919468502, -0.5067392202386992, 1.823953396894383, 0.1523428263375545, 2.2440789764565605, -0.6697609733471732, -0.34309395149284333, -0.3824068477398153, -0.33303131558596377, 0.9716664193169441, 0.8311581421420695, -0.22780854741625758, 0.20032616901737238, -1.2785511330679982, -0.3197180135822623, 0.4959834053798831, 0.6752515974385053, 0.5334780166422973, -2.002795187816773, 0.27050605525523075, -0.9424869426824867, 0.458248932225858, -0.46118697878329784, 0.47832198627914324, -0.3661079341479641, -0.09319576406942727, 0.577819340020893, 1.2520997452677414, -0.2933921906178384, 1.136343377990995, 0.2468127074537116, -1.2252940887079373, 0.6375579341674809, 0.3462788965739153, -0.5177836733288577, -0.035284483529249705, -0.5338255181822806, 0.5193809161508848, 0.21798950092913766, -0.6956597590579882, 0.8046664677176151, -0.11463713804889088, -0.19176077914163675, 0.791885645189318, -1.4328882682847868, -0.9528659659051965, -1.637558975422558, -1.989264868496837, -0.8459538105074142, 0.944828292676069, -1.1921028346027158, 0.2546472038919744, 0.3861916389251654, -1.521512495954636, 1.535375205330882, -1.8914196543962882, 0.5149418901648063, 0.7752013519581096, 0.9145512827088738, -0.5080387911664219, 0.05031436015329658, -0.41216922303342934, 0.37227191099516266, -1.6600720014787667, -0.17968185610490092, 0.31830407850338693, 0.7686158224111359, 0.3658407552939923, -0.7165726159358554, 0.013357030158994452, -0.3372894061190394, -0.6789238357123408, -0.3832898769073804, -0.3227036184382978, 0.4460521819485986, 0.061892643502349666, -0.32267506934792967, 1.484633534363464, 0.4021774493619681, 0.4307762865129178, -0.5296069271797403, 4.151195369087241, 0.5487000909862146, 0.7163468748574175, 0.3808084179332832, -0.4772621640085183, 0.5479157515300286, -1.1044576899329694, -1.2036713335057232, 0.6909028182382742, -0.6529263174772725, -1.4725628267518027, -0.7473406606454858, 0.7387557364279378, -0.8760308731605688, -0.967180804004829, -0.49221734292555436, -1.4382474439405089, -0.3481040054911766, 0.22254446316102353, 1.731032969663649, 2.8055652681876384, 2.1160837251189757, -1.379194059803083, 0.6326539345516785, 0.15520482328940885, 0.8119547790137315, -1.610952801893542, 0.008918798158614715, 0.477564041851444, 0.25533528319659754, 0.998197782393884, -1.6484421505039013, -0.3004410869764593, 0.6057050457224126, -0.32020257217470566, 1.3359336989858763, 0.535133451920879, -0.5673962878727761, 0.24055606737735033, -1.6590194676777759, 1.9066265876591473, 0.2721183739248777, 0.06834872118107038, -0.7693837262978656, 0.6000193521872865, 0.20157135480173424, 2.472674269826056, 0.8258740084136792, 0.47137911495882484, 1.244572899040009, -0.3130562609295631, -0.7435497606216963, 0.13509423548484906, 0.6656236185332783, -0.5980179153119386, -0.6435416164377876, -1.3312882258359282, 1.0671430529417514, -0.09759042594372078, -0.35648374184511217, -1.2269456519162936, 1.6814992783555787, 0.04184788447848968, 1.68139083696507, -0.3030041682277847, 2.2849057798957273, -1.196531329787736, 0.6523992375423346, 1.4893905469952924, -0.6823297566186022, -1.1041446305707252, 0.4421841974696293, -1.4167436314301174, -1.5920898580925384, 1.4343243359414184, -1.9045005981467849, 0.057069471507391965, 0.5278224067845345, -0.7362602350911139, 0.19448161568570255, 1.5261487666748228, 0.004388839910851893, 0.015470814085829732, 1.615975884645819, 0.8879261649672402, -0.1326774466682177, 1.9382951563961202, -0.44547041979800195, 0.021230799239171535, -0.1571038497582797, -0.16148117044663435, -0.36447608885124355, 0.9360978659212479, -1.9835447885628907, -1.8064899970710941, 0.9036470769919311, 2.425086908712557, -0.6272015905517969, 1.957160646153106, -1.7538826809290353, -1.2373863108002687, -0.42249715021397544, -0.02100757430425144, 0.7526038212912296, 0.2047007870068672, 0.570705167349308, -0.7783611682766279, -2.3095477705978107, 0.22606718794222244, -0.32290132655615966, -1.597852946819715, -0.8952260637834641, 0.5568680007496093, 0.31733948888023006, -0.24697424901807427, -1.1633182632185708, -0.261549901914151, -1.855510767468883, -0.12245837196266503, -0.041080160924985655, -0.585409894265932, -0.4138566348289641, -0.6980329178942006, -1.0029216664042124, 0.10979946351080472, -1.6542257294131706, 1.393533502384212, 0.5174318732191945, 0.30147088153612134, 0.13176508644926532, -0.21802556521053773, -0.55329143084434, 0.2739291983626038, -0.6883020380352294, 0.6825537252923997, -1.5046508987238285, -0.5828333121318955, -1.1884290907589348, 0.1665509776472768, 1.3971140199197725, -1.3673567412727532, 3.0130147873449924, 0.7896539284272303, -1.055832543621147, 0.16658265730062774, 0.5232158049212052, 0.28570121739370363, -0.5325889850018535, 1.2918469178499534, 1.9819733294664026, -0.8093143209894869, 1.469595195954295, -1.2932943712519451, -2.1208284016640415, -0.4050898165492931, -1.1517011911443218, 0.8998956145443444, -0.23384644657433187, 0.526560658434697, 1.1222026129349756, 0.2160342440751586, 0.6797496626133915, -0.5331175042591417, 0.6637291624241468, -1.0147033164625645, -0.5049005083720637, 2.0659370602844436, -1.5900216896103532, -1.5339789892006166, -0.3200566858112642, 1.2830977533887504, 0.04654283897838462, 1.7838815763897529, 0.3904401499994594, -0.4111612807908421, 1.1847627666014435, -0.3955642857036182, 0.3675601425931492, 0.088662611923031, 0.46299757634197497, -2.2893235368562155, -2.268927460602336, 1.283516393286584, 0.20920007589000394, 2.4411204448502586, 1.1389069409067243, -1.1898031767179975, -0.43341406963651063, 1.7741298995608883, -0.016709317081657786, 0.11517899718492178, -1.5511855060356194, -1.3117417253404795, 0.13351391911792548, 1.1637653113813886, -0.27570074398670863, -1.5697680634730649, -1.954956462100421, 0.5552656916393576, 0.2373994429321212, -1.9303747103380289, -0.1921132978172397, 0.6250698172881495, -0.5949372282094622, -0.7826608913130164, 1.4562229269964548, -0.5416543116490529, 0.6936768940278385, 0.6261775893704643, -0.5859171652539004, 0.8555032381807751, -1.3676477362552337, 4.238533804853162, 2.4545185017647904, -0.913404759221193, 0.4250981319720471, -0.9763799065871701, 0.7808586039540816, -1.0328656450097617, -0.7721604644533069, -0.3530813727528884, -1.5411637128692925, 0.6539840707892913, 0.008229110336607592, 0.7966890453416182, 0.7037436956153061, 0.6614113279704881, -0.202848267721112, -0.29922308805427594, -0.5522097500427048, 0.09875065962242098, 0.7083328933399845, 1.7362802880024957, -0.2266535118741716, 0.5299005404626365, 0.6719364752934611, -1.8615906591576734, -0.09068813508526216, -0.1888891414579059, 1.3423077781666952, -0.6924470819765697, 1.1041424493388294, 0.4134851965057971, -0.4735791706069265, -0.7356651547484112, -1.575469178834194, 0.2059058482018911, -1.317543434131728, 2.347983690185328, -0.9350302948592141, 1.0039027596124084, 0.30969112449845376, 0.2541035100649089, 0.4211688015877788, 1.0647819562744412, 1.2886070484626828, 1.4453593413552184, -0.026423761925036916, -0.10046863824315762, 0.9375145304857443, -0.8794152043439424, 0.6161524124555712, 2.1765363841706007, -0.17519057418498793, 0.40239774219958097, -0.5314020562312248, -0.028260581879397745, 0.5266158478069836, -0.8130604924415793, -0.1620471073410965, 1.368895928096441, 0.2544222901453687, 0.0682140981898076, -0.08305873685961358, 1.1551649925205691, 0.20488815881813946, 0.9788412565833704, 0.6730413277634831, -0.10343628631794778, -0.011056773466636922, -0.26893242071811874, -0.22234819963659333, -2.063667484853198, -0.9528556130697672, -2.298918544448265, 1.4641851715761252, -0.6443216828282126, -0.7448597363782805, -0.5637254977251447, 0.026036289664867818, 1.7947458799857385, 0.47823466572724166, -0.6009031631006543, 1.5622161381793802, -0.012361922782423504, 1.1320815868058798, 0.2666111797781486, 1.0800481352272358, -1.3534368975569377, -0.12565159569358056, 0.8269760280151415, 0.4101805250340873, 0.5459250834776258, -0.578841318268924, -0.7708632540651004, -0.004711348442621566, 0.9139140784227678, -0.5887863731031122, 0.5255711160933076, 0.6899347371240381, 1.8406881042526044, -0.1494953868420972, -1.487372075437836, 0.04531226841225139, -0.8785887917514404, 0.6773321050874577, -0.0983506278141217, 0.5597628029545394, 0.9487620637619515, -2.0252012328413445, -0.3325641975286207, -1.1258330017788327, 0.023802932989263906, 0.42532764883918267, -0.1719694477750812, 1.1366386876717014, -0.06950662371831764, -0.5610077364219385, 0.6924775343736279, -0.08202929488370111, 0.03632839803067284, 0.2035677562126695, 0.48902609842042033, 1.0804149661369027, -0.7425106537204975, -0.5702977393123885, -1.3826240552189546, -0.5228635824639636, 2.541990031610674, -0.3358484399232096, 0.2708627260856431, 0.3577767439219406, 1.0481739531875494, 0.41502512979161693, 1.945039667472124, -1.333971998047096, -1.6319888693166744, 1.8081668907285702, -1.126545357015281, 1.017481115516176, -0.8746343950821853, 1.613464623094451, -0.987275067228173, -0.7782780233402289, 0.9358137937887636, 1.2685709811916313, -0.9922941446951046, 0.6495420807278994, -0.5015976512021791, -1.4515930568861974, -0.3017145427194569, 0.22396206990737433, 0.2449168875921067, 2.4353212694888504, 0.17708064085180888, 1.6379030780705819, 1.3277860775740942, 1.9763199313325732, -0.7129095818443579, -1.2469376388413769, -0.6242116235182271, -0.48041188552500946, -0.14268548581723478, -1.6604837693733687, -0.03806802185256857, 0.6963957195724964, 1.0623750746697818, 0.6233441558858677, 0.36657697739573364, -2.295074935487194, 1.0845561474708743, 0.4905268784109729, 0.9510955040687479, -0.5026253874469225, 0.5855406556971665, -0.4674907407543193, -0.5608509773657036, -0.054561000082436986, -0.13488620479039842, -1.6100667806518532, -0.3709803597469035, 0.29582203102054655, 0.8410085106517383, -0.6645326878187746, 1.1367845966619665, -1.3201243250510812, 0.13674546078719402, 0.9775512964502551, -0.6593867653205457, -0.16315112660697673, -0.6429666213286755, 0.5269463017070531, 0.13689944560905168, 0.2704736580667669, 1.0956057892301136, 2.0377599847068084, 1.1896914387079371, -1.1056334740369136, -0.061419064162327903, 0.6558988396743295, 1.1616563231258492, 0.05233437675572931, -0.43279599457514883, -0.6310196056008639, -0.07017445588897313, 0.21859133324465385, 1.7464304327601714, -0.38374464463022673, -0.4116300533373271, -0.9012559637626759, -0.29838378562277373, 0.1776181377502974, 0.5337179529206251, -1.6927309440114802, 0.19627841167268098, -1.3375053577369045, 0.34292489957433187, 1.7252380623451755, 0.3893308049876548, -1.6138835583138924, 0.24320533391068808, -1.503402740971457, -0.9820815913055403, 0.02826537327258336, -0.8677808012629867, -0.15732458310810252, 1.6448055242437023, 0.3882793537178024, -0.4745596075074129, 0.1657838803136746, -2.6918015152661914, 0.7632486195032542, 0.6973513947209198, 0.4101471209696532, -2.2799074841609177, 1.284770153684539, 0.03995086580146711, -0.2991581182473426, -0.08304172354784842, 0.28042933971050626, -1.0923071947444258, 0.9164084413681113, -0.6812760370027394, 1.5480579290916134, 1.4837613730950547, 0.023182419970626405, -0.2668022486973583, -0.1188765567232481, -0.22450605274030175, -0.01068777580695019, -0.5681288373513323, -0.798016193089919, 1.112093456749927, 1.4289069908566108, -0.8325323358283204, 0.6527204397669472, 0.45576965736433434, -0.05177234665505003, 1.1825820243015825, 0.5633724078799881, -0.2598338582029702, 1.2260636343236992, -0.06502314120499497, 1.3554177601202826, 0.015378075446720483, 1.771795744777381, 0.19716116753361734, -0.9289545353666014, -0.01120548540552129, -1.6568561810835647, -0.9711632993719995, 0.2888457566302567, -0.33812030790826947, -0.6944997091883152, -0.08753361436324024, -1.0825962267681306, -0.4698117598324523, -0.31391779051735585, 0.5155485258897468, -1.3906426323765313, -0.08794713693189429, 1.323299166667676, -0.1281180737897692, -0.7313549630276092, 0.30727046798040325, 1.1752251844693715, -0.7441249207177553, 1.6052690350217986, 0.18649308224250258, 0.17892852927651728, -0.0995691575256924, 0.4348534499771249, 1.484991734895783, -0.5720258392859724, -0.08690696328546704, 0.7713939696120472, 1.1722789472312292, 1.9496467641354467, 0.22942775691626238, 0.7124499254350729, -0.40961823346856296, -1.5841557574786587, -0.5783735657948544, 1.7072885072301731, -0.9760682458530513, -0.7133260677207641, -0.17406636751269225, 1.5115376392568705, 0.3444982802650086, 0.5618620561647593, 0.7768151831330067, -1.8495980414473379, -0.022772431183660354, -0.2688258642531703, -0.2316501235768239, -0.4349049986098626, 0.09524082099485014, 0.18287945969711975, 0.9756566821517488, 1.2112951490716906, -0.8350588047652798, -0.7894781658614808, -0.8425885522378407, 1.0078366331542066, -2.170943513352494, -0.07697039348999336, 0.624710432231761, -1.5714538060400307, 0.25497055299290833, 0.9193656642088831, 1.0914383490187152, -0.2746559451582547, -0.24795001040712014, -0.1821963308600328, -0.6151863420266909, -0.07974289047525698, 0.864835252508244, -0.11852133979339911, -0.5867385141837459, 0.7425778869302543, 0.7772435416319093, 0.7418518577569089, 0.18477538422252776, -0.862469199675159, -0.7201960090993764, 0.7441788487719844, -0.44740979333359115, -2.011406066578824, -2.0397719472330946, 1.6317617740438857, 0.501298361621573, 0.46480805036189093, -0.6492071444203512, -0.9962577891956758, -1.176143672100762, -1.460358133281756, 0.91939184535992, -2.6115193413417344, -0.11701441464426601, 0.36330899947821516, -0.7619851206952822, -0.9791836397007687, 0.06605184536205168, 0.9852736131214399, 0.18316974821162169, -0.16385983370688456, 1.769889718870536, -0.7568083172666948, -0.07093554823462433, 0.34915804932546474, 0.04394955212420144, -0.3412151969411125, -0.037998909530440356, -0.7920940693112494, 0.23924283654785033, -0.7218726802077204, 0.756794397487571, 1.129998141517764, 0.06199671202439378, 1.5818825635871332, -2.0927309142911965, -1.009720388820037, -1.161041154747722, -0.8447671692136892, -1.0157929981350513, 0.7904271516718387, 0.7254384385818724, -0.603295486359894, 0.25924412778603606, -0.04640660866056171, -1.6000423263326133, 1.8143254523998487, -0.08862538404196012, 0.5332621638876169, 1.1045997215315637, -0.41584450160976266, 0.9441745490519653, 0.24798697093505728, 0.007684578291883661, 0.10198392659226542, 1.6199201784700468, -0.32528736620138143, -0.5826981266958557, -0.36325256797247957, 1.1471577477638135, 0.6178987140946427, 0.36972297251343633, 0.5437284650592201, -1.4459624565283546, 0.05792287061159475, 0.41648235426252744, -0.3752827187450667, 1.6652887251405053, -0.42564437336001554, 0.9761973006448895, -0.7275241033025399, 0.6934458083833381, -0.29112188437100084, 1.3282243166189927, -0.9536927875603478, -0.719434212611784, 0.6748136465043926, -0.03597354593983007, 1.94009058703115, 0.09882655123973512, 2.1053876175385304, 1.4185342675315131, 0.1206620765251783, 0.14903745714080963, 0.10442318495551679, -0.17795681161591564, 1.2580662909953826, -0.309432614193383, -1.0905944849250224, 0.4769931537784153, 0.42744787996997274, 0.015299040637353436, -0.35211140544489866, 0.2588719668529644, 0.39806242670614195, 0.0982957694556772, -0.3643039151707563, -1.661352851241187, -0.7050125329026734, -0.943960952206926, -1.4473953121799084, 0.6926023466644213, 0.284659435800313, 1.6730413075943111, 0.6423676343810131, 0.3968310937206259, -0.8342984203305135, -0.06635863092332817, 0.48133940282415283, -0.34365908316039695, 0.8195486752084361, -0.2781857864218842, -1.0136587780355568, -0.4538474341770635, -1.1337344789342048, -0.5150244531135606, 0.958566232938252, -0.16105129432877321, 0.38436738614303156, -0.5172439276028532, 0.23093709347387772, -0.30272270953081704, -0.21962749662435752, 0.9566459591875526, -0.788349928603636, -0.44952615913370747, 0.525332205545319, -0.5812548660484521, 1.2956320514491553, -1.752164482642109, -0.6047121066028011, -0.15329007945272555, -0.04110361189064399, 0.2075100652227872, -0.04955642332135181, -1.2847570979710345, 0.4806820630644186, 0.8112350665109486, 0.577438605043487, -0.5506815219471743, 0.7858766373478445, -1.101050840231404, -2.2244251571050273, 0.09434075969634925, 0.19198836106624168, 1.0670984516256519, -0.7989553140491875, -0.20794218769948203, 1.5326125420890269, 0.020895643272767377, 1.429434237396836, -0.09226519337744446, 0.2530160966559398, -1.2052909073582596, 0.18629835668130743, -1.1412717735009497, 1.2293983703310951, 0.20963090073800605, 0.2771037033747804, 1.1176243523307434, -1.7749390137644867, -0.6160566595276167, 0.37431077650255806, -0.628817850166509, -1.5457989014436102, 1.0413567521072367, -0.6687052895376355, 0.08823501338384936, -0.8504561089335623, 2.674041129993747, -1.5899356389768722, -0.12358228035838018, 0.4957660906211637, 0.31851942141963985, -2.077120767009975, -0.5844799194788266, 1.9510391355162264, -0.347560684365186, 1.3086755801775074, 0.34475766053720236, -0.4033872470813162, 1.1582973308383313, -1.0684599760113471, 0.529968393960725, -1.6526921510620116, 0.9524384542696674, -0.22909069471152455, 0.6652418786019982, 0.0030589233668147898, 0.11365610389048802, -0.2480098634476716, -1.739708416005498, 0.13128969246670458, -0.8124775515041727, 0.09211054412374194, -0.5372875032406812, -0.0032089521665293573, -0.8316736236057737, 1.5059153046848375, 0.5055489101297763, -0.9926899954404349, 0.06717218616117565, 0.7564225434228204, -1.1172446398752929, -0.0971278427942958, 0.1783634876571702, -0.43831740139818265, -0.9897246258630265, 0.42789947696918956, -1.1881782474146696, -2.2595621851300622, 0.6418731773450146, 0.2534262764606806, 0.4316556467189196, -0.1404488018967209, 0.8263074484867586, -0.14552757065621125, 0.0789242186302759, 0.8209702417714765, -0.25903816299191046, 0.6767653743426741, 1.6145117461589933, 0.6926264703024766, -0.32214772217430293, 0.9292349516554164, -1.0508805938355477, -2.749764645898245, 0.013188601563584493, 0.33055296889149677, -1.1958215283600067, 0.1405450269372766, -0.508425415799171, 1.4570136536517577, -1.0251431195020073, 1.0969073653806085, 0.2995765466625078, -0.7079203015696985, 0.1288388731533383, 0.7296772632654821, -0.5084827629757859, -0.9959874907849151, 0.7608364139386558, -1.1970996777698375, 1.9127937929371042, 0.38743478707694207, 0.21795474706617954, -0.29993899538603785, -1.4785086866034736, -1.5956467908439216, -1.2082094773229581, 0.03773293580577447, 0.790311941516555, 0.5111896121176778, -1.1940258469292004, 1.2227006637979814, 0.836882842830787, -1.4311686461788606, -1.2744460342013122, 1.4644637457684015, 0.9728193611804964, 0.555860074890682, -0.4409659816734968, -1.268835784551248, 1.830337701005201, 0.5659326920677746, -0.5949593269450844, -0.48933591057504616, -0.5902894454298842, 0.8313257587194035, -0.014541865211528828, 0.42819120074867917, 0.12344083343107326, -1.5259370836437376, -0.4422937354316872, 0.2663102136658507, 0.7711270876630171, -0.6631414912664546, 0.7010024223490354, 2.074527616332793, 0.1267033512168494, 0.5771332153363341, -0.1669943788998164, 0.37570932219774306, -0.009486467375681047, 0.6339720925542973, -1.100679804820569, 0.208089727845949, -0.9425617416684303, -1.4440593374039066, -0.4882367066101957, 0.7163657255326146, -1.0357588950466872, -3.0737220356886374, 0.2470950795522819, 0.2864288554119523, 0.1483978221958065, 2.1154989451643167, -0.4001965762118845, -0.6462203956080385, 1.1265359562700552, -1.2596675882237476, -1.0043123290637297, -1.2085727111478823, 1.4452610642730932, -1.5066630796353353, -0.26195290731609777, -0.14271399927968614, -0.6530276111308737, 0.31402361422899266, -0.615575261840529, -1.5382467581744872, -1.146638529472436, -1.2566936090246918, -0.11659270837613013, 0.35542964402643873, 0.02526277564568483, -1.7743572584114875, -0.7085383632824588, -0.63517949386522, 0.7100322417458258, 0.37725139473966673, -0.5759538564824571, 0.08180511402950946, 0.41407533287471754, -0.24200104577387313, -0.4385693241008144, 1.6526863394676001, -0.11474769466518762, -0.7778772946580198, -0.28839425476706665, -1.9107601252457116, 1.2251863883694925, -0.6102167805929645, 1.314166180001923, 0.33549111757526723, 0.1642165334041994, -0.2711391207536865, -0.7227241249586495, -0.20242746834599726, 0.511635243911443, 0.7803547739974653, -0.327423000785996, 0.3502846670812043, -0.6690281009028096, -1.603564129628161, 0.651294169982652, 1.5346475986331407, 0.6076831921328979, 0.09553225219459871, -0.7254748961580175, 0.5000694612537876, 0.41285641663749495, -0.6307563086891868, 0.10304359933774031, 0.6906693939179498, -0.6117088277209861, -0.37359085726781716, 0.6415372041475905, 0.5667199392606257, -0.471612466163586, -0.28409429557130345, -1.1000185275940002, 1.2078426552444212, 1.820822882585083, -0.049716516450738324, 0.48541676042055915, -0.24833733761952417, 1.9706194085315605, -1.9357972478544503, 1.2746428725319756, 0.8787450667483632, -0.5743399181816461, 1.146477625622449, 0.82904607165605, -0.6240307749078965, -0.5201093385684066, 1.7563590799610034, 0.9291759054010359, 0.03949431623274768, 0.09878351123218292, 0.4678794507416003, -0.21611204185496907, -1.9415038866503043, 2.2711411739440632, -0.7573422816803704, 0.4462925903632097, -0.7789087537529676, -0.5503182367952988, 0.5971424930574555, -0.07203878009168195, -0.5217028851935946, 1.082108216219426, 0.41790242250612963, -0.0679066357661384, -1.263509598957737, 0.8004808096290376, -0.2541222406082443, -0.2133433497515408, -0.26792364723437295, 0.20112906676382966, -0.32435552792181394, 0.23282205608740192, 2.2221675354748855, -1.4830106452698057, 0.9891247273398209, 0.2603986195227453, 0.4910300720533456, -1.357238648432873, -1.2514963996484836, -0.30125845912815724, 0.1928097450048526, 1.4448018223442105, 0.5625834185014028, -1.1979257187589254, -0.07857776228971138, 0.06045821558284647, 0.7133596907037718, -0.8010426610921747, 2.0440257915732163, -0.5915625781476785, 0.4614571279264127, -0.8323915586162163, -0.12281522077241769, -1.891751987785829, -1.436820011323204, -0.3375407922826853, -0.4583639388670451, -0.09352467965350812, -0.09376078246251955, -1.104789843452201, -1.9113071146131402, -0.3080107984257694, 0.6890879947469407, 1.6298325324990017, 1.7332383276272256, -0.6570721931348752, 0.5011093119580866, 1.4256340832824121, -1.6409542816000537, 0.3031292239641022, 2.064237216045931, -0.051705902095611905, -0.7832897005596622, -0.7454241686325258, 0.7295020332844333, 1.6375808311567626, -1.2299275543889183, -0.5600159935032863, 0.36276227989135124, -0.0841421034314566, -0.34511214955582953, 0.1013965878283084, -0.18098461747365058, 0.9191251794719164, 0.06765779742714738, -0.24919806799835556, -1.7584641099826481, -0.2408943706631287, 1.1586506587846426, -0.6941027599159496, -0.40284176463802435, -0.07218934233754541, -0.6866794606674014, -1.136814985867382, -1.0286542111302972, -1.0753215203338025, -0.523524292626774, -1.1218134808250722, -0.874089313385567, 0.09331272041243248, 0.9386738047553144, 0.09076349142987619, -1.2160470369625689, 0.27900325888755534, -1.3482125481314258, -2.0470437247953943, -0.40859660863279956, 0.2828811548709021, 2.4800984064132803, 0.19294989666278736, 0.28212861056292143, -1.610912083835489, -0.5315801864225906, 1.706608368850939, -1.8501729731293364, -0.630002988972623, 1.4757143328892797, -1.6396479208187233, -1.8371716642350544, -1.0742314481301545, 1.0754611432095824, -0.5378007226773498, -0.3178784375535398, 0.5735335996600629, 0.4868994275345122, -0.21549627729467807, -0.16640172916066487, 0.908080649370133, 2.173437328284729, 0.4190344084566232, -0.9569146506578511, 0.45263575951706014, 1.778059009562198, 1.4488553145210796, 0.07467679612778716, -1.3459068501008828, 1.0900502612985628, 1.8272758673855272, -0.23894381261705294, 0.12043314967623445, -0.5773200285051094, 0.5216921180645022, -1.5092635778866117, 0.18102168205190566, 0.8965052639560143, 0.9201255573471795, -1.2903912922821366, 0.9873211691804024, 1.172724388329733, 0.20376377055663986, 2.138854170658406, -0.9316113182700534, -1.2475280594655904, 0.417911924644604, 0.3104385253889033, 0.8962967028920321, -0.5778036698087538, 1.0180641994003492, 1.978139527067393, 0.37723162368545265, -0.3153731448300482, -0.28043983006620493, 1.2268346250368896, -0.17227523540812437, 0.2580612644636763, 0.7839164309552376, -1.6857109421253955, -1.3003167935540005, 1.933409068497346, -0.720369637396077, 0.5104055429987321, -1.08388129713197, 0.23369005993420508, -0.8857461821887489, 0.21884110679487903, 0.3399839311138383, 2.2927612097100596, -0.1302670929713838, -0.2227227695346543, -1.4346253879586792, -0.8344086694038684, -0.7002516953857244, 0.43509420272323845, 0.8609631356011878, -0.43270705045183616, -0.24001073577599197, 0.28609176501217787, 0.7031717689478829, 0.23204270200931182, 2.1505272334979897, 0.2861763181933207, -0.7584547841123832, 0.5168757252968688, -1.1092933224722437, 0.28264197275089215, -0.7359352757039123, 0.7696916736749783, 1.1693904145377578, -0.03894762164617204, 0.6641135169499479, -0.7147964181583462, -0.3596311141562558, -1.8435871360153697, -1.0008815336080084, -0.8745896149619665, -1.7854772192044157, 1.4101601051693955, 0.3989081511969654, -0.46138352582140285, -2.070033977081843, -0.18644561980439622, 1.2400855648899223, -1.164136732605302, -0.7927090251554685, 0.5630168884076489, 1.1671379510254194, 2.231868835700232, 0.4565350508345933, -0.3389202312449233, -1.5275179745183336, 0.3230936836149417, 0.6082923125809354, -1.385778896370543, 0.4933263314478739, -1.9751095768562033, -0.2065779574546836, -0.19565497391904002, 0.19507228882058708, 1.1491676003071556, 0.47753659551701444, 1.267566892973097, 1.2699972267061581, -0.14783471801597317, 1.3947086641636515, 0.13849276493060986, 1.543713937406089, 0.8793567120723491, -0.19166319681661234, -2.178011595451856, -0.047935435051166216, 1.0519017754831546, -1.1503195176998693, 0.9590735535318957, -0.4101942648351055, -0.9291595233845755, 0.04827969552760872, -0.006591472103865717, -0.8287084685787525, 0.510991782645471, 1.1993354234468527, -0.6249200800653011, 0.06906024810652203, -0.2810131831119284, 1.7132565332176783, 0.3715878450725023, 0.4232188686511501, -0.23751681917622205, -0.284138784599415, -0.9181240192735334, 1.7200351673814782, -0.5646085076036653, 0.9511857419563984, -1.2703881921689144, 1.044280055990386, 0.03786689772227966, 1.4182728427165774, 0.8337325218228854, -1.0587247347181652, -0.5031113248889103, 0.8873021806079839, -1.6837264548806383, -0.963353987660909, -0.3925379775035674, 0.030351645171583227, -0.1480784901933993, 0.5971587614103617, -0.5966536682782796, -0.32585054539846936, -1.2881189235714545, 1.4626168790196996, 0.4876451579697916, -2.5512587798294053, -0.22746942805830464, 0.22714076786745147, -1.2367287849167479, -1.4958341332392378, 0.8404569974160938, -0.5250803172042454, 1.1030214409483563, -0.9430810970721388, 0.8419017021480036, 0.10747778668821155, -0.3872490592960608, -0.5972525446631549, 0.9643730616194118, -1.9150859939615104, -0.16132999883201363, 2.247013458758037, 0.2793924489497806, 0.22445447609820876, -0.5935321078971101, -1.021619853538392, -0.5669336330928147, 1.51072676166332, -0.4577459477554841, 0.2856756020469671, 1.3003683403048245, 1.6681883000570241, 0.29140173625397836, 1.4448227513845624, -0.49337735263206095, 0.3063926208053877, -0.8839906748898476, -0.8508338033152001, 0.32884664967404276, 0.8225807552240499, 0.28615338220135916, -0.6459677898912536, 0.456084692916367, 1.1816323117108978, 0.005750129390048088, -0.23080308943910496, 1.2329424071409298, -3.103298270774514, 1.2457064642869893, -1.438732143788353, -0.5069669088042135, 1.9410370006144513, -0.680135288988108, -0.684441394790031, -0.9299498749943689, -1.0023257557431406, -0.20085573890294844, 2.1892107786913413, 1.0539082768590986, -0.12946159481571648, -0.9603859816501762, -0.6759566438229674, 0.6063321523892387, -2.04080451980182, 0.3448387208567922, 0.6188680405937481, -2.53483233750232, 0.4718381152261103, 0.5204602861759604, -0.37294274011868744, -1.0608122326322948, 0.876995543974861, 1.6208103493973607, -0.10501804755065293, -1.144605534391477, -0.11545809967020526, -1.5254381527091445, 0.704971452166678, -1.1385423962074352, -1.0702260829994228, -0.8042670395297246, -1.9958053298936345, 0.06149218869846654, 0.0034778293679331336, -1.6309611881902848, -1.579450043003391, -0.812854397163873, -1.3440391096930395, -0.7992158635130223, -0.7307305666236779, 0.563033821782763, 0.5929740847991084, -0.4072124328227139, -0.9597031772508735, 0.6326426393413165, -1.26743591058185, 0.012961789096372823, 1.3690236683244486, 0.5626351995527971, 0.3930969343026333, 0.3804639938085295, -0.7055289460485151, -1.1137071825718237, -0.32401279261679405, -0.25360651639701537, -0.3629288727538312, 0.40309857005433064, 1.6124254520554622, 1.145346015655076, 0.18482864793147852, 1.0146132489781052, 0.5762713361888263, -0.4302922143454036, -0.7781673008888688, 0.3165266777932903, -1.3210033528584464, 0.47419403592709836, -0.02875008939599337, 0.14714621419460175, 1.4797797158907586, 0.6830428568029596, -1.051712101999051, 1.194440018218743, -1.1642432883696971, 1.04395640790416, -0.3903019504585278, -0.9469832104094259, -0.15920476878484313, 1.2958603176641055, 1.2195200287127348, -0.18102374320360753, -1.1645019636692635, 0.31512163398607973, 0.4112140952226413, 0.799068132489134, -0.194553356476797, -0.24713828227948162, 1.1162744704218956, -0.5100587555940508, -1.7306779449877614, -1.3161139044492312, 0.6341932724742192, -0.7347849903121613, 0.9645835907250738, 1.5026031951659682, -1.4760744795962333, -0.06731259930616487, 0.7042872721353796, -0.5335137254930029, 0.0716602316769604, 0.6043539708627061, 0.11692324897196178, -0.05768277951806856, 1.1162713764449659, 1.8796989655172829, 0.43088724829364505, 2.38688392018114, 0.29310955804355704, 0.7462035664728303, -1.4923332297842067, -1.2280466714373701, 1.0734872965346725, 0.5262032697307816, 0.7693518738655505, -0.28211783832137927, -0.0290036682453748, -2.931607725174539, -0.61001449056912, -0.7025484586715276, 0.7759827155138221, -0.19166960568471056, 0.9694902932312826, -1.04530914742025, 0.9727250463770896, 0.06310226379325519, 1.0818373134406507, 1.1047859736064884, -0.9784634968885791, -0.9146592081968249, 0.15142025533299056, 0.23328387697346153, 1.482068026300734, 1.4017194403233817, 0.5839385941999119, -3.499091269336771, 0.6898991159514024, -0.76367161011779, 0.271889761583164, -0.2648955270675521, -0.05132512877225392, -1.1445243383154795, -0.9341941596618715, -0.2758301417114395, -0.12386224872925095, 0.3429318698923175, -0.20380183235337243, -1.442620516648269, -0.08857891832728218, -0.5685844707827721, 0.31653125437081814, -0.7630932541957661, 1.0549727437086984, -0.23903901917404402, 0.13881369002402355, -0.277058267581059, -1.1828348650720584, 0.41122688905564325, -0.11093465300197233, 0.05700186250342231, -0.8530057143017865, -1.1330141754733023, -0.788433518694048, 0.0410432386990952, -0.2526837758051426, -0.7365204396871289, 2.374275605228078, 0.24647701310468878, 0.6189709904599635, -0.3036782549769593, -0.6671553020762782, 0.9568820989023366, -1.079178482400065, 0.29500583173695416, -0.9289020636769935, 0.7791599475788574, -0.1983372320556875, -0.49097598732772324, -1.2327667862306246, -0.463786196952311, -0.7468162049628737, 1.8137576226948215, 0.4907226689424396, 0.3853672976926061, 1.405986757744362, 0.006148904928010884, 0.5727386445488017, 0.09397490448508446, -0.35506525618267476, 1.7351653184984497, -0.39253263749716394, 0.12196757373920339, 0.38004382713166907, 0.7006111800175882, 0.4987705634227367, -0.7645303868257485, -0.5146892069655717, -0.5835515156473441, -1.1547773890712476, -0.05898296492235115}; + + +static double gemm_checksum[64] = {-45.1525872455864, -53.56382313501859, 75.37190918194668, 81.51135315789973, -15.61415231827229, -60.60307561986312, 47.96036541651724, 65.73237574275608, -4.4727051387073935, -33.991042035520486, -26.416772446199882, 1.7860331769884112, 63.625439870165444, 11.62205632780551, -15.064831482590407, -47.33578990077392, 31.789427261811298, 45.60325302655279, 46.39784351481784, -41.63175282633895, -37.58415419207174, 52.811751728757756, 17.491718577483027, 95.99796882635259, -31.290609142980582, 56.18913870959351, -9.784406747318776, -47.798468293167936, -68.85425504150908, 14.518540879027748, 12.444849316598145, 27.044449299453333, 34.41753472048874, 37.24202029503455, 0.0015372059941842764, 56.49727200521621, 42.08187683985865, -60.80036174635206, -41.51354371054238, 25.39617622130028, 64.16199934240205, -49.723260643988866, -67.73199521937849, 14.061632619059395, -46.723037598164815, -1.4946901268404673, -19.516162199239137, 13.487866069963179, -23.19623129877386, 56.32942826668456, 67.64491765822369, 25.427295331888367, -3.9993280938311173, 70.5746407371274, 68.98981144920677, 11.672168486094769, 10.78240530670366, 31.25611590676771, 34.98838254510045, -129.95599475048968, 14.933419865189286, 35.74263691521163, 85.87277962177788, 93.68226272318962}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/layer.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/layer.h new file mode 100644 index 00000000..ba49ef72 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/data/layer.h @@ -0,0 +1,134 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +typedef enum { FP64 = 8, FP32 = 4, FP16 = 2, FP8 = 1 } precision_t; + +/** + * @struct gemm_layer_struct + * @brief This structure contains all parameters necessary for GEMM. + * @var gemm_layer_struct::M + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::M_p + * M divided by number of compute cores + * @var gemm_layer_struct::N + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::K + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::TA + * Transpose matrix A + * @var gemm_layer_struct::TB + * Transpose matrix B + * @var gemm_layer_struct::TILE_M + * Tile factor across M dimension + * @var gemm_layer_struct::TILE_N + * Tile factor across N dimension + * @var gemm_layer_struct::TILE_K + * Tile factor across K dimension + * @var gemm_layer_struct::A + * Pointer to matrix A + * @var gemm_layer_struct::B + * Pointer to matrix B + * @var gemm_layer_struct::C + * Pointer to matrix C + * @var gemm_layer_struct::ALPHA + * constant factor: A * B + ALPHA * C + * @var gemm_layer_struct::dtype + * Precision of GEMM + * @var gemm_layer_struct::expand + * Use expanding DOTP instructions + */ +typedef struct gemm_layer_struct { + uint32_t M; + uint32_t M_p; + uint32_t N; + uint32_t K; + + uint32_t TA; + uint32_t TB; + + uint32_t TILE_M; + uint32_t TILE_N; + uint32_t TILE_K; + + double *A; + double *B; + double *C; + + uint32_t ALPHA; + + precision_t dtype; + uint32_t expand; +} gemm_layer; + +/** + * @struct conv_layer_struct + * @brief This structure contains all parameters necessary for Convolutional + * layers + * @var conv_layer_struct::CO + * Number of output channels + * @var conv_layer_struct::CI + * Number of input channels + * @var conv_layer_struct::IH + * Height of input feature map + * @var conv_layer_struct::IW + * Width of input feature map + * @var conv_layer_struct::OH + * Height of output feature map + * @var conv_layer_struct::OW + * Width of output feature map + * @var conv_layer_struct::FH + * Height of filter + * @var conv_layer_struct::FW + * Width of filter + * @var conv_layer_struct::pad + * Padding on all sides + * @var conv_layer_struct::ifmap + * Pointer to input feature map + * @var conv_layer_struct::weights + * Pointer to weights + * @var conv_layer_struct::ofmap + * Pointer to output feature map + * @var conv_layer_struct::TILE_CI + * Tiling factor of input channel + * @var conv_layer_struct::cluster2cluster + * Flag for enabling cluster 2 cluster communication + * @var conv_layer_struct::im2col + * Flag for enabling im2col + GEMM + * @var conv_layer_struct::gamma + * Pointer to gamma for BatchNorm + * @var conv_layer_struct::beta + * Pointer to beta for BatchNorm + * @var gemm_layer_struct::dtype + * Precision of Convolution layer + */ +typedef struct conv_layer_struct { + // CONV2D + uint32_t CO; + uint32_t CI; + uint32_t IH; + uint32_t IW; + uint32_t OH; + uint32_t OW; + uint32_t FH; + uint32_t FW; + uint32_t pad; + + double *ifmap; + double *weights; + double *ofmap; + + uint32_t TILE_CI; + uint32_t cluster2cluster; + uint32_t im2col; + + // BATCHNORM + double *gamma; + double *beta; + + precision_t dtype; +} conv_layer; diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/kernel/mxfmatmul.c b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/kernel/mxfmatmul.c new file mode 100644 index 00000000..471bbc50 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/kernel/mxfmatmul.c @@ -0,0 +1,429 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#include "mxfmatmul.h" + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 2*kernel_n, respectively +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 1)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v24, 0"); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mxfmacc.vv v24, v0, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mxfmacc.vv v24, v12, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v24, v12, v8"); + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; // Question: If give the abs value 4 to here, then the + // performance is better. Why? + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 4*kernel_n, respectively +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 2)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v28, 0"); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v8"); + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 8*kernel_n, respectively +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 3)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v18, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v22, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v26, 0"); + asm volatile("vmv.v.i v28, 0"); + asm volatile("vmv.v.i v30, 0"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v18, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v22, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v26, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v30, v12, v8"); + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v30, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/kernel/mxfmatmul.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/kernel/mxfmatmul.h new file mode 100644 index 00000000..a6b7979e --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/kernel/mxfmatmul.h @@ -0,0 +1,55 @@ +// Copyright 2021 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#ifndef MXMATMUL_H +#define MXMATMUL_H + +#include + +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +#endif diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/main.c b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/main.c new file mode 100644 index 00000000..e64e7f9c --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/main.c @@ -0,0 +1,249 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include DATAHEADER +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 4 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 4 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +#define B2 1 + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + +#ifdef B2 + matmul_tiled_Bx2(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#else + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#endif + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/main.c~ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/main.c~ new file mode 100644 index 00000000..fe5d2e8c --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/main.c~ @@ -0,0 +1,249 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include DATAHEADER +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 8 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 4 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +//#define B2 1 + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + +#ifdef B2 + matmul_tiled_Bx2(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#else + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#endif + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/script/gen_data.py b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/script/gen_data.py new file mode 100644 index 00000000..feada63f --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/script/gen_data.py @@ -0,0 +1,592 @@ +#!/usr/bin/env python3 +# Copyright 2022 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Author: Tim Fischer + +import numpy as np +import torch +import torch.nn as nn +import argparse +import pathlib +import hjson +import struct + +np.random.seed(42) +torch.manual_seed(42) + +global verbose + + +def array_to_cstr(a, fmt=float): + out = '{' + if fmt == float: + if isinstance(a, np.ndarray): + a = a.flat + if isinstance(a, torch.Tensor): + a = a.numpy().flat + for el in a: + out += '{}, '.format(el) + else: + for sign, exp, mant in zip(a['sign'].numpy().flat, a['exponent'].numpy().flat, a['mantissa'].numpy().flat): + value = sign * 2**7 + exp * 2**2 + mant + out += "0x{:02x}, ".format(value) + out = out[:-2] + '}' + return out + + +def emit_header_file(layer_type: str, **kwargs): + + file_path = pathlib.Path(__file__).parent.parent / 'data' + emit_str = "// Copyright 2022 ETH Zurich and University of Bologna.\n" + \ + "// Licensed under the Apache License, Version 2.0, see LICENSE for details.\n" + \ + "// SPDX-License-Identifier: Apache-2.0\n\n" + + if layer_type == 'Conv2d': + file = file_path / 'data_conv2d.h' + emit_str += emit_conv2d_layer(**kwargs) + elif layer_type == 'GEMM': + file = file_path / ("data_" + str(kwargs["M"]) + "_" + str(kwargs["N"]) + "_" + str(kwargs["K"]) + ".h") + emit_str += emit_GEMM_layer(**kwargs) + elif layer_type == 'Print': + file = file_path / 'result_check.h' + emit_str += emit_Print_layer(**kwargs) + elif layer_type == 'BatchNorm': + file = file_path / 'data_batchnorm.h' + emit_str += emit_batchnorm_layer(**kwargs) + elif layer_type == 'MaxPool': + file = file_path / 'data_maxpool.h' + emit_str += emit_maxpool_layer(**kwargs) + elif layer_type == 'FusedConv': + file = file_path / 'data_fusedconv.h' + emit_str += emit_fusedconv(**kwargs) + with file.open('w') as f: + f.write(emit_str) + + +def emit_conv2d_layer(name='conv2d', **kwargs): + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + weights = kwargs['weights'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + _, fh, fw, _ = weights.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {fh},\n' + layer_str += f'\t.FW = {fw}\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_weights_dram[{co}][{ci}][{fh}][{fw}] = ' + array_to_cstr(weights) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_linear_layer(input, weights, ofmap): + + layer_str = '' + return layer_str + + +def emit_GEMM_layer(name='gemm', **kwargs): + mat_A = kwargs['A'] + mat_B = kwargs['B'] + mat_C = kwargs['C'] + result = kwargs['result'] + + m = kwargs['M'] + n = kwargs['N'] + k = kwargs['K'] + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'const gemm_layer {name}_l = {{\n' + layer_str += f'\t.M = {m},\n' + layer_str += f'\t.N = {n},\n' + layer_str += f'\t.K = {k},\n' + layer_str += f'\t.TA = {int(kwargs["ta"])},\n' + layer_str += f'\t.TB = {int(kwargs["tb"])},\n' + layer_str += f'\t.ALPHA = {kwargs["alpha"]},\n' + layer_str += f'\t.dtype = FP{kwargs["prec"]},\n' + layer_str += f'\t.expand = {kwargs["expand"]}\n' + layer_str += '};\n\n\n' + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str += f'{dtype} r[{m}] __attribute__((section(".l1")));\n\n' + + if dtype != 'char': + layer_str += f'static {dtype} {name}_A_dram [{m}*{k}] = ' + array_to_cstr(mat_A) + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}*{n}] = ' + array_to_cstr(mat_B) + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}*{n}] = ' + array_to_cstr(mat_C) + ';\n\n\n' + layer_str += f'static {dtype} {name}_checksum[{m}] = ' + array_to_cstr(torch.sum(result, dim=-1)) + ';\n\n\n' + else: + layer_str += f'static {dtype} {name}_A_dram [{m}][{k}] = ' + \ + array_to_cstr(kwargs['bits_A'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}][{n}] = ' + \ + array_to_cstr(kwargs['bits_B'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}][{n}] = ' + \ + array_to_cstr(kwargs['bits_C'], fmt='char') + ';\n\n\n' + + return layer_str + + +def emit_Print_layer(mat): + result_str = "// Results Print:\n" + for row in mat: + line = " ".join(str(struct.unpack('f', struct.pack('f', x))[0]) for x in row) + result_str += "// " + line + "\n" + return result_str + + +def emit_batchnorm_layer(name='batchnorm', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + beta = kwargs['beta'] + gamma = kwargs['gamma'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_beta_dram[{ci}] = ' + array_to_cstr(beta) + ';\n\n\n' + layer_str += f'static double {name}_gamma_dram[{ci}] = ' + array_to_cstr(gamma) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_maxpool_layer(name='maxpool', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + k = kwargs['kernel_size'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {k},\n' + layer_str += f'\t.FW = {k},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_fusedconv(name='fusedconv', **kwargs): + + ifmap = kwargs['ifmap'] + kernel = kwargs['kernel'] + bn_k = kwargs['bn_k'] + bn_l = kwargs['bn_l'] + ofmap = kwargs['ofmap'] + ofmap_before = kwargs['ofmap_before'] + ifmap_padded = kwargs['ifmap_padded'] + + padding = kwargs['padding'] + + if kwargs['depthwise']: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + fh, fw, co = kernel.shape + ci = co + ih_pad, iw_pad, _ = ifmap_padded.shape + elif kwargs['chw_layer']: + ci, ih, iw = ifmap.shape + oh, ow, co = ofmap.shape + co, ci, fh, fw = kernel.shape + _, ih_pad, iw_pad = ifmap_padded.shape + else: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + _, fh, fw, _ = kernel.shape + ih_pad, iw_pad, _ = ifmap_padded.shape + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str = '#include \n' + layer_str += '#include "conv2d.h"\n\n' + layer_str += 'kernel_fp32 k = {\n' + layer_str += f'\t.ch_in = {ci},\n' + layer_str += f'\t.ch_out = {co},\n' + layer_str += f'\t.dim_in_x = {iw},\n' + layer_str += f'\t.dim_in_y = {ih},\n' + layer_str += f'\t.dim_kernel_x = {fw},\n' + layer_str += f'\t.dim_kernel_y = {fh},\n' + layer_str += f'\t.dim_out_x = {ow},\n' + layer_str += f'\t.dim_out_y = {oh},\n' + layer_str += f'\t.padding_y_top = {padding["padding_y_top"]},\n' + layer_str += f'\t.padding_y_bottom = {padding["padding_y_bottom"]},\n' + layer_str += f'\t.padding_x_left = {padding["padding_x_left"]},\n' + layer_str += f'\t.padding_x_right = {padding["padding_x_right"]},\n' + layer_str += f'\t.stride_x = {kwargs["stride"]["stride_x"]},\n' + layer_str += f'\t.stride_y = {kwargs["stride"]["stride_y"]},\n' + layer_str += f'\t.flag_relu = {kwargs["flags"]["flag_relu"]},\n' + layer_str += f'\t.flag_batch_norm = {kwargs["flags"]["flag_batch_norm"]},\n' + layer_str += f'\t.flag_y_accumulate_start = {kwargs["flags"]["flag_y_accumulate_start"]},\n' + layer_str += f'\t.flag_y_accumulate_end = {kwargs["flags"]["flag_y_accumulate_end"]},\n' + layer_str += '};\n\n' + layer_str += f'uint32_t dw = {kwargs["depthwise"]};\n' + layer_str += f'uint32_t chw_layer = {kwargs["chw_layer"]};\n' + + layer_str += f'static {dtype} {name}_pInBuffer_dram[{ih_pad}][{iw_pad}][{ci}] = ' + \ + array_to_cstr(ifmap_padded) + ';\n\n' + layer_str += f'static {dtype} {name}_pWeight_dram[{co}][{fh}][{fw}][{ci}] = {array_to_cstr(kernel)};\n\n' + layer_str += f'static {dtype} {name}_lambda_dram[{ci}] = {array_to_cstr(bn_l)};\n\n' + layer_str += f'static {dtype} {name}_kappa_dram[{ci}] = {array_to_cstr(bn_k)};\n\n' + layer_str += f'static {dtype} {name}_pOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap_before)};\n\n' + layer_str += f'static {dtype} {name}_pCheckOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap)};\n\n' + + return layer_str + + +def rand_data_generator(shape, prec, alt=False): + if prec == 64: + return torch.randn(shape, requires_grad=False, dtype=torch.float64), {} + elif prec == 32: + return torch.randn(shape, requires_grad=False, dtype=torch.float32), {} + elif prec == 16: + if alt: + return torch.randn(shape, requires_grad=False, dtype=torch.bfloat16), {} + else: + return torch.randn(shape, requires_grad=False, dtype=torch.float16), {} + elif prec == 8: + sign = torch.randint(0, 2, shape, requires_grad=False, dtype=torch.uint8) # -1 or 1 + exponent = torch.randint(0, 16, shape, requires_grad=False, dtype=torch.uint8) # < 0b01111 + mantissa = torch.randint(0, 4, shape, requires_grad=False, dtype=torch.uint8) # can be arbitrary + bits = {'sign': sign, 'exponent': exponent, 'mantissa': mantissa} + # TODO: not actually correct + return ((-1.0)**sign.double()) * (2.0**(exponent.double() - 15.0)) * (1.0 + mantissa.double() / (2**2)), bits + + +def conv2d(ifmap, weights, padding=1, stride=1): + n, ci, ih, iw = ifmap.shape + co, _, fh, fw = weights.shape + + conv2d = nn.Conv2d(ci, co, (fh, fw), padding=((fh - 1) // 2, (fw - 1) // 2)) + conv2d.weight = nn.Parameter(weights, requires_grad=False) + conv2d.bias = nn.Parameter(torch.zeros_like(conv2d.bias, dtype=weights.dtype), requires_grad=False) + ofmap = conv2d(ifmap) + + return ofmap + + +def max_pooling(ifmap, kernel): + n, ci, ih, iw = ifmap.shape + max_pool = nn.MaxPool2d(kernel_size=kernel) + ofmap = max_pool(ifmap) + + return ofmap + + +def batchnorm(ifmap): + n, ci, ih, iw = ifmap.shape + bn = torch.nn.BatchNorm2d(ci) + bn.weight.requires_grad = False + bn.bias.requires_grad = False + running_mean = torch.randn_like(bn.running_mean, requires_grad=False) + running_var = torch.rand_like(bn.running_var, requires_grad=False) + gamma = bn.weight / torch.sqrt(running_var + bn.eps) + beta = bn.bias - running_mean * bn.weight / torch.sqrt(running_var + bn.eps) + ofmap = ifmap * gamma.unsqueeze(-1).unsqueeze(-1) + beta.unsqueeze(-1).unsqueeze(-1) + + return ofmap, gamma, beta + + +def fused_conv(ifmap, weights, bn_k, bn_l, padding, stride, bn, relu, accumulate, depthwise): + + ih, iw, ci = ifmap.shape + if not depthwise: + co, fh, fw, _ = weights.shape + else: + fh, fw, co = weights.shape + ci = co + + ifmap_padded = torch.zeros(ih + padding['padding_y_top'] + padding['padding_y_bottom'], + iw + padding['padding_x_left'] + padding['padding_x_right'], + ci, + requires_grad=False, dtype=ifmap.dtype) + ifmap_padded[padding['padding_y_top']:ih + padding['padding_y_top'], + padding['padding_x_left']:iw + padding['padding_x_left']] = ifmap + + # Don't cover undefined behaviour when there are steps without a complete kernel window + if (ifmap_padded.shape[0] - (fh - 1) - 1) % stride['stride_y'] != 0: + print("Warning: rounding h output dimension") + if (ifmap_padded.shape[1] - (fw - 1) - 1) % stride['stride_x'] != 0: + print("Warning: rounding w output dimension") + + ofmap = torch.zeros((ifmap_padded.shape[0] - (fh - 1) - 1) // stride['stride_y'] + 1, + (ifmap_padded.shape[1] - (fw - 1) - 1) // stride['stride_x'] + 1, co) + if accumulate: + ofmap_before = torch.randn_like(ofmap, requires_grad=False) + else: + ofmap_before = torch.zeros_like(ofmap, requires_grad=False) + + if verbose: + print(ifmap.shape, ifmap_padded.shape, ofmap.shape) + + if (depthwise): + # depthwise Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw, c].flatten(), weights[:, :, c].flatten()) + else: + # Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw].flatten(), weights[c].flatten()) + + ofmap += ofmap_before + + # BatchNorm + if bn: + ofmap = ofmap * bn_k + bn_l + + # ReLU + if relu: + ofmap = torch.nn.functional.relu(ofmap) + + return ofmap, ofmap_before, ifmap_padded + + +def main(): + + parser = argparse.ArgumentParser(description='Generate data for kernels') + parser.add_argument( + "-c", + "--cfg", + type=pathlib.Path, + required=True, + help='Select param config file kernel' + ) + parser.add_argument( + "-v", + "--verbose", + action='store_true', + help='Set verbose' + ) + + args = parser.parse_args() + + global verbose + verbose = args.verbose + + with args.cfg.open() as f: + param = hjson.loads(f.read()) + + if param['prec'] == 64: + dtype = torch.float64 + elif param['prec'] == 16: + dtype = torch.float16 + elif param['prec'] == 8: + dtype = None + else: + dtype = torch.float32 + + if param['kernel'] == 'Conv2d': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + weights = torch.randn(param['channels']['out'], + param['channels']['in'], + param['filter']['height'], + param['filter']['width'], requires_grad=False, dtype=dtype) + + ofmap = conv2d(ifmap, weights, + padding=param['filter']['padding'], + stride=param['filter']['stride']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + weights = weights.permute(0, 2, 3, 1) + kwargs = {'ifmap': ifmap, 'weights': weights, 'ofmap': ofmap} + emit_header_file('Conv2d', **kwargs) + + elif param['kernel'] == 'GEMM': + mat_A, bits_A = rand_data_generator((param['M'], param['K']), param['prec']) + mat_B, bits_B = rand_data_generator((param['K'], param['N']), param['prec']) + mat_C, bits_C = rand_data_generator((param['M'], param['N']), param['prec']) + + print("Mat_A Original:") + for row in mat_A: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + print("Mat_B Original:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + result = param['alpha'] * mat_C + torch.matmul(mat_A, mat_B) + + print("Result:") + for row in result: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + if param['transpose_A']: + mat_A = mat_A.T + if param['transpose_B']: + mat_B = mat_B.T + + print("Mat_B Transposed:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + kwargs = { + 'A': mat_A, + 'B': mat_B, + 'C': mat_C, + 'result': result, + 'M': param['M'], + 'N': param['N'], + 'K': param['K'], + 'ta': param['transpose_A'], + 'tb': param['transpose_B'], + 'alpha': param['alpha'], + 'prec': param['prec'], + 'expand': param['expand'], + 'bits_A': bits_A, + 'bits_B': bits_B, + 'bits_C': bits_C + } + + emit_header_file('GEMM', **kwargs) + emit_header_file('Print', mat=result) + + elif param['kernel'] == 'BatchNorm': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap, gamma, beta = batchnorm(ifmap) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'beta': beta, 'gamma': gamma, 'ofmap': ofmap} + emit_header_file('BatchNorm', **kwargs) + + elif param['kernel'] == 'MaxPool': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap = max_pooling(ifmap, param['kernel_size']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'ofmap': ofmap, 'kernel_size': param['kernel_size']} + emit_header_file('MaxPool', **kwargs) + + elif param['kernel'] == 'FusedConv': + ifmap = torch.randn(param['dim_in_y'], param['dim_in_x'], param['ch_in'], requires_grad=False, dtype=dtype) + if not param['depthwise']: + kernel = torch.randn(param['ch_out'], param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + else: + kernel = torch.randn(param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + + bn_k = torch.randn(param['ch_out'], requires_grad=False) + bn_l = torch.randn(param['ch_out'], requires_grad=False) + + ofmap, ofmap_before, ifmap_padded = fused_conv(ifmap, + kernel, + bn_k, + bn_l, + param['padding'], + param['stride'], + param['flags']['flag_batch_norm'], + param['flags']['flag_relu'], + not param['flags']['flag_y_accumulate_start'], + param['depthwise']) + + if param['chw_layer']: + ifmap = ifmap.permute(2, 0, 1) + ifmap_padded = ifmap_padded.permute(2, 0, 1) + kernel = kernel.permute(0, 3, 1, 2) + + kwargs = { + 'ifmap': ifmap, + 'ifmap_padded': ifmap_padded, + 'ofmap': ofmap, + 'ofmap_before': ofmap_before, + 'kernel': kernel, + 'bn_k': bn_k, + 'bn_l': bn_l, + 'padding': param['padding'], + 'stride': param['stride'], + 'prec': param['prec'], + 'flags': param['flags'], + 'depthwise': param['depthwise'], + 'chw_layer': param['chw_layer'] + } + emit_header_file('FusedConv', **kwargs) + + else: + print("No valid kernel selected") + + +if __name__ == '__main__': + main() diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/script/matmul.json b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/script/matmul.json new file mode 100644 index 00000000..3eb11985 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b2/script/matmul.json @@ -0,0 +1,17 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Solderpad Hardware License, Version 0.51, see LICENSE for details. +// SPDX-License-Identifier: SHL-0.51 + +// Parameters for a GEMM + +{ + kernel: "GEMM" + M: 64, + N: 64, + K: 64, + alpha: 0, + transpose_A: false, + transpose_B: true, + prec: 64, + expand: 0 +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/data_16_16_16.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/data_16_16_16.h new file mode 100644 index 00000000..1052e7cf --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/data_16_16_16.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 16, + .N = 16, + .K = 16, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[16] __attribute__((section(".l1"))); + +static double gemm_A_dram [16*16] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033}; + + +static double gemm_B_dram [16*16] = {0.4780347016744464, -0.20314173587596263, 1.797754234791071, 0.23274595474814475, -0.9954168307888536, 1.8547476587140206, 0.09402273928088646, -0.9430074874135619, 0.8239191817788585, 0.11501735450468505, 0.8545701717376761, -0.007188030468140175, -0.018728729244763993, -0.9533932980859413, -0.12165398416725498, -0.42661916146469137, 0.9340946495293597, 0.19522143581405244, 0.23182973839731683, -1.2546554715250677, -0.7025528681323762, -0.03019556689050345, -1.4671607394596426, -0.1734020738525506, 1.0202696745617659, 1.0157942265133257, -0.4324600332331524, -0.296150919949663, 0.056387506785403815, 1.5109902204218253, -0.13585017018841927, 0.6485611566020152, -1.149354106366614, 0.24917168366560993, -0.4778501888006765, 0.8387576576827396, 0.41098923499226014, -0.2256181742270194, -1.219750082862799, 0.9803566659279874, 1.3346481596559676, 1.6129488803273395, -0.024493143878920487, -0.7591698936771379, -0.48921141096064424, -0.062040923189698165, 0.8520383693040029, -1.128094765763347, -0.07195237845460918, -0.46610241187034174, 0.29946965798993297, -0.6354031061312012, 0.7739177723108309, 0.19368409881631005, -1.3274229125145334, 0.0627858851186502, 0.36384746366328413, -0.19175241722939693, 1.980986216379721, 1.1809578134345797, -0.7306000207552646, -1.7641855643145632, 0.7245001435289563, -1.5840451502971633, 0.09414818556627164, -0.9029006394421663, 0.8488782882116401, -1.2173643223619721, -1.2762292342683303, 0.5058710736668895, 0.6099936154303692, 1.0423699879551078, 0.7611949933670529, 0.6164470190315824, -0.2658724362020457, -0.14668266051521825, -0.6274502774485388, 1.4985053270616493, 1.3299880805922875, 0.6965634921004461, -0.23035924547300898, -0.4005606761098726, 0.3315215039285197, 1.231436269706581, -0.1434065696905791, 0.1038460098414191, -0.11014269025953972, 1.5545069571528942, -0.8829189545685341, -0.20570447804044192, 0.011103897250099562, 0.5946658094550371, -0.6020537188199624, -0.4079372826543253, -0.1805351705743782, -0.33600719481813285, -1.8998197674219859, -1.3514084083199862, 0.12891223912089034, -0.12220432019599553, 0.199025684270468, -1.4076687315200758, -1.3293671463788634, 1.5849730687530486, 0.26915516555170543, 0.42155963063098567, 1.0111021595209633, -0.4752871063125886, 1.313122245567395, 1.429769590030981, -0.22203877342660364, -0.3359458033736853, 0.9478581977287968, -0.9017993731080081, -1.2238040021173409, -1.5066610314377438, -1.5400573604406471, 1.029960808199997, 0.7101787049919178, 0.7199388940089966, -0.09599439254200862, -0.5707540620409073, -1.1665892611773085, 1.1838674589073483, -0.14388808008330586, -0.2897447883816845, -0.5230311319816758, -1.3453794288815801, -0.5774972459244567, -1.6874596492942056, -0.6243273110799229, -0.131168025357405, 1.548288167937, 2.177326020841736, -0.01670896018294231, 2.6380786365181796, -0.6554716217755595, 0.6536593231539053, -0.7991803895400539, -0.48408003859590065, 1.3163800108985646, 0.7736151342348289, 0.045765518028111664, 0.782406872557914, 0.6273242190434466, 0.8505308967944145, 0.002119877636176426, -0.03123667988254042, 0.9288465316923816, 0.4365480813048655, 0.43343311885236446, -0.27680484002022715, 0.6816100143946399, -0.29432626362033404, 0.18661178764402744, -0.34832623473704294, -0.12593952342837475, 0.6104204582278638, 2.1112388578012884, 0.16436581820924961, 0.08511336387296158, 0.6772607869261693, -1.0103642468106544, 0.5124772757514626, 0.08390244767011035, -0.42153332375097163, -0.014621424093204098, 0.1962794539558957, -0.29262366803238393, -0.47610390457226875, 0.8742346952912949, -0.031424129829246916, 1.25609380794485, -0.5422032040096507, 1.9700777629678679, -0.6098672123657596, -0.1733949212480647, 0.07380298739515019, -1.1195878651441893, 0.8173767150222387, 0.3572785103117973, -0.9320608828189856, 0.6955788134794414, 0.8731470189472956, 0.9362614654567366, -1.3121219556703199, 0.22713168745929768, 0.6027021077218985, 1.1658575421017066, -1.149255707834347, 0.1456185008563352, -0.5846446870404606, 1.2335858050609876, 1.9920454844101763, -1.2632446956429335, -0.2772483620390129, 0.17859923880951847, 1.8110431275164358, 0.5722528182048355, 0.010205327986369436, 0.1418089057088939, -0.9264218514606051, -0.5133236613036435, -0.1269124796513161, -1.7009294128404835, 1.7075504892947724, 0.6952680695280342, 1.7665907233368394, 1.3917635799868133, -0.33044907219753716, 1.452604901391212, -0.8170580592759659, -0.6768899292657692, -1.4858191479600487, -1.481720319316519, -0.8838416943783096, -0.4836971414215709, 0.14788650580579352, -0.5447919995948828, -0.132580840204314, -0.3443663683433915, 1.4528943457305363, 1.289500316820128, 2.253287365111219, -0.9181737147627111, -0.39032216747009113, 0.6929251584566181, 0.11041826907812055, 0.8504258697467754, 0.7389689210845545, -0.15323533618009222, 0.8068577169597195, -1.242898069994524, 0.0069296369726892315, -1.4490806809539707, 0.8622146933847438, -0.9552666410033216, 1.5535736491676595, -0.3238211924056418, 2.1818716851528808, 0.8067649829193638, 1.498700405481595, 0.3435160724199721, 0.024119499618272, 0.9425485271043043, 0.6644577289945207, 1.090316288383937, 0.29925023340409146, 0.2730005353024221, 0.3306231644074124, -0.5830552203885363, -0.6652501624993471, -2.123695546730074, 0.8145713078829363, -0.8891278822176073, -0.5497385523974774}; + + +static double gemm_C_dram [16*16] = {0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222}; + + +static double gemm_checksum[16] = {3.53318139833275, 18.910557186514914, 17.061557051251178, -17.86682606914221, -5.920568815540228, -16.80427557391132, 12.345786410219814, 24.565576004988085, 3.617111620044957, -18.771063102425778, 43.637805771956224, -17.699257074021574, -7.3420911665199835, 8.052332093906525, -16.822597494037367, 2.274275182397295}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/data_32_32_32.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/data_32_32_32.h new file mode 100644 index 00000000..667ffd2d --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/data_32_32_32.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 32, + .N = 32, + .K = 32, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[32] __attribute__((section(".l1"))); + +static double gemm_A_dram [32*32] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342}; + + +static double gemm_B_dram [32*32] = {1.8448885093030065, 0.622613137075688, -2.0773600718526932, -0.05879218788301025, -0.14883240827467462, -1.6070787249452574, -1.2752325216668503, -0.9710154441004514, 2.8536471208979433, 1.0259687873673153, -0.07729526178752644, 2.90124785320579, -1.6099870201619317, -0.8847331619490723, 0.5939979568631141, 1.2200036287220326, 2.8510918408680124, -1.25582651238933, -1.5043005890504582, 0.809667872762421, 0.4455096569146938, 1.4533777876325222, 0.08093711755806289, 0.5433594960509881, 0.21407749737048995, 0.5053866496884525, -0.7063829736735863, -1.7255159569914225, -1.3941268553154642, -0.3611221208798455, -0.05334598793633222, -0.35435416471609005, 0.572007132100381, -0.5264955185026189, 0.5102128857829208, 0.6116700031464317, 2.0486968982261202, -0.7165117692039605, -0.44546162876683887, 0.4763931829831273, 1.3032022234889244, -0.02932551729568818, -0.4820520883676177, 0.9193799243970369, 0.6146813355739139, -0.22393893146647295, 0.571492357564412, -0.948302395460301, -0.7318379837818061, 0.03382654045677089, 0.7372524407400997, -0.4103668947560523, -1.5530036453685645, -1.508283926364581, -2.256777082059624, 0.5675579810614343, -0.41165660712793767, 0.3283028032403514, 0.08317733846151737, 0.6397252376986503, 0.5706575386796322, -1.4195164842808716, 0.10738590560666669, 0.6485877172023825, -0.9020532459752512, 1.7456452297639542, -1.3425473236398795, -1.3093298447872528, -0.9909136952855094, -0.7553512437574256, -0.15696203458936964, -0.8587268321219447, 0.4760756036980966, -0.7891190307945258, -0.3642766707809299, 1.4109003071198862, 1.0232681185457035, 0.2604924986511237, 1.2838646589587073, 0.6269276746157323, -0.6194976835634578, -0.45889090147992845, -0.5334658384258053, 1.749809215983805, 0.24334104727505046, -0.9454297378995183, 0.324177164165908, 1.9203285366540146, -0.8911684286042895, -2.225396433305001, -0.9039919874880522, 0.23342621054073684, 0.7831976119427991, 1.1907305012760756, 0.7476571054869932, -0.2757466733288484, 1.423932009681719, -0.0032580522874735246, 1.0664992078500592, -1.9790524548585495, -0.3600241005246587, 1.9280259690970352, -1.1862950949600968, 0.420689070376205, 0.04693766693045954, 0.29564308636903597, 0.2721281447061126, 0.9342714574384375, -0.6120020584064751, -1.065720378325982, 0.1968309175885564, -1.8413847347422614, 0.8118142867300344, -0.2896301303848118, 0.2567239585606655, 1.001647179219911, 1.9679440499519993, -1.010459444419853, 1.062105790670867, -0.5030970822643847, -0.49236046031915226, -1.096249407991655, -2.359353503098415, 0.21399479954715414, 0.28018300766602294, 0.1522501461827938, -1.5691946737355327, -0.3563016808385527, 1.1116421563744774, -0.08412480377121889, -1.3978347586933288, 2.327922240143418, 0.1602748303156346, -0.26733976223106926, 0.37408049529043713, 0.6054083058374654, -0.5984449522911452, -0.34927374642138076, -1.0173409588721802, 0.7408981122108215, -1.0855633146564565, -2.4784405095403583, 0.0125526247658802, 2.975492133500898, 0.43758672808479837, 0.4922810729687261, -0.6299751233419266, -1.7659243403508436, -0.14949638764508505, 0.0754147254586834, 0.2886235312894662, 0.8421602450844566, 0.08810619424950021, -0.9149883628966105, 0.11425878193276912, 1.1788921695577175, 0.13693472548612742, 0.922469684257407, 0.8999837788505479, -0.17817414950901492, -0.609918694875925, -0.09847618283385187, -0.5082793586733352, 0.5346029134452727, 0.07168780603661637, -0.0673955495394241, -0.38524482721238545, -0.7954680985571436, 0.7900271874549623, 0.8136749201194545, -0.22291945275506458, -1.501451886644788, 0.9035218354603602, -1.397338674255014, -0.588379978175527, 0.5732253342246594, -0.7150266134830248, -0.11561150744781683, 0.024035161278926437, 0.15383957509758237, -0.1787890634869671, -1.2810537542822706, -1.2983305542602077, -2.316838061301056, -1.4051338603716423, 0.21230053589695053, 0.64706666019578, -0.4946728962147127, 1.0154445987056024, 0.016501336648811274, 0.038792413114335636, -0.0019081140052624073, 1.0390897743423966, 0.5573182638994464, 1.0293339145628106, -0.2220392426765117, 0.30202523579276225, -0.536406291194771, 0.7842727318028115, -0.20058537792435566, -1.969917184758775, 0.620245645223459, 1.415842532715168, -0.8528561599738412, 1.199279110133032, 0.12733886071252698, -1.459242663662794, -1.876866690355531, -1.9406394619639358, -2.0656398984212156, 1.1244580271586777, -1.2779831760745572, -0.8694565617159877, -0.7736354580243704, -1.5005961252940438, -0.4201799135308444, -2.3224238004285707, -0.6023002440801871, 0.4359959376210403, -1.8310549540520982, -1.1860807036684393, 0.7429642513221194, 0.9914820089613138, -0.39273602229275606, -0.1305603800084962, -1.1975598741016937, 1.1953652639556394, 1.0350931612437495, -0.582835004754739, -0.7093789385459298, 1.1538879916827052, -0.19994075887630136, 0.3503211304018375, -0.43951272221042564, 0.3487504850213432, -1.4502786649323292, 0.21247320768848982, -0.962990797187108, -0.16058887298258492, -1.4492981424636866, 0.8679359705510734, -0.15730996466261546, 0.40836377201711715, 0.2669263499455465, -0.02701940155527667, -0.811961379205231, -1.4260396412546816, 1.99145358910135, -0.3410883214075715, 1.4512382841053386, -0.09281069482301793, -0.3690830035843751, -0.19007920263882952, 0.10750421501190041, 0.9465564741859593, 0.06348346009811161, 0.7049709576256773, -0.25042914816475237, -0.7592324149843712, 0.579583179532083, 1.0356927036283528, 1.744020696757244, -0.9454918159942679, -1.895096099561938, -0.0008137206583593385, 0.46265400794768385, 0.3522443413976922, -0.060333190180409904, -0.8276719054682797, -0.4158341820319732, -0.30513433025622483, -0.7472606420064576, 1.4354983174276066, 0.7768976641774541, -1.8739717517634698, -1.4256436904962992, -2.327140574554701, 1.3638217257964536, 0.12572172650108407, -1.1698739038813457, -0.12686282703773566, -1.5038113250304717, -0.5382334133878951, -0.42224783195423987, 0.1523832525182091, 0.4808356602618045, -0.9548035752110309, -0.8742437683710312, -0.30985592801910117, -0.24189491229960913, -0.9927853948011712, -0.09395716249601935, -1.0360800724687276, -0.8126325347024919, -1.405125889371723, -2.091666612524903, -0.6256281405885463, -1.869391305207575, 0.9077850533771569, -0.06215199874022316, 0.34353353507020123, 0.8295084980828852, 1.3958505210549053, 1.4876059940278459, 2.182868585469132, -0.7044791153933941, -0.26853628794603523, 0.040903466313536106, -0.3493894186252125, 1.077496971491708, -1.371518218990482, -0.48526560569590693, 0.23609553256542695, 0.11558860384831522, -0.633983343063867, 0.32423026673778105, -1.2093360312349437, 0.1323677945856938, 0.37108183095020375, -1.8689872110353185, -0.6566307196626123, 0.1717462405241003, -0.8401102070638347, -0.5606885258433681, 1.993616236752697, -1.5969922983164335, 1.0636457383418108, 0.0004974458415376117, -0.3510577387659576, 0.48193063531644537, -1.0749257488285808, 0.6962114020423124, 0.7795065425753578, 1.129362539634652, 1.112993202632025, -0.18934308720894036, -1.1741764376487758, 0.8524501556338853, 0.37761170331094157, -0.9342945534262868, -0.02711649643869937, 0.5810375830537511, 0.5998645930096181, -0.664516213841126, 0.23545196849666264, -0.06338166413389325, 0.49835413266819356, -0.4402301947763417, -2.100547843467698, -0.7034274377386549, -1.6932708709240643, -1.5147133895052636, -0.005304890708390932, 0.5303343737606813, 0.3955192048365272, -0.6916360198922066, -1.2365797403960304, -1.2686890383326754, -0.7818062318843579, -0.4080026099220151, -0.13894191854589522, -0.095540604007519, -2.072058608998672, 0.1737374420722428, -0.31690501369321267, 1.4448964367746397, -0.6980224325960035, 0.13020040181367357, -0.9331282790464878, -0.3340090119288742, -0.0050819767759484056, 0.7618231087000356, -0.2125855163161856, 0.3551271969105679, 1.2473531605780193, -2.1784216925774254, 1.371312887239788, 0.22201020504142566, -0.6176307398455463, 0.7465865033369634, -0.1530333323078057, 0.09645911224015045, 0.5742732453192894, -1.0184612409555949, 0.47214213858952303, 0.8246091313323292, 0.34215369871376844, -0.25495705935359947, 1.8548042098231963, -0.9291972010711246, 0.8829476857079316, -0.44867368855172923, 1.199426224041857, -0.16987767760770991, -1.189733419675099, 1.9987164641082087, 0.08404007020790137, -0.27202686813738103, -1.1242172376210566, 0.5331924552669381, -0.2820770772397286, 0.08640562469139157, 0.009684786386250501, -0.30058739646889815, -0.8626785926902893, -0.043876281219692365, -0.9358060344486432, -0.05592421534349575, 0.2318653380046876, 1.4399368526678278, -0.58828999383318, 0.43199223950922194, 1.1971503331114541, 2.532325541632594, 1.1869006875492747, 0.18139626346512772, 1.247922968974058, 1.010839700197812, -2.8791873832700547, -0.23051091319332653, 0.20499605949096963, 0.9031672530350638, 0.8745221489151239, 0.5700168037125656, 0.12132847331734303, -0.19495692375454912, -0.5102992245699747, 1.7922666332582982, -2.0217996637419504, -1.1376577043818543, -0.04898442309094625, 0.9913637676227545, -1.9483310573156807, -0.059343641632369076, 0.2636875321138984, -0.5446714593776727, 0.5125620452253108, -1.0850332393056394, 0.49295286102524044, -0.3735237580415768, 0.08464059182127714, -1.536144263111769, -1.7334295099492802, -1.939062107304355, -0.38189865297027337, -1.5866221126564115, 0.2555908214103616, -0.7129650139254672, -1.434297700901899, -0.8902436270883701, -0.0421115170793464, 0.5226206406896088, 1.2010757276760113, 2.269233244076525, 0.6929310708225009, -0.19142620469203458, -1.4608604499664002, -0.08834646865917613, -0.5266987160364432, 0.39258330183185886, 1.4723540101508836, 1.1669873661563108, 1.7267743114344978, -2.6437681894231435, 0.31916263280850626, 0.1619562886451128, -0.08553945533113934, -0.4802089660362259, 0.835126803441082, 1.109609770945844, -0.3494884497630849, -0.22461780649945687, 0.19008151199377613, -2.717778670757182, -0.8643497543156821, -0.10453191019598392, 0.7916834209392376, -1.971084122083064, -1.3999854653788708, -1.3195899155857833, -0.5773871236273995, 0.5757151238996234, 0.2803818171599705, -0.6035154511863011, 2.057751677950784, 0.40988533123157295, -0.39888705398196755, 0.7614369056740486, -0.22948805550230816, 1.2824833220745997, 0.38803217663099665, -0.1955663537656974, -0.5690532461968705, -0.5526532153140147, 0.3596144012700469, -0.6461446779487539, 0.6390360973776629, 0.15046570393731748, 0.33475288490766125, -1.1432227238603179, 0.4370304631746852, -1.0337911892064604, -0.9308402692062906, -0.6015415198184665, 1.7562161679995132, 0.1168039138752043, 0.689824201173873, 0.8153426406136252, -0.1728944869857963, -0.13301270859207348, -0.5270366881316677, -0.21170557963600709, 1.9951334816061994, -0.6241388306405901, -0.9401015854505796, 0.5592128760780101, 0.2883899362101988, -1.7212576593177709, 0.9994754870230482, 1.185949052557463, 0.051902944512615914, -0.13585649309388986, 1.2098862819236005, 1.185062371327038, 0.7600008532793323, 0.17431258922451653, -0.359544416669036, -0.8660236542618331, 0.5428826848071413, 2.7590525887014667, 3.4237712468503103, 0.5174957898345334, -1.4380277943151216, -1.8807813444109054, 0.3630283557686611, -0.525149213451578, 1.181971977987871, -0.5866181500734327, 1.524711206099055, -0.7800663274052761, 1.160481352505748, 0.39343143403797187, 1.8409181821652891, 0.49610977046001814, -0.9419344596787323, 1.0306895727537915, -0.08972003336849564, -0.3223643795390148, 1.6134203350119927, 0.7166427020983424, -1.666570871939696, 0.6170757026559303, -0.019119222645881905, 0.6657305691375492, -1.0678208861159952, -0.24969600604011072, -0.09696213550941978, -0.08674760587893786, 0.20255944297423273, 0.47452405238110584, 1.5065733412421733, 0.22065232253703387, 0.744628978129671, -0.26915089392842423, -0.15463871080474192, -1.2265714811977597, 1.7611911540817928, 0.20817264425532928, -0.8172519034071913, -1.5377442224077151, -1.548684848469057, -0.4477465519532468, -1.0427224611678692, 1.3390674367668436, -1.7547244042030132, -1.107773982297535, -1.3864755081036366, 0.5437796109495969, -0.640338334227558, 0.5138781656523993, -0.9640624060585024, 0.3627363765292881, 0.7961227485818212, 1.650950629705662, -0.9757273564713941, 0.6391954485208522, -1.6484340857205138, 0.5062590514320574, 0.49872412917775666, -0.02662111271639052, 0.3676083732835713, -0.4790606483008819, -0.47412499801799024, -1.3774088537570648, -0.9096458649167182, 0.3387263580347474, 1.427347151863727, 0.3936172157806796, -0.7229213248269448, 1.0421502948740846, -0.31575932783054717, -2.0944415177169953, 1.2284263304913572, 0.01545038682624204, -1.040602541009036, -0.747255398772972, 0.07405473692919617, 0.6462111934112551, -0.15540161000210675, -0.37254092473885336, 2.0182530686564895, -0.7592214987689807, -1.1213275218434526, -1.5589258141736047, 1.22745042848715, 1.7703882319843902, 1.8473014772988974, 0.3751449189250956, -0.6773093361468119, 0.7374924629427219, -0.6501714914135994, -0.5787298408624987, 0.8149334833372205, 1.5321216571398668, 0.2569777134684139, -0.29499229105904573, -0.6827694846192245, 1.2480509452812811, -0.03594236427723813, 1.0778363941578806, -0.4323877136781272, -0.24223189745187212, 0.2503737947188051, 0.7870016058915985, 0.19868751298961676, 0.39608506375087277, 1.8273660232377136, -0.16290875300595686, -0.14925008749413637, 1.688912150364615, 0.28089640344542804, 0.17302563058445183, -0.7235603815620858, 2.417337785331285, 0.6531743202785056, 1.3206137582172544, -0.6004867918118467, -0.49884117664872785, 0.5263294510598043, -0.19786418069226533, 0.19847908080770726, -1.0887076741188921, -1.4186463922997374, -0.46418731609632075, 0.9572709382349587, -0.1636651452718229, -0.18464959701431985, -2.4537835279476146, 1.6425500385797525, 1.9521841872543286, -0.9987807222089615, -0.8644861643567047, 0.09012216684853104, -1.5453453515930158, 0.028618079946139307, 0.8949404757727989, 0.11836116797672853, 1.1493902335657455, 1.4195569065800453, 0.4979804345513483, -1.8439449535735588, -1.3591299269239323, 0.6902199813822665, 0.16431412357817202, 0.6081345501547663, 0.17028885180838357, 0.2277981765470329, 0.22241582722694822, -0.5361669868684229, -0.35212526236220854, 0.07053654437136757, -1.1107085792532714, 0.43435982710100896, 0.9197089124134338, 0.4572717163404996, -0.7338887598113502, -1.4303046720322652, -1.0332700298347521, 0.707300443390559, -0.8341158090629236, -0.3900596403135759, 0.9788396157168914, 0.15285084511988004, -0.9521061052105131, 1.2693688025965613, -0.565952007041841, -1.723439924093865, -1.2488701028525535, -0.06310268278090121, -2.130104535188091, 0.8386877142814951, 0.08795913929250766, 0.3444816081051852, -0.7475464904708393, 0.055137779443554184, -0.297796251553928, 1.7752306448722606, -0.18586838199027028, -0.8359861748374583, -0.5254557201726808, 0.4874774972013086, 0.42973964778170143, 0.9547242579775002, 0.16954868116772995, -0.06608174057217904, 1.4198792364404926, -0.6798540159722049, 0.0037124668666011543, -1.9840617027488057, 0.9892360243254097, 0.16960249404796737, -0.43274207019506117, -0.9509348833512404, 1.001353646981955, -0.4453218737326093, -0.3765845085538441, -0.05609728003750563, -0.453301777620275, -0.7885161782185284, 1.8425900504983932, 0.7479073753397237, 1.1476608122361165, -1.0778628423584962, -1.1826687439735564, -0.2983334069128005, -0.9405677474521547, -0.1316442026885298, 1.0415794322065468, 0.031457706909880166, 0.40185795512569217, 0.5680057504067159, 0.4487811587655208, -1.890981268173993, -0.20813077355955645, -1.1278918446449648, 0.0976102127373202, -0.4396025725464862, 1.13966263395932, 0.8800683478695012, -0.4390315224865612, 0.8352543400425974, -0.6416390065504894, -0.4185489493255141, -0.14358452337381933, 0.3229857369820825, 0.40906237950521346, -0.8774506171339351, 0.17855829086113095, 0.2942911094966865, -0.26956499012979956, -0.594263411951702, -0.8820586551654293, 0.19168429076964602, 0.9320022617397814, 0.3469301281229362, 0.8708434312878163, 1.38335867526748, -1.693588315970276, -0.47920924486264665, 0.27195785052081917, 0.899919260122491, -0.5670525260070235, 0.28253652479051733, 1.4717430631656925, -0.3938745167085202, 1.3420338787636203, 0.07734968673664687, -0.22307281025633455, -0.06842865579333862, 0.8820726768303652, 1.1617475981837795, -0.5445053993271162, -1.6685708178136907, -0.604900108391799, -1.4509136246246903, -0.8677025372132973, 0.44175525248542286, 1.2380051766092655, -1.1301294572944445, 3.5953876986672255, -0.7311965810915613, 0.6612001818907256, 0.5644435285732619, 0.31200772222466067, -2.501823109461287, 0.03568906908977818, 0.6711365751637789, 0.10036766629128512, -1.9630063235244388, 0.20250426856488513, -0.37134570058665717, 0.8941462516437774, -0.5364177308537464, 0.14141128561714333, 1.1165497781562674, 0.6002964569533693, 0.3139908715338594, 0.7397153430022654, -0.5799201931033439, 0.5329264170127224, 0.0757461775588834, 1.1454947730219187, -1.2832223575262358, -1.1731970859703744, 2.264358935950376, 1.535151051934949, 1.2609714707832425, 1.0347284219371276, 0.7931445181078505, -1.1622188132692055, 0.27932962145356316, -0.8488543068716493, -0.21592794240105817, 0.6566383906736746, 0.8811148239408805, -1.4538990075976945, -0.673945501033193, 1.4420580869170465, 1.1526892923346204, -0.5580601750838238, -0.5193463961965822, 0.9856658198526146, 1.1612473442212157, 1.8901581231152924, 0.9954498087197619, 0.536910685665978, -0.5714364972858512, -0.7795697135851043, -1.1261703254618494, 0.8838113044537101, 0.31678992899871267, -0.7498434517605724, 0.945043974186398, 0.3830272308939737, 0.01811044220476568, 1.557358039479812, -1.1013820170238586, -0.18334305957155458, -0.048585931918069494, 0.48707383897255696, -0.06988463350772384, 0.03880070372652659, 0.666378400360196, 0.3153960860722241, -0.4553253041620339, -0.7620891486112908, 0.7833035854562042, -0.4972028753925732, 1.2235988334078434, -0.5372177387698984, -0.18194736753591428, 1.0076432223870029, -0.11562338831110575, -0.44166427943855957, 1.862246649641681, 0.16318485053532772, 0.21059455079709405, -0.04468791360092496, -0.09854463425203973, 0.610220453599741, 1.0966132130656288, -1.3377145615324746, -0.7432885872434457, -2.2463793716496183, -0.8271942633183708, 1.0330281295592512, 0.5665224930728516, 0.8235296531498106, 0.6513073416660541, -0.35686131551458816, -0.7466175012069378, -0.06866257813543919, 0.6819214512912009, -1.3157311036080868, 1.0765917423686246, -0.4124980314658376, -0.13454483357874214, 0.4039229699126195, 1.0392171119322082, 0.30783322485667264, -1.1636116702452202, -1.1864962493216553, -0.19855569336096057, 0.8554191239588586, 0.352400820758953, 0.509830562978939, 1.1127961330998304, -0.42772830220525987, 0.8203366802620794, -0.13107111869784893, 2.395067138296113, 0.9796702201792316, -0.31621524862176864, -1.855416176565475, 1.4335843287274053, -2.030956619344538, -1.0171091372766654, 0.1958899672744909, -1.7263899334779662, 1.3403087264740343, 0.5222811637226092, -0.3292665860742744, -0.805144923911586, 0.2937618607534383, -0.06839741587635721, 0.21159132832002855, 0.2439549047998887, -0.25957042793288443, 0.3803586083160361, -0.03287499950025958, 1.8371154985886862, 0.534974938780373, -0.22624467871026605, -0.5500096460519907, 1.688961038095004, 0.5698707282163747, 1.6482773735238936, -0.5991965310798085, -0.449879365783737, 2.22854455207779, 0.15551004552008937, 0.8500574802035589, 0.3316175009075528, -1.7646934144734967, 0.002668556331391873, -0.8136295403887579, -0.9465575672564711, 0.3469149176826813, 1.0045993947511778, 0.2610941691615629, 1.0788518344074862, 1.429798559996883, 1.6332065112971001, 1.7738534285950363, -1.6081696632587419, -1.161359070554741, 0.4734557044072717, 0.8251757971684041, -1.00859364816552, -0.47466672457489073, 1.2706120469339364, -1.728025679680301, -1.2420591801850245, -2.0058475112711514, 0.5071009399593757, -0.763791941134191, -0.8745505869548725, -0.20863591717796462, 0.6711383514595195, 1.4973252224613436, -0.4581821737978766, 2.85934273014681, -0.5905994619497847, -1.2986776963277358, -0.6884736402196919, -0.8420374077504474, -1.9226574720130702, -0.7714846254184806, 0.4879570553679617, 0.9569335370728702, 0.1215505686746317, -1.6928895703415128, 0.5214662704113713, 0.8488733195590197, -0.18689854597886257, -0.33142178700758057, 0.2108448776087118, 0.21001598604651528, -0.9215746025534817, -0.5943198935837782, -1.757528113553421, 1.251745108485312, -0.868299098407261, -0.1351648490652594, -0.23753657646460405, -0.4541796977906028, 0.6279007880533118, -1.697389937955057, 0.32284669288734297, 1.3123618498586958, 0.2238366057536359, -0.5546344165085834, 2.681801981114757, 0.620608819397525, 1.4571504499595769, 1.3299424270339977, -2.0231033737037047, 0.5166078996711738, -1.6380306920827867, -1.2122365561438313, -0.6623786574250906, 2.0063313680095405, 1.4850546815331578, 0.08949085370524765, 2.207851490608375, 0.6549815456848764, -0.8293836626550278, -0.6235361522388553, -0.626995367880836, 0.4159405289601604, -0.6195377638236638, -2.059249774668197, -0.7922512836603205, 1.9089401526170708, 1.59925697493435, 2.979844425070889, 0.19313774990116925, -0.5567288589208035, 0.5692262629524086, 0.2998477603655102, -0.8259830110426495, 0.820266660992923, -0.7182362270286512, -2.2200296733850635}; + + +static double gemm_C_dram [32*32] = {0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967}; + + +static double gemm_checksum[32] = {19.171406532352187, 64.83908386369714, -15.833072522846592, -9.097406689220577, 38.77022492904121, 36.661072250530495, -19.204889499817334, -26.71405328485298, 2.199782273326125, 22.879340449675865, -25.495771295498592, -22.74413590136339, 41.027971509741164, 2.3121890057321304, -19.49682405405703, 25.832519909539464, 42.9907473021782, 30.112697137204815, 26.7239787914316, 85.07758200685522, 6.60571186375147, -12.02777529819674, -23.409006725121806, 27.330350323575306, -24.78504460632868, 53.946894048375924, 92.26090941929412, 27.603604435548316, -41.68101813310628, -19.73859198296261, 37.159087216031466, 20.44420834195346}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/data_64_64_64.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/data_64_64_64.h new file mode 100644 index 00000000..1c964152 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/data_64_64_64.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 64, + .N = 64, + .K = 64, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[64] __attribute__((section(".l1"))); + +static double gemm_A_dram [64*64] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342, 1.8448885093030065, 0.572007132100381, -0.9020532459752512, 1.423932009681719, 1.1116421563744774, -0.609918694875925, 1.0390897743423966, -0.1305603800084962, 0.7049709576256773, -0.30985592801910117, -0.6566307196626123, -0.005304890708390932, 0.47214213858952303, 1.247922968974058, -1.434297700901899, -0.5773871236273995, 1.9951334816061994, -0.9419344596787323, -1.3864755081036366, -0.15540161000210675, 0.28089640344542804, 0.6902199813822665, 0.055137779443554184, -0.1316442026885298, -0.47920924486264665, -0.37134570058665717, 1.1612473442212157, 1.862246649641681, 1.1127961330998304, -0.449879365783737, -0.4581821737978766, 2.681801981114757, 0.622613137075688, -0.5264955185026189, 1.7456452297639542, -0.0032580522874735246, -0.08412480377121889, -0.09847618283385187, 0.5573182638994464, -1.1975598741016937, -0.25042914816475237, -0.24189491229960913, 0.1717462405241003, 0.5303343737606813, 0.8246091313323292, 1.010839700197812, -0.8902436270883701, 0.5757151238996234, -0.6241388306405901, 1.0306895727537915, 0.5437796109495969, -0.37254092473885336, 0.17302563058445183, 0.16431412357817202, -0.297796251553928, 1.0415794322065468, 0.27195785052081917, 0.8941462516437774, 1.8901581231152924, 0.16318485053532772, -0.42772830220525987, 2.22854455207779, 2.85934273014681, 0.620608819397525, -2.0773600718526932, 0.5102128857829208, -1.3425473236398795, 1.0664992078500592, -1.3978347586933288, -0.5082793586733352, 1.0293339145628106, 1.1953652639556394, -0.7592324149843712, -0.9927853948011712, -0.8401102070638347, 0.3955192048365272, 0.34215369871376844, -2.8791873832700547, -0.0421115170793464, 0.2803818171599705, -0.9401015854505796, -0.08972003336849564, -0.640338334227558, 2.0182530686564895, -0.7235603815620858, 0.6081345501547663, 1.7752306448722606, 0.031457706909880166, 0.899919260122491, -0.5364177308537464, 0.9954498087197619, 0.21059455079709405, 0.8203366802620794, 0.15551004552008937, -0.5905994619497847, 1.4571504499595769, -0.05879218788301025, 0.6116700031464317, -1.3093298447872528, -1.9790524548585495, 2.327922240143418, 0.5346029134452727, -0.2220392426765117, 1.0350931612437495, 0.579583179532083, -0.09395716249601935, -0.5606885258433681, -0.6916360198922066, -0.25495705935359947, -0.23051091319332653, 0.5226206406896088, -0.6035154511863011, 0.5592128760780101, -0.3223643795390148, 0.5138781656523993, -0.7592214987689807, 2.417337785331285, 0.17028885180838357, -0.18586838199027028, 0.40185795512569217, -0.5670525260070235, 0.14141128561714333, 0.536910685665978, -0.04468791360092496, -0.13107111869784893, 0.8500574802035589, -1.2986776963277358, 1.3299424270339977, -0.14883240827467462, 2.0486968982261202, -0.9909136952855094, -0.3600241005246587, 0.1602748303156346, 0.07168780603661637, 0.30202523579276225, -0.582835004754739, 1.0356927036283528, -1.0360800724687276, 1.993616236752697, -1.2365797403960304, 1.8548042098231963, 0.20499605949096963, 1.2010757276760113, 2.057751677950784, 0.2883899362101988, 1.6134203350119927, -0.9640624060585024, -1.1213275218434526, 0.6531743202785056, 0.2277981765470329, -0.8359861748374583, 0.5680057504067159, 0.28253652479051733, 1.1165497781562674, -0.5714364972858512, -0.09854463425203973, 2.395067138296113, 0.3316175009075528, -0.6884736402196919, -2.0231033737037047, -1.6070787249452574, -0.7165117692039605, -0.7553512437574256, 1.9280259690970352, -0.26733976223106926, -0.0673955495394241, -0.536406291194771, -0.7093789385459298, 1.744020696757244, -0.8126325347024919, -1.5969922983164335, -1.2686890383326754, -0.9291972010711246, 0.9031672530350638, 2.269233244076525, 0.40988533123157295, -1.7212576593177709, 0.7166427020983424, 0.3627363765292881, -1.5589258141736047, 1.3206137582172544, 0.22241582722694822, -0.5254557201726808, 0.4487811587655208, 1.4717430631656925, 0.6002964569533693, -0.7795697135851043, 0.610220453599741, 0.9796702201792316, -1.7646934144734967, -0.8420374077504474, 0.5166078996711738, -1.2752325216668503, -0.44546162876683887, -0.15696203458936964, -1.1862950949600968, 0.37408049529043713, -0.38524482721238545, 0.7842727318028115, 1.1538879916827052, -0.9454918159942679, -1.405125889371723, 1.0636457383418108, -0.7818062318843579, 0.8829476857079316, 0.8745221489151239, 0.6929310708225009, -0.39888705398196755, 0.9994754870230482, -1.666570871939696, 0.7961227485818212, 1.22745042848715, -0.6004867918118467, -0.5361669868684229, 0.4874774972013086, -1.890981268173993, -0.3938745167085202, 0.3139908715338594, -1.1261703254618494, 1.0966132130656288, -0.31621524862176864, 0.002668556331391873, -1.9226574720130702, -1.6380306920827867, -0.9710154441004514, 0.4763931829831273, -0.8587268321219447, 0.420689070376205, 0.6054083058374654, -0.7954680985571436, -0.20058537792435566, -0.19994075887630136, -1.895096099561938, -2.091666612524903, 0.0004974458415376117, -0.4080026099220151, -0.44867368855172923, 0.5700168037125656, -0.19142620469203458, 0.7614369056740486, 1.185949052557463, 0.6170757026559303, 1.650950629705662, 1.7703882319843902, -0.49884117664872785, -0.35212526236220854, 0.42973964778170143, -0.20813077355955645, 1.3420338787636203, 0.7397153430022654, 0.8838113044537101, -1.3377145615324746, -1.855416176565475, -0.8136295403887579, -0.7714846254184806, -1.2122365561438313, 2.8536471208979433, 1.3032022234889244, 0.4760756036980966, 0.04693766693045954, -0.5984449522911452, 0.7900271874549623, -1.969917184758775, 0.3503211304018375, -0.0008137206583593385, -0.6256281405885463, -0.3510577387659576, -0.13894191854589522, 1.199426224041857, 0.12132847331734303, -1.4608604499664002, -0.22948805550230816, 0.051902944512615914, -0.019119222645881905, -0.9757273564713941, 1.8473014772988974, 0.5263294510598043, 0.07053654437136757, 0.9547242579775002, -1.1278918446449648, 0.07734968673664687, -0.5799201931033439, 0.31678992899871267, -0.7432885872434457, 1.4335843287274053, -0.9465575672564711, 0.4879570553679617, -0.6623786574250906, 1.0259687873673153, -0.02932551729568818, -0.7891190307945258, 0.29564308636903597, -0.34927374642138076, 0.8136749201194545, 0.620245645223459, -0.43951272221042564, 0.46265400794768385, -1.869391305207575, 0.48193063531644537, -0.095540604007519, -0.16987767760770991, -0.19495692375454912, -0.08834646865917613, 1.2824833220745997, -0.13585649309388986, 0.6657305691375492, 0.6391954485208522, 0.3751449189250956, -0.19786418069226533, -1.1107085792532714, 0.16954868116772995, 0.0976102127373202, -0.22307281025633455, 0.5329264170127224, -0.7498434517605724, -2.2463793716496183, -2.030956619344538, 0.3469149176826813, 0.9569335370728702, 2.0063313680095405, -0.07729526178752644, -0.4820520883676177, -0.3642766707809299, 0.2721281447061126, -1.0173409588721802, -0.22291945275506458, 1.415842532715168, 0.3487504850213432, 0.3522443413976922, 0.9077850533771569, -1.0749257488285808, -2.072058608998672, -1.189733419675099, -0.5102992245699747, -0.5266987160364432, 0.38803217663099665, 1.2098862819236005, -1.0678208861159952, -1.6484340857205138, -0.6773093361468119, 0.19847908080770726, 0.43435982710100896, -0.06608174057217904, -0.4396025725464862, -0.06842865579333862, 0.0757461775588834, 0.945043974186398, -0.8271942633183708, -1.0171091372766654, 1.0045993947511778, 0.1215505686746317, 1.4850546815331578, 2.90124785320579, 0.9193799243970369, 1.4109003071198862, 0.9342714574384375, 0.7408981122108215, -1.501451886644788, -0.8528561599738412, -1.4502786649323292, -0.060333190180409904, -0.06215199874022316, 0.6962114020423124, 0.1737374420722428, 1.9987164641082087, 1.7922666332582982, 0.39258330183185886, -0.1955663537656974, 1.185062371327038, -0.24969600604011072, 0.5062590514320574, 0.7374924629427219, -1.0887076741188921, 0.9197089124134338, 1.4198792364404926, 1.13966263395932, 0.8820726768303652, 1.1454947730219187, 0.3830272308939737, 1.0330281295592512, 0.1958899672744909, 0.2610941691615629, -1.6928895703415128, 0.08949085370524765, -1.6099870201619317, 0.6146813355739139, 1.0232681185457035, -0.6120020584064751, -1.0855633146564565, 0.9035218354603602, 1.199279110133032, 0.21247320768848982, -0.8276719054682797, 0.34353353507020123, 0.7795065425753578, -0.31690501369321267, 0.08404007020790137, -2.0217996637419504, 1.4723540101508836, -0.5690532461968705, 0.7600008532793323, -0.09696213550941978, 0.49872412917775666, -0.6501714914135994, -1.4186463922997374, 0.4572717163404996, -0.6798540159722049, 0.8800683478695012, 1.1617475981837795, -1.2832223575262358, 0.01811044220476568, 0.5665224930728516, -1.7263899334779662, 1.0788518344074862, 0.5214662704113713, 2.207851490608375, -0.8847331619490723, -0.22393893146647295, 0.2604924986511237, -1.065720378325982, -2.4784405095403583, -1.397338674255014, 0.12733886071252698, -0.962990797187108, -0.4158341820319732, 0.8295084980828852, 1.129362539634652, 1.4448964367746397, -0.27202686813738103, -1.1376577043818543, 1.1669873661563108, -0.5526532153140147, 0.17431258922451653, -0.08674760587893786, -0.02662111271639052, -0.5787298408624987, -0.46418731609632075, -0.7338887598113502, 0.0037124668666011543, -0.4390315224865612, -0.5445053993271162, -1.1731970859703744, 1.557358039479812, 0.8235296531498106, 1.3403087264740343, 1.429798559996883, 0.8488733195590197, 0.6549815456848764, 0.5939979568631141, 0.571492357564412, 1.2838646589587073, 0.1968309175885564, 0.0125526247658802, -0.588379978175527, -1.459242663662794, -0.16058887298258492, -0.30513433025622483, 1.3958505210549053, 1.112993202632025, -0.6980224325960035, -1.1242172376210566, -0.04898442309094625, 1.7267743114344978, 0.3596144012700469, -0.359544416669036, 0.20255944297423273, 0.3676083732835713, 0.8149334833372205, 0.9572709382349587, -1.4303046720322652, -1.9840617027488057, 0.8352543400425974, -1.6685708178136907, 2.264358935950376, -1.1013820170238586, 0.6513073416660541, 0.5222811637226092, 1.6332065112971001, -0.18689854597886257, -0.8293836626550278, 1.2200036287220326, -0.948302395460301, 0.6269276746157323, -1.8413847347422614, 2.975492133500898, 0.5732253342246594, -1.876866690355531, -1.4492981424636866, -0.7472606420064576, 1.4876059940278459, -0.18934308720894036, 0.13020040181367357, 0.5331924552669381, 0.9913637676227545, -2.6437681894231435, -0.6461446779487539, -0.8660236542618331, 0.47452405238110584, -0.4790606483008819, 1.5321216571398668, -0.1636651452718229, -1.0332700298347521, 0.9892360243254097, -0.6416390065504894, -0.604900108391799, 1.535151051934949, -0.18334305957155458, -0.35686131551458816, -0.3292665860742744, 1.7738534285950363, -0.33142178700758057, -0.6235361522388553, 2.8510918408680124, -0.7318379837818061, -0.6194976835634578, 0.8118142867300344, 0.43758672808479837, -0.7150266134830248, -1.9406394619639358, 0.8679359705510734, 1.4354983174276066, 2.182868585469132, -1.1741764376487758, -0.9331282790464878, -0.2820770772397286, -1.9483310573156807, 0.31916263280850626, 0.6390360973776629, 0.5428826848071413, 1.5065733412421733, -0.47412499801799024, 0.2569777134684139, -0.18464959701431985, 0.707300443390559, 0.16960249404796737, -0.4185489493255141, -1.4509136246246903, 1.2609714707832425, -0.048585931918069494, -0.7466175012069378, -0.805144923911586, -1.6081696632587419, 0.2108448776087118, -0.626995367880836, -1.25582651238933, 0.03382654045677089, -0.45889090147992845, -0.2896301303848118, 0.4922810729687261, -0.11561150744781683, -2.0656398984212156, -0.15730996466261546, 0.7768976641774541, -0.7044791153933941, 0.8524501556338853, -0.3340090119288742, 0.08640562469139157, -0.059343641632369076, 0.1619562886451128, 0.15046570393731748, 2.7590525887014667, 0.22065232253703387, -1.3774088537570648, -0.29499229105904573, -2.4537835279476146, -0.8341158090629236, -0.43274207019506117, -0.14358452337381933, -0.8677025372132973, 1.0347284219371276, 0.48707383897255696, -0.06866257813543919, 0.2937618607534383, -1.161359070554741, 0.21001598604651528, 0.4159405289601604, -1.5043005890504582, 0.7372524407400997, -0.5334658384258053, 0.2567239585606655, -0.6299751233419266, 0.024035161278926437, 1.1244580271586777, 0.40836377201711715, -1.8739717517634698, -0.26853628794603523, 0.37761170331094157, -0.0050819767759484056, 0.009684786386250501, 0.2636875321138984, -0.08553945533113934, 0.33475288490766125, 3.4237712468503103, 0.744628978129671, -0.9096458649167182, -0.6827694846192245, 1.6425500385797525, -0.3900596403135759, -0.9509348833512404, 0.3229857369820825, 0.44175525248542286, 0.7931445181078505, -0.06988463350772384, 0.6819214512912009, -0.06839741587635721, 0.4734557044072717, -0.9215746025534817, -0.6195377638236638, 0.809667872762421, -0.4103668947560523, 1.749809215983805, 1.001647179219911, -1.7659243403508436, 0.15383957509758237, -1.2779831760745572, 0.2669263499455465, -1.4256436904962992, 0.040903466313536106, -0.9342945534262868, 0.7618231087000356, -0.30058739646889815, -0.5446714593776727, -0.4802089660362259, -1.1432227238603179, 0.5174957898345334, -0.26915089392842423, 0.3387263580347474, 1.2480509452812811, 1.9521841872543286, 0.9788396157168914, 1.001353646981955, 0.40906237950521346, 1.2380051766092655, -1.1622188132692055, 0.03880070372652659, -1.3157311036080868, 0.21159132832002855, 0.8251757971684041, -0.5943198935837782, -2.059249774668197, 0.4455096569146938, -1.5530036453685645, 0.24334104727505046, 1.9679440499519993, -0.14949638764508505, -0.1787890634869671, -0.8694565617159877, -0.02701940155527667, -2.327140574554701, -0.3493894186252125, -0.02711649643869937, -0.2125855163161856, -0.8626785926902893, 0.5125620452253108, 0.835126803441082, 0.4370304631746852, -1.4380277943151216, -0.15463871080474192, 1.427347151863727, -0.03594236427723813, -0.9987807222089615, 0.15285084511988004, -0.4453218737326093, -0.8774506171339351, -1.1301294572944445, 0.27932962145356316, 0.666378400360196, 1.0765917423686246, 0.2439549047998887, -1.00859364816552, -1.757528113553421, -0.7922512836603205, 1.4533777876325222, -1.508283926364581, -0.9454297378995183, -1.010459444419853, 0.0754147254586834, -1.2810537542822706, -0.7736354580243704, -0.811961379205231, 1.3638217257964536, 1.077496971491708, 0.5810375830537511, 0.3551271969105679, -0.043876281219692365, -1.0850332393056394, 1.109609770945844, -1.0337911892064604, -1.8807813444109054, -1.2265714811977597, 0.3936172157806796, 1.0778363941578806, -0.8644861643567047, -0.9521061052105131, -0.3765845085538441, 0.17855829086113095, 3.5953876986672255, -0.8488543068716493, 0.3153960860722241, -0.4124980314658376, -0.25957042793288443, -0.47466672457489073, 1.251745108485312, 1.9089401526170708, 0.08093711755806289, -2.256777082059624, 0.324177164165908, 1.062105790670867, 0.2886235312894662, -1.2983305542602077, -1.5005961252940438, -1.4260396412546816, 0.12572172650108407, -1.371518218990482, 0.5998645930096181, 1.2473531605780193, -0.9358060344486432, 0.49295286102524044, -0.3494884497630849, -0.9308402692062906, 0.3630283557686611, 1.7611911540817928, -0.7229213248269448, -0.4323877136781272, 0.09012216684853104, 1.2693688025965613, -0.05609728003750563, 0.2942911094966865, -0.7311965810915613, -0.21592794240105817, -0.4553253041620339, -0.13454483357874214, 0.3803586083160361, 1.2706120469339364, -0.868299098407261, 1.59925697493435, 0.5433594960509881, 0.5675579810614343, 1.9203285366540146, -0.5030970822643847, 0.8421602450844566, -2.316838061301056, -0.4201799135308444, 1.99145358910135, -1.1698739038813457, -0.48526560569590693, -0.664516213841126, -2.1784216925774254, -0.05592421534349575, -0.3735237580415768, -0.22461780649945687, -0.6015415198184665, -0.525149213451578, 0.20817264425532928, 1.0421502948740846, -0.24223189745187212, -1.5453453515930158, -0.565952007041841, -0.453301777620275, -0.26956499012979956, 0.6612001818907256, 0.6566383906736746, -0.7620891486112908, 0.4039229699126195, -0.03287499950025958, -1.728025679680301, -0.1351648490652594, 2.979844425070889, 0.21407749737048995, -0.41165660712793767, -0.8911684286042895, -0.49236046031915226, 0.08810619424950021, -1.4051338603716423, -2.3224238004285707, -0.3410883214075715, -0.12686282703773566, 0.23609553256542695, 0.23545196849666264, 1.371312887239788, 0.2318653380046876, 0.08464059182127714, 0.19008151199377613, 1.7562161679995132, 1.181971977987871, -0.8172519034071913, -0.31575932783054717, 0.2503737947188051, 0.028618079946139307, -1.723439924093865, -0.7885161782185284, -0.594263411951702, 0.5644435285732619, 0.8811148239408805, 0.7833035854562042, 1.0392171119322082, 1.8371154985886862, -1.2420591801850245, -0.23753657646460405, 0.19313774990116925, 0.5053866496884525, 0.3283028032403514, -2.225396433305001, -1.096249407991655, -0.9149883628966105, 0.21230053589695053, -0.6023002440801871, 1.4512382841053386, -1.5038113250304717, 0.11558860384831522, -0.06338166413389325, 0.22201020504142566, 1.4399368526678278, -1.536144263111769, -2.717778670757182, 0.1168039138752043, -0.5866181500734327, -1.5377442224077151, -2.0944415177169953, 0.7870016058915985, 0.8949404757727989, -1.2488701028525535, 1.8425900504983932, -0.8820586551654293, 0.31200772222466067, -1.4538990075976945, -0.4972028753925732, 0.30783322485667264, 0.534974938780373, -2.0058475112711514, -0.4541796977906028, -0.5567288589208035, -0.7063829736735863, 0.08317733846151737, -0.9039919874880522, -2.359353503098415, 0.11425878193276912, 0.64706666019578, 0.4359959376210403, -0.09281069482301793, -0.5382334133878951, -0.633983343063867, 0.49835413266819356, -0.6176307398455463, -0.58828999383318, -1.7334295099492802, -0.8643497543156821, 0.689824201173873, 1.524711206099055, -1.548684848469057, 1.2284263304913572, 0.19868751298961676, 0.11836116797672853, -0.06310268278090121, 0.7479073753397237, 0.19168429076964602, -2.501823109461287, -0.673945501033193, 1.2235988334078434, -1.1636116702452202, -0.22624467871026605, 0.5071009399593757, 0.6279007880533118, 0.5692262629524086, -1.7255159569914225, 0.6397252376986503, 0.23342621054073684, 0.21399479954715414, 1.1788921695577175, -0.4946728962147127, -1.8310549540520982, -0.3690830035843751, -0.42224783195423987, 0.32423026673778105, -0.4402301947763417, 0.7465865033369634, 0.43199223950922194, -1.939062107304355, -0.10453191019598392, 0.8153426406136252, -0.7800663274052761, -0.4477465519532468, 0.01545038682624204, 0.39608506375087277, 1.1493902335657455, -2.130104535188091, 1.1476608122361165, 0.9320022617397814, 0.03568906908977818, 1.4420580869170465, -0.5372177387698984, -1.1864962493216553, -0.5500096460519907, -0.763791941134191, -1.697389937955057, 0.2998477603655102, -1.3941268553154642, 0.5706575386796322, 0.7831976119427991, 0.28018300766602294, 0.13693472548612742, 1.0154445987056024, -1.1860807036684393, -0.19007920263882952, 0.1523832525182091, -1.2093360312349437, -2.100547843467698, -0.1530333323078057, 1.1971503331114541, -0.38189865297027337, 0.7916834209392376, -0.1728944869857963, 1.160481352505748, -1.0427224611678692, -1.040602541009036, 1.8273660232377136, 1.4195569065800453, 0.8386877142814951, -1.0778628423584962, 0.3469301281229362, 0.6711365751637789, 1.1526892923346204, -0.18194736753591428, -0.19855569336096057, 1.688961038095004, -0.8745505869548725, 0.32284669288734297, -0.8259830110426495, -0.3611221208798455, -1.4195164842808716, 1.1907305012760756, 0.1522501461827938, 0.922469684257407, 0.016501336648811274, 0.7429642513221194, 0.10750421501190041, 0.4808356602618045, 0.1323677945856938, -0.7034274377386549, 0.09645911224015045, 2.532325541632594, -1.5866221126564115, -1.971084122083064, -0.13301270859207348, 0.39343143403797187, 1.3390674367668436, -0.747255398772972, -0.16290875300595686, 0.4979804345513483, 0.08795913929250766, -1.1826687439735564, 0.8708434312878163, 0.10036766629128512, -0.5580601750838238, 1.0076432223870029, 0.8554191239588586, 0.5698707282163747, -0.20863591717796462, 1.3123618498586958, 0.820266660992923, -0.05334598793633222, 0.10738590560666669, 0.7476571054869932, -1.5691946737355327, 0.8999837788505479, 0.038792413114335636, 0.9914820089613138, 0.9465564741859593, -0.9548035752110309, 0.37108183095020375, -1.6932708709240643, 0.5742732453192894, 1.1869006875492747, 0.2555908214103616, -1.3999854653788708, -0.5270366881316677, 1.8409181821652891, -1.7547244042030132, 0.07405473692919617, -0.14925008749413637, -1.8439449535735588, 0.3444816081051852, -0.2983334069128005, 1.38335867526748, -1.9630063235244388, -0.5193463961965822, -0.11562338831110575, 0.352400820758953, 1.6482773735238936, 0.6711383514595195, 0.2238366057536359, -0.7182362270286512, -0.35435416471609005, 0.6485877172023825, -0.2757466733288484, -0.3563016808385527, -0.17817414950901492, -0.0019081140052624073, -0.39273602229275606, 0.06348346009811161, -0.8742437683710312, -1.8689872110353185, -1.5147133895052636, -1.0184612409555949, 0.18139626346512772, -0.7129650139254672, -1.3195899155857833, -0.21170557963600709, 0.49610977046001814, -1.107773982297535, 0.6462111934112551, 1.688912150364615, -1.3591299269239323, -0.7475464904708393, -0.9405677474521547, -1.693588315970276, 0.20250426856488513, 0.9856658198526146, -0.44166427943855957, 0.509830562978939, -0.5991965310798085, 1.4973252224613436, -0.5546344165085834, -2.2200296733850635, 0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967, -1.6848834226351845, -0.468054031300935, 0.2231411040063078, -1.2079120248207287, 2.0110030501455016, 1.4453850086239999, 0.34059707215507334, -1.8213959334958643, 0.8699402772722297, 0.4899667100861624, -0.01173787871675348, 1.1948559206670855, -0.8870269587625144, -1.555705163842219, -0.26533917383348415, -0.3325290424739039, 1.5977665804314234, -0.41203089860517084, 0.49183361850554513, 0.5136570154037132, -0.23309124875198506, -0.7998287164209388, 0.530066185314952, 0.47106304564421286, -1.0105968114955957, -0.8353508972894879, 0.12377709284481839, -0.07289187751377658, -0.6735741109340289, -2.0639344018430106, -0.014438189818046943, -0.4713457882035365, -1.3988791318705927, 0.7076705525000143, 1.0974072497097722, 1.1672671573256546, 0.5553099499949979, 0.12122031680888311, -1.3280507129101098, 1.1654608124772015, 1.3139075127865134, 1.28261825548601, 0.8583778828163117, 0.4508675701062839, -0.3773168693728364, 0.16884703765184494, -2.5899418769593017, 0.8980383022257733, -0.7871723126611332, 0.008146263601196916, 0.15100042746757067, -2.158690321719755, 0.5154773443584927, -0.8968793509306945, 0.12745529032276473, 0.3057102963260676, -1.127194036956006, 0.06889018035163645, -0.29649779158358486, 0.4000800574133786, 1.3294197922581654, -0.9809012577471112, 0.2604706024238921, 0.5802535538390949, -0.7974783258128166, -0.6640912726671294, -1.119222930304624, 0.5834025731102502, -0.25723586541301474, -1.618253196199123, -0.0570695619599075, -0.43841397343582966, -0.6767231131676439, -0.38371376805174173, -1.9996328333376983, -0.33850140623335534, -0.1183524981649774, 0.005796690030477999, -2.458306016054147, -1.099750705180441, 1.054860270281014, 1.1651235359219074, -0.8686068833819991, -1.4001372299430193, 1.1272944804074991, 0.03719751404379593, -0.06732456664178753, 1.0123217113273348, 1.396494377415687, -1.114892120467897, -0.23680354926169062, 1.1762829232717322, 0.35544788004728406, -0.41986744728203046, -0.3867023929082546, -1.483298749076887, -0.566334552372417, -0.03321061530877886, -0.8527679221181403, 1.4516682272189547, 0.7320822341298279, -0.05200885253027685, -0.9525949548843667, 0.5751795467491231, 1.178459960930901, -0.10762850518883417, 1.5651830651133336, 2.1380607452390663, 1.2280945171647695, 1.4042702000856067, 0.09325784801982663, -0.3557970327475224, -1.073778288097418, 0.8968276612463406, 1.399133831515596, -1.2439663723417378, -1.781799686206601, -0.33427106612358554, 0.889230360742913, -0.41170088971799085, 1.2155279834457413, 1.600649868770159, -1.6424774434123148, -0.30897369601229935, 1.047363878453214, -1.0791866371859211, 0.34680511458320423, 0.9927888544576774, -0.8514984695838704, -0.8372280244524042, -0.22804642016295132, -1.3868435427851724, 0.7441016059552877, 0.06972829881636747, 0.3420780025264497, -0.04386730461990216, -0.017778941397242242, 0.6102135468147727, 0.1101978218029996, -1.401046648194382, 0.6208120606616816, 0.26306079867835747, 1.6277476977056633, -1.4148077742490233, -1.12911289812443, -0.4018145604094114, -1.3755867441903893, -2.399920233063965, -0.020319571626188252, -0.895842610909627, -0.3494298955785707, -0.2738387174328631, 0.34922230639219626, 0.07109890321458032, -2.4101191646725644, -0.7411692543552041, -1.3233841458208606, 0.6863453426487733, 0.3632155343313335, -0.5590033258828403, -1.1449685446383917, -0.7258003922221851, 0.278797530701865, -0.3441402294664407, 1.441339424212574, -1.2335052347473323, 0.07612868920434228, -0.4241597163106437, -0.05332877983539378, 0.10099084201256278, -1.8787758687909357, 1.4045284087841965, -0.04347827565492549, -1.2990797348095602, 0.6319627183761264, -1.0748380347638893, -1.280830568026441, -0.4632576940943757, -1.2762157345443148, -0.4871099169463196, -0.8573516675952042, 0.2602500067557723, -0.663512812580364, 0.9193611678505703, 1.4195120671985408, 0.31768737978504635, -0.22676062071355782, 0.7472485772463154, 0.33979457913367445, -0.024989366536706515, -1.1780091950874647, 0.8422172106604986, -0.9853850143769382, 1.0084091587937258, -0.5446586568124329, 0.2287236140419025, 0.12649973956792954, -0.8624432460024017, -0.2042801144909528, 0.8201641258212513, -0.8429169760408267, 0.15786776211979775, 0.586990037118922, 0.7581270686613231, 0.13813966047716805, 0.14287983497159015, 1.542247836275435, 0.6889352238499454, 0.3790751131802156, -0.36007691647378387, 1.5453032787583676, 0.4475231964904419, -0.06905081640069816, -0.2556692520813782, -0.6423795723912976, -0.6500078649365075, -0.6577072095504994, -1.4866829628942408, 2.5030140049559653, -1.0572143847418314, -0.000571660449572993, -0.042894005602608545, -0.4591852328122149, 1.2843268761512387, 0.3968454779394536, 1.138745996685296, 2.4071733886455227, -0.10540633867195442, 1.2714215049136428, 0.04757946360595818, 1.2348108652417815, 1.6311115642560317, -1.6302649244099794, -1.2745470694966483, -0.8131839077565575, -0.6825393122927416, -1.0794370197645617, -0.7204636565534043, 2.1467941519636455, -0.18535362890328835, 0.6625127934408671, 0.38979365484662193, 0.7719784843101606, -0.4958538436662962, -0.658575404725063, -1.8250261743740281, -1.3009369789521832, 1.1569797741579901, 1.0803875458840382, 0.3519814471093802, -1.5678550885987372, 0.17700126122173684, 0.19570581803986603, -0.9713133420910822, -0.40681730492260765, -1.079374837348168, 0.9333820675088979, 0.7164115790249227, 1.5974993677559646, -0.27698287787067033, 2.0383895476075855, -0.6836849892211939, 0.8311193676081333, -2.4241121219014663, 0.31596002357495434, -0.999473279382509, -0.262687475352513, -0.46071381621370666, -0.8976883600787323, 0.5219272929937467, 0.9722622620644177, 0.552832436548929, -0.027467290841698567, -0.6107378749038481, 1.3506129449321138, -0.4521398968561788, -0.22117060492964993, 1.3204666166460701, 0.42542027990331455, -0.19467559818902735, 1.3362817877824478, 0.1643979281153062, -1.613150980719597, -0.5326178763831365, -1.5741387694417994, -0.2358632094400509, 0.35096623923842685, -0.40087086833885227, 1.547569381699142, -1.7090186764224344, 2.2199280575728784, 0.7516533958698258, 0.6804837145322774, -0.19556806995297935, 1.3537057525493934, -2.0138393066087383, 0.172351936169543, -1.7024086384702934, -1.0519290071418026, 1.6258351842437149, -0.11856858846558817, -0.8121335733777978, -0.02927583999406098, 1.548105034805526, 0.6981009969478109, -0.990277098683295, -0.15604117684813257, -0.9747927516511783, 0.4652704424950469, -0.31289780730884004, -1.651056798736739, 1.2755967903796157, -0.13648504411430237, -0.48481306969894616, 0.023313382404551213, 0.48504298344685315, -0.8507882704201493, -1.039212404883905, -0.653701398776706, -0.5189768622716721, -0.12449303534256825, -0.5128172446702866, -0.06818346256734656, 0.510667943805758, -0.20971767447744363, 0.7975878663589364, 0.3042695491801, 0.2654566914993375, -2.0012906991903865, 0.413870629899118, -0.6025010011948203, -0.14082858261327996, 1.075340195058932, 0.2593371488480129, 2.62922759693777, 0.3324210527578405, -1.2020419530087723, 1.1926421271709948, 0.2347858166167028, -0.9756048534996443, -1.8200265368846862, -0.5169307203823522, 0.1500518697766681, -0.038484274917838325, -0.5595155602432803, 0.7826664898369591, 0.4484219149387221, 0.29541985156163897, 1.3984689244673294, 0.25998037440140653, 0.42332643185294355, -1.2422400480672728, 0.2176902105319219, 0.728761958261402, -0.011206770084421624, 0.42373795905496436, -0.0772966783872132, -0.1844058501562145, 1.5231610698492861, 1.5815719719777372, -1.0224998294567542, -1.608411795245145, -1.8940383890496493, 0.5392647246180361, -0.9404210876785811, 0.24515734401955552, -0.8758837658412391, -1.528076170772824, 0.16773671218212843, -0.06372312245930913, -0.6625850298997638, 0.31931330490352056, -0.7703083579211024, 0.369010898692774, -0.9262558726002627, -0.021452503506505422, -0.6884402260487072, 1.5154027937733978, 0.8284697701567305, -0.07697958106921719, -0.4538814926580921, 0.5439309292438045, -0.5492443043774654, -1.220225030532012, -0.7053512461796413, 1.632643282613422, 0.5778426489678986, -0.9229177377752995, 1.588544297460673, -1.7481169305157809, 0.2618776316461439, -0.7711250331583439, 1.4721431859882452, 1.6321252809774605, 1.521708343024266, -0.46073261039758234, -0.7747734720993155, -1.3354599996427268, 0.9861401026653767, -0.575980258880269, 0.0853876730028182, -0.6195540436182536, -0.5432771078257063, 0.3060459872354665, -1.824118723913547, 0.8784176817828129, 0.8097094976615903, -0.361780627962229, -1.467071190440473, -1.8907115007272879, 1.1242546008439889, -0.4974181028535098, 1.829441455586246, 1.017979249905673, -0.7075497604105697, 0.059183606525579274, -0.13056990600722507, -0.5832122715205462, -0.01409309201012074, 0.016108610412205803, 0.1900118760884006, 0.24188780949423172, -0.8882450727066196, -1.3576659214518099, 0.07447367725510536, -2.991099769542917, -0.6488322635921112, 1.8595982643945574, -0.702641433986396, -0.6416959601570708, 1.3390388750212445, 0.057488906459266735, -1.808725561176733, 0.2948187135806436, 1.1497414866629478, 0.8709941695277267, -0.2850339815191343, -0.4997261831464098, -1.4398917507631508, -0.2148727154738073, -0.031164729254402425, 0.48150661412660234, 0.12415703923674576, -0.26613703422724105, 1.0565002395567262, -1.6752860867796824, 0.1869147939846373, -0.7272110183291539, 1.6245102578872348, -1.3773924349992401, 0.14296540214244555, 1.4878267201868336, 0.10331510654880505, 0.9062060348158155, 0.9324085143967664, -0.21818888199568304, -0.2522508930003547, -0.8562525871887124, 0.10204130138311729, -1.0184106320915587, 0.1825164284873822, 1.056310703030919, 1.7552903725196911, -0.12454007621445604, 0.31880532192621097, -0.35541825354040035, -0.8580393155101081, -0.2682711254651047, -0.30783295275138195, 1.3170139199898268, 0.7531186614185573, 1.192570085627795, -0.6615475858876328, 1.4991876630051717, 0.30861856418442385, 0.46151436623585584, 0.3960375120229514, -1.5852068567014443, 1.9903541747766398, -1.1185087223822021, -0.5183442785156127, 0.06782511507671637, -0.13813126796841926, -0.8649990189511263, 0.6978353775870149, 0.16085392211498364, 0.7383270750320552, -0.6856342770612354, -0.6045226539767258, 0.8110514204550441, -0.36508901079756473, 2.2802828142762928, -0.7663535452926638, -0.3887166303815122, 0.9034427218611359, 0.21868488058095606, -0.30457226174639157, -0.287175489125426, 1.3568449350217864, 0.39711905418048105, -1.1763187968954603, -0.33474769656895564, 0.917254226523988, 1.0804852401399638, -0.9584787505991971, 1.7478622379080422, -1.2473029790869914, -1.982585782186715, -0.41852445481952294, -0.9465815043529053, 1.3486167490991765, -1.3147522922373933, -0.14921512592164993, -0.6510935828594568, 0.009685462499594857, -1.0764421921168665, -0.12975724308626338, 0.4720265080850217, 0.3117809833804109, 0.8469168005900016, -0.520242573974674, 0.27675686046474957, -1.7178145403893597, 0.439729002709256, -0.30048055544717606, -0.6302171098523444, 1.241050608643494, 0.5721350887681553, -0.0022023636536079735, -0.4924114110139152, 0.9950463422748212, 0.9816810712679719, 1.9924377989279343, 0.03900009491657034, -0.2935571188258591, 0.1266892245615102, -0.715464769225636, 0.3145853867440553, -0.3835873169761903, -1.0953446648325833, 1.0121232148460444, -1.0957236224096085, 0.17063463111383734, 0.5102992173497909, -0.3658969046671184, 1.23797611806204, -0.18059200075977175, 0.9936325102325779, 0.18430235850671245, 0.16517189020344797, -2.016269812957052, -0.3616199185761283, 0.7527532999342817, 1.3277176349050535, 0.2920534284459897, 1.0606099435377094, 1.848598832091733, -1.3301443272735525, -0.5759958625549068, 0.27878675140631204, -0.2315083920631258, -0.8288316208067809, -0.2635580627160318, 1.3355871376746895, -0.8117302674348011, -0.23432703924765444, 1.92799930513707, -0.23101856846075614, -1.4238524703136513, 0.1368000358051577, -0.2055684135567207, -0.15855445409422964, -1.2600442043395892, 0.1701769006730323, -1.068866010850334, -0.1904292641612836, 0.5892434527813512, -0.2157459392172624, 0.4055498592698905, 1.6497067243577175, 0.7890192766736421, -1.044353487265588, 0.7953139847174688, -1.5740154854045074, 0.9665654379132748, -0.3889094455704384, -1.8426397459593846, -0.9001191779220159, 1.7045921258988515, -0.8923330121142684, -0.5956915482032328, 0.011227289589172133, 1.7111591357647962, -0.9587860284026688, 0.7548194520215976, -0.32603844480628175, -0.2353359336920787, -0.16729381132141224, -0.6023878547302806, 1.371156314999161, -0.2459473828028695, -0.2620130902224386, -1.2172056461838572, -0.20656000988613168, 0.5008110746890201, -1.4028780271648753, 0.7193747259694553, 0.0660307754939295, -1.3093771377458805, 0.407051194515542, -1.1823392140768092, -0.4019555472426395, -0.26250820888118304, 1.2702869545254583, -0.24272141574465245, -0.42155102572483116, -0.05194109601117269, 3.292873619493133, 0.7890333104486489, -0.6211877906484109, -0.8047810389893006, 0.9678567436130486, -2.079988930109922, -0.6016769585932343, 0.12364670959331653, 0.7229553379296235, -0.5227730192140618, 0.023991105176350242, -0.0017528334343272331, 1.2586605379107056, 0.8446327540395329, -2.252502331262609, -0.5270068966745032, 1.6223796347828976, -0.4278645067985037, 1.6333830568090013, -0.8062257833307152, -0.30685337459460577, 0.3507708774563464, 0.424527526741457, -0.03735386264172313, 0.229879937036083, 1.1454140027646036, -1.1872670475847902, 0.6262020869197982, 0.7589488691885292, -1.6862092963785988, 0.7944545737967115, 0.9971081922053232, 0.7560471613916118, -1.1851981001821967, 1.0965175918763284, -0.46530937265986, -1.2761702411382863, -0.9791491731581209, 1.1589807765966766, -0.8156014346461856, -2.8072546995497247, 0.5334627416087777, -1.3798149493182552, 1.3972706448160608, 0.4552374166958973, -0.535433943499853, 0.8920580452737524, -0.5856331944062472, 1.7623274652492553, -0.2852747983665435, -0.18313041510663963, 1.4659299617833124, 0.1519470164480292, 0.23355499681619366, -0.836602381173288, 0.18618502715241547, -0.08859676768441688, -0.7180391575300691, -0.36232537769580714, 0.36477740973605915, -0.9281105879066266, -0.46197664970984853, 0.6483976493075976, -0.3812217162848902, 0.4303579894467762, 2.0043530514779873, 0.39102979400332366, 0.37534637396631415, -1.071734524715999, -0.16045645113900145, -2.998145904788263, -0.36470187389744846, 0.03991547011616779, -0.7008645685896715, 0.9912516955548382, -0.7450675439952815, 0.3264674970899282, 1.601666916097199, 0.5405397248625541, -1.1861306612606524, -0.522172803007203, -0.7727094284088601, 1.2277562505941912, 0.37759283992313625, 0.7444682278368736, -0.6522853231400494, -1.0696424743836717, -0.8054574164094268, 0.905380130000978, -1.1121207299686113, 0.2063449976062078, 0.5176153181186626, 0.2301751658467518, -0.17968415020039138, -0.5804234791794292, 0.522042470813759, -0.47680230351950187, 0.7668678996668346, 2.1152176375874023, 0.4635399730851282, 0.7692324460373827, -0.5214713943997042, -1.6311809160767827, 0.7017462722924709, -0.31859839125881545, 0.20304228378387937, -0.18790051825211995, 0.18432739014512065, 1.1541296937922023, 0.4450818568868103, -0.13551483948610296, -0.2758105920455811, -0.5849315949646472, -1.0646125679003637, 0.27411289538745437, -0.5032261617196119, -0.04351057134624247, 0.7743236339777182, -0.6756715811861062, -0.2671752620926679, -0.23914374307205996, 0.16461452793247355, -1.4436309225983486, -2.20506341329235, -1.0189819575984795, 1.5608022939480573, 2.31499985378701, -0.4181529433643855, -0.2711132087457424, -0.7206084096900425, -1.2504073094445143, 0.31340429692041716, -0.1447897506201982, 1.1850402988106572, 1.9541706849775027, 0.11232761778850357, -0.4382234425091706, -0.3947615339868321, 0.7015762348678443, 0.43950731587232217, 0.4486281613565141, -0.33259394965579864, -1.2893276502905346, -0.5665027824228605, -0.9867864794525018, 1.7152028381164288, 0.7425175887812803, -0.4541542908237512, -0.04974419881485532, 0.7205327224864219, -0.49642760570489125, 0.5806736618394556, 0.8088452773706619, -0.15195744367862507, -0.12096553277305616, 0.6220396950025358, 0.8874367244840082, -0.960123924615042, -0.2512769100863725, -1.3487372983592427, 1.9195263893870158, 0.1391130058484598, 0.3556392382753691, 0.022946113835703726, 0.06403402028906036, 2.01431714516637, 0.9153269759513197, 0.45535078555080316, 0.8164902531014034, 0.7554878281598991, 0.7302943512899034, 0.9227450720901643, -0.2149435624765486, -1.9175638929241665, -0.47494584965396475, -0.8209686635530825, -1.475086806478942, 1.5375697346337323, 0.43409387407100747, -0.5748944134752534, -0.1207717673708367, 0.10757938709427231, 2.24973612340786, 0.5656573548928321, 0.7510332313304937, 0.2925755284670311, -1.1385387437599415, 0.9278383480094607, -1.9329319879816766, 0.8833452963447278, -0.9531724053699292, -0.1039290425260258, 0.4382286101469634, 1.8998623656623255, 0.19200494459198952, -0.6716950287224315, 0.5638093918454188, -1.6242049283972644, 1.7704636715303947, 1.6534314391102312, 0.92655666075164, -2.1666623771571185, 0.3089037330906556, -0.34387294467445684, -0.17869075221031164, 0.45228978471381315, -0.9526180775686287, -1.1784311215584218, -1.4588182758831976, -0.3751354576229393, -0.3058513410728059, 0.9384734481636833, 1.1326237644059438, 0.12950394282796612, 0.7421113354249786, 2.22774088023295, -0.38297985887788083, 1.184609638956563, -0.28900852784476955, -0.38476787730344003, 0.06257594537962448, -0.8447175394855944, -0.3276448761445928, 0.9520069001238655, -0.7029145751675628, -1.6244073387265128, 1.622978343226983, -1.2795553886248943, 0.2494267093436905, 0.6236424924999387, -0.04290636875881789, 1.8562326434548018, -1.3390517668015733, 0.5090655455389611, 1.2848563335735044, -0.5387392229559257, 1.6741064751678032, 0.10066535315992477, 0.8949591322162106, 1.6846660415357275, -0.47037844642707904, 0.4157622049238856, 0.540404845364168, 0.3967936830533677, 0.43668944123398024, 0.2112361885627918, 1.185672884091169, -0.33641286222705097, 0.5497594019101291, 0.12465203566067538, 0.38350811363315446, 1.4507326394999236, 0.14723038127353738, -0.7869045408490771, 0.39357209249435554, 0.9743220259735553, -0.06453115565194864, 0.38254243983530506, -0.8643740939583053, -1.684728335866361, -0.20622146179421566, -0.2747979191346741, -0.07028871827775147, -0.5729020560099904, -0.6189757445377713, -0.1510371111896753, -1.1820077963068163, 0.6043354866597276, -0.9774217378587312, -1.3380178663597784, -1.4201147833071752, 0.18880445993987796, -0.8427639940831457, -0.32186427356745245, -0.006664725012722541, 0.8058032956183504, -0.23641847937920588, -0.6756647705708424, 0.4773883748212866, -2.185477701275724, 0.7531165422993013, -0.8203844714762077, -0.4004758384259698, -0.6468022951980026, 2.2667765095579213, -0.1464154957378096, 2.098114036236069, 1.0184508455410493, 0.8103126555466662, -0.40972058902905745, -1.1414090507678094, -1.3867326701405396, -0.4507753555588849, 0.10028961530046718, 0.13126844765242035, 1.8046340365305968, 1.0498294815194782, -0.1970397367331956, -1.4653721149167949, 0.28738863276181814, 0.5271374800610847, -0.1451944493283091, -0.9800599971955779, 0.6516285157791157, 0.3396200289963888, -0.8198525721107438, 0.6319579574491423, -0.3772650215173409, 0.3077068224849206, 0.31720206688921, 0.12158776309046304, 1.0809042082121207, 1.0642567891228714, 1.8179097447438652, -0.43206935605397984, 0.37786874569296014, 0.3952043620022568, 0.3619801074518372, 0.836701763727239, 0.13589241191151316, 0.5983402387018408, 0.11083062853937264, -0.47684235510432976, -1.425496108886025, 0.5861440987479868, -1.086649842646286, 0.8692343861045037, -1.5595017100635853, -0.11939217655297334, 1.867839017091306, 0.1529344462913203, -0.4142188866098133, -0.015382150772253089, 0.02331025826997036, -0.31332150638072576, 0.07177806286427546, 0.9588513248678675, 0.4790246289141386, 0.1782800679264196, 0.8316439535085373, 1.3697451219813022, -0.29239194315140027, 1.7130334754533454, 0.15301199433584703, 0.2516538496321531, 0.8052203626705442, -0.8193169757784692, 0.8297372716531863, -1.6382362402194854, -1.039626938505833, -0.8865946056863021, -0.9294253652017392, -1.7978162276590155, -1.992621134234571, -0.05491414933488196, 0.7607121087371761, 0.07984366129268702, 0.5462619894735057, -0.2682509648059717, 2.6409716720600263, 0.45749720934429716, -1.5363699364147407, -0.7376116600379029, -0.00034809918522295523, -0.0446268595336354, -1.0661827948417526, 0.20144275615808793, 0.7334562425309233, 1.552508206699953, -0.4212114236659149, -0.18798580599722212, 0.362342131367099, -0.40201566793731663, 0.24422295735481817, 0.5936899101332285, 1.4911129590651635, -0.012571888777807325, 1.1564868960369348, -0.4347382827914363, -0.03991151500405277, 0.8894520643614005, 0.6750877041971858, -0.8924490272423622, 0.06802820117873785, 1.3941390498912603, -2.2183459123693248, 0.728823441885771, -0.20738631995329626, 0.5619451894738027, 0.24102109818707865, 0.5988075233622759, -1.197341333157397, 1.141794439805377, -1.4503023284963743, 0.17970074803850108, 2.2516048850144963, -0.56902356791673, 0.5251052705298633, 0.41230439233508803, -2.0610354044549024, 1.6463483630850755, -0.3895932560221762, 0.023372481314313378, 0.3726580742458444, 1.6009305244339782, -0.5079472543165146, 0.026058442391582896}; + + +static double gemm_B_dram [64*64] = {0.189669602985114, 1.325049359243402, -0.732183062829934, 0.572714186764936, 0.578590600877031, 1.2388796995290943, 1.0500306672776403, 1.8192381659692514, -1.1405729828723672, 1.0122300292640196, -0.6803068888120192, 0.23558756797719393, 0.4590523848413457, 0.039978934156923385, 0.7649728251851297, -0.6523866340206094, 0.9057001363970097, -1.4969909024911252, 0.5583314398652852, -0.4452115501359032, -0.3304347302314844, 0.027571386474332372, 0.8939826883481805, -1.872118961147354, 0.5298280317907396, -1.0826478091988276, 1.2084845569673108, -0.17218404794239636, -0.3252179452060136, 0.3945233627729552, 0.2425669838461522, -0.2564454574318479, 2.0415809465850456, 0.6967377843326548, -0.9048546980985884, -1.234321257122067, 0.03613326393674803, 1.5030525940981552, 0.039812401385598245, -1.028716739224381, 0.905199590933292, 0.07238255324721113, 0.9920291161315633, 1.607092129619061, -0.7789509309904787, -0.8098065870783787, 0.2185071569653127, -1.0776572234997361, 1.0422979672486086, 0.35098947793500807, 1.058321853508688, 0.21414179532614872, 0.87002060394994, -0.588672020705869, -0.9012431889469893, -1.1027247239157423, 0.20399290647527346, -0.22033680012834594, 0.41392188096741706, -0.42930260307085955, 2.008106278814718, -0.17141366812550005, -1.0826275786645045, -0.9116258668673404, -0.4909043876322673, 0.5943271959845479, -1.032232792355313, 0.6916475040075348, -0.2814338568695432, 0.3019276636231262, 0.30840104248656297, 1.1260293291302985, 1.0658378320568267, -1.309665630454003, 0.03270078938345398, -1.042853289185364, -1.1963506272729019, 0.22648827570429167, -0.27781730274050287, 0.6724032102680387, 1.4810649208771722, -1.705538843107525, 0.09082361393666324, -0.7042276239280941, -0.2383161417380752, -0.5754942139316102, 0.2034652918512655, 1.0314063302051917, -0.5483340133806348, 0.7261075561744313, 0.24325632249018914, 1.2040307377783537, 1.8952069586290123, 0.07195894063173909, 0.41620952444354886, -0.38792744247312216, 0.43271658564463056, -0.7152907230181043, -0.27441611835118457, -1.2767143227797635, -0.7237480311094019, -0.7801386726592521, 0.5873572672607883, -1.5638814718009917, 1.0026700985921706, -0.20658267805579636, 1.1147082449222048, -1.8735264640919256, -0.010118223620103015, 1.3128640032531393, -1.2394667444809362, -0.058071070610180346, 0.3326917440450766, -1.3418569139214052, -0.35250711745478874, 1.062335579748586, 0.20356887701465726, -1.5085222292073164, -0.20122570212640017, -1.2154057454628897, 0.5158621290601251, 0.9695271692142623, 0.3441306717260009, -2.1992152335223514, -1.3802722217172205, -0.6034656461417384, -0.4801083441565978, 0.8538691740175305, 1.251004287596872, -0.09542742482466746, 0.40740998722283345, -0.46840541134330865, 0.6471911034482357, 0.35532009889140853, 0.7653967450899795, 0.9524656674056426, -1.6215943351797741, -0.2686500917542327, 0.9449563832937318, -0.20293909969523755, 0.020177369737896966, 1.8868326165910845, 0.4576448036103095, -0.2498818144309833, -0.10142946285532765, -1.449579663145317, -0.8489450230349159, -0.6568950465417366, -1.67036939630407, -1.7958306634788441, -1.1021273970619352, -0.21287356137371105, 0.4835462118207064, -0.706131682059633, -0.0005784215469045945, 0.6574250653163278, 0.17766778608163517, -1.8727680007027385, -1.5710173931120528, 1.7986529290207192, -0.18797275721228432, -1.3910123695349608, 0.4306425799188508, -1.219748011178242, 1.0949707620919027, 0.1513762139476246, 1.9338021854764944, -1.7210422812237611, 0.9885068182490291, -0.9803371411601391, 0.29682676074294506, 0.5079171532797483, -1.0067592408859265, -1.1852909158053921, -0.24870697467690292, 1.5263388569653553, 0.3621209495718994, -0.10875592605323897, 1.5707754718355267, -0.058214043298022156, 0.11649757853760016, 2.20745259723818, 0.22508102515092662, 0.30413440003257725, 0.3361637150433332, -0.29948851492748413, -1.4644211330145278, -1.1645688132881276, 1.7112956696610628, 0.3665551294097223, -0.892280722293537, 0.23500589115883444, -0.006491959097523364, 0.6091191876188028, -0.4461691518402758, 0.9121131054406446, 0.6355326129684161, -1.268683781896227, -0.21309922823334831, -0.4526268909737412, -1.4960032394689278, 0.5540823200822727, 0.2560919649556906, 0.6958730281917784, -0.5196649709771612, -1.3359468501779264, -0.9612977596469916, 0.3684109792157164, 0.46874289915027023, -0.23500821987366438, -1.2492858128054651, -0.9712261431242842, -0.11106638365989584, 0.9412519070406014, 0.49297323422258654, -0.8131389146040623, 1.6400307701149688, 1.0589667993101595, -0.4626925507420147, -1.4812253208994315, -0.44695524379636, -0.5088098786201557, 0.7417386987297616, 1.9120910039247294, -0.5568304246735866, 1.082342797278427, -1.7235037406979286, 0.803163868309887, -0.9769340341766338, -0.35112463351229073, 1.089671633947238, 1.4945995510345567, -0.9605994188901047, 1.8558602683726249, 1.2656905677375838, 0.42254046476492185, 1.6858550771091214, 1.157878804816697, 0.4573643259259206, 0.024994765804824147, 0.6922554384196643, -1.0810666579003045, -0.993616522481608, 2.5847749332602, -0.5049684014655186, -1.1395828435290725, 0.7605771798197924, 0.4408163359631587, -0.0840611891215317, -0.9527439222312267, 0.6926562526915562, -0.0027305349396484877, -0.17986472316396296, 0.6422610144258437, 1.412615895841031, -0.8278577538333346, -0.34124077949668935, -1.0204861021625729, -1.639602822546497, 1.6074096919057093, -1.1584852824016685, -0.7208155426015784, 0.8392040761097412, 1.4407795793808869, -1.1752867571353782, 0.13944705380804281, -2.1057408864224376, 1.8791244019244464, -0.11042132844938202, 0.6020370854831343, 1.123017096832584, -0.05652868718922079, 0.9625740766310946, -0.9673606956637038, 0.34492034644528907, -1.5375361503838323, 0.4990455041789286, -0.9489277592897538, -0.44848662225935687, 0.20225111438661522, -0.7527660556091446, -1.1152440995018695, -0.678649964720999, -0.0170582056258441, -0.7846907726938122, 1.464993202427589, -0.23851486543700182, -0.21705046983702211, -0.48796761821159795, 0.06955842538462975, 1.354628016983049, 1.1723362156850679, -0.05921619047971073, 1.837739007328147, 1.8393226614447074, -0.5268796561342607, -0.009364231583693152, -0.34684234783223405, -2.176072940640231, -0.09860764477494396, -1.375924608815696, -0.3811363408541145, -0.25535084881820336, -0.5151247779921773, -1.9166699100712044, -0.7282751936534643, -0.770819120513824, 0.09989507970317545, -0.878538580803181, 0.7867474162185699, -0.6197714222289087, -0.7670250649875356, -1.1346435642707655, -1.0880912464935015, 1.068458625377813, -1.3222351936152148, -1.066593964724342, 0.6852370705793731, -0.7113480780630511, -0.40942559335898576, -0.7483757154858288, -0.07122776033319436, 1.737408764400146, 0.11841252923863307, 0.8754522360715343, -0.343031757238289, -0.16416710878946741, -0.19531408663845634, 0.7754013715005769, 2.1332591207760423, -0.5052118758709067, 0.7131591899986326, -1.7803264017675031, 0.09420444683357239, -1.0472700356156177, -1.141024988505546, 0.09968113439098554, -0.5500313848742133, -0.8741986078561492, 1.0386438045163713, -0.25198767361062563, 1.6311155422356378, -0.5489949380720973, 1.4199156443209913, -0.2207014712546088, -0.4933058762731387, -0.27150483339996007, -0.609287115241384, 1.8620527369297897, 0.3449111247951254, 0.47062028183460747, -1.1545294505661057, -1.292810580741897, -0.6289136729611903, 1.2737042271707677, -1.0511082561993392, 1.426825388255249, -0.015158507511135831, -1.273327662575822, 0.3566423182164152, 1.7276268792428473, -0.138705499081124, -0.3306294574129653, -0.25875806103153426, 0.9880995543293336, -1.8623261901283767, 0.4777716036036974, 0.7487573413181321, 0.2064510369320226, -0.6262881610175278, 0.7353602889754229, -0.51667585170615, 1.219994070236117, 0.08511682154742599, 0.461487533016861, -1.4324664872243593, -0.2831471438083741, 0.054981156346117374, -1.3700696100114267, 0.3096752736763023, 1.194241938484396, 1.8141528512917984, -1.58398942271415, 0.2567713855866453, 1.1325804441514433, 0.25474731658461836, 0.5102671515154679, -1.4402773937935691, 1.3631571444107151, -0.8745959707232299, -0.6709972930186268, 0.2283470744920325, -0.12596887340485374, 0.8065789677701352, 1.421469323382145, 0.4556508032642018, -1.0983863507243814, -0.6254964658092993, 1.070974103218303, 1.0062944399776677, -0.2034198776993104, 0.808780940775045, 0.5534680689510987, 0.8961184107636236, -0.5842103728027922, 0.5653085033471172, -2.1257290549864827, -1.5901962373203609, -1.9012367446206324, -0.6712383697091975, -1.5234460098622955, -0.5907400058854823, 0.5435115627741249, 0.8494509722996453, 0.39541460589373995, 0.34454168140199853, -0.5998570139754461, 1.4125085287986676, 1.6191319296034328, 0.5896315959519233, 1.6752120980115939, -0.2991192109089548, 0.9223415325858076, -0.7167872516194996, 0.22778147331011792, -0.7313561090591182, 0.2921479170003794, -1.625666094056695, -0.6445948416979022, -0.05395662589269566, -0.32651136607182046, -0.5718694030200041, -0.6239270633688702, 0.5293884091632937, 0.8538659984117739, -0.08646896041984872, -0.4591311530517561, 0.530729446677609, 0.9885369669648936, -0.10094123058942654, 0.7532893387345917, -0.5660396507329793, -2.0027194859651005, 0.5301317384831784, 1.7010094716661732, -0.6006505084403668, 0.07178044356560984, -0.7177231480244217, -1.359337165187181, 1.0326277403651098, -1.104532973746827, -1.6930804949542624, 0.8948572423285246, 0.6340160893384413, -1.5423915961168462, 0.011234729330484954, 0.08870089142026438, 0.3252000063592445, -0.3788953447378539, -1.6345167208845197, -1.9943938078659595, 0.5933545751971042, 0.1442610329440957, 0.8612263693463771, 1.0358096108450814, 0.6111080247478592, 0.3509848535144375, -1.1231152704037288, -0.1305107898573894, -0.41201313101807663, -0.03594780788378006, -0.9547182114259212, -0.011845221890036848, 1.12335088041976, -0.9774107703754668, -0.34076482193730445, -0.4446802970229687, 1.750328003641402, 0.11174788170294983, -1.565777190842104, -0.2346242003304713, 2.025590134435565, 0.735919593851651, -0.3026497563524433, 0.795453306662201, 0.46657766925371513, 1.3719765295674315, -0.4428217812148648, 0.7438423244369328, -1.0044446714902608, 1.154104526108482, 0.8839111136542974, -1.4508885825739297, 3.0611733845656395, 0.07901046926896166, 0.035058228455775144, -2.529204012749036, 2.2253130444496216, -0.4836215067602598, 0.16087228538156456, 0.7529292801127621, 0.3021529756635018, 0.4830310122781418, -0.8075856256378251, 0.26676009847445914, -0.29717856392002556, 1.2712147826101827, 1.3176937460170013, -1.4531100825401797, -0.401073196111487, -1.2871905265662251, 0.23493164012909643, 0.08751016369069563, -0.4032539921927929, 0.20282323529368904, -1.1162555921139607, 0.12695806790569364, -1.406093789252919, -1.0433007967333698, -0.6034955540076896, 0.17102026852126964, 0.7887411128500289, -0.703456192532379, -1.403341194881998, -1.0180851564689184, -1.207196105637615, 1.3037843089034824, -0.8651985363612925, 0.16224668087220992, 1.6395521189037061, -1.463483294540364, -0.7310087129802972, -1.409361808083387, -1.6742963677191696, 0.31488414200224113, -1.0807755665828445, 0.11328910546500368, -0.09407603144337613, -1.4910310277195566, 0.7879699185151358, -0.22617275756319744, -0.18453310046988597, -0.8088417376829332, -0.3039969187778905, 0.8286501834765244, 1.746576388943919, 0.4585966464736884, 0.25857411751629744, -0.7755037047860419, 1.420943752567541, -0.7945878809532562, -0.46422664555214305, -0.5870832701281387, 1.3591013677668105, 0.5825126289522653, 0.6302719139868384, -1.4892296911532181, -0.054354803805188714, 1.2886090146135347, -1.871894006094185, -0.17706345246737432, 0.8586917015117914, 0.9881224827101989, 1.7896888081081215, 1.8466624703615426, -0.652536121488528, 1.3010866809132744, -0.09621481510992093, 0.4195057830533126, -0.04083288515295536, 0.6108022121551525, -1.0750510120212, 2.0140943483593357, 0.4481129685052948, -0.9859321167207238, -0.08362383634635764, -0.03871848811440984, -0.2859438908875716, 0.5451864270031233, 1.096287644463553, -2.0123992429307687, 0.5129399194497606, -0.4096728112440253, -1.0733837614648305, 0.005037630800198677, -0.21228362057381842, 1.0230324323469668, -0.3656703260246628, 1.343090275133355, 1.22200570063805, -0.19194700432383366, 1.6409555329882874, -0.045055182295066304, 0.9609987857589979, -0.19006125129863014, 0.4532745570836223, -1.2557975528603051, 1.266664141133199, 0.7341021381288548, 1.0225863410319447, 1.0410718138994182, 0.7172806738325695, 0.7903692364559284, -1.2222599875487237, -1.1506465980729734, -0.5931209140159687, 0.0009066596896233819, 0.8988006272366036, -0.7368561086985402, -2.060685831545258, 0.5996372458926001, -2.6379391495512574, -0.15461646907210536, 0.5809320989641804, 1.2787415555120119, 0.9369918534027788, -0.6875243358298012, 1.4942643445597592, 0.2701534137189382, -1.1816059491920998, 0.33872966509087593, -0.24720917613413934, -0.3605679983284582, -0.6613196865194579, -0.41998189317162704, -1.4697058573054282, 0.8301051921559156, 0.41312510613488473, -0.3119279752724232, 0.4832898322611189, 0.07210674722777907, 0.46221378683028386, -0.37907311341065303, 1.0338668347332045, 1.827883401988348, 1.4366607957461852, 0.00961089155518196, 1.1215412005788055, -0.9367274619902408, -0.6322235536233912, -0.4955048405923246, 0.4275765566731029, -0.4174196455050283, 1.0639045161507725, 0.17385489080177374, 1.884693292443038, -0.9174412411641567, 0.28332303940663434, 0.5154356751840908, 0.4527845805518231, -1.0762757525300937, -1.179877567884639, 0.05121250188699606, -0.8370218706835116, 0.3936578615259371, 0.4760963910597331, 0.5554786252919994, 0.623642262045472, 1.1315240293178561, 0.6513772767640275, 0.9117480009446275, 2.0918988065309074, -0.18111164825082318, 0.14578447935362185, 0.7752307161020041, -0.7579177299008238, -1.4643865224645813, 0.03389748036349978, 2.120628606940419, 0.8014787143841253, -0.20745942068486495, -0.2879768579253691, -0.44376875474220623, -1.431453126891794, -0.11047101043242392, 0.24254161271823366, -1.3890767080063884, 0.3551940772843608, -0.4821841102534756, -1.7404902110705263, -0.40990083463094634, 1.8406160691146698, 1.1343291794639416, -0.8770360698657584, -1.308217262167615, -0.06936303775634156, -0.39764667123450276, 0.5769725286701373, 0.5896270638633384, 0.9362446576484363, -0.27937299969585233, -0.610273978130261, 0.3618651906707751, -1.2687776942664193, 1.0626862705466873, 0.1667616956765533, 0.8138441501785322, 1.6828432679771586, 1.49682253754663, -1.1863230769603135, -1.5117519393616556, 0.294281094993007, -0.2266617043180088, -0.41000204751825736, 0.290692491485043, 0.2610713689915173, -1.4803962625447804, -0.28203213808230204, -0.31875591594593894, -0.7579009703382211, 2.4195675460926807, 2.247768381111992, -1.2980855885884446, -0.6529880062202584, -1.1234187168399243, -0.6956208755464927, 0.18965693411991652, -0.7362169554932866, 1.7754003059642411, -1.4235677497447479, 1.2291191037431475, 0.723527014546075, -1.3435315937863141, -0.17217271634298267, 0.14983346550614027, -0.21891340206561175, -0.010486184647393863, 1.2886811180355797, 0.10616567929962695, -0.609164835229734, -2.4211016076172376, 0.9463913483379409, -1.2980770068731349, -2.686933468264052, -0.03499567459563232, -0.34422522533382366, -0.0004908173861640336, 0.6734912677572197, 0.3525723705153651, 0.26758049299320774, 1.0529967718142275, -1.0999426989251082, 0.607473797642488, -0.4324428804621579, -0.8747836211413581, -0.7615340045466905, -1.3987613199365359, 1.4760791332584298, -0.6692014546820036, 0.04206641378767387, -0.9954780884334878, -0.7367371645074806, -0.21469214077392976, 0.79863673183808, 0.5075977458329036, -1.1234803559227962, -0.11931261167544333, -0.9031732659236469, -1.5609889694409194, 0.027729684273670476, -0.0017713213496273143, -1.7998106503968425, -1.498807717939337, 0.8169615081274427, -1.225033387547948, -0.8400996437124898, -0.8235377496257132, -0.4364264295280201, -0.01520214370946306, -0.15565017655025964, 0.0711312016026537, 1.1732559505317561, 0.5421847899339702, -1.086805433546504, 0.08813241769030257, -1.3579610652989789, -0.95942170120491, 1.459939956281907, 1.0117046306174486, 1.236197607064445, -1.2847595366907714, 0.47824603981077524, 0.30763463139827374, 1.1982758403837634, -0.3864008241497015, -0.26343272683881636, -1.750741728784698, -0.7351692274922426, -1.1349702581587906, 1.587266678692178, -1.2860170377857756, -0.4801752859875242, 1.6636658079534445, -1.3553330327978614, -0.9100195679190681, -1.0672796342182451, 0.5487025003986162, -0.1791076550181655, -0.08327198475097396, -1.3750289943854572, 0.4208708674265662, 0.6401350535533352, -0.14063353058666744, 1.3736446383002492, 0.9976936151350384, 1.1041690429383328, 0.5683312485637652, -1.3367051291338052, 0.2753721538148257, -1.6017596501358158, 2.0374743389978627, 1.0455690189454758, -1.938665276478024, 1.252770550122401, 0.2561807897177513, 0.6323524439681041, 0.44731860905074394, -1.5602090121872974, 0.16086045997109896, -0.8663998447283321, -0.15184679830362122, -1.8365049505188262, -0.6194981237001738, -0.6491132407601561, -1.4279315144128575, -1.4527159141395913, -1.2860024861530703, 1.945998082166153, -0.4013256550665814, -0.23659055793172576, 1.6616248255857569, 0.9472591623961788, 0.22914631673454838, 0.4811708838672695, -2.4575219310050103, 1.3898278424498873, 0.20730337920079658, 0.8863788687809607, -0.5916662331186044, -1.4299091422968209, 0.025064490896124083, 1.8440846679363176, 1.0939727242689221, 0.7256395410256029, -0.8590688058956931, 0.33189582274019075, 0.00448664532664562, -0.6480863852455645, -0.19365121140022182, -0.769665428394861, -0.6311931076898489, -1.3627698357475697, 0.6622092567614445, 0.24357517704777013, 0.503103320093718, -0.20595689226841954, -0.13618936070901688, -0.019650584704433195, 0.7262082426269985, -0.506270084550158, -0.7099417203135552, 0.45165053042716463, 1.1300405981040555, -0.24719613566322082, 1.2071293877520475, 0.435400868244206, -0.6142313942856545, -0.2808055784619822, 1.332735503169351, -1.1560021403810814, -0.6195875521757297, 0.25810834246088477, -1.4065218105605355, -1.3610928866213383, -1.1598317103172542, -0.3269341470162602, 0.08570043587182144, -1.9223819765041372, -1.0843685493072819, -1.6036518992044688, -1.0540791458678187, 0.5783162278332646, -0.3724907451950873, 0.7280800945640448, -0.08142618606573834, -0.8401997607017293, 0.4112577930821558, 1.5228201136451585, 0.127297463548603, -1.2407599011227048, -0.8552188536617934, -1.4741717842067263, 1.2671552063447231, 1.2337003308820302, 0.2110414345000711, -0.49591180781239114, -0.7461512339849881, 0.46865565860373054, -0.29715235983531224, -0.12386177897129297, 0.505578016119112, -0.759425281130206, 1.1922469683938692, 0.7741861134374209, 0.05774506261158576, 2.127957081016315, -1.5401055327147126, -0.9942873953265658, 0.7559867086719737, -1.1410350461719765, -0.9659194892052072, 1.6982344632787765, -0.20931069081798342, 0.17013249407359873, 0.7270923030390775, 0.7204891484463551, -0.39207799039317925, -0.7155255221813551, 1.5011465291329578, 0.5459497541973576, 0.07243706212858651, -0.4803076283069569, -1.0054943042359705, -0.5237739778480014, -0.09835515549724476, 0.5775290716411025, 0.9348827174613787, -1.1210113987995936, -0.7552071013929652, -1.0007141329301783, 1.130624877307917, 0.2722502138472599, -1.7108387910528222, -1.1062867754981813, 0.5689569196095314, 1.398762352581004, -0.33899470403862797, -2.076656356422838, -1.0004947044013306, -0.06246586753421959, 0.3367745011191109, 1.202712320404443, 0.12986086111190515, 0.47863453049805044, -0.5301057190296372, 1.1951555259879219, 1.0407276314629512, -0.6060289812671181, -0.45188168827767916, 1.1672764414566084, -0.7601267361673396, -0.16562850009431018, -0.43860049222365943, 0.19265871886562935, 0.3369896727544974, 1.0727046962527615, 0.35280285161085073, -0.7944425795053791, 0.4195206213331096, -1.2168293697790002, -0.6443114053235841, -0.525365919337175, -0.9060734662625927, 1.1385254001814025, -0.889916275322328, 0.5268352654420474, -0.009977679759738923, -0.7448851196209746, -0.44666312777814293, -0.11724072209427554, -0.9165098978210413, 0.40637929060102135, -0.6093457976035641, -0.20545838480263884, -0.8249002512298813, -0.8187706458007767, 0.4689683976066863, 0.465846208938873, -0.5387718100480267, 0.29854415380834715, -1.3665663590081276, 0.6177965287355739, -0.21396707680556573, -1.7406726509793795, -0.9472077744730275, 1.2519402070664514, -1.500777460440331, 1.8997820918004282, -0.9743457775230356, 0.3295729377044873, 0.7301012356968105, -1.2391980530651758, 0.9236351835845457, 0.6089290100942146, -0.12102325767564293, 1.3403384783597367, -0.10824453003093894, -0.7827461172580052, 0.8781962552006474, 0.034791693460034315, 1.4473751097143777, 1.203987441260602, -0.6198007001117833, 1.301362501195787, 0.30216625220261106, -0.39889697987982026, 1.4638160519035035, 1.4441827711806823, 0.5084134433716269, -0.6532108007553509, 0.1035243161974872, 0.3054072741705922, -0.34435155003796397, -1.0278570477914484, -0.12173258785663424, 0.5950528675438397, -0.9207821659942775, 0.7261815748689618, 0.7245355697839364, 0.7604354547177733, -0.5960613431486281, -0.12501859797022763, 0.4557109402631586, -0.4506714771692287, 0.11847291756872175, 0.39464486011730787, 1.0377336775259156, -0.7663128158804938, 1.222002486711219, -2.508898843182651, -0.5222022711446821, 1.5139575345025822, -0.36009115973957706, -0.49699571473838994, -0.7320998923855627, 0.001340784350614637, 2.287441638998896, 2.6831380407821084, 0.9455827325947566, -0.6608925110148092, -0.5298256491030603, 0.45598613407332417, 0.9056367098865701, 0.3468095182692027, -0.41128275516824825, -1.9946284216093966, 1.3045604895745035, -0.31854406317287715, 0.5219610405531087, -0.6641421031054549, -0.8688348040549531, -1.4043267718460093, 0.30435888123608246, 1.7846564254581045, -0.9673767387337057, -0.2252780643800041, -0.05837566001580252, 0.4291753233203228, 0.5442117526259592, 1.694634248553822, 1.2354760527115538, 0.7959395609646354, -0.8911113251956342, 0.3981107862143589, -0.6038191850464151, 1.410835808709077, -2.11493035968152, 0.06393518361722653, -0.029139117833403446, -1.0055963360448883, -0.7926601642106428, -0.9735425062205508, 0.4554630839524932, -1.2992896271871042, 0.17829226436911383, 1.5977020899206693, 0.5447850111120647, 0.17559902453769902, -1.4737831888237733, -1.0419185868083787, -0.6982628146742288, 0.2928989175106737, -0.8214315460621029, 1.0127275799116227, 2.540754369404317, 0.12669952550269392, -1.1844739993372275, 0.04189705377801499, 0.19439551671935018, 1.4521501913227826, 0.9787682718988012, -0.10502618788525488, -1.545636873356207, 0.41955502862273386, 1.6344397845287502, -0.6996137533248805, 0.7734222385388448, 0.7646349717820928, 0.36213834223499025, -1.2242281615824748, 0.2849485575478564, 0.34587641407530284, -0.7695467082668787, -1.878968801793851, 0.6439945266787103, 0.39401855978146333, -1.846270591936921, 0.8119840231832707, 0.4632560672239587, 0.8872512984658244, -0.6531242638897106, 0.8234509000335084, -0.8470430861883507, 0.7043960474728573, 0.16029656369225695, -0.9199716837319385, 1.7516428594841185, 1.53571695111567, -0.5923963974647823, -0.09421724289639898, 0.6951583529670979, -0.9029293377217025, -0.5403629622028528, 0.6026873450172656, -0.8904457098799401, -0.18153071461918635, -0.7683616776084702, -0.7723477433968918, -1.1385745044486548, 1.2990481267032234, 0.6920712069054653, 0.13819751107759315, -1.6994515863979083, -1.6867607272487752, 0.11386912747556614, -1.4741086101976333, -0.4084554473716878, 1.2611098853442282, -0.29302661250863893, -2.0886778227205594, 1.461016480023341, 0.42560541758942194, 0.6191588554531684, -0.5985193479741547, -0.47737501108118235, -1.34361075336494, 0.44109611654147907, -1.1504741483205345, 0.12452161850318348, -0.26145501283663203, 1.0737929954280732, -0.3919359249696162, 0.7833381602627896, 0.4920754113025742, 0.7181988996772725, -1.2868290476443027, -0.5794523266184156, 2.077603848983364, -0.6799665641060869, 1.189260513704343, 0.20931239869905546, -2.3009614984683644, -0.4660635928974643, -0.0830634473482318, -0.6258324519513977, -0.37209211976632794, -1.4939045852147155, 0.8393277068222, -0.19085594755902638, 0.6591988409228787, 1.2272709847028767, 0.06978447405544162, -0.12326350295229303, 0.4001647745043678, 1.8718755909371418, -0.6642196576581617, -1.177488097714965, -0.2921906301066324, 0.35352988537757307, 0.6046877389175205, -0.46544921540870143, 1.3311200985616656, -0.3326058332617738, -0.33093067100049683, 0.8306989177074579, -1.1200409825086644, 0.8296377545936948, 1.62299765872056, -0.8169754874480261, -0.24116708825317848, -0.47162079773443777, -1.8381312799299088, -0.4816987181224384, 1.4153255218561738, 0.5404300549763246, 1.134165955447205, 0.36168092874820507, -1.0277579618997654, 0.05064223484110245, 1.2814696296764614, -1.3027980677359505, -0.7545827594608056, 2.355379772816784, 2.04718791252273, -1.759834086257933, 0.8184067330416113, -0.562184039487719, -1.0738447527439543, 1.0973524489753268, 1.9618314891849296, 0.5705572269774465, 0.046663848882222324, 0.6489189020968069, 1.0612872544961902, 0.10979465007800482, -0.08424919865351914, -0.046667928646890046, 0.01001877915514528, 0.5755430190021412, 0.39333359256220896, -1.3620271852148316, 0.7432663945852148, 0.8410052507767574, 0.7560345480854492, -0.6405935855372006, -0.7185790399995472, 0.8929178346215048, 0.027651783756700472, 1.4242859506295802, 1.3972167882558741, 0.49132298190860557, 1.2099518385773633, -1.1213635437310359, 1.7266262581251506, 0.6799784552405994, -0.24016735136695966, 1.4215773652232737, 0.3292899527453197, 0.13524241974414905, -0.6033204455513134, 1.2434604281943695, -1.3676515621225143, -0.29194920862061935, -0.5181588907438721, -0.8497114521365112, 0.18939885573177215, -1.405921031876885, 0.6278696550297107, -0.19610956093284193, 0.04397693978192499, 1.27214363752744, 0.4762447251944673, -1.1370577022172665, 0.3990519149808553, -0.03191869811931289, 0.11133077808104638, -1.3445513835383933, -0.6573925555742512, -1.8568976733896805, 0.4153648416666165, 1.1666478841476853, -0.46112981399687764, 0.9535530862878486, 0.3473471655658854, -0.4161422881398393, -0.36198900956783775, -0.6339438086298942, -1.3944739484632676, -0.20387130619003158, -1.2701487841608123, 0.8796180040454592, 1.788948584745946, -1.1631704471876354, -1.961477519039208, 0.06590179873448668, -0.41614806490650597, -0.266000444569746, 0.1643712657991143, 0.38488576234322136, 0.2840733616903701, -1.0787563446019552, 1.1302339241072494, 0.7397220744929801, 0.10555634094791072, 1.5575703663389617, 1.4916593464656478, -0.1350848011563506, -0.5955564946507164, -0.9779825570939976, 1.4575816264107626, -0.5635566812842832, -0.13730254477957476, 3.1760359675054914, 1.5468541517541319, 0.6712301995907592, -0.3010794489170866, 2.375386241376686, 0.39676442311673654, -1.2083016255148442, -0.08960307423878197, 0.3356703315379674, -0.298976814312964, -1.7665651290994233, -1.092767255651449, 1.3975407829596296, 1.141874801312204, -0.9828236038024252, 3.4474956927651337, -1.0339825534946439, -0.22625665352238514, -0.5013121080507481, -1.8800871143889077, -0.8372845710288846, -1.10244612265024, -0.3821121209536119, 0.08810124426666355, -0.6071774956226643, -0.15564993281113088, 1.022293595012591, 0.9689358555384477, -2.5957409768073245, -0.42027115973485385, -0.0461425798346585, 1.9376580364864786, 1.3588702019634644, 0.3263146874682954, 1.581370038498723, 0.7910848434880573, -2.460697055036825, 0.6447035193294413, -0.24547841579497692, -0.07769395725697413, -1.1061309579704512, 0.49835521087482404, 0.28668491714510613, -1.2325612333443072, -0.6448462257352514, 0.6067798642374093, -0.8354277456713564, -0.130333521585836, -0.9088480640459227, 1.3638181337811686, 1.3142064281473396, 0.2849199073658345, 0.592125761379138, 0.5012574226736635, 0.5318564513368325, -1.2555614763203795, -0.2193018045216694, -0.8128170056509231, 0.2508398220742027, -1.892210580413274, -1.2602630407674884, 0.0009566262638368953, 0.8443361157461801, 1.0745886240915608, 0.8806279132304711, 1.3774160713468802, -0.19850197254674795, 1.2234601520436406, 0.5881989810255106, -0.4965304502203755, -0.9766777894153844, -0.21817961411038742, 1.419239328081392, -1.6703766117775312, 0.41191565756029835, 0.5099444391903665, -1.4309207608869086, -0.015024811232282593, 1.9220050485455538, 0.8175509219535936, 0.08115843671613096, 0.00670673012745847, 0.4372668690607546, 0.17009166575934964, 0.9482553703319297, -0.2773813968150354, -1.6498126033020835, 0.11117370308283465, 2.0511476913856406, 0.4372657274738833, -0.7946302231549325, 0.07669974844112153, 1.260664230909938, -1.5213565790072734, -0.26684094546500337, -1.781805734225342, 1.3731126700876528, -0.5693906145441722, -0.7467107303747241, 0.30046251963870085, 0.5421086409579616, 0.8194948647249047, 0.553142239737994, 2.485647389509429, 2.047571834848655, 1.0547915487532276, -0.8404839317066655, -0.836914713668649, 1.2478277285342685, -0.9398734941624577, 1.3858886068530871, 0.6584361564011335, -0.32532143347778014, 0.1671936246779602, 0.6090123241409612, -1.0924306659919145, 0.8248616990025323, 0.40239815358228387, -1.3215398823928493, -0.3695707657351879, -0.4677903230735593, -1.4563234165763541, 0.2465317823851017, -1.507844840921064, -0.11213116060164738, 0.8182082579799453, 0.2257379259786798, 0.5232663992732692, 0.3677500720568211, 0.0890331713821522, 1.0175234856545008, -0.5316019239972422, 0.008273393570788342, -0.5142557769956214, 1.3236020557952743, 1.1683267443828442, -1.326046400550978, -0.877558359633544, -1.2811663730152782, -0.007179640854720999, -0.1558221865207312, 0.5717555419933172, 1.400174656314241, 0.5405546279191125, -0.6066094336440838, 0.3074008062852501, -0.7266655582548127, 1.0200651816876847, -0.9169096044014198, -0.005352229277594311, 0.9229483990313, -0.5050805874169455, -0.7830498896948143, -1.201873278369289, 0.6032417486934556, -1.1946344297396054, 0.2240479886640547, -1.332033491041734, 0.3621050864222061, -0.7508280591488423, -0.6990041625840486, -0.3589843137912688, -1.1294768284497914, 0.08522935573665827, -0.8932238012324163, 1.4598549115209354, -1.4447712869600169, 1.161056885783272, -1.3625301397704557, -0.035297958124361, -0.33008069949103136, 0.5239932036193977, -0.9535748485371196, -1.4160404491189216, -1.2653282493985, 0.9528088241690057, 1.8950184827415795, 0.536660694982275, 1.0358009972485072, 0.33684764607473267, -0.03807672876925321, -1.023646734531218, 0.40397027552612724, -1.3087493812000008, 0.48272717104738166, -0.9539524744639091, 0.6839967409804478, 0.6443820369253852, 0.31683998325190177, -0.13585198410986143, -0.46836797703096, -1.1069337244040973, 1.2699629292559889, -0.7617963846193975, 1.4541756482189356, 1.4282755674874026, -0.1861092734243662, -1.6655794153163535, -0.9018831271999473, -1.037689638483834, 0.8498409192473517, -0.07982833124499089, -1.2088906569879048, 1.9388046452293908, -0.6512630617583657, 1.1866504013111483, -0.33869047227217647, -0.4062584258255965, -0.13047088702582313, -0.2920609026154828, -1.5721710704372442, -0.7529385991063793, -0.4409489430185798, 0.6573725024011854, 0.9779867268215527, -1.1338038691333352, -0.03676275814229943, -1.3700180959347181, 0.4980096428874349, -1.8841567320644628, -0.36671037716186844, -0.33102623775307954, 0.44082885192374405, 1.613113523011985, 0.23245328885846092, -1.936031194784913, -0.6863173758499714, -1.403980406004003, 0.5048363560164861, 0.2836464927146788, -0.10581740020796536, -0.6422446354858306, 0.03847861193968079, -1.6367117659354635, 0.7105602568018861, 1.9161683660322844, 1.1010957888549868, -0.12160407112688297, 1.4925214870472732, 0.3264326568315127, 0.1233803144398878, 0.046322463990348964, 0.7961360452240189, 0.2452347016349107, -0.48943896240142126, -0.9290930154151816, 1.3257611388643007, -1.2121987546438076, -0.4675832048242394, -1.408413616302921, 1.681812863852406, -1.4107609501193221, 0.9608162613161545, 1.3382523033803306, -1.142429334719264, 0.3068199062637968, -1.373229118623735, 0.7359602107842439, -0.08027367417510534, 0.5703393562713633, 0.8224893358060019, -1.2675332626508233, 0.09157528929486593, -0.6239271870188987, -1.333424030987914, 1.542228511553581, -0.8290994826950859, 1.6002179297200447, -0.7290687216113811, 0.9827490621042851, -1.016128789591686, 1.1178052087911723, -0.11201905921608454, 1.545158085939111, -1.201782983516858, 0.2987368142749938, -0.013881908859372263, -1.4662280689414051, 1.195364231090116, -1.0207840815730405, 0.6038293322962383, 0.6920833223124919, 0.48928276635174567, -0.20719681719458505, 1.0528037049861176, 1.340110048415235, 1.0572972351619618, -0.7972871839181324, -1.445715944658206, 0.249550573252273, 1.7425897413780096, -0.6146482994249365, 0.3414417673370007, 0.5211686346384714, -0.4720635039991762, -1.6866627876101177, -0.41908164540912235, 0.9350268770492959, 0.2628866171785153, -1.4272699417780046, -1.5176019318982594, -0.5045820104317634, 2.3669803699198972, 0.04468306472425897, -0.8506586820583893, 0.5357032817625664, -0.7504240210817026, 1.2244644861038698, 0.32030678738297486, 1.9346717432885199, 1.8091618397708604, 0.7016264290342246, -0.7543230939085693, 0.3718249353749545, -0.39747629739679413, 0.1755020796040547, 1.7617259402782062, -0.6484224375517338, 0.5942375319267897, 0.5412303781268201, 1.3148250600931315, -0.4591000552529005, -0.5181152695539641, 1.0888867653411374, -0.4218577232399481, -0.03314875902158776, -0.45525424561822153, 0.6620103621803525, -0.4828556213675988, 1.0197136724339582, 0.8136601745512939, -1.7574981376543641, 0.5152733116422641, 1.7275770946339244, -0.6596098468939191, 0.8691431128119826, -0.5019581461983088, 0.1369233115111857, 1.2132056318163653, -0.07648699416462335, 1.6772557940687784, 0.926974844165011, -0.039740256852109336, -1.6422093576684975, 1.472165824690626, -0.5312294981487146, 0.5660281554370863, 0.9002601404675714, -0.5193311511183563, -1.4261107490492029, 0.7193849792885922, -0.8161020873770328, 1.3926227501034782, -0.10765873957312352, -1.750080716659231, -1.2315289364819961, 1.5271676147265836, -1.3692385165909204, -1.2665210758120529, 0.5835547255432384, 1.5267142534760538, 0.4735793365879849, 0.2713271999760396, 0.8293178842537923, -0.3678275742008581, -0.5196865213591367, 1.2467715006725173, 0.36881071704357293, -0.013146295073653665, -0.3910850558251935, -0.4717852822314755, 1.058925836769312, 1.2611027845782836, -1.2125355152651964, -1.6680040155978901, 0.11644777354668061, -0.6098586620173682, 1.4767717300094048, 0.0954623781181105, 1.107261067809891, 0.5332249726108867, 2.027865524163214, 0.5776330966220249, -0.1584788333976485, 0.6221202243471828, 0.822805243465044, 1.875280493218953, 1.0643032788775597, -0.0032231663149655688, -0.783876097094789, -1.0049561715754778, -0.09434442862031094, 1.159075456642561, -1.7015354910808584, 0.43626266846062023, 0.4657480592549505, -2.3595114280610967, 0.432788235995093, 1.1432761980922856, -1.2312064629781365, 0.47490063643075286, -0.28730531011989763, -0.26041490757239677, -2.1502487223253324, 2.002776378754567, -0.6572916671523635, -0.6468504633660788, 0.22368175843112467, -0.7056222632601199, -0.10902101632296987, -0.12191577116310535, 0.2333724929750161, 1.5718955134357182, -0.5232145959705184, 0.6697172441294476, -0.4925971310656774, -1.1446072903750102, 0.8349991429830456, 1.0200201403878384, -0.8977027776830132, 0.18977908394646267, 1.4964190701230657, -2.6540996410436106, 0.32799163478787424, -0.8074216676664461, 2.066401169980402, 2.509721984172877, -1.2264705966483058, -0.25822269433889045, -0.4480735859571536, 1.041820098630538, -0.693824507410013, 0.8791204277882693, 0.7037151344594822, -1.9977526467992452, 0.2157094268939756, -0.8146138503383921, -0.5977126284420752, 0.19219664371439094, -0.9859202287793376, -2.3682295377243645, -1.2913932275907674, 0.22696508074722685, 1.6407744690151982, 0.0480691978209954, -0.9966208197342079, 1.11889000511201, 0.055360709785356864, 2.161209836417307, -1.3704452982024895, 0.1620107139280786, 1.6935580592037394, -1.81141037991999, 0.4953254858094202, -0.6200845763863535, -0.4030152273570181, 1.9463103138523798, -0.48212576394146445, 1.6089090600319198, -1.1366638959357926, -1.6052774277617399, -0.47813886421591933, -0.8707692499175943, -0.20229126984501603, 0.17173503092906178, 1.1047377340309825, 0.5373785703708618, -1.5876796588068274, -1.1350981303051662, -0.6537352511089607, -0.1835463801348843, 0.7426490550608933, -0.0467107787449815, 1.248118109915001, 1.5524890878524804, -2.0084680514191806, -0.8159713739539352, -2.2848088931420065, -2.372309233730456, 2.2419857626757587, -0.3816077510920729, 0.7108618513078415, 0.09216683237316162, -0.42433779835516944, -0.06629069340678465, 1.2462956506064462, 0.11891915476573794, -0.8074432428697494, 1.0942537068290124, -0.33085780821604055, -1.1030272605184115, -0.04597990324972495, -1.461390865704153, -0.6649026362109189, 0.17729372155344567, 0.7571894944422922, 0.17210568890449163, 0.42634767130989204, -0.21152758583251302, 0.8842025248865851, 0.707894179465638, 1.181293809817535, -0.5576196967532386, -0.39767440147104705, 0.6261136824601904, 0.09416680314491302, -0.9432999224955897, -0.4798733122332927, 0.4698413593912798, -0.5301112335696907, -0.6225115798235682, -0.010179517498452952, -2.4149736340373655, 1.1241415524841798, -0.7384881145759171, 1.9364675418998223, -0.959887551414178, 0.28676342719419945, 1.733477852496386, 0.47070117017904045, -0.8415052898911937, 1.48342039099686, 0.1593815740133984, -1.0466970244656812, 0.35428426550521314, -0.8714460344191897, -1.772284863316179, 0.8553434412271401, 0.6431899649395725, 2.063848597546665, 1.2107520352104826, 2.068182515581034, -0.949826787922004, 1.55283475817559, 0.18702699770560685, -0.3142644472236707, 0.18807094004824762, 0.20872088585274678, 1.4946073381353722, -0.7270727909976298, -1.4616528319169775, 0.8902512659612491, 0.8397967248644236, -0.8310381295604786, -0.8630891545947001, 0.29222682765828795, 1.4445890756559074, -1.408345197598874, 0.7729936640614463, -0.5556592512747162, 1.0996078153848807, 1.4534847934773354, -0.8589893343576649, 1.0662489588346322, -0.8131357663444699, 1.8906549668204278, -0.221189396941947, -1.0066499489098275, 0.14833291807982577, -1.6944446869650207, 1.632367328013707, 0.4020635808682617, -1.869102265647399, 0.7511051409587467, 1.42836604641047, -0.6689545864836354, 0.7132732615745503, -0.037356754428425336, -1.4955905073070523, 0.6229077094186778, 0.3002815391057095, 0.40063712375861044, 0.7079213520824291, 0.39150882760380246, -0.665277265086938, -1.4631874840764194, 1.5154278721952714, -0.39079861469985133, -0.5171161188288925, 0.47240320094667826, -0.5680617901151106, -1.0849457635502189, 0.4598612881320188, 3.1976163385397074, 1.0060936340045976, -1.4829678245607811, 0.9298775421247323, -2.348820269680322, 1.4875415958593063, -0.3178590722956541, 0.1356924010752182, 0.21621700648737333, -0.23872149766619224, -0.38611367554412396, 0.7079229883060726, -0.2936924251847691, 0.17216377194136315, -0.6251678518688363, -0.6190596403307621, 1.0103278730986882, -0.42216692790377014, -0.6083934186789268, 0.48484746551641333, 1.0506326108080541, 0.18574134153247543, 1.674110486119981, 1.6908321897138245, 1.584396674715407, -0.6716403178792367, -2.1165124622742204, -0.7575386400758898, 0.42207025179163454, 0.34281900309511515, -0.17330930073486658, -0.5185221739427627, -0.6520860152162103, 0.02880708722030125, -0.7236136907093336, -0.7012590434919239, 0.9421047560257181, -0.6079997861419684, 0.30874446046730514, -0.5762449399777807, -0.41610271882814304, 0.15862039487955654, -0.1452834786642244, 0.03226987415993391, 0.84229162019877, -0.6933696474669173, 0.33663422390191694, -1.2150580083595408, 1.0076307089633902, 2.70409271869755, 0.30995661293173044, 0.6247436756056247, 0.08195954117181646, -1.4719055966627554, 0.803042507106028, 1.3021608863661167, 0.43434043468018996, 0.7974627211294567, -0.3682221393582528, -0.06403923371006702, 0.4170350364772233, 0.9541157159307389, 0.3239859963424095, -0.2949519680069482, 0.2619100970459515, -1.6511900176435539, 0.24934133729286487, -0.4154891414125775, 0.7849763826831557, -0.7841888048100197, -1.0286045457899349, 0.6553645303577179, 0.2653791661210467, -0.028721712652565425, -0.5496375596740606, -1.3471754095333917, -1.388799522496814, 0.29599312680859097, 2.140988791886186, -1.7758304801107512, -0.8660143027878295, -0.13855549523146243, 0.7423053567212846, 0.44908973109546657, 0.5684322570795058, 0.7170502881582332, -0.972793451864786, 1.0213495345802792, 0.3588891143774135, 1.4677584224643059, -1.8483066026640207, -1.0267595764809776, 0.8461892348632205, -1.1555368611628043, 0.6290502769928877, 0.6938132809945982, -0.6257637502682993, 0.07541789139329211, -0.2366005418237537, -0.35370856166896436, -0.807010114883981, 0.2605821179006874, 0.2423808558861513, -0.20913684813592306, 1.445612205825981, -0.16339120814322525, -0.28685192204171245, 1.6172348405102026, -0.24636947592105027, 1.6507389021911445, -0.9150073073042401, -1.4463083092451903, 1.8450467799321841, 1.6902670347280917, -1.8878093325127658, -0.28001777607518696, 2.0152721910595703, -0.3554080437826893, 0.3410600781005436, 0.3080846247560111, 0.4956327203352371, 0.23813604752289289, -2.862730990973833, 0.12978190732109626, -1.5902014047218211, 1.12682412380246, -1.5041496090466209, -0.10651038985747713, -1.335463053243616, 1.4022116059874739, -0.18269475995297718, -1.3404214162908434, -0.2438165410162293, 2.336027669010424, -0.8025341000321401, -0.07983117172640133, 0.9264513733160266, -1.4369204429877465, 0.658716342473419, -0.7939169687464911, -0.408484607372628, 1.081321363447789, -0.8278147672247551, 1.508807177607114, 0.5697618899554041, -0.5433190954101608, -0.34444959772498385, 1.4917081663181815, -1.6364404568511535, 1.088677730777631, -0.07743011620298457, 0.12679064943416948, -0.8422775912109417, 0.5204410421666292, 0.07816241030036447, -0.743203277087611, -0.2490679239134021, 0.296537366216279, -0.5802577510870809, -0.9727316982881665, -0.35347806043290736, -0.8964204184288705, 0.3118694011837782, 0.4272160752827559, -1.119951155966275, 0.8907214317482947, -0.6475131446929849, -0.8840313111682832, -0.7344446459241352, 0.23897405779048442, 1.5813119435145027, 0.571609333114801, 0.5054648516804614, -1.8867586637765072, -0.46210018982909373, 0.9548065220526738, -0.4770321781666495, 0.4675422030146951, -0.4463001426607724, -0.268935060413408, -0.4021684274370984, 2.1224401502693415, -0.5308353724645087, 0.2305268915721791, 0.1608750017124351, -0.900197705620758, 0.3127318821569574, 2.4681068345281907, -0.8490049971049308, 0.43895749888939467, 0.5864069300955381, 1.478184862839466, 0.6057649340496221, 0.866511884032407, 0.3839558739092927, 0.09528931157394888, -0.4023438236960017, -0.4953367269783747, -0.9411870219959466, 0.1449619784129578, -1.1659336494666324, -0.7043483767241477, 1.2177044932260268, -0.8968784595700237, -2.0180274699762313, 0.5569746847793453, 0.38572633069031625, -0.24109338697797905, 0.4264092604031469, -0.9226064296533822, -0.9777483292652849, -1.8614061954392773, -0.07181480501491022, -0.33916355744140897, -0.4913319447167086, 0.7409940265311785, 0.8195938255125932, 1.8760662842613385, -0.08022928270577098, -0.3617902098106558, 0.8773618510991119, -0.3026417513931259, 1.0746072114312424, 0.8949816226916981, -0.6064010457787304, 0.6104271933326174, -0.29251836991064384, -1.235928055595834, 1.1821055005631875, -0.2897775819027704, 0.6479427567431872, -1.7256511687931952, 0.2379834287461269, -0.6421838621896824, -0.3313666238103324, 0.11015187322020059, -1.1738282480311948, -0.6801063289945823, 1.0727263376369174, -0.12789818738063033, 1.1781691723419236, -0.7686061607983937, -0.6393035105594692, 0.9243691012328462, -0.7504431079196243, 0.8671446299467845, -0.698898758742007, -1.4195690799131522, 0.21204181061562222, 0.4516990863796165, -0.5488202376298091, 1.1769716081503954, -0.47339514182184983, -0.6706243964684786, -0.9391275890746287, -1.66916461604128, -0.32069248128125416, -0.9339415936059193, 1.6891904534141162, 0.448704117525186, -0.6576455996483718, -0.8787818682467556, 1.7783275330439052, 0.9849951430194023, -0.948815962845082, 0.04360439333359939, 1.1754643008394154, 0.4176607904866504, -0.032791860424978336, 1.6637836123504004, -0.6318610716818912, 0.4631965911323548, 0.7240844437060513, 0.42507353110252416, 2.223789705043405, -0.624587572177733, -1.3259578694687586, 1.821890903560027, 0.18282418791198085, 1.0718527529100068, -1.390080439023078, -0.7032982984900227, 0.606806535748979, 0.9807379610674246, -1.301799608995058, -1.2210833218836539, 0.8485594404128306, 0.9129734868959687, -1.609303253469617, -1.8896306217640972, -1.2745280345294823, -1.4589951124432525, 0.17397451011234072, -0.09849861993514802, 0.5213927711113006, 0.4464567604000436, 1.7658010428921032, -0.17334884721929977, -1.630863443675375, 0.10883356045207511, 0.9209592920512764, 2.506643391838216, 0.25920697127003867, -1.000610995686859, 1.2069309607629284, -0.8420265795888455, -0.5219090322847073, 1.0528496388391924, 3.4052517316861657, 0.3939521074267198, -1.2280870462459705, 0.7021465907786252, -0.848269051241505, 1.8523087243586671, 1.8942511988856663, -0.7324609521575315, -0.7405519451390545, 0.7825799663791051, -1.0570473532938447, 1.0071272154577544, 0.008367224499531539, -0.9832761022039055, 0.4619748421824861, 0.6054527978627932, -0.8069427471635754, 0.7695845202396114, 0.7255817354960545, -2.076356254004693, -1.866170928563386, 2.4960999423984482, 1.7821255702296483, 0.3249685672047233, 1.0516193586445621, 1.6029894061563263, 0.7111190742818572, -0.7186297277267051, 0.8266707092330077, -0.8172819525228391, 0.6694591532307673, 0.3170694850496892, -0.9984287239140569, -0.6246604296669839, 2.2772797990691647, 0.7458811584103926, -0.26479485589503565, 0.8890929266772621, 2.605058213283425, -0.4494919815199539, 0.2625572138302102, -1.4742411434507334, 0.6119113473927877, 1.3070889916855144, -0.44956874651117795, -0.5715779960963441, -0.8602100327750805, 0.10606974809893534, 1.6568916173993327, 0.6885256728955403, -0.2948202171449642, 1.5696072864217565, 0.899476846965225, -1.1070943362639738, 1.8975968381884851, -1.1062908985717914, 0.09202643450386803, 0.5179032468570114, 0.19738682741687985, 0.7832918030824878, -0.4175503084970734, 0.04748961117866384, -1.1431032202175238, -0.7876280793719912, -0.1670293961990677, -1.042531579871164, 1.4250241437929307, -0.5065603208361397, -0.05190576930487508, -0.9440633915033274, 0.5697559112545517, -0.19152297948200578, 0.014168618743096923, -0.7723577262137622, 1.0555673924267797, -0.3191246615023448, 0.10177303682522976, 0.2576454260927928, 0.09993013315995518, 2.4408592434196965, -0.1674045631751715, -2.5321239122945287, 0.5150701229891861, 0.8728012372431501, 0.1605968107424527, -0.13722954472953605, -0.13443581273542884, 0.24838805492190696, 0.9494869845586946, -0.8053048546223888, -0.4416437044439307, -0.5932230289976798, -2.0643157683856, -0.7809729727827792, 0.28847229101563315, 1.2875393651128213, 0.030979117600469074, -0.16633856709516748, 1.5324980852375782, -0.6468105502000671, 0.0373559919191076, 0.769892531358705, 0.42397577027479655, -0.139645087546484, -0.9427058228766325, -0.14560303293072532, 0.15531221334147638, 0.7867393096524915, -0.5932212618722055, 0.4862407608854612, -0.07780553709972224, 1.0490144034143574, -2.161361822163266, -0.2791053970836441, 0.2634627733105601, -1.5107411614291475, -0.5446415556288037, -1.2216533790784645, 1.497988454976838, -1.1092367045073637, -1.618664478117834, 0.9157906679850603, -0.2176025539922073, -1.8489698667637202, 0.3129035109422391, -1.5506214471694328, 0.23996231659805162, 0.43382470243213683, -1.2975465623015716, 0.3447086045230242, -0.5029629441562755, -1.0515292011570208, 0.4342286760696506, -0.13944564531024706, -0.3016669085440337, 0.2091053252025545, -0.2220062149826033, 2.2529183253773697, 0.09380606672705916, -1.3762881219090572, -1.0798033214501017, -0.030459679752091188, 1.0462656041957057, -0.5166066202685516, 1.099907646476609, -0.44810406970440003, -0.11226405829821795, 0.03079777593049583, -0.5730941391354524, -1.5304535066575236, -1.6366657813941712, -0.3672873484804794, 0.995515961126187, 0.09560804918091349, 0.367469145902725, 0.1649134830430658, 1.9434979202863867, 1.6446573868197591, 0.11229000519845835, 0.1176439522089831, -0.08402038714892086, 0.7274091035559674, -0.1815847476714992, -0.869284801742413, -0.8618126688825368, -0.9255303897325509, 0.675291066744399, -0.45590558967109956, -1.3881643437611735, 0.046983698579071434, -2.2593684559557246, -1.0714842437075964, -0.7980109810319539, 0.9376060820449048, 1.5088601684612821, 1.1401676515714214, -0.10893182605495363, -0.6793666542903476, 1.9224975768533579, -1.919045525488347, 0.5940059593484025, -0.07491402130843892, -1.2833894894614397, -0.012251254567757242, 1.0424262856623745, -1.4615127877407137, 1.5618547104206084, 1.3870856731187504, 0.6794906080144418, 0.6597456051505508, 1.1809752738189252, 0.6289022860101765, -0.6311541134061391, 1.2430525196600999, -0.1258884709654688, 0.03676529016321239, -0.15638601277079034, -1.9962862794970841, -1.0631859015069938, 0.3954333505187698, 1.305130180708799, -0.6198793866416389, -0.3671423775673435, -0.05091349499804217, 0.19572546628132184, 0.481387386454465, 0.18766811525805024, 0.4204577595863723, 0.31278547680895696, 2.260226631338183, -0.44163717594473184, 1.7281834262032811, 1.6610908786986758, -1.2346970008334854, 1.7791989418010552, -0.6921188907852247, 0.41412723052308587, 0.013963859727831377, 1.2495146354884694, 0.9217529559230451, -0.6408643293198005, -0.3656165913939135, 1.6408969472159909, 0.46769590500613, 1.2942189441837226, -2.4715771243751226, 0.4617271801485095, -1.3054611274711465, -0.6148341510806443, 0.5230236705061742, 0.1948581130574186, -0.8314871492327359, -0.23483236113230144, -1.3665590045394855, -0.14329578244546745, -1.807462368498706, 0.23801683948070443, -0.28981493648460016, -1.4362173161200273, 1.5602518232258726, 0.08045279279873387, 1.249783890153001, 0.026976636733625492, -0.39284231136024667, -0.20541102682291998, 0.39581632483835966, -0.4271835840370606, 0.8371704017648944, 0.2635251007081735, -0.7014811604960124, 0.0874164574098187, -0.6090513936305421, 0.24235117892116984, 0.9810895192151013, 0.8051030956141957, -0.033711366761932496, -0.1405561945796084, 0.8932360765812469, -0.2781538960944018, 0.19083714569711607, 1.1680467944309245, -0.876802883170169, -2.5359882587942857, 0.15717459862331037, 0.22749278757750177, 0.04618501623459061, -0.35514842522056567, 0.8668706188030013, -0.9972708114342066, -1.9786433296694181, 0.5447603805656711, -1.29987773563286, 0.24422468441969067, -0.8780654507613918, -0.1375102757192428, 2.362709945312936, -0.5102994863283247, -2.266949913807307, 0.47287943204761507, -0.4958325728592973, 1.6089495844965989, -0.4037770686515219, 0.9353787074591674, -2.113107054187719, 1.6432896343445524, 0.6023089914246612, 0.6625981775877482, -1.1477561641710432, 1.5082843130642087, 1.2879637708344551, 0.9632684685006433, 0.276232984051142, 1.3144782369860601, 1.3209816351528552, 0.053796140071209864, -0.4016237646146306, 1.0207985074811297, 1.471863012837933, 0.8696374882353123, 1.2014866344567057, -1.8078078993421411, 1.0601815230005722, 0.2828495091475873, -0.1316931030152692, 1.9409424148662304, 0.4796806532708648, 0.30952752417150853, 0.642261212971914, 1.2972810373469248, -0.5710516304874607, 1.296428671679604, 0.1882536400549766, 0.12024192413580576, 0.7482144125451611, -0.18022449922123449, 0.5193597474251914, -0.00015134736402941756, 1.2060122914372473, 0.400987603269216, 0.5805204623048469, -1.052764847449791, -1.0899041626739954, -0.26209920904526157, -0.45158221578290686, 0.23523486252012651, -0.45909954643471435, 1.0391700460549405, -1.1768146617436632, 0.6791469709199983, 1.011174817648215, 0.411199894209508, -0.7152198360224954, -1.1980320139463696, 0.4839032883340431, -1.5745057434452947, -0.41956356832710956, 0.9839964884211916, 0.015979923325116736, 0.2762049181371265, 0.6098483704805613, 0.4862291698694014, -0.4624922500096108, 0.2846677372677902, 1.367317839020472, -0.9474871099590387, -1.756106996546998, 0.2988197956163671, 1.495739110209002, 0.9277333393877758, -0.5643132881556219, -0.1558226529617167, -0.4888512541791814, 0.3410030049413046, 0.8125696535679003, -0.14506424114808303, -0.5563759421336263, -1.413259141058041, 0.4721963640474325, -1.336800515204708, 0.15802207902328172, 0.7713401976605815, -0.8451617487867245, 0.34178117698250476, 0.6229076512220945, 1.6110932188650129, -0.7181795974169856, 0.009266781617777662, -0.5588298639233481, -0.1767614344743045, -0.9226697694236917, 0.7076376663118469, -1.5566853652081156, -0.8619329742338163, 2.051139469309425, 1.0147636236527358, 0.4182684075319435, 1.8816350118726597, -0.45231597591557254, -2.177291625468745, 0.2818036067134789, 0.3528969484018996, 0.5094505048346659, 0.9557302887303304, -0.6754668943387816, -0.02729241829228328, -0.10185537856378798, -0.4591265210119423, 1.430262537673349, 0.2931013470203736, -0.42349373411850877, 1.2895062553420336, -1.254123931164029, 0.007274426609199737, -0.6746114093338123, 0.9946171745115864, 0.2864085373632313, -1.2280764417902754, -0.52661829084419, 1.5827795236366957, 0.15024675730990028, -0.4248525421861309, -0.5691386244762248, -1.2497033166837888, 0.7243884070840325, -0.8880262098400197, 0.022565602731663952, 2.813014693165735, 0.2524261198492061, -0.5815627560037311, 0.065952148847621, -1.5839049003439432, -0.32991814907198524, 1.3189945049352763, -0.9633738886349973, -0.7205611597593764, 0.29087939445256583, 0.0057889375667351094, 0.02150375939915354, 0.5103962896847007, -0.7791629303501022, -0.1566257320081451, -0.12533254753908293, 0.3677730246474584, 0.6808297404105077, -0.006814522630420675, -1.6332734431577842, -0.31084462878259445, -0.2816212687484363, 0.8306217769227588, -1.4223291833641392, -1.1328914140136568, -1.1798315543869777, 0.25880349272739006, -1.176722232598049, -0.9138103973636641, -1.4195908701604916, -0.9995107551919223, -1.82773175657593, 0.008499718134879552, -0.3447023347644645, 1.296344926519369, -0.43328033036609237, -0.6691715014457149, 0.5815463164249131, -1.351170406870033, 0.948354175015636, -1.7460166934842984, -0.394637468929365, -0.7854270758121915, -1.7802874942339497, 1.2686458890561711, 0.8564108501854661, 0.05383532865352654, 0.6253901471648027, -2.202145401537113, -0.041531422478273954, 0.29066318209770114, -0.5115801644049819, -0.2316865971443836, 0.04820236445222125, 2.043254030499081, 0.5378888526826829, -0.6502743062505872, 0.826238085727147, -0.9541804382014959, 0.6060754235439968, -0.27474418761709474, 0.8956610419016614, -1.0996407788536786, -0.257368300223374, -1.018696411251144, 0.6579800168488112, -1.7964528440425043, -0.8570639935152126, 0.42330444919804316, -1.1285000187041665, -0.25650286505666625, 0.24632151425551105, 0.24962408033917283, -1.156431660359815, -0.2432666473105903, 1.822498098193285, 0.3177090775637023, 1.3319015834176797, 0.4571443687995678, -0.15115069978271048, -0.9271093020874797, -0.4004107535270797, 0.18837621181964065, 0.2361034586065518, -0.049667590380486994, -0.7731735216366021, 1.5079696883540965, 0.2547235818307659, 1.710880865859913, 0.25423148693344516, -0.12417094682887361, 0.14355110585703812, -0.30889227644936884, -0.19518744408626176, -0.38657348236703737, 0.5747008941265317, 0.7763218624280281, -0.7932199304382765, -0.38004377705918146, 0.5546620950055203, 0.26238802318984583, -0.567803366150921, 1.2155283753301906, 1.1841352702569934, -0.36154499394302375, 0.48355518941861697, 0.028516722473608622, -0.5872424427404682, 1.3501269652114032, -0.4684289952147731, -0.3722041294537168, 0.2884795399986682, 0.06557171746910258, 0.04187102672842283, -1.2970923134475996, -0.01629195036762023, -0.9112994229878664, 2.0590829933787136, 0.39400030768000005, -0.7975908049246164, 0.24046578837235552, 1.504682832366687, -0.8911225638653535, -0.3936854489607823, -0.6384138322177773, 0.29369615979985814, -1.1026872898279598, 0.4356763930115034, -1.4259861740067266, 1.4839827513865715, 0.16538982992587942, -1.2275565773734964, -0.6469351862385775, 0.7977508692229875, 1.965560992268791, 0.8204484828263375, -0.09569261310086963, 1.0444105776920733, 0.3981939687558286, -0.17001990885000728, 0.03191303725869083, -0.22703800554331624, 1.8139801219827336, 0.918270672574204, -1.4990654058428237, 1.2013287338621885, -0.6573210575280002, -0.3475342578604577, 0.001024958794340004, -1.3091664900629916, 1.7052265295882478, 0.4253120949833701, 1.0311326194819417, -2.329708589685058, -1.5666613380497623, -0.20129982865454085, 1.4540261677025847, -0.062796460600534, -2.3750929169938804, -0.22853438210232366, -0.9911165491373074, -0.9849697798584544, 1.0908056348553017, -0.5335895092359707, 0.7114854381779321, -1.2006864703832458, -1.402537825666173, -1.6107945297750212, -0.06522295552167409, -0.22244804258316303, -0.6353277757640107, 1.1342357318491285, 1.1802856827413442, 0.7358095889904793, 0.4322781449509412, 0.1993641699969819, 0.04402596162369398, -0.618389217305553, -0.19855173166745999, -0.5969933305425132, 1.2023959036495757, 0.10533466463098612, -1.4071046643902017, -0.30217127261876753, -0.04403547820029734, -0.2335959164195668, -1.1388382692559194, 0.7969342297703721, 0.0025006347911576314, 0.4618061956689532, 0.9316220945417517, -0.586857161879394, -0.8038099773962392, -0.561632309015, -0.7319527488671081, -2.215500214281302, 1.2095052233589756, -0.6324676669003331, 1.8213621585713746, -0.16201666001698542, 0.9771306394522535, 0.08884650272073365, 0.17119383734576185, -0.052205598859868016, 0.6308204756962924, 1.2742399221121468, -0.8729416492214658, -0.41451142025139015, 1.0896473253676273, -0.11531924092553854, -1.0449722114717626, -1.3905060397760676, 0.01745826015650065, -1.1196034509026367, 0.16835781469295008, -1.1337994252104073, 0.6707102828626799, -0.1611008305495774, 1.8891773441773552, 0.22194994994725567, -0.8221389943598081, 0.14773366666584706, 0.7482169422869621, 0.8634619143586166, -0.28955079825767266, 0.7168358822007905, -2.0710700397722674, -0.5577499923860028, 1.3594786178950642, -0.06290120845238856, -0.6203795676764393, 0.37363430210542137, -0.6009801257039329, 1.685628214162959, -2.036958121665058, -2.2425671656367667, -1.9918630409006053, -1.376958147267138, -1.8638660542434666, -0.9750244314786808, 0.9080815115907477, 0.018142080648009342, -0.9320767794783268, 0.26546536698365886, -0.7622509288960355, -1.185039046008763, 0.3997987346703504, -0.8390830626369119, 0.7664612539005661, 1.1452390705220412, -0.44118709528048106, 0.26214721724628937, -0.4951545553209257, -0.11879885987832625, 1.3282328751747563, 0.06968815002457066, -1.1182821619345513, 0.23652079790675906, 0.3692795793157511, -1.140728747827738, 0.5263061454716625, -0.5207546968661813, -1.503533271861299, 1.685912359362119, 0.034636130743337525, -0.48051165567394033, 1.0460524144567587, -1.0839349618672527, -2.1211644723131724, -1.0311758922985133, -1.2021446452680054, 0.06983434930473358, -1.5815367050307532, 1.0876986546066656, 2.0186122729964926, 1.811073181558942, 2.061655680618017, 0.8146717603062831, -1.5968498453112046, -2.0662599115172653, -0.5461790439353942, -1.293954740300037, -0.04669787176283761, 0.23146865620783758, -0.588038234461568, 0.5933124208465305, -1.0163085846469417, 0.2521752390452931, -1.2106468003843902, 1.418999037385018, 1.1108278459257963, -1.2434580142633445, -0.5105267831106245, 1.962828854249686, -1.3742391623665489, 0.36301946174407, 1.9887587169725671, -0.11568422609670699, -0.642928398294438, -0.3803110761017083, 1.4124073508805255, 0.29869224683807033, 2.0608887843113273, -1.357435592557576, -0.04818489310611712, 0.9811928870760606, -0.40967432838228596, -0.3030480871350583, 0.9136149401717509, -1.0208925536710525, -0.3505675095839659, -1.71190823631273, 0.20144681297018477, -0.7142725656031783, 0.10941276154357217, -0.010518057969719493, 0.7986018616075307, 0.4091757607417071, 1.3254764619646495, 0.37900863212459757, 0.2801496864889041, -0.4903324954119249, 1.5611921907449, 0.8801581363850509, 0.23899617476391827, 0.4941237199528515, -0.19580489922245364, 3.06700252986585, 2.075939890459903, -1.0531656839887626, -0.5746240339508544, -1.2509817722769654, -0.02930485583633999, 0.4955890468754583, -0.18287439285074464, 0.4428019418512945, -0.7067595339381431, -0.5880758813860446, 1.1741037427266254, -2.2845558148071, -0.20091142427273523, -0.9327486743061679, 0.05419468096069937, 0.5696294165103171, 0.9711793150927074, 1.5638669636681488, -1.399980051448174, 1.6694377251663244, -0.5244820252135467, -1.257281067913892, 0.2808453440838143, 0.48904471670322064, 0.6563624003164797, -2.403734256558076, 1.8072200656396853, 0.7479993507037666, 0.8957599457510734, -1.1333475754839513, 0.6052811339871745, -0.4713654733277363, -0.7018354826915972, -0.14295613102166807, -0.854329570376376, 2.600781602195285, 0.15947531968114928, -1.9492123387745222, 0.4025575201110334, 0.5377569832746467, 0.8230410704104014, 0.38678827937826166, 1.1036337112977639, 0.3934547673395094, 0.30962342705126583, 1.139829687497562, -0.6649904581148862, -1.5139589626882188, 0.5785053189296201, -0.6976263977299514, -0.48521233846001877, -0.9001322196203593, -1.660622472181582, -2.2786897073448547, -0.6396523522765016, 0.42857993052128573, -0.47159666033630393, 0.09912656547054303, -0.8978325685014887, 0.63667062531427, -0.9285968325105913, -0.41245780364313256, 0.191616368806377, 0.6617774942176655, 1.3566617676123918, 0.02766324341023624, -1.0349560837804677, 0.9570579186595424, -0.13078780011810998, -0.7995854873426, 0.7151367410023329, -0.12167714338407565, 1.6209549425055911, 0.37634955414789306, -0.6846815563905236, -0.13340769738466304, 1.62999490749593, 0.24590379716684088, 2.080737900190375, 0.4807972440746681, 1.9233090609717092, -0.7457053375145688, 1.2931674090867675, -0.5389819127967479, 1.3378716219526687, 0.46191592051764446, -0.12685025114948897, -0.564392245951514, 0.054901669351109676, 0.9390772175487241, -0.2832080542168339, -0.2454859351558673, -1.8832700802531435, -0.16505100921916624, -0.6746837003668393, -0.1357900352713401, -0.2041348043523018, -0.37391290726473403, -0.4402500408509159, -1.2290888874925296, -0.13562273551657536, -1.6500691440373887, 0.46665062174560024, -0.24566106658181208, -0.797744380603796, 0.055547484850162934, -1.7195390885648585, -0.23801758053719915, -1.3385900681264526, 1.5281883065641328, -0.7190676510974615, -0.123355719896304, 0.7764022341446827, -0.30040150524704784, -0.3686167969737519, 0.0943659621832766, -0.3974661297032506, -0.6247729926926385, -1.3907256888978008, 0.3787327798855857, -0.1261918572820217, 0.333666129561352, -0.2268078626149827, 0.35899627766440534, 0.4003040718066842, 0.04939169628599765, 1.3181095248614239, -1.0040453137475622, 1.0270565232586033, -0.10527902120387268, 1.0184000283100978, 0.37032567852749, -1.1038727471781569, 2.06240141354978, 0.0724635819839709, -0.6749483178493708, 1.3752140381174898, -0.18527094825241655, -0.49771622437764096, -1.5563678592094914, 0.30641413633727077, 0.6888572155488026, -0.7813997319688913, -0.3334732608283706, 1.2077222840020747, -0.6696185160915793, -1.7441216997483413, -0.1443175790084589, 1.2530385228003316, 0.48953706269055897, -1.1454774810030333, -0.10072099150740713, -1.4690725419140442, 0.22773646275302892, 2.1495481922715567, -1.9763318246520143, 0.3734138241025368, 0.3678799166519874, 0.24199407601003217, -0.8317998284783682, -0.6175366203935166, -1.5435990936321167, 0.15257075985667826, 0.24569789929243, 0.2973109282823203, -1.0464692699857279, 1.4335012256250086, 0.7760340274462584, 0.030779877800647056, 0.13317012902523476, -0.6096349652250187, 1.8769504574256326, 1.8165778911592796, -2.029543137642918, -0.7314038673207472, 0.16788051959333397, -1.287512490286816, -0.17978414420698238, 0.6413441803591936, -0.03816736449793848, 0.14195508782466876, -1.3077696693750356, -0.2788578604231624, -0.7927822730097527, 0.033625917152435035, 0.22077326511399206, -0.5309962861055292, -0.14874114920579462, -2.1561599667291262, 0.21857950385145597, -0.39674562813596553, -0.6172994137123726, 0.7237763615783379, -0.6628173764404989, -0.09955687084553429, 0.7661708667508003, 2.050182109550436, -1.1343231763411903, -0.394150602661191, -0.4005731600700831, -0.6133729043121271, -0.006937209118528061, 0.8746192365726885, 0.9627065829455164, -0.004195755687396656, -1.431856899763485, 1.1723324732423348, -0.7907307751741902, -1.2383233071901971, 0.4450622193871014, 0.6135856643531975, 0.41087999419331056, -0.9106010889982076, 1.537140159071271, 1.203007531467209, 0.4522478618181492, 0.06901440689355592, 0.5616178375297155, -0.913304278073554, -0.617052799856045, 0.8513556242527552, 1.6492263827929101, 0.28736119321050707, 0.143060129811001, 0.13159474089261292, -0.556050658038526, -0.6819127080659984, 0.2854925491407574, -0.17685951799635244, -1.5861004634732518, 0.7398075993729516, -0.13718006475583142, -1.2360195428922787, -1.800475631340105, -0.6653270917294025, -0.24529552485016695, -0.3070462119648475, 0.5209731324914566, 0.8294618413486863, -0.17019749451831728, -0.23619342552685957, 0.03462283540349657, 0.2479211831622872, 0.721589399500632, 1.1742488499645927, -0.7209553934014017, -0.5677211833764197, -0.8920108887781215, -0.2951205793197307, -0.194041077024394, 0.07201516715432071, -1.7926897922269955, 0.5269357871669345, 1.0775869197853591, 0.5356448376759921, 1.6180226180054886, 0.09591731457863975, -0.3033610094512978, 0.35200443059829245, 0.6372500799705507, -0.6470129923265721, 0.4563870076575751, 0.3086697829408736, 0.15795477733282282, -0.28995254504887596, -1.3608513191181555, -0.5174181206012595, 0.15321158202821022, -1.0735391094616389, 0.9498709387195441, -1.1791274655949502, 0.3401662792087062, -1.3746370296756663, -1.820015514626756, 0.5904282098582874, -0.7640243887629617, 1.899332176169294, 1.8001612651602614, 0.11754067768731466, 0.3451387680566698, 0.4252773778706197, 1.2930499113213374, -0.13497558680801955, 0.8295099746093358, -0.06483231029486143, -0.4626305949889216, 1.7974505990090723, 0.357954244463521, -0.9446699924851863, 1.0753715521250267, 0.6468347012501044, 0.7325172508900486, -0.8235967956477911, -1.8197269407302108, -0.7527397495032649, -1.0471331516010438, 0.954992325464375, -0.6487949930861694, 0.5412489072541421, -0.9744135424772613, 1.1668079912055098, 0.5071573516626207, -1.4971922309648993, 1.6732330041304837, 0.6658466177075605, 0.004961040538083645, 0.9766610530990674, 1.217004629489626, 2.15632219900788, 0.2992554016895504, -0.19074076031070328, -0.08513462495764972, 1.4398343939227665, 0.7531587527492296, -2.434314852616728, 0.018698508958621483, 1.530666394156561, 1.4174088220386398, 0.39311606885126577, 0.8429893215764661, 0.6889143877613391, 1.7048899457191737, 0.8279914080421767, 0.3841808718708592, 0.4345613421962533, 0.9814598643661121, 1.1001489018141712, -0.5361865265613242, 0.21775129927781378, -0.5197236573250131, -0.9476378494963715, 0.8334286814456744, -1.447030660023786, 1.6027755842182616, 1.522909575863655, 1.3672741814009857, -1.6085273302015077, -0.6841212925165058, 0.8714988428569002, -0.7180711780751314, 0.5764950939705556, -0.09035661359187494, 1.0682344096280718, 0.27136338383972597, -1.093914555087802, -0.37115833509731555, -1.2339441459427007, -0.7985138795193706, -0.07775530075881103, 0.9386977073001513, 0.3186949805078729, -1.0013479121939963, 0.2068538637260416, 0.46704881675224336, 0.0930693446845866, 0.9087490791207049, -1.1095909880643675, 0.13620180501268486, -1.2318793580686687, 2.3698156234871006, -0.41043047284201517, 0.9647930068590418, 0.7035313262086113, -0.7357611817796008, -0.33944606940905453, 0.975792856064161, -0.7580109890249522, -0.9388831491865992, 0.16631539872440593, -0.9686623661641447, 0.11101021374002976, 1.2833168243970015, 2.3501189146758734, -0.7419808119512225, 3.3177770321629443, -0.378854974046106, 1.1894959769491664, 0.5170237486499323, 1.449757482527173, -0.11005429828053218, -0.7094783265215441, 0.10745076413242229, 1.6224830274878241, 0.025460594268897623, 0.6425343157670212, -0.31898415130533375, -1.0798679506403541, 0.5735256411790288, 1.3484671879831278, 1.1276215638225833, -0.7541391904025803, -0.00765546636667677, -1.4513065159005456, 0.463408611045455, 0.056782072073773386, -0.3398650955417231, -0.3278301461019186, -0.5506101111181769, -1.838129548833068, -0.6528412434007834, -0.22203922522726993, -0.11557789598708554, -1.9693756516575391, 0.10517217800088413, -1.034395434153627, -0.08008953380065702, -3.0001454304286095, -0.7355092140807842, 1.0594616327950752, -0.4189488435377704, 0.16781086931278816, -1.9669454509751187, -0.731458954443067, 0.01711080123922268, -1.0063738446337889, 1.1320693665450008, 0.31382355603718387, 1.0723003552935109, -0.48887663896467776, 0.16351892393813683, 0.6923423498891493, -1.2674896295636169, 1.1497258936055144, -0.8608042226343801, -0.9164072583967519, -1.487718346596927, 1.4350188139062847, -0.21184761253034057, 1.3710129669800468, -1.2943315365568762, -0.19362259003418086, 0.7187438609965356, -1.4536544736540666, 1.0156800590204957, 0.5854427384212253, -0.5260200198486596, -1.1553701278196844, -0.27349200057360523, -1.2338491844820385, 1.7074643949762172, 1.8501418087438086, 0.5436111298236262, 0.4744077558142584, 0.5678560114121703, -0.7181957190268707, 1.9652881178044732, -0.6639884519602309, 0.3479450777176482, -0.7279578424760957, -0.46058272586248855, -0.4390700834752314, 1.485071764115552, 1.4888034597366457, -1.9695365549171249, 0.6506253211085398, -0.2486297625885688, -0.5519419806661555, 0.1895096241785028, -0.8790965213306376, -0.6376838625799586, -0.8514356912425605, 0.44713349005542324, 0.8885460864971125, -0.984898049801574, 1.9226056756793166, 1.151756816890297, -1.3439533152505785, -1.3828305275303805, 0.9810008154794896, 0.5550625182987955, 1.9741629526950777, 0.8414467402239644, 0.9903516449069268, 0.30384787269295527, -0.5118420624618873, 0.21568313531934488, -0.1906549073376802, 0.9872047773741, 0.043447057275043346, -1.0722974377446446, 0.30840240507887645, 1.231529689961776, 1.289961254197282, -1.415052295757837, 0.3542872190261509, 0.5064578533223967, -0.7014386812841402, -0.21695269183024965, -0.8504048338756758, 1.9671268250571596, 1.0909763189822588, 1.1465910271880095, 0.9300579839066637, 0.19877285881355367, 0.4033127688590755, -0.5693078627176211, 0.2771445813826407, -0.5910526566968882, 2.277491279753263, 0.656638231269999, 0.7966594580004646, 0.5030962029782104, 1.2239112871910003, -2.135423288869684, 0.956905678821742, -0.29364649759959877, -0.5416351205869433, 0.4524513169226536, 2.1047567102187923, 1.2144059061100803, 0.15546139261435685, 2.0078238030698636, 0.6830117763416009, 0.21062683777699748, 0.3680381824722795, -1.921358153981379, 0.8720229260359057, -2.4572973110469056, -0.6789193350439231, -3.616244826516541, 0.5200969859479287, -0.8348270288277571, -1.5574761449522962, 0.6081958963575117, 0.19058848286262964, 1.0023339789202066, -0.3112079672420133, 0.44178370023062646, -0.5048076251130126, -1.3994069725233815, -0.17955195369335797, -0.06758378480990582, 1.7922435643746273, -0.6192862077789711, -1.6310903545738005, -1.1690021151149572, -1.2093145024199112, -3.09516529226863, 0.43169942287551266, 0.06218865917825329, 0.5839211556095644, -0.7134319737419914, -0.9162521618284151, -0.3378876880640738, 1.2878146580745333, -0.15439993951522968, 0.3077351479215355, -1.7206306176358126, -0.17985102389955504, 1.14519788200572, -0.8522103401341584, -0.3963647723939556, -0.7056726337225566, -0.37501801123158296, 1.4130923511612945, 0.11630436842876272, 1.185142796653237, 0.011204445485047487, -0.20302508970364014, 0.9178670073251192, 1.129883095823573, 0.42668333759774785, -0.7693262395031812, 0.5989106795317751, -2.1834227246100535, 0.5078594213457716, 0.9932110431979975, -0.017934502044962136, 0.014618718399019298, 0.43615689634540583, 2.2660916638054056, -1.4481002752982226, 0.6458685948033749, 0.45170197162057635, -0.7387052243324294, 1.3393361998974052, 0.6185085759613994, -0.36812460265029606, 0.11464668364155528, -1.791669964880979, -0.7254503276995763, -1.0220519870845493, 0.7459004970720945, -1.240093138147424, 0.36284766593900053, 1.1310636505387424, 0.21609065407695296, 0.9901982501221922, 1.4142801306207733, -0.5075874816754351, -1.8009636793346049, 2.3589933091709563, -0.043963810041906456, -0.9225837945409925, -0.6390092243100048, 0.10006348512241166, -0.9257763652451753, -0.6194490923758899, -1.0763155593061657, -2.788511038384896, 0.37967646564114543, 1.4376287260090312, -0.22804268789046647, -0.21979058106116164, -0.18220420821816138, -0.44937185484417963, 0.5740193687324415, 0.6373983419863073, 0.5856219393424119, 0.34112426931531764, -0.6084945465256884, 0.060234739722926374, 0.7847874077044223, -0.31357045824328467, -0.4526081006714111, 1.3140655172664333, -0.6237624307170951, 0.34610293084708627, -1.0050719223251598, -0.4541508223849615, 0.10854220774737425, -0.602040653782272, 1.0547536665950978, 0.7073102150037632, -0.9555005854035606, -2.0723034039377595, 0.5893216873540514, 0.1659232479155957, -0.691145872673244, 1.8692666106818923, -0.7005044755324946, 3.406168768770632, 0.6178045437029894, 0.209522404413903, 1.11020426427447, -0.935303827291181, -0.30107511733828557, 0.0005771812107460632, 0.6289350238005109, 1.4317466616428682, -1.7337209714531534, 0.33652676986636315, 1.2353463697524734, -0.5758839644664974, 0.8285985659333751, 0.018064999514862144, -0.8583929015402073, 1.640939453974592, 0.5647216927706189, 0.019320381958476556, -1.8626818101777476, 0.35623705928968014, -1.3920535728295902, -0.04025364308925709, -2.1219812182033895, 2.2492879960896084, -2.2117506504974447, -0.7015293372430998, -1.3386346301502519, 0.45434785513478976, 0.7429073598196138, -1.3842131227703087, -0.730674268674942, 1.8189971647722083, -0.4758820769224347, 0.4409253327910705, 0.9449444726231594, 0.551630007075062, 0.5399541172046803, 0.3885563045101157, 1.524994279141021, -0.7974884472315626, -0.6568938854009293, 0.27947376218479614, -0.4955153130182802, -0.08942974231790239, 1.3102764929145028, 1.5444242142322857, 0.476164533281359, -1.5496430190473407, -1.8678225332641818, -0.05437993080264503, 0.3236472053381355, -0.36746508462131555, 0.6826304187866886, 0.5736299498569932, 0.8053111300585767, 1.7107199047271453, 0.5683041332657001, 0.697952343937172, -0.6541864315768986, 0.364406640125318, 0.39958220554572854, -0.28761598269501143, 0.6201596788722094, -0.3666201942589558, -1.4101911998665215, -0.4412538914508458, -1.6829197968369678, 0.32907480828411917, -0.24881581245959397, -2.027089220978618, 0.7282873752125394, 0.4579330597709827, 1.15745181629871, 0.3236159180652725, 0.15743561049159477, -1.4532306051766954, -0.5917126528319241, 0.754060062389077, -0.3751247341071256, -0.4967717054593357, -1.1834916327999798, 1.2936501822037318, -2.0961349093879544, 1.0842624515579264, 0.004210702344412748, 0.8784821536444274, 1.6211488910349103, 0.6098625542626688, -2.162347704092384, 0.14557157851798416, 0.1956419307017713, 0.46311517202542646, 0.2606189680155636, -0.6442854252008431, 1.2224106966606128, 0.9032792502072324, -0.5921632526896037, -0.4403250314077104, 0.09900173255653308, 1.588518953960295, 1.5514984760944803, -0.1988361913928128, 0.42122454074468846, 0.09171832221402072, -0.05232317203714638, 0.5107161167447202, 0.6648048184574585, -0.5326903183397282, -0.40375562127323683, -0.9755898265306233, 1.093816318098742, 0.8299243008006667, -1.4928026705324111, -0.6150924237870229, 0.6827457566049314, -0.1250927382677157, -0.5461042938952528, -1.9785054425068482, 0.6621698769014782, 1.6911825874334077, -0.4512292838434167, 0.31893183399956626, -0.06938245071569392, -0.8685919574091027, -1.216755898801281, 0.43218338233503684, -1.482305424213906, -0.20624326083624842, -0.0987004649563861, 0.052580690462736515, 0.15082170348420298, 1.815968946976184, -1.801525657427965, -0.35269438817590215, 0.3165612132575932, -1.1274985211458544, -1.2081895706309593, 0.8947763791232438, 0.9256072483796912, 0.1160156247366876, -0.44837495229842944, -0.2739183590275094, 1.1153679055306462, 1.3928570054101417, -0.905378910739902, 0.7753045815203952, -0.33105364449783375, -1.5667536820401184, 1.1950148433456729, 0.354165616551781, 1.7647325336720354, 0.34842243659368244, -1.1445904695784506, -0.6488915404249679, -0.154811442924692, 1.647219601375317, 0.12852481855920034, 0.004310308986859974, -0.876142611650797, -1.1969960098569172, 2.505246673635534, -0.01839259972989579, -0.42338324819041095, 1.7006327293948955, -0.23835669566472859, -1.0830569238314645, -0.5058031215088832, 1.1137754394535067, -0.37799051437745823, 0.4689867373861166, 0.8846331641907219, -0.862827297911899, -0.02378812527403701, 0.7260021867969293, 1.1597883185839557, -0.23469208225352878, 2.113734390813324, -0.43787079759759806, 0.40094481205354565, -0.440940747042338, -0.11638255103314456, -0.5976246285724223, 0.10949744083274207, -1.213522552035225, -0.2801704266168622, -0.23088144999338397, 0.8531392120125499, -0.5131891025804275, 1.2147647043866772, 0.2396978620703071, -0.6513123608903771, 1.1189830026785335, -0.329502482141717, -0.4408963005006592, 1.7621110917013203, 0.37263249289836775, -0.4859330788946545, -0.6067042421983502, -0.652281974301976, 0.9767244079433385, 0.6586845642819952, -0.046623060723555695, -2.1849581690080555, 1.0767435169705282, 0.12722050362405046, 0.9986033617806298, 0.3243622406515602, 0.3488571494425995, -0.28194417652034437, -0.5174529713073618, -1.1589669416210095, -0.6257925557519216, 0.7845203905386896, -0.34496828558498516, -0.55392401828593, 0.21742125464736634, 0.1940339202350278, 0.5181013615346238, 0.6838608318277294, 0.0963437586410137, 0.16605883874954933, -0.8192859105507256, 0.3425249914970222, 1.206963641510476, 1.2072370620006596, -0.09132107400635489, -0.4915708710890753, 0.4788544238385019, -0.8129680193587631, -0.3597416459932602, -0.001935251987053423, -0.5173249508895911, -0.3901095063695634, -1.8048261251158957, 1.0191412836502698, -0.15735909472717494, 0.3259968219452401, 0.2983002122558138, -0.2865809153674455, 1.17563374798573, 0.9503886873331864, -0.017150838121724413, -1.5498598643101793, 2.568724923652603, -0.08029464734292162, 0.7019319162248578, -0.3680243157771866, -1.526918066370356, -1.5059053494163779, -1.509751062694838, 0.707105319149386, 0.3759576560377138, 0.6475726058839647, 1.338795258808114, 1.8598847911090388, -0.05763592033876413, -0.8688135009341061, 0.019960962804798733, 1.7401095555504877, -0.6280597716378297, 0.3473435634019159, -0.4462968771961304, 1.5433942416056965, 1.2587933112859289, -2.78079601104039, -0.47512302722136024, -0.065984099161594, 0.6888533485394165, 1.2305141892155638, -0.6518789292799052, 1.6086260544405733, 0.29196792037545233, 1.527761638614743, 1.6303894518830946, 0.15132243302789938, 0.7682912494990076, -2.7992162064438526, 0.252765632632188, -0.18536494230320436, 0.1286412370033291, 0.7444904216395526, 1.1101965867010084, 0.09583878264956507, 0.20541837056183218, -0.43900022720898685, 1.8446971502738685, 1.525269777862721, 0.34107287068465036, 1.370225466799814, 0.8993074950529176, 0.388987193739956, -0.41615197068085047, 1.6959480854121158, 0.6560019605281613, -0.059249535360658356, 0.3641096108993, -0.37088956582253585, -0.7118422460610452, -0.4547337947749852, 1.6833283452032104, -1.6932063886335549, 0.33007518208148007, -0.9793326842802514, -0.5685406484500056, -0.6764406676203423, 0.27223581970527805, 2.6210019152932134, -0.09677977060333055, -0.42338854207086507, 0.46197386760890474, 0.3011535518111016, 0.3182607957611916, 1.1190392605031392, 0.10747571439392618, 1.3205623217552738, -0.869982416258327, -0.3050369611353702, 0.3649867693439435, 0.7208855533271251, 2.45889669000764, -1.6481274773858574, -1.624333610347512, 0.5392519410260627, 1.1694640247181916, -1.4936888563147976, 0.22169790172897152, 2.47683597304532, 0.8476731372760178, -0.08882181771534245, 1.575370258034113, -0.4650474770641444, -0.301534039019897, 0.7151072657003036, -0.5139154643660516, -0.8973214534592038, 1.353278291959696, -0.785705814458699, -1.424798288107138, 0.8521605677636602, 1.1173074404160004, 1.1078334261149487, 0.5060403800263849, -0.7559434902011402, -1.7506912234691885, 1.6010916611258923, 1.1400621104262982, -0.9490178938632181, 0.08236269987589594, 1.1360090499605335, -0.6822008865400492, 1.2299082010225988, 0.5747472954848997, -0.9917405164498511, 0.7860707096819252, 2.094613031828752, 0.32476024918516005, -1.542485498562725, 0.19154241112008105, 0.30669357584478807, 0.37562510410149125, -1.0038556934540235, 0.17700385429720378, 0.3866792602527052, -0.048846256996197955, 1.0608228443140864, -0.3012251999336654, 1.2156737659864476, 0.04936433736528017, 0.3300941747271548, 0.13579425531133751, 2.0300902584395386, -0.3659348731125605, 0.5084747076597527, -1.214555459415656, 0.23882541455141687, -0.7048446726313435, -1.1718879290253827, 0.10611992491921178, 1.474365496672677, -0.7345685181989616, -0.36082108102321997, 0.9999061228905383, 0.8174526543777195, -0.012197041307958149, -1.7718376142638643, 0.5003281667388737, -1.4235098831155986, 1.773715315343277, 1.219914038937146, -2.213860133799711, -0.14916713468644752, 1.7628714799535847, 0.2339849515986858, -0.03761268839633734, 2.143907078190805, -1.0015286896665496, -0.40010337492322895, -0.6566439248016585, 1.4505614500774051, -0.5810568006549722, -1.6162077232566219, 0.18463910494905925, 0.7742911410807676, 0.14496376455100546, 0.8838498428601247, -0.34941054966462454, 2.02035055742048, -0.33887856780628234, -0.8213769209241042, 0.5669351554200318, -0.42298733389277077, -0.6005548745768965, 1.6430054310046425, 1.6035130190910534, -1.0319391121636672, -0.09774507597793355, -0.6520088992578232, 0.0477880560338064, 0.5747081768308763, 0.4828001936355227, -0.10582221958284689, -1.4668221584548882, 0.22049638564358517, 1.149953675035897, 0.5356482043193802, 2.209744990011742, -0.3608091685311371, 1.4441404573947205, -2.2581574537180726, -1.13629994945274, 0.7265837346915243, 0.3097883608445818, -0.8577004158636681, 0.17114666895138375, -0.7043940938451111, -0.3009786276980547, -0.8165363388123666, -0.9289682655079575, -0.12244992044143885, 1.542896177144803, -0.8841551589218146, -0.9208567330224402, -0.6540118144074791, -0.5171796742457738, -0.6023620659122336, 1.0635672960360585, -1.134330817545791, 0.7516849917169492, -1.3768346295850198, -0.2887033795344619, 0.056463263594405004, -0.2319843130014002, -1.5167554485466308, -0.25185231053466395, 0.9501800034747293, 1.3049896091031608, -1.2018551498395114, -1.352386595817521, 0.8816491221888422, -0.5136584805608818, 0.413721469429948, -0.34300581824604537, 0.6390192112355659, 0.2576064001530712, 0.9782101083250803, 0.6357892633788328, -2.538589768176732, 0.44695349034542475, 1.7303935529284833, -0.9684600861287586, 0.10236207599063739, -0.058130587212581325, -0.6593728867487116, 1.628655977372503, -0.9761527761546062, 0.9272948375646727, 0.27513668932269936, -1.8234460501370229, -0.9808233679288441, 0.3505076901816651, -0.5696532524323059, -0.3208932477679777, -0.7983286790842801, -0.2857415896451339, -1.1602067061862453, -0.6920493662799277, -0.7209260326374053, -2.4150876953168714, -1.345197705402757, 0.5891707013601143, 0.4315664458823607, -0.6577610674094022, 0.0005062460095738251, 1.2591509479456338, -0.6063765414897068, -1.7607966379468067, -0.9508899749801195, 1.4880740849985945, 1.0865988277002356, -1.1046192339132022, 0.6131311512926562, -0.9873330073605263, 1.3013956438407601, 0.7414214926541779, -0.8920958466820361, 0.41616978812279903, -1.1208556692016416, -0.8894703034997085, -0.8309067844131225, -1.8606842678184219, -0.07194654199784922, -0.07117390174891772, 0.5659822119815847, 1.916753711583183, -0.6963548682808837, -0.7855412487214021, 0.8047069590125108, 0.18349468568397984, 0.13587660177551125, -0.36150957824597807, -0.9508896526834771, -0.9483356430836982, -0.003902815411469966, 0.6106885504696978, 0.19376914373215087, 1.1932986357592312, -1.097567907692405, 0.25150655593518184, 0.4292062014732737, 1.0191286705659799, -0.03253742612676552, 0.050433113577438515, 0.10814583704412964, -1.05385401691128, -0.09071516667529367, -0.23849827593955103, 0.23738288144814607, 1.1169088997424437, 0.5886653092379591, -0.24354050181310793, 1.117611053039336, -0.2161013013225925, -0.7694711307041686, -0.2800587010869735, -0.8093412890185301, 0.1259803458217062, -0.3736394395978573}; + + +static double gemm_C_dram [64*64] = {0.029004260079962152, -0.8006824757561799, 1.1197336711178068, -0.9896157373454266, 0.4966790956650833, -0.320720861795497, 0.2404711868912757, 1.7983471339688688, -0.45215688264510606, 0.896961504429265, -1.1616159798557508, -0.840560393015905, 0.07480233754961872, 0.17992670342491432, 0.40524411436169705, -1.6268041045901802, -0.515842081058143, 0.3550333279229013, -0.7169358889557749, 0.2669144829157952, -0.7584809853254146, -0.8370380914872608, 0.48072270248825516, -0.40604137567306653, -1.0335439663756396, -2.069883524764944, 0.6487461014247821, 0.011710122578667713, 0.7558956908425195, 0.5521614840818139, -0.25174889683631496, -0.9515208767957234, 0.7906470835496024, 0.16009301473206583, -0.9156242627130992, -0.8294654016291866, 0.6405496416929598, -1.1150477048464416, -1.4778148420891877, -0.6532442833617729, 1.0668677881031745, 0.42505345945888107, 0.07673387953069587, 1.1717799752861355, 2.372817497973731, 0.31201596993898206, 0.6638888271489586, -0.8305561220137307, 0.028066442063465726, 0.5327162396709624, 0.1408772044753154, 0.7686937307721734, 1.2407913952843508, -1.7571668440478188, -1.4407261503018678, 0.46966304643082196, 1.067965459457961, -0.39086059969793585, 0.18266961756344147, -0.09601667538677204, -1.6541976778103968, 1.7762728362797546, 0.044625271683577473, -0.05332555492084246, 1.5519660869822542, -0.5164453460006669, 0.3735110292906932, -0.14055947835504265, -0.4662885370095864, -1.5754096176009653, -0.5279910388184064, 0.1877355482506709, -0.33550084881023345, -0.2335582239599356, -2.000574246170347, -0.5830606097499693, 0.7201314957738653, 0.2767541956493462, 0.4410172346230466, 0.1496171764974113, 0.25584855399911693, 0.4231757850905495, 0.819138838244574, -0.21665970285704256, 0.7993969106462642, -0.0524553739237593, -0.10297969217994243, 0.10341500732243082, 1.3960023077483688, -0.3532908554905869, 0.2203147660382962, -0.09582033114984764, -2.2210275614128365, 0.606197840696221, -0.8083685791528877, -0.5880259036476851, 1.3096925869345688, 0.14641410716326553, 1.0053476857132149, 0.7403000763828661, -0.5588102569869894, -1.8250095277930243, -1.0186046335834653, 0.7832698999328468, 0.3231401688432538, -0.8047074876514235, 0.22535724026429152, -1.3470992648831748, 0.4765280552548135, -0.04554836049444112, 1.0856094027781182, 0.11016455864671677, -0.07169925780054585, 0.0271210087334666, -1.880645185815656, -0.6627766870787014, -2.8871893512281774, -0.5590779904078584, -0.2852107316710877, -0.14430057889633358, -1.3447542589401562, 2.2915669321114898, 0.1728899952093592, -1.421973566402149, 0.08592097416861628, 1.0123703420638568, -0.9558110283152651, -0.9027941505852196, 0.5300767150099646, -1.9419175079586657, -0.2760382915222782, -1.0179287043200682, -0.1606599622524637, -0.3767181010147598, -1.1725123233730355, 0.9572648447195339, -0.1936224437544405, 0.42763321723323666, 0.0597133381305523, -0.9990105347232393, -0.4832753666973765, 0.6204763319584289, 1.960673372068261, 0.8079703046097372, -0.3452734166837273, 0.3245617375208927, -0.07491582919001254, 0.2743378624516145, 0.5983093934031979, -0.25216135518238597, 0.596753836231434, 2.245459616334286, -0.2948256683719357, 0.28882168918856443, 1.0813537774504756, 1.8535627999465232, 1.1961057282238132, 1.318252064967893, -0.3950711849667241, -1.377281651368375, -1.408790244923528, -0.4636389874147835, 0.4564524135315159, -1.6380091071491378, 0.9185995000712671, 0.4692427417861781, 1.276662831833898, -0.9447062381422022, 1.0877432601911943, -0.22886776336281126, -0.012711978863996708, -0.030811506691294257, 0.38780634756191124, -0.47366773078962465, 1.4814958435930687, -1.1828980688637942, -0.19863200267049605, -1.3001223272185354, -0.4242285448896925, 0.08898755668384477, -1.694063278944873, -1.6602985696240946, -0.6264097653393359, 2.1301257422525035, -0.9460005244382601, -0.5374812634338685, -0.43004926797690446, 0.29036657258875936, -0.8172987007397908, -0.5094563820595255, -0.6841925657572985, -0.008910378204569518, -0.7731489284211737, -0.616010025614043, 1.1972052729129066, 1.1413513407181342, 0.1378551765169379, -1.4064193442890494, 0.47683432031632644, -1.0476861800204984, -0.06901359480920458, -1.2496780870132282, 1.6753024031738708, 0.041143324574971704, -1.4522215930201885, 0.7573346464645373, -0.15931444765366126, -0.7557308301686515, 0.196471099443403, 0.9564572866814582, -1.4803875895078311, -0.9249142102969159, -1.0917150382335596, 1.2585219246267312, -1.2891710566522292, 0.2768772021936127, -0.11943879225386107, 1.4656182572667367, 0.021005580078823815, 1.015858071109535, 1.3572500812200858, 0.5985933296458931, 0.5118443929095804, 1.3341173368810655, 0.25975515970872654, -1.237917055905442, -1.5278312160468452, 2.1781558314592333, 0.4138981989747854, 0.9117147230752412, -0.0703340663019803, -1.0158619558246755, -0.10701579101103097, 1.1466314764426422, 1.6748325965852073, 0.5314453542027439, 0.22641290320796856, -0.6327321154028427, -0.3761520310209821, -0.9094876923198735, 0.5199396339404194, -0.6279140323320965, -0.5316788990880681, -0.7754230114648885, 1.6645731868153486, -0.25248989955644296, -0.07000691089126687, -1.4833807861581225, 0.2847398900881516, -0.4709041665604012, 0.21337597451344031, 0.4752659270130253, -0.6322357393536067, 0.8609686485998456, 0.6154141944357284, -0.5912751549232785, -1.3228568966598775, -0.0850817349853954, -0.8896445451859949, 0.30012988995739986, -2.946119896252344, 0.036167602681861456, -0.028803490284605167, -0.11461775128822176, -0.19075498390300027, 0.29202031786639293, -0.3294293306975217, -1.2138544157908646, -1.0972607879764735, 0.8248759718159153, -0.8925466032322242, -0.16541550491454302, -3.4465386476151045, -0.9566298189710206, -1.078687196973154, -0.4891250155546176, -0.19531569651548852, -0.5990381399213928, -0.7036039565674199, -0.5527767107100636, 0.16920318370993273, 0.5427235579499587, 0.5503428910211222, -0.7497767572001619, 0.011571029854715547, 0.49984033903822517, -1.7283983057101304, 0.8594792530055284, -0.12824597747986724, 1.130107130041837, -0.4987262662830606, -0.13416057776817544, 0.5080625985293201, 0.2117295363547809, -0.8118692986997613, 0.9424962371461574, 0.6300633108154001, 1.2746895140278918, -0.003615756251429331, -0.05126805599191769, -1.6138120917239291, 0.7882409923880206, -0.47367442818736116, -0.43963455311049604, 0.712317456491045, 1.3326960118808617, 0.5896451874379312, 0.9762107134249405, 0.5626831277485056, -0.4376044921422135, 1.5861409442199574, -0.3308751028344161, 0.45942840764057974, -1.7057231513870459, -0.9254725284067791, -0.11018949372955511, -0.7616338202748348, -1.0857700920096018, -0.4372008083571365, -0.40109369588497923, -0.644818536292368, 0.25281756977441044, 2.4197071280480786, -0.22106488208438388, -1.095650643379566, 1.894125695645947, -1.2761684375038809, 0.02036098869546291, 0.7947496785408548, 0.3421126605593487, 0.7949003661056283, 1.1747154329748026, -1.165207479384505, 1.183093398265755, -0.35715333224519835, 0.09841575912600005, 1.574023689454931, -0.23482068201661857, 1.2386946627395476, -1.6783552822721601, 0.8611354052037511, -0.03315728672592852, 1.0193997600753135, 0.8649479142208678, 0.4164604631092424, -1.7829228532488806, 1.18355749410558, 1.57769088119824, -1.686257098236667, -1.1607340307397962, 1.0433166175934159, -0.27772980615804893, -0.6837779231673817, 0.3903294683158698, -0.3671124601982576, -0.1276413455606181, -1.700409020471655, 2.268428305186674, 0.2736751307318294, 0.4618308615774054, -0.14119264307379673, 2.2199837786106715, -1.375939861531243, -0.7221917522954365, 1.1098492022750432, -1.4505379826083395, 0.26060143268332325, 0.9771611195144573, 0.3765145109829216, 2.215882692348702, 0.4047556377415391, 0.17708325001281291, -1.9644517128168955, 0.3982782935193131, -0.6262164185787708, 0.15245667799057772, -0.6508467682648665, -0.040947126846172834, 1.7119976409288793, 0.21779845582679846, -0.04145965880856733, 0.13225304399295884, 0.1739378890012343, 0.08037751104228624, -0.9411877899806691, 0.38565902729297424, 1.0958429749681566, 0.0669055558927883, 0.4361448377834406, -0.5901261511098935, -0.8885190831394413, -1.4871156416726072, 1.3669107918561987, 2.3091823854788514, 0.622552717517235, 0.2783143206723023, -2.1305113526512396, -1.4978709762185878, 0.8018120395351532, -0.33995160613042685, 0.1777765322633653, -0.2258895695037579, 0.19586512261588473, 0.45301580114334045, 0.18103013768124301, -0.5147488863527064, 0.20662933937315553, -0.09581792397706412, -0.4704069093141071, -0.13483315552265066, -0.5594310075701671, -1.5755216037255442, -1.5674068340789091, -0.5157357110184205, -0.10054465770334044, -0.7071565768766122, -0.4099340274741994, 0.35968200228333286, -0.18585633976713617, 1.5416706566134035, 1.9286900603543355, -0.5159285075025919, 0.16886996206928914, -0.9067434891373716, -0.6039824452258518, 0.27720989342858937, -0.8814432879855706, -0.6919477366657376, -3.300499554594386, -0.6173928008586741, 0.8153244286523782, -0.35573315997666993, -0.20534234860472675, 1.9722365498950571, -0.1019166129902459, 0.08112220912426235, 0.7463452888856003, 1.1314090216181174, 1.1725026304304351, -1.3737070495742683, 1.734619629252936, 2.481740839103901, 0.9194703215452048, -0.34821661861545355, 0.9728026357332336, -0.10658444194926611, 1.3646609952054927, -0.20423441003137643, -0.06138988353092309, -0.1103302198524375, -0.3172315867238737, -0.8436575516229253, -0.5086533079781693, -0.1020901909331111, 0.041548802438476466, -0.9989480071569191, -0.19084542074059116, -1.012929236908774, 0.37846266910121795, 1.5569101781200219, 0.03186861709827397, -1.9643672831540329, -0.9559693601351081, 1.0476398922384702, 0.4753938790634957, -1.9155181532004628, 2.7851118312057928, -0.4660427767210397, -0.7434686806220159, -1.8644578336246445, 0.7950519234725988, -1.5175445270408634, -0.18967795984276006, -0.07354703638985319, -0.0028940583295309318, 0.05057720453427609, -0.2571010737906899, 1.841219462891703, -2.1896361652733782, 1.2511986406908666, 0.5753085882254242, 1.1153018270644537, 0.13982610960157404, -1.383864413771338, 0.7931811133480174, 2.1309464599529786, -0.3672255367396895, 1.2349500491253345, -0.2851321814733262, 0.8721818251187332, -0.2026228852474988, -0.2791938533272248, 0.08040090821476319, 1.0892882614640076, 0.09768943644705562, 0.4204417256351771, 1.3114392443815635, 0.04829268265664478, 1.2850500288988436, -0.2779162535369758, -0.43169391727862744, -1.5832048871215894, -1.6962198203895802, 1.0729777959132656, -0.3475301277658165, 0.5554189051412136, -0.3178837805858156, 0.5327674010524779, 0.6755622625790911, -0.1842302677407756, 0.43041683511575013, -0.8115483237447811, 1.3968996263534743, -0.17863606115051833, 1.585212875612633, 1.3280038403293726, 1.6695928015875903, 0.6109821394084319, 1.1349894473760842, 0.28476618327344827, 1.4784673864794742, -0.2823155837802257, -0.9183380787461971, 0.18428479751772892, 0.9836044862804338, 2.025235066042294, 0.8265404261612499, 2.088855400024876, 1.2286394369048508, 0.6715801392320037, -1.0498151352816971, -0.8931372957848912, 0.009361893370829872, 0.9162789715980914, 0.006157909931788802, -0.4922874423094256, 0.18089602650564962, -0.9841484655534926, -1.1301889231546511, 1.3001340798635899, 0.13693015400741945, 1.0390411986454737, 0.09933412649399904, 1.7158843111310522, 1.904568532616043, -0.48794979349112055, -0.4338145756826169, -1.0370401983449686, 1.0390032114803736, 1.1522094113772554, -0.4274833545676901, -0.8753567770565199, -1.6315994757003491, -1.7385506630534566, 2.532384190967428, -1.7056567691204445, 0.5413608251407436, -0.7741297263854691, -0.9447738094748025, 0.6661287246658135, 1.2031380054266403, 1.10368337423764, -1.2970356849209472, -0.6566436584727551, -0.14816924917182495, 0.7899980629195169, 1.8273852077888946, -0.9277938527847925, 1.9598998746936958, -0.27099375424892697, 0.6313744587208714, 0.40220491996516095, -0.29639672770006376, -1.8023859026222553, -0.7750540161682024, 0.1947076125945104, 0.5471135873496065, -0.652969912710415, 0.8404848088284015, 0.12894499297938444, 0.6032885408701868, 1.2514835286413495, -2.3974894979687105, -0.9304443816961642, 0.5235805043032368, 0.9237070587307208, -1.2232371757835139, 0.5076176935522306, 0.11779678439009704, -0.34612498438387546, -0.7314860546390927, 1.553910216869756, 0.373159475336515, -0.30618102562662347, -1.0154187441535123, -1.3683721575144063, -1.6848734071167453, 0.7057898542723938, 0.7127375808855136, 0.6820908867090917, 0.14243208748778438, -0.49764571567254134, -0.34993722444753544, 0.28263895634917763, -0.0811609390230422, -0.8001263943467075, 1.2016381946021464, 0.6300938668214966, 2.0197124104278883, -0.39730245577489043, 1.1082615629881487, 0.46812678384907336, 0.666746788576162, 0.26123698644751225, -0.7024810946461257, -0.5922965445684787, -0.48103667153342716, -2.24353922047969, -0.9337194785548774, 1.3686185555811365, 0.3972741496203757, 0.37354079869199974, -1.1743179438700706, -1.1748244659763896, 0.1406513465704322, 0.7766944125577693, 0.6468554295128249, 0.8402029124529626, -0.5495888272912638, 0.2752226876433018, -1.0617295543596483, 0.45862157925707286, 1.1714768594080485, 1.1805224647157246, -1.6892820684956078, -2.393405099847649, -1.6331785264764314, -0.7303247685543807, -0.37576096935444997, 0.4013478691603241, -1.0157957733816363, 0.14002890339339075, -1.0252839102787974, -1.0375314340230521, 0.8172730168671789, 1.062543562593135, 1.2810809804809749, 1.3999493985992992, -0.1750138803985548, 1.395734920938993, 0.20896311087749608, -1.3682057826232348, 0.004699216277132869, 0.4764319522852837, 0.12823174581788757, -0.546109883020964, 0.2523240224674329, 1.9724181468899409, 0.571137816454056, 0.522392971014453, 0.06334935501567902, -1.4920451846109672, -1.0225677061413179, 0.44255002330819526, -0.4682032342920937, 1.0350483070201422, 0.8200797384116898, -0.3029007829607368, -0.9845615009741489, 0.7582526902117465, 1.4833592773254187, -1.3989560209509306, -0.02010565525754588, 1.696186541558, -0.14162189076683343, -0.6537141574516205, -0.38621139164560747, 0.8184053985461378, 0.6452934033126237, 0.7403406155596476, 0.5169782497985267, -0.8189857182537518, -0.3298835390479515, 0.4237001612173338, 0.7833162409431745, -0.0019372831953367766, 0.2733210830893454, -0.6400595311632477, 0.6228358338196626, 0.3278665095994055, 3.081520639298892, -1.4435639267846334, 1.7053027215702756, -0.9588347501825313, 0.8266484324217002, 0.6242654188330886, -0.6407113941329479, 0.2772593629992858, 0.24814190447973083, 0.03363219264335503, 0.04496534388566153, 0.7087040051423135, -0.9221069417630742, -1.5268364676636788, -1.2896607997985812, -1.3661213777130599, -1.2075968696301782, -2.389243136958518, 1.4955588874856782, 1.2032086179453023, -0.14139077396705954, 0.2105872325884853, -0.5266170806972954, -1.9635764068165913, -1.2961941687735021, -2.2835960332407423, 0.33843875542096646, 2.3953920170177923, -1.1837497023332566, 0.496939041745984, -1.6834236268645497, 0.0947364755311612, 1.3677509022976098, 1.3010190519580898, -1.7668063834316443, 0.21564869547117013, -0.44708261946187283, -0.002380181670482115, 0.650945443490256, 1.4074149358152999, -0.3502584098400984, -2.275975800589525, -0.713875724177341, 0.5589684491426312, -1.965116029720147, 0.47575103008133773, 0.1679025472894861, 0.5439197139149357, 0.18336508565925638, 0.3219885649627636, 1.7554902588109447, 0.4642725270837393, -0.4390920573164246, 2.2698459891448923, 1.9524244471530363, -0.14392435570038756, 0.8876434758028264, -1.6577043260766187, -1.0198707516700816, -0.5961056777066923, -0.34369290129618396, 2.3123203551692133, 0.9307680048590791, -0.002081134721685804, -0.4816298626933, 0.5166419734688004, 0.09544852566577597, 0.738769513030866, -0.5320413954446367, -0.4940048696009806, -0.6416355699204741, -0.9125056647182483, -1.1862204740038778, -0.6555000958717663, -0.833470938908399, -1.1616778894644986, -0.5822364941000208, 1.5789499695762335, 1.6906076958567484, -0.6682910973489802, -1.5375408783188134, -1.7035671717673282, 0.5113501775091176, 1.3627201535356952, 0.34281653314195654, -0.0361566378498718, 1.283526267201893, -2.2745695742593397, 0.19000854891098337, -0.9356963719873145, 0.7771715931847443, 1.1747876035023088, -0.6581782060160273, 2.1514708443588093, -0.36624102952776444, -1.02996208423095, 0.7217520972507986, -1.3423248117021074, 0.29948769841449313, -0.9983234204192304, -1.1349975297569361, 0.2390417601230243, 0.7072204486510455, 0.35832543994067206, 0.8041102924500155, 0.3028670857744879, 2.7623138131362417, -0.7089157750419613, 0.22621529706629703, 1.0159042552872546, 0.4778866048560423, 0.13862524435273077, -0.6817769904192166, 1.2905800338344828, -0.5617711995631723, -0.937878912770488, 0.036259068904784184, 0.3074683196641872, 0.02334508317808002, -0.056636545167360136, -0.6105722560497783, 0.22034125973327826, 1.3981176980080354, 0.002830930797289729, -0.24195892578863437, 1.3598231207188574, -0.5983975108140343, 1.509108735185707, -0.3108584778552104, -1.2228769868033365, 0.5943397739409046, 0.31935177535483583, -0.036439093781717204, 0.14778839039885514, -0.11651573539454131, -1.4649049971267012, -0.2683259472901276, -0.1143739595865752, 1.7635913804869325, -0.16130246501945172, 0.4072876137215747, -0.31103626857775446, -0.05171663918837877, -0.7274085567918993, -0.869998251494505, -0.7193321231806105, 1.7505951189711304, 0.7440630635174471, 0.0016957841800653661, -0.983556012268064, 0.5131452298233552, -0.21520406798199235, 1.2554935163458343, -1.0675348115557104, 0.7469420795328888, -0.9963438487998225, -0.6229174823536682, -0.6770598584016285, 1.2562729341933596, -0.2712138170575698, -3.068642230593467, -3.0531360276822577, -0.5584911390555901, 0.7473315149504595, -0.18706483628559678, 0.14675010155914514, -0.006368544270069353, 1.6844988114574022, -0.6214979241607808, -0.3355320210713104, -0.09820727272027757, 0.8687934479912008, -1.2005133663272494, -0.33084789733891284, 1.1571084045756281, 1.4246451046643682, 1.6962376428779853, -0.01965764703939021, -0.7773091413938378, 0.7348575748530396, -0.23216605868100404, -0.8192776375683218, -0.2080446140023382, -0.44904006003328667, -0.4432456841776011, 0.06399763185741875, 0.21563610206370648, -0.2508963268128007, -2.5393973783220463, 0.323376954594191, 0.1384357529412035, 0.021153113599300586, -1.6410540709354358, 0.3691910055245278, -0.17495885529094257, 0.554361827175954, 0.20816477209501544, 1.2322688447103174, 0.2259606292852208, 0.5140029111794593, 0.37718842026130545, 0.33603722021339, -0.017669087842033065, 0.3990879000210093, 2.178612539524806, -1.4021972726687062, -0.059858631189209026, -1.0031183337604832, 1.383398163582628, -1.0611670406818532, -0.6074540386699645, 0.25468663161832605, 0.13474280254470264, -0.10885846887714488, -1.3619488838854161, -1.1865743468938024, 0.8343602196452481, -0.31636758410943266, 0.0822806179687328, 0.03610500422763477, 0.36975660962214374, -0.37447984002912227, 0.9006398818186364, 0.4263942528559476, -0.8471405691528062, 0.6370923472128284, -2.771271846414234, -0.2775641216533752, -1.9698060876925318, -0.7631948292304876, -0.11501310895829121, 1.2264502383793572, 0.44510581587390197, 0.7850830340365011, -0.8972456251148753, 0.6916483637375145, -0.5297453646047573, -1.901732896640853, -1.007326391309077, 0.2220310453886031, 1.0724562599385534, 0.40011245153735736, -1.1593565442528044, 1.5287688772353074, -1.2265309382410865, 0.17812058438692274, -2.1424196963250663, -0.5365247347682954, -0.175882228830132, 0.20779436050052882, -1.2395880259585617, 0.04832542895494312, 0.07093709252503462, -0.056371503668414216, 1.3597592757778154, 0.3828295662314724, -0.5315492554139866, 0.6360780600344075, 0.7531154590527323, -0.7824250791522117, 1.0617544257117932, 0.5489962301017025, 0.6286191631180904, -0.7554812899095874, 1.3460101201505388, -0.6564959907077351, 0.16698785124367177, 0.09451925409687266, 0.17705768947811729, 1.0138194440077566, -0.24231907310256842, -2.546273886239003, -0.05507329609619993, 0.3576296538398323, 0.27507225100326244, -0.7942125094255036, 1.0744369972956842, -1.1548545340061322, -0.15997902636302005, 0.2950954321082824, 0.8845493763065855, -0.8132679790365331, 0.21153971778686953, 2.2177421007414084, -0.9299613122041496, -1.6733913807379388, 1.3474760825861976, 0.9816143450439703, -0.3855895553937516, 0.8502913770246404, -0.016034574759692683, -1.1339934776440412, -1.7563721581739282, -0.06647491888759757, -1.8920747028441938, 2.3760043080911335, 1.8177530262775197, -1.8575847163422115, 0.844553214178571, 1.5954993729399956, 2.1252863078605264, -0.9089236614521397, -2.0469171775640773, -0.9384063102943723, -1.5482176543034978, 0.4526740914408505, 1.4013381381239929, 0.991045705937935, -0.47656146801187094, -0.27582104974046956, -0.5642658623540668, 0.325163151043837, -1.544633482053262, 0.15518857788732585, 0.15382265815454396, -0.6343026666433687, -0.8052290074500515, -0.01691923834054946, 0.6541683607771073, 0.5338183805463347, -0.9091383582478858, 0.3968969223456185, -0.17061628431357603, 1.747323697825887, 0.8012341564226836, -1.255442509886699, -1.2920206203653015, 0.0749186813352897, 0.2120295206583239, 1.182843648729612, -1.1122449131709833, 0.6272974182744673, 0.22777924320090764, -1.6251751647156196, 1.0411757059610847, 0.019367245918048063, -1.5738996411263415, -0.269270207865917, -0.5708394331822761, 1.8504054703733777, -0.22094889809967533, 1.1868455374446385, 0.5717141696167073, 0.8579212808811838, -0.49203515643303497, 0.42647412290047176, 1.0808047827262008, 0.010157228470302567, -1.719815859158772, 0.38805715778854427, -0.9969905666150687, -1.9361769141375387, 0.2474759878876688, -1.4221009001917095, -0.5918211873235646, -0.8058159270505826, 0.5438653208536682, 0.19307918373458596, -0.24237795984767208, 2.3297553315723163, -0.6782771653830929, -2.264267240688485, -1.3620513569200732, -1.9227157102467343, -0.5474383968696648, 0.24293097804441546, 0.8929260011447531, 0.049719985269798754, 1.3121549852716419, -0.7380138820116222, -0.011523274745424477, 0.7707761640355849, 0.2159962953115613, 0.5540026920594798, 0.09682345285130588, 0.398898061918644, -0.8325427357082503, -0.8742308162726118, 0.047733473640843245, 2.054543245821081, -1.3898902807090843, -0.12538538363326618, -0.09873796128345852, -1.4497902777439649, -0.4782177466678878, -1.5489795500879526, -0.29518331705238504, -0.44407598222159483, -0.9106356388426876, -1.550174445411619, 0.9328231660401188, 0.05594760595703414, 0.07566938845558267, 0.3298955808621695, -0.0017861668992007044, 0.586486364465265, -0.4362101979996282, 1.009729735572833, -0.042390290391845505, -0.2808285449424426, -1.0403468643014806, 1.131390812188699, -0.773890404524892, -0.22102358669926575, 0.6645483621647768, 0.7694091180284272, -0.03831164560096324, -0.3150960131582738, -1.0259652416179839, 0.20049882895150267, 0.03693677780369976, 1.6551618339165797, -0.22673604901843455, -2.417611359678329, 1.1106483704352281, -0.715751960430851, 0.5164952578195183, -0.6996317634146395, -1.897990257489308, -1.8041186305012002, -1.4690150868698797, -1.3087988024213557, -0.17486927381146705, -0.45353269534719165, -0.19149104316066032, -1.4266479569878736, 1.8919903045082074, -0.9473356590670324, 0.5173785755076394, -0.13818347423848865, -1.086849997656127, 0.36593831570404595, 0.6194226195093413, 1.4453714190862008, -1.3271158566185721, 0.60921787209085, -0.4832669384376709, 1.3186433317044879, 0.9513213947793335, -0.8548751359506115, 0.1071168124112579, 0.26717848135064914, 0.7030211740414508, -1.0709788797992723, 0.45569586838966974, 0.2887090154342446, -0.24229609713368583, 0.49390930613496803, 1.2738314634647165, 0.8139546371116826, -0.8058423065764165, 0.916823751781412, -0.6678215090538104, 1.4119852560554031, -1.3924034581122728, -0.48456149875876053, 1.0643581297073346, 0.3566463977388516, 1.0415975486050486, 0.028040080194454448, 1.0504197093941925, 0.44965919555783174, 0.8435496128685037, 1.7026256067041448, 0.14373254549294262, 0.7291427328749441, 1.2935074397997568, 1.1398931375510761, -0.18068743577377236, -0.6047067890923773, -0.5346294021251248, -0.10853463546664842, 2.24413601184453, 0.3297355179043857, 0.6657531282588651, 0.964251923438201, -0.5628928015239664, -0.0017106246437996794, -0.19257380601095586, -0.5999594838401076, 1.3310045638118178, 0.01078134546842449, -0.9551407698862096, 0.3885729820005979, -0.05434661623637475, 0.3767388172770911, -0.4898330949543117, -0.713441149440031, 0.42018478215791266, -0.8439100277112023, -0.19565425401483183, 1.2508445943709827, -0.598991758922596, 1.8429649718578998, -0.14258798772701783, -0.18138700905606242, 0.18618696335301746, -0.17087391761424983, -0.8432760462260274, -0.9939917370091027, 0.4305596597055404, 1.1091371083897912, 0.0790722776794302, 1.2495242586059518, -1.521274693280775, -0.7616476824293791, 0.19580408817424708, -1.3143027744001392, -2.091488061999562, 1.9663088091747154, 0.229879430005645, 1.4409375453185944, -0.36162055274827665, -0.27464439642870486, -0.6230996505620815, 0.5751002240784702, -0.16100067047853925, -0.09962621112274908, -0.4351501356168505, 1.3351792476960413, -0.5784998697471228, 1.3361458462940539, 2.3601479775013887, -0.4647589716386651, -0.4548988716102504, 0.7028762701773292, 0.5914980686358756, -0.6966115762392115, -0.7696723521588696, 0.03715612980676316, 0.32221017528830087, -0.4234227574937845, 0.34726424283234486, -0.48116562286295844, 0.3138392530237178, -3.16017434136752e-05, -0.3914227082899591, -0.581666722921146, 0.17111964776203006, -0.06008169278035282, -0.041886584782142536, -0.28699248044931597, 1.462175320301007, 0.1245846313065406, -0.1123526751684876, 2.092515176950615, 1.2272760858332872, -0.19552592726578952, 0.49191271925867636, 0.6144137708252538, -0.6106235763708134, 1.4976844345055038, 1.1892142848985179, -1.1357119642005757, -0.28436481789594376, -0.4421830922813949, -0.6328684584245098, -1.7040349067620155, 1.0820432527761576, -0.9968510182567392, -0.7985198199890275, -0.2588215482253829, 0.20174302514172218, 0.7287507331021361, 1.1722852714149967, 0.4322448567665407, -0.771155579801035, -2.612258680121964, -0.7051447495309736, -0.08301192443248484, -1.4472391477276658, -0.3526737726608245, 1.1294354483566833, -1.0899837588692494, -1.1395916553408674, 0.7779937885751342, 0.5183410812373956, 0.8509697670045957, 0.6208144564226835, -0.778892715214496, -1.0501461846073583, 0.8552859071722188, 0.8608448046488019, 0.5497428154557589, 0.04882443454369946, 1.6651080232070385, -0.32090016182105363, -0.3728486660772143, 0.8430133361143574, -0.5655459744432224, 0.7215544062511454, -1.9484490239876828, 0.6423145640402413, 0.014400283567776857, -0.7898745532400717, -1.586323922234601, -0.8458020923790143, -3.088311088273429, -0.7711672240651922, 0.9871615977182401, -0.9045757185197361, 1.1588809667487696, -1.3285096437778892, 0.5493583705018974, -0.17757552950573202, -1.6167076444272095, -0.6257691840041929, 0.3674989256823125, 1.5365222795738054, 0.3527319212488765, 1.0485204480487655, -1.660459836294662, -0.5794960248043395, -1.2465657293652699, 0.39414956926958317, -0.22431122185124802, -0.7424297725903407, -2.0183158330852966, 1.0943683904642862, 1.9180228164677529, 0.33125926943311296, -1.4098590113169003, -0.3049008568768526, 1.2884791320277762, -0.8304495335533479, 0.5648082533641575, -0.6324582858362591, 0.15519145016196245, -0.14331072524661, 0.5955341112172925, 0.2683604694117294, -0.46158779655753196, 0.07612773147707591, 0.4518924976580781, 0.4439502747372077, 0.8523538103367174, 0.6526631303289786, -0.14639057359720992, 0.11541815018151078, -0.14641912207628505, -0.28858965267185804, -1.1094993394266683, -0.13666302182060672, 1.1197245750262241, 0.5969030971713879, 0.7652826186532012, 0.5565420987155717, -0.39973686526861824, 0.7840343460033151, -1.1888373414791333, -0.38373069667860454, -0.2549327865564444, -0.831606465136574, -0.8020163962470959, -0.867149529466562, 0.3741626587437947, 0.009823237085445392, -1.7368701460461045, 0.9578205180189425, -0.30283019943674705, 1.1710486547250496, 1.3504432585716344, 2.135913369966061, -0.37144981581277836, 0.6683173129623053, 0.20836373808769923, 0.45158986081203556, -1.1459347939795756, -0.819138263097992, -0.44181173736632695, -2.228038352852804, 1.3450784569893894, -1.1523580752749787, -0.20464272457508284, -2.6483454695188007, 1.213210112709636, -1.4004764346361736, 0.09732611023114367, -0.44728592455565547, 0.10547550295522748, -0.42093313113048986, -0.5056183426815237, -0.35915275364763544, -1.0946537876925737, 0.31096146492651894, -1.8148942677707616, -0.3091292910916751, -0.07769189114014907, 0.8210353689958184, 0.9977559638388211, -0.9741254410868778, -0.532900582192196, 1.2326485600619295, -0.556852354708009, 0.5224831305011773, 0.2473387410334785, 1.1142299086991494, -1.1993099089239656, -2.3844231540204452, -0.031312298998023125, -0.2578374897963484, 1.3655566629409817, -1.978772520685182, 0.05702667001523861, -2.7661971160023278, 1.4379234027888605, -0.7192462186848305, -0.8359204541555126, -1.97072449798586, 1.2834263121409806, 0.5648994039770748, -0.10923252179999401, 0.5481965021182704, 0.192406781879664, 0.48581076499243303, -2.605560426009065, 1.03504983076068, 1.4042025146049608, -0.6532422029882547, 0.21720993132656635, 0.44583467031113655, -1.4473969873605004, 0.7442621658759352, 0.0035577574611439537, -1.5352838320153788, 0.36582337868920506, -0.43827718248031894, -0.331658585134989, 0.03475743065587794, 1.695364872590356, 1.558451620009631, -0.20689475301966134, -0.45129848619848684, -1.523170827436555, -1.694309335523152, -1.198176658548595, -0.19969177462827617, -0.05282460007952421, -1.1791283297361472, -1.0067735453064437, 0.17055987486894333, 1.548598735029748, 0.7208980223949303, 0.4530935835189574, 0.8089115623004025, 0.3351300125270723, 0.3800443655445466, 0.3736345544751257, 0.08967024919905225, 0.9223811114430721, -0.9791572872575997, 0.7490556870861242, 0.04211285779316042, -0.48675401364389137, 0.7892987384887062, 0.6514935495821761, -0.7389337564143339, 0.8226734205961588, 0.7249237684279655, 0.9660211264551801, -0.4532783587481408, -0.8511090310517235, -1.2152362800727083, -2.2688038747495143, 1.0639266151110012, -0.11852527671845324, -0.04079710558992621, -1.959172190759805, 0.634813706645387, -0.024392389160913488, -0.8994503599741844, 0.02058425261846817, -0.5502771537286061, -0.7627382878672573, 2.812113990163829, -0.35697622542008045, 0.8954830632884034, -1.2850622093830648, 0.9048756978263991, 1.295681539205646, -1.8039444541082827, 0.6289956120674256, -1.2464825605819987, -2.434105594966877, -0.7368776196463713, 0.07517741459098572, -0.7212226336631826, 0.6482644881693863, 0.7243697163628927, -1.015612682453925, -0.20576178987164687, -0.03565973922119395, 0.46655943398917193, -0.49256995004987253, -0.6208601544556013, -1.9147957069743964, 0.9111798522207986, -1.050789491681603, -0.17826554882391007, 0.0034287654351666343, 0.23891042130951867, -0.2896526657972369, -0.9678605370350775, -0.15606979834697407, -0.539588519878248, -0.9744762714085187, -0.1158787137991666, 0.463186013778498, -0.31756023012613327, 0.32352357908448803, -0.585725835882206, -1.7678336366681864, 1.5889268041950584, -0.20630705622264997, 1.232645492185463, -1.536865929859409, -0.9261652386696412, -2.0561143314389776, 0.4779964081018399, -0.8596011929021515, 1.0843957545428986, -0.9897567668916143, -2.3232928720337003, -0.03340641205022988, 0.7598708513617404, 0.6584247271159631, -2.3279582198317708, 0.24768310253870407, 0.8762008827221577, -0.6729640746468504, 1.2959884053547635, 0.9381350368383641, -1.1241425977603545, 0.4829581184819777, 0.44171108339691467, -0.1872572531285367, -1.2571533983758636, 0.2048074965235173, 1.6143344982484689, -1.3124698136215769, 0.3635463079780809, 1.3596873368910098, 1.081430863928576, -1.7061600182770245, 0.2118428338657974, -1.0006407692588688, -0.3401431816847726, -0.7813320328275092, -1.0011400049098196, -0.04519821459969004, 1.2603284232288081, -1.0630920047189185, -0.44789118146525986, 0.5582310695632384, -0.7090682864355446, -0.5133533644647693, -0.13049594943266846, 0.7311900472570971, 1.493841327862994, -0.25011186120154755, -0.7748595776465173, -0.5052909848740618, -0.5033837938274406, 1.0631419148120849, 2.2478394914416504, 0.7500249601704074, 1.5817576559551234, 0.8472836111216092, -0.470416237895585, -0.19965720263223283, 1.0216451463957437, -2.1860339921625407, -0.9948198936152898, -0.4396019229076382, 0.8734144476777804, -0.2965813670330133, 2.2470581118653734, -0.3395559758401316, -1.791968271962612, -1.9257914274985277, 0.3714309214848273, 0.703855673271628, -0.555710126333215, 1.0220050901401225, 0.20363711487789027, 0.8516796154742334, 1.5757937650329772, -0.09665836315586222, -0.776148895209055, -0.8004256779107253, -1.2413561284257886, -0.12925323644050332, -1.2379066703304404, 0.06651546025851007, 0.01391190021081403, -0.17367092702089812, -0.3287548140792935, -0.8711037772397026, -0.13391409347721686, 1.046744495577508, 0.8549541076563608, -1.14897045533444, -1.9386803001956516, -0.38823478112772664, -0.913589660602426, 0.2729518941831664, 0.15071694940790553, -0.10547684574045808, -1.2248164227256482, -1.351082215307864, -1.331163419569997, -1.3025284037326679, 1.591100615537101, 1.6839972656851228, -1.5013406493986328, -0.014560098841445244, 0.8758316571675913, -0.8616058158966454, 0.5237127012367585, -1.196778610697725, -0.35407288196013637, 0.6942107386263077, -1.8315746797885266, 1.4846155028429848, 0.43076769047114793, 0.384367439106405, -0.23394885184834452, 1.2198064491495224, -0.5383323547980174, 0.8160510810336509, -0.4573571329857449, -1.7335152974789638, -0.4636249816670279, -0.15318904243505294, -0.42412709535096155, -1.2846318534528511, 1.325417287661619, -0.24420837398318634, 1.7225099174527827, -1.3858598478981758, -0.350222801326749, 0.22885965098157468, 1.4051554822746368, 0.3335772936910085, -0.6286767607540873, -0.07004282442105106, 0.04489437050367313, -0.4059451088431407, -0.8094857079707901, 1.7505330159261117, -0.583610420693528, -0.7366008689555579, 0.3984745730971409, -0.06377005585758136, -0.8206644772162646, -0.6843563782443158, 0.413445320652666, -0.4554691818585017, -0.6229184879111299, -0.2413741831461815, 0.5506155379147128, -1.3103237870729614, 0.551465002061796, -0.5526669452272004, -1.432939322764634, 1.783677814895783, -0.2619175408084894, -1.7366570861134099, -0.35564945315684077, 0.10137133388748105, 0.7235998519780015, 0.09403042929115289, 0.15425730783069394, -1.8572780611255473, 0.5058501044761556, -0.7574907452490733, 0.17607281289803361, -0.8396945461067945, -0.7292802178089858, -0.7002824669050794, 0.5503576214615272, -1.5890603582592648, 1.793036043038875, 2.7878235846616866, 0.38956928497568377, 0.26174869373444265, 1.711065590611669, -0.21780984024318578, -0.7476219519355383, 0.18354455463527203, 0.9102969356546101, -0.9733253628488144, -2.344766204767146, 0.07301118913271507, -0.4917986474536467, 0.7416391329516281, -1.2880000713234445, -0.46197477360345757, 0.30212819705891386, -1.5167184180382485, 0.8501535296247528, 0.5175168374586809, 0.1763279409946514, 0.5808980947903934, 1.8472712753780864, 0.5887473330756161, 2.1954184977584354, -0.03769822240764868, -0.15613316317636414, 0.5004769377495568, -0.7455652599230427, 0.7677830295108011, -0.1441337502428087, -0.7523387828605589, -0.36755553576567623, 0.34105345138077786, -1.1914248220126447, 1.2303531748948233, 1.3432678076153106, -0.4313094961431832, -0.716554553207416, -0.36217498101423934, -1.5133659288612389, 1.4950695017357467, -0.5715269477785132, 1.1593421463571147, 0.43789720927678055, 0.09116342195238117, -0.3049393765588991, -0.837272212664342, -0.5766435716140458, -0.7356401726215391, -0.9485280265926767, -0.1250772778287353, -0.24361064177838979, 0.8522508371598432, -0.0037377039062253593, -2.5439058613954306, -0.0569000266151025, 0.4320024316685166, 2.194478575759713, 1.4396842305532822, 0.36543499574809074, -0.3770338147135057, -0.8552418236779827, -2.641615137447347, -0.01832206949724758, -1.220279075748726, -0.4532959432254292, 0.2687666926125023, -0.8588555314205266, 0.2995859931505431, -0.5333350265572113, 1.2847615357173254, -0.6750734120371739, 0.8097130403145714, -1.6270630113161542, -0.9700686987748345, -0.626750470435254, -0.873880059260819, -2.302124621855377, -0.2119446632235012, -0.45104357068515205, 1.474647321380819, -2.452150203161443, -0.26422200819131053, 0.3355570393620066, 0.4521192920529254, 0.6898023906005871, -1.0228088805014108, -1.5620067151329697, 0.2114421450103242, 0.16571047265242836, -0.9976369476833716, 0.2707035595461758, 1.527376877291636, -1.1501231170867043, -0.8215138548193065, 1.1255100205347468, -1.4908295737477542, -0.9614784827261649, 1.253875753998538, 0.6502131896760401, 0.5459866901410766, 1.4600197648017388, -0.0961460203532497, 0.7266795346872365, 0.24327467641293096, 0.6629927940460294, 0.1425139446241705, 0.6769287783907216, -1.3236927946900179, 1.7325000099103491, -0.44398667144970083, -0.06250247294850679, 0.7996605229107876, -0.8781887569136042, -0.04685771081608833, -2.1381243641968757, -1.1057101272330927, -0.2334652569852083, 0.9622037237887306, 0.6635341672421278, 0.12296392422848872, 0.16098800191091994, -1.9738778562669794, 0.878801521788013, 1.1264406225655363, 0.9266111456784218, -0.5837955300185679, -1.1381689631937657, -0.7637975260788618, 0.6253414266910773, 0.2560476374285288, 0.6225515550412877, -1.4003990017303332, 0.33627768607969516, -1.9427666341170824, -0.6932243069544903, -1.6260875697896702, -0.7277319111014768, 1.4038229847386294, 0.2920548422295979, -0.4789539104472966, -1.5162957655731588, 0.7303018926046246, -0.08451244525442732, 0.784113042439586, -1.5334585479514933, 0.5670458287729787, 0.42975930410924124, 2.449800593141972, -0.747332434740572, -1.2322385206168842, -0.7568040112448173, -1.4135743704317814, 0.02577746009056378, -2.0837637677880294, 0.49143275227877103, -0.09302281017834362, 0.7031745485857588, 1.9067771128764397, 0.017922750249444862, -1.0118512011569816, 1.098381595132738, 0.7341755899609803, 1.2311978717249155, -1.0213846091416032, -0.30656617450535995, 0.2039715668363261, 0.9137009208505903, -0.1853547296025253, -0.4531226067380201, 0.4791486178122148, 0.4244894303034229, -0.21125213591144995, -0.9006724834631074, 0.687500015940671, 1.5478498713739013, 0.5971262704659354, -0.28221603850355226, 0.1853982344045198, -0.4972609839585217, 0.09701023695712938, 0.5695911267833031, -0.3164094642230819, -0.14706947612684826, -1.3149133497939054, 0.6864680014836566, -0.772852350625843, -0.5806236044379457, -0.3330938726043226, -0.2730406772068024, 0.5762813326703923, -1.4304622484096188, -0.8424942170683648, -1.3966094397492712, -0.895345937295373, -2.1450526226610602, 0.8982603474010731, 0.2447347737164159, -0.14421939866277614, -0.32759685565611457, 0.296699608032958, 0.4488491381463045, -0.9366906772433812, 0.8575927698912629, -0.21528850062417895, -1.1881007189482282, 1.126951428099562, -0.9182517838371076, 0.03845610449911805, 0.21538710321609011, 0.4345124212863915, 0.22806905558766796, -0.0433565930969285, 0.7593857162181715, -0.31477607928734513, 0.45451779677564275, 1.1460305154279424, 0.17511551763090402, -1.8856875430269369, 0.8346203714049741, -0.0696682533840345, -1.477209694338219, 1.167580661482926, -0.17554887202590774, -0.8474837486432465, 0.34080524465178785, -1.067656844368498, -1.2235746072702904, -0.1496059091339221, -0.6271075452205968, 0.17720185109195266, 0.4353918232872083, 0.5660926079329978, 2.8554574415424483, -0.6620166583187813, -1.7269876019682948, -0.4078387228577495, -1.7228178107762542, 0.3726054112499986, -1.1217641084697834, -0.4549722253573668, -1.1732831794353027, 0.6575544136481785, -0.9201334492342766, 1.6328222950437552, 1.6244241347609476, 1.5613555902002136, 1.4668846483103386, -0.3487215605525855, 0.12066051762324873, -1.3338304508691319, -2.838826297994906, -0.6706495059056897, -0.2112553589247857, 0.4093088155814143, 0.0586543436679839, -1.9337244019029907, 0.07171251023300006, -0.453400009742923, 1.1415999381407176, -1.1548675809496596, -2.382993633047374, 1.665455784920222, 0.36977079711240063, -0.535727132830006, -1.4579294636750366, -1.6520070983625739, 0.08837369320935094, 1.1015994425060465, -1.2436747485612611, -0.16173195775871396, 0.7874586254788326, 0.8455365274680086, -0.47385229544186175, 0.8581794726994194, 1.9141693890868874, 1.2111468774347625, -1.283834409703804, 1.4122001960991903, 1.4246122083213058, 0.09617143246488447, -0.680416520345397, 0.7939074419436761, 0.05082061802593895, -0.3375681951224267, 0.2728075634559421, 1.8677062690963786, -1.2849446512608989, -0.3646522458534046, 0.917024620691813, 0.836213051287984, 0.4199460834454394, -1.2038519270531134, 0.12232264627089835, -2.2232529926712767, 0.32822411605932045, 0.2221878465543045, -0.40914638546335264, -0.5038836046014628, 1.8256305544491191, -0.7565556539701808, -2.7739792692396126, 0.28066845231027215, 1.3738789070045716, 1.7661381760831198, -0.9580232806819591, -0.1780922624537117, -1.0984645221049045, 0.12603798766445923, -0.1849675475219486, -1.4475049162679143, 0.9388707018063479, -0.5362768656635394, 0.9452817076530887, -0.37341197131483667, -0.2629170752516286, 1.325991973487167, 0.9619471376599076, 2.1975015359014103, -1.9973341541819725, 0.8588312686492864, 0.13666135012685632, 0.3102389236196128, 0.6936509306420062, 0.05434653570011313, 0.3886040413097377, -1.3881648803578328, -0.24232672717865358, -2.3006844443180974, -1.518751357394444, -0.3706901669875656, 0.7539809084190491, 0.4912794553641408, 1.285898467547851, -1.2234469904502512, -0.08958864363508236, 0.583078020131131, -0.23178079681176902, 0.4769446061135408, -0.4016965792806681, 2.1618387681417497, -0.3808916318031749, 0.7019003947692466, 0.6921832736273762, 0.2010723299967834, 0.23634082843208823, 0.6056544806575411, -0.11651743275509928, 0.5766313042860137, -0.5190655005970012, -0.4579416002427724, -0.424209530527786, 2.232559210366838, -1.8171412233712165, -0.6495312007257151, 0.01454464350825512, -0.012160378768442833, 0.45900058613553946, 1.622427208224704, -0.8381648037082366, -0.06922690164521429, -1.1571533446018838, 1.2962530073258305, -0.4164012434169487, -0.14957792428793357, -0.0966188865041463, -0.17162818417291137, 1.5823601195567514, 1.0185460546773435, -0.27435903244422055, 1.0624307534321238, 1.6824917464322542, 0.3499999101405133, -1.7539284490002658, 0.3415515608898923, -0.9304971196835875, 0.04252683790482448, -1.5965834974215565, 1.3596129553980816, 0.5975052601318105, 0.7282491018628274, -0.8685422050617817, 0.8955457613350786, -0.43664776638074715, -0.8206970291571989, -1.2898007224720796, -0.3186171612571654, -0.3330818341118064, 0.6655752973348447, 1.6764347205970604, 0.6078743574830635, -1.2342507922222805, 1.9210718505914963, 0.26510984025007406, 0.2685882654026507, 0.7102430456245953, -1.0462145584529572, 0.3857191152427833, -1.8835805633826779, -2.768761193953574, -0.4915726819365157, -1.5089924717034593, 0.013278831567490521, 1.5474176875871273, 1.7045030442907954, -0.7048211460588357, 1.0382872389284454, -0.4236141117291399, -1.1507654519546344, -1.6074537360491772, -0.7267874141115397, 0.11876040295645178, -0.6408806028454356, -0.12049820175789154, 1.1256684566373316, -1.1503658259476168, 0.3808406082354331, 0.16166298056768014, -0.9796873977838907, 1.0438547113586458, 0.2695904409689415, 0.7097366282641338, 0.36812978605144314, 1.1038117080137047, -0.5807051449206111, 1.027731721586947, 0.9661580338116212, 0.2598371929157506, -1.2798102496315147, 0.8352067419464927, -0.1452621149892954, 1.8549267889124994, 0.5665323669164135, 1.5421593189692089, -1.4677264718771512, 0.9585639718948312, -1.6479655417171202, 0.22271257385409565, -1.161398773427602, -0.861813501728504, -0.33065924746715947, -1.2370435572165541, 0.13012798200740622, -0.17426050640126142, -0.38744989631009263, 1.4307827967619229, 0.03543562533000589, -0.9972687727886126, -0.5170550450401604, -0.7750247609617125, -1.5190613124777796, -0.45895251295378553, -1.8056739512190008, 0.568360571435928, -0.2004869809428556, -0.14483685708825503, 0.5258043449164731, -0.16813587996429707, 0.10846389250099084, -0.05315797521827668, -0.21651365686613308, 0.06006145597959008, -1.4024064633139812, 0.689880904910238, -1.3428757039530983, 0.4589303661569864, -1.4188669947772765, 0.29352168212647334, 0.7308608932842507, -0.1353758679174761, 0.17358923934048226, -0.40216684119518126, 0.43993814071860016, -1.2871086596268482, -1.2622185432193231, 0.5955345200199184, -0.8657767655249429, -2.0777147735575694, -1.0097475327974674, -0.29221483234147594, 0.2292766310482291, -1.1056969652514455, 1.4876657299426514, -0.036104835108870456, -0.6423673306131062, 1.17645837315232, -0.27627899423171265, -2.1294237281854707, 1.0389397167884664, -0.6156099069368945, 0.5660062401217804, -0.34735225445425977, -0.32061267845758085, -0.898048854923999, 2.3890802889591454, -0.1207700865946951, 0.9658162458846846, 2.1295380289836494, 0.22730977326083576, 0.307795221689862, -3.159470294922449, 0.8956823805247126, 1.4364518339011614, -1.6940979672180807, 0.165976015208281, 1.0227277830757575, 0.9471964236813554, 1.3689187788341273, 2.0082590219654723, -1.4127390079463908, -1.4582830839548455, 2.057655232622654, -1.6262107983377108, 0.8065089603585295, 0.059317700347295395, 0.13330649608758663, 0.41871631403681064, -1.6670993078179417, -0.4557222192488648, 0.8358412168608853, 1.1485241583907668, 0.42382769612443416, 0.07067530896807704, 0.7805845452452761, -0.9230705042306333, -0.7008265657860365, 0.1238579585529523, -1.5033879105374937, -0.8006324477609928, -0.44793642959253405, -0.27299529722657506, -0.42911609794809474, -0.04754182561350199, 0.4678169668023181, 0.9609426463686324, -1.135854381028605, -0.9604027706620838, -0.8759778130611081, 1.3255392992467154, 1.4437271577682296, 0.4932168845856174, 1.1198442202865473, 1.2097953377572856, -1.4782787622655886, 1.534331937472566, -0.18592464788213361, 0.9065510875978713, 0.2441526620364802, 1.2142409950847504, -0.005934606839626211, -0.19071981471485608, -0.3040583507442866, 0.060081676730458174, 0.018762337319815515, -0.9902130995818926, 1.3074986871427252, -1.2758677347357341, 1.0698936415205338, 0.5702156020946687, 0.3041015469962475, 1.0315316803895331, -1.3625531333588328, -0.4647788936504099, 1.3043793230085174, -2.2931238782528447, -1.8655685521053629, -0.9669629869645776, 0.1883663353758491, -1.0634824082910936, 0.8013306975599391, -1.5443624045591937, 0.32715347959892516, -1.1042425552504813, -1.6161041406680392, -0.5109993363057571, -0.9190886093343267, -0.6077428272848499, -0.5002569071129503, 0.9756689510277916, 0.2772218606494787, -0.43287852998208237, 0.6296681915983172, -0.8502843261320427, -0.9505069068832771, -0.650584341206366, -1.661723761397373, 1.007089074815852, -0.11873490106540271, -0.1272993611104505, 0.9298614676390998, -0.5153289230941936, -1.556702035787103, 0.3807701443952423, 0.6123807492207072, 1.1867467887368908, 0.14654907176430795, -0.5370416367498603, -2.1139883997425315, -0.7876830210703504, -0.6237996086335619, 0.13592084587607914, 0.6393276776955494, 0.13991569771729745, -0.81809230737367, -0.6683486553698732, 1.115178173122076, 2.446771414213701, -0.1637585890568815, -1.1209704564711065, 0.4467511515071406, -0.9534092482312004, 0.3182330919933401, 0.271683759433474, -0.9573363828477164, -1.0712413179694105, -0.30255813778652974, 0.958247674089883, 0.4979415521551006, -0.8376872519699228, 0.022535961046091832, 0.6840510626836408, -0.21077828406318735, 0.584447240190305, 0.3410263701239205, 1.187176771555195, -2.1172358171100973, 0.30995019232039317, 0.7901976578611829, 0.30913468523891424, -0.9844146654250953, 0.3474506697688135, 0.6259418281233743, 0.4794626029480261, -0.06173762343825315, -1.3627102955192472, -0.20031835021540442, 1.6870429458740388, 1.6083459881399655, 0.2789050227337342, -1.2719884064904396, 1.1853106830638485, -0.9913580737072663, 1.2233104543278213, 0.8134432318899081, 1.886557959191833, 0.11022533467624505, -0.7681413266984113, 1.436892344457456, -0.5556957709754798, 2.3038212660346935, -0.682772274731363, -0.4746168209407287, 0.5511129315383609, 0.4215246673091607, -1.4860625654820405, 0.1897176503580621, 0.44020540443738876, 0.7496215071681255, 2.552398472469107, 0.7607506386602476, 1.0820709259858656, 0.19917231987970416, 0.7942499355919473, 0.19973021075409347, 0.29481380935757473, -0.6357637486064631, 0.12863791178542627, 1.8561515112410554, -1.4521073859968245, -0.44690133813439353, -0.5281516778029656, 0.23031228507637702, -0.05163289925469105, 1.4531091939178806, 0.06594794127602743, 1.9158929778743325, 1.3893544881471012, 0.8377158542991587, 0.4599670791005717, 0.6058828013346426, 0.21069233748771843, 2.0847766207434564, -0.029268516047371095, -0.3252030660188709, 0.13202105483543372, -1.2051521919108732, 0.08810029046160057, 0.2998899394140385, -1.329901911797941, -0.35244571721201917, 1.0093949421205954, -0.6561924048355037, -0.6769220785633787, 0.9004707724740563, 0.4215313341559502, -0.7375271922065233, 1.0706249247137103, -0.028892244945197036, -0.5183281825357204, 0.5736153002965058, -0.3758685831678415, -0.7918995871067815, 1.2782634446781616, -0.6356995421752419, -0.4833863369287177, 0.9974534142023732, 0.29124328932605514, -0.8236355220229586, -0.08699050597488259, 0.6590141733829847, 2.441583292882557, 1.8873452628569025, 2.2474275746061965, -1.2084812281924566, -0.8018851520041654, 0.6759181159646618, 0.00313769957548172, 0.31474207170695445, -0.07736951126774436, -0.25018161293926583, -1.2830507962514812, -1.5628441907653305, 2.8453969247062276, -0.6342184442111992, -0.592854552706071, -0.653723999513639, -0.76565949917059, -0.730526998162015, 0.09075307806432394, -0.9481548645415303, -0.04755585978648472, 1.3476101538895733, -0.9875559107864285, -0.7896939152505444, 0.4816267344514175, -2.1648165937072137, -0.7268788889746165, 1.2960347147856455, 2.9109429440400323, -1.065376273609101, 0.18513796404565092, -0.8814138828253623, 1.2409135508501319, -0.012877656665903105, -0.6476617613042353, -1.994768600369764, 1.3443028214739667, -1.8514533014456531, -0.7379582086548833, 1.694396228823381, 0.4026562338082194, -1.2758466479856054, -0.25334115795781886, -0.10298131523967101, -1.3748667924232236, 0.6293890561733958, 0.2738888278899806, 0.5612373487486728, -0.35340678348969806, -0.736843748234479, -0.40367835808832514, -1.2439466232262497, 1.2570138663363715, 0.45632423807954914, -1.170707965548015, -0.9587623429264018, 0.6425982154718701, 1.5567146540543542, 1.2516374448322218, -0.22322323181634318, -0.5695167025136576, 1.3827725588378879, 0.529065899193698, -1.5470827592965664, -1.0944906269170949, 0.2905472841355263, -0.987585623182969, -0.3515621243107407, -1.1366040859833553, -0.5160321145422849, -1.6442173347711861, 1.3423907595439113, 0.31986604002016844, -0.5786595172834021, 0.73801532386848, 0.5788365796442495, -0.7375548663739422, 0.45423130001442397, -1.225358779977498, 0.7678067565519512, -0.05078757448886205, 1.512293872317004, 1.106989348588503, 1.3272064524680798, -1.0102290516604413, 1.3418085812620126, 0.4314053354881663, -0.8698836928173348, -0.33508116195249105, 2.273858285763485, 0.41127055898865217, -0.5417916233776102, 1.3173262896619646, -0.06588492371272986, 0.5969382095462551, 0.6197204718248582, 0.3742348312569251, -0.04007772711014461, -1.6143631344300409, -1.2617480510616137, -1.2401273803885422, 0.3822358970465057, 1.8061346386866513, -0.22702264172388117, 0.37048462734622856, -0.11799395539242921, -0.005235059103559137, -0.6489984366966667, 0.7782101694572308, -0.024126859434724878, -0.09798935833649829, -1.0417284651310414, -0.6605483359597034, 0.6972000521784677, -0.15225780204879624, -0.36034171752445354, 0.5934576132973614, -0.25056255516564263, -0.7310153609877714, -1.8861910032233697, 0.254480151361828, 1.4148114593503607, -0.8002251737459469, -1.3914075562421209, 2.6894920671041236, -0.1506644941293263, 0.4047667831579401, 0.5611273432518382, 1.779203788992058, -0.48565136522391056, -0.26653744823132164, -0.8829510316719237, 2.532755174768609, 0.5582799591535964, 0.3625488756486719, 0.8429610656748877, -0.1422677046514221, 0.059560937411363916, -1.54096863376706, -3.409308449483486, -1.501482227036858, -0.17084770021492382, 2.3317238025849716, -1.2471763217303788, 0.6742533376141315, -0.4671654422272103, -0.7254154200533441, 0.23441703660981258, -0.4694323705405022, -1.612196166706617, -0.32563743615759183, 1.3898422646804982, 0.859146411700291, -0.2601661523404493, 0.3217117418244543, -1.0494347817905338, -0.5991667659706216, 0.8881794866760082, 0.5840210011255069, -1.2075635705473267, -0.3377101947699321, 0.13603306699179857, 0.5802301275309478, -0.704852221496425, 0.9615592481981307, 0.5450775566697076, -1.3780611142397772, -1.6167118554509825, -1.2811556928029282, -1.2724034602241299, 0.16120409249117293, 0.42750602102457846, 1.2666174612779004, -1.5508664421057543, 0.2620798945065646, 2.0332984208088303, 0.1261854523088127, 0.8345628189160572, -0.687707400490003, 1.0656169293117534, -0.31887838781706285, -0.005112174834790412, 0.2023207919468502, -0.5067392202386992, 1.823953396894383, 0.1523428263375545, 2.2440789764565605, -0.6697609733471732, -0.34309395149284333, -0.3824068477398153, -0.33303131558596377, 0.9716664193169441, 0.8311581421420695, -0.22780854741625758, 0.20032616901737238, -1.2785511330679982, -0.3197180135822623, 0.4959834053798831, 0.6752515974385053, 0.5334780166422973, -2.002795187816773, 0.27050605525523075, -0.9424869426824867, 0.458248932225858, -0.46118697878329784, 0.47832198627914324, -0.3661079341479641, -0.09319576406942727, 0.577819340020893, 1.2520997452677414, -0.2933921906178384, 1.136343377990995, 0.2468127074537116, -1.2252940887079373, 0.6375579341674809, 0.3462788965739153, -0.5177836733288577, -0.035284483529249705, -0.5338255181822806, 0.5193809161508848, 0.21798950092913766, -0.6956597590579882, 0.8046664677176151, -0.11463713804889088, -0.19176077914163675, 0.791885645189318, -1.4328882682847868, -0.9528659659051965, -1.637558975422558, -1.989264868496837, -0.8459538105074142, 0.944828292676069, -1.1921028346027158, 0.2546472038919744, 0.3861916389251654, -1.521512495954636, 1.535375205330882, -1.8914196543962882, 0.5149418901648063, 0.7752013519581096, 0.9145512827088738, -0.5080387911664219, 0.05031436015329658, -0.41216922303342934, 0.37227191099516266, -1.6600720014787667, -0.17968185610490092, 0.31830407850338693, 0.7686158224111359, 0.3658407552939923, -0.7165726159358554, 0.013357030158994452, -0.3372894061190394, -0.6789238357123408, -0.3832898769073804, -0.3227036184382978, 0.4460521819485986, 0.061892643502349666, -0.32267506934792967, 1.484633534363464, 0.4021774493619681, 0.4307762865129178, -0.5296069271797403, 4.151195369087241, 0.5487000909862146, 0.7163468748574175, 0.3808084179332832, -0.4772621640085183, 0.5479157515300286, -1.1044576899329694, -1.2036713335057232, 0.6909028182382742, -0.6529263174772725, -1.4725628267518027, -0.7473406606454858, 0.7387557364279378, -0.8760308731605688, -0.967180804004829, -0.49221734292555436, -1.4382474439405089, -0.3481040054911766, 0.22254446316102353, 1.731032969663649, 2.8055652681876384, 2.1160837251189757, -1.379194059803083, 0.6326539345516785, 0.15520482328940885, 0.8119547790137315, -1.610952801893542, 0.008918798158614715, 0.477564041851444, 0.25533528319659754, 0.998197782393884, -1.6484421505039013, -0.3004410869764593, 0.6057050457224126, -0.32020257217470566, 1.3359336989858763, 0.535133451920879, -0.5673962878727761, 0.24055606737735033, -1.6590194676777759, 1.9066265876591473, 0.2721183739248777, 0.06834872118107038, -0.7693837262978656, 0.6000193521872865, 0.20157135480173424, 2.472674269826056, 0.8258740084136792, 0.47137911495882484, 1.244572899040009, -0.3130562609295631, -0.7435497606216963, 0.13509423548484906, 0.6656236185332783, -0.5980179153119386, -0.6435416164377876, -1.3312882258359282, 1.0671430529417514, -0.09759042594372078, -0.35648374184511217, -1.2269456519162936, 1.6814992783555787, 0.04184788447848968, 1.68139083696507, -0.3030041682277847, 2.2849057798957273, -1.196531329787736, 0.6523992375423346, 1.4893905469952924, -0.6823297566186022, -1.1041446305707252, 0.4421841974696293, -1.4167436314301174, -1.5920898580925384, 1.4343243359414184, -1.9045005981467849, 0.057069471507391965, 0.5278224067845345, -0.7362602350911139, 0.19448161568570255, 1.5261487666748228, 0.004388839910851893, 0.015470814085829732, 1.615975884645819, 0.8879261649672402, -0.1326774466682177, 1.9382951563961202, -0.44547041979800195, 0.021230799239171535, -0.1571038497582797, -0.16148117044663435, -0.36447608885124355, 0.9360978659212479, -1.9835447885628907, -1.8064899970710941, 0.9036470769919311, 2.425086908712557, -0.6272015905517969, 1.957160646153106, -1.7538826809290353, -1.2373863108002687, -0.42249715021397544, -0.02100757430425144, 0.7526038212912296, 0.2047007870068672, 0.570705167349308, -0.7783611682766279, -2.3095477705978107, 0.22606718794222244, -0.32290132655615966, -1.597852946819715, -0.8952260637834641, 0.5568680007496093, 0.31733948888023006, -0.24697424901807427, -1.1633182632185708, -0.261549901914151, -1.855510767468883, -0.12245837196266503, -0.041080160924985655, -0.585409894265932, -0.4138566348289641, -0.6980329178942006, -1.0029216664042124, 0.10979946351080472, -1.6542257294131706, 1.393533502384212, 0.5174318732191945, 0.30147088153612134, 0.13176508644926532, -0.21802556521053773, -0.55329143084434, 0.2739291983626038, -0.6883020380352294, 0.6825537252923997, -1.5046508987238285, -0.5828333121318955, -1.1884290907589348, 0.1665509776472768, 1.3971140199197725, -1.3673567412727532, 3.0130147873449924, 0.7896539284272303, -1.055832543621147, 0.16658265730062774, 0.5232158049212052, 0.28570121739370363, -0.5325889850018535, 1.2918469178499534, 1.9819733294664026, -0.8093143209894869, 1.469595195954295, -1.2932943712519451, -2.1208284016640415, -0.4050898165492931, -1.1517011911443218, 0.8998956145443444, -0.23384644657433187, 0.526560658434697, 1.1222026129349756, 0.2160342440751586, 0.6797496626133915, -0.5331175042591417, 0.6637291624241468, -1.0147033164625645, -0.5049005083720637, 2.0659370602844436, -1.5900216896103532, -1.5339789892006166, -0.3200566858112642, 1.2830977533887504, 0.04654283897838462, 1.7838815763897529, 0.3904401499994594, -0.4111612807908421, 1.1847627666014435, -0.3955642857036182, 0.3675601425931492, 0.088662611923031, 0.46299757634197497, -2.2893235368562155, -2.268927460602336, 1.283516393286584, 0.20920007589000394, 2.4411204448502586, 1.1389069409067243, -1.1898031767179975, -0.43341406963651063, 1.7741298995608883, -0.016709317081657786, 0.11517899718492178, -1.5511855060356194, -1.3117417253404795, 0.13351391911792548, 1.1637653113813886, -0.27570074398670863, -1.5697680634730649, -1.954956462100421, 0.5552656916393576, 0.2373994429321212, -1.9303747103380289, -0.1921132978172397, 0.6250698172881495, -0.5949372282094622, -0.7826608913130164, 1.4562229269964548, -0.5416543116490529, 0.6936768940278385, 0.6261775893704643, -0.5859171652539004, 0.8555032381807751, -1.3676477362552337, 4.238533804853162, 2.4545185017647904, -0.913404759221193, 0.4250981319720471, -0.9763799065871701, 0.7808586039540816, -1.0328656450097617, -0.7721604644533069, -0.3530813727528884, -1.5411637128692925, 0.6539840707892913, 0.008229110336607592, 0.7966890453416182, 0.7037436956153061, 0.6614113279704881, -0.202848267721112, -0.29922308805427594, -0.5522097500427048, 0.09875065962242098, 0.7083328933399845, 1.7362802880024957, -0.2266535118741716, 0.5299005404626365, 0.6719364752934611, -1.8615906591576734, -0.09068813508526216, -0.1888891414579059, 1.3423077781666952, -0.6924470819765697, 1.1041424493388294, 0.4134851965057971, -0.4735791706069265, -0.7356651547484112, -1.575469178834194, 0.2059058482018911, -1.317543434131728, 2.347983690185328, -0.9350302948592141, 1.0039027596124084, 0.30969112449845376, 0.2541035100649089, 0.4211688015877788, 1.0647819562744412, 1.2886070484626828, 1.4453593413552184, -0.026423761925036916, -0.10046863824315762, 0.9375145304857443, -0.8794152043439424, 0.6161524124555712, 2.1765363841706007, -0.17519057418498793, 0.40239774219958097, -0.5314020562312248, -0.028260581879397745, 0.5266158478069836, -0.8130604924415793, -0.1620471073410965, 1.368895928096441, 0.2544222901453687, 0.0682140981898076, -0.08305873685961358, 1.1551649925205691, 0.20488815881813946, 0.9788412565833704, 0.6730413277634831, -0.10343628631794778, -0.011056773466636922, -0.26893242071811874, -0.22234819963659333, -2.063667484853198, -0.9528556130697672, -2.298918544448265, 1.4641851715761252, -0.6443216828282126, -0.7448597363782805, -0.5637254977251447, 0.026036289664867818, 1.7947458799857385, 0.47823466572724166, -0.6009031631006543, 1.5622161381793802, -0.012361922782423504, 1.1320815868058798, 0.2666111797781486, 1.0800481352272358, -1.3534368975569377, -0.12565159569358056, 0.8269760280151415, 0.4101805250340873, 0.5459250834776258, -0.578841318268924, -0.7708632540651004, -0.004711348442621566, 0.9139140784227678, -0.5887863731031122, 0.5255711160933076, 0.6899347371240381, 1.8406881042526044, -0.1494953868420972, -1.487372075437836, 0.04531226841225139, -0.8785887917514404, 0.6773321050874577, -0.0983506278141217, 0.5597628029545394, 0.9487620637619515, -2.0252012328413445, -0.3325641975286207, -1.1258330017788327, 0.023802932989263906, 0.42532764883918267, -0.1719694477750812, 1.1366386876717014, -0.06950662371831764, -0.5610077364219385, 0.6924775343736279, -0.08202929488370111, 0.03632839803067284, 0.2035677562126695, 0.48902609842042033, 1.0804149661369027, -0.7425106537204975, -0.5702977393123885, -1.3826240552189546, -0.5228635824639636, 2.541990031610674, -0.3358484399232096, 0.2708627260856431, 0.3577767439219406, 1.0481739531875494, 0.41502512979161693, 1.945039667472124, -1.333971998047096, -1.6319888693166744, 1.8081668907285702, -1.126545357015281, 1.017481115516176, -0.8746343950821853, 1.613464623094451, -0.987275067228173, -0.7782780233402289, 0.9358137937887636, 1.2685709811916313, -0.9922941446951046, 0.6495420807278994, -0.5015976512021791, -1.4515930568861974, -0.3017145427194569, 0.22396206990737433, 0.2449168875921067, 2.4353212694888504, 0.17708064085180888, 1.6379030780705819, 1.3277860775740942, 1.9763199313325732, -0.7129095818443579, -1.2469376388413769, -0.6242116235182271, -0.48041188552500946, -0.14268548581723478, -1.6604837693733687, -0.03806802185256857, 0.6963957195724964, 1.0623750746697818, 0.6233441558858677, 0.36657697739573364, -2.295074935487194, 1.0845561474708743, 0.4905268784109729, 0.9510955040687479, -0.5026253874469225, 0.5855406556971665, -0.4674907407543193, -0.5608509773657036, -0.054561000082436986, -0.13488620479039842, -1.6100667806518532, -0.3709803597469035, 0.29582203102054655, 0.8410085106517383, -0.6645326878187746, 1.1367845966619665, -1.3201243250510812, 0.13674546078719402, 0.9775512964502551, -0.6593867653205457, -0.16315112660697673, -0.6429666213286755, 0.5269463017070531, 0.13689944560905168, 0.2704736580667669, 1.0956057892301136, 2.0377599847068084, 1.1896914387079371, -1.1056334740369136, -0.061419064162327903, 0.6558988396743295, 1.1616563231258492, 0.05233437675572931, -0.43279599457514883, -0.6310196056008639, -0.07017445588897313, 0.21859133324465385, 1.7464304327601714, -0.38374464463022673, -0.4116300533373271, -0.9012559637626759, -0.29838378562277373, 0.1776181377502974, 0.5337179529206251, -1.6927309440114802, 0.19627841167268098, -1.3375053577369045, 0.34292489957433187, 1.7252380623451755, 0.3893308049876548, -1.6138835583138924, 0.24320533391068808, -1.503402740971457, -0.9820815913055403, 0.02826537327258336, -0.8677808012629867, -0.15732458310810252, 1.6448055242437023, 0.3882793537178024, -0.4745596075074129, 0.1657838803136746, -2.6918015152661914, 0.7632486195032542, 0.6973513947209198, 0.4101471209696532, -2.2799074841609177, 1.284770153684539, 0.03995086580146711, -0.2991581182473426, -0.08304172354784842, 0.28042933971050626, -1.0923071947444258, 0.9164084413681113, -0.6812760370027394, 1.5480579290916134, 1.4837613730950547, 0.023182419970626405, -0.2668022486973583, -0.1188765567232481, -0.22450605274030175, -0.01068777580695019, -0.5681288373513323, -0.798016193089919, 1.112093456749927, 1.4289069908566108, -0.8325323358283204, 0.6527204397669472, 0.45576965736433434, -0.05177234665505003, 1.1825820243015825, 0.5633724078799881, -0.2598338582029702, 1.2260636343236992, -0.06502314120499497, 1.3554177601202826, 0.015378075446720483, 1.771795744777381, 0.19716116753361734, -0.9289545353666014, -0.01120548540552129, -1.6568561810835647, -0.9711632993719995, 0.2888457566302567, -0.33812030790826947, -0.6944997091883152, -0.08753361436324024, -1.0825962267681306, -0.4698117598324523, -0.31391779051735585, 0.5155485258897468, -1.3906426323765313, -0.08794713693189429, 1.323299166667676, -0.1281180737897692, -0.7313549630276092, 0.30727046798040325, 1.1752251844693715, -0.7441249207177553, 1.6052690350217986, 0.18649308224250258, 0.17892852927651728, -0.0995691575256924, 0.4348534499771249, 1.484991734895783, -0.5720258392859724, -0.08690696328546704, 0.7713939696120472, 1.1722789472312292, 1.9496467641354467, 0.22942775691626238, 0.7124499254350729, -0.40961823346856296, -1.5841557574786587, -0.5783735657948544, 1.7072885072301731, -0.9760682458530513, -0.7133260677207641, -0.17406636751269225, 1.5115376392568705, 0.3444982802650086, 0.5618620561647593, 0.7768151831330067, -1.8495980414473379, -0.022772431183660354, -0.2688258642531703, -0.2316501235768239, -0.4349049986098626, 0.09524082099485014, 0.18287945969711975, 0.9756566821517488, 1.2112951490716906, -0.8350588047652798, -0.7894781658614808, -0.8425885522378407, 1.0078366331542066, -2.170943513352494, -0.07697039348999336, 0.624710432231761, -1.5714538060400307, 0.25497055299290833, 0.9193656642088831, 1.0914383490187152, -0.2746559451582547, -0.24795001040712014, -0.1821963308600328, -0.6151863420266909, -0.07974289047525698, 0.864835252508244, -0.11852133979339911, -0.5867385141837459, 0.7425778869302543, 0.7772435416319093, 0.7418518577569089, 0.18477538422252776, -0.862469199675159, -0.7201960090993764, 0.7441788487719844, -0.44740979333359115, -2.011406066578824, -2.0397719472330946, 1.6317617740438857, 0.501298361621573, 0.46480805036189093, -0.6492071444203512, -0.9962577891956758, -1.176143672100762, -1.460358133281756, 0.91939184535992, -2.6115193413417344, -0.11701441464426601, 0.36330899947821516, -0.7619851206952822, -0.9791836397007687, 0.06605184536205168, 0.9852736131214399, 0.18316974821162169, -0.16385983370688456, 1.769889718870536, -0.7568083172666948, -0.07093554823462433, 0.34915804932546474, 0.04394955212420144, -0.3412151969411125, -0.037998909530440356, -0.7920940693112494, 0.23924283654785033, -0.7218726802077204, 0.756794397487571, 1.129998141517764, 0.06199671202439378, 1.5818825635871332, -2.0927309142911965, -1.009720388820037, -1.161041154747722, -0.8447671692136892, -1.0157929981350513, 0.7904271516718387, 0.7254384385818724, -0.603295486359894, 0.25924412778603606, -0.04640660866056171, -1.6000423263326133, 1.8143254523998487, -0.08862538404196012, 0.5332621638876169, 1.1045997215315637, -0.41584450160976266, 0.9441745490519653, 0.24798697093505728, 0.007684578291883661, 0.10198392659226542, 1.6199201784700468, -0.32528736620138143, -0.5826981266958557, -0.36325256797247957, 1.1471577477638135, 0.6178987140946427, 0.36972297251343633, 0.5437284650592201, -1.4459624565283546, 0.05792287061159475, 0.41648235426252744, -0.3752827187450667, 1.6652887251405053, -0.42564437336001554, 0.9761973006448895, -0.7275241033025399, 0.6934458083833381, -0.29112188437100084, 1.3282243166189927, -0.9536927875603478, -0.719434212611784, 0.6748136465043926, -0.03597354593983007, 1.94009058703115, 0.09882655123973512, 2.1053876175385304, 1.4185342675315131, 0.1206620765251783, 0.14903745714080963, 0.10442318495551679, -0.17795681161591564, 1.2580662909953826, -0.309432614193383, -1.0905944849250224, 0.4769931537784153, 0.42744787996997274, 0.015299040637353436, -0.35211140544489866, 0.2588719668529644, 0.39806242670614195, 0.0982957694556772, -0.3643039151707563, -1.661352851241187, -0.7050125329026734, -0.943960952206926, -1.4473953121799084, 0.6926023466644213, 0.284659435800313, 1.6730413075943111, 0.6423676343810131, 0.3968310937206259, -0.8342984203305135, -0.06635863092332817, 0.48133940282415283, -0.34365908316039695, 0.8195486752084361, -0.2781857864218842, -1.0136587780355568, -0.4538474341770635, -1.1337344789342048, -0.5150244531135606, 0.958566232938252, -0.16105129432877321, 0.38436738614303156, -0.5172439276028532, 0.23093709347387772, -0.30272270953081704, -0.21962749662435752, 0.9566459591875526, -0.788349928603636, -0.44952615913370747, 0.525332205545319, -0.5812548660484521, 1.2956320514491553, -1.752164482642109, -0.6047121066028011, -0.15329007945272555, -0.04110361189064399, 0.2075100652227872, -0.04955642332135181, -1.2847570979710345, 0.4806820630644186, 0.8112350665109486, 0.577438605043487, -0.5506815219471743, 0.7858766373478445, -1.101050840231404, -2.2244251571050273, 0.09434075969634925, 0.19198836106624168, 1.0670984516256519, -0.7989553140491875, -0.20794218769948203, 1.5326125420890269, 0.020895643272767377, 1.429434237396836, -0.09226519337744446, 0.2530160966559398, -1.2052909073582596, 0.18629835668130743, -1.1412717735009497, 1.2293983703310951, 0.20963090073800605, 0.2771037033747804, 1.1176243523307434, -1.7749390137644867, -0.6160566595276167, 0.37431077650255806, -0.628817850166509, -1.5457989014436102, 1.0413567521072367, -0.6687052895376355, 0.08823501338384936, -0.8504561089335623, 2.674041129993747, -1.5899356389768722, -0.12358228035838018, 0.4957660906211637, 0.31851942141963985, -2.077120767009975, -0.5844799194788266, 1.9510391355162264, -0.347560684365186, 1.3086755801775074, 0.34475766053720236, -0.4033872470813162, 1.1582973308383313, -1.0684599760113471, 0.529968393960725, -1.6526921510620116, 0.9524384542696674, -0.22909069471152455, 0.6652418786019982, 0.0030589233668147898, 0.11365610389048802, -0.2480098634476716, -1.739708416005498, 0.13128969246670458, -0.8124775515041727, 0.09211054412374194, -0.5372875032406812, -0.0032089521665293573, -0.8316736236057737, 1.5059153046848375, 0.5055489101297763, -0.9926899954404349, 0.06717218616117565, 0.7564225434228204, -1.1172446398752929, -0.0971278427942958, 0.1783634876571702, -0.43831740139818265, -0.9897246258630265, 0.42789947696918956, -1.1881782474146696, -2.2595621851300622, 0.6418731773450146, 0.2534262764606806, 0.4316556467189196, -0.1404488018967209, 0.8263074484867586, -0.14552757065621125, 0.0789242186302759, 0.8209702417714765, -0.25903816299191046, 0.6767653743426741, 1.6145117461589933, 0.6926264703024766, -0.32214772217430293, 0.9292349516554164, -1.0508805938355477, -2.749764645898245, 0.013188601563584493, 0.33055296889149677, -1.1958215283600067, 0.1405450269372766, -0.508425415799171, 1.4570136536517577, -1.0251431195020073, 1.0969073653806085, 0.2995765466625078, -0.7079203015696985, 0.1288388731533383, 0.7296772632654821, -0.5084827629757859, -0.9959874907849151, 0.7608364139386558, -1.1970996777698375, 1.9127937929371042, 0.38743478707694207, 0.21795474706617954, -0.29993899538603785, -1.4785086866034736, -1.5956467908439216, -1.2082094773229581, 0.03773293580577447, 0.790311941516555, 0.5111896121176778, -1.1940258469292004, 1.2227006637979814, 0.836882842830787, -1.4311686461788606, -1.2744460342013122, 1.4644637457684015, 0.9728193611804964, 0.555860074890682, -0.4409659816734968, -1.268835784551248, 1.830337701005201, 0.5659326920677746, -0.5949593269450844, -0.48933591057504616, -0.5902894454298842, 0.8313257587194035, -0.014541865211528828, 0.42819120074867917, 0.12344083343107326, -1.5259370836437376, -0.4422937354316872, 0.2663102136658507, 0.7711270876630171, -0.6631414912664546, 0.7010024223490354, 2.074527616332793, 0.1267033512168494, 0.5771332153363341, -0.1669943788998164, 0.37570932219774306, -0.009486467375681047, 0.6339720925542973, -1.100679804820569, 0.208089727845949, -0.9425617416684303, -1.4440593374039066, -0.4882367066101957, 0.7163657255326146, -1.0357588950466872, -3.0737220356886374, 0.2470950795522819, 0.2864288554119523, 0.1483978221958065, 2.1154989451643167, -0.4001965762118845, -0.6462203956080385, 1.1265359562700552, -1.2596675882237476, -1.0043123290637297, -1.2085727111478823, 1.4452610642730932, -1.5066630796353353, -0.26195290731609777, -0.14271399927968614, -0.6530276111308737, 0.31402361422899266, -0.615575261840529, -1.5382467581744872, -1.146638529472436, -1.2566936090246918, -0.11659270837613013, 0.35542964402643873, 0.02526277564568483, -1.7743572584114875, -0.7085383632824588, -0.63517949386522, 0.7100322417458258, 0.37725139473966673, -0.5759538564824571, 0.08180511402950946, 0.41407533287471754, -0.24200104577387313, -0.4385693241008144, 1.6526863394676001, -0.11474769466518762, -0.7778772946580198, -0.28839425476706665, -1.9107601252457116, 1.2251863883694925, -0.6102167805929645, 1.314166180001923, 0.33549111757526723, 0.1642165334041994, -0.2711391207536865, -0.7227241249586495, -0.20242746834599726, 0.511635243911443, 0.7803547739974653, -0.327423000785996, 0.3502846670812043, -0.6690281009028096, -1.603564129628161, 0.651294169982652, 1.5346475986331407, 0.6076831921328979, 0.09553225219459871, -0.7254748961580175, 0.5000694612537876, 0.41285641663749495, -0.6307563086891868, 0.10304359933774031, 0.6906693939179498, -0.6117088277209861, -0.37359085726781716, 0.6415372041475905, 0.5667199392606257, -0.471612466163586, -0.28409429557130345, -1.1000185275940002, 1.2078426552444212, 1.820822882585083, -0.049716516450738324, 0.48541676042055915, -0.24833733761952417, 1.9706194085315605, -1.9357972478544503, 1.2746428725319756, 0.8787450667483632, -0.5743399181816461, 1.146477625622449, 0.82904607165605, -0.6240307749078965, -0.5201093385684066, 1.7563590799610034, 0.9291759054010359, 0.03949431623274768, 0.09878351123218292, 0.4678794507416003, -0.21611204185496907, -1.9415038866503043, 2.2711411739440632, -0.7573422816803704, 0.4462925903632097, -0.7789087537529676, -0.5503182367952988, 0.5971424930574555, -0.07203878009168195, -0.5217028851935946, 1.082108216219426, 0.41790242250612963, -0.0679066357661384, -1.263509598957737, 0.8004808096290376, -0.2541222406082443, -0.2133433497515408, -0.26792364723437295, 0.20112906676382966, -0.32435552792181394, 0.23282205608740192, 2.2221675354748855, -1.4830106452698057, 0.9891247273398209, 0.2603986195227453, 0.4910300720533456, -1.357238648432873, -1.2514963996484836, -0.30125845912815724, 0.1928097450048526, 1.4448018223442105, 0.5625834185014028, -1.1979257187589254, -0.07857776228971138, 0.06045821558284647, 0.7133596907037718, -0.8010426610921747, 2.0440257915732163, -0.5915625781476785, 0.4614571279264127, -0.8323915586162163, -0.12281522077241769, -1.891751987785829, -1.436820011323204, -0.3375407922826853, -0.4583639388670451, -0.09352467965350812, -0.09376078246251955, -1.104789843452201, -1.9113071146131402, -0.3080107984257694, 0.6890879947469407, 1.6298325324990017, 1.7332383276272256, -0.6570721931348752, 0.5011093119580866, 1.4256340832824121, -1.6409542816000537, 0.3031292239641022, 2.064237216045931, -0.051705902095611905, -0.7832897005596622, -0.7454241686325258, 0.7295020332844333, 1.6375808311567626, -1.2299275543889183, -0.5600159935032863, 0.36276227989135124, -0.0841421034314566, -0.34511214955582953, 0.1013965878283084, -0.18098461747365058, 0.9191251794719164, 0.06765779742714738, -0.24919806799835556, -1.7584641099826481, -0.2408943706631287, 1.1586506587846426, -0.6941027599159496, -0.40284176463802435, -0.07218934233754541, -0.6866794606674014, -1.136814985867382, -1.0286542111302972, -1.0753215203338025, -0.523524292626774, -1.1218134808250722, -0.874089313385567, 0.09331272041243248, 0.9386738047553144, 0.09076349142987619, -1.2160470369625689, 0.27900325888755534, -1.3482125481314258, -2.0470437247953943, -0.40859660863279956, 0.2828811548709021, 2.4800984064132803, 0.19294989666278736, 0.28212861056292143, -1.610912083835489, -0.5315801864225906, 1.706608368850939, -1.8501729731293364, -0.630002988972623, 1.4757143328892797, -1.6396479208187233, -1.8371716642350544, -1.0742314481301545, 1.0754611432095824, -0.5378007226773498, -0.3178784375535398, 0.5735335996600629, 0.4868994275345122, -0.21549627729467807, -0.16640172916066487, 0.908080649370133, 2.173437328284729, 0.4190344084566232, -0.9569146506578511, 0.45263575951706014, 1.778059009562198, 1.4488553145210796, 0.07467679612778716, -1.3459068501008828, 1.0900502612985628, 1.8272758673855272, -0.23894381261705294, 0.12043314967623445, -0.5773200285051094, 0.5216921180645022, -1.5092635778866117, 0.18102168205190566, 0.8965052639560143, 0.9201255573471795, -1.2903912922821366, 0.9873211691804024, 1.172724388329733, 0.20376377055663986, 2.138854170658406, -0.9316113182700534, -1.2475280594655904, 0.417911924644604, 0.3104385253889033, 0.8962967028920321, -0.5778036698087538, 1.0180641994003492, 1.978139527067393, 0.37723162368545265, -0.3153731448300482, -0.28043983006620493, 1.2268346250368896, -0.17227523540812437, 0.2580612644636763, 0.7839164309552376, -1.6857109421253955, -1.3003167935540005, 1.933409068497346, -0.720369637396077, 0.5104055429987321, -1.08388129713197, 0.23369005993420508, -0.8857461821887489, 0.21884110679487903, 0.3399839311138383, 2.2927612097100596, -0.1302670929713838, -0.2227227695346543, -1.4346253879586792, -0.8344086694038684, -0.7002516953857244, 0.43509420272323845, 0.8609631356011878, -0.43270705045183616, -0.24001073577599197, 0.28609176501217787, 0.7031717689478829, 0.23204270200931182, 2.1505272334979897, 0.2861763181933207, -0.7584547841123832, 0.5168757252968688, -1.1092933224722437, 0.28264197275089215, -0.7359352757039123, 0.7696916736749783, 1.1693904145377578, -0.03894762164617204, 0.6641135169499479, -0.7147964181583462, -0.3596311141562558, -1.8435871360153697, -1.0008815336080084, -0.8745896149619665, -1.7854772192044157, 1.4101601051693955, 0.3989081511969654, -0.46138352582140285, -2.070033977081843, -0.18644561980439622, 1.2400855648899223, -1.164136732605302, -0.7927090251554685, 0.5630168884076489, 1.1671379510254194, 2.231868835700232, 0.4565350508345933, -0.3389202312449233, -1.5275179745183336, 0.3230936836149417, 0.6082923125809354, -1.385778896370543, 0.4933263314478739, -1.9751095768562033, -0.2065779574546836, -0.19565497391904002, 0.19507228882058708, 1.1491676003071556, 0.47753659551701444, 1.267566892973097, 1.2699972267061581, -0.14783471801597317, 1.3947086641636515, 0.13849276493060986, 1.543713937406089, 0.8793567120723491, -0.19166319681661234, -2.178011595451856, -0.047935435051166216, 1.0519017754831546, -1.1503195176998693, 0.9590735535318957, -0.4101942648351055, -0.9291595233845755, 0.04827969552760872, -0.006591472103865717, -0.8287084685787525, 0.510991782645471, 1.1993354234468527, -0.6249200800653011, 0.06906024810652203, -0.2810131831119284, 1.7132565332176783, 0.3715878450725023, 0.4232188686511501, -0.23751681917622205, -0.284138784599415, -0.9181240192735334, 1.7200351673814782, -0.5646085076036653, 0.9511857419563984, -1.2703881921689144, 1.044280055990386, 0.03786689772227966, 1.4182728427165774, 0.8337325218228854, -1.0587247347181652, -0.5031113248889103, 0.8873021806079839, -1.6837264548806383, -0.963353987660909, -0.3925379775035674, 0.030351645171583227, -0.1480784901933993, 0.5971587614103617, -0.5966536682782796, -0.32585054539846936, -1.2881189235714545, 1.4626168790196996, 0.4876451579697916, -2.5512587798294053, -0.22746942805830464, 0.22714076786745147, -1.2367287849167479, -1.4958341332392378, 0.8404569974160938, -0.5250803172042454, 1.1030214409483563, -0.9430810970721388, 0.8419017021480036, 0.10747778668821155, -0.3872490592960608, -0.5972525446631549, 0.9643730616194118, -1.9150859939615104, -0.16132999883201363, 2.247013458758037, 0.2793924489497806, 0.22445447609820876, -0.5935321078971101, -1.021619853538392, -0.5669336330928147, 1.51072676166332, -0.4577459477554841, 0.2856756020469671, 1.3003683403048245, 1.6681883000570241, 0.29140173625397836, 1.4448227513845624, -0.49337735263206095, 0.3063926208053877, -0.8839906748898476, -0.8508338033152001, 0.32884664967404276, 0.8225807552240499, 0.28615338220135916, -0.6459677898912536, 0.456084692916367, 1.1816323117108978, 0.005750129390048088, -0.23080308943910496, 1.2329424071409298, -3.103298270774514, 1.2457064642869893, -1.438732143788353, -0.5069669088042135, 1.9410370006144513, -0.680135288988108, -0.684441394790031, -0.9299498749943689, -1.0023257557431406, -0.20085573890294844, 2.1892107786913413, 1.0539082768590986, -0.12946159481571648, -0.9603859816501762, -0.6759566438229674, 0.6063321523892387, -2.04080451980182, 0.3448387208567922, 0.6188680405937481, -2.53483233750232, 0.4718381152261103, 0.5204602861759604, -0.37294274011868744, -1.0608122326322948, 0.876995543974861, 1.6208103493973607, -0.10501804755065293, -1.144605534391477, -0.11545809967020526, -1.5254381527091445, 0.704971452166678, -1.1385423962074352, -1.0702260829994228, -0.8042670395297246, -1.9958053298936345, 0.06149218869846654, 0.0034778293679331336, -1.6309611881902848, -1.579450043003391, -0.812854397163873, -1.3440391096930395, -0.7992158635130223, -0.7307305666236779, 0.563033821782763, 0.5929740847991084, -0.4072124328227139, -0.9597031772508735, 0.6326426393413165, -1.26743591058185, 0.012961789096372823, 1.3690236683244486, 0.5626351995527971, 0.3930969343026333, 0.3804639938085295, -0.7055289460485151, -1.1137071825718237, -0.32401279261679405, -0.25360651639701537, -0.3629288727538312, 0.40309857005433064, 1.6124254520554622, 1.145346015655076, 0.18482864793147852, 1.0146132489781052, 0.5762713361888263, -0.4302922143454036, -0.7781673008888688, 0.3165266777932903, -1.3210033528584464, 0.47419403592709836, -0.02875008939599337, 0.14714621419460175, 1.4797797158907586, 0.6830428568029596, -1.051712101999051, 1.194440018218743, -1.1642432883696971, 1.04395640790416, -0.3903019504585278, -0.9469832104094259, -0.15920476878484313, 1.2958603176641055, 1.2195200287127348, -0.18102374320360753, -1.1645019636692635, 0.31512163398607973, 0.4112140952226413, 0.799068132489134, -0.194553356476797, -0.24713828227948162, 1.1162744704218956, -0.5100587555940508, -1.7306779449877614, -1.3161139044492312, 0.6341932724742192, -0.7347849903121613, 0.9645835907250738, 1.5026031951659682, -1.4760744795962333, -0.06731259930616487, 0.7042872721353796, -0.5335137254930029, 0.0716602316769604, 0.6043539708627061, 0.11692324897196178, -0.05768277951806856, 1.1162713764449659, 1.8796989655172829, 0.43088724829364505, 2.38688392018114, 0.29310955804355704, 0.7462035664728303, -1.4923332297842067, -1.2280466714373701, 1.0734872965346725, 0.5262032697307816, 0.7693518738655505, -0.28211783832137927, -0.0290036682453748, -2.931607725174539, -0.61001449056912, -0.7025484586715276, 0.7759827155138221, -0.19166960568471056, 0.9694902932312826, -1.04530914742025, 0.9727250463770896, 0.06310226379325519, 1.0818373134406507, 1.1047859736064884, -0.9784634968885791, -0.9146592081968249, 0.15142025533299056, 0.23328387697346153, 1.482068026300734, 1.4017194403233817, 0.5839385941999119, -3.499091269336771, 0.6898991159514024, -0.76367161011779, 0.271889761583164, -0.2648955270675521, -0.05132512877225392, -1.1445243383154795, -0.9341941596618715, -0.2758301417114395, -0.12386224872925095, 0.3429318698923175, -0.20380183235337243, -1.442620516648269, -0.08857891832728218, -0.5685844707827721, 0.31653125437081814, -0.7630932541957661, 1.0549727437086984, -0.23903901917404402, 0.13881369002402355, -0.277058267581059, -1.1828348650720584, 0.41122688905564325, -0.11093465300197233, 0.05700186250342231, -0.8530057143017865, -1.1330141754733023, -0.788433518694048, 0.0410432386990952, -0.2526837758051426, -0.7365204396871289, 2.374275605228078, 0.24647701310468878, 0.6189709904599635, -0.3036782549769593, -0.6671553020762782, 0.9568820989023366, -1.079178482400065, 0.29500583173695416, -0.9289020636769935, 0.7791599475788574, -0.1983372320556875, -0.49097598732772324, -1.2327667862306246, -0.463786196952311, -0.7468162049628737, 1.8137576226948215, 0.4907226689424396, 0.3853672976926061, 1.405986757744362, 0.006148904928010884, 0.5727386445488017, 0.09397490448508446, -0.35506525618267476, 1.7351653184984497, -0.39253263749716394, 0.12196757373920339, 0.38004382713166907, 0.7006111800175882, 0.4987705634227367, -0.7645303868257485, -0.5146892069655717, -0.5835515156473441, -1.1547773890712476, -0.05898296492235115}; + + +static double gemm_checksum[64] = {-45.1525872455864, -53.56382313501859, 75.37190918194668, 81.51135315789973, -15.61415231827229, -60.60307561986312, 47.96036541651724, 65.73237574275608, -4.4727051387073935, -33.991042035520486, -26.416772446199882, 1.7860331769884112, 63.625439870165444, 11.62205632780551, -15.064831482590407, -47.33578990077392, 31.789427261811298, 45.60325302655279, 46.39784351481784, -41.63175282633895, -37.58415419207174, 52.811751728757756, 17.491718577483027, 95.99796882635259, -31.290609142980582, 56.18913870959351, -9.784406747318776, -47.798468293167936, -68.85425504150908, 14.518540879027748, 12.444849316598145, 27.044449299453333, 34.41753472048874, 37.24202029503455, 0.0015372059941842764, 56.49727200521621, 42.08187683985865, -60.80036174635206, -41.51354371054238, 25.39617622130028, 64.16199934240205, -49.723260643988866, -67.73199521937849, 14.061632619059395, -46.723037598164815, -1.4946901268404673, -19.516162199239137, 13.487866069963179, -23.19623129877386, 56.32942826668456, 67.64491765822369, 25.427295331888367, -3.9993280938311173, 70.5746407371274, 68.98981144920677, 11.672168486094769, 10.78240530670366, 31.25611590676771, 34.98838254510045, -129.95599475048968, 14.933419865189286, 35.74263691521163, 85.87277962177788, 93.68226272318962}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/layer.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/layer.h new file mode 100644 index 00000000..ba49ef72 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/data/layer.h @@ -0,0 +1,134 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +typedef enum { FP64 = 8, FP32 = 4, FP16 = 2, FP8 = 1 } precision_t; + +/** + * @struct gemm_layer_struct + * @brief This structure contains all parameters necessary for GEMM. + * @var gemm_layer_struct::M + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::M_p + * M divided by number of compute cores + * @var gemm_layer_struct::N + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::K + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::TA + * Transpose matrix A + * @var gemm_layer_struct::TB + * Transpose matrix B + * @var gemm_layer_struct::TILE_M + * Tile factor across M dimension + * @var gemm_layer_struct::TILE_N + * Tile factor across N dimension + * @var gemm_layer_struct::TILE_K + * Tile factor across K dimension + * @var gemm_layer_struct::A + * Pointer to matrix A + * @var gemm_layer_struct::B + * Pointer to matrix B + * @var gemm_layer_struct::C + * Pointer to matrix C + * @var gemm_layer_struct::ALPHA + * constant factor: A * B + ALPHA * C + * @var gemm_layer_struct::dtype + * Precision of GEMM + * @var gemm_layer_struct::expand + * Use expanding DOTP instructions + */ +typedef struct gemm_layer_struct { + uint32_t M; + uint32_t M_p; + uint32_t N; + uint32_t K; + + uint32_t TA; + uint32_t TB; + + uint32_t TILE_M; + uint32_t TILE_N; + uint32_t TILE_K; + + double *A; + double *B; + double *C; + + uint32_t ALPHA; + + precision_t dtype; + uint32_t expand; +} gemm_layer; + +/** + * @struct conv_layer_struct + * @brief This structure contains all parameters necessary for Convolutional + * layers + * @var conv_layer_struct::CO + * Number of output channels + * @var conv_layer_struct::CI + * Number of input channels + * @var conv_layer_struct::IH + * Height of input feature map + * @var conv_layer_struct::IW + * Width of input feature map + * @var conv_layer_struct::OH + * Height of output feature map + * @var conv_layer_struct::OW + * Width of output feature map + * @var conv_layer_struct::FH + * Height of filter + * @var conv_layer_struct::FW + * Width of filter + * @var conv_layer_struct::pad + * Padding on all sides + * @var conv_layer_struct::ifmap + * Pointer to input feature map + * @var conv_layer_struct::weights + * Pointer to weights + * @var conv_layer_struct::ofmap + * Pointer to output feature map + * @var conv_layer_struct::TILE_CI + * Tiling factor of input channel + * @var conv_layer_struct::cluster2cluster + * Flag for enabling cluster 2 cluster communication + * @var conv_layer_struct::im2col + * Flag for enabling im2col + GEMM + * @var conv_layer_struct::gamma + * Pointer to gamma for BatchNorm + * @var conv_layer_struct::beta + * Pointer to beta for BatchNorm + * @var gemm_layer_struct::dtype + * Precision of Convolution layer + */ +typedef struct conv_layer_struct { + // CONV2D + uint32_t CO; + uint32_t CI; + uint32_t IH; + uint32_t IW; + uint32_t OH; + uint32_t OW; + uint32_t FH; + uint32_t FW; + uint32_t pad; + + double *ifmap; + double *weights; + double *ofmap; + + uint32_t TILE_CI; + uint32_t cluster2cluster; + uint32_t im2col; + + // BATCHNORM + double *gamma; + double *beta; + + precision_t dtype; +} conv_layer; diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/kernel/mxfmatmul.c b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/kernel/mxfmatmul.c new file mode 100644 index 00000000..471bbc50 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/kernel/mxfmatmul.c @@ -0,0 +1,429 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#include "mxfmatmul.h" + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 2*kernel_n, respectively +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 1)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v24, 0"); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mxfmacc.vv v24, v0, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mxfmacc.vv v24, v12, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v24, v12, v8"); + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; // Question: If give the abs value 4 to here, then the + // performance is better. Why? + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 4*kernel_n, respectively +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 2)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v28, 0"); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v8"); + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 8*kernel_n, respectively +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 3)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v18, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v22, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v26, 0"); + asm volatile("vmv.v.i v28, 0"); + asm volatile("vmv.v.i v30, 0"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v18, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v22, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v26, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v30, v12, v8"); + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v30, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/kernel/mxfmatmul.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/kernel/mxfmatmul.h new file mode 100644 index 00000000..a6b7979e --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/kernel/mxfmatmul.h @@ -0,0 +1,55 @@ +// Copyright 2021 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#ifndef MXMATMUL_H +#define MXMATMUL_H + +#include + +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +#endif diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/main.c b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/main.c new file mode 100644 index 00000000..66b70fd3 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/main.c @@ -0,0 +1,249 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include DATAHEADER +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 4 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 4 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +//#define B2 1 + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + +#ifdef B2 + matmul_tiled_Bx2(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#else + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#endif + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/main.c~ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/main.c~ new file mode 100644 index 00000000..fe5d2e8c --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/main.c~ @@ -0,0 +1,249 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include DATAHEADER +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 8 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 4 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +//#define B2 1 + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + +#ifdef B2 + matmul_tiled_Bx2(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#else + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#endif + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/script/gen_data.py b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/script/gen_data.py new file mode 100644 index 00000000..feada63f --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/script/gen_data.py @@ -0,0 +1,592 @@ +#!/usr/bin/env python3 +# Copyright 2022 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Author: Tim Fischer + +import numpy as np +import torch +import torch.nn as nn +import argparse +import pathlib +import hjson +import struct + +np.random.seed(42) +torch.manual_seed(42) + +global verbose + + +def array_to_cstr(a, fmt=float): + out = '{' + if fmt == float: + if isinstance(a, np.ndarray): + a = a.flat + if isinstance(a, torch.Tensor): + a = a.numpy().flat + for el in a: + out += '{}, '.format(el) + else: + for sign, exp, mant in zip(a['sign'].numpy().flat, a['exponent'].numpy().flat, a['mantissa'].numpy().flat): + value = sign * 2**7 + exp * 2**2 + mant + out += "0x{:02x}, ".format(value) + out = out[:-2] + '}' + return out + + +def emit_header_file(layer_type: str, **kwargs): + + file_path = pathlib.Path(__file__).parent.parent / 'data' + emit_str = "// Copyright 2022 ETH Zurich and University of Bologna.\n" + \ + "// Licensed under the Apache License, Version 2.0, see LICENSE for details.\n" + \ + "// SPDX-License-Identifier: Apache-2.0\n\n" + + if layer_type == 'Conv2d': + file = file_path / 'data_conv2d.h' + emit_str += emit_conv2d_layer(**kwargs) + elif layer_type == 'GEMM': + file = file_path / ("data_" + str(kwargs["M"]) + "_" + str(kwargs["N"]) + "_" + str(kwargs["K"]) + ".h") + emit_str += emit_GEMM_layer(**kwargs) + elif layer_type == 'Print': + file = file_path / 'result_check.h' + emit_str += emit_Print_layer(**kwargs) + elif layer_type == 'BatchNorm': + file = file_path / 'data_batchnorm.h' + emit_str += emit_batchnorm_layer(**kwargs) + elif layer_type == 'MaxPool': + file = file_path / 'data_maxpool.h' + emit_str += emit_maxpool_layer(**kwargs) + elif layer_type == 'FusedConv': + file = file_path / 'data_fusedconv.h' + emit_str += emit_fusedconv(**kwargs) + with file.open('w') as f: + f.write(emit_str) + + +def emit_conv2d_layer(name='conv2d', **kwargs): + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + weights = kwargs['weights'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + _, fh, fw, _ = weights.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {fh},\n' + layer_str += f'\t.FW = {fw}\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_weights_dram[{co}][{ci}][{fh}][{fw}] = ' + array_to_cstr(weights) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_linear_layer(input, weights, ofmap): + + layer_str = '' + return layer_str + + +def emit_GEMM_layer(name='gemm', **kwargs): + mat_A = kwargs['A'] + mat_B = kwargs['B'] + mat_C = kwargs['C'] + result = kwargs['result'] + + m = kwargs['M'] + n = kwargs['N'] + k = kwargs['K'] + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'const gemm_layer {name}_l = {{\n' + layer_str += f'\t.M = {m},\n' + layer_str += f'\t.N = {n},\n' + layer_str += f'\t.K = {k},\n' + layer_str += f'\t.TA = {int(kwargs["ta"])},\n' + layer_str += f'\t.TB = {int(kwargs["tb"])},\n' + layer_str += f'\t.ALPHA = {kwargs["alpha"]},\n' + layer_str += f'\t.dtype = FP{kwargs["prec"]},\n' + layer_str += f'\t.expand = {kwargs["expand"]}\n' + layer_str += '};\n\n\n' + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str += f'{dtype} r[{m}] __attribute__((section(".l1")));\n\n' + + if dtype != 'char': + layer_str += f'static {dtype} {name}_A_dram [{m}*{k}] = ' + array_to_cstr(mat_A) + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}*{n}] = ' + array_to_cstr(mat_B) + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}*{n}] = ' + array_to_cstr(mat_C) + ';\n\n\n' + layer_str += f'static {dtype} {name}_checksum[{m}] = ' + array_to_cstr(torch.sum(result, dim=-1)) + ';\n\n\n' + else: + layer_str += f'static {dtype} {name}_A_dram [{m}][{k}] = ' + \ + array_to_cstr(kwargs['bits_A'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}][{n}] = ' + \ + array_to_cstr(kwargs['bits_B'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}][{n}] = ' + \ + array_to_cstr(kwargs['bits_C'], fmt='char') + ';\n\n\n' + + return layer_str + + +def emit_Print_layer(mat): + result_str = "// Results Print:\n" + for row in mat: + line = " ".join(str(struct.unpack('f', struct.pack('f', x))[0]) for x in row) + result_str += "// " + line + "\n" + return result_str + + +def emit_batchnorm_layer(name='batchnorm', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + beta = kwargs['beta'] + gamma = kwargs['gamma'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_beta_dram[{ci}] = ' + array_to_cstr(beta) + ';\n\n\n' + layer_str += f'static double {name}_gamma_dram[{ci}] = ' + array_to_cstr(gamma) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_maxpool_layer(name='maxpool', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + k = kwargs['kernel_size'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {k},\n' + layer_str += f'\t.FW = {k},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_fusedconv(name='fusedconv', **kwargs): + + ifmap = kwargs['ifmap'] + kernel = kwargs['kernel'] + bn_k = kwargs['bn_k'] + bn_l = kwargs['bn_l'] + ofmap = kwargs['ofmap'] + ofmap_before = kwargs['ofmap_before'] + ifmap_padded = kwargs['ifmap_padded'] + + padding = kwargs['padding'] + + if kwargs['depthwise']: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + fh, fw, co = kernel.shape + ci = co + ih_pad, iw_pad, _ = ifmap_padded.shape + elif kwargs['chw_layer']: + ci, ih, iw = ifmap.shape + oh, ow, co = ofmap.shape + co, ci, fh, fw = kernel.shape + _, ih_pad, iw_pad = ifmap_padded.shape + else: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + _, fh, fw, _ = kernel.shape + ih_pad, iw_pad, _ = ifmap_padded.shape + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str = '#include \n' + layer_str += '#include "conv2d.h"\n\n' + layer_str += 'kernel_fp32 k = {\n' + layer_str += f'\t.ch_in = {ci},\n' + layer_str += f'\t.ch_out = {co},\n' + layer_str += f'\t.dim_in_x = {iw},\n' + layer_str += f'\t.dim_in_y = {ih},\n' + layer_str += f'\t.dim_kernel_x = {fw},\n' + layer_str += f'\t.dim_kernel_y = {fh},\n' + layer_str += f'\t.dim_out_x = {ow},\n' + layer_str += f'\t.dim_out_y = {oh},\n' + layer_str += f'\t.padding_y_top = {padding["padding_y_top"]},\n' + layer_str += f'\t.padding_y_bottom = {padding["padding_y_bottom"]},\n' + layer_str += f'\t.padding_x_left = {padding["padding_x_left"]},\n' + layer_str += f'\t.padding_x_right = {padding["padding_x_right"]},\n' + layer_str += f'\t.stride_x = {kwargs["stride"]["stride_x"]},\n' + layer_str += f'\t.stride_y = {kwargs["stride"]["stride_y"]},\n' + layer_str += f'\t.flag_relu = {kwargs["flags"]["flag_relu"]},\n' + layer_str += f'\t.flag_batch_norm = {kwargs["flags"]["flag_batch_norm"]},\n' + layer_str += f'\t.flag_y_accumulate_start = {kwargs["flags"]["flag_y_accumulate_start"]},\n' + layer_str += f'\t.flag_y_accumulate_end = {kwargs["flags"]["flag_y_accumulate_end"]},\n' + layer_str += '};\n\n' + layer_str += f'uint32_t dw = {kwargs["depthwise"]};\n' + layer_str += f'uint32_t chw_layer = {kwargs["chw_layer"]};\n' + + layer_str += f'static {dtype} {name}_pInBuffer_dram[{ih_pad}][{iw_pad}][{ci}] = ' + \ + array_to_cstr(ifmap_padded) + ';\n\n' + layer_str += f'static {dtype} {name}_pWeight_dram[{co}][{fh}][{fw}][{ci}] = {array_to_cstr(kernel)};\n\n' + layer_str += f'static {dtype} {name}_lambda_dram[{ci}] = {array_to_cstr(bn_l)};\n\n' + layer_str += f'static {dtype} {name}_kappa_dram[{ci}] = {array_to_cstr(bn_k)};\n\n' + layer_str += f'static {dtype} {name}_pOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap_before)};\n\n' + layer_str += f'static {dtype} {name}_pCheckOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap)};\n\n' + + return layer_str + + +def rand_data_generator(shape, prec, alt=False): + if prec == 64: + return torch.randn(shape, requires_grad=False, dtype=torch.float64), {} + elif prec == 32: + return torch.randn(shape, requires_grad=False, dtype=torch.float32), {} + elif prec == 16: + if alt: + return torch.randn(shape, requires_grad=False, dtype=torch.bfloat16), {} + else: + return torch.randn(shape, requires_grad=False, dtype=torch.float16), {} + elif prec == 8: + sign = torch.randint(0, 2, shape, requires_grad=False, dtype=torch.uint8) # -1 or 1 + exponent = torch.randint(0, 16, shape, requires_grad=False, dtype=torch.uint8) # < 0b01111 + mantissa = torch.randint(0, 4, shape, requires_grad=False, dtype=torch.uint8) # can be arbitrary + bits = {'sign': sign, 'exponent': exponent, 'mantissa': mantissa} + # TODO: not actually correct + return ((-1.0)**sign.double()) * (2.0**(exponent.double() - 15.0)) * (1.0 + mantissa.double() / (2**2)), bits + + +def conv2d(ifmap, weights, padding=1, stride=1): + n, ci, ih, iw = ifmap.shape + co, _, fh, fw = weights.shape + + conv2d = nn.Conv2d(ci, co, (fh, fw), padding=((fh - 1) // 2, (fw - 1) // 2)) + conv2d.weight = nn.Parameter(weights, requires_grad=False) + conv2d.bias = nn.Parameter(torch.zeros_like(conv2d.bias, dtype=weights.dtype), requires_grad=False) + ofmap = conv2d(ifmap) + + return ofmap + + +def max_pooling(ifmap, kernel): + n, ci, ih, iw = ifmap.shape + max_pool = nn.MaxPool2d(kernel_size=kernel) + ofmap = max_pool(ifmap) + + return ofmap + + +def batchnorm(ifmap): + n, ci, ih, iw = ifmap.shape + bn = torch.nn.BatchNorm2d(ci) + bn.weight.requires_grad = False + bn.bias.requires_grad = False + running_mean = torch.randn_like(bn.running_mean, requires_grad=False) + running_var = torch.rand_like(bn.running_var, requires_grad=False) + gamma = bn.weight / torch.sqrt(running_var + bn.eps) + beta = bn.bias - running_mean * bn.weight / torch.sqrt(running_var + bn.eps) + ofmap = ifmap * gamma.unsqueeze(-1).unsqueeze(-1) + beta.unsqueeze(-1).unsqueeze(-1) + + return ofmap, gamma, beta + + +def fused_conv(ifmap, weights, bn_k, bn_l, padding, stride, bn, relu, accumulate, depthwise): + + ih, iw, ci = ifmap.shape + if not depthwise: + co, fh, fw, _ = weights.shape + else: + fh, fw, co = weights.shape + ci = co + + ifmap_padded = torch.zeros(ih + padding['padding_y_top'] + padding['padding_y_bottom'], + iw + padding['padding_x_left'] + padding['padding_x_right'], + ci, + requires_grad=False, dtype=ifmap.dtype) + ifmap_padded[padding['padding_y_top']:ih + padding['padding_y_top'], + padding['padding_x_left']:iw + padding['padding_x_left']] = ifmap + + # Don't cover undefined behaviour when there are steps without a complete kernel window + if (ifmap_padded.shape[0] - (fh - 1) - 1) % stride['stride_y'] != 0: + print("Warning: rounding h output dimension") + if (ifmap_padded.shape[1] - (fw - 1) - 1) % stride['stride_x'] != 0: + print("Warning: rounding w output dimension") + + ofmap = torch.zeros((ifmap_padded.shape[0] - (fh - 1) - 1) // stride['stride_y'] + 1, + (ifmap_padded.shape[1] - (fw - 1) - 1) // stride['stride_x'] + 1, co) + if accumulate: + ofmap_before = torch.randn_like(ofmap, requires_grad=False) + else: + ofmap_before = torch.zeros_like(ofmap, requires_grad=False) + + if verbose: + print(ifmap.shape, ifmap_padded.shape, ofmap.shape) + + if (depthwise): + # depthwise Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw, c].flatten(), weights[:, :, c].flatten()) + else: + # Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw].flatten(), weights[c].flatten()) + + ofmap += ofmap_before + + # BatchNorm + if bn: + ofmap = ofmap * bn_k + bn_l + + # ReLU + if relu: + ofmap = torch.nn.functional.relu(ofmap) + + return ofmap, ofmap_before, ifmap_padded + + +def main(): + + parser = argparse.ArgumentParser(description='Generate data for kernels') + parser.add_argument( + "-c", + "--cfg", + type=pathlib.Path, + required=True, + help='Select param config file kernel' + ) + parser.add_argument( + "-v", + "--verbose", + action='store_true', + help='Set verbose' + ) + + args = parser.parse_args() + + global verbose + verbose = args.verbose + + with args.cfg.open() as f: + param = hjson.loads(f.read()) + + if param['prec'] == 64: + dtype = torch.float64 + elif param['prec'] == 16: + dtype = torch.float16 + elif param['prec'] == 8: + dtype = None + else: + dtype = torch.float32 + + if param['kernel'] == 'Conv2d': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + weights = torch.randn(param['channels']['out'], + param['channels']['in'], + param['filter']['height'], + param['filter']['width'], requires_grad=False, dtype=dtype) + + ofmap = conv2d(ifmap, weights, + padding=param['filter']['padding'], + stride=param['filter']['stride']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + weights = weights.permute(0, 2, 3, 1) + kwargs = {'ifmap': ifmap, 'weights': weights, 'ofmap': ofmap} + emit_header_file('Conv2d', **kwargs) + + elif param['kernel'] == 'GEMM': + mat_A, bits_A = rand_data_generator((param['M'], param['K']), param['prec']) + mat_B, bits_B = rand_data_generator((param['K'], param['N']), param['prec']) + mat_C, bits_C = rand_data_generator((param['M'], param['N']), param['prec']) + + print("Mat_A Original:") + for row in mat_A: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + print("Mat_B Original:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + result = param['alpha'] * mat_C + torch.matmul(mat_A, mat_B) + + print("Result:") + for row in result: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + if param['transpose_A']: + mat_A = mat_A.T + if param['transpose_B']: + mat_B = mat_B.T + + print("Mat_B Transposed:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + kwargs = { + 'A': mat_A, + 'B': mat_B, + 'C': mat_C, + 'result': result, + 'M': param['M'], + 'N': param['N'], + 'K': param['K'], + 'ta': param['transpose_A'], + 'tb': param['transpose_B'], + 'alpha': param['alpha'], + 'prec': param['prec'], + 'expand': param['expand'], + 'bits_A': bits_A, + 'bits_B': bits_B, + 'bits_C': bits_C + } + + emit_header_file('GEMM', **kwargs) + emit_header_file('Print', mat=result) + + elif param['kernel'] == 'BatchNorm': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap, gamma, beta = batchnorm(ifmap) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'beta': beta, 'gamma': gamma, 'ofmap': ofmap} + emit_header_file('BatchNorm', **kwargs) + + elif param['kernel'] == 'MaxPool': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap = max_pooling(ifmap, param['kernel_size']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'ofmap': ofmap, 'kernel_size': param['kernel_size']} + emit_header_file('MaxPool', **kwargs) + + elif param['kernel'] == 'FusedConv': + ifmap = torch.randn(param['dim_in_y'], param['dim_in_x'], param['ch_in'], requires_grad=False, dtype=dtype) + if not param['depthwise']: + kernel = torch.randn(param['ch_out'], param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + else: + kernel = torch.randn(param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + + bn_k = torch.randn(param['ch_out'], requires_grad=False) + bn_l = torch.randn(param['ch_out'], requires_grad=False) + + ofmap, ofmap_before, ifmap_padded = fused_conv(ifmap, + kernel, + bn_k, + bn_l, + param['padding'], + param['stride'], + param['flags']['flag_batch_norm'], + param['flags']['flag_relu'], + not param['flags']['flag_y_accumulate_start'], + param['depthwise']) + + if param['chw_layer']: + ifmap = ifmap.permute(2, 0, 1) + ifmap_padded = ifmap_padded.permute(2, 0, 1) + kernel = kernel.permute(0, 3, 1, 2) + + kwargs = { + 'ifmap': ifmap, + 'ifmap_padded': ifmap_padded, + 'ofmap': ofmap, + 'ofmap_before': ofmap_before, + 'kernel': kernel, + 'bn_k': bn_k, + 'bn_l': bn_l, + 'padding': param['padding'], + 'stride': param['stride'], + 'prec': param['prec'], + 'flags': param['flags'], + 'depthwise': param['depthwise'], + 'chw_layer': param['chw_layer'] + } + emit_header_file('FusedConv', **kwargs) + + else: + print("No valid kernel selected") + + +if __name__ == '__main__': + main() diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/script/matmul.json b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/script/matmul.json new file mode 100644 index 00000000..3eb11985 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k4-b4/script/matmul.json @@ -0,0 +1,17 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Solderpad Hardware License, Version 0.51, see LICENSE for details. +// SPDX-License-Identifier: SHL-0.51 + +// Parameters for a GEMM + +{ + kernel: "GEMM" + M: 64, + N: 64, + K: 64, + alpha: 0, + transpose_A: false, + transpose_B: true, + prec: 64, + expand: 0 +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/data_16_16_16.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/data_16_16_16.h new file mode 100644 index 00000000..1052e7cf --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/data_16_16_16.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 16, + .N = 16, + .K = 16, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[16] __attribute__((section(".l1"))); + +static double gemm_A_dram [16*16] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033}; + + +static double gemm_B_dram [16*16] = {0.4780347016744464, -0.20314173587596263, 1.797754234791071, 0.23274595474814475, -0.9954168307888536, 1.8547476587140206, 0.09402273928088646, -0.9430074874135619, 0.8239191817788585, 0.11501735450468505, 0.8545701717376761, -0.007188030468140175, -0.018728729244763993, -0.9533932980859413, -0.12165398416725498, -0.42661916146469137, 0.9340946495293597, 0.19522143581405244, 0.23182973839731683, -1.2546554715250677, -0.7025528681323762, -0.03019556689050345, -1.4671607394596426, -0.1734020738525506, 1.0202696745617659, 1.0157942265133257, -0.4324600332331524, -0.296150919949663, 0.056387506785403815, 1.5109902204218253, -0.13585017018841927, 0.6485611566020152, -1.149354106366614, 0.24917168366560993, -0.4778501888006765, 0.8387576576827396, 0.41098923499226014, -0.2256181742270194, -1.219750082862799, 0.9803566659279874, 1.3346481596559676, 1.6129488803273395, -0.024493143878920487, -0.7591698936771379, -0.48921141096064424, -0.062040923189698165, 0.8520383693040029, -1.128094765763347, -0.07195237845460918, -0.46610241187034174, 0.29946965798993297, -0.6354031061312012, 0.7739177723108309, 0.19368409881631005, -1.3274229125145334, 0.0627858851186502, 0.36384746366328413, -0.19175241722939693, 1.980986216379721, 1.1809578134345797, -0.7306000207552646, -1.7641855643145632, 0.7245001435289563, -1.5840451502971633, 0.09414818556627164, -0.9029006394421663, 0.8488782882116401, -1.2173643223619721, -1.2762292342683303, 0.5058710736668895, 0.6099936154303692, 1.0423699879551078, 0.7611949933670529, 0.6164470190315824, -0.2658724362020457, -0.14668266051521825, -0.6274502774485388, 1.4985053270616493, 1.3299880805922875, 0.6965634921004461, -0.23035924547300898, -0.4005606761098726, 0.3315215039285197, 1.231436269706581, -0.1434065696905791, 0.1038460098414191, -0.11014269025953972, 1.5545069571528942, -0.8829189545685341, -0.20570447804044192, 0.011103897250099562, 0.5946658094550371, -0.6020537188199624, -0.4079372826543253, -0.1805351705743782, -0.33600719481813285, -1.8998197674219859, -1.3514084083199862, 0.12891223912089034, -0.12220432019599553, 0.199025684270468, -1.4076687315200758, -1.3293671463788634, 1.5849730687530486, 0.26915516555170543, 0.42155963063098567, 1.0111021595209633, -0.4752871063125886, 1.313122245567395, 1.429769590030981, -0.22203877342660364, -0.3359458033736853, 0.9478581977287968, -0.9017993731080081, -1.2238040021173409, -1.5066610314377438, -1.5400573604406471, 1.029960808199997, 0.7101787049919178, 0.7199388940089966, -0.09599439254200862, -0.5707540620409073, -1.1665892611773085, 1.1838674589073483, -0.14388808008330586, -0.2897447883816845, -0.5230311319816758, -1.3453794288815801, -0.5774972459244567, -1.6874596492942056, -0.6243273110799229, -0.131168025357405, 1.548288167937, 2.177326020841736, -0.01670896018294231, 2.6380786365181796, -0.6554716217755595, 0.6536593231539053, -0.7991803895400539, -0.48408003859590065, 1.3163800108985646, 0.7736151342348289, 0.045765518028111664, 0.782406872557914, 0.6273242190434466, 0.8505308967944145, 0.002119877636176426, -0.03123667988254042, 0.9288465316923816, 0.4365480813048655, 0.43343311885236446, -0.27680484002022715, 0.6816100143946399, -0.29432626362033404, 0.18661178764402744, -0.34832623473704294, -0.12593952342837475, 0.6104204582278638, 2.1112388578012884, 0.16436581820924961, 0.08511336387296158, 0.6772607869261693, -1.0103642468106544, 0.5124772757514626, 0.08390244767011035, -0.42153332375097163, -0.014621424093204098, 0.1962794539558957, -0.29262366803238393, -0.47610390457226875, 0.8742346952912949, -0.031424129829246916, 1.25609380794485, -0.5422032040096507, 1.9700777629678679, -0.6098672123657596, -0.1733949212480647, 0.07380298739515019, -1.1195878651441893, 0.8173767150222387, 0.3572785103117973, -0.9320608828189856, 0.6955788134794414, 0.8731470189472956, 0.9362614654567366, -1.3121219556703199, 0.22713168745929768, 0.6027021077218985, 1.1658575421017066, -1.149255707834347, 0.1456185008563352, -0.5846446870404606, 1.2335858050609876, 1.9920454844101763, -1.2632446956429335, -0.2772483620390129, 0.17859923880951847, 1.8110431275164358, 0.5722528182048355, 0.010205327986369436, 0.1418089057088939, -0.9264218514606051, -0.5133236613036435, -0.1269124796513161, -1.7009294128404835, 1.7075504892947724, 0.6952680695280342, 1.7665907233368394, 1.3917635799868133, -0.33044907219753716, 1.452604901391212, -0.8170580592759659, -0.6768899292657692, -1.4858191479600487, -1.481720319316519, -0.8838416943783096, -0.4836971414215709, 0.14788650580579352, -0.5447919995948828, -0.132580840204314, -0.3443663683433915, 1.4528943457305363, 1.289500316820128, 2.253287365111219, -0.9181737147627111, -0.39032216747009113, 0.6929251584566181, 0.11041826907812055, 0.8504258697467754, 0.7389689210845545, -0.15323533618009222, 0.8068577169597195, -1.242898069994524, 0.0069296369726892315, -1.4490806809539707, 0.8622146933847438, -0.9552666410033216, 1.5535736491676595, -0.3238211924056418, 2.1818716851528808, 0.8067649829193638, 1.498700405481595, 0.3435160724199721, 0.024119499618272, 0.9425485271043043, 0.6644577289945207, 1.090316288383937, 0.29925023340409146, 0.2730005353024221, 0.3306231644074124, -0.5830552203885363, -0.6652501624993471, -2.123695546730074, 0.8145713078829363, -0.8891278822176073, -0.5497385523974774}; + + +static double gemm_C_dram [16*16] = {0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222}; + + +static double gemm_checksum[16] = {3.53318139833275, 18.910557186514914, 17.061557051251178, -17.86682606914221, -5.920568815540228, -16.80427557391132, 12.345786410219814, 24.565576004988085, 3.617111620044957, -18.771063102425778, 43.637805771956224, -17.699257074021574, -7.3420911665199835, 8.052332093906525, -16.822597494037367, 2.274275182397295}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/data_32_32_32.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/data_32_32_32.h new file mode 100644 index 00000000..667ffd2d --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/data_32_32_32.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 32, + .N = 32, + .K = 32, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[32] __attribute__((section(".l1"))); + +static double gemm_A_dram [32*32] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342}; + + +static double gemm_B_dram [32*32] = {1.8448885093030065, 0.622613137075688, -2.0773600718526932, -0.05879218788301025, -0.14883240827467462, -1.6070787249452574, -1.2752325216668503, -0.9710154441004514, 2.8536471208979433, 1.0259687873673153, -0.07729526178752644, 2.90124785320579, -1.6099870201619317, -0.8847331619490723, 0.5939979568631141, 1.2200036287220326, 2.8510918408680124, -1.25582651238933, -1.5043005890504582, 0.809667872762421, 0.4455096569146938, 1.4533777876325222, 0.08093711755806289, 0.5433594960509881, 0.21407749737048995, 0.5053866496884525, -0.7063829736735863, -1.7255159569914225, -1.3941268553154642, -0.3611221208798455, -0.05334598793633222, -0.35435416471609005, 0.572007132100381, -0.5264955185026189, 0.5102128857829208, 0.6116700031464317, 2.0486968982261202, -0.7165117692039605, -0.44546162876683887, 0.4763931829831273, 1.3032022234889244, -0.02932551729568818, -0.4820520883676177, 0.9193799243970369, 0.6146813355739139, -0.22393893146647295, 0.571492357564412, -0.948302395460301, -0.7318379837818061, 0.03382654045677089, 0.7372524407400997, -0.4103668947560523, -1.5530036453685645, -1.508283926364581, -2.256777082059624, 0.5675579810614343, -0.41165660712793767, 0.3283028032403514, 0.08317733846151737, 0.6397252376986503, 0.5706575386796322, -1.4195164842808716, 0.10738590560666669, 0.6485877172023825, -0.9020532459752512, 1.7456452297639542, -1.3425473236398795, -1.3093298447872528, -0.9909136952855094, -0.7553512437574256, -0.15696203458936964, -0.8587268321219447, 0.4760756036980966, -0.7891190307945258, -0.3642766707809299, 1.4109003071198862, 1.0232681185457035, 0.2604924986511237, 1.2838646589587073, 0.6269276746157323, -0.6194976835634578, -0.45889090147992845, -0.5334658384258053, 1.749809215983805, 0.24334104727505046, -0.9454297378995183, 0.324177164165908, 1.9203285366540146, -0.8911684286042895, -2.225396433305001, -0.9039919874880522, 0.23342621054073684, 0.7831976119427991, 1.1907305012760756, 0.7476571054869932, -0.2757466733288484, 1.423932009681719, -0.0032580522874735246, 1.0664992078500592, -1.9790524548585495, -0.3600241005246587, 1.9280259690970352, -1.1862950949600968, 0.420689070376205, 0.04693766693045954, 0.29564308636903597, 0.2721281447061126, 0.9342714574384375, -0.6120020584064751, -1.065720378325982, 0.1968309175885564, -1.8413847347422614, 0.8118142867300344, -0.2896301303848118, 0.2567239585606655, 1.001647179219911, 1.9679440499519993, -1.010459444419853, 1.062105790670867, -0.5030970822643847, -0.49236046031915226, -1.096249407991655, -2.359353503098415, 0.21399479954715414, 0.28018300766602294, 0.1522501461827938, -1.5691946737355327, -0.3563016808385527, 1.1116421563744774, -0.08412480377121889, -1.3978347586933288, 2.327922240143418, 0.1602748303156346, -0.26733976223106926, 0.37408049529043713, 0.6054083058374654, -0.5984449522911452, -0.34927374642138076, -1.0173409588721802, 0.7408981122108215, -1.0855633146564565, -2.4784405095403583, 0.0125526247658802, 2.975492133500898, 0.43758672808479837, 0.4922810729687261, -0.6299751233419266, -1.7659243403508436, -0.14949638764508505, 0.0754147254586834, 0.2886235312894662, 0.8421602450844566, 0.08810619424950021, -0.9149883628966105, 0.11425878193276912, 1.1788921695577175, 0.13693472548612742, 0.922469684257407, 0.8999837788505479, -0.17817414950901492, -0.609918694875925, -0.09847618283385187, -0.5082793586733352, 0.5346029134452727, 0.07168780603661637, -0.0673955495394241, -0.38524482721238545, -0.7954680985571436, 0.7900271874549623, 0.8136749201194545, -0.22291945275506458, -1.501451886644788, 0.9035218354603602, -1.397338674255014, -0.588379978175527, 0.5732253342246594, -0.7150266134830248, -0.11561150744781683, 0.024035161278926437, 0.15383957509758237, -0.1787890634869671, -1.2810537542822706, -1.2983305542602077, -2.316838061301056, -1.4051338603716423, 0.21230053589695053, 0.64706666019578, -0.4946728962147127, 1.0154445987056024, 0.016501336648811274, 0.038792413114335636, -0.0019081140052624073, 1.0390897743423966, 0.5573182638994464, 1.0293339145628106, -0.2220392426765117, 0.30202523579276225, -0.536406291194771, 0.7842727318028115, -0.20058537792435566, -1.969917184758775, 0.620245645223459, 1.415842532715168, -0.8528561599738412, 1.199279110133032, 0.12733886071252698, -1.459242663662794, -1.876866690355531, -1.9406394619639358, -2.0656398984212156, 1.1244580271586777, -1.2779831760745572, -0.8694565617159877, -0.7736354580243704, -1.5005961252940438, -0.4201799135308444, -2.3224238004285707, -0.6023002440801871, 0.4359959376210403, -1.8310549540520982, -1.1860807036684393, 0.7429642513221194, 0.9914820089613138, -0.39273602229275606, -0.1305603800084962, -1.1975598741016937, 1.1953652639556394, 1.0350931612437495, -0.582835004754739, -0.7093789385459298, 1.1538879916827052, -0.19994075887630136, 0.3503211304018375, -0.43951272221042564, 0.3487504850213432, -1.4502786649323292, 0.21247320768848982, -0.962990797187108, -0.16058887298258492, -1.4492981424636866, 0.8679359705510734, -0.15730996466261546, 0.40836377201711715, 0.2669263499455465, -0.02701940155527667, -0.811961379205231, -1.4260396412546816, 1.99145358910135, -0.3410883214075715, 1.4512382841053386, -0.09281069482301793, -0.3690830035843751, -0.19007920263882952, 0.10750421501190041, 0.9465564741859593, 0.06348346009811161, 0.7049709576256773, -0.25042914816475237, -0.7592324149843712, 0.579583179532083, 1.0356927036283528, 1.744020696757244, -0.9454918159942679, -1.895096099561938, -0.0008137206583593385, 0.46265400794768385, 0.3522443413976922, -0.060333190180409904, -0.8276719054682797, -0.4158341820319732, -0.30513433025622483, -0.7472606420064576, 1.4354983174276066, 0.7768976641774541, -1.8739717517634698, -1.4256436904962992, -2.327140574554701, 1.3638217257964536, 0.12572172650108407, -1.1698739038813457, -0.12686282703773566, -1.5038113250304717, -0.5382334133878951, -0.42224783195423987, 0.1523832525182091, 0.4808356602618045, -0.9548035752110309, -0.8742437683710312, -0.30985592801910117, -0.24189491229960913, -0.9927853948011712, -0.09395716249601935, -1.0360800724687276, -0.8126325347024919, -1.405125889371723, -2.091666612524903, -0.6256281405885463, -1.869391305207575, 0.9077850533771569, -0.06215199874022316, 0.34353353507020123, 0.8295084980828852, 1.3958505210549053, 1.4876059940278459, 2.182868585469132, -0.7044791153933941, -0.26853628794603523, 0.040903466313536106, -0.3493894186252125, 1.077496971491708, -1.371518218990482, -0.48526560569590693, 0.23609553256542695, 0.11558860384831522, -0.633983343063867, 0.32423026673778105, -1.2093360312349437, 0.1323677945856938, 0.37108183095020375, -1.8689872110353185, -0.6566307196626123, 0.1717462405241003, -0.8401102070638347, -0.5606885258433681, 1.993616236752697, -1.5969922983164335, 1.0636457383418108, 0.0004974458415376117, -0.3510577387659576, 0.48193063531644537, -1.0749257488285808, 0.6962114020423124, 0.7795065425753578, 1.129362539634652, 1.112993202632025, -0.18934308720894036, -1.1741764376487758, 0.8524501556338853, 0.37761170331094157, -0.9342945534262868, -0.02711649643869937, 0.5810375830537511, 0.5998645930096181, -0.664516213841126, 0.23545196849666264, -0.06338166413389325, 0.49835413266819356, -0.4402301947763417, -2.100547843467698, -0.7034274377386549, -1.6932708709240643, -1.5147133895052636, -0.005304890708390932, 0.5303343737606813, 0.3955192048365272, -0.6916360198922066, -1.2365797403960304, -1.2686890383326754, -0.7818062318843579, -0.4080026099220151, -0.13894191854589522, -0.095540604007519, -2.072058608998672, 0.1737374420722428, -0.31690501369321267, 1.4448964367746397, -0.6980224325960035, 0.13020040181367357, -0.9331282790464878, -0.3340090119288742, -0.0050819767759484056, 0.7618231087000356, -0.2125855163161856, 0.3551271969105679, 1.2473531605780193, -2.1784216925774254, 1.371312887239788, 0.22201020504142566, -0.6176307398455463, 0.7465865033369634, -0.1530333323078057, 0.09645911224015045, 0.5742732453192894, -1.0184612409555949, 0.47214213858952303, 0.8246091313323292, 0.34215369871376844, -0.25495705935359947, 1.8548042098231963, -0.9291972010711246, 0.8829476857079316, -0.44867368855172923, 1.199426224041857, -0.16987767760770991, -1.189733419675099, 1.9987164641082087, 0.08404007020790137, -0.27202686813738103, -1.1242172376210566, 0.5331924552669381, -0.2820770772397286, 0.08640562469139157, 0.009684786386250501, -0.30058739646889815, -0.8626785926902893, -0.043876281219692365, -0.9358060344486432, -0.05592421534349575, 0.2318653380046876, 1.4399368526678278, -0.58828999383318, 0.43199223950922194, 1.1971503331114541, 2.532325541632594, 1.1869006875492747, 0.18139626346512772, 1.247922968974058, 1.010839700197812, -2.8791873832700547, -0.23051091319332653, 0.20499605949096963, 0.9031672530350638, 0.8745221489151239, 0.5700168037125656, 0.12132847331734303, -0.19495692375454912, -0.5102992245699747, 1.7922666332582982, -2.0217996637419504, -1.1376577043818543, -0.04898442309094625, 0.9913637676227545, -1.9483310573156807, -0.059343641632369076, 0.2636875321138984, -0.5446714593776727, 0.5125620452253108, -1.0850332393056394, 0.49295286102524044, -0.3735237580415768, 0.08464059182127714, -1.536144263111769, -1.7334295099492802, -1.939062107304355, -0.38189865297027337, -1.5866221126564115, 0.2555908214103616, -0.7129650139254672, -1.434297700901899, -0.8902436270883701, -0.0421115170793464, 0.5226206406896088, 1.2010757276760113, 2.269233244076525, 0.6929310708225009, -0.19142620469203458, -1.4608604499664002, -0.08834646865917613, -0.5266987160364432, 0.39258330183185886, 1.4723540101508836, 1.1669873661563108, 1.7267743114344978, -2.6437681894231435, 0.31916263280850626, 0.1619562886451128, -0.08553945533113934, -0.4802089660362259, 0.835126803441082, 1.109609770945844, -0.3494884497630849, -0.22461780649945687, 0.19008151199377613, -2.717778670757182, -0.8643497543156821, -0.10453191019598392, 0.7916834209392376, -1.971084122083064, -1.3999854653788708, -1.3195899155857833, -0.5773871236273995, 0.5757151238996234, 0.2803818171599705, -0.6035154511863011, 2.057751677950784, 0.40988533123157295, -0.39888705398196755, 0.7614369056740486, -0.22948805550230816, 1.2824833220745997, 0.38803217663099665, -0.1955663537656974, -0.5690532461968705, -0.5526532153140147, 0.3596144012700469, -0.6461446779487539, 0.6390360973776629, 0.15046570393731748, 0.33475288490766125, -1.1432227238603179, 0.4370304631746852, -1.0337911892064604, -0.9308402692062906, -0.6015415198184665, 1.7562161679995132, 0.1168039138752043, 0.689824201173873, 0.8153426406136252, -0.1728944869857963, -0.13301270859207348, -0.5270366881316677, -0.21170557963600709, 1.9951334816061994, -0.6241388306405901, -0.9401015854505796, 0.5592128760780101, 0.2883899362101988, -1.7212576593177709, 0.9994754870230482, 1.185949052557463, 0.051902944512615914, -0.13585649309388986, 1.2098862819236005, 1.185062371327038, 0.7600008532793323, 0.17431258922451653, -0.359544416669036, -0.8660236542618331, 0.5428826848071413, 2.7590525887014667, 3.4237712468503103, 0.5174957898345334, -1.4380277943151216, -1.8807813444109054, 0.3630283557686611, -0.525149213451578, 1.181971977987871, -0.5866181500734327, 1.524711206099055, -0.7800663274052761, 1.160481352505748, 0.39343143403797187, 1.8409181821652891, 0.49610977046001814, -0.9419344596787323, 1.0306895727537915, -0.08972003336849564, -0.3223643795390148, 1.6134203350119927, 0.7166427020983424, -1.666570871939696, 0.6170757026559303, -0.019119222645881905, 0.6657305691375492, -1.0678208861159952, -0.24969600604011072, -0.09696213550941978, -0.08674760587893786, 0.20255944297423273, 0.47452405238110584, 1.5065733412421733, 0.22065232253703387, 0.744628978129671, -0.26915089392842423, -0.15463871080474192, -1.2265714811977597, 1.7611911540817928, 0.20817264425532928, -0.8172519034071913, -1.5377442224077151, -1.548684848469057, -0.4477465519532468, -1.0427224611678692, 1.3390674367668436, -1.7547244042030132, -1.107773982297535, -1.3864755081036366, 0.5437796109495969, -0.640338334227558, 0.5138781656523993, -0.9640624060585024, 0.3627363765292881, 0.7961227485818212, 1.650950629705662, -0.9757273564713941, 0.6391954485208522, -1.6484340857205138, 0.5062590514320574, 0.49872412917775666, -0.02662111271639052, 0.3676083732835713, -0.4790606483008819, -0.47412499801799024, -1.3774088537570648, -0.9096458649167182, 0.3387263580347474, 1.427347151863727, 0.3936172157806796, -0.7229213248269448, 1.0421502948740846, -0.31575932783054717, -2.0944415177169953, 1.2284263304913572, 0.01545038682624204, -1.040602541009036, -0.747255398772972, 0.07405473692919617, 0.6462111934112551, -0.15540161000210675, -0.37254092473885336, 2.0182530686564895, -0.7592214987689807, -1.1213275218434526, -1.5589258141736047, 1.22745042848715, 1.7703882319843902, 1.8473014772988974, 0.3751449189250956, -0.6773093361468119, 0.7374924629427219, -0.6501714914135994, -0.5787298408624987, 0.8149334833372205, 1.5321216571398668, 0.2569777134684139, -0.29499229105904573, -0.6827694846192245, 1.2480509452812811, -0.03594236427723813, 1.0778363941578806, -0.4323877136781272, -0.24223189745187212, 0.2503737947188051, 0.7870016058915985, 0.19868751298961676, 0.39608506375087277, 1.8273660232377136, -0.16290875300595686, -0.14925008749413637, 1.688912150364615, 0.28089640344542804, 0.17302563058445183, -0.7235603815620858, 2.417337785331285, 0.6531743202785056, 1.3206137582172544, -0.6004867918118467, -0.49884117664872785, 0.5263294510598043, -0.19786418069226533, 0.19847908080770726, -1.0887076741188921, -1.4186463922997374, -0.46418731609632075, 0.9572709382349587, -0.1636651452718229, -0.18464959701431985, -2.4537835279476146, 1.6425500385797525, 1.9521841872543286, -0.9987807222089615, -0.8644861643567047, 0.09012216684853104, -1.5453453515930158, 0.028618079946139307, 0.8949404757727989, 0.11836116797672853, 1.1493902335657455, 1.4195569065800453, 0.4979804345513483, -1.8439449535735588, -1.3591299269239323, 0.6902199813822665, 0.16431412357817202, 0.6081345501547663, 0.17028885180838357, 0.2277981765470329, 0.22241582722694822, -0.5361669868684229, -0.35212526236220854, 0.07053654437136757, -1.1107085792532714, 0.43435982710100896, 0.9197089124134338, 0.4572717163404996, -0.7338887598113502, -1.4303046720322652, -1.0332700298347521, 0.707300443390559, -0.8341158090629236, -0.3900596403135759, 0.9788396157168914, 0.15285084511988004, -0.9521061052105131, 1.2693688025965613, -0.565952007041841, -1.723439924093865, -1.2488701028525535, -0.06310268278090121, -2.130104535188091, 0.8386877142814951, 0.08795913929250766, 0.3444816081051852, -0.7475464904708393, 0.055137779443554184, -0.297796251553928, 1.7752306448722606, -0.18586838199027028, -0.8359861748374583, -0.5254557201726808, 0.4874774972013086, 0.42973964778170143, 0.9547242579775002, 0.16954868116772995, -0.06608174057217904, 1.4198792364404926, -0.6798540159722049, 0.0037124668666011543, -1.9840617027488057, 0.9892360243254097, 0.16960249404796737, -0.43274207019506117, -0.9509348833512404, 1.001353646981955, -0.4453218737326093, -0.3765845085538441, -0.05609728003750563, -0.453301777620275, -0.7885161782185284, 1.8425900504983932, 0.7479073753397237, 1.1476608122361165, -1.0778628423584962, -1.1826687439735564, -0.2983334069128005, -0.9405677474521547, -0.1316442026885298, 1.0415794322065468, 0.031457706909880166, 0.40185795512569217, 0.5680057504067159, 0.4487811587655208, -1.890981268173993, -0.20813077355955645, -1.1278918446449648, 0.0976102127373202, -0.4396025725464862, 1.13966263395932, 0.8800683478695012, -0.4390315224865612, 0.8352543400425974, -0.6416390065504894, -0.4185489493255141, -0.14358452337381933, 0.3229857369820825, 0.40906237950521346, -0.8774506171339351, 0.17855829086113095, 0.2942911094966865, -0.26956499012979956, -0.594263411951702, -0.8820586551654293, 0.19168429076964602, 0.9320022617397814, 0.3469301281229362, 0.8708434312878163, 1.38335867526748, -1.693588315970276, -0.47920924486264665, 0.27195785052081917, 0.899919260122491, -0.5670525260070235, 0.28253652479051733, 1.4717430631656925, -0.3938745167085202, 1.3420338787636203, 0.07734968673664687, -0.22307281025633455, -0.06842865579333862, 0.8820726768303652, 1.1617475981837795, -0.5445053993271162, -1.6685708178136907, -0.604900108391799, -1.4509136246246903, -0.8677025372132973, 0.44175525248542286, 1.2380051766092655, -1.1301294572944445, 3.5953876986672255, -0.7311965810915613, 0.6612001818907256, 0.5644435285732619, 0.31200772222466067, -2.501823109461287, 0.03568906908977818, 0.6711365751637789, 0.10036766629128512, -1.9630063235244388, 0.20250426856488513, -0.37134570058665717, 0.8941462516437774, -0.5364177308537464, 0.14141128561714333, 1.1165497781562674, 0.6002964569533693, 0.3139908715338594, 0.7397153430022654, -0.5799201931033439, 0.5329264170127224, 0.0757461775588834, 1.1454947730219187, -1.2832223575262358, -1.1731970859703744, 2.264358935950376, 1.535151051934949, 1.2609714707832425, 1.0347284219371276, 0.7931445181078505, -1.1622188132692055, 0.27932962145356316, -0.8488543068716493, -0.21592794240105817, 0.6566383906736746, 0.8811148239408805, -1.4538990075976945, -0.673945501033193, 1.4420580869170465, 1.1526892923346204, -0.5580601750838238, -0.5193463961965822, 0.9856658198526146, 1.1612473442212157, 1.8901581231152924, 0.9954498087197619, 0.536910685665978, -0.5714364972858512, -0.7795697135851043, -1.1261703254618494, 0.8838113044537101, 0.31678992899871267, -0.7498434517605724, 0.945043974186398, 0.3830272308939737, 0.01811044220476568, 1.557358039479812, -1.1013820170238586, -0.18334305957155458, -0.048585931918069494, 0.48707383897255696, -0.06988463350772384, 0.03880070372652659, 0.666378400360196, 0.3153960860722241, -0.4553253041620339, -0.7620891486112908, 0.7833035854562042, -0.4972028753925732, 1.2235988334078434, -0.5372177387698984, -0.18194736753591428, 1.0076432223870029, -0.11562338831110575, -0.44166427943855957, 1.862246649641681, 0.16318485053532772, 0.21059455079709405, -0.04468791360092496, -0.09854463425203973, 0.610220453599741, 1.0966132130656288, -1.3377145615324746, -0.7432885872434457, -2.2463793716496183, -0.8271942633183708, 1.0330281295592512, 0.5665224930728516, 0.8235296531498106, 0.6513073416660541, -0.35686131551458816, -0.7466175012069378, -0.06866257813543919, 0.6819214512912009, -1.3157311036080868, 1.0765917423686246, -0.4124980314658376, -0.13454483357874214, 0.4039229699126195, 1.0392171119322082, 0.30783322485667264, -1.1636116702452202, -1.1864962493216553, -0.19855569336096057, 0.8554191239588586, 0.352400820758953, 0.509830562978939, 1.1127961330998304, -0.42772830220525987, 0.8203366802620794, -0.13107111869784893, 2.395067138296113, 0.9796702201792316, -0.31621524862176864, -1.855416176565475, 1.4335843287274053, -2.030956619344538, -1.0171091372766654, 0.1958899672744909, -1.7263899334779662, 1.3403087264740343, 0.5222811637226092, -0.3292665860742744, -0.805144923911586, 0.2937618607534383, -0.06839741587635721, 0.21159132832002855, 0.2439549047998887, -0.25957042793288443, 0.3803586083160361, -0.03287499950025958, 1.8371154985886862, 0.534974938780373, -0.22624467871026605, -0.5500096460519907, 1.688961038095004, 0.5698707282163747, 1.6482773735238936, -0.5991965310798085, -0.449879365783737, 2.22854455207779, 0.15551004552008937, 0.8500574802035589, 0.3316175009075528, -1.7646934144734967, 0.002668556331391873, -0.8136295403887579, -0.9465575672564711, 0.3469149176826813, 1.0045993947511778, 0.2610941691615629, 1.0788518344074862, 1.429798559996883, 1.6332065112971001, 1.7738534285950363, -1.6081696632587419, -1.161359070554741, 0.4734557044072717, 0.8251757971684041, -1.00859364816552, -0.47466672457489073, 1.2706120469339364, -1.728025679680301, -1.2420591801850245, -2.0058475112711514, 0.5071009399593757, -0.763791941134191, -0.8745505869548725, -0.20863591717796462, 0.6711383514595195, 1.4973252224613436, -0.4581821737978766, 2.85934273014681, -0.5905994619497847, -1.2986776963277358, -0.6884736402196919, -0.8420374077504474, -1.9226574720130702, -0.7714846254184806, 0.4879570553679617, 0.9569335370728702, 0.1215505686746317, -1.6928895703415128, 0.5214662704113713, 0.8488733195590197, -0.18689854597886257, -0.33142178700758057, 0.2108448776087118, 0.21001598604651528, -0.9215746025534817, -0.5943198935837782, -1.757528113553421, 1.251745108485312, -0.868299098407261, -0.1351648490652594, -0.23753657646460405, -0.4541796977906028, 0.6279007880533118, -1.697389937955057, 0.32284669288734297, 1.3123618498586958, 0.2238366057536359, -0.5546344165085834, 2.681801981114757, 0.620608819397525, 1.4571504499595769, 1.3299424270339977, -2.0231033737037047, 0.5166078996711738, -1.6380306920827867, -1.2122365561438313, -0.6623786574250906, 2.0063313680095405, 1.4850546815331578, 0.08949085370524765, 2.207851490608375, 0.6549815456848764, -0.8293836626550278, -0.6235361522388553, -0.626995367880836, 0.4159405289601604, -0.6195377638236638, -2.059249774668197, -0.7922512836603205, 1.9089401526170708, 1.59925697493435, 2.979844425070889, 0.19313774990116925, -0.5567288589208035, 0.5692262629524086, 0.2998477603655102, -0.8259830110426495, 0.820266660992923, -0.7182362270286512, -2.2200296733850635}; + + +static double gemm_C_dram [32*32] = {0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967}; + + +static double gemm_checksum[32] = {19.171406532352187, 64.83908386369714, -15.833072522846592, -9.097406689220577, 38.77022492904121, 36.661072250530495, -19.204889499817334, -26.71405328485298, 2.199782273326125, 22.879340449675865, -25.495771295498592, -22.74413590136339, 41.027971509741164, 2.3121890057321304, -19.49682405405703, 25.832519909539464, 42.9907473021782, 30.112697137204815, 26.7239787914316, 85.07758200685522, 6.60571186375147, -12.02777529819674, -23.409006725121806, 27.330350323575306, -24.78504460632868, 53.946894048375924, 92.26090941929412, 27.603604435548316, -41.68101813310628, -19.73859198296261, 37.159087216031466, 20.44420834195346}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/data_64_64_64.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/data_64_64_64.h new file mode 100644 index 00000000..1c964152 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/data_64_64_64.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 64, + .N = 64, + .K = 64, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[64] __attribute__((section(".l1"))); + +static double gemm_A_dram [64*64] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342, 1.8448885093030065, 0.572007132100381, -0.9020532459752512, 1.423932009681719, 1.1116421563744774, -0.609918694875925, 1.0390897743423966, -0.1305603800084962, 0.7049709576256773, -0.30985592801910117, -0.6566307196626123, -0.005304890708390932, 0.47214213858952303, 1.247922968974058, -1.434297700901899, -0.5773871236273995, 1.9951334816061994, -0.9419344596787323, -1.3864755081036366, -0.15540161000210675, 0.28089640344542804, 0.6902199813822665, 0.055137779443554184, -0.1316442026885298, -0.47920924486264665, -0.37134570058665717, 1.1612473442212157, 1.862246649641681, 1.1127961330998304, -0.449879365783737, -0.4581821737978766, 2.681801981114757, 0.622613137075688, -0.5264955185026189, 1.7456452297639542, -0.0032580522874735246, -0.08412480377121889, -0.09847618283385187, 0.5573182638994464, -1.1975598741016937, -0.25042914816475237, -0.24189491229960913, 0.1717462405241003, 0.5303343737606813, 0.8246091313323292, 1.010839700197812, -0.8902436270883701, 0.5757151238996234, -0.6241388306405901, 1.0306895727537915, 0.5437796109495969, -0.37254092473885336, 0.17302563058445183, 0.16431412357817202, -0.297796251553928, 1.0415794322065468, 0.27195785052081917, 0.8941462516437774, 1.8901581231152924, 0.16318485053532772, -0.42772830220525987, 2.22854455207779, 2.85934273014681, 0.620608819397525, -2.0773600718526932, 0.5102128857829208, -1.3425473236398795, 1.0664992078500592, -1.3978347586933288, -0.5082793586733352, 1.0293339145628106, 1.1953652639556394, -0.7592324149843712, -0.9927853948011712, -0.8401102070638347, 0.3955192048365272, 0.34215369871376844, -2.8791873832700547, -0.0421115170793464, 0.2803818171599705, -0.9401015854505796, -0.08972003336849564, -0.640338334227558, 2.0182530686564895, -0.7235603815620858, 0.6081345501547663, 1.7752306448722606, 0.031457706909880166, 0.899919260122491, -0.5364177308537464, 0.9954498087197619, 0.21059455079709405, 0.8203366802620794, 0.15551004552008937, -0.5905994619497847, 1.4571504499595769, -0.05879218788301025, 0.6116700031464317, -1.3093298447872528, -1.9790524548585495, 2.327922240143418, 0.5346029134452727, -0.2220392426765117, 1.0350931612437495, 0.579583179532083, -0.09395716249601935, -0.5606885258433681, -0.6916360198922066, -0.25495705935359947, -0.23051091319332653, 0.5226206406896088, -0.6035154511863011, 0.5592128760780101, -0.3223643795390148, 0.5138781656523993, -0.7592214987689807, 2.417337785331285, 0.17028885180838357, -0.18586838199027028, 0.40185795512569217, -0.5670525260070235, 0.14141128561714333, 0.536910685665978, -0.04468791360092496, -0.13107111869784893, 0.8500574802035589, -1.2986776963277358, 1.3299424270339977, -0.14883240827467462, 2.0486968982261202, -0.9909136952855094, -0.3600241005246587, 0.1602748303156346, 0.07168780603661637, 0.30202523579276225, -0.582835004754739, 1.0356927036283528, -1.0360800724687276, 1.993616236752697, -1.2365797403960304, 1.8548042098231963, 0.20499605949096963, 1.2010757276760113, 2.057751677950784, 0.2883899362101988, 1.6134203350119927, -0.9640624060585024, -1.1213275218434526, 0.6531743202785056, 0.2277981765470329, -0.8359861748374583, 0.5680057504067159, 0.28253652479051733, 1.1165497781562674, -0.5714364972858512, -0.09854463425203973, 2.395067138296113, 0.3316175009075528, -0.6884736402196919, -2.0231033737037047, -1.6070787249452574, -0.7165117692039605, -0.7553512437574256, 1.9280259690970352, -0.26733976223106926, -0.0673955495394241, -0.536406291194771, -0.7093789385459298, 1.744020696757244, -0.8126325347024919, -1.5969922983164335, -1.2686890383326754, -0.9291972010711246, 0.9031672530350638, 2.269233244076525, 0.40988533123157295, -1.7212576593177709, 0.7166427020983424, 0.3627363765292881, -1.5589258141736047, 1.3206137582172544, 0.22241582722694822, -0.5254557201726808, 0.4487811587655208, 1.4717430631656925, 0.6002964569533693, -0.7795697135851043, 0.610220453599741, 0.9796702201792316, -1.7646934144734967, -0.8420374077504474, 0.5166078996711738, -1.2752325216668503, -0.44546162876683887, -0.15696203458936964, -1.1862950949600968, 0.37408049529043713, -0.38524482721238545, 0.7842727318028115, 1.1538879916827052, -0.9454918159942679, -1.405125889371723, 1.0636457383418108, -0.7818062318843579, 0.8829476857079316, 0.8745221489151239, 0.6929310708225009, -0.39888705398196755, 0.9994754870230482, -1.666570871939696, 0.7961227485818212, 1.22745042848715, -0.6004867918118467, -0.5361669868684229, 0.4874774972013086, -1.890981268173993, -0.3938745167085202, 0.3139908715338594, -1.1261703254618494, 1.0966132130656288, -0.31621524862176864, 0.002668556331391873, -1.9226574720130702, -1.6380306920827867, -0.9710154441004514, 0.4763931829831273, -0.8587268321219447, 0.420689070376205, 0.6054083058374654, -0.7954680985571436, -0.20058537792435566, -0.19994075887630136, -1.895096099561938, -2.091666612524903, 0.0004974458415376117, -0.4080026099220151, -0.44867368855172923, 0.5700168037125656, -0.19142620469203458, 0.7614369056740486, 1.185949052557463, 0.6170757026559303, 1.650950629705662, 1.7703882319843902, -0.49884117664872785, -0.35212526236220854, 0.42973964778170143, -0.20813077355955645, 1.3420338787636203, 0.7397153430022654, 0.8838113044537101, -1.3377145615324746, -1.855416176565475, -0.8136295403887579, -0.7714846254184806, -1.2122365561438313, 2.8536471208979433, 1.3032022234889244, 0.4760756036980966, 0.04693766693045954, -0.5984449522911452, 0.7900271874549623, -1.969917184758775, 0.3503211304018375, -0.0008137206583593385, -0.6256281405885463, -0.3510577387659576, -0.13894191854589522, 1.199426224041857, 0.12132847331734303, -1.4608604499664002, -0.22948805550230816, 0.051902944512615914, -0.019119222645881905, -0.9757273564713941, 1.8473014772988974, 0.5263294510598043, 0.07053654437136757, 0.9547242579775002, -1.1278918446449648, 0.07734968673664687, -0.5799201931033439, 0.31678992899871267, -0.7432885872434457, 1.4335843287274053, -0.9465575672564711, 0.4879570553679617, -0.6623786574250906, 1.0259687873673153, -0.02932551729568818, -0.7891190307945258, 0.29564308636903597, -0.34927374642138076, 0.8136749201194545, 0.620245645223459, -0.43951272221042564, 0.46265400794768385, -1.869391305207575, 0.48193063531644537, -0.095540604007519, -0.16987767760770991, -0.19495692375454912, -0.08834646865917613, 1.2824833220745997, -0.13585649309388986, 0.6657305691375492, 0.6391954485208522, 0.3751449189250956, -0.19786418069226533, -1.1107085792532714, 0.16954868116772995, 0.0976102127373202, -0.22307281025633455, 0.5329264170127224, -0.7498434517605724, -2.2463793716496183, -2.030956619344538, 0.3469149176826813, 0.9569335370728702, 2.0063313680095405, -0.07729526178752644, -0.4820520883676177, -0.3642766707809299, 0.2721281447061126, -1.0173409588721802, -0.22291945275506458, 1.415842532715168, 0.3487504850213432, 0.3522443413976922, 0.9077850533771569, -1.0749257488285808, -2.072058608998672, -1.189733419675099, -0.5102992245699747, -0.5266987160364432, 0.38803217663099665, 1.2098862819236005, -1.0678208861159952, -1.6484340857205138, -0.6773093361468119, 0.19847908080770726, 0.43435982710100896, -0.06608174057217904, -0.4396025725464862, -0.06842865579333862, 0.0757461775588834, 0.945043974186398, -0.8271942633183708, -1.0171091372766654, 1.0045993947511778, 0.1215505686746317, 1.4850546815331578, 2.90124785320579, 0.9193799243970369, 1.4109003071198862, 0.9342714574384375, 0.7408981122108215, -1.501451886644788, -0.8528561599738412, -1.4502786649323292, -0.060333190180409904, -0.06215199874022316, 0.6962114020423124, 0.1737374420722428, 1.9987164641082087, 1.7922666332582982, 0.39258330183185886, -0.1955663537656974, 1.185062371327038, -0.24969600604011072, 0.5062590514320574, 0.7374924629427219, -1.0887076741188921, 0.9197089124134338, 1.4198792364404926, 1.13966263395932, 0.8820726768303652, 1.1454947730219187, 0.3830272308939737, 1.0330281295592512, 0.1958899672744909, 0.2610941691615629, -1.6928895703415128, 0.08949085370524765, -1.6099870201619317, 0.6146813355739139, 1.0232681185457035, -0.6120020584064751, -1.0855633146564565, 0.9035218354603602, 1.199279110133032, 0.21247320768848982, -0.8276719054682797, 0.34353353507020123, 0.7795065425753578, -0.31690501369321267, 0.08404007020790137, -2.0217996637419504, 1.4723540101508836, -0.5690532461968705, 0.7600008532793323, -0.09696213550941978, 0.49872412917775666, -0.6501714914135994, -1.4186463922997374, 0.4572717163404996, -0.6798540159722049, 0.8800683478695012, 1.1617475981837795, -1.2832223575262358, 0.01811044220476568, 0.5665224930728516, -1.7263899334779662, 1.0788518344074862, 0.5214662704113713, 2.207851490608375, -0.8847331619490723, -0.22393893146647295, 0.2604924986511237, -1.065720378325982, -2.4784405095403583, -1.397338674255014, 0.12733886071252698, -0.962990797187108, -0.4158341820319732, 0.8295084980828852, 1.129362539634652, 1.4448964367746397, -0.27202686813738103, -1.1376577043818543, 1.1669873661563108, -0.5526532153140147, 0.17431258922451653, -0.08674760587893786, -0.02662111271639052, -0.5787298408624987, -0.46418731609632075, -0.7338887598113502, 0.0037124668666011543, -0.4390315224865612, -0.5445053993271162, -1.1731970859703744, 1.557358039479812, 0.8235296531498106, 1.3403087264740343, 1.429798559996883, 0.8488733195590197, 0.6549815456848764, 0.5939979568631141, 0.571492357564412, 1.2838646589587073, 0.1968309175885564, 0.0125526247658802, -0.588379978175527, -1.459242663662794, -0.16058887298258492, -0.30513433025622483, 1.3958505210549053, 1.112993202632025, -0.6980224325960035, -1.1242172376210566, -0.04898442309094625, 1.7267743114344978, 0.3596144012700469, -0.359544416669036, 0.20255944297423273, 0.3676083732835713, 0.8149334833372205, 0.9572709382349587, -1.4303046720322652, -1.9840617027488057, 0.8352543400425974, -1.6685708178136907, 2.264358935950376, -1.1013820170238586, 0.6513073416660541, 0.5222811637226092, 1.6332065112971001, -0.18689854597886257, -0.8293836626550278, 1.2200036287220326, -0.948302395460301, 0.6269276746157323, -1.8413847347422614, 2.975492133500898, 0.5732253342246594, -1.876866690355531, -1.4492981424636866, -0.7472606420064576, 1.4876059940278459, -0.18934308720894036, 0.13020040181367357, 0.5331924552669381, 0.9913637676227545, -2.6437681894231435, -0.6461446779487539, -0.8660236542618331, 0.47452405238110584, -0.4790606483008819, 1.5321216571398668, -0.1636651452718229, -1.0332700298347521, 0.9892360243254097, -0.6416390065504894, -0.604900108391799, 1.535151051934949, -0.18334305957155458, -0.35686131551458816, -0.3292665860742744, 1.7738534285950363, -0.33142178700758057, -0.6235361522388553, 2.8510918408680124, -0.7318379837818061, -0.6194976835634578, 0.8118142867300344, 0.43758672808479837, -0.7150266134830248, -1.9406394619639358, 0.8679359705510734, 1.4354983174276066, 2.182868585469132, -1.1741764376487758, -0.9331282790464878, -0.2820770772397286, -1.9483310573156807, 0.31916263280850626, 0.6390360973776629, 0.5428826848071413, 1.5065733412421733, -0.47412499801799024, 0.2569777134684139, -0.18464959701431985, 0.707300443390559, 0.16960249404796737, -0.4185489493255141, -1.4509136246246903, 1.2609714707832425, -0.048585931918069494, -0.7466175012069378, -0.805144923911586, -1.6081696632587419, 0.2108448776087118, -0.626995367880836, -1.25582651238933, 0.03382654045677089, -0.45889090147992845, -0.2896301303848118, 0.4922810729687261, -0.11561150744781683, -2.0656398984212156, -0.15730996466261546, 0.7768976641774541, -0.7044791153933941, 0.8524501556338853, -0.3340090119288742, 0.08640562469139157, -0.059343641632369076, 0.1619562886451128, 0.15046570393731748, 2.7590525887014667, 0.22065232253703387, -1.3774088537570648, -0.29499229105904573, -2.4537835279476146, -0.8341158090629236, -0.43274207019506117, -0.14358452337381933, -0.8677025372132973, 1.0347284219371276, 0.48707383897255696, -0.06866257813543919, 0.2937618607534383, -1.161359070554741, 0.21001598604651528, 0.4159405289601604, -1.5043005890504582, 0.7372524407400997, -0.5334658384258053, 0.2567239585606655, -0.6299751233419266, 0.024035161278926437, 1.1244580271586777, 0.40836377201711715, -1.8739717517634698, -0.26853628794603523, 0.37761170331094157, -0.0050819767759484056, 0.009684786386250501, 0.2636875321138984, -0.08553945533113934, 0.33475288490766125, 3.4237712468503103, 0.744628978129671, -0.9096458649167182, -0.6827694846192245, 1.6425500385797525, -0.3900596403135759, -0.9509348833512404, 0.3229857369820825, 0.44175525248542286, 0.7931445181078505, -0.06988463350772384, 0.6819214512912009, -0.06839741587635721, 0.4734557044072717, -0.9215746025534817, -0.6195377638236638, 0.809667872762421, -0.4103668947560523, 1.749809215983805, 1.001647179219911, -1.7659243403508436, 0.15383957509758237, -1.2779831760745572, 0.2669263499455465, -1.4256436904962992, 0.040903466313536106, -0.9342945534262868, 0.7618231087000356, -0.30058739646889815, -0.5446714593776727, -0.4802089660362259, -1.1432227238603179, 0.5174957898345334, -0.26915089392842423, 0.3387263580347474, 1.2480509452812811, 1.9521841872543286, 0.9788396157168914, 1.001353646981955, 0.40906237950521346, 1.2380051766092655, -1.1622188132692055, 0.03880070372652659, -1.3157311036080868, 0.21159132832002855, 0.8251757971684041, -0.5943198935837782, -2.059249774668197, 0.4455096569146938, -1.5530036453685645, 0.24334104727505046, 1.9679440499519993, -0.14949638764508505, -0.1787890634869671, -0.8694565617159877, -0.02701940155527667, -2.327140574554701, -0.3493894186252125, -0.02711649643869937, -0.2125855163161856, -0.8626785926902893, 0.5125620452253108, 0.835126803441082, 0.4370304631746852, -1.4380277943151216, -0.15463871080474192, 1.427347151863727, -0.03594236427723813, -0.9987807222089615, 0.15285084511988004, -0.4453218737326093, -0.8774506171339351, -1.1301294572944445, 0.27932962145356316, 0.666378400360196, 1.0765917423686246, 0.2439549047998887, -1.00859364816552, -1.757528113553421, -0.7922512836603205, 1.4533777876325222, -1.508283926364581, -0.9454297378995183, -1.010459444419853, 0.0754147254586834, -1.2810537542822706, -0.7736354580243704, -0.811961379205231, 1.3638217257964536, 1.077496971491708, 0.5810375830537511, 0.3551271969105679, -0.043876281219692365, -1.0850332393056394, 1.109609770945844, -1.0337911892064604, -1.8807813444109054, -1.2265714811977597, 0.3936172157806796, 1.0778363941578806, -0.8644861643567047, -0.9521061052105131, -0.3765845085538441, 0.17855829086113095, 3.5953876986672255, -0.8488543068716493, 0.3153960860722241, -0.4124980314658376, -0.25957042793288443, -0.47466672457489073, 1.251745108485312, 1.9089401526170708, 0.08093711755806289, -2.256777082059624, 0.324177164165908, 1.062105790670867, 0.2886235312894662, -1.2983305542602077, -1.5005961252940438, -1.4260396412546816, 0.12572172650108407, -1.371518218990482, 0.5998645930096181, 1.2473531605780193, -0.9358060344486432, 0.49295286102524044, -0.3494884497630849, -0.9308402692062906, 0.3630283557686611, 1.7611911540817928, -0.7229213248269448, -0.4323877136781272, 0.09012216684853104, 1.2693688025965613, -0.05609728003750563, 0.2942911094966865, -0.7311965810915613, -0.21592794240105817, -0.4553253041620339, -0.13454483357874214, 0.3803586083160361, 1.2706120469339364, -0.868299098407261, 1.59925697493435, 0.5433594960509881, 0.5675579810614343, 1.9203285366540146, -0.5030970822643847, 0.8421602450844566, -2.316838061301056, -0.4201799135308444, 1.99145358910135, -1.1698739038813457, -0.48526560569590693, -0.664516213841126, -2.1784216925774254, -0.05592421534349575, -0.3735237580415768, -0.22461780649945687, -0.6015415198184665, -0.525149213451578, 0.20817264425532928, 1.0421502948740846, -0.24223189745187212, -1.5453453515930158, -0.565952007041841, -0.453301777620275, -0.26956499012979956, 0.6612001818907256, 0.6566383906736746, -0.7620891486112908, 0.4039229699126195, -0.03287499950025958, -1.728025679680301, -0.1351648490652594, 2.979844425070889, 0.21407749737048995, -0.41165660712793767, -0.8911684286042895, -0.49236046031915226, 0.08810619424950021, -1.4051338603716423, -2.3224238004285707, -0.3410883214075715, -0.12686282703773566, 0.23609553256542695, 0.23545196849666264, 1.371312887239788, 0.2318653380046876, 0.08464059182127714, 0.19008151199377613, 1.7562161679995132, 1.181971977987871, -0.8172519034071913, -0.31575932783054717, 0.2503737947188051, 0.028618079946139307, -1.723439924093865, -0.7885161782185284, -0.594263411951702, 0.5644435285732619, 0.8811148239408805, 0.7833035854562042, 1.0392171119322082, 1.8371154985886862, -1.2420591801850245, -0.23753657646460405, 0.19313774990116925, 0.5053866496884525, 0.3283028032403514, -2.225396433305001, -1.096249407991655, -0.9149883628966105, 0.21230053589695053, -0.6023002440801871, 1.4512382841053386, -1.5038113250304717, 0.11558860384831522, -0.06338166413389325, 0.22201020504142566, 1.4399368526678278, -1.536144263111769, -2.717778670757182, 0.1168039138752043, -0.5866181500734327, -1.5377442224077151, -2.0944415177169953, 0.7870016058915985, 0.8949404757727989, -1.2488701028525535, 1.8425900504983932, -0.8820586551654293, 0.31200772222466067, -1.4538990075976945, -0.4972028753925732, 0.30783322485667264, 0.534974938780373, -2.0058475112711514, -0.4541796977906028, -0.5567288589208035, -0.7063829736735863, 0.08317733846151737, -0.9039919874880522, -2.359353503098415, 0.11425878193276912, 0.64706666019578, 0.4359959376210403, -0.09281069482301793, -0.5382334133878951, -0.633983343063867, 0.49835413266819356, -0.6176307398455463, -0.58828999383318, -1.7334295099492802, -0.8643497543156821, 0.689824201173873, 1.524711206099055, -1.548684848469057, 1.2284263304913572, 0.19868751298961676, 0.11836116797672853, -0.06310268278090121, 0.7479073753397237, 0.19168429076964602, -2.501823109461287, -0.673945501033193, 1.2235988334078434, -1.1636116702452202, -0.22624467871026605, 0.5071009399593757, 0.6279007880533118, 0.5692262629524086, -1.7255159569914225, 0.6397252376986503, 0.23342621054073684, 0.21399479954715414, 1.1788921695577175, -0.4946728962147127, -1.8310549540520982, -0.3690830035843751, -0.42224783195423987, 0.32423026673778105, -0.4402301947763417, 0.7465865033369634, 0.43199223950922194, -1.939062107304355, -0.10453191019598392, 0.8153426406136252, -0.7800663274052761, -0.4477465519532468, 0.01545038682624204, 0.39608506375087277, 1.1493902335657455, -2.130104535188091, 1.1476608122361165, 0.9320022617397814, 0.03568906908977818, 1.4420580869170465, -0.5372177387698984, -1.1864962493216553, -0.5500096460519907, -0.763791941134191, -1.697389937955057, 0.2998477603655102, -1.3941268553154642, 0.5706575386796322, 0.7831976119427991, 0.28018300766602294, 0.13693472548612742, 1.0154445987056024, -1.1860807036684393, -0.19007920263882952, 0.1523832525182091, -1.2093360312349437, -2.100547843467698, -0.1530333323078057, 1.1971503331114541, -0.38189865297027337, 0.7916834209392376, -0.1728944869857963, 1.160481352505748, -1.0427224611678692, -1.040602541009036, 1.8273660232377136, 1.4195569065800453, 0.8386877142814951, -1.0778628423584962, 0.3469301281229362, 0.6711365751637789, 1.1526892923346204, -0.18194736753591428, -0.19855569336096057, 1.688961038095004, -0.8745505869548725, 0.32284669288734297, -0.8259830110426495, -0.3611221208798455, -1.4195164842808716, 1.1907305012760756, 0.1522501461827938, 0.922469684257407, 0.016501336648811274, 0.7429642513221194, 0.10750421501190041, 0.4808356602618045, 0.1323677945856938, -0.7034274377386549, 0.09645911224015045, 2.532325541632594, -1.5866221126564115, -1.971084122083064, -0.13301270859207348, 0.39343143403797187, 1.3390674367668436, -0.747255398772972, -0.16290875300595686, 0.4979804345513483, 0.08795913929250766, -1.1826687439735564, 0.8708434312878163, 0.10036766629128512, -0.5580601750838238, 1.0076432223870029, 0.8554191239588586, 0.5698707282163747, -0.20863591717796462, 1.3123618498586958, 0.820266660992923, -0.05334598793633222, 0.10738590560666669, 0.7476571054869932, -1.5691946737355327, 0.8999837788505479, 0.038792413114335636, 0.9914820089613138, 0.9465564741859593, -0.9548035752110309, 0.37108183095020375, -1.6932708709240643, 0.5742732453192894, 1.1869006875492747, 0.2555908214103616, -1.3999854653788708, -0.5270366881316677, 1.8409181821652891, -1.7547244042030132, 0.07405473692919617, -0.14925008749413637, -1.8439449535735588, 0.3444816081051852, -0.2983334069128005, 1.38335867526748, -1.9630063235244388, -0.5193463961965822, -0.11562338831110575, 0.352400820758953, 1.6482773735238936, 0.6711383514595195, 0.2238366057536359, -0.7182362270286512, -0.35435416471609005, 0.6485877172023825, -0.2757466733288484, -0.3563016808385527, -0.17817414950901492, -0.0019081140052624073, -0.39273602229275606, 0.06348346009811161, -0.8742437683710312, -1.8689872110353185, -1.5147133895052636, -1.0184612409555949, 0.18139626346512772, -0.7129650139254672, -1.3195899155857833, -0.21170557963600709, 0.49610977046001814, -1.107773982297535, 0.6462111934112551, 1.688912150364615, -1.3591299269239323, -0.7475464904708393, -0.9405677474521547, -1.693588315970276, 0.20250426856488513, 0.9856658198526146, -0.44166427943855957, 0.509830562978939, -0.5991965310798085, 1.4973252224613436, -0.5546344165085834, -2.2200296733850635, 0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967, -1.6848834226351845, -0.468054031300935, 0.2231411040063078, -1.2079120248207287, 2.0110030501455016, 1.4453850086239999, 0.34059707215507334, -1.8213959334958643, 0.8699402772722297, 0.4899667100861624, -0.01173787871675348, 1.1948559206670855, -0.8870269587625144, -1.555705163842219, -0.26533917383348415, -0.3325290424739039, 1.5977665804314234, -0.41203089860517084, 0.49183361850554513, 0.5136570154037132, -0.23309124875198506, -0.7998287164209388, 0.530066185314952, 0.47106304564421286, -1.0105968114955957, -0.8353508972894879, 0.12377709284481839, -0.07289187751377658, -0.6735741109340289, -2.0639344018430106, -0.014438189818046943, -0.4713457882035365, -1.3988791318705927, 0.7076705525000143, 1.0974072497097722, 1.1672671573256546, 0.5553099499949979, 0.12122031680888311, -1.3280507129101098, 1.1654608124772015, 1.3139075127865134, 1.28261825548601, 0.8583778828163117, 0.4508675701062839, -0.3773168693728364, 0.16884703765184494, -2.5899418769593017, 0.8980383022257733, -0.7871723126611332, 0.008146263601196916, 0.15100042746757067, -2.158690321719755, 0.5154773443584927, -0.8968793509306945, 0.12745529032276473, 0.3057102963260676, -1.127194036956006, 0.06889018035163645, -0.29649779158358486, 0.4000800574133786, 1.3294197922581654, -0.9809012577471112, 0.2604706024238921, 0.5802535538390949, -0.7974783258128166, -0.6640912726671294, -1.119222930304624, 0.5834025731102502, -0.25723586541301474, -1.618253196199123, -0.0570695619599075, -0.43841397343582966, -0.6767231131676439, -0.38371376805174173, -1.9996328333376983, -0.33850140623335534, -0.1183524981649774, 0.005796690030477999, -2.458306016054147, -1.099750705180441, 1.054860270281014, 1.1651235359219074, -0.8686068833819991, -1.4001372299430193, 1.1272944804074991, 0.03719751404379593, -0.06732456664178753, 1.0123217113273348, 1.396494377415687, -1.114892120467897, -0.23680354926169062, 1.1762829232717322, 0.35544788004728406, -0.41986744728203046, -0.3867023929082546, -1.483298749076887, -0.566334552372417, -0.03321061530877886, -0.8527679221181403, 1.4516682272189547, 0.7320822341298279, -0.05200885253027685, -0.9525949548843667, 0.5751795467491231, 1.178459960930901, -0.10762850518883417, 1.5651830651133336, 2.1380607452390663, 1.2280945171647695, 1.4042702000856067, 0.09325784801982663, -0.3557970327475224, -1.073778288097418, 0.8968276612463406, 1.399133831515596, -1.2439663723417378, -1.781799686206601, -0.33427106612358554, 0.889230360742913, -0.41170088971799085, 1.2155279834457413, 1.600649868770159, -1.6424774434123148, -0.30897369601229935, 1.047363878453214, -1.0791866371859211, 0.34680511458320423, 0.9927888544576774, -0.8514984695838704, -0.8372280244524042, -0.22804642016295132, -1.3868435427851724, 0.7441016059552877, 0.06972829881636747, 0.3420780025264497, -0.04386730461990216, -0.017778941397242242, 0.6102135468147727, 0.1101978218029996, -1.401046648194382, 0.6208120606616816, 0.26306079867835747, 1.6277476977056633, -1.4148077742490233, -1.12911289812443, -0.4018145604094114, -1.3755867441903893, -2.399920233063965, -0.020319571626188252, -0.895842610909627, -0.3494298955785707, -0.2738387174328631, 0.34922230639219626, 0.07109890321458032, -2.4101191646725644, -0.7411692543552041, -1.3233841458208606, 0.6863453426487733, 0.3632155343313335, -0.5590033258828403, -1.1449685446383917, -0.7258003922221851, 0.278797530701865, -0.3441402294664407, 1.441339424212574, -1.2335052347473323, 0.07612868920434228, -0.4241597163106437, -0.05332877983539378, 0.10099084201256278, -1.8787758687909357, 1.4045284087841965, -0.04347827565492549, -1.2990797348095602, 0.6319627183761264, -1.0748380347638893, -1.280830568026441, -0.4632576940943757, -1.2762157345443148, -0.4871099169463196, -0.8573516675952042, 0.2602500067557723, -0.663512812580364, 0.9193611678505703, 1.4195120671985408, 0.31768737978504635, -0.22676062071355782, 0.7472485772463154, 0.33979457913367445, -0.024989366536706515, -1.1780091950874647, 0.8422172106604986, -0.9853850143769382, 1.0084091587937258, -0.5446586568124329, 0.2287236140419025, 0.12649973956792954, -0.8624432460024017, -0.2042801144909528, 0.8201641258212513, -0.8429169760408267, 0.15786776211979775, 0.586990037118922, 0.7581270686613231, 0.13813966047716805, 0.14287983497159015, 1.542247836275435, 0.6889352238499454, 0.3790751131802156, -0.36007691647378387, 1.5453032787583676, 0.4475231964904419, -0.06905081640069816, -0.2556692520813782, -0.6423795723912976, -0.6500078649365075, -0.6577072095504994, -1.4866829628942408, 2.5030140049559653, -1.0572143847418314, -0.000571660449572993, -0.042894005602608545, -0.4591852328122149, 1.2843268761512387, 0.3968454779394536, 1.138745996685296, 2.4071733886455227, -0.10540633867195442, 1.2714215049136428, 0.04757946360595818, 1.2348108652417815, 1.6311115642560317, -1.6302649244099794, -1.2745470694966483, -0.8131839077565575, -0.6825393122927416, -1.0794370197645617, -0.7204636565534043, 2.1467941519636455, -0.18535362890328835, 0.6625127934408671, 0.38979365484662193, 0.7719784843101606, -0.4958538436662962, -0.658575404725063, -1.8250261743740281, -1.3009369789521832, 1.1569797741579901, 1.0803875458840382, 0.3519814471093802, -1.5678550885987372, 0.17700126122173684, 0.19570581803986603, -0.9713133420910822, -0.40681730492260765, -1.079374837348168, 0.9333820675088979, 0.7164115790249227, 1.5974993677559646, -0.27698287787067033, 2.0383895476075855, -0.6836849892211939, 0.8311193676081333, -2.4241121219014663, 0.31596002357495434, -0.999473279382509, -0.262687475352513, -0.46071381621370666, -0.8976883600787323, 0.5219272929937467, 0.9722622620644177, 0.552832436548929, -0.027467290841698567, -0.6107378749038481, 1.3506129449321138, -0.4521398968561788, -0.22117060492964993, 1.3204666166460701, 0.42542027990331455, -0.19467559818902735, 1.3362817877824478, 0.1643979281153062, -1.613150980719597, -0.5326178763831365, -1.5741387694417994, -0.2358632094400509, 0.35096623923842685, -0.40087086833885227, 1.547569381699142, -1.7090186764224344, 2.2199280575728784, 0.7516533958698258, 0.6804837145322774, -0.19556806995297935, 1.3537057525493934, -2.0138393066087383, 0.172351936169543, -1.7024086384702934, -1.0519290071418026, 1.6258351842437149, -0.11856858846558817, -0.8121335733777978, -0.02927583999406098, 1.548105034805526, 0.6981009969478109, -0.990277098683295, -0.15604117684813257, -0.9747927516511783, 0.4652704424950469, -0.31289780730884004, -1.651056798736739, 1.2755967903796157, -0.13648504411430237, -0.48481306969894616, 0.023313382404551213, 0.48504298344685315, -0.8507882704201493, -1.039212404883905, -0.653701398776706, -0.5189768622716721, -0.12449303534256825, -0.5128172446702866, -0.06818346256734656, 0.510667943805758, -0.20971767447744363, 0.7975878663589364, 0.3042695491801, 0.2654566914993375, -2.0012906991903865, 0.413870629899118, -0.6025010011948203, -0.14082858261327996, 1.075340195058932, 0.2593371488480129, 2.62922759693777, 0.3324210527578405, -1.2020419530087723, 1.1926421271709948, 0.2347858166167028, -0.9756048534996443, -1.8200265368846862, -0.5169307203823522, 0.1500518697766681, -0.038484274917838325, -0.5595155602432803, 0.7826664898369591, 0.4484219149387221, 0.29541985156163897, 1.3984689244673294, 0.25998037440140653, 0.42332643185294355, -1.2422400480672728, 0.2176902105319219, 0.728761958261402, -0.011206770084421624, 0.42373795905496436, -0.0772966783872132, -0.1844058501562145, 1.5231610698492861, 1.5815719719777372, -1.0224998294567542, -1.608411795245145, -1.8940383890496493, 0.5392647246180361, -0.9404210876785811, 0.24515734401955552, -0.8758837658412391, -1.528076170772824, 0.16773671218212843, -0.06372312245930913, -0.6625850298997638, 0.31931330490352056, -0.7703083579211024, 0.369010898692774, -0.9262558726002627, -0.021452503506505422, -0.6884402260487072, 1.5154027937733978, 0.8284697701567305, -0.07697958106921719, -0.4538814926580921, 0.5439309292438045, -0.5492443043774654, -1.220225030532012, -0.7053512461796413, 1.632643282613422, 0.5778426489678986, -0.9229177377752995, 1.588544297460673, -1.7481169305157809, 0.2618776316461439, -0.7711250331583439, 1.4721431859882452, 1.6321252809774605, 1.521708343024266, -0.46073261039758234, -0.7747734720993155, -1.3354599996427268, 0.9861401026653767, -0.575980258880269, 0.0853876730028182, -0.6195540436182536, -0.5432771078257063, 0.3060459872354665, -1.824118723913547, 0.8784176817828129, 0.8097094976615903, -0.361780627962229, -1.467071190440473, -1.8907115007272879, 1.1242546008439889, -0.4974181028535098, 1.829441455586246, 1.017979249905673, -0.7075497604105697, 0.059183606525579274, -0.13056990600722507, -0.5832122715205462, -0.01409309201012074, 0.016108610412205803, 0.1900118760884006, 0.24188780949423172, -0.8882450727066196, -1.3576659214518099, 0.07447367725510536, -2.991099769542917, -0.6488322635921112, 1.8595982643945574, -0.702641433986396, -0.6416959601570708, 1.3390388750212445, 0.057488906459266735, -1.808725561176733, 0.2948187135806436, 1.1497414866629478, 0.8709941695277267, -0.2850339815191343, -0.4997261831464098, -1.4398917507631508, -0.2148727154738073, -0.031164729254402425, 0.48150661412660234, 0.12415703923674576, -0.26613703422724105, 1.0565002395567262, -1.6752860867796824, 0.1869147939846373, -0.7272110183291539, 1.6245102578872348, -1.3773924349992401, 0.14296540214244555, 1.4878267201868336, 0.10331510654880505, 0.9062060348158155, 0.9324085143967664, -0.21818888199568304, -0.2522508930003547, -0.8562525871887124, 0.10204130138311729, -1.0184106320915587, 0.1825164284873822, 1.056310703030919, 1.7552903725196911, -0.12454007621445604, 0.31880532192621097, -0.35541825354040035, -0.8580393155101081, -0.2682711254651047, -0.30783295275138195, 1.3170139199898268, 0.7531186614185573, 1.192570085627795, -0.6615475858876328, 1.4991876630051717, 0.30861856418442385, 0.46151436623585584, 0.3960375120229514, -1.5852068567014443, 1.9903541747766398, -1.1185087223822021, -0.5183442785156127, 0.06782511507671637, -0.13813126796841926, -0.8649990189511263, 0.6978353775870149, 0.16085392211498364, 0.7383270750320552, -0.6856342770612354, -0.6045226539767258, 0.8110514204550441, -0.36508901079756473, 2.2802828142762928, -0.7663535452926638, -0.3887166303815122, 0.9034427218611359, 0.21868488058095606, -0.30457226174639157, -0.287175489125426, 1.3568449350217864, 0.39711905418048105, -1.1763187968954603, -0.33474769656895564, 0.917254226523988, 1.0804852401399638, -0.9584787505991971, 1.7478622379080422, -1.2473029790869914, -1.982585782186715, -0.41852445481952294, -0.9465815043529053, 1.3486167490991765, -1.3147522922373933, -0.14921512592164993, -0.6510935828594568, 0.009685462499594857, -1.0764421921168665, -0.12975724308626338, 0.4720265080850217, 0.3117809833804109, 0.8469168005900016, -0.520242573974674, 0.27675686046474957, -1.7178145403893597, 0.439729002709256, -0.30048055544717606, -0.6302171098523444, 1.241050608643494, 0.5721350887681553, -0.0022023636536079735, -0.4924114110139152, 0.9950463422748212, 0.9816810712679719, 1.9924377989279343, 0.03900009491657034, -0.2935571188258591, 0.1266892245615102, -0.715464769225636, 0.3145853867440553, -0.3835873169761903, -1.0953446648325833, 1.0121232148460444, -1.0957236224096085, 0.17063463111383734, 0.5102992173497909, -0.3658969046671184, 1.23797611806204, -0.18059200075977175, 0.9936325102325779, 0.18430235850671245, 0.16517189020344797, -2.016269812957052, -0.3616199185761283, 0.7527532999342817, 1.3277176349050535, 0.2920534284459897, 1.0606099435377094, 1.848598832091733, -1.3301443272735525, -0.5759958625549068, 0.27878675140631204, -0.2315083920631258, -0.8288316208067809, -0.2635580627160318, 1.3355871376746895, -0.8117302674348011, -0.23432703924765444, 1.92799930513707, -0.23101856846075614, -1.4238524703136513, 0.1368000358051577, -0.2055684135567207, -0.15855445409422964, -1.2600442043395892, 0.1701769006730323, -1.068866010850334, -0.1904292641612836, 0.5892434527813512, -0.2157459392172624, 0.4055498592698905, 1.6497067243577175, 0.7890192766736421, -1.044353487265588, 0.7953139847174688, -1.5740154854045074, 0.9665654379132748, -0.3889094455704384, -1.8426397459593846, -0.9001191779220159, 1.7045921258988515, -0.8923330121142684, -0.5956915482032328, 0.011227289589172133, 1.7111591357647962, -0.9587860284026688, 0.7548194520215976, -0.32603844480628175, -0.2353359336920787, -0.16729381132141224, -0.6023878547302806, 1.371156314999161, -0.2459473828028695, -0.2620130902224386, -1.2172056461838572, -0.20656000988613168, 0.5008110746890201, -1.4028780271648753, 0.7193747259694553, 0.0660307754939295, -1.3093771377458805, 0.407051194515542, -1.1823392140768092, -0.4019555472426395, -0.26250820888118304, 1.2702869545254583, -0.24272141574465245, -0.42155102572483116, -0.05194109601117269, 3.292873619493133, 0.7890333104486489, -0.6211877906484109, -0.8047810389893006, 0.9678567436130486, -2.079988930109922, -0.6016769585932343, 0.12364670959331653, 0.7229553379296235, -0.5227730192140618, 0.023991105176350242, -0.0017528334343272331, 1.2586605379107056, 0.8446327540395329, -2.252502331262609, -0.5270068966745032, 1.6223796347828976, -0.4278645067985037, 1.6333830568090013, -0.8062257833307152, -0.30685337459460577, 0.3507708774563464, 0.424527526741457, -0.03735386264172313, 0.229879937036083, 1.1454140027646036, -1.1872670475847902, 0.6262020869197982, 0.7589488691885292, -1.6862092963785988, 0.7944545737967115, 0.9971081922053232, 0.7560471613916118, -1.1851981001821967, 1.0965175918763284, -0.46530937265986, -1.2761702411382863, -0.9791491731581209, 1.1589807765966766, -0.8156014346461856, -2.8072546995497247, 0.5334627416087777, -1.3798149493182552, 1.3972706448160608, 0.4552374166958973, -0.535433943499853, 0.8920580452737524, -0.5856331944062472, 1.7623274652492553, -0.2852747983665435, -0.18313041510663963, 1.4659299617833124, 0.1519470164480292, 0.23355499681619366, -0.836602381173288, 0.18618502715241547, -0.08859676768441688, -0.7180391575300691, -0.36232537769580714, 0.36477740973605915, -0.9281105879066266, -0.46197664970984853, 0.6483976493075976, -0.3812217162848902, 0.4303579894467762, 2.0043530514779873, 0.39102979400332366, 0.37534637396631415, -1.071734524715999, -0.16045645113900145, -2.998145904788263, -0.36470187389744846, 0.03991547011616779, -0.7008645685896715, 0.9912516955548382, -0.7450675439952815, 0.3264674970899282, 1.601666916097199, 0.5405397248625541, -1.1861306612606524, -0.522172803007203, -0.7727094284088601, 1.2277562505941912, 0.37759283992313625, 0.7444682278368736, -0.6522853231400494, -1.0696424743836717, -0.8054574164094268, 0.905380130000978, -1.1121207299686113, 0.2063449976062078, 0.5176153181186626, 0.2301751658467518, -0.17968415020039138, -0.5804234791794292, 0.522042470813759, -0.47680230351950187, 0.7668678996668346, 2.1152176375874023, 0.4635399730851282, 0.7692324460373827, -0.5214713943997042, -1.6311809160767827, 0.7017462722924709, -0.31859839125881545, 0.20304228378387937, -0.18790051825211995, 0.18432739014512065, 1.1541296937922023, 0.4450818568868103, -0.13551483948610296, -0.2758105920455811, -0.5849315949646472, -1.0646125679003637, 0.27411289538745437, -0.5032261617196119, -0.04351057134624247, 0.7743236339777182, -0.6756715811861062, -0.2671752620926679, -0.23914374307205996, 0.16461452793247355, -1.4436309225983486, -2.20506341329235, -1.0189819575984795, 1.5608022939480573, 2.31499985378701, -0.4181529433643855, -0.2711132087457424, -0.7206084096900425, -1.2504073094445143, 0.31340429692041716, -0.1447897506201982, 1.1850402988106572, 1.9541706849775027, 0.11232761778850357, -0.4382234425091706, -0.3947615339868321, 0.7015762348678443, 0.43950731587232217, 0.4486281613565141, -0.33259394965579864, -1.2893276502905346, -0.5665027824228605, -0.9867864794525018, 1.7152028381164288, 0.7425175887812803, -0.4541542908237512, -0.04974419881485532, 0.7205327224864219, -0.49642760570489125, 0.5806736618394556, 0.8088452773706619, -0.15195744367862507, -0.12096553277305616, 0.6220396950025358, 0.8874367244840082, -0.960123924615042, -0.2512769100863725, -1.3487372983592427, 1.9195263893870158, 0.1391130058484598, 0.3556392382753691, 0.022946113835703726, 0.06403402028906036, 2.01431714516637, 0.9153269759513197, 0.45535078555080316, 0.8164902531014034, 0.7554878281598991, 0.7302943512899034, 0.9227450720901643, -0.2149435624765486, -1.9175638929241665, -0.47494584965396475, -0.8209686635530825, -1.475086806478942, 1.5375697346337323, 0.43409387407100747, -0.5748944134752534, -0.1207717673708367, 0.10757938709427231, 2.24973612340786, 0.5656573548928321, 0.7510332313304937, 0.2925755284670311, -1.1385387437599415, 0.9278383480094607, -1.9329319879816766, 0.8833452963447278, -0.9531724053699292, -0.1039290425260258, 0.4382286101469634, 1.8998623656623255, 0.19200494459198952, -0.6716950287224315, 0.5638093918454188, -1.6242049283972644, 1.7704636715303947, 1.6534314391102312, 0.92655666075164, -2.1666623771571185, 0.3089037330906556, -0.34387294467445684, -0.17869075221031164, 0.45228978471381315, -0.9526180775686287, -1.1784311215584218, -1.4588182758831976, -0.3751354576229393, -0.3058513410728059, 0.9384734481636833, 1.1326237644059438, 0.12950394282796612, 0.7421113354249786, 2.22774088023295, -0.38297985887788083, 1.184609638956563, -0.28900852784476955, -0.38476787730344003, 0.06257594537962448, -0.8447175394855944, -0.3276448761445928, 0.9520069001238655, -0.7029145751675628, -1.6244073387265128, 1.622978343226983, -1.2795553886248943, 0.2494267093436905, 0.6236424924999387, -0.04290636875881789, 1.8562326434548018, -1.3390517668015733, 0.5090655455389611, 1.2848563335735044, -0.5387392229559257, 1.6741064751678032, 0.10066535315992477, 0.8949591322162106, 1.6846660415357275, -0.47037844642707904, 0.4157622049238856, 0.540404845364168, 0.3967936830533677, 0.43668944123398024, 0.2112361885627918, 1.185672884091169, -0.33641286222705097, 0.5497594019101291, 0.12465203566067538, 0.38350811363315446, 1.4507326394999236, 0.14723038127353738, -0.7869045408490771, 0.39357209249435554, 0.9743220259735553, -0.06453115565194864, 0.38254243983530506, -0.8643740939583053, -1.684728335866361, -0.20622146179421566, -0.2747979191346741, -0.07028871827775147, -0.5729020560099904, -0.6189757445377713, -0.1510371111896753, -1.1820077963068163, 0.6043354866597276, -0.9774217378587312, -1.3380178663597784, -1.4201147833071752, 0.18880445993987796, -0.8427639940831457, -0.32186427356745245, -0.006664725012722541, 0.8058032956183504, -0.23641847937920588, -0.6756647705708424, 0.4773883748212866, -2.185477701275724, 0.7531165422993013, -0.8203844714762077, -0.4004758384259698, -0.6468022951980026, 2.2667765095579213, -0.1464154957378096, 2.098114036236069, 1.0184508455410493, 0.8103126555466662, -0.40972058902905745, -1.1414090507678094, -1.3867326701405396, -0.4507753555588849, 0.10028961530046718, 0.13126844765242035, 1.8046340365305968, 1.0498294815194782, -0.1970397367331956, -1.4653721149167949, 0.28738863276181814, 0.5271374800610847, -0.1451944493283091, -0.9800599971955779, 0.6516285157791157, 0.3396200289963888, -0.8198525721107438, 0.6319579574491423, -0.3772650215173409, 0.3077068224849206, 0.31720206688921, 0.12158776309046304, 1.0809042082121207, 1.0642567891228714, 1.8179097447438652, -0.43206935605397984, 0.37786874569296014, 0.3952043620022568, 0.3619801074518372, 0.836701763727239, 0.13589241191151316, 0.5983402387018408, 0.11083062853937264, -0.47684235510432976, -1.425496108886025, 0.5861440987479868, -1.086649842646286, 0.8692343861045037, -1.5595017100635853, -0.11939217655297334, 1.867839017091306, 0.1529344462913203, -0.4142188866098133, -0.015382150772253089, 0.02331025826997036, -0.31332150638072576, 0.07177806286427546, 0.9588513248678675, 0.4790246289141386, 0.1782800679264196, 0.8316439535085373, 1.3697451219813022, -0.29239194315140027, 1.7130334754533454, 0.15301199433584703, 0.2516538496321531, 0.8052203626705442, -0.8193169757784692, 0.8297372716531863, -1.6382362402194854, -1.039626938505833, -0.8865946056863021, -0.9294253652017392, -1.7978162276590155, -1.992621134234571, -0.05491414933488196, 0.7607121087371761, 0.07984366129268702, 0.5462619894735057, -0.2682509648059717, 2.6409716720600263, 0.45749720934429716, -1.5363699364147407, -0.7376116600379029, -0.00034809918522295523, -0.0446268595336354, -1.0661827948417526, 0.20144275615808793, 0.7334562425309233, 1.552508206699953, -0.4212114236659149, -0.18798580599722212, 0.362342131367099, -0.40201566793731663, 0.24422295735481817, 0.5936899101332285, 1.4911129590651635, -0.012571888777807325, 1.1564868960369348, -0.4347382827914363, -0.03991151500405277, 0.8894520643614005, 0.6750877041971858, -0.8924490272423622, 0.06802820117873785, 1.3941390498912603, -2.2183459123693248, 0.728823441885771, -0.20738631995329626, 0.5619451894738027, 0.24102109818707865, 0.5988075233622759, -1.197341333157397, 1.141794439805377, -1.4503023284963743, 0.17970074803850108, 2.2516048850144963, -0.56902356791673, 0.5251052705298633, 0.41230439233508803, -2.0610354044549024, 1.6463483630850755, -0.3895932560221762, 0.023372481314313378, 0.3726580742458444, 1.6009305244339782, -0.5079472543165146, 0.026058442391582896}; + + +static double gemm_B_dram [64*64] = {0.189669602985114, 1.325049359243402, -0.732183062829934, 0.572714186764936, 0.578590600877031, 1.2388796995290943, 1.0500306672776403, 1.8192381659692514, -1.1405729828723672, 1.0122300292640196, -0.6803068888120192, 0.23558756797719393, 0.4590523848413457, 0.039978934156923385, 0.7649728251851297, -0.6523866340206094, 0.9057001363970097, -1.4969909024911252, 0.5583314398652852, -0.4452115501359032, -0.3304347302314844, 0.027571386474332372, 0.8939826883481805, -1.872118961147354, 0.5298280317907396, -1.0826478091988276, 1.2084845569673108, -0.17218404794239636, -0.3252179452060136, 0.3945233627729552, 0.2425669838461522, -0.2564454574318479, 2.0415809465850456, 0.6967377843326548, -0.9048546980985884, -1.234321257122067, 0.03613326393674803, 1.5030525940981552, 0.039812401385598245, -1.028716739224381, 0.905199590933292, 0.07238255324721113, 0.9920291161315633, 1.607092129619061, -0.7789509309904787, -0.8098065870783787, 0.2185071569653127, -1.0776572234997361, 1.0422979672486086, 0.35098947793500807, 1.058321853508688, 0.21414179532614872, 0.87002060394994, -0.588672020705869, -0.9012431889469893, -1.1027247239157423, 0.20399290647527346, -0.22033680012834594, 0.41392188096741706, -0.42930260307085955, 2.008106278814718, -0.17141366812550005, -1.0826275786645045, -0.9116258668673404, -0.4909043876322673, 0.5943271959845479, -1.032232792355313, 0.6916475040075348, -0.2814338568695432, 0.3019276636231262, 0.30840104248656297, 1.1260293291302985, 1.0658378320568267, -1.309665630454003, 0.03270078938345398, -1.042853289185364, -1.1963506272729019, 0.22648827570429167, -0.27781730274050287, 0.6724032102680387, 1.4810649208771722, -1.705538843107525, 0.09082361393666324, -0.7042276239280941, -0.2383161417380752, -0.5754942139316102, 0.2034652918512655, 1.0314063302051917, -0.5483340133806348, 0.7261075561744313, 0.24325632249018914, 1.2040307377783537, 1.8952069586290123, 0.07195894063173909, 0.41620952444354886, -0.38792744247312216, 0.43271658564463056, -0.7152907230181043, -0.27441611835118457, -1.2767143227797635, -0.7237480311094019, -0.7801386726592521, 0.5873572672607883, -1.5638814718009917, 1.0026700985921706, -0.20658267805579636, 1.1147082449222048, -1.8735264640919256, -0.010118223620103015, 1.3128640032531393, -1.2394667444809362, -0.058071070610180346, 0.3326917440450766, -1.3418569139214052, -0.35250711745478874, 1.062335579748586, 0.20356887701465726, -1.5085222292073164, -0.20122570212640017, -1.2154057454628897, 0.5158621290601251, 0.9695271692142623, 0.3441306717260009, -2.1992152335223514, -1.3802722217172205, -0.6034656461417384, -0.4801083441565978, 0.8538691740175305, 1.251004287596872, -0.09542742482466746, 0.40740998722283345, -0.46840541134330865, 0.6471911034482357, 0.35532009889140853, 0.7653967450899795, 0.9524656674056426, -1.6215943351797741, -0.2686500917542327, 0.9449563832937318, -0.20293909969523755, 0.020177369737896966, 1.8868326165910845, 0.4576448036103095, -0.2498818144309833, -0.10142946285532765, -1.449579663145317, -0.8489450230349159, -0.6568950465417366, -1.67036939630407, -1.7958306634788441, -1.1021273970619352, -0.21287356137371105, 0.4835462118207064, -0.706131682059633, -0.0005784215469045945, 0.6574250653163278, 0.17766778608163517, -1.8727680007027385, -1.5710173931120528, 1.7986529290207192, -0.18797275721228432, -1.3910123695349608, 0.4306425799188508, -1.219748011178242, 1.0949707620919027, 0.1513762139476246, 1.9338021854764944, -1.7210422812237611, 0.9885068182490291, -0.9803371411601391, 0.29682676074294506, 0.5079171532797483, -1.0067592408859265, -1.1852909158053921, -0.24870697467690292, 1.5263388569653553, 0.3621209495718994, -0.10875592605323897, 1.5707754718355267, -0.058214043298022156, 0.11649757853760016, 2.20745259723818, 0.22508102515092662, 0.30413440003257725, 0.3361637150433332, -0.29948851492748413, -1.4644211330145278, -1.1645688132881276, 1.7112956696610628, 0.3665551294097223, -0.892280722293537, 0.23500589115883444, -0.006491959097523364, 0.6091191876188028, -0.4461691518402758, 0.9121131054406446, 0.6355326129684161, -1.268683781896227, -0.21309922823334831, -0.4526268909737412, -1.4960032394689278, 0.5540823200822727, 0.2560919649556906, 0.6958730281917784, -0.5196649709771612, -1.3359468501779264, -0.9612977596469916, 0.3684109792157164, 0.46874289915027023, -0.23500821987366438, -1.2492858128054651, -0.9712261431242842, -0.11106638365989584, 0.9412519070406014, 0.49297323422258654, -0.8131389146040623, 1.6400307701149688, 1.0589667993101595, -0.4626925507420147, -1.4812253208994315, -0.44695524379636, -0.5088098786201557, 0.7417386987297616, 1.9120910039247294, -0.5568304246735866, 1.082342797278427, -1.7235037406979286, 0.803163868309887, -0.9769340341766338, -0.35112463351229073, 1.089671633947238, 1.4945995510345567, -0.9605994188901047, 1.8558602683726249, 1.2656905677375838, 0.42254046476492185, 1.6858550771091214, 1.157878804816697, 0.4573643259259206, 0.024994765804824147, 0.6922554384196643, -1.0810666579003045, -0.993616522481608, 2.5847749332602, -0.5049684014655186, -1.1395828435290725, 0.7605771798197924, 0.4408163359631587, -0.0840611891215317, -0.9527439222312267, 0.6926562526915562, -0.0027305349396484877, -0.17986472316396296, 0.6422610144258437, 1.412615895841031, -0.8278577538333346, -0.34124077949668935, -1.0204861021625729, -1.639602822546497, 1.6074096919057093, -1.1584852824016685, -0.7208155426015784, 0.8392040761097412, 1.4407795793808869, -1.1752867571353782, 0.13944705380804281, -2.1057408864224376, 1.8791244019244464, -0.11042132844938202, 0.6020370854831343, 1.123017096832584, -0.05652868718922079, 0.9625740766310946, -0.9673606956637038, 0.34492034644528907, -1.5375361503838323, 0.4990455041789286, -0.9489277592897538, -0.44848662225935687, 0.20225111438661522, -0.7527660556091446, -1.1152440995018695, -0.678649964720999, -0.0170582056258441, -0.7846907726938122, 1.464993202427589, -0.23851486543700182, -0.21705046983702211, -0.48796761821159795, 0.06955842538462975, 1.354628016983049, 1.1723362156850679, -0.05921619047971073, 1.837739007328147, 1.8393226614447074, -0.5268796561342607, -0.009364231583693152, -0.34684234783223405, -2.176072940640231, -0.09860764477494396, -1.375924608815696, -0.3811363408541145, -0.25535084881820336, -0.5151247779921773, -1.9166699100712044, -0.7282751936534643, -0.770819120513824, 0.09989507970317545, -0.878538580803181, 0.7867474162185699, -0.6197714222289087, -0.7670250649875356, -1.1346435642707655, -1.0880912464935015, 1.068458625377813, -1.3222351936152148, -1.066593964724342, 0.6852370705793731, -0.7113480780630511, -0.40942559335898576, -0.7483757154858288, -0.07122776033319436, 1.737408764400146, 0.11841252923863307, 0.8754522360715343, -0.343031757238289, -0.16416710878946741, -0.19531408663845634, 0.7754013715005769, 2.1332591207760423, -0.5052118758709067, 0.7131591899986326, -1.7803264017675031, 0.09420444683357239, -1.0472700356156177, -1.141024988505546, 0.09968113439098554, -0.5500313848742133, -0.8741986078561492, 1.0386438045163713, -0.25198767361062563, 1.6311155422356378, -0.5489949380720973, 1.4199156443209913, -0.2207014712546088, -0.4933058762731387, -0.27150483339996007, -0.609287115241384, 1.8620527369297897, 0.3449111247951254, 0.47062028183460747, -1.1545294505661057, -1.292810580741897, -0.6289136729611903, 1.2737042271707677, -1.0511082561993392, 1.426825388255249, -0.015158507511135831, -1.273327662575822, 0.3566423182164152, 1.7276268792428473, -0.138705499081124, -0.3306294574129653, -0.25875806103153426, 0.9880995543293336, -1.8623261901283767, 0.4777716036036974, 0.7487573413181321, 0.2064510369320226, -0.6262881610175278, 0.7353602889754229, -0.51667585170615, 1.219994070236117, 0.08511682154742599, 0.461487533016861, -1.4324664872243593, -0.2831471438083741, 0.054981156346117374, -1.3700696100114267, 0.3096752736763023, 1.194241938484396, 1.8141528512917984, -1.58398942271415, 0.2567713855866453, 1.1325804441514433, 0.25474731658461836, 0.5102671515154679, -1.4402773937935691, 1.3631571444107151, -0.8745959707232299, -0.6709972930186268, 0.2283470744920325, -0.12596887340485374, 0.8065789677701352, 1.421469323382145, 0.4556508032642018, -1.0983863507243814, -0.6254964658092993, 1.070974103218303, 1.0062944399776677, -0.2034198776993104, 0.808780940775045, 0.5534680689510987, 0.8961184107636236, -0.5842103728027922, 0.5653085033471172, -2.1257290549864827, -1.5901962373203609, -1.9012367446206324, -0.6712383697091975, -1.5234460098622955, -0.5907400058854823, 0.5435115627741249, 0.8494509722996453, 0.39541460589373995, 0.34454168140199853, -0.5998570139754461, 1.4125085287986676, 1.6191319296034328, 0.5896315959519233, 1.6752120980115939, -0.2991192109089548, 0.9223415325858076, -0.7167872516194996, 0.22778147331011792, -0.7313561090591182, 0.2921479170003794, -1.625666094056695, -0.6445948416979022, -0.05395662589269566, -0.32651136607182046, -0.5718694030200041, -0.6239270633688702, 0.5293884091632937, 0.8538659984117739, -0.08646896041984872, -0.4591311530517561, 0.530729446677609, 0.9885369669648936, -0.10094123058942654, 0.7532893387345917, -0.5660396507329793, -2.0027194859651005, 0.5301317384831784, 1.7010094716661732, -0.6006505084403668, 0.07178044356560984, -0.7177231480244217, -1.359337165187181, 1.0326277403651098, -1.104532973746827, -1.6930804949542624, 0.8948572423285246, 0.6340160893384413, -1.5423915961168462, 0.011234729330484954, 0.08870089142026438, 0.3252000063592445, -0.3788953447378539, -1.6345167208845197, -1.9943938078659595, 0.5933545751971042, 0.1442610329440957, 0.8612263693463771, 1.0358096108450814, 0.6111080247478592, 0.3509848535144375, -1.1231152704037288, -0.1305107898573894, -0.41201313101807663, -0.03594780788378006, -0.9547182114259212, -0.011845221890036848, 1.12335088041976, -0.9774107703754668, -0.34076482193730445, -0.4446802970229687, 1.750328003641402, 0.11174788170294983, -1.565777190842104, -0.2346242003304713, 2.025590134435565, 0.735919593851651, -0.3026497563524433, 0.795453306662201, 0.46657766925371513, 1.3719765295674315, -0.4428217812148648, 0.7438423244369328, -1.0044446714902608, 1.154104526108482, 0.8839111136542974, -1.4508885825739297, 3.0611733845656395, 0.07901046926896166, 0.035058228455775144, -2.529204012749036, 2.2253130444496216, -0.4836215067602598, 0.16087228538156456, 0.7529292801127621, 0.3021529756635018, 0.4830310122781418, -0.8075856256378251, 0.26676009847445914, -0.29717856392002556, 1.2712147826101827, 1.3176937460170013, -1.4531100825401797, -0.401073196111487, -1.2871905265662251, 0.23493164012909643, 0.08751016369069563, -0.4032539921927929, 0.20282323529368904, -1.1162555921139607, 0.12695806790569364, -1.406093789252919, -1.0433007967333698, -0.6034955540076896, 0.17102026852126964, 0.7887411128500289, -0.703456192532379, -1.403341194881998, -1.0180851564689184, -1.207196105637615, 1.3037843089034824, -0.8651985363612925, 0.16224668087220992, 1.6395521189037061, -1.463483294540364, -0.7310087129802972, -1.409361808083387, -1.6742963677191696, 0.31488414200224113, -1.0807755665828445, 0.11328910546500368, -0.09407603144337613, -1.4910310277195566, 0.7879699185151358, -0.22617275756319744, -0.18453310046988597, -0.8088417376829332, -0.3039969187778905, 0.8286501834765244, 1.746576388943919, 0.4585966464736884, 0.25857411751629744, -0.7755037047860419, 1.420943752567541, -0.7945878809532562, -0.46422664555214305, -0.5870832701281387, 1.3591013677668105, 0.5825126289522653, 0.6302719139868384, -1.4892296911532181, -0.054354803805188714, 1.2886090146135347, -1.871894006094185, -0.17706345246737432, 0.8586917015117914, 0.9881224827101989, 1.7896888081081215, 1.8466624703615426, -0.652536121488528, 1.3010866809132744, -0.09621481510992093, 0.4195057830533126, -0.04083288515295536, 0.6108022121551525, -1.0750510120212, 2.0140943483593357, 0.4481129685052948, -0.9859321167207238, -0.08362383634635764, -0.03871848811440984, -0.2859438908875716, 0.5451864270031233, 1.096287644463553, -2.0123992429307687, 0.5129399194497606, -0.4096728112440253, -1.0733837614648305, 0.005037630800198677, -0.21228362057381842, 1.0230324323469668, -0.3656703260246628, 1.343090275133355, 1.22200570063805, -0.19194700432383366, 1.6409555329882874, -0.045055182295066304, 0.9609987857589979, -0.19006125129863014, 0.4532745570836223, -1.2557975528603051, 1.266664141133199, 0.7341021381288548, 1.0225863410319447, 1.0410718138994182, 0.7172806738325695, 0.7903692364559284, -1.2222599875487237, -1.1506465980729734, -0.5931209140159687, 0.0009066596896233819, 0.8988006272366036, -0.7368561086985402, -2.060685831545258, 0.5996372458926001, -2.6379391495512574, -0.15461646907210536, 0.5809320989641804, 1.2787415555120119, 0.9369918534027788, -0.6875243358298012, 1.4942643445597592, 0.2701534137189382, -1.1816059491920998, 0.33872966509087593, -0.24720917613413934, -0.3605679983284582, -0.6613196865194579, -0.41998189317162704, -1.4697058573054282, 0.8301051921559156, 0.41312510613488473, -0.3119279752724232, 0.4832898322611189, 0.07210674722777907, 0.46221378683028386, -0.37907311341065303, 1.0338668347332045, 1.827883401988348, 1.4366607957461852, 0.00961089155518196, 1.1215412005788055, -0.9367274619902408, -0.6322235536233912, -0.4955048405923246, 0.4275765566731029, -0.4174196455050283, 1.0639045161507725, 0.17385489080177374, 1.884693292443038, -0.9174412411641567, 0.28332303940663434, 0.5154356751840908, 0.4527845805518231, -1.0762757525300937, -1.179877567884639, 0.05121250188699606, -0.8370218706835116, 0.3936578615259371, 0.4760963910597331, 0.5554786252919994, 0.623642262045472, 1.1315240293178561, 0.6513772767640275, 0.9117480009446275, 2.0918988065309074, -0.18111164825082318, 0.14578447935362185, 0.7752307161020041, -0.7579177299008238, -1.4643865224645813, 0.03389748036349978, 2.120628606940419, 0.8014787143841253, -0.20745942068486495, -0.2879768579253691, -0.44376875474220623, -1.431453126891794, -0.11047101043242392, 0.24254161271823366, -1.3890767080063884, 0.3551940772843608, -0.4821841102534756, -1.7404902110705263, -0.40990083463094634, 1.8406160691146698, 1.1343291794639416, -0.8770360698657584, -1.308217262167615, -0.06936303775634156, -0.39764667123450276, 0.5769725286701373, 0.5896270638633384, 0.9362446576484363, -0.27937299969585233, -0.610273978130261, 0.3618651906707751, -1.2687776942664193, 1.0626862705466873, 0.1667616956765533, 0.8138441501785322, 1.6828432679771586, 1.49682253754663, -1.1863230769603135, -1.5117519393616556, 0.294281094993007, -0.2266617043180088, -0.41000204751825736, 0.290692491485043, 0.2610713689915173, -1.4803962625447804, -0.28203213808230204, -0.31875591594593894, -0.7579009703382211, 2.4195675460926807, 2.247768381111992, -1.2980855885884446, -0.6529880062202584, -1.1234187168399243, -0.6956208755464927, 0.18965693411991652, -0.7362169554932866, 1.7754003059642411, -1.4235677497447479, 1.2291191037431475, 0.723527014546075, -1.3435315937863141, -0.17217271634298267, 0.14983346550614027, -0.21891340206561175, -0.010486184647393863, 1.2886811180355797, 0.10616567929962695, -0.609164835229734, -2.4211016076172376, 0.9463913483379409, -1.2980770068731349, -2.686933468264052, -0.03499567459563232, -0.34422522533382366, -0.0004908173861640336, 0.6734912677572197, 0.3525723705153651, 0.26758049299320774, 1.0529967718142275, -1.0999426989251082, 0.607473797642488, -0.4324428804621579, -0.8747836211413581, -0.7615340045466905, -1.3987613199365359, 1.4760791332584298, -0.6692014546820036, 0.04206641378767387, -0.9954780884334878, -0.7367371645074806, -0.21469214077392976, 0.79863673183808, 0.5075977458329036, -1.1234803559227962, -0.11931261167544333, -0.9031732659236469, -1.5609889694409194, 0.027729684273670476, -0.0017713213496273143, -1.7998106503968425, -1.498807717939337, 0.8169615081274427, -1.225033387547948, -0.8400996437124898, -0.8235377496257132, -0.4364264295280201, -0.01520214370946306, -0.15565017655025964, 0.0711312016026537, 1.1732559505317561, 0.5421847899339702, -1.086805433546504, 0.08813241769030257, -1.3579610652989789, -0.95942170120491, 1.459939956281907, 1.0117046306174486, 1.236197607064445, -1.2847595366907714, 0.47824603981077524, 0.30763463139827374, 1.1982758403837634, -0.3864008241497015, -0.26343272683881636, -1.750741728784698, -0.7351692274922426, -1.1349702581587906, 1.587266678692178, -1.2860170377857756, -0.4801752859875242, 1.6636658079534445, -1.3553330327978614, -0.9100195679190681, -1.0672796342182451, 0.5487025003986162, -0.1791076550181655, -0.08327198475097396, -1.3750289943854572, 0.4208708674265662, 0.6401350535533352, -0.14063353058666744, 1.3736446383002492, 0.9976936151350384, 1.1041690429383328, 0.5683312485637652, -1.3367051291338052, 0.2753721538148257, -1.6017596501358158, 2.0374743389978627, 1.0455690189454758, -1.938665276478024, 1.252770550122401, 0.2561807897177513, 0.6323524439681041, 0.44731860905074394, -1.5602090121872974, 0.16086045997109896, -0.8663998447283321, -0.15184679830362122, -1.8365049505188262, -0.6194981237001738, -0.6491132407601561, -1.4279315144128575, -1.4527159141395913, -1.2860024861530703, 1.945998082166153, -0.4013256550665814, -0.23659055793172576, 1.6616248255857569, 0.9472591623961788, 0.22914631673454838, 0.4811708838672695, -2.4575219310050103, 1.3898278424498873, 0.20730337920079658, 0.8863788687809607, -0.5916662331186044, -1.4299091422968209, 0.025064490896124083, 1.8440846679363176, 1.0939727242689221, 0.7256395410256029, -0.8590688058956931, 0.33189582274019075, 0.00448664532664562, -0.6480863852455645, -0.19365121140022182, -0.769665428394861, -0.6311931076898489, -1.3627698357475697, 0.6622092567614445, 0.24357517704777013, 0.503103320093718, -0.20595689226841954, -0.13618936070901688, -0.019650584704433195, 0.7262082426269985, -0.506270084550158, -0.7099417203135552, 0.45165053042716463, 1.1300405981040555, -0.24719613566322082, 1.2071293877520475, 0.435400868244206, -0.6142313942856545, -0.2808055784619822, 1.332735503169351, -1.1560021403810814, -0.6195875521757297, 0.25810834246088477, -1.4065218105605355, -1.3610928866213383, -1.1598317103172542, -0.3269341470162602, 0.08570043587182144, -1.9223819765041372, -1.0843685493072819, -1.6036518992044688, -1.0540791458678187, 0.5783162278332646, -0.3724907451950873, 0.7280800945640448, -0.08142618606573834, -0.8401997607017293, 0.4112577930821558, 1.5228201136451585, 0.127297463548603, -1.2407599011227048, -0.8552188536617934, -1.4741717842067263, 1.2671552063447231, 1.2337003308820302, 0.2110414345000711, -0.49591180781239114, -0.7461512339849881, 0.46865565860373054, -0.29715235983531224, -0.12386177897129297, 0.505578016119112, -0.759425281130206, 1.1922469683938692, 0.7741861134374209, 0.05774506261158576, 2.127957081016315, -1.5401055327147126, -0.9942873953265658, 0.7559867086719737, -1.1410350461719765, -0.9659194892052072, 1.6982344632787765, -0.20931069081798342, 0.17013249407359873, 0.7270923030390775, 0.7204891484463551, -0.39207799039317925, -0.7155255221813551, 1.5011465291329578, 0.5459497541973576, 0.07243706212858651, -0.4803076283069569, -1.0054943042359705, -0.5237739778480014, -0.09835515549724476, 0.5775290716411025, 0.9348827174613787, -1.1210113987995936, -0.7552071013929652, -1.0007141329301783, 1.130624877307917, 0.2722502138472599, -1.7108387910528222, -1.1062867754981813, 0.5689569196095314, 1.398762352581004, -0.33899470403862797, -2.076656356422838, -1.0004947044013306, -0.06246586753421959, 0.3367745011191109, 1.202712320404443, 0.12986086111190515, 0.47863453049805044, -0.5301057190296372, 1.1951555259879219, 1.0407276314629512, -0.6060289812671181, -0.45188168827767916, 1.1672764414566084, -0.7601267361673396, -0.16562850009431018, -0.43860049222365943, 0.19265871886562935, 0.3369896727544974, 1.0727046962527615, 0.35280285161085073, -0.7944425795053791, 0.4195206213331096, -1.2168293697790002, -0.6443114053235841, -0.525365919337175, -0.9060734662625927, 1.1385254001814025, -0.889916275322328, 0.5268352654420474, -0.009977679759738923, -0.7448851196209746, -0.44666312777814293, -0.11724072209427554, -0.9165098978210413, 0.40637929060102135, -0.6093457976035641, -0.20545838480263884, -0.8249002512298813, -0.8187706458007767, 0.4689683976066863, 0.465846208938873, -0.5387718100480267, 0.29854415380834715, -1.3665663590081276, 0.6177965287355739, -0.21396707680556573, -1.7406726509793795, -0.9472077744730275, 1.2519402070664514, -1.500777460440331, 1.8997820918004282, -0.9743457775230356, 0.3295729377044873, 0.7301012356968105, -1.2391980530651758, 0.9236351835845457, 0.6089290100942146, -0.12102325767564293, 1.3403384783597367, -0.10824453003093894, -0.7827461172580052, 0.8781962552006474, 0.034791693460034315, 1.4473751097143777, 1.203987441260602, -0.6198007001117833, 1.301362501195787, 0.30216625220261106, -0.39889697987982026, 1.4638160519035035, 1.4441827711806823, 0.5084134433716269, -0.6532108007553509, 0.1035243161974872, 0.3054072741705922, -0.34435155003796397, -1.0278570477914484, -0.12173258785663424, 0.5950528675438397, -0.9207821659942775, 0.7261815748689618, 0.7245355697839364, 0.7604354547177733, -0.5960613431486281, -0.12501859797022763, 0.4557109402631586, -0.4506714771692287, 0.11847291756872175, 0.39464486011730787, 1.0377336775259156, -0.7663128158804938, 1.222002486711219, -2.508898843182651, -0.5222022711446821, 1.5139575345025822, -0.36009115973957706, -0.49699571473838994, -0.7320998923855627, 0.001340784350614637, 2.287441638998896, 2.6831380407821084, 0.9455827325947566, -0.6608925110148092, -0.5298256491030603, 0.45598613407332417, 0.9056367098865701, 0.3468095182692027, -0.41128275516824825, -1.9946284216093966, 1.3045604895745035, -0.31854406317287715, 0.5219610405531087, -0.6641421031054549, -0.8688348040549531, -1.4043267718460093, 0.30435888123608246, 1.7846564254581045, -0.9673767387337057, -0.2252780643800041, -0.05837566001580252, 0.4291753233203228, 0.5442117526259592, 1.694634248553822, 1.2354760527115538, 0.7959395609646354, -0.8911113251956342, 0.3981107862143589, -0.6038191850464151, 1.410835808709077, -2.11493035968152, 0.06393518361722653, -0.029139117833403446, -1.0055963360448883, -0.7926601642106428, -0.9735425062205508, 0.4554630839524932, -1.2992896271871042, 0.17829226436911383, 1.5977020899206693, 0.5447850111120647, 0.17559902453769902, -1.4737831888237733, -1.0419185868083787, -0.6982628146742288, 0.2928989175106737, -0.8214315460621029, 1.0127275799116227, 2.540754369404317, 0.12669952550269392, -1.1844739993372275, 0.04189705377801499, 0.19439551671935018, 1.4521501913227826, 0.9787682718988012, -0.10502618788525488, -1.545636873356207, 0.41955502862273386, 1.6344397845287502, -0.6996137533248805, 0.7734222385388448, 0.7646349717820928, 0.36213834223499025, -1.2242281615824748, 0.2849485575478564, 0.34587641407530284, -0.7695467082668787, -1.878968801793851, 0.6439945266787103, 0.39401855978146333, -1.846270591936921, 0.8119840231832707, 0.4632560672239587, 0.8872512984658244, -0.6531242638897106, 0.8234509000335084, -0.8470430861883507, 0.7043960474728573, 0.16029656369225695, -0.9199716837319385, 1.7516428594841185, 1.53571695111567, -0.5923963974647823, -0.09421724289639898, 0.6951583529670979, -0.9029293377217025, -0.5403629622028528, 0.6026873450172656, -0.8904457098799401, -0.18153071461918635, -0.7683616776084702, -0.7723477433968918, -1.1385745044486548, 1.2990481267032234, 0.6920712069054653, 0.13819751107759315, -1.6994515863979083, -1.6867607272487752, 0.11386912747556614, -1.4741086101976333, -0.4084554473716878, 1.2611098853442282, -0.29302661250863893, -2.0886778227205594, 1.461016480023341, 0.42560541758942194, 0.6191588554531684, -0.5985193479741547, -0.47737501108118235, -1.34361075336494, 0.44109611654147907, -1.1504741483205345, 0.12452161850318348, -0.26145501283663203, 1.0737929954280732, -0.3919359249696162, 0.7833381602627896, 0.4920754113025742, 0.7181988996772725, -1.2868290476443027, -0.5794523266184156, 2.077603848983364, -0.6799665641060869, 1.189260513704343, 0.20931239869905546, -2.3009614984683644, -0.4660635928974643, -0.0830634473482318, -0.6258324519513977, -0.37209211976632794, -1.4939045852147155, 0.8393277068222, -0.19085594755902638, 0.6591988409228787, 1.2272709847028767, 0.06978447405544162, -0.12326350295229303, 0.4001647745043678, 1.8718755909371418, -0.6642196576581617, -1.177488097714965, -0.2921906301066324, 0.35352988537757307, 0.6046877389175205, -0.46544921540870143, 1.3311200985616656, -0.3326058332617738, -0.33093067100049683, 0.8306989177074579, -1.1200409825086644, 0.8296377545936948, 1.62299765872056, -0.8169754874480261, -0.24116708825317848, -0.47162079773443777, -1.8381312799299088, -0.4816987181224384, 1.4153255218561738, 0.5404300549763246, 1.134165955447205, 0.36168092874820507, -1.0277579618997654, 0.05064223484110245, 1.2814696296764614, -1.3027980677359505, -0.7545827594608056, 2.355379772816784, 2.04718791252273, -1.759834086257933, 0.8184067330416113, -0.562184039487719, -1.0738447527439543, 1.0973524489753268, 1.9618314891849296, 0.5705572269774465, 0.046663848882222324, 0.6489189020968069, 1.0612872544961902, 0.10979465007800482, -0.08424919865351914, -0.046667928646890046, 0.01001877915514528, 0.5755430190021412, 0.39333359256220896, -1.3620271852148316, 0.7432663945852148, 0.8410052507767574, 0.7560345480854492, -0.6405935855372006, -0.7185790399995472, 0.8929178346215048, 0.027651783756700472, 1.4242859506295802, 1.3972167882558741, 0.49132298190860557, 1.2099518385773633, -1.1213635437310359, 1.7266262581251506, 0.6799784552405994, -0.24016735136695966, 1.4215773652232737, 0.3292899527453197, 0.13524241974414905, -0.6033204455513134, 1.2434604281943695, -1.3676515621225143, -0.29194920862061935, -0.5181588907438721, -0.8497114521365112, 0.18939885573177215, -1.405921031876885, 0.6278696550297107, -0.19610956093284193, 0.04397693978192499, 1.27214363752744, 0.4762447251944673, -1.1370577022172665, 0.3990519149808553, -0.03191869811931289, 0.11133077808104638, -1.3445513835383933, -0.6573925555742512, -1.8568976733896805, 0.4153648416666165, 1.1666478841476853, -0.46112981399687764, 0.9535530862878486, 0.3473471655658854, -0.4161422881398393, -0.36198900956783775, -0.6339438086298942, -1.3944739484632676, -0.20387130619003158, -1.2701487841608123, 0.8796180040454592, 1.788948584745946, -1.1631704471876354, -1.961477519039208, 0.06590179873448668, -0.41614806490650597, -0.266000444569746, 0.1643712657991143, 0.38488576234322136, 0.2840733616903701, -1.0787563446019552, 1.1302339241072494, 0.7397220744929801, 0.10555634094791072, 1.5575703663389617, 1.4916593464656478, -0.1350848011563506, -0.5955564946507164, -0.9779825570939976, 1.4575816264107626, -0.5635566812842832, -0.13730254477957476, 3.1760359675054914, 1.5468541517541319, 0.6712301995907592, -0.3010794489170866, 2.375386241376686, 0.39676442311673654, -1.2083016255148442, -0.08960307423878197, 0.3356703315379674, -0.298976814312964, -1.7665651290994233, -1.092767255651449, 1.3975407829596296, 1.141874801312204, -0.9828236038024252, 3.4474956927651337, -1.0339825534946439, -0.22625665352238514, -0.5013121080507481, -1.8800871143889077, -0.8372845710288846, -1.10244612265024, -0.3821121209536119, 0.08810124426666355, -0.6071774956226643, -0.15564993281113088, 1.022293595012591, 0.9689358555384477, -2.5957409768073245, -0.42027115973485385, -0.0461425798346585, 1.9376580364864786, 1.3588702019634644, 0.3263146874682954, 1.581370038498723, 0.7910848434880573, -2.460697055036825, 0.6447035193294413, -0.24547841579497692, -0.07769395725697413, -1.1061309579704512, 0.49835521087482404, 0.28668491714510613, -1.2325612333443072, -0.6448462257352514, 0.6067798642374093, -0.8354277456713564, -0.130333521585836, -0.9088480640459227, 1.3638181337811686, 1.3142064281473396, 0.2849199073658345, 0.592125761379138, 0.5012574226736635, 0.5318564513368325, -1.2555614763203795, -0.2193018045216694, -0.8128170056509231, 0.2508398220742027, -1.892210580413274, -1.2602630407674884, 0.0009566262638368953, 0.8443361157461801, 1.0745886240915608, 0.8806279132304711, 1.3774160713468802, -0.19850197254674795, 1.2234601520436406, 0.5881989810255106, -0.4965304502203755, -0.9766777894153844, -0.21817961411038742, 1.419239328081392, -1.6703766117775312, 0.41191565756029835, 0.5099444391903665, -1.4309207608869086, -0.015024811232282593, 1.9220050485455538, 0.8175509219535936, 0.08115843671613096, 0.00670673012745847, 0.4372668690607546, 0.17009166575934964, 0.9482553703319297, -0.2773813968150354, -1.6498126033020835, 0.11117370308283465, 2.0511476913856406, 0.4372657274738833, -0.7946302231549325, 0.07669974844112153, 1.260664230909938, -1.5213565790072734, -0.26684094546500337, -1.781805734225342, 1.3731126700876528, -0.5693906145441722, -0.7467107303747241, 0.30046251963870085, 0.5421086409579616, 0.8194948647249047, 0.553142239737994, 2.485647389509429, 2.047571834848655, 1.0547915487532276, -0.8404839317066655, -0.836914713668649, 1.2478277285342685, -0.9398734941624577, 1.3858886068530871, 0.6584361564011335, -0.32532143347778014, 0.1671936246779602, 0.6090123241409612, -1.0924306659919145, 0.8248616990025323, 0.40239815358228387, -1.3215398823928493, -0.3695707657351879, -0.4677903230735593, -1.4563234165763541, 0.2465317823851017, -1.507844840921064, -0.11213116060164738, 0.8182082579799453, 0.2257379259786798, 0.5232663992732692, 0.3677500720568211, 0.0890331713821522, 1.0175234856545008, -0.5316019239972422, 0.008273393570788342, -0.5142557769956214, 1.3236020557952743, 1.1683267443828442, -1.326046400550978, -0.877558359633544, -1.2811663730152782, -0.007179640854720999, -0.1558221865207312, 0.5717555419933172, 1.400174656314241, 0.5405546279191125, -0.6066094336440838, 0.3074008062852501, -0.7266655582548127, 1.0200651816876847, -0.9169096044014198, -0.005352229277594311, 0.9229483990313, -0.5050805874169455, -0.7830498896948143, -1.201873278369289, 0.6032417486934556, -1.1946344297396054, 0.2240479886640547, -1.332033491041734, 0.3621050864222061, -0.7508280591488423, -0.6990041625840486, -0.3589843137912688, -1.1294768284497914, 0.08522935573665827, -0.8932238012324163, 1.4598549115209354, -1.4447712869600169, 1.161056885783272, -1.3625301397704557, -0.035297958124361, -0.33008069949103136, 0.5239932036193977, -0.9535748485371196, -1.4160404491189216, -1.2653282493985, 0.9528088241690057, 1.8950184827415795, 0.536660694982275, 1.0358009972485072, 0.33684764607473267, -0.03807672876925321, -1.023646734531218, 0.40397027552612724, -1.3087493812000008, 0.48272717104738166, -0.9539524744639091, 0.6839967409804478, 0.6443820369253852, 0.31683998325190177, -0.13585198410986143, -0.46836797703096, -1.1069337244040973, 1.2699629292559889, -0.7617963846193975, 1.4541756482189356, 1.4282755674874026, -0.1861092734243662, -1.6655794153163535, -0.9018831271999473, -1.037689638483834, 0.8498409192473517, -0.07982833124499089, -1.2088906569879048, 1.9388046452293908, -0.6512630617583657, 1.1866504013111483, -0.33869047227217647, -0.4062584258255965, -0.13047088702582313, -0.2920609026154828, -1.5721710704372442, -0.7529385991063793, -0.4409489430185798, 0.6573725024011854, 0.9779867268215527, -1.1338038691333352, -0.03676275814229943, -1.3700180959347181, 0.4980096428874349, -1.8841567320644628, -0.36671037716186844, -0.33102623775307954, 0.44082885192374405, 1.613113523011985, 0.23245328885846092, -1.936031194784913, -0.6863173758499714, -1.403980406004003, 0.5048363560164861, 0.2836464927146788, -0.10581740020796536, -0.6422446354858306, 0.03847861193968079, -1.6367117659354635, 0.7105602568018861, 1.9161683660322844, 1.1010957888549868, -0.12160407112688297, 1.4925214870472732, 0.3264326568315127, 0.1233803144398878, 0.046322463990348964, 0.7961360452240189, 0.2452347016349107, -0.48943896240142126, -0.9290930154151816, 1.3257611388643007, -1.2121987546438076, -0.4675832048242394, -1.408413616302921, 1.681812863852406, -1.4107609501193221, 0.9608162613161545, 1.3382523033803306, -1.142429334719264, 0.3068199062637968, -1.373229118623735, 0.7359602107842439, -0.08027367417510534, 0.5703393562713633, 0.8224893358060019, -1.2675332626508233, 0.09157528929486593, -0.6239271870188987, -1.333424030987914, 1.542228511553581, -0.8290994826950859, 1.6002179297200447, -0.7290687216113811, 0.9827490621042851, -1.016128789591686, 1.1178052087911723, -0.11201905921608454, 1.545158085939111, -1.201782983516858, 0.2987368142749938, -0.013881908859372263, -1.4662280689414051, 1.195364231090116, -1.0207840815730405, 0.6038293322962383, 0.6920833223124919, 0.48928276635174567, -0.20719681719458505, 1.0528037049861176, 1.340110048415235, 1.0572972351619618, -0.7972871839181324, -1.445715944658206, 0.249550573252273, 1.7425897413780096, -0.6146482994249365, 0.3414417673370007, 0.5211686346384714, -0.4720635039991762, -1.6866627876101177, -0.41908164540912235, 0.9350268770492959, 0.2628866171785153, -1.4272699417780046, -1.5176019318982594, -0.5045820104317634, 2.3669803699198972, 0.04468306472425897, -0.8506586820583893, 0.5357032817625664, -0.7504240210817026, 1.2244644861038698, 0.32030678738297486, 1.9346717432885199, 1.8091618397708604, 0.7016264290342246, -0.7543230939085693, 0.3718249353749545, -0.39747629739679413, 0.1755020796040547, 1.7617259402782062, -0.6484224375517338, 0.5942375319267897, 0.5412303781268201, 1.3148250600931315, -0.4591000552529005, -0.5181152695539641, 1.0888867653411374, -0.4218577232399481, -0.03314875902158776, -0.45525424561822153, 0.6620103621803525, -0.4828556213675988, 1.0197136724339582, 0.8136601745512939, -1.7574981376543641, 0.5152733116422641, 1.7275770946339244, -0.6596098468939191, 0.8691431128119826, -0.5019581461983088, 0.1369233115111857, 1.2132056318163653, -0.07648699416462335, 1.6772557940687784, 0.926974844165011, -0.039740256852109336, -1.6422093576684975, 1.472165824690626, -0.5312294981487146, 0.5660281554370863, 0.9002601404675714, -0.5193311511183563, -1.4261107490492029, 0.7193849792885922, -0.8161020873770328, 1.3926227501034782, -0.10765873957312352, -1.750080716659231, -1.2315289364819961, 1.5271676147265836, -1.3692385165909204, -1.2665210758120529, 0.5835547255432384, 1.5267142534760538, 0.4735793365879849, 0.2713271999760396, 0.8293178842537923, -0.3678275742008581, -0.5196865213591367, 1.2467715006725173, 0.36881071704357293, -0.013146295073653665, -0.3910850558251935, -0.4717852822314755, 1.058925836769312, 1.2611027845782836, -1.2125355152651964, -1.6680040155978901, 0.11644777354668061, -0.6098586620173682, 1.4767717300094048, 0.0954623781181105, 1.107261067809891, 0.5332249726108867, 2.027865524163214, 0.5776330966220249, -0.1584788333976485, 0.6221202243471828, 0.822805243465044, 1.875280493218953, 1.0643032788775597, -0.0032231663149655688, -0.783876097094789, -1.0049561715754778, -0.09434442862031094, 1.159075456642561, -1.7015354910808584, 0.43626266846062023, 0.4657480592549505, -2.3595114280610967, 0.432788235995093, 1.1432761980922856, -1.2312064629781365, 0.47490063643075286, -0.28730531011989763, -0.26041490757239677, -2.1502487223253324, 2.002776378754567, -0.6572916671523635, -0.6468504633660788, 0.22368175843112467, -0.7056222632601199, -0.10902101632296987, -0.12191577116310535, 0.2333724929750161, 1.5718955134357182, -0.5232145959705184, 0.6697172441294476, -0.4925971310656774, -1.1446072903750102, 0.8349991429830456, 1.0200201403878384, -0.8977027776830132, 0.18977908394646267, 1.4964190701230657, -2.6540996410436106, 0.32799163478787424, -0.8074216676664461, 2.066401169980402, 2.509721984172877, -1.2264705966483058, -0.25822269433889045, -0.4480735859571536, 1.041820098630538, -0.693824507410013, 0.8791204277882693, 0.7037151344594822, -1.9977526467992452, 0.2157094268939756, -0.8146138503383921, -0.5977126284420752, 0.19219664371439094, -0.9859202287793376, -2.3682295377243645, -1.2913932275907674, 0.22696508074722685, 1.6407744690151982, 0.0480691978209954, -0.9966208197342079, 1.11889000511201, 0.055360709785356864, 2.161209836417307, -1.3704452982024895, 0.1620107139280786, 1.6935580592037394, -1.81141037991999, 0.4953254858094202, -0.6200845763863535, -0.4030152273570181, 1.9463103138523798, -0.48212576394146445, 1.6089090600319198, -1.1366638959357926, -1.6052774277617399, -0.47813886421591933, -0.8707692499175943, -0.20229126984501603, 0.17173503092906178, 1.1047377340309825, 0.5373785703708618, -1.5876796588068274, -1.1350981303051662, -0.6537352511089607, -0.1835463801348843, 0.7426490550608933, -0.0467107787449815, 1.248118109915001, 1.5524890878524804, -2.0084680514191806, -0.8159713739539352, -2.2848088931420065, -2.372309233730456, 2.2419857626757587, -0.3816077510920729, 0.7108618513078415, 0.09216683237316162, -0.42433779835516944, -0.06629069340678465, 1.2462956506064462, 0.11891915476573794, -0.8074432428697494, 1.0942537068290124, -0.33085780821604055, -1.1030272605184115, -0.04597990324972495, -1.461390865704153, -0.6649026362109189, 0.17729372155344567, 0.7571894944422922, 0.17210568890449163, 0.42634767130989204, -0.21152758583251302, 0.8842025248865851, 0.707894179465638, 1.181293809817535, -0.5576196967532386, -0.39767440147104705, 0.6261136824601904, 0.09416680314491302, -0.9432999224955897, -0.4798733122332927, 0.4698413593912798, -0.5301112335696907, -0.6225115798235682, -0.010179517498452952, -2.4149736340373655, 1.1241415524841798, -0.7384881145759171, 1.9364675418998223, -0.959887551414178, 0.28676342719419945, 1.733477852496386, 0.47070117017904045, -0.8415052898911937, 1.48342039099686, 0.1593815740133984, -1.0466970244656812, 0.35428426550521314, -0.8714460344191897, -1.772284863316179, 0.8553434412271401, 0.6431899649395725, 2.063848597546665, 1.2107520352104826, 2.068182515581034, -0.949826787922004, 1.55283475817559, 0.18702699770560685, -0.3142644472236707, 0.18807094004824762, 0.20872088585274678, 1.4946073381353722, -0.7270727909976298, -1.4616528319169775, 0.8902512659612491, 0.8397967248644236, -0.8310381295604786, -0.8630891545947001, 0.29222682765828795, 1.4445890756559074, -1.408345197598874, 0.7729936640614463, -0.5556592512747162, 1.0996078153848807, 1.4534847934773354, -0.8589893343576649, 1.0662489588346322, -0.8131357663444699, 1.8906549668204278, -0.221189396941947, -1.0066499489098275, 0.14833291807982577, -1.6944446869650207, 1.632367328013707, 0.4020635808682617, -1.869102265647399, 0.7511051409587467, 1.42836604641047, -0.6689545864836354, 0.7132732615745503, -0.037356754428425336, -1.4955905073070523, 0.6229077094186778, 0.3002815391057095, 0.40063712375861044, 0.7079213520824291, 0.39150882760380246, -0.665277265086938, -1.4631874840764194, 1.5154278721952714, -0.39079861469985133, -0.5171161188288925, 0.47240320094667826, -0.5680617901151106, -1.0849457635502189, 0.4598612881320188, 3.1976163385397074, 1.0060936340045976, -1.4829678245607811, 0.9298775421247323, -2.348820269680322, 1.4875415958593063, -0.3178590722956541, 0.1356924010752182, 0.21621700648737333, -0.23872149766619224, -0.38611367554412396, 0.7079229883060726, -0.2936924251847691, 0.17216377194136315, -0.6251678518688363, -0.6190596403307621, 1.0103278730986882, -0.42216692790377014, -0.6083934186789268, 0.48484746551641333, 1.0506326108080541, 0.18574134153247543, 1.674110486119981, 1.6908321897138245, 1.584396674715407, -0.6716403178792367, -2.1165124622742204, -0.7575386400758898, 0.42207025179163454, 0.34281900309511515, -0.17330930073486658, -0.5185221739427627, -0.6520860152162103, 0.02880708722030125, -0.7236136907093336, -0.7012590434919239, 0.9421047560257181, -0.6079997861419684, 0.30874446046730514, -0.5762449399777807, -0.41610271882814304, 0.15862039487955654, -0.1452834786642244, 0.03226987415993391, 0.84229162019877, -0.6933696474669173, 0.33663422390191694, -1.2150580083595408, 1.0076307089633902, 2.70409271869755, 0.30995661293173044, 0.6247436756056247, 0.08195954117181646, -1.4719055966627554, 0.803042507106028, 1.3021608863661167, 0.43434043468018996, 0.7974627211294567, -0.3682221393582528, -0.06403923371006702, 0.4170350364772233, 0.9541157159307389, 0.3239859963424095, -0.2949519680069482, 0.2619100970459515, -1.6511900176435539, 0.24934133729286487, -0.4154891414125775, 0.7849763826831557, -0.7841888048100197, -1.0286045457899349, 0.6553645303577179, 0.2653791661210467, -0.028721712652565425, -0.5496375596740606, -1.3471754095333917, -1.388799522496814, 0.29599312680859097, 2.140988791886186, -1.7758304801107512, -0.8660143027878295, -0.13855549523146243, 0.7423053567212846, 0.44908973109546657, 0.5684322570795058, 0.7170502881582332, -0.972793451864786, 1.0213495345802792, 0.3588891143774135, 1.4677584224643059, -1.8483066026640207, -1.0267595764809776, 0.8461892348632205, -1.1555368611628043, 0.6290502769928877, 0.6938132809945982, -0.6257637502682993, 0.07541789139329211, -0.2366005418237537, -0.35370856166896436, -0.807010114883981, 0.2605821179006874, 0.2423808558861513, -0.20913684813592306, 1.445612205825981, -0.16339120814322525, -0.28685192204171245, 1.6172348405102026, -0.24636947592105027, 1.6507389021911445, -0.9150073073042401, -1.4463083092451903, 1.8450467799321841, 1.6902670347280917, -1.8878093325127658, -0.28001777607518696, 2.0152721910595703, -0.3554080437826893, 0.3410600781005436, 0.3080846247560111, 0.4956327203352371, 0.23813604752289289, -2.862730990973833, 0.12978190732109626, -1.5902014047218211, 1.12682412380246, -1.5041496090466209, -0.10651038985747713, -1.335463053243616, 1.4022116059874739, -0.18269475995297718, -1.3404214162908434, -0.2438165410162293, 2.336027669010424, -0.8025341000321401, -0.07983117172640133, 0.9264513733160266, -1.4369204429877465, 0.658716342473419, -0.7939169687464911, -0.408484607372628, 1.081321363447789, -0.8278147672247551, 1.508807177607114, 0.5697618899554041, -0.5433190954101608, -0.34444959772498385, 1.4917081663181815, -1.6364404568511535, 1.088677730777631, -0.07743011620298457, 0.12679064943416948, -0.8422775912109417, 0.5204410421666292, 0.07816241030036447, -0.743203277087611, -0.2490679239134021, 0.296537366216279, -0.5802577510870809, -0.9727316982881665, -0.35347806043290736, -0.8964204184288705, 0.3118694011837782, 0.4272160752827559, -1.119951155966275, 0.8907214317482947, -0.6475131446929849, -0.8840313111682832, -0.7344446459241352, 0.23897405779048442, 1.5813119435145027, 0.571609333114801, 0.5054648516804614, -1.8867586637765072, -0.46210018982909373, 0.9548065220526738, -0.4770321781666495, 0.4675422030146951, -0.4463001426607724, -0.268935060413408, -0.4021684274370984, 2.1224401502693415, -0.5308353724645087, 0.2305268915721791, 0.1608750017124351, -0.900197705620758, 0.3127318821569574, 2.4681068345281907, -0.8490049971049308, 0.43895749888939467, 0.5864069300955381, 1.478184862839466, 0.6057649340496221, 0.866511884032407, 0.3839558739092927, 0.09528931157394888, -0.4023438236960017, -0.4953367269783747, -0.9411870219959466, 0.1449619784129578, -1.1659336494666324, -0.7043483767241477, 1.2177044932260268, -0.8968784595700237, -2.0180274699762313, 0.5569746847793453, 0.38572633069031625, -0.24109338697797905, 0.4264092604031469, -0.9226064296533822, -0.9777483292652849, -1.8614061954392773, -0.07181480501491022, -0.33916355744140897, -0.4913319447167086, 0.7409940265311785, 0.8195938255125932, 1.8760662842613385, -0.08022928270577098, -0.3617902098106558, 0.8773618510991119, -0.3026417513931259, 1.0746072114312424, 0.8949816226916981, -0.6064010457787304, 0.6104271933326174, -0.29251836991064384, -1.235928055595834, 1.1821055005631875, -0.2897775819027704, 0.6479427567431872, -1.7256511687931952, 0.2379834287461269, -0.6421838621896824, -0.3313666238103324, 0.11015187322020059, -1.1738282480311948, -0.6801063289945823, 1.0727263376369174, -0.12789818738063033, 1.1781691723419236, -0.7686061607983937, -0.6393035105594692, 0.9243691012328462, -0.7504431079196243, 0.8671446299467845, -0.698898758742007, -1.4195690799131522, 0.21204181061562222, 0.4516990863796165, -0.5488202376298091, 1.1769716081503954, -0.47339514182184983, -0.6706243964684786, -0.9391275890746287, -1.66916461604128, -0.32069248128125416, -0.9339415936059193, 1.6891904534141162, 0.448704117525186, -0.6576455996483718, -0.8787818682467556, 1.7783275330439052, 0.9849951430194023, -0.948815962845082, 0.04360439333359939, 1.1754643008394154, 0.4176607904866504, -0.032791860424978336, 1.6637836123504004, -0.6318610716818912, 0.4631965911323548, 0.7240844437060513, 0.42507353110252416, 2.223789705043405, -0.624587572177733, -1.3259578694687586, 1.821890903560027, 0.18282418791198085, 1.0718527529100068, -1.390080439023078, -0.7032982984900227, 0.606806535748979, 0.9807379610674246, -1.301799608995058, -1.2210833218836539, 0.8485594404128306, 0.9129734868959687, -1.609303253469617, -1.8896306217640972, -1.2745280345294823, -1.4589951124432525, 0.17397451011234072, -0.09849861993514802, 0.5213927711113006, 0.4464567604000436, 1.7658010428921032, -0.17334884721929977, -1.630863443675375, 0.10883356045207511, 0.9209592920512764, 2.506643391838216, 0.25920697127003867, -1.000610995686859, 1.2069309607629284, -0.8420265795888455, -0.5219090322847073, 1.0528496388391924, 3.4052517316861657, 0.3939521074267198, -1.2280870462459705, 0.7021465907786252, -0.848269051241505, 1.8523087243586671, 1.8942511988856663, -0.7324609521575315, -0.7405519451390545, 0.7825799663791051, -1.0570473532938447, 1.0071272154577544, 0.008367224499531539, -0.9832761022039055, 0.4619748421824861, 0.6054527978627932, -0.8069427471635754, 0.7695845202396114, 0.7255817354960545, -2.076356254004693, -1.866170928563386, 2.4960999423984482, 1.7821255702296483, 0.3249685672047233, 1.0516193586445621, 1.6029894061563263, 0.7111190742818572, -0.7186297277267051, 0.8266707092330077, -0.8172819525228391, 0.6694591532307673, 0.3170694850496892, -0.9984287239140569, -0.6246604296669839, 2.2772797990691647, 0.7458811584103926, -0.26479485589503565, 0.8890929266772621, 2.605058213283425, -0.4494919815199539, 0.2625572138302102, -1.4742411434507334, 0.6119113473927877, 1.3070889916855144, -0.44956874651117795, -0.5715779960963441, -0.8602100327750805, 0.10606974809893534, 1.6568916173993327, 0.6885256728955403, -0.2948202171449642, 1.5696072864217565, 0.899476846965225, -1.1070943362639738, 1.8975968381884851, -1.1062908985717914, 0.09202643450386803, 0.5179032468570114, 0.19738682741687985, 0.7832918030824878, -0.4175503084970734, 0.04748961117866384, -1.1431032202175238, -0.7876280793719912, -0.1670293961990677, -1.042531579871164, 1.4250241437929307, -0.5065603208361397, -0.05190576930487508, -0.9440633915033274, 0.5697559112545517, -0.19152297948200578, 0.014168618743096923, -0.7723577262137622, 1.0555673924267797, -0.3191246615023448, 0.10177303682522976, 0.2576454260927928, 0.09993013315995518, 2.4408592434196965, -0.1674045631751715, -2.5321239122945287, 0.5150701229891861, 0.8728012372431501, 0.1605968107424527, -0.13722954472953605, -0.13443581273542884, 0.24838805492190696, 0.9494869845586946, -0.8053048546223888, -0.4416437044439307, -0.5932230289976798, -2.0643157683856, -0.7809729727827792, 0.28847229101563315, 1.2875393651128213, 0.030979117600469074, -0.16633856709516748, 1.5324980852375782, -0.6468105502000671, 0.0373559919191076, 0.769892531358705, 0.42397577027479655, -0.139645087546484, -0.9427058228766325, -0.14560303293072532, 0.15531221334147638, 0.7867393096524915, -0.5932212618722055, 0.4862407608854612, -0.07780553709972224, 1.0490144034143574, -2.161361822163266, -0.2791053970836441, 0.2634627733105601, -1.5107411614291475, -0.5446415556288037, -1.2216533790784645, 1.497988454976838, -1.1092367045073637, -1.618664478117834, 0.9157906679850603, -0.2176025539922073, -1.8489698667637202, 0.3129035109422391, -1.5506214471694328, 0.23996231659805162, 0.43382470243213683, -1.2975465623015716, 0.3447086045230242, -0.5029629441562755, -1.0515292011570208, 0.4342286760696506, -0.13944564531024706, -0.3016669085440337, 0.2091053252025545, -0.2220062149826033, 2.2529183253773697, 0.09380606672705916, -1.3762881219090572, -1.0798033214501017, -0.030459679752091188, 1.0462656041957057, -0.5166066202685516, 1.099907646476609, -0.44810406970440003, -0.11226405829821795, 0.03079777593049583, -0.5730941391354524, -1.5304535066575236, -1.6366657813941712, -0.3672873484804794, 0.995515961126187, 0.09560804918091349, 0.367469145902725, 0.1649134830430658, 1.9434979202863867, 1.6446573868197591, 0.11229000519845835, 0.1176439522089831, -0.08402038714892086, 0.7274091035559674, -0.1815847476714992, -0.869284801742413, -0.8618126688825368, -0.9255303897325509, 0.675291066744399, -0.45590558967109956, -1.3881643437611735, 0.046983698579071434, -2.2593684559557246, -1.0714842437075964, -0.7980109810319539, 0.9376060820449048, 1.5088601684612821, 1.1401676515714214, -0.10893182605495363, -0.6793666542903476, 1.9224975768533579, -1.919045525488347, 0.5940059593484025, -0.07491402130843892, -1.2833894894614397, -0.012251254567757242, 1.0424262856623745, -1.4615127877407137, 1.5618547104206084, 1.3870856731187504, 0.6794906080144418, 0.6597456051505508, 1.1809752738189252, 0.6289022860101765, -0.6311541134061391, 1.2430525196600999, -0.1258884709654688, 0.03676529016321239, -0.15638601277079034, -1.9962862794970841, -1.0631859015069938, 0.3954333505187698, 1.305130180708799, -0.6198793866416389, -0.3671423775673435, -0.05091349499804217, 0.19572546628132184, 0.481387386454465, 0.18766811525805024, 0.4204577595863723, 0.31278547680895696, 2.260226631338183, -0.44163717594473184, 1.7281834262032811, 1.6610908786986758, -1.2346970008334854, 1.7791989418010552, -0.6921188907852247, 0.41412723052308587, 0.013963859727831377, 1.2495146354884694, 0.9217529559230451, -0.6408643293198005, -0.3656165913939135, 1.6408969472159909, 0.46769590500613, 1.2942189441837226, -2.4715771243751226, 0.4617271801485095, -1.3054611274711465, -0.6148341510806443, 0.5230236705061742, 0.1948581130574186, -0.8314871492327359, -0.23483236113230144, -1.3665590045394855, -0.14329578244546745, -1.807462368498706, 0.23801683948070443, -0.28981493648460016, -1.4362173161200273, 1.5602518232258726, 0.08045279279873387, 1.249783890153001, 0.026976636733625492, -0.39284231136024667, -0.20541102682291998, 0.39581632483835966, -0.4271835840370606, 0.8371704017648944, 0.2635251007081735, -0.7014811604960124, 0.0874164574098187, -0.6090513936305421, 0.24235117892116984, 0.9810895192151013, 0.8051030956141957, -0.033711366761932496, -0.1405561945796084, 0.8932360765812469, -0.2781538960944018, 0.19083714569711607, 1.1680467944309245, -0.876802883170169, -2.5359882587942857, 0.15717459862331037, 0.22749278757750177, 0.04618501623459061, -0.35514842522056567, 0.8668706188030013, -0.9972708114342066, -1.9786433296694181, 0.5447603805656711, -1.29987773563286, 0.24422468441969067, -0.8780654507613918, -0.1375102757192428, 2.362709945312936, -0.5102994863283247, -2.266949913807307, 0.47287943204761507, -0.4958325728592973, 1.6089495844965989, -0.4037770686515219, 0.9353787074591674, -2.113107054187719, 1.6432896343445524, 0.6023089914246612, 0.6625981775877482, -1.1477561641710432, 1.5082843130642087, 1.2879637708344551, 0.9632684685006433, 0.276232984051142, 1.3144782369860601, 1.3209816351528552, 0.053796140071209864, -0.4016237646146306, 1.0207985074811297, 1.471863012837933, 0.8696374882353123, 1.2014866344567057, -1.8078078993421411, 1.0601815230005722, 0.2828495091475873, -0.1316931030152692, 1.9409424148662304, 0.4796806532708648, 0.30952752417150853, 0.642261212971914, 1.2972810373469248, -0.5710516304874607, 1.296428671679604, 0.1882536400549766, 0.12024192413580576, 0.7482144125451611, -0.18022449922123449, 0.5193597474251914, -0.00015134736402941756, 1.2060122914372473, 0.400987603269216, 0.5805204623048469, -1.052764847449791, -1.0899041626739954, -0.26209920904526157, -0.45158221578290686, 0.23523486252012651, -0.45909954643471435, 1.0391700460549405, -1.1768146617436632, 0.6791469709199983, 1.011174817648215, 0.411199894209508, -0.7152198360224954, -1.1980320139463696, 0.4839032883340431, -1.5745057434452947, -0.41956356832710956, 0.9839964884211916, 0.015979923325116736, 0.2762049181371265, 0.6098483704805613, 0.4862291698694014, -0.4624922500096108, 0.2846677372677902, 1.367317839020472, -0.9474871099590387, -1.756106996546998, 0.2988197956163671, 1.495739110209002, 0.9277333393877758, -0.5643132881556219, -0.1558226529617167, -0.4888512541791814, 0.3410030049413046, 0.8125696535679003, -0.14506424114808303, -0.5563759421336263, -1.413259141058041, 0.4721963640474325, -1.336800515204708, 0.15802207902328172, 0.7713401976605815, -0.8451617487867245, 0.34178117698250476, 0.6229076512220945, 1.6110932188650129, -0.7181795974169856, 0.009266781617777662, -0.5588298639233481, -0.1767614344743045, -0.9226697694236917, 0.7076376663118469, -1.5566853652081156, -0.8619329742338163, 2.051139469309425, 1.0147636236527358, 0.4182684075319435, 1.8816350118726597, -0.45231597591557254, -2.177291625468745, 0.2818036067134789, 0.3528969484018996, 0.5094505048346659, 0.9557302887303304, -0.6754668943387816, -0.02729241829228328, -0.10185537856378798, -0.4591265210119423, 1.430262537673349, 0.2931013470203736, -0.42349373411850877, 1.2895062553420336, -1.254123931164029, 0.007274426609199737, -0.6746114093338123, 0.9946171745115864, 0.2864085373632313, -1.2280764417902754, -0.52661829084419, 1.5827795236366957, 0.15024675730990028, -0.4248525421861309, -0.5691386244762248, -1.2497033166837888, 0.7243884070840325, -0.8880262098400197, 0.022565602731663952, 2.813014693165735, 0.2524261198492061, -0.5815627560037311, 0.065952148847621, -1.5839049003439432, -0.32991814907198524, 1.3189945049352763, -0.9633738886349973, -0.7205611597593764, 0.29087939445256583, 0.0057889375667351094, 0.02150375939915354, 0.5103962896847007, -0.7791629303501022, -0.1566257320081451, -0.12533254753908293, 0.3677730246474584, 0.6808297404105077, -0.006814522630420675, -1.6332734431577842, -0.31084462878259445, -0.2816212687484363, 0.8306217769227588, -1.4223291833641392, -1.1328914140136568, -1.1798315543869777, 0.25880349272739006, -1.176722232598049, -0.9138103973636641, -1.4195908701604916, -0.9995107551919223, -1.82773175657593, 0.008499718134879552, -0.3447023347644645, 1.296344926519369, -0.43328033036609237, -0.6691715014457149, 0.5815463164249131, -1.351170406870033, 0.948354175015636, -1.7460166934842984, -0.394637468929365, -0.7854270758121915, -1.7802874942339497, 1.2686458890561711, 0.8564108501854661, 0.05383532865352654, 0.6253901471648027, -2.202145401537113, -0.041531422478273954, 0.29066318209770114, -0.5115801644049819, -0.2316865971443836, 0.04820236445222125, 2.043254030499081, 0.5378888526826829, -0.6502743062505872, 0.826238085727147, -0.9541804382014959, 0.6060754235439968, -0.27474418761709474, 0.8956610419016614, -1.0996407788536786, -0.257368300223374, -1.018696411251144, 0.6579800168488112, -1.7964528440425043, -0.8570639935152126, 0.42330444919804316, -1.1285000187041665, -0.25650286505666625, 0.24632151425551105, 0.24962408033917283, -1.156431660359815, -0.2432666473105903, 1.822498098193285, 0.3177090775637023, 1.3319015834176797, 0.4571443687995678, -0.15115069978271048, -0.9271093020874797, -0.4004107535270797, 0.18837621181964065, 0.2361034586065518, -0.049667590380486994, -0.7731735216366021, 1.5079696883540965, 0.2547235818307659, 1.710880865859913, 0.25423148693344516, -0.12417094682887361, 0.14355110585703812, -0.30889227644936884, -0.19518744408626176, -0.38657348236703737, 0.5747008941265317, 0.7763218624280281, -0.7932199304382765, -0.38004377705918146, 0.5546620950055203, 0.26238802318984583, -0.567803366150921, 1.2155283753301906, 1.1841352702569934, -0.36154499394302375, 0.48355518941861697, 0.028516722473608622, -0.5872424427404682, 1.3501269652114032, -0.4684289952147731, -0.3722041294537168, 0.2884795399986682, 0.06557171746910258, 0.04187102672842283, -1.2970923134475996, -0.01629195036762023, -0.9112994229878664, 2.0590829933787136, 0.39400030768000005, -0.7975908049246164, 0.24046578837235552, 1.504682832366687, -0.8911225638653535, -0.3936854489607823, -0.6384138322177773, 0.29369615979985814, -1.1026872898279598, 0.4356763930115034, -1.4259861740067266, 1.4839827513865715, 0.16538982992587942, -1.2275565773734964, -0.6469351862385775, 0.7977508692229875, 1.965560992268791, 0.8204484828263375, -0.09569261310086963, 1.0444105776920733, 0.3981939687558286, -0.17001990885000728, 0.03191303725869083, -0.22703800554331624, 1.8139801219827336, 0.918270672574204, -1.4990654058428237, 1.2013287338621885, -0.6573210575280002, -0.3475342578604577, 0.001024958794340004, -1.3091664900629916, 1.7052265295882478, 0.4253120949833701, 1.0311326194819417, -2.329708589685058, -1.5666613380497623, -0.20129982865454085, 1.4540261677025847, -0.062796460600534, -2.3750929169938804, -0.22853438210232366, -0.9911165491373074, -0.9849697798584544, 1.0908056348553017, -0.5335895092359707, 0.7114854381779321, -1.2006864703832458, -1.402537825666173, -1.6107945297750212, -0.06522295552167409, -0.22244804258316303, -0.6353277757640107, 1.1342357318491285, 1.1802856827413442, 0.7358095889904793, 0.4322781449509412, 0.1993641699969819, 0.04402596162369398, -0.618389217305553, -0.19855173166745999, -0.5969933305425132, 1.2023959036495757, 0.10533466463098612, -1.4071046643902017, -0.30217127261876753, -0.04403547820029734, -0.2335959164195668, -1.1388382692559194, 0.7969342297703721, 0.0025006347911576314, 0.4618061956689532, 0.9316220945417517, -0.586857161879394, -0.8038099773962392, -0.561632309015, -0.7319527488671081, -2.215500214281302, 1.2095052233589756, -0.6324676669003331, 1.8213621585713746, -0.16201666001698542, 0.9771306394522535, 0.08884650272073365, 0.17119383734576185, -0.052205598859868016, 0.6308204756962924, 1.2742399221121468, -0.8729416492214658, -0.41451142025139015, 1.0896473253676273, -0.11531924092553854, -1.0449722114717626, -1.3905060397760676, 0.01745826015650065, -1.1196034509026367, 0.16835781469295008, -1.1337994252104073, 0.6707102828626799, -0.1611008305495774, 1.8891773441773552, 0.22194994994725567, -0.8221389943598081, 0.14773366666584706, 0.7482169422869621, 0.8634619143586166, -0.28955079825767266, 0.7168358822007905, -2.0710700397722674, -0.5577499923860028, 1.3594786178950642, -0.06290120845238856, -0.6203795676764393, 0.37363430210542137, -0.6009801257039329, 1.685628214162959, -2.036958121665058, -2.2425671656367667, -1.9918630409006053, -1.376958147267138, -1.8638660542434666, -0.9750244314786808, 0.9080815115907477, 0.018142080648009342, -0.9320767794783268, 0.26546536698365886, -0.7622509288960355, -1.185039046008763, 0.3997987346703504, -0.8390830626369119, 0.7664612539005661, 1.1452390705220412, -0.44118709528048106, 0.26214721724628937, -0.4951545553209257, -0.11879885987832625, 1.3282328751747563, 0.06968815002457066, -1.1182821619345513, 0.23652079790675906, 0.3692795793157511, -1.140728747827738, 0.5263061454716625, -0.5207546968661813, -1.503533271861299, 1.685912359362119, 0.034636130743337525, -0.48051165567394033, 1.0460524144567587, -1.0839349618672527, -2.1211644723131724, -1.0311758922985133, -1.2021446452680054, 0.06983434930473358, -1.5815367050307532, 1.0876986546066656, 2.0186122729964926, 1.811073181558942, 2.061655680618017, 0.8146717603062831, -1.5968498453112046, -2.0662599115172653, -0.5461790439353942, -1.293954740300037, -0.04669787176283761, 0.23146865620783758, -0.588038234461568, 0.5933124208465305, -1.0163085846469417, 0.2521752390452931, -1.2106468003843902, 1.418999037385018, 1.1108278459257963, -1.2434580142633445, -0.5105267831106245, 1.962828854249686, -1.3742391623665489, 0.36301946174407, 1.9887587169725671, -0.11568422609670699, -0.642928398294438, -0.3803110761017083, 1.4124073508805255, 0.29869224683807033, 2.0608887843113273, -1.357435592557576, -0.04818489310611712, 0.9811928870760606, -0.40967432838228596, -0.3030480871350583, 0.9136149401717509, -1.0208925536710525, -0.3505675095839659, -1.71190823631273, 0.20144681297018477, -0.7142725656031783, 0.10941276154357217, -0.010518057969719493, 0.7986018616075307, 0.4091757607417071, 1.3254764619646495, 0.37900863212459757, 0.2801496864889041, -0.4903324954119249, 1.5611921907449, 0.8801581363850509, 0.23899617476391827, 0.4941237199528515, -0.19580489922245364, 3.06700252986585, 2.075939890459903, -1.0531656839887626, -0.5746240339508544, -1.2509817722769654, -0.02930485583633999, 0.4955890468754583, -0.18287439285074464, 0.4428019418512945, -0.7067595339381431, -0.5880758813860446, 1.1741037427266254, -2.2845558148071, -0.20091142427273523, -0.9327486743061679, 0.05419468096069937, 0.5696294165103171, 0.9711793150927074, 1.5638669636681488, -1.399980051448174, 1.6694377251663244, -0.5244820252135467, -1.257281067913892, 0.2808453440838143, 0.48904471670322064, 0.6563624003164797, -2.403734256558076, 1.8072200656396853, 0.7479993507037666, 0.8957599457510734, -1.1333475754839513, 0.6052811339871745, -0.4713654733277363, -0.7018354826915972, -0.14295613102166807, -0.854329570376376, 2.600781602195285, 0.15947531968114928, -1.9492123387745222, 0.4025575201110334, 0.5377569832746467, 0.8230410704104014, 0.38678827937826166, 1.1036337112977639, 0.3934547673395094, 0.30962342705126583, 1.139829687497562, -0.6649904581148862, -1.5139589626882188, 0.5785053189296201, -0.6976263977299514, -0.48521233846001877, -0.9001322196203593, -1.660622472181582, -2.2786897073448547, -0.6396523522765016, 0.42857993052128573, -0.47159666033630393, 0.09912656547054303, -0.8978325685014887, 0.63667062531427, -0.9285968325105913, -0.41245780364313256, 0.191616368806377, 0.6617774942176655, 1.3566617676123918, 0.02766324341023624, -1.0349560837804677, 0.9570579186595424, -0.13078780011810998, -0.7995854873426, 0.7151367410023329, -0.12167714338407565, 1.6209549425055911, 0.37634955414789306, -0.6846815563905236, -0.13340769738466304, 1.62999490749593, 0.24590379716684088, 2.080737900190375, 0.4807972440746681, 1.9233090609717092, -0.7457053375145688, 1.2931674090867675, -0.5389819127967479, 1.3378716219526687, 0.46191592051764446, -0.12685025114948897, -0.564392245951514, 0.054901669351109676, 0.9390772175487241, -0.2832080542168339, -0.2454859351558673, -1.8832700802531435, -0.16505100921916624, -0.6746837003668393, -0.1357900352713401, -0.2041348043523018, -0.37391290726473403, -0.4402500408509159, -1.2290888874925296, -0.13562273551657536, -1.6500691440373887, 0.46665062174560024, -0.24566106658181208, -0.797744380603796, 0.055547484850162934, -1.7195390885648585, -0.23801758053719915, -1.3385900681264526, 1.5281883065641328, -0.7190676510974615, -0.123355719896304, 0.7764022341446827, -0.30040150524704784, -0.3686167969737519, 0.0943659621832766, -0.3974661297032506, -0.6247729926926385, -1.3907256888978008, 0.3787327798855857, -0.1261918572820217, 0.333666129561352, -0.2268078626149827, 0.35899627766440534, 0.4003040718066842, 0.04939169628599765, 1.3181095248614239, -1.0040453137475622, 1.0270565232586033, -0.10527902120387268, 1.0184000283100978, 0.37032567852749, -1.1038727471781569, 2.06240141354978, 0.0724635819839709, -0.6749483178493708, 1.3752140381174898, -0.18527094825241655, -0.49771622437764096, -1.5563678592094914, 0.30641413633727077, 0.6888572155488026, -0.7813997319688913, -0.3334732608283706, 1.2077222840020747, -0.6696185160915793, -1.7441216997483413, -0.1443175790084589, 1.2530385228003316, 0.48953706269055897, -1.1454774810030333, -0.10072099150740713, -1.4690725419140442, 0.22773646275302892, 2.1495481922715567, -1.9763318246520143, 0.3734138241025368, 0.3678799166519874, 0.24199407601003217, -0.8317998284783682, -0.6175366203935166, -1.5435990936321167, 0.15257075985667826, 0.24569789929243, 0.2973109282823203, -1.0464692699857279, 1.4335012256250086, 0.7760340274462584, 0.030779877800647056, 0.13317012902523476, -0.6096349652250187, 1.8769504574256326, 1.8165778911592796, -2.029543137642918, -0.7314038673207472, 0.16788051959333397, -1.287512490286816, -0.17978414420698238, 0.6413441803591936, -0.03816736449793848, 0.14195508782466876, -1.3077696693750356, -0.2788578604231624, -0.7927822730097527, 0.033625917152435035, 0.22077326511399206, -0.5309962861055292, -0.14874114920579462, -2.1561599667291262, 0.21857950385145597, -0.39674562813596553, -0.6172994137123726, 0.7237763615783379, -0.6628173764404989, -0.09955687084553429, 0.7661708667508003, 2.050182109550436, -1.1343231763411903, -0.394150602661191, -0.4005731600700831, -0.6133729043121271, -0.006937209118528061, 0.8746192365726885, 0.9627065829455164, -0.004195755687396656, -1.431856899763485, 1.1723324732423348, -0.7907307751741902, -1.2383233071901971, 0.4450622193871014, 0.6135856643531975, 0.41087999419331056, -0.9106010889982076, 1.537140159071271, 1.203007531467209, 0.4522478618181492, 0.06901440689355592, 0.5616178375297155, -0.913304278073554, -0.617052799856045, 0.8513556242527552, 1.6492263827929101, 0.28736119321050707, 0.143060129811001, 0.13159474089261292, -0.556050658038526, -0.6819127080659984, 0.2854925491407574, -0.17685951799635244, -1.5861004634732518, 0.7398075993729516, -0.13718006475583142, -1.2360195428922787, -1.800475631340105, -0.6653270917294025, -0.24529552485016695, -0.3070462119648475, 0.5209731324914566, 0.8294618413486863, -0.17019749451831728, -0.23619342552685957, 0.03462283540349657, 0.2479211831622872, 0.721589399500632, 1.1742488499645927, -0.7209553934014017, -0.5677211833764197, -0.8920108887781215, -0.2951205793197307, -0.194041077024394, 0.07201516715432071, -1.7926897922269955, 0.5269357871669345, 1.0775869197853591, 0.5356448376759921, 1.6180226180054886, 0.09591731457863975, -0.3033610094512978, 0.35200443059829245, 0.6372500799705507, -0.6470129923265721, 0.4563870076575751, 0.3086697829408736, 0.15795477733282282, -0.28995254504887596, -1.3608513191181555, -0.5174181206012595, 0.15321158202821022, -1.0735391094616389, 0.9498709387195441, -1.1791274655949502, 0.3401662792087062, -1.3746370296756663, -1.820015514626756, 0.5904282098582874, -0.7640243887629617, 1.899332176169294, 1.8001612651602614, 0.11754067768731466, 0.3451387680566698, 0.4252773778706197, 1.2930499113213374, -0.13497558680801955, 0.8295099746093358, -0.06483231029486143, -0.4626305949889216, 1.7974505990090723, 0.357954244463521, -0.9446699924851863, 1.0753715521250267, 0.6468347012501044, 0.7325172508900486, -0.8235967956477911, -1.8197269407302108, -0.7527397495032649, -1.0471331516010438, 0.954992325464375, -0.6487949930861694, 0.5412489072541421, -0.9744135424772613, 1.1668079912055098, 0.5071573516626207, -1.4971922309648993, 1.6732330041304837, 0.6658466177075605, 0.004961040538083645, 0.9766610530990674, 1.217004629489626, 2.15632219900788, 0.2992554016895504, -0.19074076031070328, -0.08513462495764972, 1.4398343939227665, 0.7531587527492296, -2.434314852616728, 0.018698508958621483, 1.530666394156561, 1.4174088220386398, 0.39311606885126577, 0.8429893215764661, 0.6889143877613391, 1.7048899457191737, 0.8279914080421767, 0.3841808718708592, 0.4345613421962533, 0.9814598643661121, 1.1001489018141712, -0.5361865265613242, 0.21775129927781378, -0.5197236573250131, -0.9476378494963715, 0.8334286814456744, -1.447030660023786, 1.6027755842182616, 1.522909575863655, 1.3672741814009857, -1.6085273302015077, -0.6841212925165058, 0.8714988428569002, -0.7180711780751314, 0.5764950939705556, -0.09035661359187494, 1.0682344096280718, 0.27136338383972597, -1.093914555087802, -0.37115833509731555, -1.2339441459427007, -0.7985138795193706, -0.07775530075881103, 0.9386977073001513, 0.3186949805078729, -1.0013479121939963, 0.2068538637260416, 0.46704881675224336, 0.0930693446845866, 0.9087490791207049, -1.1095909880643675, 0.13620180501268486, -1.2318793580686687, 2.3698156234871006, -0.41043047284201517, 0.9647930068590418, 0.7035313262086113, -0.7357611817796008, -0.33944606940905453, 0.975792856064161, -0.7580109890249522, -0.9388831491865992, 0.16631539872440593, -0.9686623661641447, 0.11101021374002976, 1.2833168243970015, 2.3501189146758734, -0.7419808119512225, 3.3177770321629443, -0.378854974046106, 1.1894959769491664, 0.5170237486499323, 1.449757482527173, -0.11005429828053218, -0.7094783265215441, 0.10745076413242229, 1.6224830274878241, 0.025460594268897623, 0.6425343157670212, -0.31898415130533375, -1.0798679506403541, 0.5735256411790288, 1.3484671879831278, 1.1276215638225833, -0.7541391904025803, -0.00765546636667677, -1.4513065159005456, 0.463408611045455, 0.056782072073773386, -0.3398650955417231, -0.3278301461019186, -0.5506101111181769, -1.838129548833068, -0.6528412434007834, -0.22203922522726993, -0.11557789598708554, -1.9693756516575391, 0.10517217800088413, -1.034395434153627, -0.08008953380065702, -3.0001454304286095, -0.7355092140807842, 1.0594616327950752, -0.4189488435377704, 0.16781086931278816, -1.9669454509751187, -0.731458954443067, 0.01711080123922268, -1.0063738446337889, 1.1320693665450008, 0.31382355603718387, 1.0723003552935109, -0.48887663896467776, 0.16351892393813683, 0.6923423498891493, -1.2674896295636169, 1.1497258936055144, -0.8608042226343801, -0.9164072583967519, -1.487718346596927, 1.4350188139062847, -0.21184761253034057, 1.3710129669800468, -1.2943315365568762, -0.19362259003418086, 0.7187438609965356, -1.4536544736540666, 1.0156800590204957, 0.5854427384212253, -0.5260200198486596, -1.1553701278196844, -0.27349200057360523, -1.2338491844820385, 1.7074643949762172, 1.8501418087438086, 0.5436111298236262, 0.4744077558142584, 0.5678560114121703, -0.7181957190268707, 1.9652881178044732, -0.6639884519602309, 0.3479450777176482, -0.7279578424760957, -0.46058272586248855, -0.4390700834752314, 1.485071764115552, 1.4888034597366457, -1.9695365549171249, 0.6506253211085398, -0.2486297625885688, -0.5519419806661555, 0.1895096241785028, -0.8790965213306376, -0.6376838625799586, -0.8514356912425605, 0.44713349005542324, 0.8885460864971125, -0.984898049801574, 1.9226056756793166, 1.151756816890297, -1.3439533152505785, -1.3828305275303805, 0.9810008154794896, 0.5550625182987955, 1.9741629526950777, 0.8414467402239644, 0.9903516449069268, 0.30384787269295527, -0.5118420624618873, 0.21568313531934488, -0.1906549073376802, 0.9872047773741, 0.043447057275043346, -1.0722974377446446, 0.30840240507887645, 1.231529689961776, 1.289961254197282, -1.415052295757837, 0.3542872190261509, 0.5064578533223967, -0.7014386812841402, -0.21695269183024965, -0.8504048338756758, 1.9671268250571596, 1.0909763189822588, 1.1465910271880095, 0.9300579839066637, 0.19877285881355367, 0.4033127688590755, -0.5693078627176211, 0.2771445813826407, -0.5910526566968882, 2.277491279753263, 0.656638231269999, 0.7966594580004646, 0.5030962029782104, 1.2239112871910003, -2.135423288869684, 0.956905678821742, -0.29364649759959877, -0.5416351205869433, 0.4524513169226536, 2.1047567102187923, 1.2144059061100803, 0.15546139261435685, 2.0078238030698636, 0.6830117763416009, 0.21062683777699748, 0.3680381824722795, -1.921358153981379, 0.8720229260359057, -2.4572973110469056, -0.6789193350439231, -3.616244826516541, 0.5200969859479287, -0.8348270288277571, -1.5574761449522962, 0.6081958963575117, 0.19058848286262964, 1.0023339789202066, -0.3112079672420133, 0.44178370023062646, -0.5048076251130126, -1.3994069725233815, -0.17955195369335797, -0.06758378480990582, 1.7922435643746273, -0.6192862077789711, -1.6310903545738005, -1.1690021151149572, -1.2093145024199112, -3.09516529226863, 0.43169942287551266, 0.06218865917825329, 0.5839211556095644, -0.7134319737419914, -0.9162521618284151, -0.3378876880640738, 1.2878146580745333, -0.15439993951522968, 0.3077351479215355, -1.7206306176358126, -0.17985102389955504, 1.14519788200572, -0.8522103401341584, -0.3963647723939556, -0.7056726337225566, -0.37501801123158296, 1.4130923511612945, 0.11630436842876272, 1.185142796653237, 0.011204445485047487, -0.20302508970364014, 0.9178670073251192, 1.129883095823573, 0.42668333759774785, -0.7693262395031812, 0.5989106795317751, -2.1834227246100535, 0.5078594213457716, 0.9932110431979975, -0.017934502044962136, 0.014618718399019298, 0.43615689634540583, 2.2660916638054056, -1.4481002752982226, 0.6458685948033749, 0.45170197162057635, -0.7387052243324294, 1.3393361998974052, 0.6185085759613994, -0.36812460265029606, 0.11464668364155528, -1.791669964880979, -0.7254503276995763, -1.0220519870845493, 0.7459004970720945, -1.240093138147424, 0.36284766593900053, 1.1310636505387424, 0.21609065407695296, 0.9901982501221922, 1.4142801306207733, -0.5075874816754351, -1.8009636793346049, 2.3589933091709563, -0.043963810041906456, -0.9225837945409925, -0.6390092243100048, 0.10006348512241166, -0.9257763652451753, -0.6194490923758899, -1.0763155593061657, -2.788511038384896, 0.37967646564114543, 1.4376287260090312, -0.22804268789046647, -0.21979058106116164, -0.18220420821816138, -0.44937185484417963, 0.5740193687324415, 0.6373983419863073, 0.5856219393424119, 0.34112426931531764, -0.6084945465256884, 0.060234739722926374, 0.7847874077044223, -0.31357045824328467, -0.4526081006714111, 1.3140655172664333, -0.6237624307170951, 0.34610293084708627, -1.0050719223251598, -0.4541508223849615, 0.10854220774737425, -0.602040653782272, 1.0547536665950978, 0.7073102150037632, -0.9555005854035606, -2.0723034039377595, 0.5893216873540514, 0.1659232479155957, -0.691145872673244, 1.8692666106818923, -0.7005044755324946, 3.406168768770632, 0.6178045437029894, 0.209522404413903, 1.11020426427447, -0.935303827291181, -0.30107511733828557, 0.0005771812107460632, 0.6289350238005109, 1.4317466616428682, -1.7337209714531534, 0.33652676986636315, 1.2353463697524734, -0.5758839644664974, 0.8285985659333751, 0.018064999514862144, -0.8583929015402073, 1.640939453974592, 0.5647216927706189, 0.019320381958476556, -1.8626818101777476, 0.35623705928968014, -1.3920535728295902, -0.04025364308925709, -2.1219812182033895, 2.2492879960896084, -2.2117506504974447, -0.7015293372430998, -1.3386346301502519, 0.45434785513478976, 0.7429073598196138, -1.3842131227703087, -0.730674268674942, 1.8189971647722083, -0.4758820769224347, 0.4409253327910705, 0.9449444726231594, 0.551630007075062, 0.5399541172046803, 0.3885563045101157, 1.524994279141021, -0.7974884472315626, -0.6568938854009293, 0.27947376218479614, -0.4955153130182802, -0.08942974231790239, 1.3102764929145028, 1.5444242142322857, 0.476164533281359, -1.5496430190473407, -1.8678225332641818, -0.05437993080264503, 0.3236472053381355, -0.36746508462131555, 0.6826304187866886, 0.5736299498569932, 0.8053111300585767, 1.7107199047271453, 0.5683041332657001, 0.697952343937172, -0.6541864315768986, 0.364406640125318, 0.39958220554572854, -0.28761598269501143, 0.6201596788722094, -0.3666201942589558, -1.4101911998665215, -0.4412538914508458, -1.6829197968369678, 0.32907480828411917, -0.24881581245959397, -2.027089220978618, 0.7282873752125394, 0.4579330597709827, 1.15745181629871, 0.3236159180652725, 0.15743561049159477, -1.4532306051766954, -0.5917126528319241, 0.754060062389077, -0.3751247341071256, -0.4967717054593357, -1.1834916327999798, 1.2936501822037318, -2.0961349093879544, 1.0842624515579264, 0.004210702344412748, 0.8784821536444274, 1.6211488910349103, 0.6098625542626688, -2.162347704092384, 0.14557157851798416, 0.1956419307017713, 0.46311517202542646, 0.2606189680155636, -0.6442854252008431, 1.2224106966606128, 0.9032792502072324, -0.5921632526896037, -0.4403250314077104, 0.09900173255653308, 1.588518953960295, 1.5514984760944803, -0.1988361913928128, 0.42122454074468846, 0.09171832221402072, -0.05232317203714638, 0.5107161167447202, 0.6648048184574585, -0.5326903183397282, -0.40375562127323683, -0.9755898265306233, 1.093816318098742, 0.8299243008006667, -1.4928026705324111, -0.6150924237870229, 0.6827457566049314, -0.1250927382677157, -0.5461042938952528, -1.9785054425068482, 0.6621698769014782, 1.6911825874334077, -0.4512292838434167, 0.31893183399956626, -0.06938245071569392, -0.8685919574091027, -1.216755898801281, 0.43218338233503684, -1.482305424213906, -0.20624326083624842, -0.0987004649563861, 0.052580690462736515, 0.15082170348420298, 1.815968946976184, -1.801525657427965, -0.35269438817590215, 0.3165612132575932, -1.1274985211458544, -1.2081895706309593, 0.8947763791232438, 0.9256072483796912, 0.1160156247366876, -0.44837495229842944, -0.2739183590275094, 1.1153679055306462, 1.3928570054101417, -0.905378910739902, 0.7753045815203952, -0.33105364449783375, -1.5667536820401184, 1.1950148433456729, 0.354165616551781, 1.7647325336720354, 0.34842243659368244, -1.1445904695784506, -0.6488915404249679, -0.154811442924692, 1.647219601375317, 0.12852481855920034, 0.004310308986859974, -0.876142611650797, -1.1969960098569172, 2.505246673635534, -0.01839259972989579, -0.42338324819041095, 1.7006327293948955, -0.23835669566472859, -1.0830569238314645, -0.5058031215088832, 1.1137754394535067, -0.37799051437745823, 0.4689867373861166, 0.8846331641907219, -0.862827297911899, -0.02378812527403701, 0.7260021867969293, 1.1597883185839557, -0.23469208225352878, 2.113734390813324, -0.43787079759759806, 0.40094481205354565, -0.440940747042338, -0.11638255103314456, -0.5976246285724223, 0.10949744083274207, -1.213522552035225, -0.2801704266168622, -0.23088144999338397, 0.8531392120125499, -0.5131891025804275, 1.2147647043866772, 0.2396978620703071, -0.6513123608903771, 1.1189830026785335, -0.329502482141717, -0.4408963005006592, 1.7621110917013203, 0.37263249289836775, -0.4859330788946545, -0.6067042421983502, -0.652281974301976, 0.9767244079433385, 0.6586845642819952, -0.046623060723555695, -2.1849581690080555, 1.0767435169705282, 0.12722050362405046, 0.9986033617806298, 0.3243622406515602, 0.3488571494425995, -0.28194417652034437, -0.5174529713073618, -1.1589669416210095, -0.6257925557519216, 0.7845203905386896, -0.34496828558498516, -0.55392401828593, 0.21742125464736634, 0.1940339202350278, 0.5181013615346238, 0.6838608318277294, 0.0963437586410137, 0.16605883874954933, -0.8192859105507256, 0.3425249914970222, 1.206963641510476, 1.2072370620006596, -0.09132107400635489, -0.4915708710890753, 0.4788544238385019, -0.8129680193587631, -0.3597416459932602, -0.001935251987053423, -0.5173249508895911, -0.3901095063695634, -1.8048261251158957, 1.0191412836502698, -0.15735909472717494, 0.3259968219452401, 0.2983002122558138, -0.2865809153674455, 1.17563374798573, 0.9503886873331864, -0.017150838121724413, -1.5498598643101793, 2.568724923652603, -0.08029464734292162, 0.7019319162248578, -0.3680243157771866, -1.526918066370356, -1.5059053494163779, -1.509751062694838, 0.707105319149386, 0.3759576560377138, 0.6475726058839647, 1.338795258808114, 1.8598847911090388, -0.05763592033876413, -0.8688135009341061, 0.019960962804798733, 1.7401095555504877, -0.6280597716378297, 0.3473435634019159, -0.4462968771961304, 1.5433942416056965, 1.2587933112859289, -2.78079601104039, -0.47512302722136024, -0.065984099161594, 0.6888533485394165, 1.2305141892155638, -0.6518789292799052, 1.6086260544405733, 0.29196792037545233, 1.527761638614743, 1.6303894518830946, 0.15132243302789938, 0.7682912494990076, -2.7992162064438526, 0.252765632632188, -0.18536494230320436, 0.1286412370033291, 0.7444904216395526, 1.1101965867010084, 0.09583878264956507, 0.20541837056183218, -0.43900022720898685, 1.8446971502738685, 1.525269777862721, 0.34107287068465036, 1.370225466799814, 0.8993074950529176, 0.388987193739956, -0.41615197068085047, 1.6959480854121158, 0.6560019605281613, -0.059249535360658356, 0.3641096108993, -0.37088956582253585, -0.7118422460610452, -0.4547337947749852, 1.6833283452032104, -1.6932063886335549, 0.33007518208148007, -0.9793326842802514, -0.5685406484500056, -0.6764406676203423, 0.27223581970527805, 2.6210019152932134, -0.09677977060333055, -0.42338854207086507, 0.46197386760890474, 0.3011535518111016, 0.3182607957611916, 1.1190392605031392, 0.10747571439392618, 1.3205623217552738, -0.869982416258327, -0.3050369611353702, 0.3649867693439435, 0.7208855533271251, 2.45889669000764, -1.6481274773858574, -1.624333610347512, 0.5392519410260627, 1.1694640247181916, -1.4936888563147976, 0.22169790172897152, 2.47683597304532, 0.8476731372760178, -0.08882181771534245, 1.575370258034113, -0.4650474770641444, -0.301534039019897, 0.7151072657003036, -0.5139154643660516, -0.8973214534592038, 1.353278291959696, -0.785705814458699, -1.424798288107138, 0.8521605677636602, 1.1173074404160004, 1.1078334261149487, 0.5060403800263849, -0.7559434902011402, -1.7506912234691885, 1.6010916611258923, 1.1400621104262982, -0.9490178938632181, 0.08236269987589594, 1.1360090499605335, -0.6822008865400492, 1.2299082010225988, 0.5747472954848997, -0.9917405164498511, 0.7860707096819252, 2.094613031828752, 0.32476024918516005, -1.542485498562725, 0.19154241112008105, 0.30669357584478807, 0.37562510410149125, -1.0038556934540235, 0.17700385429720378, 0.3866792602527052, -0.048846256996197955, 1.0608228443140864, -0.3012251999336654, 1.2156737659864476, 0.04936433736528017, 0.3300941747271548, 0.13579425531133751, 2.0300902584395386, -0.3659348731125605, 0.5084747076597527, -1.214555459415656, 0.23882541455141687, -0.7048446726313435, -1.1718879290253827, 0.10611992491921178, 1.474365496672677, -0.7345685181989616, -0.36082108102321997, 0.9999061228905383, 0.8174526543777195, -0.012197041307958149, -1.7718376142638643, 0.5003281667388737, -1.4235098831155986, 1.773715315343277, 1.219914038937146, -2.213860133799711, -0.14916713468644752, 1.7628714799535847, 0.2339849515986858, -0.03761268839633734, 2.143907078190805, -1.0015286896665496, -0.40010337492322895, -0.6566439248016585, 1.4505614500774051, -0.5810568006549722, -1.6162077232566219, 0.18463910494905925, 0.7742911410807676, 0.14496376455100546, 0.8838498428601247, -0.34941054966462454, 2.02035055742048, -0.33887856780628234, -0.8213769209241042, 0.5669351554200318, -0.42298733389277077, -0.6005548745768965, 1.6430054310046425, 1.6035130190910534, -1.0319391121636672, -0.09774507597793355, -0.6520088992578232, 0.0477880560338064, 0.5747081768308763, 0.4828001936355227, -0.10582221958284689, -1.4668221584548882, 0.22049638564358517, 1.149953675035897, 0.5356482043193802, 2.209744990011742, -0.3608091685311371, 1.4441404573947205, -2.2581574537180726, -1.13629994945274, 0.7265837346915243, 0.3097883608445818, -0.8577004158636681, 0.17114666895138375, -0.7043940938451111, -0.3009786276980547, -0.8165363388123666, -0.9289682655079575, -0.12244992044143885, 1.542896177144803, -0.8841551589218146, -0.9208567330224402, -0.6540118144074791, -0.5171796742457738, -0.6023620659122336, 1.0635672960360585, -1.134330817545791, 0.7516849917169492, -1.3768346295850198, -0.2887033795344619, 0.056463263594405004, -0.2319843130014002, -1.5167554485466308, -0.25185231053466395, 0.9501800034747293, 1.3049896091031608, -1.2018551498395114, -1.352386595817521, 0.8816491221888422, -0.5136584805608818, 0.413721469429948, -0.34300581824604537, 0.6390192112355659, 0.2576064001530712, 0.9782101083250803, 0.6357892633788328, -2.538589768176732, 0.44695349034542475, 1.7303935529284833, -0.9684600861287586, 0.10236207599063739, -0.058130587212581325, -0.6593728867487116, 1.628655977372503, -0.9761527761546062, 0.9272948375646727, 0.27513668932269936, -1.8234460501370229, -0.9808233679288441, 0.3505076901816651, -0.5696532524323059, -0.3208932477679777, -0.7983286790842801, -0.2857415896451339, -1.1602067061862453, -0.6920493662799277, -0.7209260326374053, -2.4150876953168714, -1.345197705402757, 0.5891707013601143, 0.4315664458823607, -0.6577610674094022, 0.0005062460095738251, 1.2591509479456338, -0.6063765414897068, -1.7607966379468067, -0.9508899749801195, 1.4880740849985945, 1.0865988277002356, -1.1046192339132022, 0.6131311512926562, -0.9873330073605263, 1.3013956438407601, 0.7414214926541779, -0.8920958466820361, 0.41616978812279903, -1.1208556692016416, -0.8894703034997085, -0.8309067844131225, -1.8606842678184219, -0.07194654199784922, -0.07117390174891772, 0.5659822119815847, 1.916753711583183, -0.6963548682808837, -0.7855412487214021, 0.8047069590125108, 0.18349468568397984, 0.13587660177551125, -0.36150957824597807, -0.9508896526834771, -0.9483356430836982, -0.003902815411469966, 0.6106885504696978, 0.19376914373215087, 1.1932986357592312, -1.097567907692405, 0.25150655593518184, 0.4292062014732737, 1.0191286705659799, -0.03253742612676552, 0.050433113577438515, 0.10814583704412964, -1.05385401691128, -0.09071516667529367, -0.23849827593955103, 0.23738288144814607, 1.1169088997424437, 0.5886653092379591, -0.24354050181310793, 1.117611053039336, -0.2161013013225925, -0.7694711307041686, -0.2800587010869735, -0.8093412890185301, 0.1259803458217062, -0.3736394395978573}; + + +static double gemm_C_dram [64*64] = {0.029004260079962152, -0.8006824757561799, 1.1197336711178068, -0.9896157373454266, 0.4966790956650833, -0.320720861795497, 0.2404711868912757, 1.7983471339688688, -0.45215688264510606, 0.896961504429265, -1.1616159798557508, -0.840560393015905, 0.07480233754961872, 0.17992670342491432, 0.40524411436169705, -1.6268041045901802, -0.515842081058143, 0.3550333279229013, -0.7169358889557749, 0.2669144829157952, -0.7584809853254146, -0.8370380914872608, 0.48072270248825516, -0.40604137567306653, -1.0335439663756396, -2.069883524764944, 0.6487461014247821, 0.011710122578667713, 0.7558956908425195, 0.5521614840818139, -0.25174889683631496, -0.9515208767957234, 0.7906470835496024, 0.16009301473206583, -0.9156242627130992, -0.8294654016291866, 0.6405496416929598, -1.1150477048464416, -1.4778148420891877, -0.6532442833617729, 1.0668677881031745, 0.42505345945888107, 0.07673387953069587, 1.1717799752861355, 2.372817497973731, 0.31201596993898206, 0.6638888271489586, -0.8305561220137307, 0.028066442063465726, 0.5327162396709624, 0.1408772044753154, 0.7686937307721734, 1.2407913952843508, -1.7571668440478188, -1.4407261503018678, 0.46966304643082196, 1.067965459457961, -0.39086059969793585, 0.18266961756344147, -0.09601667538677204, -1.6541976778103968, 1.7762728362797546, 0.044625271683577473, -0.05332555492084246, 1.5519660869822542, -0.5164453460006669, 0.3735110292906932, -0.14055947835504265, -0.4662885370095864, -1.5754096176009653, -0.5279910388184064, 0.1877355482506709, -0.33550084881023345, -0.2335582239599356, -2.000574246170347, -0.5830606097499693, 0.7201314957738653, 0.2767541956493462, 0.4410172346230466, 0.1496171764974113, 0.25584855399911693, 0.4231757850905495, 0.819138838244574, -0.21665970285704256, 0.7993969106462642, -0.0524553739237593, -0.10297969217994243, 0.10341500732243082, 1.3960023077483688, -0.3532908554905869, 0.2203147660382962, -0.09582033114984764, -2.2210275614128365, 0.606197840696221, -0.8083685791528877, -0.5880259036476851, 1.3096925869345688, 0.14641410716326553, 1.0053476857132149, 0.7403000763828661, -0.5588102569869894, -1.8250095277930243, -1.0186046335834653, 0.7832698999328468, 0.3231401688432538, -0.8047074876514235, 0.22535724026429152, -1.3470992648831748, 0.4765280552548135, -0.04554836049444112, 1.0856094027781182, 0.11016455864671677, -0.07169925780054585, 0.0271210087334666, -1.880645185815656, -0.6627766870787014, -2.8871893512281774, -0.5590779904078584, -0.2852107316710877, -0.14430057889633358, -1.3447542589401562, 2.2915669321114898, 0.1728899952093592, -1.421973566402149, 0.08592097416861628, 1.0123703420638568, -0.9558110283152651, -0.9027941505852196, 0.5300767150099646, -1.9419175079586657, -0.2760382915222782, -1.0179287043200682, -0.1606599622524637, -0.3767181010147598, -1.1725123233730355, 0.9572648447195339, -0.1936224437544405, 0.42763321723323666, 0.0597133381305523, -0.9990105347232393, -0.4832753666973765, 0.6204763319584289, 1.960673372068261, 0.8079703046097372, -0.3452734166837273, 0.3245617375208927, -0.07491582919001254, 0.2743378624516145, 0.5983093934031979, -0.25216135518238597, 0.596753836231434, 2.245459616334286, -0.2948256683719357, 0.28882168918856443, 1.0813537774504756, 1.8535627999465232, 1.1961057282238132, 1.318252064967893, -0.3950711849667241, -1.377281651368375, -1.408790244923528, -0.4636389874147835, 0.4564524135315159, -1.6380091071491378, 0.9185995000712671, 0.4692427417861781, 1.276662831833898, -0.9447062381422022, 1.0877432601911943, -0.22886776336281126, -0.012711978863996708, -0.030811506691294257, 0.38780634756191124, -0.47366773078962465, 1.4814958435930687, -1.1828980688637942, -0.19863200267049605, -1.3001223272185354, -0.4242285448896925, 0.08898755668384477, -1.694063278944873, -1.6602985696240946, -0.6264097653393359, 2.1301257422525035, -0.9460005244382601, -0.5374812634338685, -0.43004926797690446, 0.29036657258875936, -0.8172987007397908, -0.5094563820595255, -0.6841925657572985, -0.008910378204569518, -0.7731489284211737, -0.616010025614043, 1.1972052729129066, 1.1413513407181342, 0.1378551765169379, -1.4064193442890494, 0.47683432031632644, -1.0476861800204984, -0.06901359480920458, -1.2496780870132282, 1.6753024031738708, 0.041143324574971704, -1.4522215930201885, 0.7573346464645373, -0.15931444765366126, -0.7557308301686515, 0.196471099443403, 0.9564572866814582, -1.4803875895078311, -0.9249142102969159, -1.0917150382335596, 1.2585219246267312, -1.2891710566522292, 0.2768772021936127, -0.11943879225386107, 1.4656182572667367, 0.021005580078823815, 1.015858071109535, 1.3572500812200858, 0.5985933296458931, 0.5118443929095804, 1.3341173368810655, 0.25975515970872654, -1.237917055905442, -1.5278312160468452, 2.1781558314592333, 0.4138981989747854, 0.9117147230752412, -0.0703340663019803, -1.0158619558246755, -0.10701579101103097, 1.1466314764426422, 1.6748325965852073, 0.5314453542027439, 0.22641290320796856, -0.6327321154028427, -0.3761520310209821, -0.9094876923198735, 0.5199396339404194, -0.6279140323320965, -0.5316788990880681, -0.7754230114648885, 1.6645731868153486, -0.25248989955644296, -0.07000691089126687, -1.4833807861581225, 0.2847398900881516, -0.4709041665604012, 0.21337597451344031, 0.4752659270130253, -0.6322357393536067, 0.8609686485998456, 0.6154141944357284, -0.5912751549232785, -1.3228568966598775, -0.0850817349853954, -0.8896445451859949, 0.30012988995739986, -2.946119896252344, 0.036167602681861456, -0.028803490284605167, -0.11461775128822176, -0.19075498390300027, 0.29202031786639293, -0.3294293306975217, -1.2138544157908646, -1.0972607879764735, 0.8248759718159153, -0.8925466032322242, -0.16541550491454302, -3.4465386476151045, -0.9566298189710206, -1.078687196973154, -0.4891250155546176, -0.19531569651548852, -0.5990381399213928, -0.7036039565674199, -0.5527767107100636, 0.16920318370993273, 0.5427235579499587, 0.5503428910211222, -0.7497767572001619, 0.011571029854715547, 0.49984033903822517, -1.7283983057101304, 0.8594792530055284, -0.12824597747986724, 1.130107130041837, -0.4987262662830606, -0.13416057776817544, 0.5080625985293201, 0.2117295363547809, -0.8118692986997613, 0.9424962371461574, 0.6300633108154001, 1.2746895140278918, -0.003615756251429331, -0.05126805599191769, -1.6138120917239291, 0.7882409923880206, -0.47367442818736116, -0.43963455311049604, 0.712317456491045, 1.3326960118808617, 0.5896451874379312, 0.9762107134249405, 0.5626831277485056, -0.4376044921422135, 1.5861409442199574, -0.3308751028344161, 0.45942840764057974, -1.7057231513870459, -0.9254725284067791, -0.11018949372955511, -0.7616338202748348, -1.0857700920096018, -0.4372008083571365, -0.40109369588497923, -0.644818536292368, 0.25281756977441044, 2.4197071280480786, -0.22106488208438388, -1.095650643379566, 1.894125695645947, -1.2761684375038809, 0.02036098869546291, 0.7947496785408548, 0.3421126605593487, 0.7949003661056283, 1.1747154329748026, -1.165207479384505, 1.183093398265755, -0.35715333224519835, 0.09841575912600005, 1.574023689454931, -0.23482068201661857, 1.2386946627395476, -1.6783552822721601, 0.8611354052037511, -0.03315728672592852, 1.0193997600753135, 0.8649479142208678, 0.4164604631092424, -1.7829228532488806, 1.18355749410558, 1.57769088119824, -1.686257098236667, -1.1607340307397962, 1.0433166175934159, -0.27772980615804893, -0.6837779231673817, 0.3903294683158698, -0.3671124601982576, -0.1276413455606181, -1.700409020471655, 2.268428305186674, 0.2736751307318294, 0.4618308615774054, -0.14119264307379673, 2.2199837786106715, -1.375939861531243, -0.7221917522954365, 1.1098492022750432, -1.4505379826083395, 0.26060143268332325, 0.9771611195144573, 0.3765145109829216, 2.215882692348702, 0.4047556377415391, 0.17708325001281291, -1.9644517128168955, 0.3982782935193131, -0.6262164185787708, 0.15245667799057772, -0.6508467682648665, -0.040947126846172834, 1.7119976409288793, 0.21779845582679846, -0.04145965880856733, 0.13225304399295884, 0.1739378890012343, 0.08037751104228624, -0.9411877899806691, 0.38565902729297424, 1.0958429749681566, 0.0669055558927883, 0.4361448377834406, -0.5901261511098935, -0.8885190831394413, -1.4871156416726072, 1.3669107918561987, 2.3091823854788514, 0.622552717517235, 0.2783143206723023, -2.1305113526512396, -1.4978709762185878, 0.8018120395351532, -0.33995160613042685, 0.1777765322633653, -0.2258895695037579, 0.19586512261588473, 0.45301580114334045, 0.18103013768124301, -0.5147488863527064, 0.20662933937315553, -0.09581792397706412, -0.4704069093141071, -0.13483315552265066, -0.5594310075701671, -1.5755216037255442, -1.5674068340789091, -0.5157357110184205, -0.10054465770334044, -0.7071565768766122, -0.4099340274741994, 0.35968200228333286, -0.18585633976713617, 1.5416706566134035, 1.9286900603543355, -0.5159285075025919, 0.16886996206928914, -0.9067434891373716, -0.6039824452258518, 0.27720989342858937, -0.8814432879855706, -0.6919477366657376, -3.300499554594386, -0.6173928008586741, 0.8153244286523782, -0.35573315997666993, -0.20534234860472675, 1.9722365498950571, -0.1019166129902459, 0.08112220912426235, 0.7463452888856003, 1.1314090216181174, 1.1725026304304351, -1.3737070495742683, 1.734619629252936, 2.481740839103901, 0.9194703215452048, -0.34821661861545355, 0.9728026357332336, -0.10658444194926611, 1.3646609952054927, -0.20423441003137643, -0.06138988353092309, -0.1103302198524375, -0.3172315867238737, -0.8436575516229253, -0.5086533079781693, -0.1020901909331111, 0.041548802438476466, -0.9989480071569191, -0.19084542074059116, -1.012929236908774, 0.37846266910121795, 1.5569101781200219, 0.03186861709827397, -1.9643672831540329, -0.9559693601351081, 1.0476398922384702, 0.4753938790634957, -1.9155181532004628, 2.7851118312057928, -0.4660427767210397, -0.7434686806220159, -1.8644578336246445, 0.7950519234725988, -1.5175445270408634, -0.18967795984276006, -0.07354703638985319, -0.0028940583295309318, 0.05057720453427609, -0.2571010737906899, 1.841219462891703, -2.1896361652733782, 1.2511986406908666, 0.5753085882254242, 1.1153018270644537, 0.13982610960157404, -1.383864413771338, 0.7931811133480174, 2.1309464599529786, -0.3672255367396895, 1.2349500491253345, -0.2851321814733262, 0.8721818251187332, -0.2026228852474988, -0.2791938533272248, 0.08040090821476319, 1.0892882614640076, 0.09768943644705562, 0.4204417256351771, 1.3114392443815635, 0.04829268265664478, 1.2850500288988436, -0.2779162535369758, -0.43169391727862744, -1.5832048871215894, -1.6962198203895802, 1.0729777959132656, -0.3475301277658165, 0.5554189051412136, -0.3178837805858156, 0.5327674010524779, 0.6755622625790911, -0.1842302677407756, 0.43041683511575013, -0.8115483237447811, 1.3968996263534743, -0.17863606115051833, 1.585212875612633, 1.3280038403293726, 1.6695928015875903, 0.6109821394084319, 1.1349894473760842, 0.28476618327344827, 1.4784673864794742, -0.2823155837802257, -0.9183380787461971, 0.18428479751772892, 0.9836044862804338, 2.025235066042294, 0.8265404261612499, 2.088855400024876, 1.2286394369048508, 0.6715801392320037, -1.0498151352816971, -0.8931372957848912, 0.009361893370829872, 0.9162789715980914, 0.006157909931788802, -0.4922874423094256, 0.18089602650564962, -0.9841484655534926, -1.1301889231546511, 1.3001340798635899, 0.13693015400741945, 1.0390411986454737, 0.09933412649399904, 1.7158843111310522, 1.904568532616043, -0.48794979349112055, -0.4338145756826169, -1.0370401983449686, 1.0390032114803736, 1.1522094113772554, -0.4274833545676901, -0.8753567770565199, -1.6315994757003491, -1.7385506630534566, 2.532384190967428, -1.7056567691204445, 0.5413608251407436, -0.7741297263854691, -0.9447738094748025, 0.6661287246658135, 1.2031380054266403, 1.10368337423764, -1.2970356849209472, -0.6566436584727551, -0.14816924917182495, 0.7899980629195169, 1.8273852077888946, -0.9277938527847925, 1.9598998746936958, -0.27099375424892697, 0.6313744587208714, 0.40220491996516095, -0.29639672770006376, -1.8023859026222553, -0.7750540161682024, 0.1947076125945104, 0.5471135873496065, -0.652969912710415, 0.8404848088284015, 0.12894499297938444, 0.6032885408701868, 1.2514835286413495, -2.3974894979687105, -0.9304443816961642, 0.5235805043032368, 0.9237070587307208, -1.2232371757835139, 0.5076176935522306, 0.11779678439009704, -0.34612498438387546, -0.7314860546390927, 1.553910216869756, 0.373159475336515, -0.30618102562662347, -1.0154187441535123, -1.3683721575144063, -1.6848734071167453, 0.7057898542723938, 0.7127375808855136, 0.6820908867090917, 0.14243208748778438, -0.49764571567254134, -0.34993722444753544, 0.28263895634917763, -0.0811609390230422, -0.8001263943467075, 1.2016381946021464, 0.6300938668214966, 2.0197124104278883, -0.39730245577489043, 1.1082615629881487, 0.46812678384907336, 0.666746788576162, 0.26123698644751225, -0.7024810946461257, -0.5922965445684787, -0.48103667153342716, -2.24353922047969, -0.9337194785548774, 1.3686185555811365, 0.3972741496203757, 0.37354079869199974, -1.1743179438700706, -1.1748244659763896, 0.1406513465704322, 0.7766944125577693, 0.6468554295128249, 0.8402029124529626, -0.5495888272912638, 0.2752226876433018, -1.0617295543596483, 0.45862157925707286, 1.1714768594080485, 1.1805224647157246, -1.6892820684956078, -2.393405099847649, -1.6331785264764314, -0.7303247685543807, -0.37576096935444997, 0.4013478691603241, -1.0157957733816363, 0.14002890339339075, -1.0252839102787974, -1.0375314340230521, 0.8172730168671789, 1.062543562593135, 1.2810809804809749, 1.3999493985992992, -0.1750138803985548, 1.395734920938993, 0.20896311087749608, -1.3682057826232348, 0.004699216277132869, 0.4764319522852837, 0.12823174581788757, -0.546109883020964, 0.2523240224674329, 1.9724181468899409, 0.571137816454056, 0.522392971014453, 0.06334935501567902, -1.4920451846109672, -1.0225677061413179, 0.44255002330819526, -0.4682032342920937, 1.0350483070201422, 0.8200797384116898, -0.3029007829607368, -0.9845615009741489, 0.7582526902117465, 1.4833592773254187, -1.3989560209509306, -0.02010565525754588, 1.696186541558, -0.14162189076683343, -0.6537141574516205, -0.38621139164560747, 0.8184053985461378, 0.6452934033126237, 0.7403406155596476, 0.5169782497985267, -0.8189857182537518, -0.3298835390479515, 0.4237001612173338, 0.7833162409431745, -0.0019372831953367766, 0.2733210830893454, -0.6400595311632477, 0.6228358338196626, 0.3278665095994055, 3.081520639298892, -1.4435639267846334, 1.7053027215702756, -0.9588347501825313, 0.8266484324217002, 0.6242654188330886, -0.6407113941329479, 0.2772593629992858, 0.24814190447973083, 0.03363219264335503, 0.04496534388566153, 0.7087040051423135, -0.9221069417630742, -1.5268364676636788, -1.2896607997985812, -1.3661213777130599, -1.2075968696301782, -2.389243136958518, 1.4955588874856782, 1.2032086179453023, -0.14139077396705954, 0.2105872325884853, -0.5266170806972954, -1.9635764068165913, -1.2961941687735021, -2.2835960332407423, 0.33843875542096646, 2.3953920170177923, -1.1837497023332566, 0.496939041745984, -1.6834236268645497, 0.0947364755311612, 1.3677509022976098, 1.3010190519580898, -1.7668063834316443, 0.21564869547117013, -0.44708261946187283, -0.002380181670482115, 0.650945443490256, 1.4074149358152999, -0.3502584098400984, -2.275975800589525, -0.713875724177341, 0.5589684491426312, -1.965116029720147, 0.47575103008133773, 0.1679025472894861, 0.5439197139149357, 0.18336508565925638, 0.3219885649627636, 1.7554902588109447, 0.4642725270837393, -0.4390920573164246, 2.2698459891448923, 1.9524244471530363, -0.14392435570038756, 0.8876434758028264, -1.6577043260766187, -1.0198707516700816, -0.5961056777066923, -0.34369290129618396, 2.3123203551692133, 0.9307680048590791, -0.002081134721685804, -0.4816298626933, 0.5166419734688004, 0.09544852566577597, 0.738769513030866, -0.5320413954446367, -0.4940048696009806, -0.6416355699204741, -0.9125056647182483, -1.1862204740038778, -0.6555000958717663, -0.833470938908399, -1.1616778894644986, -0.5822364941000208, 1.5789499695762335, 1.6906076958567484, -0.6682910973489802, -1.5375408783188134, -1.7035671717673282, 0.5113501775091176, 1.3627201535356952, 0.34281653314195654, -0.0361566378498718, 1.283526267201893, -2.2745695742593397, 0.19000854891098337, -0.9356963719873145, 0.7771715931847443, 1.1747876035023088, -0.6581782060160273, 2.1514708443588093, -0.36624102952776444, -1.02996208423095, 0.7217520972507986, -1.3423248117021074, 0.29948769841449313, -0.9983234204192304, -1.1349975297569361, 0.2390417601230243, 0.7072204486510455, 0.35832543994067206, 0.8041102924500155, 0.3028670857744879, 2.7623138131362417, -0.7089157750419613, 0.22621529706629703, 1.0159042552872546, 0.4778866048560423, 0.13862524435273077, -0.6817769904192166, 1.2905800338344828, -0.5617711995631723, -0.937878912770488, 0.036259068904784184, 0.3074683196641872, 0.02334508317808002, -0.056636545167360136, -0.6105722560497783, 0.22034125973327826, 1.3981176980080354, 0.002830930797289729, -0.24195892578863437, 1.3598231207188574, -0.5983975108140343, 1.509108735185707, -0.3108584778552104, -1.2228769868033365, 0.5943397739409046, 0.31935177535483583, -0.036439093781717204, 0.14778839039885514, -0.11651573539454131, -1.4649049971267012, -0.2683259472901276, -0.1143739595865752, 1.7635913804869325, -0.16130246501945172, 0.4072876137215747, -0.31103626857775446, -0.05171663918837877, -0.7274085567918993, -0.869998251494505, -0.7193321231806105, 1.7505951189711304, 0.7440630635174471, 0.0016957841800653661, -0.983556012268064, 0.5131452298233552, -0.21520406798199235, 1.2554935163458343, -1.0675348115557104, 0.7469420795328888, -0.9963438487998225, -0.6229174823536682, -0.6770598584016285, 1.2562729341933596, -0.2712138170575698, -3.068642230593467, -3.0531360276822577, -0.5584911390555901, 0.7473315149504595, -0.18706483628559678, 0.14675010155914514, -0.006368544270069353, 1.6844988114574022, -0.6214979241607808, -0.3355320210713104, -0.09820727272027757, 0.8687934479912008, -1.2005133663272494, -0.33084789733891284, 1.1571084045756281, 1.4246451046643682, 1.6962376428779853, -0.01965764703939021, -0.7773091413938378, 0.7348575748530396, -0.23216605868100404, -0.8192776375683218, -0.2080446140023382, -0.44904006003328667, -0.4432456841776011, 0.06399763185741875, 0.21563610206370648, -0.2508963268128007, -2.5393973783220463, 0.323376954594191, 0.1384357529412035, 0.021153113599300586, -1.6410540709354358, 0.3691910055245278, -0.17495885529094257, 0.554361827175954, 0.20816477209501544, 1.2322688447103174, 0.2259606292852208, 0.5140029111794593, 0.37718842026130545, 0.33603722021339, -0.017669087842033065, 0.3990879000210093, 2.178612539524806, -1.4021972726687062, -0.059858631189209026, -1.0031183337604832, 1.383398163582628, -1.0611670406818532, -0.6074540386699645, 0.25468663161832605, 0.13474280254470264, -0.10885846887714488, -1.3619488838854161, -1.1865743468938024, 0.8343602196452481, -0.31636758410943266, 0.0822806179687328, 0.03610500422763477, 0.36975660962214374, -0.37447984002912227, 0.9006398818186364, 0.4263942528559476, -0.8471405691528062, 0.6370923472128284, -2.771271846414234, -0.2775641216533752, -1.9698060876925318, -0.7631948292304876, -0.11501310895829121, 1.2264502383793572, 0.44510581587390197, 0.7850830340365011, -0.8972456251148753, 0.6916483637375145, -0.5297453646047573, -1.901732896640853, -1.007326391309077, 0.2220310453886031, 1.0724562599385534, 0.40011245153735736, -1.1593565442528044, 1.5287688772353074, -1.2265309382410865, 0.17812058438692274, -2.1424196963250663, -0.5365247347682954, -0.175882228830132, 0.20779436050052882, -1.2395880259585617, 0.04832542895494312, 0.07093709252503462, -0.056371503668414216, 1.3597592757778154, 0.3828295662314724, -0.5315492554139866, 0.6360780600344075, 0.7531154590527323, -0.7824250791522117, 1.0617544257117932, 0.5489962301017025, 0.6286191631180904, -0.7554812899095874, 1.3460101201505388, -0.6564959907077351, 0.16698785124367177, 0.09451925409687266, 0.17705768947811729, 1.0138194440077566, -0.24231907310256842, -2.546273886239003, -0.05507329609619993, 0.3576296538398323, 0.27507225100326244, -0.7942125094255036, 1.0744369972956842, -1.1548545340061322, -0.15997902636302005, 0.2950954321082824, 0.8845493763065855, -0.8132679790365331, 0.21153971778686953, 2.2177421007414084, -0.9299613122041496, -1.6733913807379388, 1.3474760825861976, 0.9816143450439703, -0.3855895553937516, 0.8502913770246404, -0.016034574759692683, -1.1339934776440412, -1.7563721581739282, -0.06647491888759757, -1.8920747028441938, 2.3760043080911335, 1.8177530262775197, -1.8575847163422115, 0.844553214178571, 1.5954993729399956, 2.1252863078605264, -0.9089236614521397, -2.0469171775640773, -0.9384063102943723, -1.5482176543034978, 0.4526740914408505, 1.4013381381239929, 0.991045705937935, -0.47656146801187094, -0.27582104974046956, -0.5642658623540668, 0.325163151043837, -1.544633482053262, 0.15518857788732585, 0.15382265815454396, -0.6343026666433687, -0.8052290074500515, -0.01691923834054946, 0.6541683607771073, 0.5338183805463347, -0.9091383582478858, 0.3968969223456185, -0.17061628431357603, 1.747323697825887, 0.8012341564226836, -1.255442509886699, -1.2920206203653015, 0.0749186813352897, 0.2120295206583239, 1.182843648729612, -1.1122449131709833, 0.6272974182744673, 0.22777924320090764, -1.6251751647156196, 1.0411757059610847, 0.019367245918048063, -1.5738996411263415, -0.269270207865917, -0.5708394331822761, 1.8504054703733777, -0.22094889809967533, 1.1868455374446385, 0.5717141696167073, 0.8579212808811838, -0.49203515643303497, 0.42647412290047176, 1.0808047827262008, 0.010157228470302567, -1.719815859158772, 0.38805715778854427, -0.9969905666150687, -1.9361769141375387, 0.2474759878876688, -1.4221009001917095, -0.5918211873235646, -0.8058159270505826, 0.5438653208536682, 0.19307918373458596, -0.24237795984767208, 2.3297553315723163, -0.6782771653830929, -2.264267240688485, -1.3620513569200732, -1.9227157102467343, -0.5474383968696648, 0.24293097804441546, 0.8929260011447531, 0.049719985269798754, 1.3121549852716419, -0.7380138820116222, -0.011523274745424477, 0.7707761640355849, 0.2159962953115613, 0.5540026920594798, 0.09682345285130588, 0.398898061918644, -0.8325427357082503, -0.8742308162726118, 0.047733473640843245, 2.054543245821081, -1.3898902807090843, -0.12538538363326618, -0.09873796128345852, -1.4497902777439649, -0.4782177466678878, -1.5489795500879526, -0.29518331705238504, -0.44407598222159483, -0.9106356388426876, -1.550174445411619, 0.9328231660401188, 0.05594760595703414, 0.07566938845558267, 0.3298955808621695, -0.0017861668992007044, 0.586486364465265, -0.4362101979996282, 1.009729735572833, -0.042390290391845505, -0.2808285449424426, -1.0403468643014806, 1.131390812188699, -0.773890404524892, -0.22102358669926575, 0.6645483621647768, 0.7694091180284272, -0.03831164560096324, -0.3150960131582738, -1.0259652416179839, 0.20049882895150267, 0.03693677780369976, 1.6551618339165797, -0.22673604901843455, -2.417611359678329, 1.1106483704352281, -0.715751960430851, 0.5164952578195183, -0.6996317634146395, -1.897990257489308, -1.8041186305012002, -1.4690150868698797, -1.3087988024213557, -0.17486927381146705, -0.45353269534719165, -0.19149104316066032, -1.4266479569878736, 1.8919903045082074, -0.9473356590670324, 0.5173785755076394, -0.13818347423848865, -1.086849997656127, 0.36593831570404595, 0.6194226195093413, 1.4453714190862008, -1.3271158566185721, 0.60921787209085, -0.4832669384376709, 1.3186433317044879, 0.9513213947793335, -0.8548751359506115, 0.1071168124112579, 0.26717848135064914, 0.7030211740414508, -1.0709788797992723, 0.45569586838966974, 0.2887090154342446, -0.24229609713368583, 0.49390930613496803, 1.2738314634647165, 0.8139546371116826, -0.8058423065764165, 0.916823751781412, -0.6678215090538104, 1.4119852560554031, -1.3924034581122728, -0.48456149875876053, 1.0643581297073346, 0.3566463977388516, 1.0415975486050486, 0.028040080194454448, 1.0504197093941925, 0.44965919555783174, 0.8435496128685037, 1.7026256067041448, 0.14373254549294262, 0.7291427328749441, 1.2935074397997568, 1.1398931375510761, -0.18068743577377236, -0.6047067890923773, -0.5346294021251248, -0.10853463546664842, 2.24413601184453, 0.3297355179043857, 0.6657531282588651, 0.964251923438201, -0.5628928015239664, -0.0017106246437996794, -0.19257380601095586, -0.5999594838401076, 1.3310045638118178, 0.01078134546842449, -0.9551407698862096, 0.3885729820005979, -0.05434661623637475, 0.3767388172770911, -0.4898330949543117, -0.713441149440031, 0.42018478215791266, -0.8439100277112023, -0.19565425401483183, 1.2508445943709827, -0.598991758922596, 1.8429649718578998, -0.14258798772701783, -0.18138700905606242, 0.18618696335301746, -0.17087391761424983, -0.8432760462260274, -0.9939917370091027, 0.4305596597055404, 1.1091371083897912, 0.0790722776794302, 1.2495242586059518, -1.521274693280775, -0.7616476824293791, 0.19580408817424708, -1.3143027744001392, -2.091488061999562, 1.9663088091747154, 0.229879430005645, 1.4409375453185944, -0.36162055274827665, -0.27464439642870486, -0.6230996505620815, 0.5751002240784702, -0.16100067047853925, -0.09962621112274908, -0.4351501356168505, 1.3351792476960413, -0.5784998697471228, 1.3361458462940539, 2.3601479775013887, -0.4647589716386651, -0.4548988716102504, 0.7028762701773292, 0.5914980686358756, -0.6966115762392115, -0.7696723521588696, 0.03715612980676316, 0.32221017528830087, -0.4234227574937845, 0.34726424283234486, -0.48116562286295844, 0.3138392530237178, -3.16017434136752e-05, -0.3914227082899591, -0.581666722921146, 0.17111964776203006, -0.06008169278035282, -0.041886584782142536, -0.28699248044931597, 1.462175320301007, 0.1245846313065406, -0.1123526751684876, 2.092515176950615, 1.2272760858332872, -0.19552592726578952, 0.49191271925867636, 0.6144137708252538, -0.6106235763708134, 1.4976844345055038, 1.1892142848985179, -1.1357119642005757, -0.28436481789594376, -0.4421830922813949, -0.6328684584245098, -1.7040349067620155, 1.0820432527761576, -0.9968510182567392, -0.7985198199890275, -0.2588215482253829, 0.20174302514172218, 0.7287507331021361, 1.1722852714149967, 0.4322448567665407, -0.771155579801035, -2.612258680121964, -0.7051447495309736, -0.08301192443248484, -1.4472391477276658, -0.3526737726608245, 1.1294354483566833, -1.0899837588692494, -1.1395916553408674, 0.7779937885751342, 0.5183410812373956, 0.8509697670045957, 0.6208144564226835, -0.778892715214496, -1.0501461846073583, 0.8552859071722188, 0.8608448046488019, 0.5497428154557589, 0.04882443454369946, 1.6651080232070385, -0.32090016182105363, -0.3728486660772143, 0.8430133361143574, -0.5655459744432224, 0.7215544062511454, -1.9484490239876828, 0.6423145640402413, 0.014400283567776857, -0.7898745532400717, -1.586323922234601, -0.8458020923790143, -3.088311088273429, -0.7711672240651922, 0.9871615977182401, -0.9045757185197361, 1.1588809667487696, -1.3285096437778892, 0.5493583705018974, -0.17757552950573202, -1.6167076444272095, -0.6257691840041929, 0.3674989256823125, 1.5365222795738054, 0.3527319212488765, 1.0485204480487655, -1.660459836294662, -0.5794960248043395, -1.2465657293652699, 0.39414956926958317, -0.22431122185124802, -0.7424297725903407, -2.0183158330852966, 1.0943683904642862, 1.9180228164677529, 0.33125926943311296, -1.4098590113169003, -0.3049008568768526, 1.2884791320277762, -0.8304495335533479, 0.5648082533641575, -0.6324582858362591, 0.15519145016196245, -0.14331072524661, 0.5955341112172925, 0.2683604694117294, -0.46158779655753196, 0.07612773147707591, 0.4518924976580781, 0.4439502747372077, 0.8523538103367174, 0.6526631303289786, -0.14639057359720992, 0.11541815018151078, -0.14641912207628505, -0.28858965267185804, -1.1094993394266683, -0.13666302182060672, 1.1197245750262241, 0.5969030971713879, 0.7652826186532012, 0.5565420987155717, -0.39973686526861824, 0.7840343460033151, -1.1888373414791333, -0.38373069667860454, -0.2549327865564444, -0.831606465136574, -0.8020163962470959, -0.867149529466562, 0.3741626587437947, 0.009823237085445392, -1.7368701460461045, 0.9578205180189425, -0.30283019943674705, 1.1710486547250496, 1.3504432585716344, 2.135913369966061, -0.37144981581277836, 0.6683173129623053, 0.20836373808769923, 0.45158986081203556, -1.1459347939795756, -0.819138263097992, -0.44181173736632695, -2.228038352852804, 1.3450784569893894, -1.1523580752749787, -0.20464272457508284, -2.6483454695188007, 1.213210112709636, -1.4004764346361736, 0.09732611023114367, -0.44728592455565547, 0.10547550295522748, -0.42093313113048986, -0.5056183426815237, -0.35915275364763544, -1.0946537876925737, 0.31096146492651894, -1.8148942677707616, -0.3091292910916751, -0.07769189114014907, 0.8210353689958184, 0.9977559638388211, -0.9741254410868778, -0.532900582192196, 1.2326485600619295, -0.556852354708009, 0.5224831305011773, 0.2473387410334785, 1.1142299086991494, -1.1993099089239656, -2.3844231540204452, -0.031312298998023125, -0.2578374897963484, 1.3655566629409817, -1.978772520685182, 0.05702667001523861, -2.7661971160023278, 1.4379234027888605, -0.7192462186848305, -0.8359204541555126, -1.97072449798586, 1.2834263121409806, 0.5648994039770748, -0.10923252179999401, 0.5481965021182704, 0.192406781879664, 0.48581076499243303, -2.605560426009065, 1.03504983076068, 1.4042025146049608, -0.6532422029882547, 0.21720993132656635, 0.44583467031113655, -1.4473969873605004, 0.7442621658759352, 0.0035577574611439537, -1.5352838320153788, 0.36582337868920506, -0.43827718248031894, -0.331658585134989, 0.03475743065587794, 1.695364872590356, 1.558451620009631, -0.20689475301966134, -0.45129848619848684, -1.523170827436555, -1.694309335523152, -1.198176658548595, -0.19969177462827617, -0.05282460007952421, -1.1791283297361472, -1.0067735453064437, 0.17055987486894333, 1.548598735029748, 0.7208980223949303, 0.4530935835189574, 0.8089115623004025, 0.3351300125270723, 0.3800443655445466, 0.3736345544751257, 0.08967024919905225, 0.9223811114430721, -0.9791572872575997, 0.7490556870861242, 0.04211285779316042, -0.48675401364389137, 0.7892987384887062, 0.6514935495821761, -0.7389337564143339, 0.8226734205961588, 0.7249237684279655, 0.9660211264551801, -0.4532783587481408, -0.8511090310517235, -1.2152362800727083, -2.2688038747495143, 1.0639266151110012, -0.11852527671845324, -0.04079710558992621, -1.959172190759805, 0.634813706645387, -0.024392389160913488, -0.8994503599741844, 0.02058425261846817, -0.5502771537286061, -0.7627382878672573, 2.812113990163829, -0.35697622542008045, 0.8954830632884034, -1.2850622093830648, 0.9048756978263991, 1.295681539205646, -1.8039444541082827, 0.6289956120674256, -1.2464825605819987, -2.434105594966877, -0.7368776196463713, 0.07517741459098572, -0.7212226336631826, 0.6482644881693863, 0.7243697163628927, -1.015612682453925, -0.20576178987164687, -0.03565973922119395, 0.46655943398917193, -0.49256995004987253, -0.6208601544556013, -1.9147957069743964, 0.9111798522207986, -1.050789491681603, -0.17826554882391007, 0.0034287654351666343, 0.23891042130951867, -0.2896526657972369, -0.9678605370350775, -0.15606979834697407, -0.539588519878248, -0.9744762714085187, -0.1158787137991666, 0.463186013778498, -0.31756023012613327, 0.32352357908448803, -0.585725835882206, -1.7678336366681864, 1.5889268041950584, -0.20630705622264997, 1.232645492185463, -1.536865929859409, -0.9261652386696412, -2.0561143314389776, 0.4779964081018399, -0.8596011929021515, 1.0843957545428986, -0.9897567668916143, -2.3232928720337003, -0.03340641205022988, 0.7598708513617404, 0.6584247271159631, -2.3279582198317708, 0.24768310253870407, 0.8762008827221577, -0.6729640746468504, 1.2959884053547635, 0.9381350368383641, -1.1241425977603545, 0.4829581184819777, 0.44171108339691467, -0.1872572531285367, -1.2571533983758636, 0.2048074965235173, 1.6143344982484689, -1.3124698136215769, 0.3635463079780809, 1.3596873368910098, 1.081430863928576, -1.7061600182770245, 0.2118428338657974, -1.0006407692588688, -0.3401431816847726, -0.7813320328275092, -1.0011400049098196, -0.04519821459969004, 1.2603284232288081, -1.0630920047189185, -0.44789118146525986, 0.5582310695632384, -0.7090682864355446, -0.5133533644647693, -0.13049594943266846, 0.7311900472570971, 1.493841327862994, -0.25011186120154755, -0.7748595776465173, -0.5052909848740618, -0.5033837938274406, 1.0631419148120849, 2.2478394914416504, 0.7500249601704074, 1.5817576559551234, 0.8472836111216092, -0.470416237895585, -0.19965720263223283, 1.0216451463957437, -2.1860339921625407, -0.9948198936152898, -0.4396019229076382, 0.8734144476777804, -0.2965813670330133, 2.2470581118653734, -0.3395559758401316, -1.791968271962612, -1.9257914274985277, 0.3714309214848273, 0.703855673271628, -0.555710126333215, 1.0220050901401225, 0.20363711487789027, 0.8516796154742334, 1.5757937650329772, -0.09665836315586222, -0.776148895209055, -0.8004256779107253, -1.2413561284257886, -0.12925323644050332, -1.2379066703304404, 0.06651546025851007, 0.01391190021081403, -0.17367092702089812, -0.3287548140792935, -0.8711037772397026, -0.13391409347721686, 1.046744495577508, 0.8549541076563608, -1.14897045533444, -1.9386803001956516, -0.38823478112772664, -0.913589660602426, 0.2729518941831664, 0.15071694940790553, -0.10547684574045808, -1.2248164227256482, -1.351082215307864, -1.331163419569997, -1.3025284037326679, 1.591100615537101, 1.6839972656851228, -1.5013406493986328, -0.014560098841445244, 0.8758316571675913, -0.8616058158966454, 0.5237127012367585, -1.196778610697725, -0.35407288196013637, 0.6942107386263077, -1.8315746797885266, 1.4846155028429848, 0.43076769047114793, 0.384367439106405, -0.23394885184834452, 1.2198064491495224, -0.5383323547980174, 0.8160510810336509, -0.4573571329857449, -1.7335152974789638, -0.4636249816670279, -0.15318904243505294, -0.42412709535096155, -1.2846318534528511, 1.325417287661619, -0.24420837398318634, 1.7225099174527827, -1.3858598478981758, -0.350222801326749, 0.22885965098157468, 1.4051554822746368, 0.3335772936910085, -0.6286767607540873, -0.07004282442105106, 0.04489437050367313, -0.4059451088431407, -0.8094857079707901, 1.7505330159261117, -0.583610420693528, -0.7366008689555579, 0.3984745730971409, -0.06377005585758136, -0.8206644772162646, -0.6843563782443158, 0.413445320652666, -0.4554691818585017, -0.6229184879111299, -0.2413741831461815, 0.5506155379147128, -1.3103237870729614, 0.551465002061796, -0.5526669452272004, -1.432939322764634, 1.783677814895783, -0.2619175408084894, -1.7366570861134099, -0.35564945315684077, 0.10137133388748105, 0.7235998519780015, 0.09403042929115289, 0.15425730783069394, -1.8572780611255473, 0.5058501044761556, -0.7574907452490733, 0.17607281289803361, -0.8396945461067945, -0.7292802178089858, -0.7002824669050794, 0.5503576214615272, -1.5890603582592648, 1.793036043038875, 2.7878235846616866, 0.38956928497568377, 0.26174869373444265, 1.711065590611669, -0.21780984024318578, -0.7476219519355383, 0.18354455463527203, 0.9102969356546101, -0.9733253628488144, -2.344766204767146, 0.07301118913271507, -0.4917986474536467, 0.7416391329516281, -1.2880000713234445, -0.46197477360345757, 0.30212819705891386, -1.5167184180382485, 0.8501535296247528, 0.5175168374586809, 0.1763279409946514, 0.5808980947903934, 1.8472712753780864, 0.5887473330756161, 2.1954184977584354, -0.03769822240764868, -0.15613316317636414, 0.5004769377495568, -0.7455652599230427, 0.7677830295108011, -0.1441337502428087, -0.7523387828605589, -0.36755553576567623, 0.34105345138077786, -1.1914248220126447, 1.2303531748948233, 1.3432678076153106, -0.4313094961431832, -0.716554553207416, -0.36217498101423934, -1.5133659288612389, 1.4950695017357467, -0.5715269477785132, 1.1593421463571147, 0.43789720927678055, 0.09116342195238117, -0.3049393765588991, -0.837272212664342, -0.5766435716140458, -0.7356401726215391, -0.9485280265926767, -0.1250772778287353, -0.24361064177838979, 0.8522508371598432, -0.0037377039062253593, -2.5439058613954306, -0.0569000266151025, 0.4320024316685166, 2.194478575759713, 1.4396842305532822, 0.36543499574809074, -0.3770338147135057, -0.8552418236779827, -2.641615137447347, -0.01832206949724758, -1.220279075748726, -0.4532959432254292, 0.2687666926125023, -0.8588555314205266, 0.2995859931505431, -0.5333350265572113, 1.2847615357173254, -0.6750734120371739, 0.8097130403145714, -1.6270630113161542, -0.9700686987748345, -0.626750470435254, -0.873880059260819, -2.302124621855377, -0.2119446632235012, -0.45104357068515205, 1.474647321380819, -2.452150203161443, -0.26422200819131053, 0.3355570393620066, 0.4521192920529254, 0.6898023906005871, -1.0228088805014108, -1.5620067151329697, 0.2114421450103242, 0.16571047265242836, -0.9976369476833716, 0.2707035595461758, 1.527376877291636, -1.1501231170867043, -0.8215138548193065, 1.1255100205347468, -1.4908295737477542, -0.9614784827261649, 1.253875753998538, 0.6502131896760401, 0.5459866901410766, 1.4600197648017388, -0.0961460203532497, 0.7266795346872365, 0.24327467641293096, 0.6629927940460294, 0.1425139446241705, 0.6769287783907216, -1.3236927946900179, 1.7325000099103491, -0.44398667144970083, -0.06250247294850679, 0.7996605229107876, -0.8781887569136042, -0.04685771081608833, -2.1381243641968757, -1.1057101272330927, -0.2334652569852083, 0.9622037237887306, 0.6635341672421278, 0.12296392422848872, 0.16098800191091994, -1.9738778562669794, 0.878801521788013, 1.1264406225655363, 0.9266111456784218, -0.5837955300185679, -1.1381689631937657, -0.7637975260788618, 0.6253414266910773, 0.2560476374285288, 0.6225515550412877, -1.4003990017303332, 0.33627768607969516, -1.9427666341170824, -0.6932243069544903, -1.6260875697896702, -0.7277319111014768, 1.4038229847386294, 0.2920548422295979, -0.4789539104472966, -1.5162957655731588, 0.7303018926046246, -0.08451244525442732, 0.784113042439586, -1.5334585479514933, 0.5670458287729787, 0.42975930410924124, 2.449800593141972, -0.747332434740572, -1.2322385206168842, -0.7568040112448173, -1.4135743704317814, 0.02577746009056378, -2.0837637677880294, 0.49143275227877103, -0.09302281017834362, 0.7031745485857588, 1.9067771128764397, 0.017922750249444862, -1.0118512011569816, 1.098381595132738, 0.7341755899609803, 1.2311978717249155, -1.0213846091416032, -0.30656617450535995, 0.2039715668363261, 0.9137009208505903, -0.1853547296025253, -0.4531226067380201, 0.4791486178122148, 0.4244894303034229, -0.21125213591144995, -0.9006724834631074, 0.687500015940671, 1.5478498713739013, 0.5971262704659354, -0.28221603850355226, 0.1853982344045198, -0.4972609839585217, 0.09701023695712938, 0.5695911267833031, -0.3164094642230819, -0.14706947612684826, -1.3149133497939054, 0.6864680014836566, -0.772852350625843, -0.5806236044379457, -0.3330938726043226, -0.2730406772068024, 0.5762813326703923, -1.4304622484096188, -0.8424942170683648, -1.3966094397492712, -0.895345937295373, -2.1450526226610602, 0.8982603474010731, 0.2447347737164159, -0.14421939866277614, -0.32759685565611457, 0.296699608032958, 0.4488491381463045, -0.9366906772433812, 0.8575927698912629, -0.21528850062417895, -1.1881007189482282, 1.126951428099562, -0.9182517838371076, 0.03845610449911805, 0.21538710321609011, 0.4345124212863915, 0.22806905558766796, -0.0433565930969285, 0.7593857162181715, -0.31477607928734513, 0.45451779677564275, 1.1460305154279424, 0.17511551763090402, -1.8856875430269369, 0.8346203714049741, -0.0696682533840345, -1.477209694338219, 1.167580661482926, -0.17554887202590774, -0.8474837486432465, 0.34080524465178785, -1.067656844368498, -1.2235746072702904, -0.1496059091339221, -0.6271075452205968, 0.17720185109195266, 0.4353918232872083, 0.5660926079329978, 2.8554574415424483, -0.6620166583187813, -1.7269876019682948, -0.4078387228577495, -1.7228178107762542, 0.3726054112499986, -1.1217641084697834, -0.4549722253573668, -1.1732831794353027, 0.6575544136481785, -0.9201334492342766, 1.6328222950437552, 1.6244241347609476, 1.5613555902002136, 1.4668846483103386, -0.3487215605525855, 0.12066051762324873, -1.3338304508691319, -2.838826297994906, -0.6706495059056897, -0.2112553589247857, 0.4093088155814143, 0.0586543436679839, -1.9337244019029907, 0.07171251023300006, -0.453400009742923, 1.1415999381407176, -1.1548675809496596, -2.382993633047374, 1.665455784920222, 0.36977079711240063, -0.535727132830006, -1.4579294636750366, -1.6520070983625739, 0.08837369320935094, 1.1015994425060465, -1.2436747485612611, -0.16173195775871396, 0.7874586254788326, 0.8455365274680086, -0.47385229544186175, 0.8581794726994194, 1.9141693890868874, 1.2111468774347625, -1.283834409703804, 1.4122001960991903, 1.4246122083213058, 0.09617143246488447, -0.680416520345397, 0.7939074419436761, 0.05082061802593895, -0.3375681951224267, 0.2728075634559421, 1.8677062690963786, -1.2849446512608989, -0.3646522458534046, 0.917024620691813, 0.836213051287984, 0.4199460834454394, -1.2038519270531134, 0.12232264627089835, -2.2232529926712767, 0.32822411605932045, 0.2221878465543045, -0.40914638546335264, -0.5038836046014628, 1.8256305544491191, -0.7565556539701808, -2.7739792692396126, 0.28066845231027215, 1.3738789070045716, 1.7661381760831198, -0.9580232806819591, -0.1780922624537117, -1.0984645221049045, 0.12603798766445923, -0.1849675475219486, -1.4475049162679143, 0.9388707018063479, -0.5362768656635394, 0.9452817076530887, -0.37341197131483667, -0.2629170752516286, 1.325991973487167, 0.9619471376599076, 2.1975015359014103, -1.9973341541819725, 0.8588312686492864, 0.13666135012685632, 0.3102389236196128, 0.6936509306420062, 0.05434653570011313, 0.3886040413097377, -1.3881648803578328, -0.24232672717865358, -2.3006844443180974, -1.518751357394444, -0.3706901669875656, 0.7539809084190491, 0.4912794553641408, 1.285898467547851, -1.2234469904502512, -0.08958864363508236, 0.583078020131131, -0.23178079681176902, 0.4769446061135408, -0.4016965792806681, 2.1618387681417497, -0.3808916318031749, 0.7019003947692466, 0.6921832736273762, 0.2010723299967834, 0.23634082843208823, 0.6056544806575411, -0.11651743275509928, 0.5766313042860137, -0.5190655005970012, -0.4579416002427724, -0.424209530527786, 2.232559210366838, -1.8171412233712165, -0.6495312007257151, 0.01454464350825512, -0.012160378768442833, 0.45900058613553946, 1.622427208224704, -0.8381648037082366, -0.06922690164521429, -1.1571533446018838, 1.2962530073258305, -0.4164012434169487, -0.14957792428793357, -0.0966188865041463, -0.17162818417291137, 1.5823601195567514, 1.0185460546773435, -0.27435903244422055, 1.0624307534321238, 1.6824917464322542, 0.3499999101405133, -1.7539284490002658, 0.3415515608898923, -0.9304971196835875, 0.04252683790482448, -1.5965834974215565, 1.3596129553980816, 0.5975052601318105, 0.7282491018628274, -0.8685422050617817, 0.8955457613350786, -0.43664776638074715, -0.8206970291571989, -1.2898007224720796, -0.3186171612571654, -0.3330818341118064, 0.6655752973348447, 1.6764347205970604, 0.6078743574830635, -1.2342507922222805, 1.9210718505914963, 0.26510984025007406, 0.2685882654026507, 0.7102430456245953, -1.0462145584529572, 0.3857191152427833, -1.8835805633826779, -2.768761193953574, -0.4915726819365157, -1.5089924717034593, 0.013278831567490521, 1.5474176875871273, 1.7045030442907954, -0.7048211460588357, 1.0382872389284454, -0.4236141117291399, -1.1507654519546344, -1.6074537360491772, -0.7267874141115397, 0.11876040295645178, -0.6408806028454356, -0.12049820175789154, 1.1256684566373316, -1.1503658259476168, 0.3808406082354331, 0.16166298056768014, -0.9796873977838907, 1.0438547113586458, 0.2695904409689415, 0.7097366282641338, 0.36812978605144314, 1.1038117080137047, -0.5807051449206111, 1.027731721586947, 0.9661580338116212, 0.2598371929157506, -1.2798102496315147, 0.8352067419464927, -0.1452621149892954, 1.8549267889124994, 0.5665323669164135, 1.5421593189692089, -1.4677264718771512, 0.9585639718948312, -1.6479655417171202, 0.22271257385409565, -1.161398773427602, -0.861813501728504, -0.33065924746715947, -1.2370435572165541, 0.13012798200740622, -0.17426050640126142, -0.38744989631009263, 1.4307827967619229, 0.03543562533000589, -0.9972687727886126, -0.5170550450401604, -0.7750247609617125, -1.5190613124777796, -0.45895251295378553, -1.8056739512190008, 0.568360571435928, -0.2004869809428556, -0.14483685708825503, 0.5258043449164731, -0.16813587996429707, 0.10846389250099084, -0.05315797521827668, -0.21651365686613308, 0.06006145597959008, -1.4024064633139812, 0.689880904910238, -1.3428757039530983, 0.4589303661569864, -1.4188669947772765, 0.29352168212647334, 0.7308608932842507, -0.1353758679174761, 0.17358923934048226, -0.40216684119518126, 0.43993814071860016, -1.2871086596268482, -1.2622185432193231, 0.5955345200199184, -0.8657767655249429, -2.0777147735575694, -1.0097475327974674, -0.29221483234147594, 0.2292766310482291, -1.1056969652514455, 1.4876657299426514, -0.036104835108870456, -0.6423673306131062, 1.17645837315232, -0.27627899423171265, -2.1294237281854707, 1.0389397167884664, -0.6156099069368945, 0.5660062401217804, -0.34735225445425977, -0.32061267845758085, -0.898048854923999, 2.3890802889591454, -0.1207700865946951, 0.9658162458846846, 2.1295380289836494, 0.22730977326083576, 0.307795221689862, -3.159470294922449, 0.8956823805247126, 1.4364518339011614, -1.6940979672180807, 0.165976015208281, 1.0227277830757575, 0.9471964236813554, 1.3689187788341273, 2.0082590219654723, -1.4127390079463908, -1.4582830839548455, 2.057655232622654, -1.6262107983377108, 0.8065089603585295, 0.059317700347295395, 0.13330649608758663, 0.41871631403681064, -1.6670993078179417, -0.4557222192488648, 0.8358412168608853, 1.1485241583907668, 0.42382769612443416, 0.07067530896807704, 0.7805845452452761, -0.9230705042306333, -0.7008265657860365, 0.1238579585529523, -1.5033879105374937, -0.8006324477609928, -0.44793642959253405, -0.27299529722657506, -0.42911609794809474, -0.04754182561350199, 0.4678169668023181, 0.9609426463686324, -1.135854381028605, -0.9604027706620838, -0.8759778130611081, 1.3255392992467154, 1.4437271577682296, 0.4932168845856174, 1.1198442202865473, 1.2097953377572856, -1.4782787622655886, 1.534331937472566, -0.18592464788213361, 0.9065510875978713, 0.2441526620364802, 1.2142409950847504, -0.005934606839626211, -0.19071981471485608, -0.3040583507442866, 0.060081676730458174, 0.018762337319815515, -0.9902130995818926, 1.3074986871427252, -1.2758677347357341, 1.0698936415205338, 0.5702156020946687, 0.3041015469962475, 1.0315316803895331, -1.3625531333588328, -0.4647788936504099, 1.3043793230085174, -2.2931238782528447, -1.8655685521053629, -0.9669629869645776, 0.1883663353758491, -1.0634824082910936, 0.8013306975599391, -1.5443624045591937, 0.32715347959892516, -1.1042425552504813, -1.6161041406680392, -0.5109993363057571, -0.9190886093343267, -0.6077428272848499, -0.5002569071129503, 0.9756689510277916, 0.2772218606494787, -0.43287852998208237, 0.6296681915983172, -0.8502843261320427, -0.9505069068832771, -0.650584341206366, -1.661723761397373, 1.007089074815852, -0.11873490106540271, -0.1272993611104505, 0.9298614676390998, -0.5153289230941936, -1.556702035787103, 0.3807701443952423, 0.6123807492207072, 1.1867467887368908, 0.14654907176430795, -0.5370416367498603, -2.1139883997425315, -0.7876830210703504, -0.6237996086335619, 0.13592084587607914, 0.6393276776955494, 0.13991569771729745, -0.81809230737367, -0.6683486553698732, 1.115178173122076, 2.446771414213701, -0.1637585890568815, -1.1209704564711065, 0.4467511515071406, -0.9534092482312004, 0.3182330919933401, 0.271683759433474, -0.9573363828477164, -1.0712413179694105, -0.30255813778652974, 0.958247674089883, 0.4979415521551006, -0.8376872519699228, 0.022535961046091832, 0.6840510626836408, -0.21077828406318735, 0.584447240190305, 0.3410263701239205, 1.187176771555195, -2.1172358171100973, 0.30995019232039317, 0.7901976578611829, 0.30913468523891424, -0.9844146654250953, 0.3474506697688135, 0.6259418281233743, 0.4794626029480261, -0.06173762343825315, -1.3627102955192472, -0.20031835021540442, 1.6870429458740388, 1.6083459881399655, 0.2789050227337342, -1.2719884064904396, 1.1853106830638485, -0.9913580737072663, 1.2233104543278213, 0.8134432318899081, 1.886557959191833, 0.11022533467624505, -0.7681413266984113, 1.436892344457456, -0.5556957709754798, 2.3038212660346935, -0.682772274731363, -0.4746168209407287, 0.5511129315383609, 0.4215246673091607, -1.4860625654820405, 0.1897176503580621, 0.44020540443738876, 0.7496215071681255, 2.552398472469107, 0.7607506386602476, 1.0820709259858656, 0.19917231987970416, 0.7942499355919473, 0.19973021075409347, 0.29481380935757473, -0.6357637486064631, 0.12863791178542627, 1.8561515112410554, -1.4521073859968245, -0.44690133813439353, -0.5281516778029656, 0.23031228507637702, -0.05163289925469105, 1.4531091939178806, 0.06594794127602743, 1.9158929778743325, 1.3893544881471012, 0.8377158542991587, 0.4599670791005717, 0.6058828013346426, 0.21069233748771843, 2.0847766207434564, -0.029268516047371095, -0.3252030660188709, 0.13202105483543372, -1.2051521919108732, 0.08810029046160057, 0.2998899394140385, -1.329901911797941, -0.35244571721201917, 1.0093949421205954, -0.6561924048355037, -0.6769220785633787, 0.9004707724740563, 0.4215313341559502, -0.7375271922065233, 1.0706249247137103, -0.028892244945197036, -0.5183281825357204, 0.5736153002965058, -0.3758685831678415, -0.7918995871067815, 1.2782634446781616, -0.6356995421752419, -0.4833863369287177, 0.9974534142023732, 0.29124328932605514, -0.8236355220229586, -0.08699050597488259, 0.6590141733829847, 2.441583292882557, 1.8873452628569025, 2.2474275746061965, -1.2084812281924566, -0.8018851520041654, 0.6759181159646618, 0.00313769957548172, 0.31474207170695445, -0.07736951126774436, -0.25018161293926583, -1.2830507962514812, -1.5628441907653305, 2.8453969247062276, -0.6342184442111992, -0.592854552706071, -0.653723999513639, -0.76565949917059, -0.730526998162015, 0.09075307806432394, -0.9481548645415303, -0.04755585978648472, 1.3476101538895733, -0.9875559107864285, -0.7896939152505444, 0.4816267344514175, -2.1648165937072137, -0.7268788889746165, 1.2960347147856455, 2.9109429440400323, -1.065376273609101, 0.18513796404565092, -0.8814138828253623, 1.2409135508501319, -0.012877656665903105, -0.6476617613042353, -1.994768600369764, 1.3443028214739667, -1.8514533014456531, -0.7379582086548833, 1.694396228823381, 0.4026562338082194, -1.2758466479856054, -0.25334115795781886, -0.10298131523967101, -1.3748667924232236, 0.6293890561733958, 0.2738888278899806, 0.5612373487486728, -0.35340678348969806, -0.736843748234479, -0.40367835808832514, -1.2439466232262497, 1.2570138663363715, 0.45632423807954914, -1.170707965548015, -0.9587623429264018, 0.6425982154718701, 1.5567146540543542, 1.2516374448322218, -0.22322323181634318, -0.5695167025136576, 1.3827725588378879, 0.529065899193698, -1.5470827592965664, -1.0944906269170949, 0.2905472841355263, -0.987585623182969, -0.3515621243107407, -1.1366040859833553, -0.5160321145422849, -1.6442173347711861, 1.3423907595439113, 0.31986604002016844, -0.5786595172834021, 0.73801532386848, 0.5788365796442495, -0.7375548663739422, 0.45423130001442397, -1.225358779977498, 0.7678067565519512, -0.05078757448886205, 1.512293872317004, 1.106989348588503, 1.3272064524680798, -1.0102290516604413, 1.3418085812620126, 0.4314053354881663, -0.8698836928173348, -0.33508116195249105, 2.273858285763485, 0.41127055898865217, -0.5417916233776102, 1.3173262896619646, -0.06588492371272986, 0.5969382095462551, 0.6197204718248582, 0.3742348312569251, -0.04007772711014461, -1.6143631344300409, -1.2617480510616137, -1.2401273803885422, 0.3822358970465057, 1.8061346386866513, -0.22702264172388117, 0.37048462734622856, -0.11799395539242921, -0.005235059103559137, -0.6489984366966667, 0.7782101694572308, -0.024126859434724878, -0.09798935833649829, -1.0417284651310414, -0.6605483359597034, 0.6972000521784677, -0.15225780204879624, -0.36034171752445354, 0.5934576132973614, -0.25056255516564263, -0.7310153609877714, -1.8861910032233697, 0.254480151361828, 1.4148114593503607, -0.8002251737459469, -1.3914075562421209, 2.6894920671041236, -0.1506644941293263, 0.4047667831579401, 0.5611273432518382, 1.779203788992058, -0.48565136522391056, -0.26653744823132164, -0.8829510316719237, 2.532755174768609, 0.5582799591535964, 0.3625488756486719, 0.8429610656748877, -0.1422677046514221, 0.059560937411363916, -1.54096863376706, -3.409308449483486, -1.501482227036858, -0.17084770021492382, 2.3317238025849716, -1.2471763217303788, 0.6742533376141315, -0.4671654422272103, -0.7254154200533441, 0.23441703660981258, -0.4694323705405022, -1.612196166706617, -0.32563743615759183, 1.3898422646804982, 0.859146411700291, -0.2601661523404493, 0.3217117418244543, -1.0494347817905338, -0.5991667659706216, 0.8881794866760082, 0.5840210011255069, -1.2075635705473267, -0.3377101947699321, 0.13603306699179857, 0.5802301275309478, -0.704852221496425, 0.9615592481981307, 0.5450775566697076, -1.3780611142397772, -1.6167118554509825, -1.2811556928029282, -1.2724034602241299, 0.16120409249117293, 0.42750602102457846, 1.2666174612779004, -1.5508664421057543, 0.2620798945065646, 2.0332984208088303, 0.1261854523088127, 0.8345628189160572, -0.687707400490003, 1.0656169293117534, -0.31887838781706285, -0.005112174834790412, 0.2023207919468502, -0.5067392202386992, 1.823953396894383, 0.1523428263375545, 2.2440789764565605, -0.6697609733471732, -0.34309395149284333, -0.3824068477398153, -0.33303131558596377, 0.9716664193169441, 0.8311581421420695, -0.22780854741625758, 0.20032616901737238, -1.2785511330679982, -0.3197180135822623, 0.4959834053798831, 0.6752515974385053, 0.5334780166422973, -2.002795187816773, 0.27050605525523075, -0.9424869426824867, 0.458248932225858, -0.46118697878329784, 0.47832198627914324, -0.3661079341479641, -0.09319576406942727, 0.577819340020893, 1.2520997452677414, -0.2933921906178384, 1.136343377990995, 0.2468127074537116, -1.2252940887079373, 0.6375579341674809, 0.3462788965739153, -0.5177836733288577, -0.035284483529249705, -0.5338255181822806, 0.5193809161508848, 0.21798950092913766, -0.6956597590579882, 0.8046664677176151, -0.11463713804889088, -0.19176077914163675, 0.791885645189318, -1.4328882682847868, -0.9528659659051965, -1.637558975422558, -1.989264868496837, -0.8459538105074142, 0.944828292676069, -1.1921028346027158, 0.2546472038919744, 0.3861916389251654, -1.521512495954636, 1.535375205330882, -1.8914196543962882, 0.5149418901648063, 0.7752013519581096, 0.9145512827088738, -0.5080387911664219, 0.05031436015329658, -0.41216922303342934, 0.37227191099516266, -1.6600720014787667, -0.17968185610490092, 0.31830407850338693, 0.7686158224111359, 0.3658407552939923, -0.7165726159358554, 0.013357030158994452, -0.3372894061190394, -0.6789238357123408, -0.3832898769073804, -0.3227036184382978, 0.4460521819485986, 0.061892643502349666, -0.32267506934792967, 1.484633534363464, 0.4021774493619681, 0.4307762865129178, -0.5296069271797403, 4.151195369087241, 0.5487000909862146, 0.7163468748574175, 0.3808084179332832, -0.4772621640085183, 0.5479157515300286, -1.1044576899329694, -1.2036713335057232, 0.6909028182382742, -0.6529263174772725, -1.4725628267518027, -0.7473406606454858, 0.7387557364279378, -0.8760308731605688, -0.967180804004829, -0.49221734292555436, -1.4382474439405089, -0.3481040054911766, 0.22254446316102353, 1.731032969663649, 2.8055652681876384, 2.1160837251189757, -1.379194059803083, 0.6326539345516785, 0.15520482328940885, 0.8119547790137315, -1.610952801893542, 0.008918798158614715, 0.477564041851444, 0.25533528319659754, 0.998197782393884, -1.6484421505039013, -0.3004410869764593, 0.6057050457224126, -0.32020257217470566, 1.3359336989858763, 0.535133451920879, -0.5673962878727761, 0.24055606737735033, -1.6590194676777759, 1.9066265876591473, 0.2721183739248777, 0.06834872118107038, -0.7693837262978656, 0.6000193521872865, 0.20157135480173424, 2.472674269826056, 0.8258740084136792, 0.47137911495882484, 1.244572899040009, -0.3130562609295631, -0.7435497606216963, 0.13509423548484906, 0.6656236185332783, -0.5980179153119386, -0.6435416164377876, -1.3312882258359282, 1.0671430529417514, -0.09759042594372078, -0.35648374184511217, -1.2269456519162936, 1.6814992783555787, 0.04184788447848968, 1.68139083696507, -0.3030041682277847, 2.2849057798957273, -1.196531329787736, 0.6523992375423346, 1.4893905469952924, -0.6823297566186022, -1.1041446305707252, 0.4421841974696293, -1.4167436314301174, -1.5920898580925384, 1.4343243359414184, -1.9045005981467849, 0.057069471507391965, 0.5278224067845345, -0.7362602350911139, 0.19448161568570255, 1.5261487666748228, 0.004388839910851893, 0.015470814085829732, 1.615975884645819, 0.8879261649672402, -0.1326774466682177, 1.9382951563961202, -0.44547041979800195, 0.021230799239171535, -0.1571038497582797, -0.16148117044663435, -0.36447608885124355, 0.9360978659212479, -1.9835447885628907, -1.8064899970710941, 0.9036470769919311, 2.425086908712557, -0.6272015905517969, 1.957160646153106, -1.7538826809290353, -1.2373863108002687, -0.42249715021397544, -0.02100757430425144, 0.7526038212912296, 0.2047007870068672, 0.570705167349308, -0.7783611682766279, -2.3095477705978107, 0.22606718794222244, -0.32290132655615966, -1.597852946819715, -0.8952260637834641, 0.5568680007496093, 0.31733948888023006, -0.24697424901807427, -1.1633182632185708, -0.261549901914151, -1.855510767468883, -0.12245837196266503, -0.041080160924985655, -0.585409894265932, -0.4138566348289641, -0.6980329178942006, -1.0029216664042124, 0.10979946351080472, -1.6542257294131706, 1.393533502384212, 0.5174318732191945, 0.30147088153612134, 0.13176508644926532, -0.21802556521053773, -0.55329143084434, 0.2739291983626038, -0.6883020380352294, 0.6825537252923997, -1.5046508987238285, -0.5828333121318955, -1.1884290907589348, 0.1665509776472768, 1.3971140199197725, -1.3673567412727532, 3.0130147873449924, 0.7896539284272303, -1.055832543621147, 0.16658265730062774, 0.5232158049212052, 0.28570121739370363, -0.5325889850018535, 1.2918469178499534, 1.9819733294664026, -0.8093143209894869, 1.469595195954295, -1.2932943712519451, -2.1208284016640415, -0.4050898165492931, -1.1517011911443218, 0.8998956145443444, -0.23384644657433187, 0.526560658434697, 1.1222026129349756, 0.2160342440751586, 0.6797496626133915, -0.5331175042591417, 0.6637291624241468, -1.0147033164625645, -0.5049005083720637, 2.0659370602844436, -1.5900216896103532, -1.5339789892006166, -0.3200566858112642, 1.2830977533887504, 0.04654283897838462, 1.7838815763897529, 0.3904401499994594, -0.4111612807908421, 1.1847627666014435, -0.3955642857036182, 0.3675601425931492, 0.088662611923031, 0.46299757634197497, -2.2893235368562155, -2.268927460602336, 1.283516393286584, 0.20920007589000394, 2.4411204448502586, 1.1389069409067243, -1.1898031767179975, -0.43341406963651063, 1.7741298995608883, -0.016709317081657786, 0.11517899718492178, -1.5511855060356194, -1.3117417253404795, 0.13351391911792548, 1.1637653113813886, -0.27570074398670863, -1.5697680634730649, -1.954956462100421, 0.5552656916393576, 0.2373994429321212, -1.9303747103380289, -0.1921132978172397, 0.6250698172881495, -0.5949372282094622, -0.7826608913130164, 1.4562229269964548, -0.5416543116490529, 0.6936768940278385, 0.6261775893704643, -0.5859171652539004, 0.8555032381807751, -1.3676477362552337, 4.238533804853162, 2.4545185017647904, -0.913404759221193, 0.4250981319720471, -0.9763799065871701, 0.7808586039540816, -1.0328656450097617, -0.7721604644533069, -0.3530813727528884, -1.5411637128692925, 0.6539840707892913, 0.008229110336607592, 0.7966890453416182, 0.7037436956153061, 0.6614113279704881, -0.202848267721112, -0.29922308805427594, -0.5522097500427048, 0.09875065962242098, 0.7083328933399845, 1.7362802880024957, -0.2266535118741716, 0.5299005404626365, 0.6719364752934611, -1.8615906591576734, -0.09068813508526216, -0.1888891414579059, 1.3423077781666952, -0.6924470819765697, 1.1041424493388294, 0.4134851965057971, -0.4735791706069265, -0.7356651547484112, -1.575469178834194, 0.2059058482018911, -1.317543434131728, 2.347983690185328, -0.9350302948592141, 1.0039027596124084, 0.30969112449845376, 0.2541035100649089, 0.4211688015877788, 1.0647819562744412, 1.2886070484626828, 1.4453593413552184, -0.026423761925036916, -0.10046863824315762, 0.9375145304857443, -0.8794152043439424, 0.6161524124555712, 2.1765363841706007, -0.17519057418498793, 0.40239774219958097, -0.5314020562312248, -0.028260581879397745, 0.5266158478069836, -0.8130604924415793, -0.1620471073410965, 1.368895928096441, 0.2544222901453687, 0.0682140981898076, -0.08305873685961358, 1.1551649925205691, 0.20488815881813946, 0.9788412565833704, 0.6730413277634831, -0.10343628631794778, -0.011056773466636922, -0.26893242071811874, -0.22234819963659333, -2.063667484853198, -0.9528556130697672, -2.298918544448265, 1.4641851715761252, -0.6443216828282126, -0.7448597363782805, -0.5637254977251447, 0.026036289664867818, 1.7947458799857385, 0.47823466572724166, -0.6009031631006543, 1.5622161381793802, -0.012361922782423504, 1.1320815868058798, 0.2666111797781486, 1.0800481352272358, -1.3534368975569377, -0.12565159569358056, 0.8269760280151415, 0.4101805250340873, 0.5459250834776258, -0.578841318268924, -0.7708632540651004, -0.004711348442621566, 0.9139140784227678, -0.5887863731031122, 0.5255711160933076, 0.6899347371240381, 1.8406881042526044, -0.1494953868420972, -1.487372075437836, 0.04531226841225139, -0.8785887917514404, 0.6773321050874577, -0.0983506278141217, 0.5597628029545394, 0.9487620637619515, -2.0252012328413445, -0.3325641975286207, -1.1258330017788327, 0.023802932989263906, 0.42532764883918267, -0.1719694477750812, 1.1366386876717014, -0.06950662371831764, -0.5610077364219385, 0.6924775343736279, -0.08202929488370111, 0.03632839803067284, 0.2035677562126695, 0.48902609842042033, 1.0804149661369027, -0.7425106537204975, -0.5702977393123885, -1.3826240552189546, -0.5228635824639636, 2.541990031610674, -0.3358484399232096, 0.2708627260856431, 0.3577767439219406, 1.0481739531875494, 0.41502512979161693, 1.945039667472124, -1.333971998047096, -1.6319888693166744, 1.8081668907285702, -1.126545357015281, 1.017481115516176, -0.8746343950821853, 1.613464623094451, -0.987275067228173, -0.7782780233402289, 0.9358137937887636, 1.2685709811916313, -0.9922941446951046, 0.6495420807278994, -0.5015976512021791, -1.4515930568861974, -0.3017145427194569, 0.22396206990737433, 0.2449168875921067, 2.4353212694888504, 0.17708064085180888, 1.6379030780705819, 1.3277860775740942, 1.9763199313325732, -0.7129095818443579, -1.2469376388413769, -0.6242116235182271, -0.48041188552500946, -0.14268548581723478, -1.6604837693733687, -0.03806802185256857, 0.6963957195724964, 1.0623750746697818, 0.6233441558858677, 0.36657697739573364, -2.295074935487194, 1.0845561474708743, 0.4905268784109729, 0.9510955040687479, -0.5026253874469225, 0.5855406556971665, -0.4674907407543193, -0.5608509773657036, -0.054561000082436986, -0.13488620479039842, -1.6100667806518532, -0.3709803597469035, 0.29582203102054655, 0.8410085106517383, -0.6645326878187746, 1.1367845966619665, -1.3201243250510812, 0.13674546078719402, 0.9775512964502551, -0.6593867653205457, -0.16315112660697673, -0.6429666213286755, 0.5269463017070531, 0.13689944560905168, 0.2704736580667669, 1.0956057892301136, 2.0377599847068084, 1.1896914387079371, -1.1056334740369136, -0.061419064162327903, 0.6558988396743295, 1.1616563231258492, 0.05233437675572931, -0.43279599457514883, -0.6310196056008639, -0.07017445588897313, 0.21859133324465385, 1.7464304327601714, -0.38374464463022673, -0.4116300533373271, -0.9012559637626759, -0.29838378562277373, 0.1776181377502974, 0.5337179529206251, -1.6927309440114802, 0.19627841167268098, -1.3375053577369045, 0.34292489957433187, 1.7252380623451755, 0.3893308049876548, -1.6138835583138924, 0.24320533391068808, -1.503402740971457, -0.9820815913055403, 0.02826537327258336, -0.8677808012629867, -0.15732458310810252, 1.6448055242437023, 0.3882793537178024, -0.4745596075074129, 0.1657838803136746, -2.6918015152661914, 0.7632486195032542, 0.6973513947209198, 0.4101471209696532, -2.2799074841609177, 1.284770153684539, 0.03995086580146711, -0.2991581182473426, -0.08304172354784842, 0.28042933971050626, -1.0923071947444258, 0.9164084413681113, -0.6812760370027394, 1.5480579290916134, 1.4837613730950547, 0.023182419970626405, -0.2668022486973583, -0.1188765567232481, -0.22450605274030175, -0.01068777580695019, -0.5681288373513323, -0.798016193089919, 1.112093456749927, 1.4289069908566108, -0.8325323358283204, 0.6527204397669472, 0.45576965736433434, -0.05177234665505003, 1.1825820243015825, 0.5633724078799881, -0.2598338582029702, 1.2260636343236992, -0.06502314120499497, 1.3554177601202826, 0.015378075446720483, 1.771795744777381, 0.19716116753361734, -0.9289545353666014, -0.01120548540552129, -1.6568561810835647, -0.9711632993719995, 0.2888457566302567, -0.33812030790826947, -0.6944997091883152, -0.08753361436324024, -1.0825962267681306, -0.4698117598324523, -0.31391779051735585, 0.5155485258897468, -1.3906426323765313, -0.08794713693189429, 1.323299166667676, -0.1281180737897692, -0.7313549630276092, 0.30727046798040325, 1.1752251844693715, -0.7441249207177553, 1.6052690350217986, 0.18649308224250258, 0.17892852927651728, -0.0995691575256924, 0.4348534499771249, 1.484991734895783, -0.5720258392859724, -0.08690696328546704, 0.7713939696120472, 1.1722789472312292, 1.9496467641354467, 0.22942775691626238, 0.7124499254350729, -0.40961823346856296, -1.5841557574786587, -0.5783735657948544, 1.7072885072301731, -0.9760682458530513, -0.7133260677207641, -0.17406636751269225, 1.5115376392568705, 0.3444982802650086, 0.5618620561647593, 0.7768151831330067, -1.8495980414473379, -0.022772431183660354, -0.2688258642531703, -0.2316501235768239, -0.4349049986098626, 0.09524082099485014, 0.18287945969711975, 0.9756566821517488, 1.2112951490716906, -0.8350588047652798, -0.7894781658614808, -0.8425885522378407, 1.0078366331542066, -2.170943513352494, -0.07697039348999336, 0.624710432231761, -1.5714538060400307, 0.25497055299290833, 0.9193656642088831, 1.0914383490187152, -0.2746559451582547, -0.24795001040712014, -0.1821963308600328, -0.6151863420266909, -0.07974289047525698, 0.864835252508244, -0.11852133979339911, -0.5867385141837459, 0.7425778869302543, 0.7772435416319093, 0.7418518577569089, 0.18477538422252776, -0.862469199675159, -0.7201960090993764, 0.7441788487719844, -0.44740979333359115, -2.011406066578824, -2.0397719472330946, 1.6317617740438857, 0.501298361621573, 0.46480805036189093, -0.6492071444203512, -0.9962577891956758, -1.176143672100762, -1.460358133281756, 0.91939184535992, -2.6115193413417344, -0.11701441464426601, 0.36330899947821516, -0.7619851206952822, -0.9791836397007687, 0.06605184536205168, 0.9852736131214399, 0.18316974821162169, -0.16385983370688456, 1.769889718870536, -0.7568083172666948, -0.07093554823462433, 0.34915804932546474, 0.04394955212420144, -0.3412151969411125, -0.037998909530440356, -0.7920940693112494, 0.23924283654785033, -0.7218726802077204, 0.756794397487571, 1.129998141517764, 0.06199671202439378, 1.5818825635871332, -2.0927309142911965, -1.009720388820037, -1.161041154747722, -0.8447671692136892, -1.0157929981350513, 0.7904271516718387, 0.7254384385818724, -0.603295486359894, 0.25924412778603606, -0.04640660866056171, -1.6000423263326133, 1.8143254523998487, -0.08862538404196012, 0.5332621638876169, 1.1045997215315637, -0.41584450160976266, 0.9441745490519653, 0.24798697093505728, 0.007684578291883661, 0.10198392659226542, 1.6199201784700468, -0.32528736620138143, -0.5826981266958557, -0.36325256797247957, 1.1471577477638135, 0.6178987140946427, 0.36972297251343633, 0.5437284650592201, -1.4459624565283546, 0.05792287061159475, 0.41648235426252744, -0.3752827187450667, 1.6652887251405053, -0.42564437336001554, 0.9761973006448895, -0.7275241033025399, 0.6934458083833381, -0.29112188437100084, 1.3282243166189927, -0.9536927875603478, -0.719434212611784, 0.6748136465043926, -0.03597354593983007, 1.94009058703115, 0.09882655123973512, 2.1053876175385304, 1.4185342675315131, 0.1206620765251783, 0.14903745714080963, 0.10442318495551679, -0.17795681161591564, 1.2580662909953826, -0.309432614193383, -1.0905944849250224, 0.4769931537784153, 0.42744787996997274, 0.015299040637353436, -0.35211140544489866, 0.2588719668529644, 0.39806242670614195, 0.0982957694556772, -0.3643039151707563, -1.661352851241187, -0.7050125329026734, -0.943960952206926, -1.4473953121799084, 0.6926023466644213, 0.284659435800313, 1.6730413075943111, 0.6423676343810131, 0.3968310937206259, -0.8342984203305135, -0.06635863092332817, 0.48133940282415283, -0.34365908316039695, 0.8195486752084361, -0.2781857864218842, -1.0136587780355568, -0.4538474341770635, -1.1337344789342048, -0.5150244531135606, 0.958566232938252, -0.16105129432877321, 0.38436738614303156, -0.5172439276028532, 0.23093709347387772, -0.30272270953081704, -0.21962749662435752, 0.9566459591875526, -0.788349928603636, -0.44952615913370747, 0.525332205545319, -0.5812548660484521, 1.2956320514491553, -1.752164482642109, -0.6047121066028011, -0.15329007945272555, -0.04110361189064399, 0.2075100652227872, -0.04955642332135181, -1.2847570979710345, 0.4806820630644186, 0.8112350665109486, 0.577438605043487, -0.5506815219471743, 0.7858766373478445, -1.101050840231404, -2.2244251571050273, 0.09434075969634925, 0.19198836106624168, 1.0670984516256519, -0.7989553140491875, -0.20794218769948203, 1.5326125420890269, 0.020895643272767377, 1.429434237396836, -0.09226519337744446, 0.2530160966559398, -1.2052909073582596, 0.18629835668130743, -1.1412717735009497, 1.2293983703310951, 0.20963090073800605, 0.2771037033747804, 1.1176243523307434, -1.7749390137644867, -0.6160566595276167, 0.37431077650255806, -0.628817850166509, -1.5457989014436102, 1.0413567521072367, -0.6687052895376355, 0.08823501338384936, -0.8504561089335623, 2.674041129993747, -1.5899356389768722, -0.12358228035838018, 0.4957660906211637, 0.31851942141963985, -2.077120767009975, -0.5844799194788266, 1.9510391355162264, -0.347560684365186, 1.3086755801775074, 0.34475766053720236, -0.4033872470813162, 1.1582973308383313, -1.0684599760113471, 0.529968393960725, -1.6526921510620116, 0.9524384542696674, -0.22909069471152455, 0.6652418786019982, 0.0030589233668147898, 0.11365610389048802, -0.2480098634476716, -1.739708416005498, 0.13128969246670458, -0.8124775515041727, 0.09211054412374194, -0.5372875032406812, -0.0032089521665293573, -0.8316736236057737, 1.5059153046848375, 0.5055489101297763, -0.9926899954404349, 0.06717218616117565, 0.7564225434228204, -1.1172446398752929, -0.0971278427942958, 0.1783634876571702, -0.43831740139818265, -0.9897246258630265, 0.42789947696918956, -1.1881782474146696, -2.2595621851300622, 0.6418731773450146, 0.2534262764606806, 0.4316556467189196, -0.1404488018967209, 0.8263074484867586, -0.14552757065621125, 0.0789242186302759, 0.8209702417714765, -0.25903816299191046, 0.6767653743426741, 1.6145117461589933, 0.6926264703024766, -0.32214772217430293, 0.9292349516554164, -1.0508805938355477, -2.749764645898245, 0.013188601563584493, 0.33055296889149677, -1.1958215283600067, 0.1405450269372766, -0.508425415799171, 1.4570136536517577, -1.0251431195020073, 1.0969073653806085, 0.2995765466625078, -0.7079203015696985, 0.1288388731533383, 0.7296772632654821, -0.5084827629757859, -0.9959874907849151, 0.7608364139386558, -1.1970996777698375, 1.9127937929371042, 0.38743478707694207, 0.21795474706617954, -0.29993899538603785, -1.4785086866034736, -1.5956467908439216, -1.2082094773229581, 0.03773293580577447, 0.790311941516555, 0.5111896121176778, -1.1940258469292004, 1.2227006637979814, 0.836882842830787, -1.4311686461788606, -1.2744460342013122, 1.4644637457684015, 0.9728193611804964, 0.555860074890682, -0.4409659816734968, -1.268835784551248, 1.830337701005201, 0.5659326920677746, -0.5949593269450844, -0.48933591057504616, -0.5902894454298842, 0.8313257587194035, -0.014541865211528828, 0.42819120074867917, 0.12344083343107326, -1.5259370836437376, -0.4422937354316872, 0.2663102136658507, 0.7711270876630171, -0.6631414912664546, 0.7010024223490354, 2.074527616332793, 0.1267033512168494, 0.5771332153363341, -0.1669943788998164, 0.37570932219774306, -0.009486467375681047, 0.6339720925542973, -1.100679804820569, 0.208089727845949, -0.9425617416684303, -1.4440593374039066, -0.4882367066101957, 0.7163657255326146, -1.0357588950466872, -3.0737220356886374, 0.2470950795522819, 0.2864288554119523, 0.1483978221958065, 2.1154989451643167, -0.4001965762118845, -0.6462203956080385, 1.1265359562700552, -1.2596675882237476, -1.0043123290637297, -1.2085727111478823, 1.4452610642730932, -1.5066630796353353, -0.26195290731609777, -0.14271399927968614, -0.6530276111308737, 0.31402361422899266, -0.615575261840529, -1.5382467581744872, -1.146638529472436, -1.2566936090246918, -0.11659270837613013, 0.35542964402643873, 0.02526277564568483, -1.7743572584114875, -0.7085383632824588, -0.63517949386522, 0.7100322417458258, 0.37725139473966673, -0.5759538564824571, 0.08180511402950946, 0.41407533287471754, -0.24200104577387313, -0.4385693241008144, 1.6526863394676001, -0.11474769466518762, -0.7778772946580198, -0.28839425476706665, -1.9107601252457116, 1.2251863883694925, -0.6102167805929645, 1.314166180001923, 0.33549111757526723, 0.1642165334041994, -0.2711391207536865, -0.7227241249586495, -0.20242746834599726, 0.511635243911443, 0.7803547739974653, -0.327423000785996, 0.3502846670812043, -0.6690281009028096, -1.603564129628161, 0.651294169982652, 1.5346475986331407, 0.6076831921328979, 0.09553225219459871, -0.7254748961580175, 0.5000694612537876, 0.41285641663749495, -0.6307563086891868, 0.10304359933774031, 0.6906693939179498, -0.6117088277209861, -0.37359085726781716, 0.6415372041475905, 0.5667199392606257, -0.471612466163586, -0.28409429557130345, -1.1000185275940002, 1.2078426552444212, 1.820822882585083, -0.049716516450738324, 0.48541676042055915, -0.24833733761952417, 1.9706194085315605, -1.9357972478544503, 1.2746428725319756, 0.8787450667483632, -0.5743399181816461, 1.146477625622449, 0.82904607165605, -0.6240307749078965, -0.5201093385684066, 1.7563590799610034, 0.9291759054010359, 0.03949431623274768, 0.09878351123218292, 0.4678794507416003, -0.21611204185496907, -1.9415038866503043, 2.2711411739440632, -0.7573422816803704, 0.4462925903632097, -0.7789087537529676, -0.5503182367952988, 0.5971424930574555, -0.07203878009168195, -0.5217028851935946, 1.082108216219426, 0.41790242250612963, -0.0679066357661384, -1.263509598957737, 0.8004808096290376, -0.2541222406082443, -0.2133433497515408, -0.26792364723437295, 0.20112906676382966, -0.32435552792181394, 0.23282205608740192, 2.2221675354748855, -1.4830106452698057, 0.9891247273398209, 0.2603986195227453, 0.4910300720533456, -1.357238648432873, -1.2514963996484836, -0.30125845912815724, 0.1928097450048526, 1.4448018223442105, 0.5625834185014028, -1.1979257187589254, -0.07857776228971138, 0.06045821558284647, 0.7133596907037718, -0.8010426610921747, 2.0440257915732163, -0.5915625781476785, 0.4614571279264127, -0.8323915586162163, -0.12281522077241769, -1.891751987785829, -1.436820011323204, -0.3375407922826853, -0.4583639388670451, -0.09352467965350812, -0.09376078246251955, -1.104789843452201, -1.9113071146131402, -0.3080107984257694, 0.6890879947469407, 1.6298325324990017, 1.7332383276272256, -0.6570721931348752, 0.5011093119580866, 1.4256340832824121, -1.6409542816000537, 0.3031292239641022, 2.064237216045931, -0.051705902095611905, -0.7832897005596622, -0.7454241686325258, 0.7295020332844333, 1.6375808311567626, -1.2299275543889183, -0.5600159935032863, 0.36276227989135124, -0.0841421034314566, -0.34511214955582953, 0.1013965878283084, -0.18098461747365058, 0.9191251794719164, 0.06765779742714738, -0.24919806799835556, -1.7584641099826481, -0.2408943706631287, 1.1586506587846426, -0.6941027599159496, -0.40284176463802435, -0.07218934233754541, -0.6866794606674014, -1.136814985867382, -1.0286542111302972, -1.0753215203338025, -0.523524292626774, -1.1218134808250722, -0.874089313385567, 0.09331272041243248, 0.9386738047553144, 0.09076349142987619, -1.2160470369625689, 0.27900325888755534, -1.3482125481314258, -2.0470437247953943, -0.40859660863279956, 0.2828811548709021, 2.4800984064132803, 0.19294989666278736, 0.28212861056292143, -1.610912083835489, -0.5315801864225906, 1.706608368850939, -1.8501729731293364, -0.630002988972623, 1.4757143328892797, -1.6396479208187233, -1.8371716642350544, -1.0742314481301545, 1.0754611432095824, -0.5378007226773498, -0.3178784375535398, 0.5735335996600629, 0.4868994275345122, -0.21549627729467807, -0.16640172916066487, 0.908080649370133, 2.173437328284729, 0.4190344084566232, -0.9569146506578511, 0.45263575951706014, 1.778059009562198, 1.4488553145210796, 0.07467679612778716, -1.3459068501008828, 1.0900502612985628, 1.8272758673855272, -0.23894381261705294, 0.12043314967623445, -0.5773200285051094, 0.5216921180645022, -1.5092635778866117, 0.18102168205190566, 0.8965052639560143, 0.9201255573471795, -1.2903912922821366, 0.9873211691804024, 1.172724388329733, 0.20376377055663986, 2.138854170658406, -0.9316113182700534, -1.2475280594655904, 0.417911924644604, 0.3104385253889033, 0.8962967028920321, -0.5778036698087538, 1.0180641994003492, 1.978139527067393, 0.37723162368545265, -0.3153731448300482, -0.28043983006620493, 1.2268346250368896, -0.17227523540812437, 0.2580612644636763, 0.7839164309552376, -1.6857109421253955, -1.3003167935540005, 1.933409068497346, -0.720369637396077, 0.5104055429987321, -1.08388129713197, 0.23369005993420508, -0.8857461821887489, 0.21884110679487903, 0.3399839311138383, 2.2927612097100596, -0.1302670929713838, -0.2227227695346543, -1.4346253879586792, -0.8344086694038684, -0.7002516953857244, 0.43509420272323845, 0.8609631356011878, -0.43270705045183616, -0.24001073577599197, 0.28609176501217787, 0.7031717689478829, 0.23204270200931182, 2.1505272334979897, 0.2861763181933207, -0.7584547841123832, 0.5168757252968688, -1.1092933224722437, 0.28264197275089215, -0.7359352757039123, 0.7696916736749783, 1.1693904145377578, -0.03894762164617204, 0.6641135169499479, -0.7147964181583462, -0.3596311141562558, -1.8435871360153697, -1.0008815336080084, -0.8745896149619665, -1.7854772192044157, 1.4101601051693955, 0.3989081511969654, -0.46138352582140285, -2.070033977081843, -0.18644561980439622, 1.2400855648899223, -1.164136732605302, -0.7927090251554685, 0.5630168884076489, 1.1671379510254194, 2.231868835700232, 0.4565350508345933, -0.3389202312449233, -1.5275179745183336, 0.3230936836149417, 0.6082923125809354, -1.385778896370543, 0.4933263314478739, -1.9751095768562033, -0.2065779574546836, -0.19565497391904002, 0.19507228882058708, 1.1491676003071556, 0.47753659551701444, 1.267566892973097, 1.2699972267061581, -0.14783471801597317, 1.3947086641636515, 0.13849276493060986, 1.543713937406089, 0.8793567120723491, -0.19166319681661234, -2.178011595451856, -0.047935435051166216, 1.0519017754831546, -1.1503195176998693, 0.9590735535318957, -0.4101942648351055, -0.9291595233845755, 0.04827969552760872, -0.006591472103865717, -0.8287084685787525, 0.510991782645471, 1.1993354234468527, -0.6249200800653011, 0.06906024810652203, -0.2810131831119284, 1.7132565332176783, 0.3715878450725023, 0.4232188686511501, -0.23751681917622205, -0.284138784599415, -0.9181240192735334, 1.7200351673814782, -0.5646085076036653, 0.9511857419563984, -1.2703881921689144, 1.044280055990386, 0.03786689772227966, 1.4182728427165774, 0.8337325218228854, -1.0587247347181652, -0.5031113248889103, 0.8873021806079839, -1.6837264548806383, -0.963353987660909, -0.3925379775035674, 0.030351645171583227, -0.1480784901933993, 0.5971587614103617, -0.5966536682782796, -0.32585054539846936, -1.2881189235714545, 1.4626168790196996, 0.4876451579697916, -2.5512587798294053, -0.22746942805830464, 0.22714076786745147, -1.2367287849167479, -1.4958341332392378, 0.8404569974160938, -0.5250803172042454, 1.1030214409483563, -0.9430810970721388, 0.8419017021480036, 0.10747778668821155, -0.3872490592960608, -0.5972525446631549, 0.9643730616194118, -1.9150859939615104, -0.16132999883201363, 2.247013458758037, 0.2793924489497806, 0.22445447609820876, -0.5935321078971101, -1.021619853538392, -0.5669336330928147, 1.51072676166332, -0.4577459477554841, 0.2856756020469671, 1.3003683403048245, 1.6681883000570241, 0.29140173625397836, 1.4448227513845624, -0.49337735263206095, 0.3063926208053877, -0.8839906748898476, -0.8508338033152001, 0.32884664967404276, 0.8225807552240499, 0.28615338220135916, -0.6459677898912536, 0.456084692916367, 1.1816323117108978, 0.005750129390048088, -0.23080308943910496, 1.2329424071409298, -3.103298270774514, 1.2457064642869893, -1.438732143788353, -0.5069669088042135, 1.9410370006144513, -0.680135288988108, -0.684441394790031, -0.9299498749943689, -1.0023257557431406, -0.20085573890294844, 2.1892107786913413, 1.0539082768590986, -0.12946159481571648, -0.9603859816501762, -0.6759566438229674, 0.6063321523892387, -2.04080451980182, 0.3448387208567922, 0.6188680405937481, -2.53483233750232, 0.4718381152261103, 0.5204602861759604, -0.37294274011868744, -1.0608122326322948, 0.876995543974861, 1.6208103493973607, -0.10501804755065293, -1.144605534391477, -0.11545809967020526, -1.5254381527091445, 0.704971452166678, -1.1385423962074352, -1.0702260829994228, -0.8042670395297246, -1.9958053298936345, 0.06149218869846654, 0.0034778293679331336, -1.6309611881902848, -1.579450043003391, -0.812854397163873, -1.3440391096930395, -0.7992158635130223, -0.7307305666236779, 0.563033821782763, 0.5929740847991084, -0.4072124328227139, -0.9597031772508735, 0.6326426393413165, -1.26743591058185, 0.012961789096372823, 1.3690236683244486, 0.5626351995527971, 0.3930969343026333, 0.3804639938085295, -0.7055289460485151, -1.1137071825718237, -0.32401279261679405, -0.25360651639701537, -0.3629288727538312, 0.40309857005433064, 1.6124254520554622, 1.145346015655076, 0.18482864793147852, 1.0146132489781052, 0.5762713361888263, -0.4302922143454036, -0.7781673008888688, 0.3165266777932903, -1.3210033528584464, 0.47419403592709836, -0.02875008939599337, 0.14714621419460175, 1.4797797158907586, 0.6830428568029596, -1.051712101999051, 1.194440018218743, -1.1642432883696971, 1.04395640790416, -0.3903019504585278, -0.9469832104094259, -0.15920476878484313, 1.2958603176641055, 1.2195200287127348, -0.18102374320360753, -1.1645019636692635, 0.31512163398607973, 0.4112140952226413, 0.799068132489134, -0.194553356476797, -0.24713828227948162, 1.1162744704218956, -0.5100587555940508, -1.7306779449877614, -1.3161139044492312, 0.6341932724742192, -0.7347849903121613, 0.9645835907250738, 1.5026031951659682, -1.4760744795962333, -0.06731259930616487, 0.7042872721353796, -0.5335137254930029, 0.0716602316769604, 0.6043539708627061, 0.11692324897196178, -0.05768277951806856, 1.1162713764449659, 1.8796989655172829, 0.43088724829364505, 2.38688392018114, 0.29310955804355704, 0.7462035664728303, -1.4923332297842067, -1.2280466714373701, 1.0734872965346725, 0.5262032697307816, 0.7693518738655505, -0.28211783832137927, -0.0290036682453748, -2.931607725174539, -0.61001449056912, -0.7025484586715276, 0.7759827155138221, -0.19166960568471056, 0.9694902932312826, -1.04530914742025, 0.9727250463770896, 0.06310226379325519, 1.0818373134406507, 1.1047859736064884, -0.9784634968885791, -0.9146592081968249, 0.15142025533299056, 0.23328387697346153, 1.482068026300734, 1.4017194403233817, 0.5839385941999119, -3.499091269336771, 0.6898991159514024, -0.76367161011779, 0.271889761583164, -0.2648955270675521, -0.05132512877225392, -1.1445243383154795, -0.9341941596618715, -0.2758301417114395, -0.12386224872925095, 0.3429318698923175, -0.20380183235337243, -1.442620516648269, -0.08857891832728218, -0.5685844707827721, 0.31653125437081814, -0.7630932541957661, 1.0549727437086984, -0.23903901917404402, 0.13881369002402355, -0.277058267581059, -1.1828348650720584, 0.41122688905564325, -0.11093465300197233, 0.05700186250342231, -0.8530057143017865, -1.1330141754733023, -0.788433518694048, 0.0410432386990952, -0.2526837758051426, -0.7365204396871289, 2.374275605228078, 0.24647701310468878, 0.6189709904599635, -0.3036782549769593, -0.6671553020762782, 0.9568820989023366, -1.079178482400065, 0.29500583173695416, -0.9289020636769935, 0.7791599475788574, -0.1983372320556875, -0.49097598732772324, -1.2327667862306246, -0.463786196952311, -0.7468162049628737, 1.8137576226948215, 0.4907226689424396, 0.3853672976926061, 1.405986757744362, 0.006148904928010884, 0.5727386445488017, 0.09397490448508446, -0.35506525618267476, 1.7351653184984497, -0.39253263749716394, 0.12196757373920339, 0.38004382713166907, 0.7006111800175882, 0.4987705634227367, -0.7645303868257485, -0.5146892069655717, -0.5835515156473441, -1.1547773890712476, -0.05898296492235115}; + + +static double gemm_checksum[64] = {-45.1525872455864, -53.56382313501859, 75.37190918194668, 81.51135315789973, -15.61415231827229, -60.60307561986312, 47.96036541651724, 65.73237574275608, -4.4727051387073935, -33.991042035520486, -26.416772446199882, 1.7860331769884112, 63.625439870165444, 11.62205632780551, -15.064831482590407, -47.33578990077392, 31.789427261811298, 45.60325302655279, 46.39784351481784, -41.63175282633895, -37.58415419207174, 52.811751728757756, 17.491718577483027, 95.99796882635259, -31.290609142980582, 56.18913870959351, -9.784406747318776, -47.798468293167936, -68.85425504150908, 14.518540879027748, 12.444849316598145, 27.044449299453333, 34.41753472048874, 37.24202029503455, 0.0015372059941842764, 56.49727200521621, 42.08187683985865, -60.80036174635206, -41.51354371054238, 25.39617622130028, 64.16199934240205, -49.723260643988866, -67.73199521937849, 14.061632619059395, -46.723037598164815, -1.4946901268404673, -19.516162199239137, 13.487866069963179, -23.19623129877386, 56.32942826668456, 67.64491765822369, 25.427295331888367, -3.9993280938311173, 70.5746407371274, 68.98981144920677, 11.672168486094769, 10.78240530670366, 31.25611590676771, 34.98838254510045, -129.95599475048968, 14.933419865189286, 35.74263691521163, 85.87277962177788, 93.68226272318962}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/layer.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/layer.h new file mode 100644 index 00000000..ba49ef72 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/data/layer.h @@ -0,0 +1,134 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +typedef enum { FP64 = 8, FP32 = 4, FP16 = 2, FP8 = 1 } precision_t; + +/** + * @struct gemm_layer_struct + * @brief This structure contains all parameters necessary for GEMM. + * @var gemm_layer_struct::M + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::M_p + * M divided by number of compute cores + * @var gemm_layer_struct::N + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::K + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::TA + * Transpose matrix A + * @var gemm_layer_struct::TB + * Transpose matrix B + * @var gemm_layer_struct::TILE_M + * Tile factor across M dimension + * @var gemm_layer_struct::TILE_N + * Tile factor across N dimension + * @var gemm_layer_struct::TILE_K + * Tile factor across K dimension + * @var gemm_layer_struct::A + * Pointer to matrix A + * @var gemm_layer_struct::B + * Pointer to matrix B + * @var gemm_layer_struct::C + * Pointer to matrix C + * @var gemm_layer_struct::ALPHA + * constant factor: A * B + ALPHA * C + * @var gemm_layer_struct::dtype + * Precision of GEMM + * @var gemm_layer_struct::expand + * Use expanding DOTP instructions + */ +typedef struct gemm_layer_struct { + uint32_t M; + uint32_t M_p; + uint32_t N; + uint32_t K; + + uint32_t TA; + uint32_t TB; + + uint32_t TILE_M; + uint32_t TILE_N; + uint32_t TILE_K; + + double *A; + double *B; + double *C; + + uint32_t ALPHA; + + precision_t dtype; + uint32_t expand; +} gemm_layer; + +/** + * @struct conv_layer_struct + * @brief This structure contains all parameters necessary for Convolutional + * layers + * @var conv_layer_struct::CO + * Number of output channels + * @var conv_layer_struct::CI + * Number of input channels + * @var conv_layer_struct::IH + * Height of input feature map + * @var conv_layer_struct::IW + * Width of input feature map + * @var conv_layer_struct::OH + * Height of output feature map + * @var conv_layer_struct::OW + * Width of output feature map + * @var conv_layer_struct::FH + * Height of filter + * @var conv_layer_struct::FW + * Width of filter + * @var conv_layer_struct::pad + * Padding on all sides + * @var conv_layer_struct::ifmap + * Pointer to input feature map + * @var conv_layer_struct::weights + * Pointer to weights + * @var conv_layer_struct::ofmap + * Pointer to output feature map + * @var conv_layer_struct::TILE_CI + * Tiling factor of input channel + * @var conv_layer_struct::cluster2cluster + * Flag for enabling cluster 2 cluster communication + * @var conv_layer_struct::im2col + * Flag for enabling im2col + GEMM + * @var conv_layer_struct::gamma + * Pointer to gamma for BatchNorm + * @var conv_layer_struct::beta + * Pointer to beta for BatchNorm + * @var gemm_layer_struct::dtype + * Precision of Convolution layer + */ +typedef struct conv_layer_struct { + // CONV2D + uint32_t CO; + uint32_t CI; + uint32_t IH; + uint32_t IW; + uint32_t OH; + uint32_t OW; + uint32_t FH; + uint32_t FW; + uint32_t pad; + + double *ifmap; + double *weights; + double *ofmap; + + uint32_t TILE_CI; + uint32_t cluster2cluster; + uint32_t im2col; + + // BATCHNORM + double *gamma; + double *beta; + + precision_t dtype; +} conv_layer; diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/kernel/mxfmatmul.c b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/kernel/mxfmatmul.c new file mode 100644 index 00000000..471bbc50 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/kernel/mxfmatmul.c @@ -0,0 +1,429 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#include "mxfmatmul.h" + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 2*kernel_n, respectively +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 1)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v24, 0"); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mxfmacc.vv v24, v0, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mxfmacc.vv v24, v12, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v24, v12, v8"); + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; // Question: If give the abs value 4 to here, then the + // performance is better. Why? + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 4*kernel_n, respectively +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 2)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v28, 0"); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v8"); + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 8*kernel_n, respectively +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 3)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v18, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v22, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v26, 0"); + asm volatile("vmv.v.i v28, 0"); + asm volatile("vmv.v.i v30, 0"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v18, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v22, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v26, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v30, v12, v8"); + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v30, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/kernel/mxfmatmul.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/kernel/mxfmatmul.h new file mode 100644 index 00000000..a6b7979e --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/kernel/mxfmatmul.h @@ -0,0 +1,55 @@ +// Copyright 2021 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#ifndef MXMATMUL_H +#define MXMATMUL_H + +#include + +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +#endif diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/main.c b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/main.c new file mode 100644 index 00000000..1f66d90f --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/main.c @@ -0,0 +1,249 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include DATAHEADER +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 4 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 8 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +#define B2 1 + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + +#ifdef B2 + matmul_tiled_Bx2(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#else + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#endif + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/main.c~ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/main.c~ new file mode 100644 index 00000000..fe5d2e8c --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/main.c~ @@ -0,0 +1,249 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include DATAHEADER +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 8 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 4 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +//#define B2 1 + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + +#ifdef B2 + matmul_tiled_Bx2(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#else + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#endif + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/script/gen_data.py b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/script/gen_data.py new file mode 100644 index 00000000..feada63f --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/script/gen_data.py @@ -0,0 +1,592 @@ +#!/usr/bin/env python3 +# Copyright 2022 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Author: Tim Fischer + +import numpy as np +import torch +import torch.nn as nn +import argparse +import pathlib +import hjson +import struct + +np.random.seed(42) +torch.manual_seed(42) + +global verbose + + +def array_to_cstr(a, fmt=float): + out = '{' + if fmt == float: + if isinstance(a, np.ndarray): + a = a.flat + if isinstance(a, torch.Tensor): + a = a.numpy().flat + for el in a: + out += '{}, '.format(el) + else: + for sign, exp, mant in zip(a['sign'].numpy().flat, a['exponent'].numpy().flat, a['mantissa'].numpy().flat): + value = sign * 2**7 + exp * 2**2 + mant + out += "0x{:02x}, ".format(value) + out = out[:-2] + '}' + return out + + +def emit_header_file(layer_type: str, **kwargs): + + file_path = pathlib.Path(__file__).parent.parent / 'data' + emit_str = "// Copyright 2022 ETH Zurich and University of Bologna.\n" + \ + "// Licensed under the Apache License, Version 2.0, see LICENSE for details.\n" + \ + "// SPDX-License-Identifier: Apache-2.0\n\n" + + if layer_type == 'Conv2d': + file = file_path / 'data_conv2d.h' + emit_str += emit_conv2d_layer(**kwargs) + elif layer_type == 'GEMM': + file = file_path / ("data_" + str(kwargs["M"]) + "_" + str(kwargs["N"]) + "_" + str(kwargs["K"]) + ".h") + emit_str += emit_GEMM_layer(**kwargs) + elif layer_type == 'Print': + file = file_path / 'result_check.h' + emit_str += emit_Print_layer(**kwargs) + elif layer_type == 'BatchNorm': + file = file_path / 'data_batchnorm.h' + emit_str += emit_batchnorm_layer(**kwargs) + elif layer_type == 'MaxPool': + file = file_path / 'data_maxpool.h' + emit_str += emit_maxpool_layer(**kwargs) + elif layer_type == 'FusedConv': + file = file_path / 'data_fusedconv.h' + emit_str += emit_fusedconv(**kwargs) + with file.open('w') as f: + f.write(emit_str) + + +def emit_conv2d_layer(name='conv2d', **kwargs): + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + weights = kwargs['weights'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + _, fh, fw, _ = weights.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {fh},\n' + layer_str += f'\t.FW = {fw}\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_weights_dram[{co}][{ci}][{fh}][{fw}] = ' + array_to_cstr(weights) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_linear_layer(input, weights, ofmap): + + layer_str = '' + return layer_str + + +def emit_GEMM_layer(name='gemm', **kwargs): + mat_A = kwargs['A'] + mat_B = kwargs['B'] + mat_C = kwargs['C'] + result = kwargs['result'] + + m = kwargs['M'] + n = kwargs['N'] + k = kwargs['K'] + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'const gemm_layer {name}_l = {{\n' + layer_str += f'\t.M = {m},\n' + layer_str += f'\t.N = {n},\n' + layer_str += f'\t.K = {k},\n' + layer_str += f'\t.TA = {int(kwargs["ta"])},\n' + layer_str += f'\t.TB = {int(kwargs["tb"])},\n' + layer_str += f'\t.ALPHA = {kwargs["alpha"]},\n' + layer_str += f'\t.dtype = FP{kwargs["prec"]},\n' + layer_str += f'\t.expand = {kwargs["expand"]}\n' + layer_str += '};\n\n\n' + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str += f'{dtype} r[{m}] __attribute__((section(".l1")));\n\n' + + if dtype != 'char': + layer_str += f'static {dtype} {name}_A_dram [{m}*{k}] = ' + array_to_cstr(mat_A) + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}*{n}] = ' + array_to_cstr(mat_B) + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}*{n}] = ' + array_to_cstr(mat_C) + ';\n\n\n' + layer_str += f'static {dtype} {name}_checksum[{m}] = ' + array_to_cstr(torch.sum(result, dim=-1)) + ';\n\n\n' + else: + layer_str += f'static {dtype} {name}_A_dram [{m}][{k}] = ' + \ + array_to_cstr(kwargs['bits_A'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}][{n}] = ' + \ + array_to_cstr(kwargs['bits_B'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}][{n}] = ' + \ + array_to_cstr(kwargs['bits_C'], fmt='char') + ';\n\n\n' + + return layer_str + + +def emit_Print_layer(mat): + result_str = "// Results Print:\n" + for row in mat: + line = " ".join(str(struct.unpack('f', struct.pack('f', x))[0]) for x in row) + result_str += "// " + line + "\n" + return result_str + + +def emit_batchnorm_layer(name='batchnorm', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + beta = kwargs['beta'] + gamma = kwargs['gamma'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_beta_dram[{ci}] = ' + array_to_cstr(beta) + ';\n\n\n' + layer_str += f'static double {name}_gamma_dram[{ci}] = ' + array_to_cstr(gamma) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_maxpool_layer(name='maxpool', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + k = kwargs['kernel_size'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {k},\n' + layer_str += f'\t.FW = {k},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_fusedconv(name='fusedconv', **kwargs): + + ifmap = kwargs['ifmap'] + kernel = kwargs['kernel'] + bn_k = kwargs['bn_k'] + bn_l = kwargs['bn_l'] + ofmap = kwargs['ofmap'] + ofmap_before = kwargs['ofmap_before'] + ifmap_padded = kwargs['ifmap_padded'] + + padding = kwargs['padding'] + + if kwargs['depthwise']: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + fh, fw, co = kernel.shape + ci = co + ih_pad, iw_pad, _ = ifmap_padded.shape + elif kwargs['chw_layer']: + ci, ih, iw = ifmap.shape + oh, ow, co = ofmap.shape + co, ci, fh, fw = kernel.shape + _, ih_pad, iw_pad = ifmap_padded.shape + else: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + _, fh, fw, _ = kernel.shape + ih_pad, iw_pad, _ = ifmap_padded.shape + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str = '#include \n' + layer_str += '#include "conv2d.h"\n\n' + layer_str += 'kernel_fp32 k = {\n' + layer_str += f'\t.ch_in = {ci},\n' + layer_str += f'\t.ch_out = {co},\n' + layer_str += f'\t.dim_in_x = {iw},\n' + layer_str += f'\t.dim_in_y = {ih},\n' + layer_str += f'\t.dim_kernel_x = {fw},\n' + layer_str += f'\t.dim_kernel_y = {fh},\n' + layer_str += f'\t.dim_out_x = {ow},\n' + layer_str += f'\t.dim_out_y = {oh},\n' + layer_str += f'\t.padding_y_top = {padding["padding_y_top"]},\n' + layer_str += f'\t.padding_y_bottom = {padding["padding_y_bottom"]},\n' + layer_str += f'\t.padding_x_left = {padding["padding_x_left"]},\n' + layer_str += f'\t.padding_x_right = {padding["padding_x_right"]},\n' + layer_str += f'\t.stride_x = {kwargs["stride"]["stride_x"]},\n' + layer_str += f'\t.stride_y = {kwargs["stride"]["stride_y"]},\n' + layer_str += f'\t.flag_relu = {kwargs["flags"]["flag_relu"]},\n' + layer_str += f'\t.flag_batch_norm = {kwargs["flags"]["flag_batch_norm"]},\n' + layer_str += f'\t.flag_y_accumulate_start = {kwargs["flags"]["flag_y_accumulate_start"]},\n' + layer_str += f'\t.flag_y_accumulate_end = {kwargs["flags"]["flag_y_accumulate_end"]},\n' + layer_str += '};\n\n' + layer_str += f'uint32_t dw = {kwargs["depthwise"]};\n' + layer_str += f'uint32_t chw_layer = {kwargs["chw_layer"]};\n' + + layer_str += f'static {dtype} {name}_pInBuffer_dram[{ih_pad}][{iw_pad}][{ci}] = ' + \ + array_to_cstr(ifmap_padded) + ';\n\n' + layer_str += f'static {dtype} {name}_pWeight_dram[{co}][{fh}][{fw}][{ci}] = {array_to_cstr(kernel)};\n\n' + layer_str += f'static {dtype} {name}_lambda_dram[{ci}] = {array_to_cstr(bn_l)};\n\n' + layer_str += f'static {dtype} {name}_kappa_dram[{ci}] = {array_to_cstr(bn_k)};\n\n' + layer_str += f'static {dtype} {name}_pOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap_before)};\n\n' + layer_str += f'static {dtype} {name}_pCheckOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap)};\n\n' + + return layer_str + + +def rand_data_generator(shape, prec, alt=False): + if prec == 64: + return torch.randn(shape, requires_grad=False, dtype=torch.float64), {} + elif prec == 32: + return torch.randn(shape, requires_grad=False, dtype=torch.float32), {} + elif prec == 16: + if alt: + return torch.randn(shape, requires_grad=False, dtype=torch.bfloat16), {} + else: + return torch.randn(shape, requires_grad=False, dtype=torch.float16), {} + elif prec == 8: + sign = torch.randint(0, 2, shape, requires_grad=False, dtype=torch.uint8) # -1 or 1 + exponent = torch.randint(0, 16, shape, requires_grad=False, dtype=torch.uint8) # < 0b01111 + mantissa = torch.randint(0, 4, shape, requires_grad=False, dtype=torch.uint8) # can be arbitrary + bits = {'sign': sign, 'exponent': exponent, 'mantissa': mantissa} + # TODO: not actually correct + return ((-1.0)**sign.double()) * (2.0**(exponent.double() - 15.0)) * (1.0 + mantissa.double() / (2**2)), bits + + +def conv2d(ifmap, weights, padding=1, stride=1): + n, ci, ih, iw = ifmap.shape + co, _, fh, fw = weights.shape + + conv2d = nn.Conv2d(ci, co, (fh, fw), padding=((fh - 1) // 2, (fw - 1) // 2)) + conv2d.weight = nn.Parameter(weights, requires_grad=False) + conv2d.bias = nn.Parameter(torch.zeros_like(conv2d.bias, dtype=weights.dtype), requires_grad=False) + ofmap = conv2d(ifmap) + + return ofmap + + +def max_pooling(ifmap, kernel): + n, ci, ih, iw = ifmap.shape + max_pool = nn.MaxPool2d(kernel_size=kernel) + ofmap = max_pool(ifmap) + + return ofmap + + +def batchnorm(ifmap): + n, ci, ih, iw = ifmap.shape + bn = torch.nn.BatchNorm2d(ci) + bn.weight.requires_grad = False + bn.bias.requires_grad = False + running_mean = torch.randn_like(bn.running_mean, requires_grad=False) + running_var = torch.rand_like(bn.running_var, requires_grad=False) + gamma = bn.weight / torch.sqrt(running_var + bn.eps) + beta = bn.bias - running_mean * bn.weight / torch.sqrt(running_var + bn.eps) + ofmap = ifmap * gamma.unsqueeze(-1).unsqueeze(-1) + beta.unsqueeze(-1).unsqueeze(-1) + + return ofmap, gamma, beta + + +def fused_conv(ifmap, weights, bn_k, bn_l, padding, stride, bn, relu, accumulate, depthwise): + + ih, iw, ci = ifmap.shape + if not depthwise: + co, fh, fw, _ = weights.shape + else: + fh, fw, co = weights.shape + ci = co + + ifmap_padded = torch.zeros(ih + padding['padding_y_top'] + padding['padding_y_bottom'], + iw + padding['padding_x_left'] + padding['padding_x_right'], + ci, + requires_grad=False, dtype=ifmap.dtype) + ifmap_padded[padding['padding_y_top']:ih + padding['padding_y_top'], + padding['padding_x_left']:iw + padding['padding_x_left']] = ifmap + + # Don't cover undefined behaviour when there are steps without a complete kernel window + if (ifmap_padded.shape[0] - (fh - 1) - 1) % stride['stride_y'] != 0: + print("Warning: rounding h output dimension") + if (ifmap_padded.shape[1] - (fw - 1) - 1) % stride['stride_x'] != 0: + print("Warning: rounding w output dimension") + + ofmap = torch.zeros((ifmap_padded.shape[0] - (fh - 1) - 1) // stride['stride_y'] + 1, + (ifmap_padded.shape[1] - (fw - 1) - 1) // stride['stride_x'] + 1, co) + if accumulate: + ofmap_before = torch.randn_like(ofmap, requires_grad=False) + else: + ofmap_before = torch.zeros_like(ofmap, requires_grad=False) + + if verbose: + print(ifmap.shape, ifmap_padded.shape, ofmap.shape) + + if (depthwise): + # depthwise Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw, c].flatten(), weights[:, :, c].flatten()) + else: + # Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw].flatten(), weights[c].flatten()) + + ofmap += ofmap_before + + # BatchNorm + if bn: + ofmap = ofmap * bn_k + bn_l + + # ReLU + if relu: + ofmap = torch.nn.functional.relu(ofmap) + + return ofmap, ofmap_before, ifmap_padded + + +def main(): + + parser = argparse.ArgumentParser(description='Generate data for kernels') + parser.add_argument( + "-c", + "--cfg", + type=pathlib.Path, + required=True, + help='Select param config file kernel' + ) + parser.add_argument( + "-v", + "--verbose", + action='store_true', + help='Set verbose' + ) + + args = parser.parse_args() + + global verbose + verbose = args.verbose + + with args.cfg.open() as f: + param = hjson.loads(f.read()) + + if param['prec'] == 64: + dtype = torch.float64 + elif param['prec'] == 16: + dtype = torch.float16 + elif param['prec'] == 8: + dtype = None + else: + dtype = torch.float32 + + if param['kernel'] == 'Conv2d': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + weights = torch.randn(param['channels']['out'], + param['channels']['in'], + param['filter']['height'], + param['filter']['width'], requires_grad=False, dtype=dtype) + + ofmap = conv2d(ifmap, weights, + padding=param['filter']['padding'], + stride=param['filter']['stride']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + weights = weights.permute(0, 2, 3, 1) + kwargs = {'ifmap': ifmap, 'weights': weights, 'ofmap': ofmap} + emit_header_file('Conv2d', **kwargs) + + elif param['kernel'] == 'GEMM': + mat_A, bits_A = rand_data_generator((param['M'], param['K']), param['prec']) + mat_B, bits_B = rand_data_generator((param['K'], param['N']), param['prec']) + mat_C, bits_C = rand_data_generator((param['M'], param['N']), param['prec']) + + print("Mat_A Original:") + for row in mat_A: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + print("Mat_B Original:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + result = param['alpha'] * mat_C + torch.matmul(mat_A, mat_B) + + print("Result:") + for row in result: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + if param['transpose_A']: + mat_A = mat_A.T + if param['transpose_B']: + mat_B = mat_B.T + + print("Mat_B Transposed:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + kwargs = { + 'A': mat_A, + 'B': mat_B, + 'C': mat_C, + 'result': result, + 'M': param['M'], + 'N': param['N'], + 'K': param['K'], + 'ta': param['transpose_A'], + 'tb': param['transpose_B'], + 'alpha': param['alpha'], + 'prec': param['prec'], + 'expand': param['expand'], + 'bits_A': bits_A, + 'bits_B': bits_B, + 'bits_C': bits_C + } + + emit_header_file('GEMM', **kwargs) + emit_header_file('Print', mat=result) + + elif param['kernel'] == 'BatchNorm': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap, gamma, beta = batchnorm(ifmap) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'beta': beta, 'gamma': gamma, 'ofmap': ofmap} + emit_header_file('BatchNorm', **kwargs) + + elif param['kernel'] == 'MaxPool': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap = max_pooling(ifmap, param['kernel_size']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'ofmap': ofmap, 'kernel_size': param['kernel_size']} + emit_header_file('MaxPool', **kwargs) + + elif param['kernel'] == 'FusedConv': + ifmap = torch.randn(param['dim_in_y'], param['dim_in_x'], param['ch_in'], requires_grad=False, dtype=dtype) + if not param['depthwise']: + kernel = torch.randn(param['ch_out'], param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + else: + kernel = torch.randn(param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + + bn_k = torch.randn(param['ch_out'], requires_grad=False) + bn_l = torch.randn(param['ch_out'], requires_grad=False) + + ofmap, ofmap_before, ifmap_padded = fused_conv(ifmap, + kernel, + bn_k, + bn_l, + param['padding'], + param['stride'], + param['flags']['flag_batch_norm'], + param['flags']['flag_relu'], + not param['flags']['flag_y_accumulate_start'], + param['depthwise']) + + if param['chw_layer']: + ifmap = ifmap.permute(2, 0, 1) + ifmap_padded = ifmap_padded.permute(2, 0, 1) + kernel = kernel.permute(0, 3, 1, 2) + + kwargs = { + 'ifmap': ifmap, + 'ifmap_padded': ifmap_padded, + 'ofmap': ofmap, + 'ofmap_before': ofmap_before, + 'kernel': kernel, + 'bn_k': bn_k, + 'bn_l': bn_l, + 'padding': param['padding'], + 'stride': param['stride'], + 'prec': param['prec'], + 'flags': param['flags'], + 'depthwise': param['depthwise'], + 'chw_layer': param['chw_layer'] + } + emit_header_file('FusedConv', **kwargs) + + else: + print("No valid kernel selected") + + +if __name__ == '__main__': + main() diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/script/matmul.json b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/script/matmul.json new file mode 100644 index 00000000..3eb11985 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b2/script/matmul.json @@ -0,0 +1,17 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Solderpad Hardware License, Version 0.51, see LICENSE for details. +// SPDX-License-Identifier: SHL-0.51 + +// Parameters for a GEMM + +{ + kernel: "GEMM" + M: 64, + N: 64, + K: 64, + alpha: 0, + transpose_A: false, + transpose_B: true, + prec: 64, + expand: 0 +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/data_16_16_16.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/data_16_16_16.h new file mode 100644 index 00000000..1052e7cf --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/data_16_16_16.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 16, + .N = 16, + .K = 16, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[16] __attribute__((section(".l1"))); + +static double gemm_A_dram [16*16] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033}; + + +static double gemm_B_dram [16*16] = {0.4780347016744464, -0.20314173587596263, 1.797754234791071, 0.23274595474814475, -0.9954168307888536, 1.8547476587140206, 0.09402273928088646, -0.9430074874135619, 0.8239191817788585, 0.11501735450468505, 0.8545701717376761, -0.007188030468140175, -0.018728729244763993, -0.9533932980859413, -0.12165398416725498, -0.42661916146469137, 0.9340946495293597, 0.19522143581405244, 0.23182973839731683, -1.2546554715250677, -0.7025528681323762, -0.03019556689050345, -1.4671607394596426, -0.1734020738525506, 1.0202696745617659, 1.0157942265133257, -0.4324600332331524, -0.296150919949663, 0.056387506785403815, 1.5109902204218253, -0.13585017018841927, 0.6485611566020152, -1.149354106366614, 0.24917168366560993, -0.4778501888006765, 0.8387576576827396, 0.41098923499226014, -0.2256181742270194, -1.219750082862799, 0.9803566659279874, 1.3346481596559676, 1.6129488803273395, -0.024493143878920487, -0.7591698936771379, -0.48921141096064424, -0.062040923189698165, 0.8520383693040029, -1.128094765763347, -0.07195237845460918, -0.46610241187034174, 0.29946965798993297, -0.6354031061312012, 0.7739177723108309, 0.19368409881631005, -1.3274229125145334, 0.0627858851186502, 0.36384746366328413, -0.19175241722939693, 1.980986216379721, 1.1809578134345797, -0.7306000207552646, -1.7641855643145632, 0.7245001435289563, -1.5840451502971633, 0.09414818556627164, -0.9029006394421663, 0.8488782882116401, -1.2173643223619721, -1.2762292342683303, 0.5058710736668895, 0.6099936154303692, 1.0423699879551078, 0.7611949933670529, 0.6164470190315824, -0.2658724362020457, -0.14668266051521825, -0.6274502774485388, 1.4985053270616493, 1.3299880805922875, 0.6965634921004461, -0.23035924547300898, -0.4005606761098726, 0.3315215039285197, 1.231436269706581, -0.1434065696905791, 0.1038460098414191, -0.11014269025953972, 1.5545069571528942, -0.8829189545685341, -0.20570447804044192, 0.011103897250099562, 0.5946658094550371, -0.6020537188199624, -0.4079372826543253, -0.1805351705743782, -0.33600719481813285, -1.8998197674219859, -1.3514084083199862, 0.12891223912089034, -0.12220432019599553, 0.199025684270468, -1.4076687315200758, -1.3293671463788634, 1.5849730687530486, 0.26915516555170543, 0.42155963063098567, 1.0111021595209633, -0.4752871063125886, 1.313122245567395, 1.429769590030981, -0.22203877342660364, -0.3359458033736853, 0.9478581977287968, -0.9017993731080081, -1.2238040021173409, -1.5066610314377438, -1.5400573604406471, 1.029960808199997, 0.7101787049919178, 0.7199388940089966, -0.09599439254200862, -0.5707540620409073, -1.1665892611773085, 1.1838674589073483, -0.14388808008330586, -0.2897447883816845, -0.5230311319816758, -1.3453794288815801, -0.5774972459244567, -1.6874596492942056, -0.6243273110799229, -0.131168025357405, 1.548288167937, 2.177326020841736, -0.01670896018294231, 2.6380786365181796, -0.6554716217755595, 0.6536593231539053, -0.7991803895400539, -0.48408003859590065, 1.3163800108985646, 0.7736151342348289, 0.045765518028111664, 0.782406872557914, 0.6273242190434466, 0.8505308967944145, 0.002119877636176426, -0.03123667988254042, 0.9288465316923816, 0.4365480813048655, 0.43343311885236446, -0.27680484002022715, 0.6816100143946399, -0.29432626362033404, 0.18661178764402744, -0.34832623473704294, -0.12593952342837475, 0.6104204582278638, 2.1112388578012884, 0.16436581820924961, 0.08511336387296158, 0.6772607869261693, -1.0103642468106544, 0.5124772757514626, 0.08390244767011035, -0.42153332375097163, -0.014621424093204098, 0.1962794539558957, -0.29262366803238393, -0.47610390457226875, 0.8742346952912949, -0.031424129829246916, 1.25609380794485, -0.5422032040096507, 1.9700777629678679, -0.6098672123657596, -0.1733949212480647, 0.07380298739515019, -1.1195878651441893, 0.8173767150222387, 0.3572785103117973, -0.9320608828189856, 0.6955788134794414, 0.8731470189472956, 0.9362614654567366, -1.3121219556703199, 0.22713168745929768, 0.6027021077218985, 1.1658575421017066, -1.149255707834347, 0.1456185008563352, -0.5846446870404606, 1.2335858050609876, 1.9920454844101763, -1.2632446956429335, -0.2772483620390129, 0.17859923880951847, 1.8110431275164358, 0.5722528182048355, 0.010205327986369436, 0.1418089057088939, -0.9264218514606051, -0.5133236613036435, -0.1269124796513161, -1.7009294128404835, 1.7075504892947724, 0.6952680695280342, 1.7665907233368394, 1.3917635799868133, -0.33044907219753716, 1.452604901391212, -0.8170580592759659, -0.6768899292657692, -1.4858191479600487, -1.481720319316519, -0.8838416943783096, -0.4836971414215709, 0.14788650580579352, -0.5447919995948828, -0.132580840204314, -0.3443663683433915, 1.4528943457305363, 1.289500316820128, 2.253287365111219, -0.9181737147627111, -0.39032216747009113, 0.6929251584566181, 0.11041826907812055, 0.8504258697467754, 0.7389689210845545, -0.15323533618009222, 0.8068577169597195, -1.242898069994524, 0.0069296369726892315, -1.4490806809539707, 0.8622146933847438, -0.9552666410033216, 1.5535736491676595, -0.3238211924056418, 2.1818716851528808, 0.8067649829193638, 1.498700405481595, 0.3435160724199721, 0.024119499618272, 0.9425485271043043, 0.6644577289945207, 1.090316288383937, 0.29925023340409146, 0.2730005353024221, 0.3306231644074124, -0.5830552203885363, -0.6652501624993471, -2.123695546730074, 0.8145713078829363, -0.8891278822176073, -0.5497385523974774}; + + +static double gemm_C_dram [16*16] = {0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222}; + + +static double gemm_checksum[16] = {3.53318139833275, 18.910557186514914, 17.061557051251178, -17.86682606914221, -5.920568815540228, -16.80427557391132, 12.345786410219814, 24.565576004988085, 3.617111620044957, -18.771063102425778, 43.637805771956224, -17.699257074021574, -7.3420911665199835, 8.052332093906525, -16.822597494037367, 2.274275182397295}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/data_32_32_32.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/data_32_32_32.h new file mode 100644 index 00000000..667ffd2d --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/data_32_32_32.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 32, + .N = 32, + .K = 32, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[32] __attribute__((section(".l1"))); + +static double gemm_A_dram [32*32] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342}; + + +static double gemm_B_dram [32*32] = {1.8448885093030065, 0.622613137075688, -2.0773600718526932, -0.05879218788301025, -0.14883240827467462, -1.6070787249452574, -1.2752325216668503, -0.9710154441004514, 2.8536471208979433, 1.0259687873673153, -0.07729526178752644, 2.90124785320579, -1.6099870201619317, -0.8847331619490723, 0.5939979568631141, 1.2200036287220326, 2.8510918408680124, -1.25582651238933, -1.5043005890504582, 0.809667872762421, 0.4455096569146938, 1.4533777876325222, 0.08093711755806289, 0.5433594960509881, 0.21407749737048995, 0.5053866496884525, -0.7063829736735863, -1.7255159569914225, -1.3941268553154642, -0.3611221208798455, -0.05334598793633222, -0.35435416471609005, 0.572007132100381, -0.5264955185026189, 0.5102128857829208, 0.6116700031464317, 2.0486968982261202, -0.7165117692039605, -0.44546162876683887, 0.4763931829831273, 1.3032022234889244, -0.02932551729568818, -0.4820520883676177, 0.9193799243970369, 0.6146813355739139, -0.22393893146647295, 0.571492357564412, -0.948302395460301, -0.7318379837818061, 0.03382654045677089, 0.7372524407400997, -0.4103668947560523, -1.5530036453685645, -1.508283926364581, -2.256777082059624, 0.5675579810614343, -0.41165660712793767, 0.3283028032403514, 0.08317733846151737, 0.6397252376986503, 0.5706575386796322, -1.4195164842808716, 0.10738590560666669, 0.6485877172023825, -0.9020532459752512, 1.7456452297639542, -1.3425473236398795, -1.3093298447872528, -0.9909136952855094, -0.7553512437574256, -0.15696203458936964, -0.8587268321219447, 0.4760756036980966, -0.7891190307945258, -0.3642766707809299, 1.4109003071198862, 1.0232681185457035, 0.2604924986511237, 1.2838646589587073, 0.6269276746157323, -0.6194976835634578, -0.45889090147992845, -0.5334658384258053, 1.749809215983805, 0.24334104727505046, -0.9454297378995183, 0.324177164165908, 1.9203285366540146, -0.8911684286042895, -2.225396433305001, -0.9039919874880522, 0.23342621054073684, 0.7831976119427991, 1.1907305012760756, 0.7476571054869932, -0.2757466733288484, 1.423932009681719, -0.0032580522874735246, 1.0664992078500592, -1.9790524548585495, -0.3600241005246587, 1.9280259690970352, -1.1862950949600968, 0.420689070376205, 0.04693766693045954, 0.29564308636903597, 0.2721281447061126, 0.9342714574384375, -0.6120020584064751, -1.065720378325982, 0.1968309175885564, -1.8413847347422614, 0.8118142867300344, -0.2896301303848118, 0.2567239585606655, 1.001647179219911, 1.9679440499519993, -1.010459444419853, 1.062105790670867, -0.5030970822643847, -0.49236046031915226, -1.096249407991655, -2.359353503098415, 0.21399479954715414, 0.28018300766602294, 0.1522501461827938, -1.5691946737355327, -0.3563016808385527, 1.1116421563744774, -0.08412480377121889, -1.3978347586933288, 2.327922240143418, 0.1602748303156346, -0.26733976223106926, 0.37408049529043713, 0.6054083058374654, -0.5984449522911452, -0.34927374642138076, -1.0173409588721802, 0.7408981122108215, -1.0855633146564565, -2.4784405095403583, 0.0125526247658802, 2.975492133500898, 0.43758672808479837, 0.4922810729687261, -0.6299751233419266, -1.7659243403508436, -0.14949638764508505, 0.0754147254586834, 0.2886235312894662, 0.8421602450844566, 0.08810619424950021, -0.9149883628966105, 0.11425878193276912, 1.1788921695577175, 0.13693472548612742, 0.922469684257407, 0.8999837788505479, -0.17817414950901492, -0.609918694875925, -0.09847618283385187, -0.5082793586733352, 0.5346029134452727, 0.07168780603661637, -0.0673955495394241, -0.38524482721238545, -0.7954680985571436, 0.7900271874549623, 0.8136749201194545, -0.22291945275506458, -1.501451886644788, 0.9035218354603602, -1.397338674255014, -0.588379978175527, 0.5732253342246594, -0.7150266134830248, -0.11561150744781683, 0.024035161278926437, 0.15383957509758237, -0.1787890634869671, -1.2810537542822706, -1.2983305542602077, -2.316838061301056, -1.4051338603716423, 0.21230053589695053, 0.64706666019578, -0.4946728962147127, 1.0154445987056024, 0.016501336648811274, 0.038792413114335636, -0.0019081140052624073, 1.0390897743423966, 0.5573182638994464, 1.0293339145628106, -0.2220392426765117, 0.30202523579276225, -0.536406291194771, 0.7842727318028115, -0.20058537792435566, -1.969917184758775, 0.620245645223459, 1.415842532715168, -0.8528561599738412, 1.199279110133032, 0.12733886071252698, -1.459242663662794, -1.876866690355531, -1.9406394619639358, -2.0656398984212156, 1.1244580271586777, -1.2779831760745572, -0.8694565617159877, -0.7736354580243704, -1.5005961252940438, -0.4201799135308444, -2.3224238004285707, -0.6023002440801871, 0.4359959376210403, -1.8310549540520982, -1.1860807036684393, 0.7429642513221194, 0.9914820089613138, -0.39273602229275606, -0.1305603800084962, -1.1975598741016937, 1.1953652639556394, 1.0350931612437495, -0.582835004754739, -0.7093789385459298, 1.1538879916827052, -0.19994075887630136, 0.3503211304018375, -0.43951272221042564, 0.3487504850213432, -1.4502786649323292, 0.21247320768848982, -0.962990797187108, -0.16058887298258492, -1.4492981424636866, 0.8679359705510734, -0.15730996466261546, 0.40836377201711715, 0.2669263499455465, -0.02701940155527667, -0.811961379205231, -1.4260396412546816, 1.99145358910135, -0.3410883214075715, 1.4512382841053386, -0.09281069482301793, -0.3690830035843751, -0.19007920263882952, 0.10750421501190041, 0.9465564741859593, 0.06348346009811161, 0.7049709576256773, -0.25042914816475237, -0.7592324149843712, 0.579583179532083, 1.0356927036283528, 1.744020696757244, -0.9454918159942679, -1.895096099561938, -0.0008137206583593385, 0.46265400794768385, 0.3522443413976922, -0.060333190180409904, -0.8276719054682797, -0.4158341820319732, -0.30513433025622483, -0.7472606420064576, 1.4354983174276066, 0.7768976641774541, -1.8739717517634698, -1.4256436904962992, -2.327140574554701, 1.3638217257964536, 0.12572172650108407, -1.1698739038813457, -0.12686282703773566, -1.5038113250304717, -0.5382334133878951, -0.42224783195423987, 0.1523832525182091, 0.4808356602618045, -0.9548035752110309, -0.8742437683710312, -0.30985592801910117, -0.24189491229960913, -0.9927853948011712, -0.09395716249601935, -1.0360800724687276, -0.8126325347024919, -1.405125889371723, -2.091666612524903, -0.6256281405885463, -1.869391305207575, 0.9077850533771569, -0.06215199874022316, 0.34353353507020123, 0.8295084980828852, 1.3958505210549053, 1.4876059940278459, 2.182868585469132, -0.7044791153933941, -0.26853628794603523, 0.040903466313536106, -0.3493894186252125, 1.077496971491708, -1.371518218990482, -0.48526560569590693, 0.23609553256542695, 0.11558860384831522, -0.633983343063867, 0.32423026673778105, -1.2093360312349437, 0.1323677945856938, 0.37108183095020375, -1.8689872110353185, -0.6566307196626123, 0.1717462405241003, -0.8401102070638347, -0.5606885258433681, 1.993616236752697, -1.5969922983164335, 1.0636457383418108, 0.0004974458415376117, -0.3510577387659576, 0.48193063531644537, -1.0749257488285808, 0.6962114020423124, 0.7795065425753578, 1.129362539634652, 1.112993202632025, -0.18934308720894036, -1.1741764376487758, 0.8524501556338853, 0.37761170331094157, -0.9342945534262868, -0.02711649643869937, 0.5810375830537511, 0.5998645930096181, -0.664516213841126, 0.23545196849666264, -0.06338166413389325, 0.49835413266819356, -0.4402301947763417, -2.100547843467698, -0.7034274377386549, -1.6932708709240643, -1.5147133895052636, -0.005304890708390932, 0.5303343737606813, 0.3955192048365272, -0.6916360198922066, -1.2365797403960304, -1.2686890383326754, -0.7818062318843579, -0.4080026099220151, -0.13894191854589522, -0.095540604007519, -2.072058608998672, 0.1737374420722428, -0.31690501369321267, 1.4448964367746397, -0.6980224325960035, 0.13020040181367357, -0.9331282790464878, -0.3340090119288742, -0.0050819767759484056, 0.7618231087000356, -0.2125855163161856, 0.3551271969105679, 1.2473531605780193, -2.1784216925774254, 1.371312887239788, 0.22201020504142566, -0.6176307398455463, 0.7465865033369634, -0.1530333323078057, 0.09645911224015045, 0.5742732453192894, -1.0184612409555949, 0.47214213858952303, 0.8246091313323292, 0.34215369871376844, -0.25495705935359947, 1.8548042098231963, -0.9291972010711246, 0.8829476857079316, -0.44867368855172923, 1.199426224041857, -0.16987767760770991, -1.189733419675099, 1.9987164641082087, 0.08404007020790137, -0.27202686813738103, -1.1242172376210566, 0.5331924552669381, -0.2820770772397286, 0.08640562469139157, 0.009684786386250501, -0.30058739646889815, -0.8626785926902893, -0.043876281219692365, -0.9358060344486432, -0.05592421534349575, 0.2318653380046876, 1.4399368526678278, -0.58828999383318, 0.43199223950922194, 1.1971503331114541, 2.532325541632594, 1.1869006875492747, 0.18139626346512772, 1.247922968974058, 1.010839700197812, -2.8791873832700547, -0.23051091319332653, 0.20499605949096963, 0.9031672530350638, 0.8745221489151239, 0.5700168037125656, 0.12132847331734303, -0.19495692375454912, -0.5102992245699747, 1.7922666332582982, -2.0217996637419504, -1.1376577043818543, -0.04898442309094625, 0.9913637676227545, -1.9483310573156807, -0.059343641632369076, 0.2636875321138984, -0.5446714593776727, 0.5125620452253108, -1.0850332393056394, 0.49295286102524044, -0.3735237580415768, 0.08464059182127714, -1.536144263111769, -1.7334295099492802, -1.939062107304355, -0.38189865297027337, -1.5866221126564115, 0.2555908214103616, -0.7129650139254672, -1.434297700901899, -0.8902436270883701, -0.0421115170793464, 0.5226206406896088, 1.2010757276760113, 2.269233244076525, 0.6929310708225009, -0.19142620469203458, -1.4608604499664002, -0.08834646865917613, -0.5266987160364432, 0.39258330183185886, 1.4723540101508836, 1.1669873661563108, 1.7267743114344978, -2.6437681894231435, 0.31916263280850626, 0.1619562886451128, -0.08553945533113934, -0.4802089660362259, 0.835126803441082, 1.109609770945844, -0.3494884497630849, -0.22461780649945687, 0.19008151199377613, -2.717778670757182, -0.8643497543156821, -0.10453191019598392, 0.7916834209392376, -1.971084122083064, -1.3999854653788708, -1.3195899155857833, -0.5773871236273995, 0.5757151238996234, 0.2803818171599705, -0.6035154511863011, 2.057751677950784, 0.40988533123157295, -0.39888705398196755, 0.7614369056740486, -0.22948805550230816, 1.2824833220745997, 0.38803217663099665, -0.1955663537656974, -0.5690532461968705, -0.5526532153140147, 0.3596144012700469, -0.6461446779487539, 0.6390360973776629, 0.15046570393731748, 0.33475288490766125, -1.1432227238603179, 0.4370304631746852, -1.0337911892064604, -0.9308402692062906, -0.6015415198184665, 1.7562161679995132, 0.1168039138752043, 0.689824201173873, 0.8153426406136252, -0.1728944869857963, -0.13301270859207348, -0.5270366881316677, -0.21170557963600709, 1.9951334816061994, -0.6241388306405901, -0.9401015854505796, 0.5592128760780101, 0.2883899362101988, -1.7212576593177709, 0.9994754870230482, 1.185949052557463, 0.051902944512615914, -0.13585649309388986, 1.2098862819236005, 1.185062371327038, 0.7600008532793323, 0.17431258922451653, -0.359544416669036, -0.8660236542618331, 0.5428826848071413, 2.7590525887014667, 3.4237712468503103, 0.5174957898345334, -1.4380277943151216, -1.8807813444109054, 0.3630283557686611, -0.525149213451578, 1.181971977987871, -0.5866181500734327, 1.524711206099055, -0.7800663274052761, 1.160481352505748, 0.39343143403797187, 1.8409181821652891, 0.49610977046001814, -0.9419344596787323, 1.0306895727537915, -0.08972003336849564, -0.3223643795390148, 1.6134203350119927, 0.7166427020983424, -1.666570871939696, 0.6170757026559303, -0.019119222645881905, 0.6657305691375492, -1.0678208861159952, -0.24969600604011072, -0.09696213550941978, -0.08674760587893786, 0.20255944297423273, 0.47452405238110584, 1.5065733412421733, 0.22065232253703387, 0.744628978129671, -0.26915089392842423, -0.15463871080474192, -1.2265714811977597, 1.7611911540817928, 0.20817264425532928, -0.8172519034071913, -1.5377442224077151, -1.548684848469057, -0.4477465519532468, -1.0427224611678692, 1.3390674367668436, -1.7547244042030132, -1.107773982297535, -1.3864755081036366, 0.5437796109495969, -0.640338334227558, 0.5138781656523993, -0.9640624060585024, 0.3627363765292881, 0.7961227485818212, 1.650950629705662, -0.9757273564713941, 0.6391954485208522, -1.6484340857205138, 0.5062590514320574, 0.49872412917775666, -0.02662111271639052, 0.3676083732835713, -0.4790606483008819, -0.47412499801799024, -1.3774088537570648, -0.9096458649167182, 0.3387263580347474, 1.427347151863727, 0.3936172157806796, -0.7229213248269448, 1.0421502948740846, -0.31575932783054717, -2.0944415177169953, 1.2284263304913572, 0.01545038682624204, -1.040602541009036, -0.747255398772972, 0.07405473692919617, 0.6462111934112551, -0.15540161000210675, -0.37254092473885336, 2.0182530686564895, -0.7592214987689807, -1.1213275218434526, -1.5589258141736047, 1.22745042848715, 1.7703882319843902, 1.8473014772988974, 0.3751449189250956, -0.6773093361468119, 0.7374924629427219, -0.6501714914135994, -0.5787298408624987, 0.8149334833372205, 1.5321216571398668, 0.2569777134684139, -0.29499229105904573, -0.6827694846192245, 1.2480509452812811, -0.03594236427723813, 1.0778363941578806, -0.4323877136781272, -0.24223189745187212, 0.2503737947188051, 0.7870016058915985, 0.19868751298961676, 0.39608506375087277, 1.8273660232377136, -0.16290875300595686, -0.14925008749413637, 1.688912150364615, 0.28089640344542804, 0.17302563058445183, -0.7235603815620858, 2.417337785331285, 0.6531743202785056, 1.3206137582172544, -0.6004867918118467, -0.49884117664872785, 0.5263294510598043, -0.19786418069226533, 0.19847908080770726, -1.0887076741188921, -1.4186463922997374, -0.46418731609632075, 0.9572709382349587, -0.1636651452718229, -0.18464959701431985, -2.4537835279476146, 1.6425500385797525, 1.9521841872543286, -0.9987807222089615, -0.8644861643567047, 0.09012216684853104, -1.5453453515930158, 0.028618079946139307, 0.8949404757727989, 0.11836116797672853, 1.1493902335657455, 1.4195569065800453, 0.4979804345513483, -1.8439449535735588, -1.3591299269239323, 0.6902199813822665, 0.16431412357817202, 0.6081345501547663, 0.17028885180838357, 0.2277981765470329, 0.22241582722694822, -0.5361669868684229, -0.35212526236220854, 0.07053654437136757, -1.1107085792532714, 0.43435982710100896, 0.9197089124134338, 0.4572717163404996, -0.7338887598113502, -1.4303046720322652, -1.0332700298347521, 0.707300443390559, -0.8341158090629236, -0.3900596403135759, 0.9788396157168914, 0.15285084511988004, -0.9521061052105131, 1.2693688025965613, -0.565952007041841, -1.723439924093865, -1.2488701028525535, -0.06310268278090121, -2.130104535188091, 0.8386877142814951, 0.08795913929250766, 0.3444816081051852, -0.7475464904708393, 0.055137779443554184, -0.297796251553928, 1.7752306448722606, -0.18586838199027028, -0.8359861748374583, -0.5254557201726808, 0.4874774972013086, 0.42973964778170143, 0.9547242579775002, 0.16954868116772995, -0.06608174057217904, 1.4198792364404926, -0.6798540159722049, 0.0037124668666011543, -1.9840617027488057, 0.9892360243254097, 0.16960249404796737, -0.43274207019506117, -0.9509348833512404, 1.001353646981955, -0.4453218737326093, -0.3765845085538441, -0.05609728003750563, -0.453301777620275, -0.7885161782185284, 1.8425900504983932, 0.7479073753397237, 1.1476608122361165, -1.0778628423584962, -1.1826687439735564, -0.2983334069128005, -0.9405677474521547, -0.1316442026885298, 1.0415794322065468, 0.031457706909880166, 0.40185795512569217, 0.5680057504067159, 0.4487811587655208, -1.890981268173993, -0.20813077355955645, -1.1278918446449648, 0.0976102127373202, -0.4396025725464862, 1.13966263395932, 0.8800683478695012, -0.4390315224865612, 0.8352543400425974, -0.6416390065504894, -0.4185489493255141, -0.14358452337381933, 0.3229857369820825, 0.40906237950521346, -0.8774506171339351, 0.17855829086113095, 0.2942911094966865, -0.26956499012979956, -0.594263411951702, -0.8820586551654293, 0.19168429076964602, 0.9320022617397814, 0.3469301281229362, 0.8708434312878163, 1.38335867526748, -1.693588315970276, -0.47920924486264665, 0.27195785052081917, 0.899919260122491, -0.5670525260070235, 0.28253652479051733, 1.4717430631656925, -0.3938745167085202, 1.3420338787636203, 0.07734968673664687, -0.22307281025633455, -0.06842865579333862, 0.8820726768303652, 1.1617475981837795, -0.5445053993271162, -1.6685708178136907, -0.604900108391799, -1.4509136246246903, -0.8677025372132973, 0.44175525248542286, 1.2380051766092655, -1.1301294572944445, 3.5953876986672255, -0.7311965810915613, 0.6612001818907256, 0.5644435285732619, 0.31200772222466067, -2.501823109461287, 0.03568906908977818, 0.6711365751637789, 0.10036766629128512, -1.9630063235244388, 0.20250426856488513, -0.37134570058665717, 0.8941462516437774, -0.5364177308537464, 0.14141128561714333, 1.1165497781562674, 0.6002964569533693, 0.3139908715338594, 0.7397153430022654, -0.5799201931033439, 0.5329264170127224, 0.0757461775588834, 1.1454947730219187, -1.2832223575262358, -1.1731970859703744, 2.264358935950376, 1.535151051934949, 1.2609714707832425, 1.0347284219371276, 0.7931445181078505, -1.1622188132692055, 0.27932962145356316, -0.8488543068716493, -0.21592794240105817, 0.6566383906736746, 0.8811148239408805, -1.4538990075976945, -0.673945501033193, 1.4420580869170465, 1.1526892923346204, -0.5580601750838238, -0.5193463961965822, 0.9856658198526146, 1.1612473442212157, 1.8901581231152924, 0.9954498087197619, 0.536910685665978, -0.5714364972858512, -0.7795697135851043, -1.1261703254618494, 0.8838113044537101, 0.31678992899871267, -0.7498434517605724, 0.945043974186398, 0.3830272308939737, 0.01811044220476568, 1.557358039479812, -1.1013820170238586, -0.18334305957155458, -0.048585931918069494, 0.48707383897255696, -0.06988463350772384, 0.03880070372652659, 0.666378400360196, 0.3153960860722241, -0.4553253041620339, -0.7620891486112908, 0.7833035854562042, -0.4972028753925732, 1.2235988334078434, -0.5372177387698984, -0.18194736753591428, 1.0076432223870029, -0.11562338831110575, -0.44166427943855957, 1.862246649641681, 0.16318485053532772, 0.21059455079709405, -0.04468791360092496, -0.09854463425203973, 0.610220453599741, 1.0966132130656288, -1.3377145615324746, -0.7432885872434457, -2.2463793716496183, -0.8271942633183708, 1.0330281295592512, 0.5665224930728516, 0.8235296531498106, 0.6513073416660541, -0.35686131551458816, -0.7466175012069378, -0.06866257813543919, 0.6819214512912009, -1.3157311036080868, 1.0765917423686246, -0.4124980314658376, -0.13454483357874214, 0.4039229699126195, 1.0392171119322082, 0.30783322485667264, -1.1636116702452202, -1.1864962493216553, -0.19855569336096057, 0.8554191239588586, 0.352400820758953, 0.509830562978939, 1.1127961330998304, -0.42772830220525987, 0.8203366802620794, -0.13107111869784893, 2.395067138296113, 0.9796702201792316, -0.31621524862176864, -1.855416176565475, 1.4335843287274053, -2.030956619344538, -1.0171091372766654, 0.1958899672744909, -1.7263899334779662, 1.3403087264740343, 0.5222811637226092, -0.3292665860742744, -0.805144923911586, 0.2937618607534383, -0.06839741587635721, 0.21159132832002855, 0.2439549047998887, -0.25957042793288443, 0.3803586083160361, -0.03287499950025958, 1.8371154985886862, 0.534974938780373, -0.22624467871026605, -0.5500096460519907, 1.688961038095004, 0.5698707282163747, 1.6482773735238936, -0.5991965310798085, -0.449879365783737, 2.22854455207779, 0.15551004552008937, 0.8500574802035589, 0.3316175009075528, -1.7646934144734967, 0.002668556331391873, -0.8136295403887579, -0.9465575672564711, 0.3469149176826813, 1.0045993947511778, 0.2610941691615629, 1.0788518344074862, 1.429798559996883, 1.6332065112971001, 1.7738534285950363, -1.6081696632587419, -1.161359070554741, 0.4734557044072717, 0.8251757971684041, -1.00859364816552, -0.47466672457489073, 1.2706120469339364, -1.728025679680301, -1.2420591801850245, -2.0058475112711514, 0.5071009399593757, -0.763791941134191, -0.8745505869548725, -0.20863591717796462, 0.6711383514595195, 1.4973252224613436, -0.4581821737978766, 2.85934273014681, -0.5905994619497847, -1.2986776963277358, -0.6884736402196919, -0.8420374077504474, -1.9226574720130702, -0.7714846254184806, 0.4879570553679617, 0.9569335370728702, 0.1215505686746317, -1.6928895703415128, 0.5214662704113713, 0.8488733195590197, -0.18689854597886257, -0.33142178700758057, 0.2108448776087118, 0.21001598604651528, -0.9215746025534817, -0.5943198935837782, -1.757528113553421, 1.251745108485312, -0.868299098407261, -0.1351648490652594, -0.23753657646460405, -0.4541796977906028, 0.6279007880533118, -1.697389937955057, 0.32284669288734297, 1.3123618498586958, 0.2238366057536359, -0.5546344165085834, 2.681801981114757, 0.620608819397525, 1.4571504499595769, 1.3299424270339977, -2.0231033737037047, 0.5166078996711738, -1.6380306920827867, -1.2122365561438313, -0.6623786574250906, 2.0063313680095405, 1.4850546815331578, 0.08949085370524765, 2.207851490608375, 0.6549815456848764, -0.8293836626550278, -0.6235361522388553, -0.626995367880836, 0.4159405289601604, -0.6195377638236638, -2.059249774668197, -0.7922512836603205, 1.9089401526170708, 1.59925697493435, 2.979844425070889, 0.19313774990116925, -0.5567288589208035, 0.5692262629524086, 0.2998477603655102, -0.8259830110426495, 0.820266660992923, -0.7182362270286512, -2.2200296733850635}; + + +static double gemm_C_dram [32*32] = {0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967}; + + +static double gemm_checksum[32] = {19.171406532352187, 64.83908386369714, -15.833072522846592, -9.097406689220577, 38.77022492904121, 36.661072250530495, -19.204889499817334, -26.71405328485298, 2.199782273326125, 22.879340449675865, -25.495771295498592, -22.74413590136339, 41.027971509741164, 2.3121890057321304, -19.49682405405703, 25.832519909539464, 42.9907473021782, 30.112697137204815, 26.7239787914316, 85.07758200685522, 6.60571186375147, -12.02777529819674, -23.409006725121806, 27.330350323575306, -24.78504460632868, 53.946894048375924, 92.26090941929412, 27.603604435548316, -41.68101813310628, -19.73859198296261, 37.159087216031466, 20.44420834195346}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/data_64_64_64.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/data_64_64_64.h new file mode 100644 index 00000000..1c964152 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/data_64_64_64.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 64, + .N = 64, + .K = 64, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[64] __attribute__((section(".l1"))); + +static double gemm_A_dram [64*64] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342, 1.8448885093030065, 0.572007132100381, -0.9020532459752512, 1.423932009681719, 1.1116421563744774, -0.609918694875925, 1.0390897743423966, -0.1305603800084962, 0.7049709576256773, -0.30985592801910117, -0.6566307196626123, -0.005304890708390932, 0.47214213858952303, 1.247922968974058, -1.434297700901899, -0.5773871236273995, 1.9951334816061994, -0.9419344596787323, -1.3864755081036366, -0.15540161000210675, 0.28089640344542804, 0.6902199813822665, 0.055137779443554184, -0.1316442026885298, -0.47920924486264665, -0.37134570058665717, 1.1612473442212157, 1.862246649641681, 1.1127961330998304, -0.449879365783737, -0.4581821737978766, 2.681801981114757, 0.622613137075688, -0.5264955185026189, 1.7456452297639542, -0.0032580522874735246, -0.08412480377121889, -0.09847618283385187, 0.5573182638994464, -1.1975598741016937, -0.25042914816475237, -0.24189491229960913, 0.1717462405241003, 0.5303343737606813, 0.8246091313323292, 1.010839700197812, -0.8902436270883701, 0.5757151238996234, -0.6241388306405901, 1.0306895727537915, 0.5437796109495969, -0.37254092473885336, 0.17302563058445183, 0.16431412357817202, -0.297796251553928, 1.0415794322065468, 0.27195785052081917, 0.8941462516437774, 1.8901581231152924, 0.16318485053532772, -0.42772830220525987, 2.22854455207779, 2.85934273014681, 0.620608819397525, -2.0773600718526932, 0.5102128857829208, -1.3425473236398795, 1.0664992078500592, -1.3978347586933288, -0.5082793586733352, 1.0293339145628106, 1.1953652639556394, -0.7592324149843712, -0.9927853948011712, -0.8401102070638347, 0.3955192048365272, 0.34215369871376844, -2.8791873832700547, -0.0421115170793464, 0.2803818171599705, -0.9401015854505796, -0.08972003336849564, -0.640338334227558, 2.0182530686564895, -0.7235603815620858, 0.6081345501547663, 1.7752306448722606, 0.031457706909880166, 0.899919260122491, -0.5364177308537464, 0.9954498087197619, 0.21059455079709405, 0.8203366802620794, 0.15551004552008937, -0.5905994619497847, 1.4571504499595769, -0.05879218788301025, 0.6116700031464317, -1.3093298447872528, -1.9790524548585495, 2.327922240143418, 0.5346029134452727, -0.2220392426765117, 1.0350931612437495, 0.579583179532083, -0.09395716249601935, -0.5606885258433681, -0.6916360198922066, -0.25495705935359947, -0.23051091319332653, 0.5226206406896088, -0.6035154511863011, 0.5592128760780101, -0.3223643795390148, 0.5138781656523993, -0.7592214987689807, 2.417337785331285, 0.17028885180838357, -0.18586838199027028, 0.40185795512569217, -0.5670525260070235, 0.14141128561714333, 0.536910685665978, -0.04468791360092496, -0.13107111869784893, 0.8500574802035589, -1.2986776963277358, 1.3299424270339977, -0.14883240827467462, 2.0486968982261202, -0.9909136952855094, -0.3600241005246587, 0.1602748303156346, 0.07168780603661637, 0.30202523579276225, -0.582835004754739, 1.0356927036283528, -1.0360800724687276, 1.993616236752697, -1.2365797403960304, 1.8548042098231963, 0.20499605949096963, 1.2010757276760113, 2.057751677950784, 0.2883899362101988, 1.6134203350119927, -0.9640624060585024, -1.1213275218434526, 0.6531743202785056, 0.2277981765470329, -0.8359861748374583, 0.5680057504067159, 0.28253652479051733, 1.1165497781562674, -0.5714364972858512, -0.09854463425203973, 2.395067138296113, 0.3316175009075528, -0.6884736402196919, -2.0231033737037047, -1.6070787249452574, -0.7165117692039605, -0.7553512437574256, 1.9280259690970352, -0.26733976223106926, -0.0673955495394241, -0.536406291194771, -0.7093789385459298, 1.744020696757244, -0.8126325347024919, -1.5969922983164335, -1.2686890383326754, -0.9291972010711246, 0.9031672530350638, 2.269233244076525, 0.40988533123157295, -1.7212576593177709, 0.7166427020983424, 0.3627363765292881, -1.5589258141736047, 1.3206137582172544, 0.22241582722694822, -0.5254557201726808, 0.4487811587655208, 1.4717430631656925, 0.6002964569533693, -0.7795697135851043, 0.610220453599741, 0.9796702201792316, -1.7646934144734967, -0.8420374077504474, 0.5166078996711738, -1.2752325216668503, -0.44546162876683887, -0.15696203458936964, -1.1862950949600968, 0.37408049529043713, -0.38524482721238545, 0.7842727318028115, 1.1538879916827052, -0.9454918159942679, -1.405125889371723, 1.0636457383418108, -0.7818062318843579, 0.8829476857079316, 0.8745221489151239, 0.6929310708225009, -0.39888705398196755, 0.9994754870230482, -1.666570871939696, 0.7961227485818212, 1.22745042848715, -0.6004867918118467, -0.5361669868684229, 0.4874774972013086, -1.890981268173993, -0.3938745167085202, 0.3139908715338594, -1.1261703254618494, 1.0966132130656288, -0.31621524862176864, 0.002668556331391873, -1.9226574720130702, -1.6380306920827867, -0.9710154441004514, 0.4763931829831273, -0.8587268321219447, 0.420689070376205, 0.6054083058374654, -0.7954680985571436, -0.20058537792435566, -0.19994075887630136, -1.895096099561938, -2.091666612524903, 0.0004974458415376117, -0.4080026099220151, -0.44867368855172923, 0.5700168037125656, -0.19142620469203458, 0.7614369056740486, 1.185949052557463, 0.6170757026559303, 1.650950629705662, 1.7703882319843902, -0.49884117664872785, -0.35212526236220854, 0.42973964778170143, -0.20813077355955645, 1.3420338787636203, 0.7397153430022654, 0.8838113044537101, -1.3377145615324746, -1.855416176565475, -0.8136295403887579, -0.7714846254184806, -1.2122365561438313, 2.8536471208979433, 1.3032022234889244, 0.4760756036980966, 0.04693766693045954, -0.5984449522911452, 0.7900271874549623, -1.969917184758775, 0.3503211304018375, -0.0008137206583593385, -0.6256281405885463, -0.3510577387659576, -0.13894191854589522, 1.199426224041857, 0.12132847331734303, -1.4608604499664002, -0.22948805550230816, 0.051902944512615914, -0.019119222645881905, -0.9757273564713941, 1.8473014772988974, 0.5263294510598043, 0.07053654437136757, 0.9547242579775002, -1.1278918446449648, 0.07734968673664687, -0.5799201931033439, 0.31678992899871267, -0.7432885872434457, 1.4335843287274053, -0.9465575672564711, 0.4879570553679617, -0.6623786574250906, 1.0259687873673153, -0.02932551729568818, -0.7891190307945258, 0.29564308636903597, -0.34927374642138076, 0.8136749201194545, 0.620245645223459, -0.43951272221042564, 0.46265400794768385, -1.869391305207575, 0.48193063531644537, -0.095540604007519, -0.16987767760770991, -0.19495692375454912, -0.08834646865917613, 1.2824833220745997, -0.13585649309388986, 0.6657305691375492, 0.6391954485208522, 0.3751449189250956, -0.19786418069226533, -1.1107085792532714, 0.16954868116772995, 0.0976102127373202, -0.22307281025633455, 0.5329264170127224, -0.7498434517605724, -2.2463793716496183, -2.030956619344538, 0.3469149176826813, 0.9569335370728702, 2.0063313680095405, -0.07729526178752644, -0.4820520883676177, -0.3642766707809299, 0.2721281447061126, -1.0173409588721802, -0.22291945275506458, 1.415842532715168, 0.3487504850213432, 0.3522443413976922, 0.9077850533771569, -1.0749257488285808, -2.072058608998672, -1.189733419675099, -0.5102992245699747, -0.5266987160364432, 0.38803217663099665, 1.2098862819236005, -1.0678208861159952, -1.6484340857205138, -0.6773093361468119, 0.19847908080770726, 0.43435982710100896, -0.06608174057217904, -0.4396025725464862, -0.06842865579333862, 0.0757461775588834, 0.945043974186398, -0.8271942633183708, -1.0171091372766654, 1.0045993947511778, 0.1215505686746317, 1.4850546815331578, 2.90124785320579, 0.9193799243970369, 1.4109003071198862, 0.9342714574384375, 0.7408981122108215, -1.501451886644788, -0.8528561599738412, -1.4502786649323292, -0.060333190180409904, -0.06215199874022316, 0.6962114020423124, 0.1737374420722428, 1.9987164641082087, 1.7922666332582982, 0.39258330183185886, -0.1955663537656974, 1.185062371327038, -0.24969600604011072, 0.5062590514320574, 0.7374924629427219, -1.0887076741188921, 0.9197089124134338, 1.4198792364404926, 1.13966263395932, 0.8820726768303652, 1.1454947730219187, 0.3830272308939737, 1.0330281295592512, 0.1958899672744909, 0.2610941691615629, -1.6928895703415128, 0.08949085370524765, -1.6099870201619317, 0.6146813355739139, 1.0232681185457035, -0.6120020584064751, -1.0855633146564565, 0.9035218354603602, 1.199279110133032, 0.21247320768848982, -0.8276719054682797, 0.34353353507020123, 0.7795065425753578, -0.31690501369321267, 0.08404007020790137, -2.0217996637419504, 1.4723540101508836, -0.5690532461968705, 0.7600008532793323, -0.09696213550941978, 0.49872412917775666, -0.6501714914135994, -1.4186463922997374, 0.4572717163404996, -0.6798540159722049, 0.8800683478695012, 1.1617475981837795, -1.2832223575262358, 0.01811044220476568, 0.5665224930728516, -1.7263899334779662, 1.0788518344074862, 0.5214662704113713, 2.207851490608375, -0.8847331619490723, -0.22393893146647295, 0.2604924986511237, -1.065720378325982, -2.4784405095403583, -1.397338674255014, 0.12733886071252698, -0.962990797187108, -0.4158341820319732, 0.8295084980828852, 1.129362539634652, 1.4448964367746397, -0.27202686813738103, -1.1376577043818543, 1.1669873661563108, -0.5526532153140147, 0.17431258922451653, -0.08674760587893786, -0.02662111271639052, -0.5787298408624987, -0.46418731609632075, -0.7338887598113502, 0.0037124668666011543, -0.4390315224865612, -0.5445053993271162, -1.1731970859703744, 1.557358039479812, 0.8235296531498106, 1.3403087264740343, 1.429798559996883, 0.8488733195590197, 0.6549815456848764, 0.5939979568631141, 0.571492357564412, 1.2838646589587073, 0.1968309175885564, 0.0125526247658802, -0.588379978175527, -1.459242663662794, -0.16058887298258492, -0.30513433025622483, 1.3958505210549053, 1.112993202632025, -0.6980224325960035, -1.1242172376210566, -0.04898442309094625, 1.7267743114344978, 0.3596144012700469, -0.359544416669036, 0.20255944297423273, 0.3676083732835713, 0.8149334833372205, 0.9572709382349587, -1.4303046720322652, -1.9840617027488057, 0.8352543400425974, -1.6685708178136907, 2.264358935950376, -1.1013820170238586, 0.6513073416660541, 0.5222811637226092, 1.6332065112971001, -0.18689854597886257, -0.8293836626550278, 1.2200036287220326, -0.948302395460301, 0.6269276746157323, -1.8413847347422614, 2.975492133500898, 0.5732253342246594, -1.876866690355531, -1.4492981424636866, -0.7472606420064576, 1.4876059940278459, -0.18934308720894036, 0.13020040181367357, 0.5331924552669381, 0.9913637676227545, -2.6437681894231435, -0.6461446779487539, -0.8660236542618331, 0.47452405238110584, -0.4790606483008819, 1.5321216571398668, -0.1636651452718229, -1.0332700298347521, 0.9892360243254097, -0.6416390065504894, -0.604900108391799, 1.535151051934949, -0.18334305957155458, -0.35686131551458816, -0.3292665860742744, 1.7738534285950363, -0.33142178700758057, -0.6235361522388553, 2.8510918408680124, -0.7318379837818061, -0.6194976835634578, 0.8118142867300344, 0.43758672808479837, -0.7150266134830248, -1.9406394619639358, 0.8679359705510734, 1.4354983174276066, 2.182868585469132, -1.1741764376487758, -0.9331282790464878, -0.2820770772397286, -1.9483310573156807, 0.31916263280850626, 0.6390360973776629, 0.5428826848071413, 1.5065733412421733, -0.47412499801799024, 0.2569777134684139, -0.18464959701431985, 0.707300443390559, 0.16960249404796737, -0.4185489493255141, -1.4509136246246903, 1.2609714707832425, -0.048585931918069494, -0.7466175012069378, -0.805144923911586, -1.6081696632587419, 0.2108448776087118, -0.626995367880836, -1.25582651238933, 0.03382654045677089, -0.45889090147992845, -0.2896301303848118, 0.4922810729687261, -0.11561150744781683, -2.0656398984212156, -0.15730996466261546, 0.7768976641774541, -0.7044791153933941, 0.8524501556338853, -0.3340090119288742, 0.08640562469139157, -0.059343641632369076, 0.1619562886451128, 0.15046570393731748, 2.7590525887014667, 0.22065232253703387, -1.3774088537570648, -0.29499229105904573, -2.4537835279476146, -0.8341158090629236, -0.43274207019506117, -0.14358452337381933, -0.8677025372132973, 1.0347284219371276, 0.48707383897255696, -0.06866257813543919, 0.2937618607534383, -1.161359070554741, 0.21001598604651528, 0.4159405289601604, -1.5043005890504582, 0.7372524407400997, -0.5334658384258053, 0.2567239585606655, -0.6299751233419266, 0.024035161278926437, 1.1244580271586777, 0.40836377201711715, -1.8739717517634698, -0.26853628794603523, 0.37761170331094157, -0.0050819767759484056, 0.009684786386250501, 0.2636875321138984, -0.08553945533113934, 0.33475288490766125, 3.4237712468503103, 0.744628978129671, -0.9096458649167182, -0.6827694846192245, 1.6425500385797525, -0.3900596403135759, -0.9509348833512404, 0.3229857369820825, 0.44175525248542286, 0.7931445181078505, -0.06988463350772384, 0.6819214512912009, -0.06839741587635721, 0.4734557044072717, -0.9215746025534817, -0.6195377638236638, 0.809667872762421, -0.4103668947560523, 1.749809215983805, 1.001647179219911, -1.7659243403508436, 0.15383957509758237, -1.2779831760745572, 0.2669263499455465, -1.4256436904962992, 0.040903466313536106, -0.9342945534262868, 0.7618231087000356, -0.30058739646889815, -0.5446714593776727, -0.4802089660362259, -1.1432227238603179, 0.5174957898345334, -0.26915089392842423, 0.3387263580347474, 1.2480509452812811, 1.9521841872543286, 0.9788396157168914, 1.001353646981955, 0.40906237950521346, 1.2380051766092655, -1.1622188132692055, 0.03880070372652659, -1.3157311036080868, 0.21159132832002855, 0.8251757971684041, -0.5943198935837782, -2.059249774668197, 0.4455096569146938, -1.5530036453685645, 0.24334104727505046, 1.9679440499519993, -0.14949638764508505, -0.1787890634869671, -0.8694565617159877, -0.02701940155527667, -2.327140574554701, -0.3493894186252125, -0.02711649643869937, -0.2125855163161856, -0.8626785926902893, 0.5125620452253108, 0.835126803441082, 0.4370304631746852, -1.4380277943151216, -0.15463871080474192, 1.427347151863727, -0.03594236427723813, -0.9987807222089615, 0.15285084511988004, -0.4453218737326093, -0.8774506171339351, -1.1301294572944445, 0.27932962145356316, 0.666378400360196, 1.0765917423686246, 0.2439549047998887, -1.00859364816552, -1.757528113553421, -0.7922512836603205, 1.4533777876325222, -1.508283926364581, -0.9454297378995183, -1.010459444419853, 0.0754147254586834, -1.2810537542822706, -0.7736354580243704, -0.811961379205231, 1.3638217257964536, 1.077496971491708, 0.5810375830537511, 0.3551271969105679, -0.043876281219692365, -1.0850332393056394, 1.109609770945844, -1.0337911892064604, -1.8807813444109054, -1.2265714811977597, 0.3936172157806796, 1.0778363941578806, -0.8644861643567047, -0.9521061052105131, -0.3765845085538441, 0.17855829086113095, 3.5953876986672255, -0.8488543068716493, 0.3153960860722241, -0.4124980314658376, -0.25957042793288443, -0.47466672457489073, 1.251745108485312, 1.9089401526170708, 0.08093711755806289, -2.256777082059624, 0.324177164165908, 1.062105790670867, 0.2886235312894662, -1.2983305542602077, -1.5005961252940438, -1.4260396412546816, 0.12572172650108407, -1.371518218990482, 0.5998645930096181, 1.2473531605780193, -0.9358060344486432, 0.49295286102524044, -0.3494884497630849, -0.9308402692062906, 0.3630283557686611, 1.7611911540817928, -0.7229213248269448, -0.4323877136781272, 0.09012216684853104, 1.2693688025965613, -0.05609728003750563, 0.2942911094966865, -0.7311965810915613, -0.21592794240105817, -0.4553253041620339, -0.13454483357874214, 0.3803586083160361, 1.2706120469339364, -0.868299098407261, 1.59925697493435, 0.5433594960509881, 0.5675579810614343, 1.9203285366540146, -0.5030970822643847, 0.8421602450844566, -2.316838061301056, -0.4201799135308444, 1.99145358910135, -1.1698739038813457, -0.48526560569590693, -0.664516213841126, -2.1784216925774254, -0.05592421534349575, -0.3735237580415768, -0.22461780649945687, -0.6015415198184665, -0.525149213451578, 0.20817264425532928, 1.0421502948740846, -0.24223189745187212, -1.5453453515930158, -0.565952007041841, -0.453301777620275, -0.26956499012979956, 0.6612001818907256, 0.6566383906736746, -0.7620891486112908, 0.4039229699126195, -0.03287499950025958, -1.728025679680301, -0.1351648490652594, 2.979844425070889, 0.21407749737048995, -0.41165660712793767, -0.8911684286042895, -0.49236046031915226, 0.08810619424950021, -1.4051338603716423, -2.3224238004285707, -0.3410883214075715, -0.12686282703773566, 0.23609553256542695, 0.23545196849666264, 1.371312887239788, 0.2318653380046876, 0.08464059182127714, 0.19008151199377613, 1.7562161679995132, 1.181971977987871, -0.8172519034071913, -0.31575932783054717, 0.2503737947188051, 0.028618079946139307, -1.723439924093865, -0.7885161782185284, -0.594263411951702, 0.5644435285732619, 0.8811148239408805, 0.7833035854562042, 1.0392171119322082, 1.8371154985886862, -1.2420591801850245, -0.23753657646460405, 0.19313774990116925, 0.5053866496884525, 0.3283028032403514, -2.225396433305001, -1.096249407991655, -0.9149883628966105, 0.21230053589695053, -0.6023002440801871, 1.4512382841053386, -1.5038113250304717, 0.11558860384831522, -0.06338166413389325, 0.22201020504142566, 1.4399368526678278, -1.536144263111769, -2.717778670757182, 0.1168039138752043, -0.5866181500734327, -1.5377442224077151, -2.0944415177169953, 0.7870016058915985, 0.8949404757727989, -1.2488701028525535, 1.8425900504983932, -0.8820586551654293, 0.31200772222466067, -1.4538990075976945, -0.4972028753925732, 0.30783322485667264, 0.534974938780373, -2.0058475112711514, -0.4541796977906028, -0.5567288589208035, -0.7063829736735863, 0.08317733846151737, -0.9039919874880522, -2.359353503098415, 0.11425878193276912, 0.64706666019578, 0.4359959376210403, -0.09281069482301793, -0.5382334133878951, -0.633983343063867, 0.49835413266819356, -0.6176307398455463, -0.58828999383318, -1.7334295099492802, -0.8643497543156821, 0.689824201173873, 1.524711206099055, -1.548684848469057, 1.2284263304913572, 0.19868751298961676, 0.11836116797672853, -0.06310268278090121, 0.7479073753397237, 0.19168429076964602, -2.501823109461287, -0.673945501033193, 1.2235988334078434, -1.1636116702452202, -0.22624467871026605, 0.5071009399593757, 0.6279007880533118, 0.5692262629524086, -1.7255159569914225, 0.6397252376986503, 0.23342621054073684, 0.21399479954715414, 1.1788921695577175, -0.4946728962147127, -1.8310549540520982, -0.3690830035843751, -0.42224783195423987, 0.32423026673778105, -0.4402301947763417, 0.7465865033369634, 0.43199223950922194, -1.939062107304355, -0.10453191019598392, 0.8153426406136252, -0.7800663274052761, -0.4477465519532468, 0.01545038682624204, 0.39608506375087277, 1.1493902335657455, -2.130104535188091, 1.1476608122361165, 0.9320022617397814, 0.03568906908977818, 1.4420580869170465, -0.5372177387698984, -1.1864962493216553, -0.5500096460519907, -0.763791941134191, -1.697389937955057, 0.2998477603655102, -1.3941268553154642, 0.5706575386796322, 0.7831976119427991, 0.28018300766602294, 0.13693472548612742, 1.0154445987056024, -1.1860807036684393, -0.19007920263882952, 0.1523832525182091, -1.2093360312349437, -2.100547843467698, -0.1530333323078057, 1.1971503331114541, -0.38189865297027337, 0.7916834209392376, -0.1728944869857963, 1.160481352505748, -1.0427224611678692, -1.040602541009036, 1.8273660232377136, 1.4195569065800453, 0.8386877142814951, -1.0778628423584962, 0.3469301281229362, 0.6711365751637789, 1.1526892923346204, -0.18194736753591428, -0.19855569336096057, 1.688961038095004, -0.8745505869548725, 0.32284669288734297, -0.8259830110426495, -0.3611221208798455, -1.4195164842808716, 1.1907305012760756, 0.1522501461827938, 0.922469684257407, 0.016501336648811274, 0.7429642513221194, 0.10750421501190041, 0.4808356602618045, 0.1323677945856938, -0.7034274377386549, 0.09645911224015045, 2.532325541632594, -1.5866221126564115, -1.971084122083064, -0.13301270859207348, 0.39343143403797187, 1.3390674367668436, -0.747255398772972, -0.16290875300595686, 0.4979804345513483, 0.08795913929250766, -1.1826687439735564, 0.8708434312878163, 0.10036766629128512, -0.5580601750838238, 1.0076432223870029, 0.8554191239588586, 0.5698707282163747, -0.20863591717796462, 1.3123618498586958, 0.820266660992923, -0.05334598793633222, 0.10738590560666669, 0.7476571054869932, -1.5691946737355327, 0.8999837788505479, 0.038792413114335636, 0.9914820089613138, 0.9465564741859593, -0.9548035752110309, 0.37108183095020375, -1.6932708709240643, 0.5742732453192894, 1.1869006875492747, 0.2555908214103616, -1.3999854653788708, -0.5270366881316677, 1.8409181821652891, -1.7547244042030132, 0.07405473692919617, -0.14925008749413637, -1.8439449535735588, 0.3444816081051852, -0.2983334069128005, 1.38335867526748, -1.9630063235244388, -0.5193463961965822, -0.11562338831110575, 0.352400820758953, 1.6482773735238936, 0.6711383514595195, 0.2238366057536359, -0.7182362270286512, -0.35435416471609005, 0.6485877172023825, -0.2757466733288484, -0.3563016808385527, -0.17817414950901492, -0.0019081140052624073, -0.39273602229275606, 0.06348346009811161, -0.8742437683710312, -1.8689872110353185, -1.5147133895052636, -1.0184612409555949, 0.18139626346512772, -0.7129650139254672, -1.3195899155857833, -0.21170557963600709, 0.49610977046001814, -1.107773982297535, 0.6462111934112551, 1.688912150364615, -1.3591299269239323, -0.7475464904708393, -0.9405677474521547, -1.693588315970276, 0.20250426856488513, 0.9856658198526146, -0.44166427943855957, 0.509830562978939, -0.5991965310798085, 1.4973252224613436, -0.5546344165085834, -2.2200296733850635, 0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967, -1.6848834226351845, -0.468054031300935, 0.2231411040063078, -1.2079120248207287, 2.0110030501455016, 1.4453850086239999, 0.34059707215507334, -1.8213959334958643, 0.8699402772722297, 0.4899667100861624, -0.01173787871675348, 1.1948559206670855, -0.8870269587625144, -1.555705163842219, -0.26533917383348415, -0.3325290424739039, 1.5977665804314234, -0.41203089860517084, 0.49183361850554513, 0.5136570154037132, -0.23309124875198506, -0.7998287164209388, 0.530066185314952, 0.47106304564421286, -1.0105968114955957, -0.8353508972894879, 0.12377709284481839, -0.07289187751377658, -0.6735741109340289, -2.0639344018430106, -0.014438189818046943, -0.4713457882035365, -1.3988791318705927, 0.7076705525000143, 1.0974072497097722, 1.1672671573256546, 0.5553099499949979, 0.12122031680888311, -1.3280507129101098, 1.1654608124772015, 1.3139075127865134, 1.28261825548601, 0.8583778828163117, 0.4508675701062839, -0.3773168693728364, 0.16884703765184494, -2.5899418769593017, 0.8980383022257733, -0.7871723126611332, 0.008146263601196916, 0.15100042746757067, -2.158690321719755, 0.5154773443584927, -0.8968793509306945, 0.12745529032276473, 0.3057102963260676, -1.127194036956006, 0.06889018035163645, -0.29649779158358486, 0.4000800574133786, 1.3294197922581654, -0.9809012577471112, 0.2604706024238921, 0.5802535538390949, -0.7974783258128166, -0.6640912726671294, -1.119222930304624, 0.5834025731102502, -0.25723586541301474, -1.618253196199123, -0.0570695619599075, -0.43841397343582966, -0.6767231131676439, -0.38371376805174173, -1.9996328333376983, -0.33850140623335534, -0.1183524981649774, 0.005796690030477999, -2.458306016054147, -1.099750705180441, 1.054860270281014, 1.1651235359219074, -0.8686068833819991, -1.4001372299430193, 1.1272944804074991, 0.03719751404379593, -0.06732456664178753, 1.0123217113273348, 1.396494377415687, -1.114892120467897, -0.23680354926169062, 1.1762829232717322, 0.35544788004728406, -0.41986744728203046, -0.3867023929082546, -1.483298749076887, -0.566334552372417, -0.03321061530877886, -0.8527679221181403, 1.4516682272189547, 0.7320822341298279, -0.05200885253027685, -0.9525949548843667, 0.5751795467491231, 1.178459960930901, -0.10762850518883417, 1.5651830651133336, 2.1380607452390663, 1.2280945171647695, 1.4042702000856067, 0.09325784801982663, -0.3557970327475224, -1.073778288097418, 0.8968276612463406, 1.399133831515596, -1.2439663723417378, -1.781799686206601, -0.33427106612358554, 0.889230360742913, -0.41170088971799085, 1.2155279834457413, 1.600649868770159, -1.6424774434123148, -0.30897369601229935, 1.047363878453214, -1.0791866371859211, 0.34680511458320423, 0.9927888544576774, -0.8514984695838704, -0.8372280244524042, -0.22804642016295132, -1.3868435427851724, 0.7441016059552877, 0.06972829881636747, 0.3420780025264497, -0.04386730461990216, -0.017778941397242242, 0.6102135468147727, 0.1101978218029996, -1.401046648194382, 0.6208120606616816, 0.26306079867835747, 1.6277476977056633, -1.4148077742490233, -1.12911289812443, -0.4018145604094114, -1.3755867441903893, -2.399920233063965, -0.020319571626188252, -0.895842610909627, -0.3494298955785707, -0.2738387174328631, 0.34922230639219626, 0.07109890321458032, -2.4101191646725644, -0.7411692543552041, -1.3233841458208606, 0.6863453426487733, 0.3632155343313335, -0.5590033258828403, -1.1449685446383917, -0.7258003922221851, 0.278797530701865, -0.3441402294664407, 1.441339424212574, -1.2335052347473323, 0.07612868920434228, -0.4241597163106437, -0.05332877983539378, 0.10099084201256278, -1.8787758687909357, 1.4045284087841965, -0.04347827565492549, -1.2990797348095602, 0.6319627183761264, -1.0748380347638893, -1.280830568026441, -0.4632576940943757, -1.2762157345443148, -0.4871099169463196, -0.8573516675952042, 0.2602500067557723, -0.663512812580364, 0.9193611678505703, 1.4195120671985408, 0.31768737978504635, -0.22676062071355782, 0.7472485772463154, 0.33979457913367445, -0.024989366536706515, -1.1780091950874647, 0.8422172106604986, -0.9853850143769382, 1.0084091587937258, -0.5446586568124329, 0.2287236140419025, 0.12649973956792954, -0.8624432460024017, -0.2042801144909528, 0.8201641258212513, -0.8429169760408267, 0.15786776211979775, 0.586990037118922, 0.7581270686613231, 0.13813966047716805, 0.14287983497159015, 1.542247836275435, 0.6889352238499454, 0.3790751131802156, -0.36007691647378387, 1.5453032787583676, 0.4475231964904419, -0.06905081640069816, -0.2556692520813782, -0.6423795723912976, -0.6500078649365075, -0.6577072095504994, -1.4866829628942408, 2.5030140049559653, -1.0572143847418314, -0.000571660449572993, -0.042894005602608545, -0.4591852328122149, 1.2843268761512387, 0.3968454779394536, 1.138745996685296, 2.4071733886455227, -0.10540633867195442, 1.2714215049136428, 0.04757946360595818, 1.2348108652417815, 1.6311115642560317, -1.6302649244099794, -1.2745470694966483, -0.8131839077565575, -0.6825393122927416, -1.0794370197645617, -0.7204636565534043, 2.1467941519636455, -0.18535362890328835, 0.6625127934408671, 0.38979365484662193, 0.7719784843101606, -0.4958538436662962, -0.658575404725063, -1.8250261743740281, -1.3009369789521832, 1.1569797741579901, 1.0803875458840382, 0.3519814471093802, -1.5678550885987372, 0.17700126122173684, 0.19570581803986603, -0.9713133420910822, -0.40681730492260765, -1.079374837348168, 0.9333820675088979, 0.7164115790249227, 1.5974993677559646, -0.27698287787067033, 2.0383895476075855, -0.6836849892211939, 0.8311193676081333, -2.4241121219014663, 0.31596002357495434, -0.999473279382509, -0.262687475352513, -0.46071381621370666, -0.8976883600787323, 0.5219272929937467, 0.9722622620644177, 0.552832436548929, -0.027467290841698567, -0.6107378749038481, 1.3506129449321138, -0.4521398968561788, -0.22117060492964993, 1.3204666166460701, 0.42542027990331455, -0.19467559818902735, 1.3362817877824478, 0.1643979281153062, -1.613150980719597, -0.5326178763831365, -1.5741387694417994, -0.2358632094400509, 0.35096623923842685, -0.40087086833885227, 1.547569381699142, -1.7090186764224344, 2.2199280575728784, 0.7516533958698258, 0.6804837145322774, -0.19556806995297935, 1.3537057525493934, -2.0138393066087383, 0.172351936169543, -1.7024086384702934, -1.0519290071418026, 1.6258351842437149, -0.11856858846558817, -0.8121335733777978, -0.02927583999406098, 1.548105034805526, 0.6981009969478109, -0.990277098683295, -0.15604117684813257, -0.9747927516511783, 0.4652704424950469, -0.31289780730884004, -1.651056798736739, 1.2755967903796157, -0.13648504411430237, -0.48481306969894616, 0.023313382404551213, 0.48504298344685315, -0.8507882704201493, -1.039212404883905, -0.653701398776706, -0.5189768622716721, -0.12449303534256825, -0.5128172446702866, -0.06818346256734656, 0.510667943805758, -0.20971767447744363, 0.7975878663589364, 0.3042695491801, 0.2654566914993375, -2.0012906991903865, 0.413870629899118, -0.6025010011948203, -0.14082858261327996, 1.075340195058932, 0.2593371488480129, 2.62922759693777, 0.3324210527578405, -1.2020419530087723, 1.1926421271709948, 0.2347858166167028, -0.9756048534996443, -1.8200265368846862, -0.5169307203823522, 0.1500518697766681, -0.038484274917838325, -0.5595155602432803, 0.7826664898369591, 0.4484219149387221, 0.29541985156163897, 1.3984689244673294, 0.25998037440140653, 0.42332643185294355, -1.2422400480672728, 0.2176902105319219, 0.728761958261402, -0.011206770084421624, 0.42373795905496436, -0.0772966783872132, -0.1844058501562145, 1.5231610698492861, 1.5815719719777372, -1.0224998294567542, -1.608411795245145, -1.8940383890496493, 0.5392647246180361, -0.9404210876785811, 0.24515734401955552, -0.8758837658412391, -1.528076170772824, 0.16773671218212843, -0.06372312245930913, -0.6625850298997638, 0.31931330490352056, -0.7703083579211024, 0.369010898692774, -0.9262558726002627, -0.021452503506505422, -0.6884402260487072, 1.5154027937733978, 0.8284697701567305, -0.07697958106921719, -0.4538814926580921, 0.5439309292438045, -0.5492443043774654, -1.220225030532012, -0.7053512461796413, 1.632643282613422, 0.5778426489678986, -0.9229177377752995, 1.588544297460673, -1.7481169305157809, 0.2618776316461439, -0.7711250331583439, 1.4721431859882452, 1.6321252809774605, 1.521708343024266, -0.46073261039758234, -0.7747734720993155, -1.3354599996427268, 0.9861401026653767, -0.575980258880269, 0.0853876730028182, -0.6195540436182536, -0.5432771078257063, 0.3060459872354665, -1.824118723913547, 0.8784176817828129, 0.8097094976615903, -0.361780627962229, -1.467071190440473, -1.8907115007272879, 1.1242546008439889, -0.4974181028535098, 1.829441455586246, 1.017979249905673, -0.7075497604105697, 0.059183606525579274, -0.13056990600722507, -0.5832122715205462, -0.01409309201012074, 0.016108610412205803, 0.1900118760884006, 0.24188780949423172, -0.8882450727066196, -1.3576659214518099, 0.07447367725510536, -2.991099769542917, -0.6488322635921112, 1.8595982643945574, -0.702641433986396, -0.6416959601570708, 1.3390388750212445, 0.057488906459266735, -1.808725561176733, 0.2948187135806436, 1.1497414866629478, 0.8709941695277267, -0.2850339815191343, -0.4997261831464098, -1.4398917507631508, -0.2148727154738073, -0.031164729254402425, 0.48150661412660234, 0.12415703923674576, -0.26613703422724105, 1.0565002395567262, -1.6752860867796824, 0.1869147939846373, -0.7272110183291539, 1.6245102578872348, -1.3773924349992401, 0.14296540214244555, 1.4878267201868336, 0.10331510654880505, 0.9062060348158155, 0.9324085143967664, -0.21818888199568304, -0.2522508930003547, -0.8562525871887124, 0.10204130138311729, -1.0184106320915587, 0.1825164284873822, 1.056310703030919, 1.7552903725196911, -0.12454007621445604, 0.31880532192621097, -0.35541825354040035, -0.8580393155101081, -0.2682711254651047, -0.30783295275138195, 1.3170139199898268, 0.7531186614185573, 1.192570085627795, -0.6615475858876328, 1.4991876630051717, 0.30861856418442385, 0.46151436623585584, 0.3960375120229514, -1.5852068567014443, 1.9903541747766398, -1.1185087223822021, -0.5183442785156127, 0.06782511507671637, -0.13813126796841926, -0.8649990189511263, 0.6978353775870149, 0.16085392211498364, 0.7383270750320552, -0.6856342770612354, -0.6045226539767258, 0.8110514204550441, -0.36508901079756473, 2.2802828142762928, -0.7663535452926638, -0.3887166303815122, 0.9034427218611359, 0.21868488058095606, -0.30457226174639157, -0.287175489125426, 1.3568449350217864, 0.39711905418048105, -1.1763187968954603, -0.33474769656895564, 0.917254226523988, 1.0804852401399638, -0.9584787505991971, 1.7478622379080422, -1.2473029790869914, -1.982585782186715, -0.41852445481952294, -0.9465815043529053, 1.3486167490991765, -1.3147522922373933, -0.14921512592164993, -0.6510935828594568, 0.009685462499594857, -1.0764421921168665, -0.12975724308626338, 0.4720265080850217, 0.3117809833804109, 0.8469168005900016, -0.520242573974674, 0.27675686046474957, -1.7178145403893597, 0.439729002709256, -0.30048055544717606, -0.6302171098523444, 1.241050608643494, 0.5721350887681553, -0.0022023636536079735, -0.4924114110139152, 0.9950463422748212, 0.9816810712679719, 1.9924377989279343, 0.03900009491657034, -0.2935571188258591, 0.1266892245615102, -0.715464769225636, 0.3145853867440553, -0.3835873169761903, -1.0953446648325833, 1.0121232148460444, -1.0957236224096085, 0.17063463111383734, 0.5102992173497909, -0.3658969046671184, 1.23797611806204, -0.18059200075977175, 0.9936325102325779, 0.18430235850671245, 0.16517189020344797, -2.016269812957052, -0.3616199185761283, 0.7527532999342817, 1.3277176349050535, 0.2920534284459897, 1.0606099435377094, 1.848598832091733, -1.3301443272735525, -0.5759958625549068, 0.27878675140631204, -0.2315083920631258, -0.8288316208067809, -0.2635580627160318, 1.3355871376746895, -0.8117302674348011, -0.23432703924765444, 1.92799930513707, -0.23101856846075614, -1.4238524703136513, 0.1368000358051577, -0.2055684135567207, -0.15855445409422964, -1.2600442043395892, 0.1701769006730323, -1.068866010850334, -0.1904292641612836, 0.5892434527813512, -0.2157459392172624, 0.4055498592698905, 1.6497067243577175, 0.7890192766736421, -1.044353487265588, 0.7953139847174688, -1.5740154854045074, 0.9665654379132748, -0.3889094455704384, -1.8426397459593846, -0.9001191779220159, 1.7045921258988515, -0.8923330121142684, -0.5956915482032328, 0.011227289589172133, 1.7111591357647962, -0.9587860284026688, 0.7548194520215976, -0.32603844480628175, -0.2353359336920787, -0.16729381132141224, -0.6023878547302806, 1.371156314999161, -0.2459473828028695, -0.2620130902224386, -1.2172056461838572, -0.20656000988613168, 0.5008110746890201, -1.4028780271648753, 0.7193747259694553, 0.0660307754939295, -1.3093771377458805, 0.407051194515542, -1.1823392140768092, -0.4019555472426395, -0.26250820888118304, 1.2702869545254583, -0.24272141574465245, -0.42155102572483116, -0.05194109601117269, 3.292873619493133, 0.7890333104486489, -0.6211877906484109, -0.8047810389893006, 0.9678567436130486, -2.079988930109922, -0.6016769585932343, 0.12364670959331653, 0.7229553379296235, -0.5227730192140618, 0.023991105176350242, -0.0017528334343272331, 1.2586605379107056, 0.8446327540395329, -2.252502331262609, -0.5270068966745032, 1.6223796347828976, -0.4278645067985037, 1.6333830568090013, -0.8062257833307152, -0.30685337459460577, 0.3507708774563464, 0.424527526741457, -0.03735386264172313, 0.229879937036083, 1.1454140027646036, -1.1872670475847902, 0.6262020869197982, 0.7589488691885292, -1.6862092963785988, 0.7944545737967115, 0.9971081922053232, 0.7560471613916118, -1.1851981001821967, 1.0965175918763284, -0.46530937265986, -1.2761702411382863, -0.9791491731581209, 1.1589807765966766, -0.8156014346461856, -2.8072546995497247, 0.5334627416087777, -1.3798149493182552, 1.3972706448160608, 0.4552374166958973, -0.535433943499853, 0.8920580452737524, -0.5856331944062472, 1.7623274652492553, -0.2852747983665435, -0.18313041510663963, 1.4659299617833124, 0.1519470164480292, 0.23355499681619366, -0.836602381173288, 0.18618502715241547, -0.08859676768441688, -0.7180391575300691, -0.36232537769580714, 0.36477740973605915, -0.9281105879066266, -0.46197664970984853, 0.6483976493075976, -0.3812217162848902, 0.4303579894467762, 2.0043530514779873, 0.39102979400332366, 0.37534637396631415, -1.071734524715999, -0.16045645113900145, -2.998145904788263, -0.36470187389744846, 0.03991547011616779, -0.7008645685896715, 0.9912516955548382, -0.7450675439952815, 0.3264674970899282, 1.601666916097199, 0.5405397248625541, -1.1861306612606524, -0.522172803007203, -0.7727094284088601, 1.2277562505941912, 0.37759283992313625, 0.7444682278368736, -0.6522853231400494, -1.0696424743836717, -0.8054574164094268, 0.905380130000978, -1.1121207299686113, 0.2063449976062078, 0.5176153181186626, 0.2301751658467518, -0.17968415020039138, -0.5804234791794292, 0.522042470813759, -0.47680230351950187, 0.7668678996668346, 2.1152176375874023, 0.4635399730851282, 0.7692324460373827, -0.5214713943997042, -1.6311809160767827, 0.7017462722924709, -0.31859839125881545, 0.20304228378387937, -0.18790051825211995, 0.18432739014512065, 1.1541296937922023, 0.4450818568868103, -0.13551483948610296, -0.2758105920455811, -0.5849315949646472, -1.0646125679003637, 0.27411289538745437, -0.5032261617196119, -0.04351057134624247, 0.7743236339777182, -0.6756715811861062, -0.2671752620926679, -0.23914374307205996, 0.16461452793247355, -1.4436309225983486, -2.20506341329235, -1.0189819575984795, 1.5608022939480573, 2.31499985378701, -0.4181529433643855, -0.2711132087457424, -0.7206084096900425, -1.2504073094445143, 0.31340429692041716, -0.1447897506201982, 1.1850402988106572, 1.9541706849775027, 0.11232761778850357, -0.4382234425091706, -0.3947615339868321, 0.7015762348678443, 0.43950731587232217, 0.4486281613565141, -0.33259394965579864, -1.2893276502905346, -0.5665027824228605, -0.9867864794525018, 1.7152028381164288, 0.7425175887812803, -0.4541542908237512, -0.04974419881485532, 0.7205327224864219, -0.49642760570489125, 0.5806736618394556, 0.8088452773706619, -0.15195744367862507, -0.12096553277305616, 0.6220396950025358, 0.8874367244840082, -0.960123924615042, -0.2512769100863725, -1.3487372983592427, 1.9195263893870158, 0.1391130058484598, 0.3556392382753691, 0.022946113835703726, 0.06403402028906036, 2.01431714516637, 0.9153269759513197, 0.45535078555080316, 0.8164902531014034, 0.7554878281598991, 0.7302943512899034, 0.9227450720901643, -0.2149435624765486, -1.9175638929241665, -0.47494584965396475, -0.8209686635530825, -1.475086806478942, 1.5375697346337323, 0.43409387407100747, -0.5748944134752534, -0.1207717673708367, 0.10757938709427231, 2.24973612340786, 0.5656573548928321, 0.7510332313304937, 0.2925755284670311, -1.1385387437599415, 0.9278383480094607, -1.9329319879816766, 0.8833452963447278, -0.9531724053699292, -0.1039290425260258, 0.4382286101469634, 1.8998623656623255, 0.19200494459198952, -0.6716950287224315, 0.5638093918454188, -1.6242049283972644, 1.7704636715303947, 1.6534314391102312, 0.92655666075164, -2.1666623771571185, 0.3089037330906556, -0.34387294467445684, -0.17869075221031164, 0.45228978471381315, -0.9526180775686287, -1.1784311215584218, -1.4588182758831976, -0.3751354576229393, -0.3058513410728059, 0.9384734481636833, 1.1326237644059438, 0.12950394282796612, 0.7421113354249786, 2.22774088023295, -0.38297985887788083, 1.184609638956563, -0.28900852784476955, -0.38476787730344003, 0.06257594537962448, -0.8447175394855944, -0.3276448761445928, 0.9520069001238655, -0.7029145751675628, -1.6244073387265128, 1.622978343226983, -1.2795553886248943, 0.2494267093436905, 0.6236424924999387, -0.04290636875881789, 1.8562326434548018, -1.3390517668015733, 0.5090655455389611, 1.2848563335735044, -0.5387392229559257, 1.6741064751678032, 0.10066535315992477, 0.8949591322162106, 1.6846660415357275, -0.47037844642707904, 0.4157622049238856, 0.540404845364168, 0.3967936830533677, 0.43668944123398024, 0.2112361885627918, 1.185672884091169, -0.33641286222705097, 0.5497594019101291, 0.12465203566067538, 0.38350811363315446, 1.4507326394999236, 0.14723038127353738, -0.7869045408490771, 0.39357209249435554, 0.9743220259735553, -0.06453115565194864, 0.38254243983530506, -0.8643740939583053, -1.684728335866361, -0.20622146179421566, -0.2747979191346741, -0.07028871827775147, -0.5729020560099904, -0.6189757445377713, -0.1510371111896753, -1.1820077963068163, 0.6043354866597276, -0.9774217378587312, -1.3380178663597784, -1.4201147833071752, 0.18880445993987796, -0.8427639940831457, -0.32186427356745245, -0.006664725012722541, 0.8058032956183504, -0.23641847937920588, -0.6756647705708424, 0.4773883748212866, -2.185477701275724, 0.7531165422993013, -0.8203844714762077, -0.4004758384259698, -0.6468022951980026, 2.2667765095579213, -0.1464154957378096, 2.098114036236069, 1.0184508455410493, 0.8103126555466662, -0.40972058902905745, -1.1414090507678094, -1.3867326701405396, -0.4507753555588849, 0.10028961530046718, 0.13126844765242035, 1.8046340365305968, 1.0498294815194782, -0.1970397367331956, -1.4653721149167949, 0.28738863276181814, 0.5271374800610847, -0.1451944493283091, -0.9800599971955779, 0.6516285157791157, 0.3396200289963888, -0.8198525721107438, 0.6319579574491423, -0.3772650215173409, 0.3077068224849206, 0.31720206688921, 0.12158776309046304, 1.0809042082121207, 1.0642567891228714, 1.8179097447438652, -0.43206935605397984, 0.37786874569296014, 0.3952043620022568, 0.3619801074518372, 0.836701763727239, 0.13589241191151316, 0.5983402387018408, 0.11083062853937264, -0.47684235510432976, -1.425496108886025, 0.5861440987479868, -1.086649842646286, 0.8692343861045037, -1.5595017100635853, -0.11939217655297334, 1.867839017091306, 0.1529344462913203, -0.4142188866098133, -0.015382150772253089, 0.02331025826997036, -0.31332150638072576, 0.07177806286427546, 0.9588513248678675, 0.4790246289141386, 0.1782800679264196, 0.8316439535085373, 1.3697451219813022, -0.29239194315140027, 1.7130334754533454, 0.15301199433584703, 0.2516538496321531, 0.8052203626705442, -0.8193169757784692, 0.8297372716531863, -1.6382362402194854, -1.039626938505833, -0.8865946056863021, -0.9294253652017392, -1.7978162276590155, -1.992621134234571, -0.05491414933488196, 0.7607121087371761, 0.07984366129268702, 0.5462619894735057, -0.2682509648059717, 2.6409716720600263, 0.45749720934429716, -1.5363699364147407, -0.7376116600379029, -0.00034809918522295523, -0.0446268595336354, -1.0661827948417526, 0.20144275615808793, 0.7334562425309233, 1.552508206699953, -0.4212114236659149, -0.18798580599722212, 0.362342131367099, -0.40201566793731663, 0.24422295735481817, 0.5936899101332285, 1.4911129590651635, -0.012571888777807325, 1.1564868960369348, -0.4347382827914363, -0.03991151500405277, 0.8894520643614005, 0.6750877041971858, -0.8924490272423622, 0.06802820117873785, 1.3941390498912603, -2.2183459123693248, 0.728823441885771, -0.20738631995329626, 0.5619451894738027, 0.24102109818707865, 0.5988075233622759, -1.197341333157397, 1.141794439805377, -1.4503023284963743, 0.17970074803850108, 2.2516048850144963, -0.56902356791673, 0.5251052705298633, 0.41230439233508803, -2.0610354044549024, 1.6463483630850755, -0.3895932560221762, 0.023372481314313378, 0.3726580742458444, 1.6009305244339782, -0.5079472543165146, 0.026058442391582896}; + + +static double gemm_B_dram [64*64] = {0.189669602985114, 1.325049359243402, -0.732183062829934, 0.572714186764936, 0.578590600877031, 1.2388796995290943, 1.0500306672776403, 1.8192381659692514, -1.1405729828723672, 1.0122300292640196, -0.6803068888120192, 0.23558756797719393, 0.4590523848413457, 0.039978934156923385, 0.7649728251851297, -0.6523866340206094, 0.9057001363970097, -1.4969909024911252, 0.5583314398652852, -0.4452115501359032, -0.3304347302314844, 0.027571386474332372, 0.8939826883481805, -1.872118961147354, 0.5298280317907396, -1.0826478091988276, 1.2084845569673108, -0.17218404794239636, -0.3252179452060136, 0.3945233627729552, 0.2425669838461522, -0.2564454574318479, 2.0415809465850456, 0.6967377843326548, -0.9048546980985884, -1.234321257122067, 0.03613326393674803, 1.5030525940981552, 0.039812401385598245, -1.028716739224381, 0.905199590933292, 0.07238255324721113, 0.9920291161315633, 1.607092129619061, -0.7789509309904787, -0.8098065870783787, 0.2185071569653127, -1.0776572234997361, 1.0422979672486086, 0.35098947793500807, 1.058321853508688, 0.21414179532614872, 0.87002060394994, -0.588672020705869, -0.9012431889469893, -1.1027247239157423, 0.20399290647527346, -0.22033680012834594, 0.41392188096741706, -0.42930260307085955, 2.008106278814718, -0.17141366812550005, -1.0826275786645045, -0.9116258668673404, -0.4909043876322673, 0.5943271959845479, -1.032232792355313, 0.6916475040075348, -0.2814338568695432, 0.3019276636231262, 0.30840104248656297, 1.1260293291302985, 1.0658378320568267, -1.309665630454003, 0.03270078938345398, -1.042853289185364, -1.1963506272729019, 0.22648827570429167, -0.27781730274050287, 0.6724032102680387, 1.4810649208771722, -1.705538843107525, 0.09082361393666324, -0.7042276239280941, -0.2383161417380752, -0.5754942139316102, 0.2034652918512655, 1.0314063302051917, -0.5483340133806348, 0.7261075561744313, 0.24325632249018914, 1.2040307377783537, 1.8952069586290123, 0.07195894063173909, 0.41620952444354886, -0.38792744247312216, 0.43271658564463056, -0.7152907230181043, -0.27441611835118457, -1.2767143227797635, -0.7237480311094019, -0.7801386726592521, 0.5873572672607883, -1.5638814718009917, 1.0026700985921706, -0.20658267805579636, 1.1147082449222048, -1.8735264640919256, -0.010118223620103015, 1.3128640032531393, -1.2394667444809362, -0.058071070610180346, 0.3326917440450766, -1.3418569139214052, -0.35250711745478874, 1.062335579748586, 0.20356887701465726, -1.5085222292073164, -0.20122570212640017, -1.2154057454628897, 0.5158621290601251, 0.9695271692142623, 0.3441306717260009, -2.1992152335223514, -1.3802722217172205, -0.6034656461417384, -0.4801083441565978, 0.8538691740175305, 1.251004287596872, -0.09542742482466746, 0.40740998722283345, -0.46840541134330865, 0.6471911034482357, 0.35532009889140853, 0.7653967450899795, 0.9524656674056426, -1.6215943351797741, -0.2686500917542327, 0.9449563832937318, -0.20293909969523755, 0.020177369737896966, 1.8868326165910845, 0.4576448036103095, -0.2498818144309833, -0.10142946285532765, -1.449579663145317, -0.8489450230349159, -0.6568950465417366, -1.67036939630407, -1.7958306634788441, -1.1021273970619352, -0.21287356137371105, 0.4835462118207064, -0.706131682059633, -0.0005784215469045945, 0.6574250653163278, 0.17766778608163517, -1.8727680007027385, -1.5710173931120528, 1.7986529290207192, -0.18797275721228432, -1.3910123695349608, 0.4306425799188508, -1.219748011178242, 1.0949707620919027, 0.1513762139476246, 1.9338021854764944, -1.7210422812237611, 0.9885068182490291, -0.9803371411601391, 0.29682676074294506, 0.5079171532797483, -1.0067592408859265, -1.1852909158053921, -0.24870697467690292, 1.5263388569653553, 0.3621209495718994, -0.10875592605323897, 1.5707754718355267, -0.058214043298022156, 0.11649757853760016, 2.20745259723818, 0.22508102515092662, 0.30413440003257725, 0.3361637150433332, -0.29948851492748413, -1.4644211330145278, -1.1645688132881276, 1.7112956696610628, 0.3665551294097223, -0.892280722293537, 0.23500589115883444, -0.006491959097523364, 0.6091191876188028, -0.4461691518402758, 0.9121131054406446, 0.6355326129684161, -1.268683781896227, -0.21309922823334831, -0.4526268909737412, -1.4960032394689278, 0.5540823200822727, 0.2560919649556906, 0.6958730281917784, -0.5196649709771612, -1.3359468501779264, -0.9612977596469916, 0.3684109792157164, 0.46874289915027023, -0.23500821987366438, -1.2492858128054651, -0.9712261431242842, -0.11106638365989584, 0.9412519070406014, 0.49297323422258654, -0.8131389146040623, 1.6400307701149688, 1.0589667993101595, -0.4626925507420147, -1.4812253208994315, -0.44695524379636, -0.5088098786201557, 0.7417386987297616, 1.9120910039247294, -0.5568304246735866, 1.082342797278427, -1.7235037406979286, 0.803163868309887, -0.9769340341766338, -0.35112463351229073, 1.089671633947238, 1.4945995510345567, -0.9605994188901047, 1.8558602683726249, 1.2656905677375838, 0.42254046476492185, 1.6858550771091214, 1.157878804816697, 0.4573643259259206, 0.024994765804824147, 0.6922554384196643, -1.0810666579003045, -0.993616522481608, 2.5847749332602, -0.5049684014655186, -1.1395828435290725, 0.7605771798197924, 0.4408163359631587, -0.0840611891215317, -0.9527439222312267, 0.6926562526915562, -0.0027305349396484877, -0.17986472316396296, 0.6422610144258437, 1.412615895841031, -0.8278577538333346, -0.34124077949668935, -1.0204861021625729, -1.639602822546497, 1.6074096919057093, -1.1584852824016685, -0.7208155426015784, 0.8392040761097412, 1.4407795793808869, -1.1752867571353782, 0.13944705380804281, -2.1057408864224376, 1.8791244019244464, -0.11042132844938202, 0.6020370854831343, 1.123017096832584, -0.05652868718922079, 0.9625740766310946, -0.9673606956637038, 0.34492034644528907, -1.5375361503838323, 0.4990455041789286, -0.9489277592897538, -0.44848662225935687, 0.20225111438661522, -0.7527660556091446, -1.1152440995018695, -0.678649964720999, -0.0170582056258441, -0.7846907726938122, 1.464993202427589, -0.23851486543700182, -0.21705046983702211, -0.48796761821159795, 0.06955842538462975, 1.354628016983049, 1.1723362156850679, -0.05921619047971073, 1.837739007328147, 1.8393226614447074, -0.5268796561342607, -0.009364231583693152, -0.34684234783223405, -2.176072940640231, -0.09860764477494396, -1.375924608815696, -0.3811363408541145, -0.25535084881820336, -0.5151247779921773, -1.9166699100712044, -0.7282751936534643, -0.770819120513824, 0.09989507970317545, -0.878538580803181, 0.7867474162185699, -0.6197714222289087, -0.7670250649875356, -1.1346435642707655, -1.0880912464935015, 1.068458625377813, -1.3222351936152148, -1.066593964724342, 0.6852370705793731, -0.7113480780630511, -0.40942559335898576, -0.7483757154858288, -0.07122776033319436, 1.737408764400146, 0.11841252923863307, 0.8754522360715343, -0.343031757238289, -0.16416710878946741, -0.19531408663845634, 0.7754013715005769, 2.1332591207760423, -0.5052118758709067, 0.7131591899986326, -1.7803264017675031, 0.09420444683357239, -1.0472700356156177, -1.141024988505546, 0.09968113439098554, -0.5500313848742133, -0.8741986078561492, 1.0386438045163713, -0.25198767361062563, 1.6311155422356378, -0.5489949380720973, 1.4199156443209913, -0.2207014712546088, -0.4933058762731387, -0.27150483339996007, -0.609287115241384, 1.8620527369297897, 0.3449111247951254, 0.47062028183460747, -1.1545294505661057, -1.292810580741897, -0.6289136729611903, 1.2737042271707677, -1.0511082561993392, 1.426825388255249, -0.015158507511135831, -1.273327662575822, 0.3566423182164152, 1.7276268792428473, -0.138705499081124, -0.3306294574129653, -0.25875806103153426, 0.9880995543293336, -1.8623261901283767, 0.4777716036036974, 0.7487573413181321, 0.2064510369320226, -0.6262881610175278, 0.7353602889754229, -0.51667585170615, 1.219994070236117, 0.08511682154742599, 0.461487533016861, -1.4324664872243593, -0.2831471438083741, 0.054981156346117374, -1.3700696100114267, 0.3096752736763023, 1.194241938484396, 1.8141528512917984, -1.58398942271415, 0.2567713855866453, 1.1325804441514433, 0.25474731658461836, 0.5102671515154679, -1.4402773937935691, 1.3631571444107151, -0.8745959707232299, -0.6709972930186268, 0.2283470744920325, -0.12596887340485374, 0.8065789677701352, 1.421469323382145, 0.4556508032642018, -1.0983863507243814, -0.6254964658092993, 1.070974103218303, 1.0062944399776677, -0.2034198776993104, 0.808780940775045, 0.5534680689510987, 0.8961184107636236, -0.5842103728027922, 0.5653085033471172, -2.1257290549864827, -1.5901962373203609, -1.9012367446206324, -0.6712383697091975, -1.5234460098622955, -0.5907400058854823, 0.5435115627741249, 0.8494509722996453, 0.39541460589373995, 0.34454168140199853, -0.5998570139754461, 1.4125085287986676, 1.6191319296034328, 0.5896315959519233, 1.6752120980115939, -0.2991192109089548, 0.9223415325858076, -0.7167872516194996, 0.22778147331011792, -0.7313561090591182, 0.2921479170003794, -1.625666094056695, -0.6445948416979022, -0.05395662589269566, -0.32651136607182046, -0.5718694030200041, -0.6239270633688702, 0.5293884091632937, 0.8538659984117739, -0.08646896041984872, -0.4591311530517561, 0.530729446677609, 0.9885369669648936, -0.10094123058942654, 0.7532893387345917, -0.5660396507329793, -2.0027194859651005, 0.5301317384831784, 1.7010094716661732, -0.6006505084403668, 0.07178044356560984, -0.7177231480244217, -1.359337165187181, 1.0326277403651098, -1.104532973746827, -1.6930804949542624, 0.8948572423285246, 0.6340160893384413, -1.5423915961168462, 0.011234729330484954, 0.08870089142026438, 0.3252000063592445, -0.3788953447378539, -1.6345167208845197, -1.9943938078659595, 0.5933545751971042, 0.1442610329440957, 0.8612263693463771, 1.0358096108450814, 0.6111080247478592, 0.3509848535144375, -1.1231152704037288, -0.1305107898573894, -0.41201313101807663, -0.03594780788378006, -0.9547182114259212, -0.011845221890036848, 1.12335088041976, -0.9774107703754668, -0.34076482193730445, -0.4446802970229687, 1.750328003641402, 0.11174788170294983, -1.565777190842104, -0.2346242003304713, 2.025590134435565, 0.735919593851651, -0.3026497563524433, 0.795453306662201, 0.46657766925371513, 1.3719765295674315, -0.4428217812148648, 0.7438423244369328, -1.0044446714902608, 1.154104526108482, 0.8839111136542974, -1.4508885825739297, 3.0611733845656395, 0.07901046926896166, 0.035058228455775144, -2.529204012749036, 2.2253130444496216, -0.4836215067602598, 0.16087228538156456, 0.7529292801127621, 0.3021529756635018, 0.4830310122781418, -0.8075856256378251, 0.26676009847445914, -0.29717856392002556, 1.2712147826101827, 1.3176937460170013, -1.4531100825401797, -0.401073196111487, -1.2871905265662251, 0.23493164012909643, 0.08751016369069563, -0.4032539921927929, 0.20282323529368904, -1.1162555921139607, 0.12695806790569364, -1.406093789252919, -1.0433007967333698, -0.6034955540076896, 0.17102026852126964, 0.7887411128500289, -0.703456192532379, -1.403341194881998, -1.0180851564689184, -1.207196105637615, 1.3037843089034824, -0.8651985363612925, 0.16224668087220992, 1.6395521189037061, -1.463483294540364, -0.7310087129802972, -1.409361808083387, -1.6742963677191696, 0.31488414200224113, -1.0807755665828445, 0.11328910546500368, -0.09407603144337613, -1.4910310277195566, 0.7879699185151358, -0.22617275756319744, -0.18453310046988597, -0.8088417376829332, -0.3039969187778905, 0.8286501834765244, 1.746576388943919, 0.4585966464736884, 0.25857411751629744, -0.7755037047860419, 1.420943752567541, -0.7945878809532562, -0.46422664555214305, -0.5870832701281387, 1.3591013677668105, 0.5825126289522653, 0.6302719139868384, -1.4892296911532181, -0.054354803805188714, 1.2886090146135347, -1.871894006094185, -0.17706345246737432, 0.8586917015117914, 0.9881224827101989, 1.7896888081081215, 1.8466624703615426, -0.652536121488528, 1.3010866809132744, -0.09621481510992093, 0.4195057830533126, -0.04083288515295536, 0.6108022121551525, -1.0750510120212, 2.0140943483593357, 0.4481129685052948, -0.9859321167207238, -0.08362383634635764, -0.03871848811440984, -0.2859438908875716, 0.5451864270031233, 1.096287644463553, -2.0123992429307687, 0.5129399194497606, -0.4096728112440253, -1.0733837614648305, 0.005037630800198677, -0.21228362057381842, 1.0230324323469668, -0.3656703260246628, 1.343090275133355, 1.22200570063805, -0.19194700432383366, 1.6409555329882874, -0.045055182295066304, 0.9609987857589979, -0.19006125129863014, 0.4532745570836223, -1.2557975528603051, 1.266664141133199, 0.7341021381288548, 1.0225863410319447, 1.0410718138994182, 0.7172806738325695, 0.7903692364559284, -1.2222599875487237, -1.1506465980729734, -0.5931209140159687, 0.0009066596896233819, 0.8988006272366036, -0.7368561086985402, -2.060685831545258, 0.5996372458926001, -2.6379391495512574, -0.15461646907210536, 0.5809320989641804, 1.2787415555120119, 0.9369918534027788, -0.6875243358298012, 1.4942643445597592, 0.2701534137189382, -1.1816059491920998, 0.33872966509087593, -0.24720917613413934, -0.3605679983284582, -0.6613196865194579, -0.41998189317162704, -1.4697058573054282, 0.8301051921559156, 0.41312510613488473, -0.3119279752724232, 0.4832898322611189, 0.07210674722777907, 0.46221378683028386, -0.37907311341065303, 1.0338668347332045, 1.827883401988348, 1.4366607957461852, 0.00961089155518196, 1.1215412005788055, -0.9367274619902408, -0.6322235536233912, -0.4955048405923246, 0.4275765566731029, -0.4174196455050283, 1.0639045161507725, 0.17385489080177374, 1.884693292443038, -0.9174412411641567, 0.28332303940663434, 0.5154356751840908, 0.4527845805518231, -1.0762757525300937, -1.179877567884639, 0.05121250188699606, -0.8370218706835116, 0.3936578615259371, 0.4760963910597331, 0.5554786252919994, 0.623642262045472, 1.1315240293178561, 0.6513772767640275, 0.9117480009446275, 2.0918988065309074, -0.18111164825082318, 0.14578447935362185, 0.7752307161020041, -0.7579177299008238, -1.4643865224645813, 0.03389748036349978, 2.120628606940419, 0.8014787143841253, -0.20745942068486495, -0.2879768579253691, -0.44376875474220623, -1.431453126891794, -0.11047101043242392, 0.24254161271823366, -1.3890767080063884, 0.3551940772843608, -0.4821841102534756, -1.7404902110705263, -0.40990083463094634, 1.8406160691146698, 1.1343291794639416, -0.8770360698657584, -1.308217262167615, -0.06936303775634156, -0.39764667123450276, 0.5769725286701373, 0.5896270638633384, 0.9362446576484363, -0.27937299969585233, -0.610273978130261, 0.3618651906707751, -1.2687776942664193, 1.0626862705466873, 0.1667616956765533, 0.8138441501785322, 1.6828432679771586, 1.49682253754663, -1.1863230769603135, -1.5117519393616556, 0.294281094993007, -0.2266617043180088, -0.41000204751825736, 0.290692491485043, 0.2610713689915173, -1.4803962625447804, -0.28203213808230204, -0.31875591594593894, -0.7579009703382211, 2.4195675460926807, 2.247768381111992, -1.2980855885884446, -0.6529880062202584, -1.1234187168399243, -0.6956208755464927, 0.18965693411991652, -0.7362169554932866, 1.7754003059642411, -1.4235677497447479, 1.2291191037431475, 0.723527014546075, -1.3435315937863141, -0.17217271634298267, 0.14983346550614027, -0.21891340206561175, -0.010486184647393863, 1.2886811180355797, 0.10616567929962695, -0.609164835229734, -2.4211016076172376, 0.9463913483379409, -1.2980770068731349, -2.686933468264052, -0.03499567459563232, -0.34422522533382366, -0.0004908173861640336, 0.6734912677572197, 0.3525723705153651, 0.26758049299320774, 1.0529967718142275, -1.0999426989251082, 0.607473797642488, -0.4324428804621579, -0.8747836211413581, -0.7615340045466905, -1.3987613199365359, 1.4760791332584298, -0.6692014546820036, 0.04206641378767387, -0.9954780884334878, -0.7367371645074806, -0.21469214077392976, 0.79863673183808, 0.5075977458329036, -1.1234803559227962, -0.11931261167544333, -0.9031732659236469, -1.5609889694409194, 0.027729684273670476, -0.0017713213496273143, -1.7998106503968425, -1.498807717939337, 0.8169615081274427, -1.225033387547948, -0.8400996437124898, -0.8235377496257132, -0.4364264295280201, -0.01520214370946306, -0.15565017655025964, 0.0711312016026537, 1.1732559505317561, 0.5421847899339702, -1.086805433546504, 0.08813241769030257, -1.3579610652989789, -0.95942170120491, 1.459939956281907, 1.0117046306174486, 1.236197607064445, -1.2847595366907714, 0.47824603981077524, 0.30763463139827374, 1.1982758403837634, -0.3864008241497015, -0.26343272683881636, -1.750741728784698, -0.7351692274922426, -1.1349702581587906, 1.587266678692178, -1.2860170377857756, -0.4801752859875242, 1.6636658079534445, -1.3553330327978614, -0.9100195679190681, -1.0672796342182451, 0.5487025003986162, -0.1791076550181655, -0.08327198475097396, -1.3750289943854572, 0.4208708674265662, 0.6401350535533352, -0.14063353058666744, 1.3736446383002492, 0.9976936151350384, 1.1041690429383328, 0.5683312485637652, -1.3367051291338052, 0.2753721538148257, -1.6017596501358158, 2.0374743389978627, 1.0455690189454758, -1.938665276478024, 1.252770550122401, 0.2561807897177513, 0.6323524439681041, 0.44731860905074394, -1.5602090121872974, 0.16086045997109896, -0.8663998447283321, -0.15184679830362122, -1.8365049505188262, -0.6194981237001738, -0.6491132407601561, -1.4279315144128575, -1.4527159141395913, -1.2860024861530703, 1.945998082166153, -0.4013256550665814, -0.23659055793172576, 1.6616248255857569, 0.9472591623961788, 0.22914631673454838, 0.4811708838672695, -2.4575219310050103, 1.3898278424498873, 0.20730337920079658, 0.8863788687809607, -0.5916662331186044, -1.4299091422968209, 0.025064490896124083, 1.8440846679363176, 1.0939727242689221, 0.7256395410256029, -0.8590688058956931, 0.33189582274019075, 0.00448664532664562, -0.6480863852455645, -0.19365121140022182, -0.769665428394861, -0.6311931076898489, -1.3627698357475697, 0.6622092567614445, 0.24357517704777013, 0.503103320093718, -0.20595689226841954, -0.13618936070901688, -0.019650584704433195, 0.7262082426269985, -0.506270084550158, -0.7099417203135552, 0.45165053042716463, 1.1300405981040555, -0.24719613566322082, 1.2071293877520475, 0.435400868244206, -0.6142313942856545, -0.2808055784619822, 1.332735503169351, -1.1560021403810814, -0.6195875521757297, 0.25810834246088477, -1.4065218105605355, -1.3610928866213383, -1.1598317103172542, -0.3269341470162602, 0.08570043587182144, -1.9223819765041372, -1.0843685493072819, -1.6036518992044688, -1.0540791458678187, 0.5783162278332646, -0.3724907451950873, 0.7280800945640448, -0.08142618606573834, -0.8401997607017293, 0.4112577930821558, 1.5228201136451585, 0.127297463548603, -1.2407599011227048, -0.8552188536617934, -1.4741717842067263, 1.2671552063447231, 1.2337003308820302, 0.2110414345000711, -0.49591180781239114, -0.7461512339849881, 0.46865565860373054, -0.29715235983531224, -0.12386177897129297, 0.505578016119112, -0.759425281130206, 1.1922469683938692, 0.7741861134374209, 0.05774506261158576, 2.127957081016315, -1.5401055327147126, -0.9942873953265658, 0.7559867086719737, -1.1410350461719765, -0.9659194892052072, 1.6982344632787765, -0.20931069081798342, 0.17013249407359873, 0.7270923030390775, 0.7204891484463551, -0.39207799039317925, -0.7155255221813551, 1.5011465291329578, 0.5459497541973576, 0.07243706212858651, -0.4803076283069569, -1.0054943042359705, -0.5237739778480014, -0.09835515549724476, 0.5775290716411025, 0.9348827174613787, -1.1210113987995936, -0.7552071013929652, -1.0007141329301783, 1.130624877307917, 0.2722502138472599, -1.7108387910528222, -1.1062867754981813, 0.5689569196095314, 1.398762352581004, -0.33899470403862797, -2.076656356422838, -1.0004947044013306, -0.06246586753421959, 0.3367745011191109, 1.202712320404443, 0.12986086111190515, 0.47863453049805044, -0.5301057190296372, 1.1951555259879219, 1.0407276314629512, -0.6060289812671181, -0.45188168827767916, 1.1672764414566084, -0.7601267361673396, -0.16562850009431018, -0.43860049222365943, 0.19265871886562935, 0.3369896727544974, 1.0727046962527615, 0.35280285161085073, -0.7944425795053791, 0.4195206213331096, -1.2168293697790002, -0.6443114053235841, -0.525365919337175, -0.9060734662625927, 1.1385254001814025, -0.889916275322328, 0.5268352654420474, -0.009977679759738923, -0.7448851196209746, -0.44666312777814293, -0.11724072209427554, -0.9165098978210413, 0.40637929060102135, -0.6093457976035641, -0.20545838480263884, -0.8249002512298813, -0.8187706458007767, 0.4689683976066863, 0.465846208938873, -0.5387718100480267, 0.29854415380834715, -1.3665663590081276, 0.6177965287355739, -0.21396707680556573, -1.7406726509793795, -0.9472077744730275, 1.2519402070664514, -1.500777460440331, 1.8997820918004282, -0.9743457775230356, 0.3295729377044873, 0.7301012356968105, -1.2391980530651758, 0.9236351835845457, 0.6089290100942146, -0.12102325767564293, 1.3403384783597367, -0.10824453003093894, -0.7827461172580052, 0.8781962552006474, 0.034791693460034315, 1.4473751097143777, 1.203987441260602, -0.6198007001117833, 1.301362501195787, 0.30216625220261106, -0.39889697987982026, 1.4638160519035035, 1.4441827711806823, 0.5084134433716269, -0.6532108007553509, 0.1035243161974872, 0.3054072741705922, -0.34435155003796397, -1.0278570477914484, -0.12173258785663424, 0.5950528675438397, -0.9207821659942775, 0.7261815748689618, 0.7245355697839364, 0.7604354547177733, -0.5960613431486281, -0.12501859797022763, 0.4557109402631586, -0.4506714771692287, 0.11847291756872175, 0.39464486011730787, 1.0377336775259156, -0.7663128158804938, 1.222002486711219, -2.508898843182651, -0.5222022711446821, 1.5139575345025822, -0.36009115973957706, -0.49699571473838994, -0.7320998923855627, 0.001340784350614637, 2.287441638998896, 2.6831380407821084, 0.9455827325947566, -0.6608925110148092, -0.5298256491030603, 0.45598613407332417, 0.9056367098865701, 0.3468095182692027, -0.41128275516824825, -1.9946284216093966, 1.3045604895745035, -0.31854406317287715, 0.5219610405531087, -0.6641421031054549, -0.8688348040549531, -1.4043267718460093, 0.30435888123608246, 1.7846564254581045, -0.9673767387337057, -0.2252780643800041, -0.05837566001580252, 0.4291753233203228, 0.5442117526259592, 1.694634248553822, 1.2354760527115538, 0.7959395609646354, -0.8911113251956342, 0.3981107862143589, -0.6038191850464151, 1.410835808709077, -2.11493035968152, 0.06393518361722653, -0.029139117833403446, -1.0055963360448883, -0.7926601642106428, -0.9735425062205508, 0.4554630839524932, -1.2992896271871042, 0.17829226436911383, 1.5977020899206693, 0.5447850111120647, 0.17559902453769902, -1.4737831888237733, -1.0419185868083787, -0.6982628146742288, 0.2928989175106737, -0.8214315460621029, 1.0127275799116227, 2.540754369404317, 0.12669952550269392, -1.1844739993372275, 0.04189705377801499, 0.19439551671935018, 1.4521501913227826, 0.9787682718988012, -0.10502618788525488, -1.545636873356207, 0.41955502862273386, 1.6344397845287502, -0.6996137533248805, 0.7734222385388448, 0.7646349717820928, 0.36213834223499025, -1.2242281615824748, 0.2849485575478564, 0.34587641407530284, -0.7695467082668787, -1.878968801793851, 0.6439945266787103, 0.39401855978146333, -1.846270591936921, 0.8119840231832707, 0.4632560672239587, 0.8872512984658244, -0.6531242638897106, 0.8234509000335084, -0.8470430861883507, 0.7043960474728573, 0.16029656369225695, -0.9199716837319385, 1.7516428594841185, 1.53571695111567, -0.5923963974647823, -0.09421724289639898, 0.6951583529670979, -0.9029293377217025, -0.5403629622028528, 0.6026873450172656, -0.8904457098799401, -0.18153071461918635, -0.7683616776084702, -0.7723477433968918, -1.1385745044486548, 1.2990481267032234, 0.6920712069054653, 0.13819751107759315, -1.6994515863979083, -1.6867607272487752, 0.11386912747556614, -1.4741086101976333, -0.4084554473716878, 1.2611098853442282, -0.29302661250863893, -2.0886778227205594, 1.461016480023341, 0.42560541758942194, 0.6191588554531684, -0.5985193479741547, -0.47737501108118235, -1.34361075336494, 0.44109611654147907, -1.1504741483205345, 0.12452161850318348, -0.26145501283663203, 1.0737929954280732, -0.3919359249696162, 0.7833381602627896, 0.4920754113025742, 0.7181988996772725, -1.2868290476443027, -0.5794523266184156, 2.077603848983364, -0.6799665641060869, 1.189260513704343, 0.20931239869905546, -2.3009614984683644, -0.4660635928974643, -0.0830634473482318, -0.6258324519513977, -0.37209211976632794, -1.4939045852147155, 0.8393277068222, -0.19085594755902638, 0.6591988409228787, 1.2272709847028767, 0.06978447405544162, -0.12326350295229303, 0.4001647745043678, 1.8718755909371418, -0.6642196576581617, -1.177488097714965, -0.2921906301066324, 0.35352988537757307, 0.6046877389175205, -0.46544921540870143, 1.3311200985616656, -0.3326058332617738, -0.33093067100049683, 0.8306989177074579, -1.1200409825086644, 0.8296377545936948, 1.62299765872056, -0.8169754874480261, -0.24116708825317848, -0.47162079773443777, -1.8381312799299088, -0.4816987181224384, 1.4153255218561738, 0.5404300549763246, 1.134165955447205, 0.36168092874820507, -1.0277579618997654, 0.05064223484110245, 1.2814696296764614, -1.3027980677359505, -0.7545827594608056, 2.355379772816784, 2.04718791252273, -1.759834086257933, 0.8184067330416113, -0.562184039487719, -1.0738447527439543, 1.0973524489753268, 1.9618314891849296, 0.5705572269774465, 0.046663848882222324, 0.6489189020968069, 1.0612872544961902, 0.10979465007800482, -0.08424919865351914, -0.046667928646890046, 0.01001877915514528, 0.5755430190021412, 0.39333359256220896, -1.3620271852148316, 0.7432663945852148, 0.8410052507767574, 0.7560345480854492, -0.6405935855372006, -0.7185790399995472, 0.8929178346215048, 0.027651783756700472, 1.4242859506295802, 1.3972167882558741, 0.49132298190860557, 1.2099518385773633, -1.1213635437310359, 1.7266262581251506, 0.6799784552405994, -0.24016735136695966, 1.4215773652232737, 0.3292899527453197, 0.13524241974414905, -0.6033204455513134, 1.2434604281943695, -1.3676515621225143, -0.29194920862061935, -0.5181588907438721, -0.8497114521365112, 0.18939885573177215, -1.405921031876885, 0.6278696550297107, -0.19610956093284193, 0.04397693978192499, 1.27214363752744, 0.4762447251944673, -1.1370577022172665, 0.3990519149808553, -0.03191869811931289, 0.11133077808104638, -1.3445513835383933, -0.6573925555742512, -1.8568976733896805, 0.4153648416666165, 1.1666478841476853, -0.46112981399687764, 0.9535530862878486, 0.3473471655658854, -0.4161422881398393, -0.36198900956783775, -0.6339438086298942, -1.3944739484632676, -0.20387130619003158, -1.2701487841608123, 0.8796180040454592, 1.788948584745946, -1.1631704471876354, -1.961477519039208, 0.06590179873448668, -0.41614806490650597, -0.266000444569746, 0.1643712657991143, 0.38488576234322136, 0.2840733616903701, -1.0787563446019552, 1.1302339241072494, 0.7397220744929801, 0.10555634094791072, 1.5575703663389617, 1.4916593464656478, -0.1350848011563506, -0.5955564946507164, -0.9779825570939976, 1.4575816264107626, -0.5635566812842832, -0.13730254477957476, 3.1760359675054914, 1.5468541517541319, 0.6712301995907592, -0.3010794489170866, 2.375386241376686, 0.39676442311673654, -1.2083016255148442, -0.08960307423878197, 0.3356703315379674, -0.298976814312964, -1.7665651290994233, -1.092767255651449, 1.3975407829596296, 1.141874801312204, -0.9828236038024252, 3.4474956927651337, -1.0339825534946439, -0.22625665352238514, -0.5013121080507481, -1.8800871143889077, -0.8372845710288846, -1.10244612265024, -0.3821121209536119, 0.08810124426666355, -0.6071774956226643, -0.15564993281113088, 1.022293595012591, 0.9689358555384477, -2.5957409768073245, -0.42027115973485385, -0.0461425798346585, 1.9376580364864786, 1.3588702019634644, 0.3263146874682954, 1.581370038498723, 0.7910848434880573, -2.460697055036825, 0.6447035193294413, -0.24547841579497692, -0.07769395725697413, -1.1061309579704512, 0.49835521087482404, 0.28668491714510613, -1.2325612333443072, -0.6448462257352514, 0.6067798642374093, -0.8354277456713564, -0.130333521585836, -0.9088480640459227, 1.3638181337811686, 1.3142064281473396, 0.2849199073658345, 0.592125761379138, 0.5012574226736635, 0.5318564513368325, -1.2555614763203795, -0.2193018045216694, -0.8128170056509231, 0.2508398220742027, -1.892210580413274, -1.2602630407674884, 0.0009566262638368953, 0.8443361157461801, 1.0745886240915608, 0.8806279132304711, 1.3774160713468802, -0.19850197254674795, 1.2234601520436406, 0.5881989810255106, -0.4965304502203755, -0.9766777894153844, -0.21817961411038742, 1.419239328081392, -1.6703766117775312, 0.41191565756029835, 0.5099444391903665, -1.4309207608869086, -0.015024811232282593, 1.9220050485455538, 0.8175509219535936, 0.08115843671613096, 0.00670673012745847, 0.4372668690607546, 0.17009166575934964, 0.9482553703319297, -0.2773813968150354, -1.6498126033020835, 0.11117370308283465, 2.0511476913856406, 0.4372657274738833, -0.7946302231549325, 0.07669974844112153, 1.260664230909938, -1.5213565790072734, -0.26684094546500337, -1.781805734225342, 1.3731126700876528, -0.5693906145441722, -0.7467107303747241, 0.30046251963870085, 0.5421086409579616, 0.8194948647249047, 0.553142239737994, 2.485647389509429, 2.047571834848655, 1.0547915487532276, -0.8404839317066655, -0.836914713668649, 1.2478277285342685, -0.9398734941624577, 1.3858886068530871, 0.6584361564011335, -0.32532143347778014, 0.1671936246779602, 0.6090123241409612, -1.0924306659919145, 0.8248616990025323, 0.40239815358228387, -1.3215398823928493, -0.3695707657351879, -0.4677903230735593, -1.4563234165763541, 0.2465317823851017, -1.507844840921064, -0.11213116060164738, 0.8182082579799453, 0.2257379259786798, 0.5232663992732692, 0.3677500720568211, 0.0890331713821522, 1.0175234856545008, -0.5316019239972422, 0.008273393570788342, -0.5142557769956214, 1.3236020557952743, 1.1683267443828442, -1.326046400550978, -0.877558359633544, -1.2811663730152782, -0.007179640854720999, -0.1558221865207312, 0.5717555419933172, 1.400174656314241, 0.5405546279191125, -0.6066094336440838, 0.3074008062852501, -0.7266655582548127, 1.0200651816876847, -0.9169096044014198, -0.005352229277594311, 0.9229483990313, -0.5050805874169455, -0.7830498896948143, -1.201873278369289, 0.6032417486934556, -1.1946344297396054, 0.2240479886640547, -1.332033491041734, 0.3621050864222061, -0.7508280591488423, -0.6990041625840486, -0.3589843137912688, -1.1294768284497914, 0.08522935573665827, -0.8932238012324163, 1.4598549115209354, -1.4447712869600169, 1.161056885783272, -1.3625301397704557, -0.035297958124361, -0.33008069949103136, 0.5239932036193977, -0.9535748485371196, -1.4160404491189216, -1.2653282493985, 0.9528088241690057, 1.8950184827415795, 0.536660694982275, 1.0358009972485072, 0.33684764607473267, -0.03807672876925321, -1.023646734531218, 0.40397027552612724, -1.3087493812000008, 0.48272717104738166, -0.9539524744639091, 0.6839967409804478, 0.6443820369253852, 0.31683998325190177, -0.13585198410986143, -0.46836797703096, -1.1069337244040973, 1.2699629292559889, -0.7617963846193975, 1.4541756482189356, 1.4282755674874026, -0.1861092734243662, -1.6655794153163535, -0.9018831271999473, -1.037689638483834, 0.8498409192473517, -0.07982833124499089, -1.2088906569879048, 1.9388046452293908, -0.6512630617583657, 1.1866504013111483, -0.33869047227217647, -0.4062584258255965, -0.13047088702582313, -0.2920609026154828, -1.5721710704372442, -0.7529385991063793, -0.4409489430185798, 0.6573725024011854, 0.9779867268215527, -1.1338038691333352, -0.03676275814229943, -1.3700180959347181, 0.4980096428874349, -1.8841567320644628, -0.36671037716186844, -0.33102623775307954, 0.44082885192374405, 1.613113523011985, 0.23245328885846092, -1.936031194784913, -0.6863173758499714, -1.403980406004003, 0.5048363560164861, 0.2836464927146788, -0.10581740020796536, -0.6422446354858306, 0.03847861193968079, -1.6367117659354635, 0.7105602568018861, 1.9161683660322844, 1.1010957888549868, -0.12160407112688297, 1.4925214870472732, 0.3264326568315127, 0.1233803144398878, 0.046322463990348964, 0.7961360452240189, 0.2452347016349107, -0.48943896240142126, -0.9290930154151816, 1.3257611388643007, -1.2121987546438076, -0.4675832048242394, -1.408413616302921, 1.681812863852406, -1.4107609501193221, 0.9608162613161545, 1.3382523033803306, -1.142429334719264, 0.3068199062637968, -1.373229118623735, 0.7359602107842439, -0.08027367417510534, 0.5703393562713633, 0.8224893358060019, -1.2675332626508233, 0.09157528929486593, -0.6239271870188987, -1.333424030987914, 1.542228511553581, -0.8290994826950859, 1.6002179297200447, -0.7290687216113811, 0.9827490621042851, -1.016128789591686, 1.1178052087911723, -0.11201905921608454, 1.545158085939111, -1.201782983516858, 0.2987368142749938, -0.013881908859372263, -1.4662280689414051, 1.195364231090116, -1.0207840815730405, 0.6038293322962383, 0.6920833223124919, 0.48928276635174567, -0.20719681719458505, 1.0528037049861176, 1.340110048415235, 1.0572972351619618, -0.7972871839181324, -1.445715944658206, 0.249550573252273, 1.7425897413780096, -0.6146482994249365, 0.3414417673370007, 0.5211686346384714, -0.4720635039991762, -1.6866627876101177, -0.41908164540912235, 0.9350268770492959, 0.2628866171785153, -1.4272699417780046, -1.5176019318982594, -0.5045820104317634, 2.3669803699198972, 0.04468306472425897, -0.8506586820583893, 0.5357032817625664, -0.7504240210817026, 1.2244644861038698, 0.32030678738297486, 1.9346717432885199, 1.8091618397708604, 0.7016264290342246, -0.7543230939085693, 0.3718249353749545, -0.39747629739679413, 0.1755020796040547, 1.7617259402782062, -0.6484224375517338, 0.5942375319267897, 0.5412303781268201, 1.3148250600931315, -0.4591000552529005, -0.5181152695539641, 1.0888867653411374, -0.4218577232399481, -0.03314875902158776, -0.45525424561822153, 0.6620103621803525, -0.4828556213675988, 1.0197136724339582, 0.8136601745512939, -1.7574981376543641, 0.5152733116422641, 1.7275770946339244, -0.6596098468939191, 0.8691431128119826, -0.5019581461983088, 0.1369233115111857, 1.2132056318163653, -0.07648699416462335, 1.6772557940687784, 0.926974844165011, -0.039740256852109336, -1.6422093576684975, 1.472165824690626, -0.5312294981487146, 0.5660281554370863, 0.9002601404675714, -0.5193311511183563, -1.4261107490492029, 0.7193849792885922, -0.8161020873770328, 1.3926227501034782, -0.10765873957312352, -1.750080716659231, -1.2315289364819961, 1.5271676147265836, -1.3692385165909204, -1.2665210758120529, 0.5835547255432384, 1.5267142534760538, 0.4735793365879849, 0.2713271999760396, 0.8293178842537923, -0.3678275742008581, -0.5196865213591367, 1.2467715006725173, 0.36881071704357293, -0.013146295073653665, -0.3910850558251935, -0.4717852822314755, 1.058925836769312, 1.2611027845782836, -1.2125355152651964, -1.6680040155978901, 0.11644777354668061, -0.6098586620173682, 1.4767717300094048, 0.0954623781181105, 1.107261067809891, 0.5332249726108867, 2.027865524163214, 0.5776330966220249, -0.1584788333976485, 0.6221202243471828, 0.822805243465044, 1.875280493218953, 1.0643032788775597, -0.0032231663149655688, -0.783876097094789, -1.0049561715754778, -0.09434442862031094, 1.159075456642561, -1.7015354910808584, 0.43626266846062023, 0.4657480592549505, -2.3595114280610967, 0.432788235995093, 1.1432761980922856, -1.2312064629781365, 0.47490063643075286, -0.28730531011989763, -0.26041490757239677, -2.1502487223253324, 2.002776378754567, -0.6572916671523635, -0.6468504633660788, 0.22368175843112467, -0.7056222632601199, -0.10902101632296987, -0.12191577116310535, 0.2333724929750161, 1.5718955134357182, -0.5232145959705184, 0.6697172441294476, -0.4925971310656774, -1.1446072903750102, 0.8349991429830456, 1.0200201403878384, -0.8977027776830132, 0.18977908394646267, 1.4964190701230657, -2.6540996410436106, 0.32799163478787424, -0.8074216676664461, 2.066401169980402, 2.509721984172877, -1.2264705966483058, -0.25822269433889045, -0.4480735859571536, 1.041820098630538, -0.693824507410013, 0.8791204277882693, 0.7037151344594822, -1.9977526467992452, 0.2157094268939756, -0.8146138503383921, -0.5977126284420752, 0.19219664371439094, -0.9859202287793376, -2.3682295377243645, -1.2913932275907674, 0.22696508074722685, 1.6407744690151982, 0.0480691978209954, -0.9966208197342079, 1.11889000511201, 0.055360709785356864, 2.161209836417307, -1.3704452982024895, 0.1620107139280786, 1.6935580592037394, -1.81141037991999, 0.4953254858094202, -0.6200845763863535, -0.4030152273570181, 1.9463103138523798, -0.48212576394146445, 1.6089090600319198, -1.1366638959357926, -1.6052774277617399, -0.47813886421591933, -0.8707692499175943, -0.20229126984501603, 0.17173503092906178, 1.1047377340309825, 0.5373785703708618, -1.5876796588068274, -1.1350981303051662, -0.6537352511089607, -0.1835463801348843, 0.7426490550608933, -0.0467107787449815, 1.248118109915001, 1.5524890878524804, -2.0084680514191806, -0.8159713739539352, -2.2848088931420065, -2.372309233730456, 2.2419857626757587, -0.3816077510920729, 0.7108618513078415, 0.09216683237316162, -0.42433779835516944, -0.06629069340678465, 1.2462956506064462, 0.11891915476573794, -0.8074432428697494, 1.0942537068290124, -0.33085780821604055, -1.1030272605184115, -0.04597990324972495, -1.461390865704153, -0.6649026362109189, 0.17729372155344567, 0.7571894944422922, 0.17210568890449163, 0.42634767130989204, -0.21152758583251302, 0.8842025248865851, 0.707894179465638, 1.181293809817535, -0.5576196967532386, -0.39767440147104705, 0.6261136824601904, 0.09416680314491302, -0.9432999224955897, -0.4798733122332927, 0.4698413593912798, -0.5301112335696907, -0.6225115798235682, -0.010179517498452952, -2.4149736340373655, 1.1241415524841798, -0.7384881145759171, 1.9364675418998223, -0.959887551414178, 0.28676342719419945, 1.733477852496386, 0.47070117017904045, -0.8415052898911937, 1.48342039099686, 0.1593815740133984, -1.0466970244656812, 0.35428426550521314, -0.8714460344191897, -1.772284863316179, 0.8553434412271401, 0.6431899649395725, 2.063848597546665, 1.2107520352104826, 2.068182515581034, -0.949826787922004, 1.55283475817559, 0.18702699770560685, -0.3142644472236707, 0.18807094004824762, 0.20872088585274678, 1.4946073381353722, -0.7270727909976298, -1.4616528319169775, 0.8902512659612491, 0.8397967248644236, -0.8310381295604786, -0.8630891545947001, 0.29222682765828795, 1.4445890756559074, -1.408345197598874, 0.7729936640614463, -0.5556592512747162, 1.0996078153848807, 1.4534847934773354, -0.8589893343576649, 1.0662489588346322, -0.8131357663444699, 1.8906549668204278, -0.221189396941947, -1.0066499489098275, 0.14833291807982577, -1.6944446869650207, 1.632367328013707, 0.4020635808682617, -1.869102265647399, 0.7511051409587467, 1.42836604641047, -0.6689545864836354, 0.7132732615745503, -0.037356754428425336, -1.4955905073070523, 0.6229077094186778, 0.3002815391057095, 0.40063712375861044, 0.7079213520824291, 0.39150882760380246, -0.665277265086938, -1.4631874840764194, 1.5154278721952714, -0.39079861469985133, -0.5171161188288925, 0.47240320094667826, -0.5680617901151106, -1.0849457635502189, 0.4598612881320188, 3.1976163385397074, 1.0060936340045976, -1.4829678245607811, 0.9298775421247323, -2.348820269680322, 1.4875415958593063, -0.3178590722956541, 0.1356924010752182, 0.21621700648737333, -0.23872149766619224, -0.38611367554412396, 0.7079229883060726, -0.2936924251847691, 0.17216377194136315, -0.6251678518688363, -0.6190596403307621, 1.0103278730986882, -0.42216692790377014, -0.6083934186789268, 0.48484746551641333, 1.0506326108080541, 0.18574134153247543, 1.674110486119981, 1.6908321897138245, 1.584396674715407, -0.6716403178792367, -2.1165124622742204, -0.7575386400758898, 0.42207025179163454, 0.34281900309511515, -0.17330930073486658, -0.5185221739427627, -0.6520860152162103, 0.02880708722030125, -0.7236136907093336, -0.7012590434919239, 0.9421047560257181, -0.6079997861419684, 0.30874446046730514, -0.5762449399777807, -0.41610271882814304, 0.15862039487955654, -0.1452834786642244, 0.03226987415993391, 0.84229162019877, -0.6933696474669173, 0.33663422390191694, -1.2150580083595408, 1.0076307089633902, 2.70409271869755, 0.30995661293173044, 0.6247436756056247, 0.08195954117181646, -1.4719055966627554, 0.803042507106028, 1.3021608863661167, 0.43434043468018996, 0.7974627211294567, -0.3682221393582528, -0.06403923371006702, 0.4170350364772233, 0.9541157159307389, 0.3239859963424095, -0.2949519680069482, 0.2619100970459515, -1.6511900176435539, 0.24934133729286487, -0.4154891414125775, 0.7849763826831557, -0.7841888048100197, -1.0286045457899349, 0.6553645303577179, 0.2653791661210467, -0.028721712652565425, -0.5496375596740606, -1.3471754095333917, -1.388799522496814, 0.29599312680859097, 2.140988791886186, -1.7758304801107512, -0.8660143027878295, -0.13855549523146243, 0.7423053567212846, 0.44908973109546657, 0.5684322570795058, 0.7170502881582332, -0.972793451864786, 1.0213495345802792, 0.3588891143774135, 1.4677584224643059, -1.8483066026640207, -1.0267595764809776, 0.8461892348632205, -1.1555368611628043, 0.6290502769928877, 0.6938132809945982, -0.6257637502682993, 0.07541789139329211, -0.2366005418237537, -0.35370856166896436, -0.807010114883981, 0.2605821179006874, 0.2423808558861513, -0.20913684813592306, 1.445612205825981, -0.16339120814322525, -0.28685192204171245, 1.6172348405102026, -0.24636947592105027, 1.6507389021911445, -0.9150073073042401, -1.4463083092451903, 1.8450467799321841, 1.6902670347280917, -1.8878093325127658, -0.28001777607518696, 2.0152721910595703, -0.3554080437826893, 0.3410600781005436, 0.3080846247560111, 0.4956327203352371, 0.23813604752289289, -2.862730990973833, 0.12978190732109626, -1.5902014047218211, 1.12682412380246, -1.5041496090466209, -0.10651038985747713, -1.335463053243616, 1.4022116059874739, -0.18269475995297718, -1.3404214162908434, -0.2438165410162293, 2.336027669010424, -0.8025341000321401, -0.07983117172640133, 0.9264513733160266, -1.4369204429877465, 0.658716342473419, -0.7939169687464911, -0.408484607372628, 1.081321363447789, -0.8278147672247551, 1.508807177607114, 0.5697618899554041, -0.5433190954101608, -0.34444959772498385, 1.4917081663181815, -1.6364404568511535, 1.088677730777631, -0.07743011620298457, 0.12679064943416948, -0.8422775912109417, 0.5204410421666292, 0.07816241030036447, -0.743203277087611, -0.2490679239134021, 0.296537366216279, -0.5802577510870809, -0.9727316982881665, -0.35347806043290736, -0.8964204184288705, 0.3118694011837782, 0.4272160752827559, -1.119951155966275, 0.8907214317482947, -0.6475131446929849, -0.8840313111682832, -0.7344446459241352, 0.23897405779048442, 1.5813119435145027, 0.571609333114801, 0.5054648516804614, -1.8867586637765072, -0.46210018982909373, 0.9548065220526738, -0.4770321781666495, 0.4675422030146951, -0.4463001426607724, -0.268935060413408, -0.4021684274370984, 2.1224401502693415, -0.5308353724645087, 0.2305268915721791, 0.1608750017124351, -0.900197705620758, 0.3127318821569574, 2.4681068345281907, -0.8490049971049308, 0.43895749888939467, 0.5864069300955381, 1.478184862839466, 0.6057649340496221, 0.866511884032407, 0.3839558739092927, 0.09528931157394888, -0.4023438236960017, -0.4953367269783747, -0.9411870219959466, 0.1449619784129578, -1.1659336494666324, -0.7043483767241477, 1.2177044932260268, -0.8968784595700237, -2.0180274699762313, 0.5569746847793453, 0.38572633069031625, -0.24109338697797905, 0.4264092604031469, -0.9226064296533822, -0.9777483292652849, -1.8614061954392773, -0.07181480501491022, -0.33916355744140897, -0.4913319447167086, 0.7409940265311785, 0.8195938255125932, 1.8760662842613385, -0.08022928270577098, -0.3617902098106558, 0.8773618510991119, -0.3026417513931259, 1.0746072114312424, 0.8949816226916981, -0.6064010457787304, 0.6104271933326174, -0.29251836991064384, -1.235928055595834, 1.1821055005631875, -0.2897775819027704, 0.6479427567431872, -1.7256511687931952, 0.2379834287461269, -0.6421838621896824, -0.3313666238103324, 0.11015187322020059, -1.1738282480311948, -0.6801063289945823, 1.0727263376369174, -0.12789818738063033, 1.1781691723419236, -0.7686061607983937, -0.6393035105594692, 0.9243691012328462, -0.7504431079196243, 0.8671446299467845, -0.698898758742007, -1.4195690799131522, 0.21204181061562222, 0.4516990863796165, -0.5488202376298091, 1.1769716081503954, -0.47339514182184983, -0.6706243964684786, -0.9391275890746287, -1.66916461604128, -0.32069248128125416, -0.9339415936059193, 1.6891904534141162, 0.448704117525186, -0.6576455996483718, -0.8787818682467556, 1.7783275330439052, 0.9849951430194023, -0.948815962845082, 0.04360439333359939, 1.1754643008394154, 0.4176607904866504, -0.032791860424978336, 1.6637836123504004, -0.6318610716818912, 0.4631965911323548, 0.7240844437060513, 0.42507353110252416, 2.223789705043405, -0.624587572177733, -1.3259578694687586, 1.821890903560027, 0.18282418791198085, 1.0718527529100068, -1.390080439023078, -0.7032982984900227, 0.606806535748979, 0.9807379610674246, -1.301799608995058, -1.2210833218836539, 0.8485594404128306, 0.9129734868959687, -1.609303253469617, -1.8896306217640972, -1.2745280345294823, -1.4589951124432525, 0.17397451011234072, -0.09849861993514802, 0.5213927711113006, 0.4464567604000436, 1.7658010428921032, -0.17334884721929977, -1.630863443675375, 0.10883356045207511, 0.9209592920512764, 2.506643391838216, 0.25920697127003867, -1.000610995686859, 1.2069309607629284, -0.8420265795888455, -0.5219090322847073, 1.0528496388391924, 3.4052517316861657, 0.3939521074267198, -1.2280870462459705, 0.7021465907786252, -0.848269051241505, 1.8523087243586671, 1.8942511988856663, -0.7324609521575315, -0.7405519451390545, 0.7825799663791051, -1.0570473532938447, 1.0071272154577544, 0.008367224499531539, -0.9832761022039055, 0.4619748421824861, 0.6054527978627932, -0.8069427471635754, 0.7695845202396114, 0.7255817354960545, -2.076356254004693, -1.866170928563386, 2.4960999423984482, 1.7821255702296483, 0.3249685672047233, 1.0516193586445621, 1.6029894061563263, 0.7111190742818572, -0.7186297277267051, 0.8266707092330077, -0.8172819525228391, 0.6694591532307673, 0.3170694850496892, -0.9984287239140569, -0.6246604296669839, 2.2772797990691647, 0.7458811584103926, -0.26479485589503565, 0.8890929266772621, 2.605058213283425, -0.4494919815199539, 0.2625572138302102, -1.4742411434507334, 0.6119113473927877, 1.3070889916855144, -0.44956874651117795, -0.5715779960963441, -0.8602100327750805, 0.10606974809893534, 1.6568916173993327, 0.6885256728955403, -0.2948202171449642, 1.5696072864217565, 0.899476846965225, -1.1070943362639738, 1.8975968381884851, -1.1062908985717914, 0.09202643450386803, 0.5179032468570114, 0.19738682741687985, 0.7832918030824878, -0.4175503084970734, 0.04748961117866384, -1.1431032202175238, -0.7876280793719912, -0.1670293961990677, -1.042531579871164, 1.4250241437929307, -0.5065603208361397, -0.05190576930487508, -0.9440633915033274, 0.5697559112545517, -0.19152297948200578, 0.014168618743096923, -0.7723577262137622, 1.0555673924267797, -0.3191246615023448, 0.10177303682522976, 0.2576454260927928, 0.09993013315995518, 2.4408592434196965, -0.1674045631751715, -2.5321239122945287, 0.5150701229891861, 0.8728012372431501, 0.1605968107424527, -0.13722954472953605, -0.13443581273542884, 0.24838805492190696, 0.9494869845586946, -0.8053048546223888, -0.4416437044439307, -0.5932230289976798, -2.0643157683856, -0.7809729727827792, 0.28847229101563315, 1.2875393651128213, 0.030979117600469074, -0.16633856709516748, 1.5324980852375782, -0.6468105502000671, 0.0373559919191076, 0.769892531358705, 0.42397577027479655, -0.139645087546484, -0.9427058228766325, -0.14560303293072532, 0.15531221334147638, 0.7867393096524915, -0.5932212618722055, 0.4862407608854612, -0.07780553709972224, 1.0490144034143574, -2.161361822163266, -0.2791053970836441, 0.2634627733105601, -1.5107411614291475, -0.5446415556288037, -1.2216533790784645, 1.497988454976838, -1.1092367045073637, -1.618664478117834, 0.9157906679850603, -0.2176025539922073, -1.8489698667637202, 0.3129035109422391, -1.5506214471694328, 0.23996231659805162, 0.43382470243213683, -1.2975465623015716, 0.3447086045230242, -0.5029629441562755, -1.0515292011570208, 0.4342286760696506, -0.13944564531024706, -0.3016669085440337, 0.2091053252025545, -0.2220062149826033, 2.2529183253773697, 0.09380606672705916, -1.3762881219090572, -1.0798033214501017, -0.030459679752091188, 1.0462656041957057, -0.5166066202685516, 1.099907646476609, -0.44810406970440003, -0.11226405829821795, 0.03079777593049583, -0.5730941391354524, -1.5304535066575236, -1.6366657813941712, -0.3672873484804794, 0.995515961126187, 0.09560804918091349, 0.367469145902725, 0.1649134830430658, 1.9434979202863867, 1.6446573868197591, 0.11229000519845835, 0.1176439522089831, -0.08402038714892086, 0.7274091035559674, -0.1815847476714992, -0.869284801742413, -0.8618126688825368, -0.9255303897325509, 0.675291066744399, -0.45590558967109956, -1.3881643437611735, 0.046983698579071434, -2.2593684559557246, -1.0714842437075964, -0.7980109810319539, 0.9376060820449048, 1.5088601684612821, 1.1401676515714214, -0.10893182605495363, -0.6793666542903476, 1.9224975768533579, -1.919045525488347, 0.5940059593484025, -0.07491402130843892, -1.2833894894614397, -0.012251254567757242, 1.0424262856623745, -1.4615127877407137, 1.5618547104206084, 1.3870856731187504, 0.6794906080144418, 0.6597456051505508, 1.1809752738189252, 0.6289022860101765, -0.6311541134061391, 1.2430525196600999, -0.1258884709654688, 0.03676529016321239, -0.15638601277079034, -1.9962862794970841, -1.0631859015069938, 0.3954333505187698, 1.305130180708799, -0.6198793866416389, -0.3671423775673435, -0.05091349499804217, 0.19572546628132184, 0.481387386454465, 0.18766811525805024, 0.4204577595863723, 0.31278547680895696, 2.260226631338183, -0.44163717594473184, 1.7281834262032811, 1.6610908786986758, -1.2346970008334854, 1.7791989418010552, -0.6921188907852247, 0.41412723052308587, 0.013963859727831377, 1.2495146354884694, 0.9217529559230451, -0.6408643293198005, -0.3656165913939135, 1.6408969472159909, 0.46769590500613, 1.2942189441837226, -2.4715771243751226, 0.4617271801485095, -1.3054611274711465, -0.6148341510806443, 0.5230236705061742, 0.1948581130574186, -0.8314871492327359, -0.23483236113230144, -1.3665590045394855, -0.14329578244546745, -1.807462368498706, 0.23801683948070443, -0.28981493648460016, -1.4362173161200273, 1.5602518232258726, 0.08045279279873387, 1.249783890153001, 0.026976636733625492, -0.39284231136024667, -0.20541102682291998, 0.39581632483835966, -0.4271835840370606, 0.8371704017648944, 0.2635251007081735, -0.7014811604960124, 0.0874164574098187, -0.6090513936305421, 0.24235117892116984, 0.9810895192151013, 0.8051030956141957, -0.033711366761932496, -0.1405561945796084, 0.8932360765812469, -0.2781538960944018, 0.19083714569711607, 1.1680467944309245, -0.876802883170169, -2.5359882587942857, 0.15717459862331037, 0.22749278757750177, 0.04618501623459061, -0.35514842522056567, 0.8668706188030013, -0.9972708114342066, -1.9786433296694181, 0.5447603805656711, -1.29987773563286, 0.24422468441969067, -0.8780654507613918, -0.1375102757192428, 2.362709945312936, -0.5102994863283247, -2.266949913807307, 0.47287943204761507, -0.4958325728592973, 1.6089495844965989, -0.4037770686515219, 0.9353787074591674, -2.113107054187719, 1.6432896343445524, 0.6023089914246612, 0.6625981775877482, -1.1477561641710432, 1.5082843130642087, 1.2879637708344551, 0.9632684685006433, 0.276232984051142, 1.3144782369860601, 1.3209816351528552, 0.053796140071209864, -0.4016237646146306, 1.0207985074811297, 1.471863012837933, 0.8696374882353123, 1.2014866344567057, -1.8078078993421411, 1.0601815230005722, 0.2828495091475873, -0.1316931030152692, 1.9409424148662304, 0.4796806532708648, 0.30952752417150853, 0.642261212971914, 1.2972810373469248, -0.5710516304874607, 1.296428671679604, 0.1882536400549766, 0.12024192413580576, 0.7482144125451611, -0.18022449922123449, 0.5193597474251914, -0.00015134736402941756, 1.2060122914372473, 0.400987603269216, 0.5805204623048469, -1.052764847449791, -1.0899041626739954, -0.26209920904526157, -0.45158221578290686, 0.23523486252012651, -0.45909954643471435, 1.0391700460549405, -1.1768146617436632, 0.6791469709199983, 1.011174817648215, 0.411199894209508, -0.7152198360224954, -1.1980320139463696, 0.4839032883340431, -1.5745057434452947, -0.41956356832710956, 0.9839964884211916, 0.015979923325116736, 0.2762049181371265, 0.6098483704805613, 0.4862291698694014, -0.4624922500096108, 0.2846677372677902, 1.367317839020472, -0.9474871099590387, -1.756106996546998, 0.2988197956163671, 1.495739110209002, 0.9277333393877758, -0.5643132881556219, -0.1558226529617167, -0.4888512541791814, 0.3410030049413046, 0.8125696535679003, -0.14506424114808303, -0.5563759421336263, -1.413259141058041, 0.4721963640474325, -1.336800515204708, 0.15802207902328172, 0.7713401976605815, -0.8451617487867245, 0.34178117698250476, 0.6229076512220945, 1.6110932188650129, -0.7181795974169856, 0.009266781617777662, -0.5588298639233481, -0.1767614344743045, -0.9226697694236917, 0.7076376663118469, -1.5566853652081156, -0.8619329742338163, 2.051139469309425, 1.0147636236527358, 0.4182684075319435, 1.8816350118726597, -0.45231597591557254, -2.177291625468745, 0.2818036067134789, 0.3528969484018996, 0.5094505048346659, 0.9557302887303304, -0.6754668943387816, -0.02729241829228328, -0.10185537856378798, -0.4591265210119423, 1.430262537673349, 0.2931013470203736, -0.42349373411850877, 1.2895062553420336, -1.254123931164029, 0.007274426609199737, -0.6746114093338123, 0.9946171745115864, 0.2864085373632313, -1.2280764417902754, -0.52661829084419, 1.5827795236366957, 0.15024675730990028, -0.4248525421861309, -0.5691386244762248, -1.2497033166837888, 0.7243884070840325, -0.8880262098400197, 0.022565602731663952, 2.813014693165735, 0.2524261198492061, -0.5815627560037311, 0.065952148847621, -1.5839049003439432, -0.32991814907198524, 1.3189945049352763, -0.9633738886349973, -0.7205611597593764, 0.29087939445256583, 0.0057889375667351094, 0.02150375939915354, 0.5103962896847007, -0.7791629303501022, -0.1566257320081451, -0.12533254753908293, 0.3677730246474584, 0.6808297404105077, -0.006814522630420675, -1.6332734431577842, -0.31084462878259445, -0.2816212687484363, 0.8306217769227588, -1.4223291833641392, -1.1328914140136568, -1.1798315543869777, 0.25880349272739006, -1.176722232598049, -0.9138103973636641, -1.4195908701604916, -0.9995107551919223, -1.82773175657593, 0.008499718134879552, -0.3447023347644645, 1.296344926519369, -0.43328033036609237, -0.6691715014457149, 0.5815463164249131, -1.351170406870033, 0.948354175015636, -1.7460166934842984, -0.394637468929365, -0.7854270758121915, -1.7802874942339497, 1.2686458890561711, 0.8564108501854661, 0.05383532865352654, 0.6253901471648027, -2.202145401537113, -0.041531422478273954, 0.29066318209770114, -0.5115801644049819, -0.2316865971443836, 0.04820236445222125, 2.043254030499081, 0.5378888526826829, -0.6502743062505872, 0.826238085727147, -0.9541804382014959, 0.6060754235439968, -0.27474418761709474, 0.8956610419016614, -1.0996407788536786, -0.257368300223374, -1.018696411251144, 0.6579800168488112, -1.7964528440425043, -0.8570639935152126, 0.42330444919804316, -1.1285000187041665, -0.25650286505666625, 0.24632151425551105, 0.24962408033917283, -1.156431660359815, -0.2432666473105903, 1.822498098193285, 0.3177090775637023, 1.3319015834176797, 0.4571443687995678, -0.15115069978271048, -0.9271093020874797, -0.4004107535270797, 0.18837621181964065, 0.2361034586065518, -0.049667590380486994, -0.7731735216366021, 1.5079696883540965, 0.2547235818307659, 1.710880865859913, 0.25423148693344516, -0.12417094682887361, 0.14355110585703812, -0.30889227644936884, -0.19518744408626176, -0.38657348236703737, 0.5747008941265317, 0.7763218624280281, -0.7932199304382765, -0.38004377705918146, 0.5546620950055203, 0.26238802318984583, -0.567803366150921, 1.2155283753301906, 1.1841352702569934, -0.36154499394302375, 0.48355518941861697, 0.028516722473608622, -0.5872424427404682, 1.3501269652114032, -0.4684289952147731, -0.3722041294537168, 0.2884795399986682, 0.06557171746910258, 0.04187102672842283, -1.2970923134475996, -0.01629195036762023, -0.9112994229878664, 2.0590829933787136, 0.39400030768000005, -0.7975908049246164, 0.24046578837235552, 1.504682832366687, -0.8911225638653535, -0.3936854489607823, -0.6384138322177773, 0.29369615979985814, -1.1026872898279598, 0.4356763930115034, -1.4259861740067266, 1.4839827513865715, 0.16538982992587942, -1.2275565773734964, -0.6469351862385775, 0.7977508692229875, 1.965560992268791, 0.8204484828263375, -0.09569261310086963, 1.0444105776920733, 0.3981939687558286, -0.17001990885000728, 0.03191303725869083, -0.22703800554331624, 1.8139801219827336, 0.918270672574204, -1.4990654058428237, 1.2013287338621885, -0.6573210575280002, -0.3475342578604577, 0.001024958794340004, -1.3091664900629916, 1.7052265295882478, 0.4253120949833701, 1.0311326194819417, -2.329708589685058, -1.5666613380497623, -0.20129982865454085, 1.4540261677025847, -0.062796460600534, -2.3750929169938804, -0.22853438210232366, -0.9911165491373074, -0.9849697798584544, 1.0908056348553017, -0.5335895092359707, 0.7114854381779321, -1.2006864703832458, -1.402537825666173, -1.6107945297750212, -0.06522295552167409, -0.22244804258316303, -0.6353277757640107, 1.1342357318491285, 1.1802856827413442, 0.7358095889904793, 0.4322781449509412, 0.1993641699969819, 0.04402596162369398, -0.618389217305553, -0.19855173166745999, -0.5969933305425132, 1.2023959036495757, 0.10533466463098612, -1.4071046643902017, -0.30217127261876753, -0.04403547820029734, -0.2335959164195668, -1.1388382692559194, 0.7969342297703721, 0.0025006347911576314, 0.4618061956689532, 0.9316220945417517, -0.586857161879394, -0.8038099773962392, -0.561632309015, -0.7319527488671081, -2.215500214281302, 1.2095052233589756, -0.6324676669003331, 1.8213621585713746, -0.16201666001698542, 0.9771306394522535, 0.08884650272073365, 0.17119383734576185, -0.052205598859868016, 0.6308204756962924, 1.2742399221121468, -0.8729416492214658, -0.41451142025139015, 1.0896473253676273, -0.11531924092553854, -1.0449722114717626, -1.3905060397760676, 0.01745826015650065, -1.1196034509026367, 0.16835781469295008, -1.1337994252104073, 0.6707102828626799, -0.1611008305495774, 1.8891773441773552, 0.22194994994725567, -0.8221389943598081, 0.14773366666584706, 0.7482169422869621, 0.8634619143586166, -0.28955079825767266, 0.7168358822007905, -2.0710700397722674, -0.5577499923860028, 1.3594786178950642, -0.06290120845238856, -0.6203795676764393, 0.37363430210542137, -0.6009801257039329, 1.685628214162959, -2.036958121665058, -2.2425671656367667, -1.9918630409006053, -1.376958147267138, -1.8638660542434666, -0.9750244314786808, 0.9080815115907477, 0.018142080648009342, -0.9320767794783268, 0.26546536698365886, -0.7622509288960355, -1.185039046008763, 0.3997987346703504, -0.8390830626369119, 0.7664612539005661, 1.1452390705220412, -0.44118709528048106, 0.26214721724628937, -0.4951545553209257, -0.11879885987832625, 1.3282328751747563, 0.06968815002457066, -1.1182821619345513, 0.23652079790675906, 0.3692795793157511, -1.140728747827738, 0.5263061454716625, -0.5207546968661813, -1.503533271861299, 1.685912359362119, 0.034636130743337525, -0.48051165567394033, 1.0460524144567587, -1.0839349618672527, -2.1211644723131724, -1.0311758922985133, -1.2021446452680054, 0.06983434930473358, -1.5815367050307532, 1.0876986546066656, 2.0186122729964926, 1.811073181558942, 2.061655680618017, 0.8146717603062831, -1.5968498453112046, -2.0662599115172653, -0.5461790439353942, -1.293954740300037, -0.04669787176283761, 0.23146865620783758, -0.588038234461568, 0.5933124208465305, -1.0163085846469417, 0.2521752390452931, -1.2106468003843902, 1.418999037385018, 1.1108278459257963, -1.2434580142633445, -0.5105267831106245, 1.962828854249686, -1.3742391623665489, 0.36301946174407, 1.9887587169725671, -0.11568422609670699, -0.642928398294438, -0.3803110761017083, 1.4124073508805255, 0.29869224683807033, 2.0608887843113273, -1.357435592557576, -0.04818489310611712, 0.9811928870760606, -0.40967432838228596, -0.3030480871350583, 0.9136149401717509, -1.0208925536710525, -0.3505675095839659, -1.71190823631273, 0.20144681297018477, -0.7142725656031783, 0.10941276154357217, -0.010518057969719493, 0.7986018616075307, 0.4091757607417071, 1.3254764619646495, 0.37900863212459757, 0.2801496864889041, -0.4903324954119249, 1.5611921907449, 0.8801581363850509, 0.23899617476391827, 0.4941237199528515, -0.19580489922245364, 3.06700252986585, 2.075939890459903, -1.0531656839887626, -0.5746240339508544, -1.2509817722769654, -0.02930485583633999, 0.4955890468754583, -0.18287439285074464, 0.4428019418512945, -0.7067595339381431, -0.5880758813860446, 1.1741037427266254, -2.2845558148071, -0.20091142427273523, -0.9327486743061679, 0.05419468096069937, 0.5696294165103171, 0.9711793150927074, 1.5638669636681488, -1.399980051448174, 1.6694377251663244, -0.5244820252135467, -1.257281067913892, 0.2808453440838143, 0.48904471670322064, 0.6563624003164797, -2.403734256558076, 1.8072200656396853, 0.7479993507037666, 0.8957599457510734, -1.1333475754839513, 0.6052811339871745, -0.4713654733277363, -0.7018354826915972, -0.14295613102166807, -0.854329570376376, 2.600781602195285, 0.15947531968114928, -1.9492123387745222, 0.4025575201110334, 0.5377569832746467, 0.8230410704104014, 0.38678827937826166, 1.1036337112977639, 0.3934547673395094, 0.30962342705126583, 1.139829687497562, -0.6649904581148862, -1.5139589626882188, 0.5785053189296201, -0.6976263977299514, -0.48521233846001877, -0.9001322196203593, -1.660622472181582, -2.2786897073448547, -0.6396523522765016, 0.42857993052128573, -0.47159666033630393, 0.09912656547054303, -0.8978325685014887, 0.63667062531427, -0.9285968325105913, -0.41245780364313256, 0.191616368806377, 0.6617774942176655, 1.3566617676123918, 0.02766324341023624, -1.0349560837804677, 0.9570579186595424, -0.13078780011810998, -0.7995854873426, 0.7151367410023329, -0.12167714338407565, 1.6209549425055911, 0.37634955414789306, -0.6846815563905236, -0.13340769738466304, 1.62999490749593, 0.24590379716684088, 2.080737900190375, 0.4807972440746681, 1.9233090609717092, -0.7457053375145688, 1.2931674090867675, -0.5389819127967479, 1.3378716219526687, 0.46191592051764446, -0.12685025114948897, -0.564392245951514, 0.054901669351109676, 0.9390772175487241, -0.2832080542168339, -0.2454859351558673, -1.8832700802531435, -0.16505100921916624, -0.6746837003668393, -0.1357900352713401, -0.2041348043523018, -0.37391290726473403, -0.4402500408509159, -1.2290888874925296, -0.13562273551657536, -1.6500691440373887, 0.46665062174560024, -0.24566106658181208, -0.797744380603796, 0.055547484850162934, -1.7195390885648585, -0.23801758053719915, -1.3385900681264526, 1.5281883065641328, -0.7190676510974615, -0.123355719896304, 0.7764022341446827, -0.30040150524704784, -0.3686167969737519, 0.0943659621832766, -0.3974661297032506, -0.6247729926926385, -1.3907256888978008, 0.3787327798855857, -0.1261918572820217, 0.333666129561352, -0.2268078626149827, 0.35899627766440534, 0.4003040718066842, 0.04939169628599765, 1.3181095248614239, -1.0040453137475622, 1.0270565232586033, -0.10527902120387268, 1.0184000283100978, 0.37032567852749, -1.1038727471781569, 2.06240141354978, 0.0724635819839709, -0.6749483178493708, 1.3752140381174898, -0.18527094825241655, -0.49771622437764096, -1.5563678592094914, 0.30641413633727077, 0.6888572155488026, -0.7813997319688913, -0.3334732608283706, 1.2077222840020747, -0.6696185160915793, -1.7441216997483413, -0.1443175790084589, 1.2530385228003316, 0.48953706269055897, -1.1454774810030333, -0.10072099150740713, -1.4690725419140442, 0.22773646275302892, 2.1495481922715567, -1.9763318246520143, 0.3734138241025368, 0.3678799166519874, 0.24199407601003217, -0.8317998284783682, -0.6175366203935166, -1.5435990936321167, 0.15257075985667826, 0.24569789929243, 0.2973109282823203, -1.0464692699857279, 1.4335012256250086, 0.7760340274462584, 0.030779877800647056, 0.13317012902523476, -0.6096349652250187, 1.8769504574256326, 1.8165778911592796, -2.029543137642918, -0.7314038673207472, 0.16788051959333397, -1.287512490286816, -0.17978414420698238, 0.6413441803591936, -0.03816736449793848, 0.14195508782466876, -1.3077696693750356, -0.2788578604231624, -0.7927822730097527, 0.033625917152435035, 0.22077326511399206, -0.5309962861055292, -0.14874114920579462, -2.1561599667291262, 0.21857950385145597, -0.39674562813596553, -0.6172994137123726, 0.7237763615783379, -0.6628173764404989, -0.09955687084553429, 0.7661708667508003, 2.050182109550436, -1.1343231763411903, -0.394150602661191, -0.4005731600700831, -0.6133729043121271, -0.006937209118528061, 0.8746192365726885, 0.9627065829455164, -0.004195755687396656, -1.431856899763485, 1.1723324732423348, -0.7907307751741902, -1.2383233071901971, 0.4450622193871014, 0.6135856643531975, 0.41087999419331056, -0.9106010889982076, 1.537140159071271, 1.203007531467209, 0.4522478618181492, 0.06901440689355592, 0.5616178375297155, -0.913304278073554, -0.617052799856045, 0.8513556242527552, 1.6492263827929101, 0.28736119321050707, 0.143060129811001, 0.13159474089261292, -0.556050658038526, -0.6819127080659984, 0.2854925491407574, -0.17685951799635244, -1.5861004634732518, 0.7398075993729516, -0.13718006475583142, -1.2360195428922787, -1.800475631340105, -0.6653270917294025, -0.24529552485016695, -0.3070462119648475, 0.5209731324914566, 0.8294618413486863, -0.17019749451831728, -0.23619342552685957, 0.03462283540349657, 0.2479211831622872, 0.721589399500632, 1.1742488499645927, -0.7209553934014017, -0.5677211833764197, -0.8920108887781215, -0.2951205793197307, -0.194041077024394, 0.07201516715432071, -1.7926897922269955, 0.5269357871669345, 1.0775869197853591, 0.5356448376759921, 1.6180226180054886, 0.09591731457863975, -0.3033610094512978, 0.35200443059829245, 0.6372500799705507, -0.6470129923265721, 0.4563870076575751, 0.3086697829408736, 0.15795477733282282, -0.28995254504887596, -1.3608513191181555, -0.5174181206012595, 0.15321158202821022, -1.0735391094616389, 0.9498709387195441, -1.1791274655949502, 0.3401662792087062, -1.3746370296756663, -1.820015514626756, 0.5904282098582874, -0.7640243887629617, 1.899332176169294, 1.8001612651602614, 0.11754067768731466, 0.3451387680566698, 0.4252773778706197, 1.2930499113213374, -0.13497558680801955, 0.8295099746093358, -0.06483231029486143, -0.4626305949889216, 1.7974505990090723, 0.357954244463521, -0.9446699924851863, 1.0753715521250267, 0.6468347012501044, 0.7325172508900486, -0.8235967956477911, -1.8197269407302108, -0.7527397495032649, -1.0471331516010438, 0.954992325464375, -0.6487949930861694, 0.5412489072541421, -0.9744135424772613, 1.1668079912055098, 0.5071573516626207, -1.4971922309648993, 1.6732330041304837, 0.6658466177075605, 0.004961040538083645, 0.9766610530990674, 1.217004629489626, 2.15632219900788, 0.2992554016895504, -0.19074076031070328, -0.08513462495764972, 1.4398343939227665, 0.7531587527492296, -2.434314852616728, 0.018698508958621483, 1.530666394156561, 1.4174088220386398, 0.39311606885126577, 0.8429893215764661, 0.6889143877613391, 1.7048899457191737, 0.8279914080421767, 0.3841808718708592, 0.4345613421962533, 0.9814598643661121, 1.1001489018141712, -0.5361865265613242, 0.21775129927781378, -0.5197236573250131, -0.9476378494963715, 0.8334286814456744, -1.447030660023786, 1.6027755842182616, 1.522909575863655, 1.3672741814009857, -1.6085273302015077, -0.6841212925165058, 0.8714988428569002, -0.7180711780751314, 0.5764950939705556, -0.09035661359187494, 1.0682344096280718, 0.27136338383972597, -1.093914555087802, -0.37115833509731555, -1.2339441459427007, -0.7985138795193706, -0.07775530075881103, 0.9386977073001513, 0.3186949805078729, -1.0013479121939963, 0.2068538637260416, 0.46704881675224336, 0.0930693446845866, 0.9087490791207049, -1.1095909880643675, 0.13620180501268486, -1.2318793580686687, 2.3698156234871006, -0.41043047284201517, 0.9647930068590418, 0.7035313262086113, -0.7357611817796008, -0.33944606940905453, 0.975792856064161, -0.7580109890249522, -0.9388831491865992, 0.16631539872440593, -0.9686623661641447, 0.11101021374002976, 1.2833168243970015, 2.3501189146758734, -0.7419808119512225, 3.3177770321629443, -0.378854974046106, 1.1894959769491664, 0.5170237486499323, 1.449757482527173, -0.11005429828053218, -0.7094783265215441, 0.10745076413242229, 1.6224830274878241, 0.025460594268897623, 0.6425343157670212, -0.31898415130533375, -1.0798679506403541, 0.5735256411790288, 1.3484671879831278, 1.1276215638225833, -0.7541391904025803, -0.00765546636667677, -1.4513065159005456, 0.463408611045455, 0.056782072073773386, -0.3398650955417231, -0.3278301461019186, -0.5506101111181769, -1.838129548833068, -0.6528412434007834, -0.22203922522726993, -0.11557789598708554, -1.9693756516575391, 0.10517217800088413, -1.034395434153627, -0.08008953380065702, -3.0001454304286095, -0.7355092140807842, 1.0594616327950752, -0.4189488435377704, 0.16781086931278816, -1.9669454509751187, -0.731458954443067, 0.01711080123922268, -1.0063738446337889, 1.1320693665450008, 0.31382355603718387, 1.0723003552935109, -0.48887663896467776, 0.16351892393813683, 0.6923423498891493, -1.2674896295636169, 1.1497258936055144, -0.8608042226343801, -0.9164072583967519, -1.487718346596927, 1.4350188139062847, -0.21184761253034057, 1.3710129669800468, -1.2943315365568762, -0.19362259003418086, 0.7187438609965356, -1.4536544736540666, 1.0156800590204957, 0.5854427384212253, -0.5260200198486596, -1.1553701278196844, -0.27349200057360523, -1.2338491844820385, 1.7074643949762172, 1.8501418087438086, 0.5436111298236262, 0.4744077558142584, 0.5678560114121703, -0.7181957190268707, 1.9652881178044732, -0.6639884519602309, 0.3479450777176482, -0.7279578424760957, -0.46058272586248855, -0.4390700834752314, 1.485071764115552, 1.4888034597366457, -1.9695365549171249, 0.6506253211085398, -0.2486297625885688, -0.5519419806661555, 0.1895096241785028, -0.8790965213306376, -0.6376838625799586, -0.8514356912425605, 0.44713349005542324, 0.8885460864971125, -0.984898049801574, 1.9226056756793166, 1.151756816890297, -1.3439533152505785, -1.3828305275303805, 0.9810008154794896, 0.5550625182987955, 1.9741629526950777, 0.8414467402239644, 0.9903516449069268, 0.30384787269295527, -0.5118420624618873, 0.21568313531934488, -0.1906549073376802, 0.9872047773741, 0.043447057275043346, -1.0722974377446446, 0.30840240507887645, 1.231529689961776, 1.289961254197282, -1.415052295757837, 0.3542872190261509, 0.5064578533223967, -0.7014386812841402, -0.21695269183024965, -0.8504048338756758, 1.9671268250571596, 1.0909763189822588, 1.1465910271880095, 0.9300579839066637, 0.19877285881355367, 0.4033127688590755, -0.5693078627176211, 0.2771445813826407, -0.5910526566968882, 2.277491279753263, 0.656638231269999, 0.7966594580004646, 0.5030962029782104, 1.2239112871910003, -2.135423288869684, 0.956905678821742, -0.29364649759959877, -0.5416351205869433, 0.4524513169226536, 2.1047567102187923, 1.2144059061100803, 0.15546139261435685, 2.0078238030698636, 0.6830117763416009, 0.21062683777699748, 0.3680381824722795, -1.921358153981379, 0.8720229260359057, -2.4572973110469056, -0.6789193350439231, -3.616244826516541, 0.5200969859479287, -0.8348270288277571, -1.5574761449522962, 0.6081958963575117, 0.19058848286262964, 1.0023339789202066, -0.3112079672420133, 0.44178370023062646, -0.5048076251130126, -1.3994069725233815, -0.17955195369335797, -0.06758378480990582, 1.7922435643746273, -0.6192862077789711, -1.6310903545738005, -1.1690021151149572, -1.2093145024199112, -3.09516529226863, 0.43169942287551266, 0.06218865917825329, 0.5839211556095644, -0.7134319737419914, -0.9162521618284151, -0.3378876880640738, 1.2878146580745333, -0.15439993951522968, 0.3077351479215355, -1.7206306176358126, -0.17985102389955504, 1.14519788200572, -0.8522103401341584, -0.3963647723939556, -0.7056726337225566, -0.37501801123158296, 1.4130923511612945, 0.11630436842876272, 1.185142796653237, 0.011204445485047487, -0.20302508970364014, 0.9178670073251192, 1.129883095823573, 0.42668333759774785, -0.7693262395031812, 0.5989106795317751, -2.1834227246100535, 0.5078594213457716, 0.9932110431979975, -0.017934502044962136, 0.014618718399019298, 0.43615689634540583, 2.2660916638054056, -1.4481002752982226, 0.6458685948033749, 0.45170197162057635, -0.7387052243324294, 1.3393361998974052, 0.6185085759613994, -0.36812460265029606, 0.11464668364155528, -1.791669964880979, -0.7254503276995763, -1.0220519870845493, 0.7459004970720945, -1.240093138147424, 0.36284766593900053, 1.1310636505387424, 0.21609065407695296, 0.9901982501221922, 1.4142801306207733, -0.5075874816754351, -1.8009636793346049, 2.3589933091709563, -0.043963810041906456, -0.9225837945409925, -0.6390092243100048, 0.10006348512241166, -0.9257763652451753, -0.6194490923758899, -1.0763155593061657, -2.788511038384896, 0.37967646564114543, 1.4376287260090312, -0.22804268789046647, -0.21979058106116164, -0.18220420821816138, -0.44937185484417963, 0.5740193687324415, 0.6373983419863073, 0.5856219393424119, 0.34112426931531764, -0.6084945465256884, 0.060234739722926374, 0.7847874077044223, -0.31357045824328467, -0.4526081006714111, 1.3140655172664333, -0.6237624307170951, 0.34610293084708627, -1.0050719223251598, -0.4541508223849615, 0.10854220774737425, -0.602040653782272, 1.0547536665950978, 0.7073102150037632, -0.9555005854035606, -2.0723034039377595, 0.5893216873540514, 0.1659232479155957, -0.691145872673244, 1.8692666106818923, -0.7005044755324946, 3.406168768770632, 0.6178045437029894, 0.209522404413903, 1.11020426427447, -0.935303827291181, -0.30107511733828557, 0.0005771812107460632, 0.6289350238005109, 1.4317466616428682, -1.7337209714531534, 0.33652676986636315, 1.2353463697524734, -0.5758839644664974, 0.8285985659333751, 0.018064999514862144, -0.8583929015402073, 1.640939453974592, 0.5647216927706189, 0.019320381958476556, -1.8626818101777476, 0.35623705928968014, -1.3920535728295902, -0.04025364308925709, -2.1219812182033895, 2.2492879960896084, -2.2117506504974447, -0.7015293372430998, -1.3386346301502519, 0.45434785513478976, 0.7429073598196138, -1.3842131227703087, -0.730674268674942, 1.8189971647722083, -0.4758820769224347, 0.4409253327910705, 0.9449444726231594, 0.551630007075062, 0.5399541172046803, 0.3885563045101157, 1.524994279141021, -0.7974884472315626, -0.6568938854009293, 0.27947376218479614, -0.4955153130182802, -0.08942974231790239, 1.3102764929145028, 1.5444242142322857, 0.476164533281359, -1.5496430190473407, -1.8678225332641818, -0.05437993080264503, 0.3236472053381355, -0.36746508462131555, 0.6826304187866886, 0.5736299498569932, 0.8053111300585767, 1.7107199047271453, 0.5683041332657001, 0.697952343937172, -0.6541864315768986, 0.364406640125318, 0.39958220554572854, -0.28761598269501143, 0.6201596788722094, -0.3666201942589558, -1.4101911998665215, -0.4412538914508458, -1.6829197968369678, 0.32907480828411917, -0.24881581245959397, -2.027089220978618, 0.7282873752125394, 0.4579330597709827, 1.15745181629871, 0.3236159180652725, 0.15743561049159477, -1.4532306051766954, -0.5917126528319241, 0.754060062389077, -0.3751247341071256, -0.4967717054593357, -1.1834916327999798, 1.2936501822037318, -2.0961349093879544, 1.0842624515579264, 0.004210702344412748, 0.8784821536444274, 1.6211488910349103, 0.6098625542626688, -2.162347704092384, 0.14557157851798416, 0.1956419307017713, 0.46311517202542646, 0.2606189680155636, -0.6442854252008431, 1.2224106966606128, 0.9032792502072324, -0.5921632526896037, -0.4403250314077104, 0.09900173255653308, 1.588518953960295, 1.5514984760944803, -0.1988361913928128, 0.42122454074468846, 0.09171832221402072, -0.05232317203714638, 0.5107161167447202, 0.6648048184574585, -0.5326903183397282, -0.40375562127323683, -0.9755898265306233, 1.093816318098742, 0.8299243008006667, -1.4928026705324111, -0.6150924237870229, 0.6827457566049314, -0.1250927382677157, -0.5461042938952528, -1.9785054425068482, 0.6621698769014782, 1.6911825874334077, -0.4512292838434167, 0.31893183399956626, -0.06938245071569392, -0.8685919574091027, -1.216755898801281, 0.43218338233503684, -1.482305424213906, -0.20624326083624842, -0.0987004649563861, 0.052580690462736515, 0.15082170348420298, 1.815968946976184, -1.801525657427965, -0.35269438817590215, 0.3165612132575932, -1.1274985211458544, -1.2081895706309593, 0.8947763791232438, 0.9256072483796912, 0.1160156247366876, -0.44837495229842944, -0.2739183590275094, 1.1153679055306462, 1.3928570054101417, -0.905378910739902, 0.7753045815203952, -0.33105364449783375, -1.5667536820401184, 1.1950148433456729, 0.354165616551781, 1.7647325336720354, 0.34842243659368244, -1.1445904695784506, -0.6488915404249679, -0.154811442924692, 1.647219601375317, 0.12852481855920034, 0.004310308986859974, -0.876142611650797, -1.1969960098569172, 2.505246673635534, -0.01839259972989579, -0.42338324819041095, 1.7006327293948955, -0.23835669566472859, -1.0830569238314645, -0.5058031215088832, 1.1137754394535067, -0.37799051437745823, 0.4689867373861166, 0.8846331641907219, -0.862827297911899, -0.02378812527403701, 0.7260021867969293, 1.1597883185839557, -0.23469208225352878, 2.113734390813324, -0.43787079759759806, 0.40094481205354565, -0.440940747042338, -0.11638255103314456, -0.5976246285724223, 0.10949744083274207, -1.213522552035225, -0.2801704266168622, -0.23088144999338397, 0.8531392120125499, -0.5131891025804275, 1.2147647043866772, 0.2396978620703071, -0.6513123608903771, 1.1189830026785335, -0.329502482141717, -0.4408963005006592, 1.7621110917013203, 0.37263249289836775, -0.4859330788946545, -0.6067042421983502, -0.652281974301976, 0.9767244079433385, 0.6586845642819952, -0.046623060723555695, -2.1849581690080555, 1.0767435169705282, 0.12722050362405046, 0.9986033617806298, 0.3243622406515602, 0.3488571494425995, -0.28194417652034437, -0.5174529713073618, -1.1589669416210095, -0.6257925557519216, 0.7845203905386896, -0.34496828558498516, -0.55392401828593, 0.21742125464736634, 0.1940339202350278, 0.5181013615346238, 0.6838608318277294, 0.0963437586410137, 0.16605883874954933, -0.8192859105507256, 0.3425249914970222, 1.206963641510476, 1.2072370620006596, -0.09132107400635489, -0.4915708710890753, 0.4788544238385019, -0.8129680193587631, -0.3597416459932602, -0.001935251987053423, -0.5173249508895911, -0.3901095063695634, -1.8048261251158957, 1.0191412836502698, -0.15735909472717494, 0.3259968219452401, 0.2983002122558138, -0.2865809153674455, 1.17563374798573, 0.9503886873331864, -0.017150838121724413, -1.5498598643101793, 2.568724923652603, -0.08029464734292162, 0.7019319162248578, -0.3680243157771866, -1.526918066370356, -1.5059053494163779, -1.509751062694838, 0.707105319149386, 0.3759576560377138, 0.6475726058839647, 1.338795258808114, 1.8598847911090388, -0.05763592033876413, -0.8688135009341061, 0.019960962804798733, 1.7401095555504877, -0.6280597716378297, 0.3473435634019159, -0.4462968771961304, 1.5433942416056965, 1.2587933112859289, -2.78079601104039, -0.47512302722136024, -0.065984099161594, 0.6888533485394165, 1.2305141892155638, -0.6518789292799052, 1.6086260544405733, 0.29196792037545233, 1.527761638614743, 1.6303894518830946, 0.15132243302789938, 0.7682912494990076, -2.7992162064438526, 0.252765632632188, -0.18536494230320436, 0.1286412370033291, 0.7444904216395526, 1.1101965867010084, 0.09583878264956507, 0.20541837056183218, -0.43900022720898685, 1.8446971502738685, 1.525269777862721, 0.34107287068465036, 1.370225466799814, 0.8993074950529176, 0.388987193739956, -0.41615197068085047, 1.6959480854121158, 0.6560019605281613, -0.059249535360658356, 0.3641096108993, -0.37088956582253585, -0.7118422460610452, -0.4547337947749852, 1.6833283452032104, -1.6932063886335549, 0.33007518208148007, -0.9793326842802514, -0.5685406484500056, -0.6764406676203423, 0.27223581970527805, 2.6210019152932134, -0.09677977060333055, -0.42338854207086507, 0.46197386760890474, 0.3011535518111016, 0.3182607957611916, 1.1190392605031392, 0.10747571439392618, 1.3205623217552738, -0.869982416258327, -0.3050369611353702, 0.3649867693439435, 0.7208855533271251, 2.45889669000764, -1.6481274773858574, -1.624333610347512, 0.5392519410260627, 1.1694640247181916, -1.4936888563147976, 0.22169790172897152, 2.47683597304532, 0.8476731372760178, -0.08882181771534245, 1.575370258034113, -0.4650474770641444, -0.301534039019897, 0.7151072657003036, -0.5139154643660516, -0.8973214534592038, 1.353278291959696, -0.785705814458699, -1.424798288107138, 0.8521605677636602, 1.1173074404160004, 1.1078334261149487, 0.5060403800263849, -0.7559434902011402, -1.7506912234691885, 1.6010916611258923, 1.1400621104262982, -0.9490178938632181, 0.08236269987589594, 1.1360090499605335, -0.6822008865400492, 1.2299082010225988, 0.5747472954848997, -0.9917405164498511, 0.7860707096819252, 2.094613031828752, 0.32476024918516005, -1.542485498562725, 0.19154241112008105, 0.30669357584478807, 0.37562510410149125, -1.0038556934540235, 0.17700385429720378, 0.3866792602527052, -0.048846256996197955, 1.0608228443140864, -0.3012251999336654, 1.2156737659864476, 0.04936433736528017, 0.3300941747271548, 0.13579425531133751, 2.0300902584395386, -0.3659348731125605, 0.5084747076597527, -1.214555459415656, 0.23882541455141687, -0.7048446726313435, -1.1718879290253827, 0.10611992491921178, 1.474365496672677, -0.7345685181989616, -0.36082108102321997, 0.9999061228905383, 0.8174526543777195, -0.012197041307958149, -1.7718376142638643, 0.5003281667388737, -1.4235098831155986, 1.773715315343277, 1.219914038937146, -2.213860133799711, -0.14916713468644752, 1.7628714799535847, 0.2339849515986858, -0.03761268839633734, 2.143907078190805, -1.0015286896665496, -0.40010337492322895, -0.6566439248016585, 1.4505614500774051, -0.5810568006549722, -1.6162077232566219, 0.18463910494905925, 0.7742911410807676, 0.14496376455100546, 0.8838498428601247, -0.34941054966462454, 2.02035055742048, -0.33887856780628234, -0.8213769209241042, 0.5669351554200318, -0.42298733389277077, -0.6005548745768965, 1.6430054310046425, 1.6035130190910534, -1.0319391121636672, -0.09774507597793355, -0.6520088992578232, 0.0477880560338064, 0.5747081768308763, 0.4828001936355227, -0.10582221958284689, -1.4668221584548882, 0.22049638564358517, 1.149953675035897, 0.5356482043193802, 2.209744990011742, -0.3608091685311371, 1.4441404573947205, -2.2581574537180726, -1.13629994945274, 0.7265837346915243, 0.3097883608445818, -0.8577004158636681, 0.17114666895138375, -0.7043940938451111, -0.3009786276980547, -0.8165363388123666, -0.9289682655079575, -0.12244992044143885, 1.542896177144803, -0.8841551589218146, -0.9208567330224402, -0.6540118144074791, -0.5171796742457738, -0.6023620659122336, 1.0635672960360585, -1.134330817545791, 0.7516849917169492, -1.3768346295850198, -0.2887033795344619, 0.056463263594405004, -0.2319843130014002, -1.5167554485466308, -0.25185231053466395, 0.9501800034747293, 1.3049896091031608, -1.2018551498395114, -1.352386595817521, 0.8816491221888422, -0.5136584805608818, 0.413721469429948, -0.34300581824604537, 0.6390192112355659, 0.2576064001530712, 0.9782101083250803, 0.6357892633788328, -2.538589768176732, 0.44695349034542475, 1.7303935529284833, -0.9684600861287586, 0.10236207599063739, -0.058130587212581325, -0.6593728867487116, 1.628655977372503, -0.9761527761546062, 0.9272948375646727, 0.27513668932269936, -1.8234460501370229, -0.9808233679288441, 0.3505076901816651, -0.5696532524323059, -0.3208932477679777, -0.7983286790842801, -0.2857415896451339, -1.1602067061862453, -0.6920493662799277, -0.7209260326374053, -2.4150876953168714, -1.345197705402757, 0.5891707013601143, 0.4315664458823607, -0.6577610674094022, 0.0005062460095738251, 1.2591509479456338, -0.6063765414897068, -1.7607966379468067, -0.9508899749801195, 1.4880740849985945, 1.0865988277002356, -1.1046192339132022, 0.6131311512926562, -0.9873330073605263, 1.3013956438407601, 0.7414214926541779, -0.8920958466820361, 0.41616978812279903, -1.1208556692016416, -0.8894703034997085, -0.8309067844131225, -1.8606842678184219, -0.07194654199784922, -0.07117390174891772, 0.5659822119815847, 1.916753711583183, -0.6963548682808837, -0.7855412487214021, 0.8047069590125108, 0.18349468568397984, 0.13587660177551125, -0.36150957824597807, -0.9508896526834771, -0.9483356430836982, -0.003902815411469966, 0.6106885504696978, 0.19376914373215087, 1.1932986357592312, -1.097567907692405, 0.25150655593518184, 0.4292062014732737, 1.0191286705659799, -0.03253742612676552, 0.050433113577438515, 0.10814583704412964, -1.05385401691128, -0.09071516667529367, -0.23849827593955103, 0.23738288144814607, 1.1169088997424437, 0.5886653092379591, -0.24354050181310793, 1.117611053039336, -0.2161013013225925, -0.7694711307041686, -0.2800587010869735, -0.8093412890185301, 0.1259803458217062, -0.3736394395978573}; + + +static double gemm_C_dram [64*64] = {0.029004260079962152, -0.8006824757561799, 1.1197336711178068, -0.9896157373454266, 0.4966790956650833, -0.320720861795497, 0.2404711868912757, 1.7983471339688688, -0.45215688264510606, 0.896961504429265, -1.1616159798557508, -0.840560393015905, 0.07480233754961872, 0.17992670342491432, 0.40524411436169705, -1.6268041045901802, -0.515842081058143, 0.3550333279229013, -0.7169358889557749, 0.2669144829157952, -0.7584809853254146, -0.8370380914872608, 0.48072270248825516, -0.40604137567306653, -1.0335439663756396, -2.069883524764944, 0.6487461014247821, 0.011710122578667713, 0.7558956908425195, 0.5521614840818139, -0.25174889683631496, -0.9515208767957234, 0.7906470835496024, 0.16009301473206583, -0.9156242627130992, -0.8294654016291866, 0.6405496416929598, -1.1150477048464416, -1.4778148420891877, -0.6532442833617729, 1.0668677881031745, 0.42505345945888107, 0.07673387953069587, 1.1717799752861355, 2.372817497973731, 0.31201596993898206, 0.6638888271489586, -0.8305561220137307, 0.028066442063465726, 0.5327162396709624, 0.1408772044753154, 0.7686937307721734, 1.2407913952843508, -1.7571668440478188, -1.4407261503018678, 0.46966304643082196, 1.067965459457961, -0.39086059969793585, 0.18266961756344147, -0.09601667538677204, -1.6541976778103968, 1.7762728362797546, 0.044625271683577473, -0.05332555492084246, 1.5519660869822542, -0.5164453460006669, 0.3735110292906932, -0.14055947835504265, -0.4662885370095864, -1.5754096176009653, -0.5279910388184064, 0.1877355482506709, -0.33550084881023345, -0.2335582239599356, -2.000574246170347, -0.5830606097499693, 0.7201314957738653, 0.2767541956493462, 0.4410172346230466, 0.1496171764974113, 0.25584855399911693, 0.4231757850905495, 0.819138838244574, -0.21665970285704256, 0.7993969106462642, -0.0524553739237593, -0.10297969217994243, 0.10341500732243082, 1.3960023077483688, -0.3532908554905869, 0.2203147660382962, -0.09582033114984764, -2.2210275614128365, 0.606197840696221, -0.8083685791528877, -0.5880259036476851, 1.3096925869345688, 0.14641410716326553, 1.0053476857132149, 0.7403000763828661, -0.5588102569869894, -1.8250095277930243, -1.0186046335834653, 0.7832698999328468, 0.3231401688432538, -0.8047074876514235, 0.22535724026429152, -1.3470992648831748, 0.4765280552548135, -0.04554836049444112, 1.0856094027781182, 0.11016455864671677, -0.07169925780054585, 0.0271210087334666, -1.880645185815656, -0.6627766870787014, -2.8871893512281774, -0.5590779904078584, -0.2852107316710877, -0.14430057889633358, -1.3447542589401562, 2.2915669321114898, 0.1728899952093592, -1.421973566402149, 0.08592097416861628, 1.0123703420638568, -0.9558110283152651, -0.9027941505852196, 0.5300767150099646, -1.9419175079586657, -0.2760382915222782, -1.0179287043200682, -0.1606599622524637, -0.3767181010147598, -1.1725123233730355, 0.9572648447195339, -0.1936224437544405, 0.42763321723323666, 0.0597133381305523, -0.9990105347232393, -0.4832753666973765, 0.6204763319584289, 1.960673372068261, 0.8079703046097372, -0.3452734166837273, 0.3245617375208927, -0.07491582919001254, 0.2743378624516145, 0.5983093934031979, -0.25216135518238597, 0.596753836231434, 2.245459616334286, -0.2948256683719357, 0.28882168918856443, 1.0813537774504756, 1.8535627999465232, 1.1961057282238132, 1.318252064967893, -0.3950711849667241, -1.377281651368375, -1.408790244923528, -0.4636389874147835, 0.4564524135315159, -1.6380091071491378, 0.9185995000712671, 0.4692427417861781, 1.276662831833898, -0.9447062381422022, 1.0877432601911943, -0.22886776336281126, -0.012711978863996708, -0.030811506691294257, 0.38780634756191124, -0.47366773078962465, 1.4814958435930687, -1.1828980688637942, -0.19863200267049605, -1.3001223272185354, -0.4242285448896925, 0.08898755668384477, -1.694063278944873, -1.6602985696240946, -0.6264097653393359, 2.1301257422525035, -0.9460005244382601, -0.5374812634338685, -0.43004926797690446, 0.29036657258875936, -0.8172987007397908, -0.5094563820595255, -0.6841925657572985, -0.008910378204569518, -0.7731489284211737, -0.616010025614043, 1.1972052729129066, 1.1413513407181342, 0.1378551765169379, -1.4064193442890494, 0.47683432031632644, -1.0476861800204984, -0.06901359480920458, -1.2496780870132282, 1.6753024031738708, 0.041143324574971704, -1.4522215930201885, 0.7573346464645373, -0.15931444765366126, -0.7557308301686515, 0.196471099443403, 0.9564572866814582, -1.4803875895078311, -0.9249142102969159, -1.0917150382335596, 1.2585219246267312, -1.2891710566522292, 0.2768772021936127, -0.11943879225386107, 1.4656182572667367, 0.021005580078823815, 1.015858071109535, 1.3572500812200858, 0.5985933296458931, 0.5118443929095804, 1.3341173368810655, 0.25975515970872654, -1.237917055905442, -1.5278312160468452, 2.1781558314592333, 0.4138981989747854, 0.9117147230752412, -0.0703340663019803, -1.0158619558246755, -0.10701579101103097, 1.1466314764426422, 1.6748325965852073, 0.5314453542027439, 0.22641290320796856, -0.6327321154028427, -0.3761520310209821, -0.9094876923198735, 0.5199396339404194, -0.6279140323320965, -0.5316788990880681, -0.7754230114648885, 1.6645731868153486, -0.25248989955644296, -0.07000691089126687, -1.4833807861581225, 0.2847398900881516, -0.4709041665604012, 0.21337597451344031, 0.4752659270130253, -0.6322357393536067, 0.8609686485998456, 0.6154141944357284, -0.5912751549232785, -1.3228568966598775, -0.0850817349853954, -0.8896445451859949, 0.30012988995739986, -2.946119896252344, 0.036167602681861456, -0.028803490284605167, -0.11461775128822176, -0.19075498390300027, 0.29202031786639293, -0.3294293306975217, -1.2138544157908646, -1.0972607879764735, 0.8248759718159153, -0.8925466032322242, -0.16541550491454302, -3.4465386476151045, -0.9566298189710206, -1.078687196973154, -0.4891250155546176, -0.19531569651548852, -0.5990381399213928, -0.7036039565674199, -0.5527767107100636, 0.16920318370993273, 0.5427235579499587, 0.5503428910211222, -0.7497767572001619, 0.011571029854715547, 0.49984033903822517, -1.7283983057101304, 0.8594792530055284, -0.12824597747986724, 1.130107130041837, -0.4987262662830606, -0.13416057776817544, 0.5080625985293201, 0.2117295363547809, -0.8118692986997613, 0.9424962371461574, 0.6300633108154001, 1.2746895140278918, -0.003615756251429331, -0.05126805599191769, -1.6138120917239291, 0.7882409923880206, -0.47367442818736116, -0.43963455311049604, 0.712317456491045, 1.3326960118808617, 0.5896451874379312, 0.9762107134249405, 0.5626831277485056, -0.4376044921422135, 1.5861409442199574, -0.3308751028344161, 0.45942840764057974, -1.7057231513870459, -0.9254725284067791, -0.11018949372955511, -0.7616338202748348, -1.0857700920096018, -0.4372008083571365, -0.40109369588497923, -0.644818536292368, 0.25281756977441044, 2.4197071280480786, -0.22106488208438388, -1.095650643379566, 1.894125695645947, -1.2761684375038809, 0.02036098869546291, 0.7947496785408548, 0.3421126605593487, 0.7949003661056283, 1.1747154329748026, -1.165207479384505, 1.183093398265755, -0.35715333224519835, 0.09841575912600005, 1.574023689454931, -0.23482068201661857, 1.2386946627395476, -1.6783552822721601, 0.8611354052037511, -0.03315728672592852, 1.0193997600753135, 0.8649479142208678, 0.4164604631092424, -1.7829228532488806, 1.18355749410558, 1.57769088119824, -1.686257098236667, -1.1607340307397962, 1.0433166175934159, -0.27772980615804893, -0.6837779231673817, 0.3903294683158698, -0.3671124601982576, -0.1276413455606181, -1.700409020471655, 2.268428305186674, 0.2736751307318294, 0.4618308615774054, -0.14119264307379673, 2.2199837786106715, -1.375939861531243, -0.7221917522954365, 1.1098492022750432, -1.4505379826083395, 0.26060143268332325, 0.9771611195144573, 0.3765145109829216, 2.215882692348702, 0.4047556377415391, 0.17708325001281291, -1.9644517128168955, 0.3982782935193131, -0.6262164185787708, 0.15245667799057772, -0.6508467682648665, -0.040947126846172834, 1.7119976409288793, 0.21779845582679846, -0.04145965880856733, 0.13225304399295884, 0.1739378890012343, 0.08037751104228624, -0.9411877899806691, 0.38565902729297424, 1.0958429749681566, 0.0669055558927883, 0.4361448377834406, -0.5901261511098935, -0.8885190831394413, -1.4871156416726072, 1.3669107918561987, 2.3091823854788514, 0.622552717517235, 0.2783143206723023, -2.1305113526512396, -1.4978709762185878, 0.8018120395351532, -0.33995160613042685, 0.1777765322633653, -0.2258895695037579, 0.19586512261588473, 0.45301580114334045, 0.18103013768124301, -0.5147488863527064, 0.20662933937315553, -0.09581792397706412, -0.4704069093141071, -0.13483315552265066, -0.5594310075701671, -1.5755216037255442, -1.5674068340789091, -0.5157357110184205, -0.10054465770334044, -0.7071565768766122, -0.4099340274741994, 0.35968200228333286, -0.18585633976713617, 1.5416706566134035, 1.9286900603543355, -0.5159285075025919, 0.16886996206928914, -0.9067434891373716, -0.6039824452258518, 0.27720989342858937, -0.8814432879855706, -0.6919477366657376, -3.300499554594386, -0.6173928008586741, 0.8153244286523782, -0.35573315997666993, -0.20534234860472675, 1.9722365498950571, -0.1019166129902459, 0.08112220912426235, 0.7463452888856003, 1.1314090216181174, 1.1725026304304351, -1.3737070495742683, 1.734619629252936, 2.481740839103901, 0.9194703215452048, -0.34821661861545355, 0.9728026357332336, -0.10658444194926611, 1.3646609952054927, -0.20423441003137643, -0.06138988353092309, -0.1103302198524375, -0.3172315867238737, -0.8436575516229253, -0.5086533079781693, -0.1020901909331111, 0.041548802438476466, -0.9989480071569191, -0.19084542074059116, -1.012929236908774, 0.37846266910121795, 1.5569101781200219, 0.03186861709827397, -1.9643672831540329, -0.9559693601351081, 1.0476398922384702, 0.4753938790634957, -1.9155181532004628, 2.7851118312057928, -0.4660427767210397, -0.7434686806220159, -1.8644578336246445, 0.7950519234725988, -1.5175445270408634, -0.18967795984276006, -0.07354703638985319, -0.0028940583295309318, 0.05057720453427609, -0.2571010737906899, 1.841219462891703, -2.1896361652733782, 1.2511986406908666, 0.5753085882254242, 1.1153018270644537, 0.13982610960157404, -1.383864413771338, 0.7931811133480174, 2.1309464599529786, -0.3672255367396895, 1.2349500491253345, -0.2851321814733262, 0.8721818251187332, -0.2026228852474988, -0.2791938533272248, 0.08040090821476319, 1.0892882614640076, 0.09768943644705562, 0.4204417256351771, 1.3114392443815635, 0.04829268265664478, 1.2850500288988436, -0.2779162535369758, -0.43169391727862744, -1.5832048871215894, -1.6962198203895802, 1.0729777959132656, -0.3475301277658165, 0.5554189051412136, -0.3178837805858156, 0.5327674010524779, 0.6755622625790911, -0.1842302677407756, 0.43041683511575013, -0.8115483237447811, 1.3968996263534743, -0.17863606115051833, 1.585212875612633, 1.3280038403293726, 1.6695928015875903, 0.6109821394084319, 1.1349894473760842, 0.28476618327344827, 1.4784673864794742, -0.2823155837802257, -0.9183380787461971, 0.18428479751772892, 0.9836044862804338, 2.025235066042294, 0.8265404261612499, 2.088855400024876, 1.2286394369048508, 0.6715801392320037, -1.0498151352816971, -0.8931372957848912, 0.009361893370829872, 0.9162789715980914, 0.006157909931788802, -0.4922874423094256, 0.18089602650564962, -0.9841484655534926, -1.1301889231546511, 1.3001340798635899, 0.13693015400741945, 1.0390411986454737, 0.09933412649399904, 1.7158843111310522, 1.904568532616043, -0.48794979349112055, -0.4338145756826169, -1.0370401983449686, 1.0390032114803736, 1.1522094113772554, -0.4274833545676901, -0.8753567770565199, -1.6315994757003491, -1.7385506630534566, 2.532384190967428, -1.7056567691204445, 0.5413608251407436, -0.7741297263854691, -0.9447738094748025, 0.6661287246658135, 1.2031380054266403, 1.10368337423764, -1.2970356849209472, -0.6566436584727551, -0.14816924917182495, 0.7899980629195169, 1.8273852077888946, -0.9277938527847925, 1.9598998746936958, -0.27099375424892697, 0.6313744587208714, 0.40220491996516095, -0.29639672770006376, -1.8023859026222553, -0.7750540161682024, 0.1947076125945104, 0.5471135873496065, -0.652969912710415, 0.8404848088284015, 0.12894499297938444, 0.6032885408701868, 1.2514835286413495, -2.3974894979687105, -0.9304443816961642, 0.5235805043032368, 0.9237070587307208, -1.2232371757835139, 0.5076176935522306, 0.11779678439009704, -0.34612498438387546, -0.7314860546390927, 1.553910216869756, 0.373159475336515, -0.30618102562662347, -1.0154187441535123, -1.3683721575144063, -1.6848734071167453, 0.7057898542723938, 0.7127375808855136, 0.6820908867090917, 0.14243208748778438, -0.49764571567254134, -0.34993722444753544, 0.28263895634917763, -0.0811609390230422, -0.8001263943467075, 1.2016381946021464, 0.6300938668214966, 2.0197124104278883, -0.39730245577489043, 1.1082615629881487, 0.46812678384907336, 0.666746788576162, 0.26123698644751225, -0.7024810946461257, -0.5922965445684787, -0.48103667153342716, -2.24353922047969, -0.9337194785548774, 1.3686185555811365, 0.3972741496203757, 0.37354079869199974, -1.1743179438700706, -1.1748244659763896, 0.1406513465704322, 0.7766944125577693, 0.6468554295128249, 0.8402029124529626, -0.5495888272912638, 0.2752226876433018, -1.0617295543596483, 0.45862157925707286, 1.1714768594080485, 1.1805224647157246, -1.6892820684956078, -2.393405099847649, -1.6331785264764314, -0.7303247685543807, -0.37576096935444997, 0.4013478691603241, -1.0157957733816363, 0.14002890339339075, -1.0252839102787974, -1.0375314340230521, 0.8172730168671789, 1.062543562593135, 1.2810809804809749, 1.3999493985992992, -0.1750138803985548, 1.395734920938993, 0.20896311087749608, -1.3682057826232348, 0.004699216277132869, 0.4764319522852837, 0.12823174581788757, -0.546109883020964, 0.2523240224674329, 1.9724181468899409, 0.571137816454056, 0.522392971014453, 0.06334935501567902, -1.4920451846109672, -1.0225677061413179, 0.44255002330819526, -0.4682032342920937, 1.0350483070201422, 0.8200797384116898, -0.3029007829607368, -0.9845615009741489, 0.7582526902117465, 1.4833592773254187, -1.3989560209509306, -0.02010565525754588, 1.696186541558, -0.14162189076683343, -0.6537141574516205, -0.38621139164560747, 0.8184053985461378, 0.6452934033126237, 0.7403406155596476, 0.5169782497985267, -0.8189857182537518, -0.3298835390479515, 0.4237001612173338, 0.7833162409431745, -0.0019372831953367766, 0.2733210830893454, -0.6400595311632477, 0.6228358338196626, 0.3278665095994055, 3.081520639298892, -1.4435639267846334, 1.7053027215702756, -0.9588347501825313, 0.8266484324217002, 0.6242654188330886, -0.6407113941329479, 0.2772593629992858, 0.24814190447973083, 0.03363219264335503, 0.04496534388566153, 0.7087040051423135, -0.9221069417630742, -1.5268364676636788, -1.2896607997985812, -1.3661213777130599, -1.2075968696301782, -2.389243136958518, 1.4955588874856782, 1.2032086179453023, -0.14139077396705954, 0.2105872325884853, -0.5266170806972954, -1.9635764068165913, -1.2961941687735021, -2.2835960332407423, 0.33843875542096646, 2.3953920170177923, -1.1837497023332566, 0.496939041745984, -1.6834236268645497, 0.0947364755311612, 1.3677509022976098, 1.3010190519580898, -1.7668063834316443, 0.21564869547117013, -0.44708261946187283, -0.002380181670482115, 0.650945443490256, 1.4074149358152999, -0.3502584098400984, -2.275975800589525, -0.713875724177341, 0.5589684491426312, -1.965116029720147, 0.47575103008133773, 0.1679025472894861, 0.5439197139149357, 0.18336508565925638, 0.3219885649627636, 1.7554902588109447, 0.4642725270837393, -0.4390920573164246, 2.2698459891448923, 1.9524244471530363, -0.14392435570038756, 0.8876434758028264, -1.6577043260766187, -1.0198707516700816, -0.5961056777066923, -0.34369290129618396, 2.3123203551692133, 0.9307680048590791, -0.002081134721685804, -0.4816298626933, 0.5166419734688004, 0.09544852566577597, 0.738769513030866, -0.5320413954446367, -0.4940048696009806, -0.6416355699204741, -0.9125056647182483, -1.1862204740038778, -0.6555000958717663, -0.833470938908399, -1.1616778894644986, -0.5822364941000208, 1.5789499695762335, 1.6906076958567484, -0.6682910973489802, -1.5375408783188134, -1.7035671717673282, 0.5113501775091176, 1.3627201535356952, 0.34281653314195654, -0.0361566378498718, 1.283526267201893, -2.2745695742593397, 0.19000854891098337, -0.9356963719873145, 0.7771715931847443, 1.1747876035023088, -0.6581782060160273, 2.1514708443588093, -0.36624102952776444, -1.02996208423095, 0.7217520972507986, -1.3423248117021074, 0.29948769841449313, -0.9983234204192304, -1.1349975297569361, 0.2390417601230243, 0.7072204486510455, 0.35832543994067206, 0.8041102924500155, 0.3028670857744879, 2.7623138131362417, -0.7089157750419613, 0.22621529706629703, 1.0159042552872546, 0.4778866048560423, 0.13862524435273077, -0.6817769904192166, 1.2905800338344828, -0.5617711995631723, -0.937878912770488, 0.036259068904784184, 0.3074683196641872, 0.02334508317808002, -0.056636545167360136, -0.6105722560497783, 0.22034125973327826, 1.3981176980080354, 0.002830930797289729, -0.24195892578863437, 1.3598231207188574, -0.5983975108140343, 1.509108735185707, -0.3108584778552104, -1.2228769868033365, 0.5943397739409046, 0.31935177535483583, -0.036439093781717204, 0.14778839039885514, -0.11651573539454131, -1.4649049971267012, -0.2683259472901276, -0.1143739595865752, 1.7635913804869325, -0.16130246501945172, 0.4072876137215747, -0.31103626857775446, -0.05171663918837877, -0.7274085567918993, -0.869998251494505, -0.7193321231806105, 1.7505951189711304, 0.7440630635174471, 0.0016957841800653661, -0.983556012268064, 0.5131452298233552, -0.21520406798199235, 1.2554935163458343, -1.0675348115557104, 0.7469420795328888, -0.9963438487998225, -0.6229174823536682, -0.6770598584016285, 1.2562729341933596, -0.2712138170575698, -3.068642230593467, -3.0531360276822577, -0.5584911390555901, 0.7473315149504595, -0.18706483628559678, 0.14675010155914514, -0.006368544270069353, 1.6844988114574022, -0.6214979241607808, -0.3355320210713104, -0.09820727272027757, 0.8687934479912008, -1.2005133663272494, -0.33084789733891284, 1.1571084045756281, 1.4246451046643682, 1.6962376428779853, -0.01965764703939021, -0.7773091413938378, 0.7348575748530396, -0.23216605868100404, -0.8192776375683218, -0.2080446140023382, -0.44904006003328667, -0.4432456841776011, 0.06399763185741875, 0.21563610206370648, -0.2508963268128007, -2.5393973783220463, 0.323376954594191, 0.1384357529412035, 0.021153113599300586, -1.6410540709354358, 0.3691910055245278, -0.17495885529094257, 0.554361827175954, 0.20816477209501544, 1.2322688447103174, 0.2259606292852208, 0.5140029111794593, 0.37718842026130545, 0.33603722021339, -0.017669087842033065, 0.3990879000210093, 2.178612539524806, -1.4021972726687062, -0.059858631189209026, -1.0031183337604832, 1.383398163582628, -1.0611670406818532, -0.6074540386699645, 0.25468663161832605, 0.13474280254470264, -0.10885846887714488, -1.3619488838854161, -1.1865743468938024, 0.8343602196452481, -0.31636758410943266, 0.0822806179687328, 0.03610500422763477, 0.36975660962214374, -0.37447984002912227, 0.9006398818186364, 0.4263942528559476, -0.8471405691528062, 0.6370923472128284, -2.771271846414234, -0.2775641216533752, -1.9698060876925318, -0.7631948292304876, -0.11501310895829121, 1.2264502383793572, 0.44510581587390197, 0.7850830340365011, -0.8972456251148753, 0.6916483637375145, -0.5297453646047573, -1.901732896640853, -1.007326391309077, 0.2220310453886031, 1.0724562599385534, 0.40011245153735736, -1.1593565442528044, 1.5287688772353074, -1.2265309382410865, 0.17812058438692274, -2.1424196963250663, -0.5365247347682954, -0.175882228830132, 0.20779436050052882, -1.2395880259585617, 0.04832542895494312, 0.07093709252503462, -0.056371503668414216, 1.3597592757778154, 0.3828295662314724, -0.5315492554139866, 0.6360780600344075, 0.7531154590527323, -0.7824250791522117, 1.0617544257117932, 0.5489962301017025, 0.6286191631180904, -0.7554812899095874, 1.3460101201505388, -0.6564959907077351, 0.16698785124367177, 0.09451925409687266, 0.17705768947811729, 1.0138194440077566, -0.24231907310256842, -2.546273886239003, -0.05507329609619993, 0.3576296538398323, 0.27507225100326244, -0.7942125094255036, 1.0744369972956842, -1.1548545340061322, -0.15997902636302005, 0.2950954321082824, 0.8845493763065855, -0.8132679790365331, 0.21153971778686953, 2.2177421007414084, -0.9299613122041496, -1.6733913807379388, 1.3474760825861976, 0.9816143450439703, -0.3855895553937516, 0.8502913770246404, -0.016034574759692683, -1.1339934776440412, -1.7563721581739282, -0.06647491888759757, -1.8920747028441938, 2.3760043080911335, 1.8177530262775197, -1.8575847163422115, 0.844553214178571, 1.5954993729399956, 2.1252863078605264, -0.9089236614521397, -2.0469171775640773, -0.9384063102943723, -1.5482176543034978, 0.4526740914408505, 1.4013381381239929, 0.991045705937935, -0.47656146801187094, -0.27582104974046956, -0.5642658623540668, 0.325163151043837, -1.544633482053262, 0.15518857788732585, 0.15382265815454396, -0.6343026666433687, -0.8052290074500515, -0.01691923834054946, 0.6541683607771073, 0.5338183805463347, -0.9091383582478858, 0.3968969223456185, -0.17061628431357603, 1.747323697825887, 0.8012341564226836, -1.255442509886699, -1.2920206203653015, 0.0749186813352897, 0.2120295206583239, 1.182843648729612, -1.1122449131709833, 0.6272974182744673, 0.22777924320090764, -1.6251751647156196, 1.0411757059610847, 0.019367245918048063, -1.5738996411263415, -0.269270207865917, -0.5708394331822761, 1.8504054703733777, -0.22094889809967533, 1.1868455374446385, 0.5717141696167073, 0.8579212808811838, -0.49203515643303497, 0.42647412290047176, 1.0808047827262008, 0.010157228470302567, -1.719815859158772, 0.38805715778854427, -0.9969905666150687, -1.9361769141375387, 0.2474759878876688, -1.4221009001917095, -0.5918211873235646, -0.8058159270505826, 0.5438653208536682, 0.19307918373458596, -0.24237795984767208, 2.3297553315723163, -0.6782771653830929, -2.264267240688485, -1.3620513569200732, -1.9227157102467343, -0.5474383968696648, 0.24293097804441546, 0.8929260011447531, 0.049719985269798754, 1.3121549852716419, -0.7380138820116222, -0.011523274745424477, 0.7707761640355849, 0.2159962953115613, 0.5540026920594798, 0.09682345285130588, 0.398898061918644, -0.8325427357082503, -0.8742308162726118, 0.047733473640843245, 2.054543245821081, -1.3898902807090843, -0.12538538363326618, -0.09873796128345852, -1.4497902777439649, -0.4782177466678878, -1.5489795500879526, -0.29518331705238504, -0.44407598222159483, -0.9106356388426876, -1.550174445411619, 0.9328231660401188, 0.05594760595703414, 0.07566938845558267, 0.3298955808621695, -0.0017861668992007044, 0.586486364465265, -0.4362101979996282, 1.009729735572833, -0.042390290391845505, -0.2808285449424426, -1.0403468643014806, 1.131390812188699, -0.773890404524892, -0.22102358669926575, 0.6645483621647768, 0.7694091180284272, -0.03831164560096324, -0.3150960131582738, -1.0259652416179839, 0.20049882895150267, 0.03693677780369976, 1.6551618339165797, -0.22673604901843455, -2.417611359678329, 1.1106483704352281, -0.715751960430851, 0.5164952578195183, -0.6996317634146395, -1.897990257489308, -1.8041186305012002, -1.4690150868698797, -1.3087988024213557, -0.17486927381146705, -0.45353269534719165, -0.19149104316066032, -1.4266479569878736, 1.8919903045082074, -0.9473356590670324, 0.5173785755076394, -0.13818347423848865, -1.086849997656127, 0.36593831570404595, 0.6194226195093413, 1.4453714190862008, -1.3271158566185721, 0.60921787209085, -0.4832669384376709, 1.3186433317044879, 0.9513213947793335, -0.8548751359506115, 0.1071168124112579, 0.26717848135064914, 0.7030211740414508, -1.0709788797992723, 0.45569586838966974, 0.2887090154342446, -0.24229609713368583, 0.49390930613496803, 1.2738314634647165, 0.8139546371116826, -0.8058423065764165, 0.916823751781412, -0.6678215090538104, 1.4119852560554031, -1.3924034581122728, -0.48456149875876053, 1.0643581297073346, 0.3566463977388516, 1.0415975486050486, 0.028040080194454448, 1.0504197093941925, 0.44965919555783174, 0.8435496128685037, 1.7026256067041448, 0.14373254549294262, 0.7291427328749441, 1.2935074397997568, 1.1398931375510761, -0.18068743577377236, -0.6047067890923773, -0.5346294021251248, -0.10853463546664842, 2.24413601184453, 0.3297355179043857, 0.6657531282588651, 0.964251923438201, -0.5628928015239664, -0.0017106246437996794, -0.19257380601095586, -0.5999594838401076, 1.3310045638118178, 0.01078134546842449, -0.9551407698862096, 0.3885729820005979, -0.05434661623637475, 0.3767388172770911, -0.4898330949543117, -0.713441149440031, 0.42018478215791266, -0.8439100277112023, -0.19565425401483183, 1.2508445943709827, -0.598991758922596, 1.8429649718578998, -0.14258798772701783, -0.18138700905606242, 0.18618696335301746, -0.17087391761424983, -0.8432760462260274, -0.9939917370091027, 0.4305596597055404, 1.1091371083897912, 0.0790722776794302, 1.2495242586059518, -1.521274693280775, -0.7616476824293791, 0.19580408817424708, -1.3143027744001392, -2.091488061999562, 1.9663088091747154, 0.229879430005645, 1.4409375453185944, -0.36162055274827665, -0.27464439642870486, -0.6230996505620815, 0.5751002240784702, -0.16100067047853925, -0.09962621112274908, -0.4351501356168505, 1.3351792476960413, -0.5784998697471228, 1.3361458462940539, 2.3601479775013887, -0.4647589716386651, -0.4548988716102504, 0.7028762701773292, 0.5914980686358756, -0.6966115762392115, -0.7696723521588696, 0.03715612980676316, 0.32221017528830087, -0.4234227574937845, 0.34726424283234486, -0.48116562286295844, 0.3138392530237178, -3.16017434136752e-05, -0.3914227082899591, -0.581666722921146, 0.17111964776203006, -0.06008169278035282, -0.041886584782142536, -0.28699248044931597, 1.462175320301007, 0.1245846313065406, -0.1123526751684876, 2.092515176950615, 1.2272760858332872, -0.19552592726578952, 0.49191271925867636, 0.6144137708252538, -0.6106235763708134, 1.4976844345055038, 1.1892142848985179, -1.1357119642005757, -0.28436481789594376, -0.4421830922813949, -0.6328684584245098, -1.7040349067620155, 1.0820432527761576, -0.9968510182567392, -0.7985198199890275, -0.2588215482253829, 0.20174302514172218, 0.7287507331021361, 1.1722852714149967, 0.4322448567665407, -0.771155579801035, -2.612258680121964, -0.7051447495309736, -0.08301192443248484, -1.4472391477276658, -0.3526737726608245, 1.1294354483566833, -1.0899837588692494, -1.1395916553408674, 0.7779937885751342, 0.5183410812373956, 0.8509697670045957, 0.6208144564226835, -0.778892715214496, -1.0501461846073583, 0.8552859071722188, 0.8608448046488019, 0.5497428154557589, 0.04882443454369946, 1.6651080232070385, -0.32090016182105363, -0.3728486660772143, 0.8430133361143574, -0.5655459744432224, 0.7215544062511454, -1.9484490239876828, 0.6423145640402413, 0.014400283567776857, -0.7898745532400717, -1.586323922234601, -0.8458020923790143, -3.088311088273429, -0.7711672240651922, 0.9871615977182401, -0.9045757185197361, 1.1588809667487696, -1.3285096437778892, 0.5493583705018974, -0.17757552950573202, -1.6167076444272095, -0.6257691840041929, 0.3674989256823125, 1.5365222795738054, 0.3527319212488765, 1.0485204480487655, -1.660459836294662, -0.5794960248043395, -1.2465657293652699, 0.39414956926958317, -0.22431122185124802, -0.7424297725903407, -2.0183158330852966, 1.0943683904642862, 1.9180228164677529, 0.33125926943311296, -1.4098590113169003, -0.3049008568768526, 1.2884791320277762, -0.8304495335533479, 0.5648082533641575, -0.6324582858362591, 0.15519145016196245, -0.14331072524661, 0.5955341112172925, 0.2683604694117294, -0.46158779655753196, 0.07612773147707591, 0.4518924976580781, 0.4439502747372077, 0.8523538103367174, 0.6526631303289786, -0.14639057359720992, 0.11541815018151078, -0.14641912207628505, -0.28858965267185804, -1.1094993394266683, -0.13666302182060672, 1.1197245750262241, 0.5969030971713879, 0.7652826186532012, 0.5565420987155717, -0.39973686526861824, 0.7840343460033151, -1.1888373414791333, -0.38373069667860454, -0.2549327865564444, -0.831606465136574, -0.8020163962470959, -0.867149529466562, 0.3741626587437947, 0.009823237085445392, -1.7368701460461045, 0.9578205180189425, -0.30283019943674705, 1.1710486547250496, 1.3504432585716344, 2.135913369966061, -0.37144981581277836, 0.6683173129623053, 0.20836373808769923, 0.45158986081203556, -1.1459347939795756, -0.819138263097992, -0.44181173736632695, -2.228038352852804, 1.3450784569893894, -1.1523580752749787, -0.20464272457508284, -2.6483454695188007, 1.213210112709636, -1.4004764346361736, 0.09732611023114367, -0.44728592455565547, 0.10547550295522748, -0.42093313113048986, -0.5056183426815237, -0.35915275364763544, -1.0946537876925737, 0.31096146492651894, -1.8148942677707616, -0.3091292910916751, -0.07769189114014907, 0.8210353689958184, 0.9977559638388211, -0.9741254410868778, -0.532900582192196, 1.2326485600619295, -0.556852354708009, 0.5224831305011773, 0.2473387410334785, 1.1142299086991494, -1.1993099089239656, -2.3844231540204452, -0.031312298998023125, -0.2578374897963484, 1.3655566629409817, -1.978772520685182, 0.05702667001523861, -2.7661971160023278, 1.4379234027888605, -0.7192462186848305, -0.8359204541555126, -1.97072449798586, 1.2834263121409806, 0.5648994039770748, -0.10923252179999401, 0.5481965021182704, 0.192406781879664, 0.48581076499243303, -2.605560426009065, 1.03504983076068, 1.4042025146049608, -0.6532422029882547, 0.21720993132656635, 0.44583467031113655, -1.4473969873605004, 0.7442621658759352, 0.0035577574611439537, -1.5352838320153788, 0.36582337868920506, -0.43827718248031894, -0.331658585134989, 0.03475743065587794, 1.695364872590356, 1.558451620009631, -0.20689475301966134, -0.45129848619848684, -1.523170827436555, -1.694309335523152, -1.198176658548595, -0.19969177462827617, -0.05282460007952421, -1.1791283297361472, -1.0067735453064437, 0.17055987486894333, 1.548598735029748, 0.7208980223949303, 0.4530935835189574, 0.8089115623004025, 0.3351300125270723, 0.3800443655445466, 0.3736345544751257, 0.08967024919905225, 0.9223811114430721, -0.9791572872575997, 0.7490556870861242, 0.04211285779316042, -0.48675401364389137, 0.7892987384887062, 0.6514935495821761, -0.7389337564143339, 0.8226734205961588, 0.7249237684279655, 0.9660211264551801, -0.4532783587481408, -0.8511090310517235, -1.2152362800727083, -2.2688038747495143, 1.0639266151110012, -0.11852527671845324, -0.04079710558992621, -1.959172190759805, 0.634813706645387, -0.024392389160913488, -0.8994503599741844, 0.02058425261846817, -0.5502771537286061, -0.7627382878672573, 2.812113990163829, -0.35697622542008045, 0.8954830632884034, -1.2850622093830648, 0.9048756978263991, 1.295681539205646, -1.8039444541082827, 0.6289956120674256, -1.2464825605819987, -2.434105594966877, -0.7368776196463713, 0.07517741459098572, -0.7212226336631826, 0.6482644881693863, 0.7243697163628927, -1.015612682453925, -0.20576178987164687, -0.03565973922119395, 0.46655943398917193, -0.49256995004987253, -0.6208601544556013, -1.9147957069743964, 0.9111798522207986, -1.050789491681603, -0.17826554882391007, 0.0034287654351666343, 0.23891042130951867, -0.2896526657972369, -0.9678605370350775, -0.15606979834697407, -0.539588519878248, -0.9744762714085187, -0.1158787137991666, 0.463186013778498, -0.31756023012613327, 0.32352357908448803, -0.585725835882206, -1.7678336366681864, 1.5889268041950584, -0.20630705622264997, 1.232645492185463, -1.536865929859409, -0.9261652386696412, -2.0561143314389776, 0.4779964081018399, -0.8596011929021515, 1.0843957545428986, -0.9897567668916143, -2.3232928720337003, -0.03340641205022988, 0.7598708513617404, 0.6584247271159631, -2.3279582198317708, 0.24768310253870407, 0.8762008827221577, -0.6729640746468504, 1.2959884053547635, 0.9381350368383641, -1.1241425977603545, 0.4829581184819777, 0.44171108339691467, -0.1872572531285367, -1.2571533983758636, 0.2048074965235173, 1.6143344982484689, -1.3124698136215769, 0.3635463079780809, 1.3596873368910098, 1.081430863928576, -1.7061600182770245, 0.2118428338657974, -1.0006407692588688, -0.3401431816847726, -0.7813320328275092, -1.0011400049098196, -0.04519821459969004, 1.2603284232288081, -1.0630920047189185, -0.44789118146525986, 0.5582310695632384, -0.7090682864355446, -0.5133533644647693, -0.13049594943266846, 0.7311900472570971, 1.493841327862994, -0.25011186120154755, -0.7748595776465173, -0.5052909848740618, -0.5033837938274406, 1.0631419148120849, 2.2478394914416504, 0.7500249601704074, 1.5817576559551234, 0.8472836111216092, -0.470416237895585, -0.19965720263223283, 1.0216451463957437, -2.1860339921625407, -0.9948198936152898, -0.4396019229076382, 0.8734144476777804, -0.2965813670330133, 2.2470581118653734, -0.3395559758401316, -1.791968271962612, -1.9257914274985277, 0.3714309214848273, 0.703855673271628, -0.555710126333215, 1.0220050901401225, 0.20363711487789027, 0.8516796154742334, 1.5757937650329772, -0.09665836315586222, -0.776148895209055, -0.8004256779107253, -1.2413561284257886, -0.12925323644050332, -1.2379066703304404, 0.06651546025851007, 0.01391190021081403, -0.17367092702089812, -0.3287548140792935, -0.8711037772397026, -0.13391409347721686, 1.046744495577508, 0.8549541076563608, -1.14897045533444, -1.9386803001956516, -0.38823478112772664, -0.913589660602426, 0.2729518941831664, 0.15071694940790553, -0.10547684574045808, -1.2248164227256482, -1.351082215307864, -1.331163419569997, -1.3025284037326679, 1.591100615537101, 1.6839972656851228, -1.5013406493986328, -0.014560098841445244, 0.8758316571675913, -0.8616058158966454, 0.5237127012367585, -1.196778610697725, -0.35407288196013637, 0.6942107386263077, -1.8315746797885266, 1.4846155028429848, 0.43076769047114793, 0.384367439106405, -0.23394885184834452, 1.2198064491495224, -0.5383323547980174, 0.8160510810336509, -0.4573571329857449, -1.7335152974789638, -0.4636249816670279, -0.15318904243505294, -0.42412709535096155, -1.2846318534528511, 1.325417287661619, -0.24420837398318634, 1.7225099174527827, -1.3858598478981758, -0.350222801326749, 0.22885965098157468, 1.4051554822746368, 0.3335772936910085, -0.6286767607540873, -0.07004282442105106, 0.04489437050367313, -0.4059451088431407, -0.8094857079707901, 1.7505330159261117, -0.583610420693528, -0.7366008689555579, 0.3984745730971409, -0.06377005585758136, -0.8206644772162646, -0.6843563782443158, 0.413445320652666, -0.4554691818585017, -0.6229184879111299, -0.2413741831461815, 0.5506155379147128, -1.3103237870729614, 0.551465002061796, -0.5526669452272004, -1.432939322764634, 1.783677814895783, -0.2619175408084894, -1.7366570861134099, -0.35564945315684077, 0.10137133388748105, 0.7235998519780015, 0.09403042929115289, 0.15425730783069394, -1.8572780611255473, 0.5058501044761556, -0.7574907452490733, 0.17607281289803361, -0.8396945461067945, -0.7292802178089858, -0.7002824669050794, 0.5503576214615272, -1.5890603582592648, 1.793036043038875, 2.7878235846616866, 0.38956928497568377, 0.26174869373444265, 1.711065590611669, -0.21780984024318578, -0.7476219519355383, 0.18354455463527203, 0.9102969356546101, -0.9733253628488144, -2.344766204767146, 0.07301118913271507, -0.4917986474536467, 0.7416391329516281, -1.2880000713234445, -0.46197477360345757, 0.30212819705891386, -1.5167184180382485, 0.8501535296247528, 0.5175168374586809, 0.1763279409946514, 0.5808980947903934, 1.8472712753780864, 0.5887473330756161, 2.1954184977584354, -0.03769822240764868, -0.15613316317636414, 0.5004769377495568, -0.7455652599230427, 0.7677830295108011, -0.1441337502428087, -0.7523387828605589, -0.36755553576567623, 0.34105345138077786, -1.1914248220126447, 1.2303531748948233, 1.3432678076153106, -0.4313094961431832, -0.716554553207416, -0.36217498101423934, -1.5133659288612389, 1.4950695017357467, -0.5715269477785132, 1.1593421463571147, 0.43789720927678055, 0.09116342195238117, -0.3049393765588991, -0.837272212664342, -0.5766435716140458, -0.7356401726215391, -0.9485280265926767, -0.1250772778287353, -0.24361064177838979, 0.8522508371598432, -0.0037377039062253593, -2.5439058613954306, -0.0569000266151025, 0.4320024316685166, 2.194478575759713, 1.4396842305532822, 0.36543499574809074, -0.3770338147135057, -0.8552418236779827, -2.641615137447347, -0.01832206949724758, -1.220279075748726, -0.4532959432254292, 0.2687666926125023, -0.8588555314205266, 0.2995859931505431, -0.5333350265572113, 1.2847615357173254, -0.6750734120371739, 0.8097130403145714, -1.6270630113161542, -0.9700686987748345, -0.626750470435254, -0.873880059260819, -2.302124621855377, -0.2119446632235012, -0.45104357068515205, 1.474647321380819, -2.452150203161443, -0.26422200819131053, 0.3355570393620066, 0.4521192920529254, 0.6898023906005871, -1.0228088805014108, -1.5620067151329697, 0.2114421450103242, 0.16571047265242836, -0.9976369476833716, 0.2707035595461758, 1.527376877291636, -1.1501231170867043, -0.8215138548193065, 1.1255100205347468, -1.4908295737477542, -0.9614784827261649, 1.253875753998538, 0.6502131896760401, 0.5459866901410766, 1.4600197648017388, -0.0961460203532497, 0.7266795346872365, 0.24327467641293096, 0.6629927940460294, 0.1425139446241705, 0.6769287783907216, -1.3236927946900179, 1.7325000099103491, -0.44398667144970083, -0.06250247294850679, 0.7996605229107876, -0.8781887569136042, -0.04685771081608833, -2.1381243641968757, -1.1057101272330927, -0.2334652569852083, 0.9622037237887306, 0.6635341672421278, 0.12296392422848872, 0.16098800191091994, -1.9738778562669794, 0.878801521788013, 1.1264406225655363, 0.9266111456784218, -0.5837955300185679, -1.1381689631937657, -0.7637975260788618, 0.6253414266910773, 0.2560476374285288, 0.6225515550412877, -1.4003990017303332, 0.33627768607969516, -1.9427666341170824, -0.6932243069544903, -1.6260875697896702, -0.7277319111014768, 1.4038229847386294, 0.2920548422295979, -0.4789539104472966, -1.5162957655731588, 0.7303018926046246, -0.08451244525442732, 0.784113042439586, -1.5334585479514933, 0.5670458287729787, 0.42975930410924124, 2.449800593141972, -0.747332434740572, -1.2322385206168842, -0.7568040112448173, -1.4135743704317814, 0.02577746009056378, -2.0837637677880294, 0.49143275227877103, -0.09302281017834362, 0.7031745485857588, 1.9067771128764397, 0.017922750249444862, -1.0118512011569816, 1.098381595132738, 0.7341755899609803, 1.2311978717249155, -1.0213846091416032, -0.30656617450535995, 0.2039715668363261, 0.9137009208505903, -0.1853547296025253, -0.4531226067380201, 0.4791486178122148, 0.4244894303034229, -0.21125213591144995, -0.9006724834631074, 0.687500015940671, 1.5478498713739013, 0.5971262704659354, -0.28221603850355226, 0.1853982344045198, -0.4972609839585217, 0.09701023695712938, 0.5695911267833031, -0.3164094642230819, -0.14706947612684826, -1.3149133497939054, 0.6864680014836566, -0.772852350625843, -0.5806236044379457, -0.3330938726043226, -0.2730406772068024, 0.5762813326703923, -1.4304622484096188, -0.8424942170683648, -1.3966094397492712, -0.895345937295373, -2.1450526226610602, 0.8982603474010731, 0.2447347737164159, -0.14421939866277614, -0.32759685565611457, 0.296699608032958, 0.4488491381463045, -0.9366906772433812, 0.8575927698912629, -0.21528850062417895, -1.1881007189482282, 1.126951428099562, -0.9182517838371076, 0.03845610449911805, 0.21538710321609011, 0.4345124212863915, 0.22806905558766796, -0.0433565930969285, 0.7593857162181715, -0.31477607928734513, 0.45451779677564275, 1.1460305154279424, 0.17511551763090402, -1.8856875430269369, 0.8346203714049741, -0.0696682533840345, -1.477209694338219, 1.167580661482926, -0.17554887202590774, -0.8474837486432465, 0.34080524465178785, -1.067656844368498, -1.2235746072702904, -0.1496059091339221, -0.6271075452205968, 0.17720185109195266, 0.4353918232872083, 0.5660926079329978, 2.8554574415424483, -0.6620166583187813, -1.7269876019682948, -0.4078387228577495, -1.7228178107762542, 0.3726054112499986, -1.1217641084697834, -0.4549722253573668, -1.1732831794353027, 0.6575544136481785, -0.9201334492342766, 1.6328222950437552, 1.6244241347609476, 1.5613555902002136, 1.4668846483103386, -0.3487215605525855, 0.12066051762324873, -1.3338304508691319, -2.838826297994906, -0.6706495059056897, -0.2112553589247857, 0.4093088155814143, 0.0586543436679839, -1.9337244019029907, 0.07171251023300006, -0.453400009742923, 1.1415999381407176, -1.1548675809496596, -2.382993633047374, 1.665455784920222, 0.36977079711240063, -0.535727132830006, -1.4579294636750366, -1.6520070983625739, 0.08837369320935094, 1.1015994425060465, -1.2436747485612611, -0.16173195775871396, 0.7874586254788326, 0.8455365274680086, -0.47385229544186175, 0.8581794726994194, 1.9141693890868874, 1.2111468774347625, -1.283834409703804, 1.4122001960991903, 1.4246122083213058, 0.09617143246488447, -0.680416520345397, 0.7939074419436761, 0.05082061802593895, -0.3375681951224267, 0.2728075634559421, 1.8677062690963786, -1.2849446512608989, -0.3646522458534046, 0.917024620691813, 0.836213051287984, 0.4199460834454394, -1.2038519270531134, 0.12232264627089835, -2.2232529926712767, 0.32822411605932045, 0.2221878465543045, -0.40914638546335264, -0.5038836046014628, 1.8256305544491191, -0.7565556539701808, -2.7739792692396126, 0.28066845231027215, 1.3738789070045716, 1.7661381760831198, -0.9580232806819591, -0.1780922624537117, -1.0984645221049045, 0.12603798766445923, -0.1849675475219486, -1.4475049162679143, 0.9388707018063479, -0.5362768656635394, 0.9452817076530887, -0.37341197131483667, -0.2629170752516286, 1.325991973487167, 0.9619471376599076, 2.1975015359014103, -1.9973341541819725, 0.8588312686492864, 0.13666135012685632, 0.3102389236196128, 0.6936509306420062, 0.05434653570011313, 0.3886040413097377, -1.3881648803578328, -0.24232672717865358, -2.3006844443180974, -1.518751357394444, -0.3706901669875656, 0.7539809084190491, 0.4912794553641408, 1.285898467547851, -1.2234469904502512, -0.08958864363508236, 0.583078020131131, -0.23178079681176902, 0.4769446061135408, -0.4016965792806681, 2.1618387681417497, -0.3808916318031749, 0.7019003947692466, 0.6921832736273762, 0.2010723299967834, 0.23634082843208823, 0.6056544806575411, -0.11651743275509928, 0.5766313042860137, -0.5190655005970012, -0.4579416002427724, -0.424209530527786, 2.232559210366838, -1.8171412233712165, -0.6495312007257151, 0.01454464350825512, -0.012160378768442833, 0.45900058613553946, 1.622427208224704, -0.8381648037082366, -0.06922690164521429, -1.1571533446018838, 1.2962530073258305, -0.4164012434169487, -0.14957792428793357, -0.0966188865041463, -0.17162818417291137, 1.5823601195567514, 1.0185460546773435, -0.27435903244422055, 1.0624307534321238, 1.6824917464322542, 0.3499999101405133, -1.7539284490002658, 0.3415515608898923, -0.9304971196835875, 0.04252683790482448, -1.5965834974215565, 1.3596129553980816, 0.5975052601318105, 0.7282491018628274, -0.8685422050617817, 0.8955457613350786, -0.43664776638074715, -0.8206970291571989, -1.2898007224720796, -0.3186171612571654, -0.3330818341118064, 0.6655752973348447, 1.6764347205970604, 0.6078743574830635, -1.2342507922222805, 1.9210718505914963, 0.26510984025007406, 0.2685882654026507, 0.7102430456245953, -1.0462145584529572, 0.3857191152427833, -1.8835805633826779, -2.768761193953574, -0.4915726819365157, -1.5089924717034593, 0.013278831567490521, 1.5474176875871273, 1.7045030442907954, -0.7048211460588357, 1.0382872389284454, -0.4236141117291399, -1.1507654519546344, -1.6074537360491772, -0.7267874141115397, 0.11876040295645178, -0.6408806028454356, -0.12049820175789154, 1.1256684566373316, -1.1503658259476168, 0.3808406082354331, 0.16166298056768014, -0.9796873977838907, 1.0438547113586458, 0.2695904409689415, 0.7097366282641338, 0.36812978605144314, 1.1038117080137047, -0.5807051449206111, 1.027731721586947, 0.9661580338116212, 0.2598371929157506, -1.2798102496315147, 0.8352067419464927, -0.1452621149892954, 1.8549267889124994, 0.5665323669164135, 1.5421593189692089, -1.4677264718771512, 0.9585639718948312, -1.6479655417171202, 0.22271257385409565, -1.161398773427602, -0.861813501728504, -0.33065924746715947, -1.2370435572165541, 0.13012798200740622, -0.17426050640126142, -0.38744989631009263, 1.4307827967619229, 0.03543562533000589, -0.9972687727886126, -0.5170550450401604, -0.7750247609617125, -1.5190613124777796, -0.45895251295378553, -1.8056739512190008, 0.568360571435928, -0.2004869809428556, -0.14483685708825503, 0.5258043449164731, -0.16813587996429707, 0.10846389250099084, -0.05315797521827668, -0.21651365686613308, 0.06006145597959008, -1.4024064633139812, 0.689880904910238, -1.3428757039530983, 0.4589303661569864, -1.4188669947772765, 0.29352168212647334, 0.7308608932842507, -0.1353758679174761, 0.17358923934048226, -0.40216684119518126, 0.43993814071860016, -1.2871086596268482, -1.2622185432193231, 0.5955345200199184, -0.8657767655249429, -2.0777147735575694, -1.0097475327974674, -0.29221483234147594, 0.2292766310482291, -1.1056969652514455, 1.4876657299426514, -0.036104835108870456, -0.6423673306131062, 1.17645837315232, -0.27627899423171265, -2.1294237281854707, 1.0389397167884664, -0.6156099069368945, 0.5660062401217804, -0.34735225445425977, -0.32061267845758085, -0.898048854923999, 2.3890802889591454, -0.1207700865946951, 0.9658162458846846, 2.1295380289836494, 0.22730977326083576, 0.307795221689862, -3.159470294922449, 0.8956823805247126, 1.4364518339011614, -1.6940979672180807, 0.165976015208281, 1.0227277830757575, 0.9471964236813554, 1.3689187788341273, 2.0082590219654723, -1.4127390079463908, -1.4582830839548455, 2.057655232622654, -1.6262107983377108, 0.8065089603585295, 0.059317700347295395, 0.13330649608758663, 0.41871631403681064, -1.6670993078179417, -0.4557222192488648, 0.8358412168608853, 1.1485241583907668, 0.42382769612443416, 0.07067530896807704, 0.7805845452452761, -0.9230705042306333, -0.7008265657860365, 0.1238579585529523, -1.5033879105374937, -0.8006324477609928, -0.44793642959253405, -0.27299529722657506, -0.42911609794809474, -0.04754182561350199, 0.4678169668023181, 0.9609426463686324, -1.135854381028605, -0.9604027706620838, -0.8759778130611081, 1.3255392992467154, 1.4437271577682296, 0.4932168845856174, 1.1198442202865473, 1.2097953377572856, -1.4782787622655886, 1.534331937472566, -0.18592464788213361, 0.9065510875978713, 0.2441526620364802, 1.2142409950847504, -0.005934606839626211, -0.19071981471485608, -0.3040583507442866, 0.060081676730458174, 0.018762337319815515, -0.9902130995818926, 1.3074986871427252, -1.2758677347357341, 1.0698936415205338, 0.5702156020946687, 0.3041015469962475, 1.0315316803895331, -1.3625531333588328, -0.4647788936504099, 1.3043793230085174, -2.2931238782528447, -1.8655685521053629, -0.9669629869645776, 0.1883663353758491, -1.0634824082910936, 0.8013306975599391, -1.5443624045591937, 0.32715347959892516, -1.1042425552504813, -1.6161041406680392, -0.5109993363057571, -0.9190886093343267, -0.6077428272848499, -0.5002569071129503, 0.9756689510277916, 0.2772218606494787, -0.43287852998208237, 0.6296681915983172, -0.8502843261320427, -0.9505069068832771, -0.650584341206366, -1.661723761397373, 1.007089074815852, -0.11873490106540271, -0.1272993611104505, 0.9298614676390998, -0.5153289230941936, -1.556702035787103, 0.3807701443952423, 0.6123807492207072, 1.1867467887368908, 0.14654907176430795, -0.5370416367498603, -2.1139883997425315, -0.7876830210703504, -0.6237996086335619, 0.13592084587607914, 0.6393276776955494, 0.13991569771729745, -0.81809230737367, -0.6683486553698732, 1.115178173122076, 2.446771414213701, -0.1637585890568815, -1.1209704564711065, 0.4467511515071406, -0.9534092482312004, 0.3182330919933401, 0.271683759433474, -0.9573363828477164, -1.0712413179694105, -0.30255813778652974, 0.958247674089883, 0.4979415521551006, -0.8376872519699228, 0.022535961046091832, 0.6840510626836408, -0.21077828406318735, 0.584447240190305, 0.3410263701239205, 1.187176771555195, -2.1172358171100973, 0.30995019232039317, 0.7901976578611829, 0.30913468523891424, -0.9844146654250953, 0.3474506697688135, 0.6259418281233743, 0.4794626029480261, -0.06173762343825315, -1.3627102955192472, -0.20031835021540442, 1.6870429458740388, 1.6083459881399655, 0.2789050227337342, -1.2719884064904396, 1.1853106830638485, -0.9913580737072663, 1.2233104543278213, 0.8134432318899081, 1.886557959191833, 0.11022533467624505, -0.7681413266984113, 1.436892344457456, -0.5556957709754798, 2.3038212660346935, -0.682772274731363, -0.4746168209407287, 0.5511129315383609, 0.4215246673091607, -1.4860625654820405, 0.1897176503580621, 0.44020540443738876, 0.7496215071681255, 2.552398472469107, 0.7607506386602476, 1.0820709259858656, 0.19917231987970416, 0.7942499355919473, 0.19973021075409347, 0.29481380935757473, -0.6357637486064631, 0.12863791178542627, 1.8561515112410554, -1.4521073859968245, -0.44690133813439353, -0.5281516778029656, 0.23031228507637702, -0.05163289925469105, 1.4531091939178806, 0.06594794127602743, 1.9158929778743325, 1.3893544881471012, 0.8377158542991587, 0.4599670791005717, 0.6058828013346426, 0.21069233748771843, 2.0847766207434564, -0.029268516047371095, -0.3252030660188709, 0.13202105483543372, -1.2051521919108732, 0.08810029046160057, 0.2998899394140385, -1.329901911797941, -0.35244571721201917, 1.0093949421205954, -0.6561924048355037, -0.6769220785633787, 0.9004707724740563, 0.4215313341559502, -0.7375271922065233, 1.0706249247137103, -0.028892244945197036, -0.5183281825357204, 0.5736153002965058, -0.3758685831678415, -0.7918995871067815, 1.2782634446781616, -0.6356995421752419, -0.4833863369287177, 0.9974534142023732, 0.29124328932605514, -0.8236355220229586, -0.08699050597488259, 0.6590141733829847, 2.441583292882557, 1.8873452628569025, 2.2474275746061965, -1.2084812281924566, -0.8018851520041654, 0.6759181159646618, 0.00313769957548172, 0.31474207170695445, -0.07736951126774436, -0.25018161293926583, -1.2830507962514812, -1.5628441907653305, 2.8453969247062276, -0.6342184442111992, -0.592854552706071, -0.653723999513639, -0.76565949917059, -0.730526998162015, 0.09075307806432394, -0.9481548645415303, -0.04755585978648472, 1.3476101538895733, -0.9875559107864285, -0.7896939152505444, 0.4816267344514175, -2.1648165937072137, -0.7268788889746165, 1.2960347147856455, 2.9109429440400323, -1.065376273609101, 0.18513796404565092, -0.8814138828253623, 1.2409135508501319, -0.012877656665903105, -0.6476617613042353, -1.994768600369764, 1.3443028214739667, -1.8514533014456531, -0.7379582086548833, 1.694396228823381, 0.4026562338082194, -1.2758466479856054, -0.25334115795781886, -0.10298131523967101, -1.3748667924232236, 0.6293890561733958, 0.2738888278899806, 0.5612373487486728, -0.35340678348969806, -0.736843748234479, -0.40367835808832514, -1.2439466232262497, 1.2570138663363715, 0.45632423807954914, -1.170707965548015, -0.9587623429264018, 0.6425982154718701, 1.5567146540543542, 1.2516374448322218, -0.22322323181634318, -0.5695167025136576, 1.3827725588378879, 0.529065899193698, -1.5470827592965664, -1.0944906269170949, 0.2905472841355263, -0.987585623182969, -0.3515621243107407, -1.1366040859833553, -0.5160321145422849, -1.6442173347711861, 1.3423907595439113, 0.31986604002016844, -0.5786595172834021, 0.73801532386848, 0.5788365796442495, -0.7375548663739422, 0.45423130001442397, -1.225358779977498, 0.7678067565519512, -0.05078757448886205, 1.512293872317004, 1.106989348588503, 1.3272064524680798, -1.0102290516604413, 1.3418085812620126, 0.4314053354881663, -0.8698836928173348, -0.33508116195249105, 2.273858285763485, 0.41127055898865217, -0.5417916233776102, 1.3173262896619646, -0.06588492371272986, 0.5969382095462551, 0.6197204718248582, 0.3742348312569251, -0.04007772711014461, -1.6143631344300409, -1.2617480510616137, -1.2401273803885422, 0.3822358970465057, 1.8061346386866513, -0.22702264172388117, 0.37048462734622856, -0.11799395539242921, -0.005235059103559137, -0.6489984366966667, 0.7782101694572308, -0.024126859434724878, -0.09798935833649829, -1.0417284651310414, -0.6605483359597034, 0.6972000521784677, -0.15225780204879624, -0.36034171752445354, 0.5934576132973614, -0.25056255516564263, -0.7310153609877714, -1.8861910032233697, 0.254480151361828, 1.4148114593503607, -0.8002251737459469, -1.3914075562421209, 2.6894920671041236, -0.1506644941293263, 0.4047667831579401, 0.5611273432518382, 1.779203788992058, -0.48565136522391056, -0.26653744823132164, -0.8829510316719237, 2.532755174768609, 0.5582799591535964, 0.3625488756486719, 0.8429610656748877, -0.1422677046514221, 0.059560937411363916, -1.54096863376706, -3.409308449483486, -1.501482227036858, -0.17084770021492382, 2.3317238025849716, -1.2471763217303788, 0.6742533376141315, -0.4671654422272103, -0.7254154200533441, 0.23441703660981258, -0.4694323705405022, -1.612196166706617, -0.32563743615759183, 1.3898422646804982, 0.859146411700291, -0.2601661523404493, 0.3217117418244543, -1.0494347817905338, -0.5991667659706216, 0.8881794866760082, 0.5840210011255069, -1.2075635705473267, -0.3377101947699321, 0.13603306699179857, 0.5802301275309478, -0.704852221496425, 0.9615592481981307, 0.5450775566697076, -1.3780611142397772, -1.6167118554509825, -1.2811556928029282, -1.2724034602241299, 0.16120409249117293, 0.42750602102457846, 1.2666174612779004, -1.5508664421057543, 0.2620798945065646, 2.0332984208088303, 0.1261854523088127, 0.8345628189160572, -0.687707400490003, 1.0656169293117534, -0.31887838781706285, -0.005112174834790412, 0.2023207919468502, -0.5067392202386992, 1.823953396894383, 0.1523428263375545, 2.2440789764565605, -0.6697609733471732, -0.34309395149284333, -0.3824068477398153, -0.33303131558596377, 0.9716664193169441, 0.8311581421420695, -0.22780854741625758, 0.20032616901737238, -1.2785511330679982, -0.3197180135822623, 0.4959834053798831, 0.6752515974385053, 0.5334780166422973, -2.002795187816773, 0.27050605525523075, -0.9424869426824867, 0.458248932225858, -0.46118697878329784, 0.47832198627914324, -0.3661079341479641, -0.09319576406942727, 0.577819340020893, 1.2520997452677414, -0.2933921906178384, 1.136343377990995, 0.2468127074537116, -1.2252940887079373, 0.6375579341674809, 0.3462788965739153, -0.5177836733288577, -0.035284483529249705, -0.5338255181822806, 0.5193809161508848, 0.21798950092913766, -0.6956597590579882, 0.8046664677176151, -0.11463713804889088, -0.19176077914163675, 0.791885645189318, -1.4328882682847868, -0.9528659659051965, -1.637558975422558, -1.989264868496837, -0.8459538105074142, 0.944828292676069, -1.1921028346027158, 0.2546472038919744, 0.3861916389251654, -1.521512495954636, 1.535375205330882, -1.8914196543962882, 0.5149418901648063, 0.7752013519581096, 0.9145512827088738, -0.5080387911664219, 0.05031436015329658, -0.41216922303342934, 0.37227191099516266, -1.6600720014787667, -0.17968185610490092, 0.31830407850338693, 0.7686158224111359, 0.3658407552939923, -0.7165726159358554, 0.013357030158994452, -0.3372894061190394, -0.6789238357123408, -0.3832898769073804, -0.3227036184382978, 0.4460521819485986, 0.061892643502349666, -0.32267506934792967, 1.484633534363464, 0.4021774493619681, 0.4307762865129178, -0.5296069271797403, 4.151195369087241, 0.5487000909862146, 0.7163468748574175, 0.3808084179332832, -0.4772621640085183, 0.5479157515300286, -1.1044576899329694, -1.2036713335057232, 0.6909028182382742, -0.6529263174772725, -1.4725628267518027, -0.7473406606454858, 0.7387557364279378, -0.8760308731605688, -0.967180804004829, -0.49221734292555436, -1.4382474439405089, -0.3481040054911766, 0.22254446316102353, 1.731032969663649, 2.8055652681876384, 2.1160837251189757, -1.379194059803083, 0.6326539345516785, 0.15520482328940885, 0.8119547790137315, -1.610952801893542, 0.008918798158614715, 0.477564041851444, 0.25533528319659754, 0.998197782393884, -1.6484421505039013, -0.3004410869764593, 0.6057050457224126, -0.32020257217470566, 1.3359336989858763, 0.535133451920879, -0.5673962878727761, 0.24055606737735033, -1.6590194676777759, 1.9066265876591473, 0.2721183739248777, 0.06834872118107038, -0.7693837262978656, 0.6000193521872865, 0.20157135480173424, 2.472674269826056, 0.8258740084136792, 0.47137911495882484, 1.244572899040009, -0.3130562609295631, -0.7435497606216963, 0.13509423548484906, 0.6656236185332783, -0.5980179153119386, -0.6435416164377876, -1.3312882258359282, 1.0671430529417514, -0.09759042594372078, -0.35648374184511217, -1.2269456519162936, 1.6814992783555787, 0.04184788447848968, 1.68139083696507, -0.3030041682277847, 2.2849057798957273, -1.196531329787736, 0.6523992375423346, 1.4893905469952924, -0.6823297566186022, -1.1041446305707252, 0.4421841974696293, -1.4167436314301174, -1.5920898580925384, 1.4343243359414184, -1.9045005981467849, 0.057069471507391965, 0.5278224067845345, -0.7362602350911139, 0.19448161568570255, 1.5261487666748228, 0.004388839910851893, 0.015470814085829732, 1.615975884645819, 0.8879261649672402, -0.1326774466682177, 1.9382951563961202, -0.44547041979800195, 0.021230799239171535, -0.1571038497582797, -0.16148117044663435, -0.36447608885124355, 0.9360978659212479, -1.9835447885628907, -1.8064899970710941, 0.9036470769919311, 2.425086908712557, -0.6272015905517969, 1.957160646153106, -1.7538826809290353, -1.2373863108002687, -0.42249715021397544, -0.02100757430425144, 0.7526038212912296, 0.2047007870068672, 0.570705167349308, -0.7783611682766279, -2.3095477705978107, 0.22606718794222244, -0.32290132655615966, -1.597852946819715, -0.8952260637834641, 0.5568680007496093, 0.31733948888023006, -0.24697424901807427, -1.1633182632185708, -0.261549901914151, -1.855510767468883, -0.12245837196266503, -0.041080160924985655, -0.585409894265932, -0.4138566348289641, -0.6980329178942006, -1.0029216664042124, 0.10979946351080472, -1.6542257294131706, 1.393533502384212, 0.5174318732191945, 0.30147088153612134, 0.13176508644926532, -0.21802556521053773, -0.55329143084434, 0.2739291983626038, -0.6883020380352294, 0.6825537252923997, -1.5046508987238285, -0.5828333121318955, -1.1884290907589348, 0.1665509776472768, 1.3971140199197725, -1.3673567412727532, 3.0130147873449924, 0.7896539284272303, -1.055832543621147, 0.16658265730062774, 0.5232158049212052, 0.28570121739370363, -0.5325889850018535, 1.2918469178499534, 1.9819733294664026, -0.8093143209894869, 1.469595195954295, -1.2932943712519451, -2.1208284016640415, -0.4050898165492931, -1.1517011911443218, 0.8998956145443444, -0.23384644657433187, 0.526560658434697, 1.1222026129349756, 0.2160342440751586, 0.6797496626133915, -0.5331175042591417, 0.6637291624241468, -1.0147033164625645, -0.5049005083720637, 2.0659370602844436, -1.5900216896103532, -1.5339789892006166, -0.3200566858112642, 1.2830977533887504, 0.04654283897838462, 1.7838815763897529, 0.3904401499994594, -0.4111612807908421, 1.1847627666014435, -0.3955642857036182, 0.3675601425931492, 0.088662611923031, 0.46299757634197497, -2.2893235368562155, -2.268927460602336, 1.283516393286584, 0.20920007589000394, 2.4411204448502586, 1.1389069409067243, -1.1898031767179975, -0.43341406963651063, 1.7741298995608883, -0.016709317081657786, 0.11517899718492178, -1.5511855060356194, -1.3117417253404795, 0.13351391911792548, 1.1637653113813886, -0.27570074398670863, -1.5697680634730649, -1.954956462100421, 0.5552656916393576, 0.2373994429321212, -1.9303747103380289, -0.1921132978172397, 0.6250698172881495, -0.5949372282094622, -0.7826608913130164, 1.4562229269964548, -0.5416543116490529, 0.6936768940278385, 0.6261775893704643, -0.5859171652539004, 0.8555032381807751, -1.3676477362552337, 4.238533804853162, 2.4545185017647904, -0.913404759221193, 0.4250981319720471, -0.9763799065871701, 0.7808586039540816, -1.0328656450097617, -0.7721604644533069, -0.3530813727528884, -1.5411637128692925, 0.6539840707892913, 0.008229110336607592, 0.7966890453416182, 0.7037436956153061, 0.6614113279704881, -0.202848267721112, -0.29922308805427594, -0.5522097500427048, 0.09875065962242098, 0.7083328933399845, 1.7362802880024957, -0.2266535118741716, 0.5299005404626365, 0.6719364752934611, -1.8615906591576734, -0.09068813508526216, -0.1888891414579059, 1.3423077781666952, -0.6924470819765697, 1.1041424493388294, 0.4134851965057971, -0.4735791706069265, -0.7356651547484112, -1.575469178834194, 0.2059058482018911, -1.317543434131728, 2.347983690185328, -0.9350302948592141, 1.0039027596124084, 0.30969112449845376, 0.2541035100649089, 0.4211688015877788, 1.0647819562744412, 1.2886070484626828, 1.4453593413552184, -0.026423761925036916, -0.10046863824315762, 0.9375145304857443, -0.8794152043439424, 0.6161524124555712, 2.1765363841706007, -0.17519057418498793, 0.40239774219958097, -0.5314020562312248, -0.028260581879397745, 0.5266158478069836, -0.8130604924415793, -0.1620471073410965, 1.368895928096441, 0.2544222901453687, 0.0682140981898076, -0.08305873685961358, 1.1551649925205691, 0.20488815881813946, 0.9788412565833704, 0.6730413277634831, -0.10343628631794778, -0.011056773466636922, -0.26893242071811874, -0.22234819963659333, -2.063667484853198, -0.9528556130697672, -2.298918544448265, 1.4641851715761252, -0.6443216828282126, -0.7448597363782805, -0.5637254977251447, 0.026036289664867818, 1.7947458799857385, 0.47823466572724166, -0.6009031631006543, 1.5622161381793802, -0.012361922782423504, 1.1320815868058798, 0.2666111797781486, 1.0800481352272358, -1.3534368975569377, -0.12565159569358056, 0.8269760280151415, 0.4101805250340873, 0.5459250834776258, -0.578841318268924, -0.7708632540651004, -0.004711348442621566, 0.9139140784227678, -0.5887863731031122, 0.5255711160933076, 0.6899347371240381, 1.8406881042526044, -0.1494953868420972, -1.487372075437836, 0.04531226841225139, -0.8785887917514404, 0.6773321050874577, -0.0983506278141217, 0.5597628029545394, 0.9487620637619515, -2.0252012328413445, -0.3325641975286207, -1.1258330017788327, 0.023802932989263906, 0.42532764883918267, -0.1719694477750812, 1.1366386876717014, -0.06950662371831764, -0.5610077364219385, 0.6924775343736279, -0.08202929488370111, 0.03632839803067284, 0.2035677562126695, 0.48902609842042033, 1.0804149661369027, -0.7425106537204975, -0.5702977393123885, -1.3826240552189546, -0.5228635824639636, 2.541990031610674, -0.3358484399232096, 0.2708627260856431, 0.3577767439219406, 1.0481739531875494, 0.41502512979161693, 1.945039667472124, -1.333971998047096, -1.6319888693166744, 1.8081668907285702, -1.126545357015281, 1.017481115516176, -0.8746343950821853, 1.613464623094451, -0.987275067228173, -0.7782780233402289, 0.9358137937887636, 1.2685709811916313, -0.9922941446951046, 0.6495420807278994, -0.5015976512021791, -1.4515930568861974, -0.3017145427194569, 0.22396206990737433, 0.2449168875921067, 2.4353212694888504, 0.17708064085180888, 1.6379030780705819, 1.3277860775740942, 1.9763199313325732, -0.7129095818443579, -1.2469376388413769, -0.6242116235182271, -0.48041188552500946, -0.14268548581723478, -1.6604837693733687, -0.03806802185256857, 0.6963957195724964, 1.0623750746697818, 0.6233441558858677, 0.36657697739573364, -2.295074935487194, 1.0845561474708743, 0.4905268784109729, 0.9510955040687479, -0.5026253874469225, 0.5855406556971665, -0.4674907407543193, -0.5608509773657036, -0.054561000082436986, -0.13488620479039842, -1.6100667806518532, -0.3709803597469035, 0.29582203102054655, 0.8410085106517383, -0.6645326878187746, 1.1367845966619665, -1.3201243250510812, 0.13674546078719402, 0.9775512964502551, -0.6593867653205457, -0.16315112660697673, -0.6429666213286755, 0.5269463017070531, 0.13689944560905168, 0.2704736580667669, 1.0956057892301136, 2.0377599847068084, 1.1896914387079371, -1.1056334740369136, -0.061419064162327903, 0.6558988396743295, 1.1616563231258492, 0.05233437675572931, -0.43279599457514883, -0.6310196056008639, -0.07017445588897313, 0.21859133324465385, 1.7464304327601714, -0.38374464463022673, -0.4116300533373271, -0.9012559637626759, -0.29838378562277373, 0.1776181377502974, 0.5337179529206251, -1.6927309440114802, 0.19627841167268098, -1.3375053577369045, 0.34292489957433187, 1.7252380623451755, 0.3893308049876548, -1.6138835583138924, 0.24320533391068808, -1.503402740971457, -0.9820815913055403, 0.02826537327258336, -0.8677808012629867, -0.15732458310810252, 1.6448055242437023, 0.3882793537178024, -0.4745596075074129, 0.1657838803136746, -2.6918015152661914, 0.7632486195032542, 0.6973513947209198, 0.4101471209696532, -2.2799074841609177, 1.284770153684539, 0.03995086580146711, -0.2991581182473426, -0.08304172354784842, 0.28042933971050626, -1.0923071947444258, 0.9164084413681113, -0.6812760370027394, 1.5480579290916134, 1.4837613730950547, 0.023182419970626405, -0.2668022486973583, -0.1188765567232481, -0.22450605274030175, -0.01068777580695019, -0.5681288373513323, -0.798016193089919, 1.112093456749927, 1.4289069908566108, -0.8325323358283204, 0.6527204397669472, 0.45576965736433434, -0.05177234665505003, 1.1825820243015825, 0.5633724078799881, -0.2598338582029702, 1.2260636343236992, -0.06502314120499497, 1.3554177601202826, 0.015378075446720483, 1.771795744777381, 0.19716116753361734, -0.9289545353666014, -0.01120548540552129, -1.6568561810835647, -0.9711632993719995, 0.2888457566302567, -0.33812030790826947, -0.6944997091883152, -0.08753361436324024, -1.0825962267681306, -0.4698117598324523, -0.31391779051735585, 0.5155485258897468, -1.3906426323765313, -0.08794713693189429, 1.323299166667676, -0.1281180737897692, -0.7313549630276092, 0.30727046798040325, 1.1752251844693715, -0.7441249207177553, 1.6052690350217986, 0.18649308224250258, 0.17892852927651728, -0.0995691575256924, 0.4348534499771249, 1.484991734895783, -0.5720258392859724, -0.08690696328546704, 0.7713939696120472, 1.1722789472312292, 1.9496467641354467, 0.22942775691626238, 0.7124499254350729, -0.40961823346856296, -1.5841557574786587, -0.5783735657948544, 1.7072885072301731, -0.9760682458530513, -0.7133260677207641, -0.17406636751269225, 1.5115376392568705, 0.3444982802650086, 0.5618620561647593, 0.7768151831330067, -1.8495980414473379, -0.022772431183660354, -0.2688258642531703, -0.2316501235768239, -0.4349049986098626, 0.09524082099485014, 0.18287945969711975, 0.9756566821517488, 1.2112951490716906, -0.8350588047652798, -0.7894781658614808, -0.8425885522378407, 1.0078366331542066, -2.170943513352494, -0.07697039348999336, 0.624710432231761, -1.5714538060400307, 0.25497055299290833, 0.9193656642088831, 1.0914383490187152, -0.2746559451582547, -0.24795001040712014, -0.1821963308600328, -0.6151863420266909, -0.07974289047525698, 0.864835252508244, -0.11852133979339911, -0.5867385141837459, 0.7425778869302543, 0.7772435416319093, 0.7418518577569089, 0.18477538422252776, -0.862469199675159, -0.7201960090993764, 0.7441788487719844, -0.44740979333359115, -2.011406066578824, -2.0397719472330946, 1.6317617740438857, 0.501298361621573, 0.46480805036189093, -0.6492071444203512, -0.9962577891956758, -1.176143672100762, -1.460358133281756, 0.91939184535992, -2.6115193413417344, -0.11701441464426601, 0.36330899947821516, -0.7619851206952822, -0.9791836397007687, 0.06605184536205168, 0.9852736131214399, 0.18316974821162169, -0.16385983370688456, 1.769889718870536, -0.7568083172666948, -0.07093554823462433, 0.34915804932546474, 0.04394955212420144, -0.3412151969411125, -0.037998909530440356, -0.7920940693112494, 0.23924283654785033, -0.7218726802077204, 0.756794397487571, 1.129998141517764, 0.06199671202439378, 1.5818825635871332, -2.0927309142911965, -1.009720388820037, -1.161041154747722, -0.8447671692136892, -1.0157929981350513, 0.7904271516718387, 0.7254384385818724, -0.603295486359894, 0.25924412778603606, -0.04640660866056171, -1.6000423263326133, 1.8143254523998487, -0.08862538404196012, 0.5332621638876169, 1.1045997215315637, -0.41584450160976266, 0.9441745490519653, 0.24798697093505728, 0.007684578291883661, 0.10198392659226542, 1.6199201784700468, -0.32528736620138143, -0.5826981266958557, -0.36325256797247957, 1.1471577477638135, 0.6178987140946427, 0.36972297251343633, 0.5437284650592201, -1.4459624565283546, 0.05792287061159475, 0.41648235426252744, -0.3752827187450667, 1.6652887251405053, -0.42564437336001554, 0.9761973006448895, -0.7275241033025399, 0.6934458083833381, -0.29112188437100084, 1.3282243166189927, -0.9536927875603478, -0.719434212611784, 0.6748136465043926, -0.03597354593983007, 1.94009058703115, 0.09882655123973512, 2.1053876175385304, 1.4185342675315131, 0.1206620765251783, 0.14903745714080963, 0.10442318495551679, -0.17795681161591564, 1.2580662909953826, -0.309432614193383, -1.0905944849250224, 0.4769931537784153, 0.42744787996997274, 0.015299040637353436, -0.35211140544489866, 0.2588719668529644, 0.39806242670614195, 0.0982957694556772, -0.3643039151707563, -1.661352851241187, -0.7050125329026734, -0.943960952206926, -1.4473953121799084, 0.6926023466644213, 0.284659435800313, 1.6730413075943111, 0.6423676343810131, 0.3968310937206259, -0.8342984203305135, -0.06635863092332817, 0.48133940282415283, -0.34365908316039695, 0.8195486752084361, -0.2781857864218842, -1.0136587780355568, -0.4538474341770635, -1.1337344789342048, -0.5150244531135606, 0.958566232938252, -0.16105129432877321, 0.38436738614303156, -0.5172439276028532, 0.23093709347387772, -0.30272270953081704, -0.21962749662435752, 0.9566459591875526, -0.788349928603636, -0.44952615913370747, 0.525332205545319, -0.5812548660484521, 1.2956320514491553, -1.752164482642109, -0.6047121066028011, -0.15329007945272555, -0.04110361189064399, 0.2075100652227872, -0.04955642332135181, -1.2847570979710345, 0.4806820630644186, 0.8112350665109486, 0.577438605043487, -0.5506815219471743, 0.7858766373478445, -1.101050840231404, -2.2244251571050273, 0.09434075969634925, 0.19198836106624168, 1.0670984516256519, -0.7989553140491875, -0.20794218769948203, 1.5326125420890269, 0.020895643272767377, 1.429434237396836, -0.09226519337744446, 0.2530160966559398, -1.2052909073582596, 0.18629835668130743, -1.1412717735009497, 1.2293983703310951, 0.20963090073800605, 0.2771037033747804, 1.1176243523307434, -1.7749390137644867, -0.6160566595276167, 0.37431077650255806, -0.628817850166509, -1.5457989014436102, 1.0413567521072367, -0.6687052895376355, 0.08823501338384936, -0.8504561089335623, 2.674041129993747, -1.5899356389768722, -0.12358228035838018, 0.4957660906211637, 0.31851942141963985, -2.077120767009975, -0.5844799194788266, 1.9510391355162264, -0.347560684365186, 1.3086755801775074, 0.34475766053720236, -0.4033872470813162, 1.1582973308383313, -1.0684599760113471, 0.529968393960725, -1.6526921510620116, 0.9524384542696674, -0.22909069471152455, 0.6652418786019982, 0.0030589233668147898, 0.11365610389048802, -0.2480098634476716, -1.739708416005498, 0.13128969246670458, -0.8124775515041727, 0.09211054412374194, -0.5372875032406812, -0.0032089521665293573, -0.8316736236057737, 1.5059153046848375, 0.5055489101297763, -0.9926899954404349, 0.06717218616117565, 0.7564225434228204, -1.1172446398752929, -0.0971278427942958, 0.1783634876571702, -0.43831740139818265, -0.9897246258630265, 0.42789947696918956, -1.1881782474146696, -2.2595621851300622, 0.6418731773450146, 0.2534262764606806, 0.4316556467189196, -0.1404488018967209, 0.8263074484867586, -0.14552757065621125, 0.0789242186302759, 0.8209702417714765, -0.25903816299191046, 0.6767653743426741, 1.6145117461589933, 0.6926264703024766, -0.32214772217430293, 0.9292349516554164, -1.0508805938355477, -2.749764645898245, 0.013188601563584493, 0.33055296889149677, -1.1958215283600067, 0.1405450269372766, -0.508425415799171, 1.4570136536517577, -1.0251431195020073, 1.0969073653806085, 0.2995765466625078, -0.7079203015696985, 0.1288388731533383, 0.7296772632654821, -0.5084827629757859, -0.9959874907849151, 0.7608364139386558, -1.1970996777698375, 1.9127937929371042, 0.38743478707694207, 0.21795474706617954, -0.29993899538603785, -1.4785086866034736, -1.5956467908439216, -1.2082094773229581, 0.03773293580577447, 0.790311941516555, 0.5111896121176778, -1.1940258469292004, 1.2227006637979814, 0.836882842830787, -1.4311686461788606, -1.2744460342013122, 1.4644637457684015, 0.9728193611804964, 0.555860074890682, -0.4409659816734968, -1.268835784551248, 1.830337701005201, 0.5659326920677746, -0.5949593269450844, -0.48933591057504616, -0.5902894454298842, 0.8313257587194035, -0.014541865211528828, 0.42819120074867917, 0.12344083343107326, -1.5259370836437376, -0.4422937354316872, 0.2663102136658507, 0.7711270876630171, -0.6631414912664546, 0.7010024223490354, 2.074527616332793, 0.1267033512168494, 0.5771332153363341, -0.1669943788998164, 0.37570932219774306, -0.009486467375681047, 0.6339720925542973, -1.100679804820569, 0.208089727845949, -0.9425617416684303, -1.4440593374039066, -0.4882367066101957, 0.7163657255326146, -1.0357588950466872, -3.0737220356886374, 0.2470950795522819, 0.2864288554119523, 0.1483978221958065, 2.1154989451643167, -0.4001965762118845, -0.6462203956080385, 1.1265359562700552, -1.2596675882237476, -1.0043123290637297, -1.2085727111478823, 1.4452610642730932, -1.5066630796353353, -0.26195290731609777, -0.14271399927968614, -0.6530276111308737, 0.31402361422899266, -0.615575261840529, -1.5382467581744872, -1.146638529472436, -1.2566936090246918, -0.11659270837613013, 0.35542964402643873, 0.02526277564568483, -1.7743572584114875, -0.7085383632824588, -0.63517949386522, 0.7100322417458258, 0.37725139473966673, -0.5759538564824571, 0.08180511402950946, 0.41407533287471754, -0.24200104577387313, -0.4385693241008144, 1.6526863394676001, -0.11474769466518762, -0.7778772946580198, -0.28839425476706665, -1.9107601252457116, 1.2251863883694925, -0.6102167805929645, 1.314166180001923, 0.33549111757526723, 0.1642165334041994, -0.2711391207536865, -0.7227241249586495, -0.20242746834599726, 0.511635243911443, 0.7803547739974653, -0.327423000785996, 0.3502846670812043, -0.6690281009028096, -1.603564129628161, 0.651294169982652, 1.5346475986331407, 0.6076831921328979, 0.09553225219459871, -0.7254748961580175, 0.5000694612537876, 0.41285641663749495, -0.6307563086891868, 0.10304359933774031, 0.6906693939179498, -0.6117088277209861, -0.37359085726781716, 0.6415372041475905, 0.5667199392606257, -0.471612466163586, -0.28409429557130345, -1.1000185275940002, 1.2078426552444212, 1.820822882585083, -0.049716516450738324, 0.48541676042055915, -0.24833733761952417, 1.9706194085315605, -1.9357972478544503, 1.2746428725319756, 0.8787450667483632, -0.5743399181816461, 1.146477625622449, 0.82904607165605, -0.6240307749078965, -0.5201093385684066, 1.7563590799610034, 0.9291759054010359, 0.03949431623274768, 0.09878351123218292, 0.4678794507416003, -0.21611204185496907, -1.9415038866503043, 2.2711411739440632, -0.7573422816803704, 0.4462925903632097, -0.7789087537529676, -0.5503182367952988, 0.5971424930574555, -0.07203878009168195, -0.5217028851935946, 1.082108216219426, 0.41790242250612963, -0.0679066357661384, -1.263509598957737, 0.8004808096290376, -0.2541222406082443, -0.2133433497515408, -0.26792364723437295, 0.20112906676382966, -0.32435552792181394, 0.23282205608740192, 2.2221675354748855, -1.4830106452698057, 0.9891247273398209, 0.2603986195227453, 0.4910300720533456, -1.357238648432873, -1.2514963996484836, -0.30125845912815724, 0.1928097450048526, 1.4448018223442105, 0.5625834185014028, -1.1979257187589254, -0.07857776228971138, 0.06045821558284647, 0.7133596907037718, -0.8010426610921747, 2.0440257915732163, -0.5915625781476785, 0.4614571279264127, -0.8323915586162163, -0.12281522077241769, -1.891751987785829, -1.436820011323204, -0.3375407922826853, -0.4583639388670451, -0.09352467965350812, -0.09376078246251955, -1.104789843452201, -1.9113071146131402, -0.3080107984257694, 0.6890879947469407, 1.6298325324990017, 1.7332383276272256, -0.6570721931348752, 0.5011093119580866, 1.4256340832824121, -1.6409542816000537, 0.3031292239641022, 2.064237216045931, -0.051705902095611905, -0.7832897005596622, -0.7454241686325258, 0.7295020332844333, 1.6375808311567626, -1.2299275543889183, -0.5600159935032863, 0.36276227989135124, -0.0841421034314566, -0.34511214955582953, 0.1013965878283084, -0.18098461747365058, 0.9191251794719164, 0.06765779742714738, -0.24919806799835556, -1.7584641099826481, -0.2408943706631287, 1.1586506587846426, -0.6941027599159496, -0.40284176463802435, -0.07218934233754541, -0.6866794606674014, -1.136814985867382, -1.0286542111302972, -1.0753215203338025, -0.523524292626774, -1.1218134808250722, -0.874089313385567, 0.09331272041243248, 0.9386738047553144, 0.09076349142987619, -1.2160470369625689, 0.27900325888755534, -1.3482125481314258, -2.0470437247953943, -0.40859660863279956, 0.2828811548709021, 2.4800984064132803, 0.19294989666278736, 0.28212861056292143, -1.610912083835489, -0.5315801864225906, 1.706608368850939, -1.8501729731293364, -0.630002988972623, 1.4757143328892797, -1.6396479208187233, -1.8371716642350544, -1.0742314481301545, 1.0754611432095824, -0.5378007226773498, -0.3178784375535398, 0.5735335996600629, 0.4868994275345122, -0.21549627729467807, -0.16640172916066487, 0.908080649370133, 2.173437328284729, 0.4190344084566232, -0.9569146506578511, 0.45263575951706014, 1.778059009562198, 1.4488553145210796, 0.07467679612778716, -1.3459068501008828, 1.0900502612985628, 1.8272758673855272, -0.23894381261705294, 0.12043314967623445, -0.5773200285051094, 0.5216921180645022, -1.5092635778866117, 0.18102168205190566, 0.8965052639560143, 0.9201255573471795, -1.2903912922821366, 0.9873211691804024, 1.172724388329733, 0.20376377055663986, 2.138854170658406, -0.9316113182700534, -1.2475280594655904, 0.417911924644604, 0.3104385253889033, 0.8962967028920321, -0.5778036698087538, 1.0180641994003492, 1.978139527067393, 0.37723162368545265, -0.3153731448300482, -0.28043983006620493, 1.2268346250368896, -0.17227523540812437, 0.2580612644636763, 0.7839164309552376, -1.6857109421253955, -1.3003167935540005, 1.933409068497346, -0.720369637396077, 0.5104055429987321, -1.08388129713197, 0.23369005993420508, -0.8857461821887489, 0.21884110679487903, 0.3399839311138383, 2.2927612097100596, -0.1302670929713838, -0.2227227695346543, -1.4346253879586792, -0.8344086694038684, -0.7002516953857244, 0.43509420272323845, 0.8609631356011878, -0.43270705045183616, -0.24001073577599197, 0.28609176501217787, 0.7031717689478829, 0.23204270200931182, 2.1505272334979897, 0.2861763181933207, -0.7584547841123832, 0.5168757252968688, -1.1092933224722437, 0.28264197275089215, -0.7359352757039123, 0.7696916736749783, 1.1693904145377578, -0.03894762164617204, 0.6641135169499479, -0.7147964181583462, -0.3596311141562558, -1.8435871360153697, -1.0008815336080084, -0.8745896149619665, -1.7854772192044157, 1.4101601051693955, 0.3989081511969654, -0.46138352582140285, -2.070033977081843, -0.18644561980439622, 1.2400855648899223, -1.164136732605302, -0.7927090251554685, 0.5630168884076489, 1.1671379510254194, 2.231868835700232, 0.4565350508345933, -0.3389202312449233, -1.5275179745183336, 0.3230936836149417, 0.6082923125809354, -1.385778896370543, 0.4933263314478739, -1.9751095768562033, -0.2065779574546836, -0.19565497391904002, 0.19507228882058708, 1.1491676003071556, 0.47753659551701444, 1.267566892973097, 1.2699972267061581, -0.14783471801597317, 1.3947086641636515, 0.13849276493060986, 1.543713937406089, 0.8793567120723491, -0.19166319681661234, -2.178011595451856, -0.047935435051166216, 1.0519017754831546, -1.1503195176998693, 0.9590735535318957, -0.4101942648351055, -0.9291595233845755, 0.04827969552760872, -0.006591472103865717, -0.8287084685787525, 0.510991782645471, 1.1993354234468527, -0.6249200800653011, 0.06906024810652203, -0.2810131831119284, 1.7132565332176783, 0.3715878450725023, 0.4232188686511501, -0.23751681917622205, -0.284138784599415, -0.9181240192735334, 1.7200351673814782, -0.5646085076036653, 0.9511857419563984, -1.2703881921689144, 1.044280055990386, 0.03786689772227966, 1.4182728427165774, 0.8337325218228854, -1.0587247347181652, -0.5031113248889103, 0.8873021806079839, -1.6837264548806383, -0.963353987660909, -0.3925379775035674, 0.030351645171583227, -0.1480784901933993, 0.5971587614103617, -0.5966536682782796, -0.32585054539846936, -1.2881189235714545, 1.4626168790196996, 0.4876451579697916, -2.5512587798294053, -0.22746942805830464, 0.22714076786745147, -1.2367287849167479, -1.4958341332392378, 0.8404569974160938, -0.5250803172042454, 1.1030214409483563, -0.9430810970721388, 0.8419017021480036, 0.10747778668821155, -0.3872490592960608, -0.5972525446631549, 0.9643730616194118, -1.9150859939615104, -0.16132999883201363, 2.247013458758037, 0.2793924489497806, 0.22445447609820876, -0.5935321078971101, -1.021619853538392, -0.5669336330928147, 1.51072676166332, -0.4577459477554841, 0.2856756020469671, 1.3003683403048245, 1.6681883000570241, 0.29140173625397836, 1.4448227513845624, -0.49337735263206095, 0.3063926208053877, -0.8839906748898476, -0.8508338033152001, 0.32884664967404276, 0.8225807552240499, 0.28615338220135916, -0.6459677898912536, 0.456084692916367, 1.1816323117108978, 0.005750129390048088, -0.23080308943910496, 1.2329424071409298, -3.103298270774514, 1.2457064642869893, -1.438732143788353, -0.5069669088042135, 1.9410370006144513, -0.680135288988108, -0.684441394790031, -0.9299498749943689, -1.0023257557431406, -0.20085573890294844, 2.1892107786913413, 1.0539082768590986, -0.12946159481571648, -0.9603859816501762, -0.6759566438229674, 0.6063321523892387, -2.04080451980182, 0.3448387208567922, 0.6188680405937481, -2.53483233750232, 0.4718381152261103, 0.5204602861759604, -0.37294274011868744, -1.0608122326322948, 0.876995543974861, 1.6208103493973607, -0.10501804755065293, -1.144605534391477, -0.11545809967020526, -1.5254381527091445, 0.704971452166678, -1.1385423962074352, -1.0702260829994228, -0.8042670395297246, -1.9958053298936345, 0.06149218869846654, 0.0034778293679331336, -1.6309611881902848, -1.579450043003391, -0.812854397163873, -1.3440391096930395, -0.7992158635130223, -0.7307305666236779, 0.563033821782763, 0.5929740847991084, -0.4072124328227139, -0.9597031772508735, 0.6326426393413165, -1.26743591058185, 0.012961789096372823, 1.3690236683244486, 0.5626351995527971, 0.3930969343026333, 0.3804639938085295, -0.7055289460485151, -1.1137071825718237, -0.32401279261679405, -0.25360651639701537, -0.3629288727538312, 0.40309857005433064, 1.6124254520554622, 1.145346015655076, 0.18482864793147852, 1.0146132489781052, 0.5762713361888263, -0.4302922143454036, -0.7781673008888688, 0.3165266777932903, -1.3210033528584464, 0.47419403592709836, -0.02875008939599337, 0.14714621419460175, 1.4797797158907586, 0.6830428568029596, -1.051712101999051, 1.194440018218743, -1.1642432883696971, 1.04395640790416, -0.3903019504585278, -0.9469832104094259, -0.15920476878484313, 1.2958603176641055, 1.2195200287127348, -0.18102374320360753, -1.1645019636692635, 0.31512163398607973, 0.4112140952226413, 0.799068132489134, -0.194553356476797, -0.24713828227948162, 1.1162744704218956, -0.5100587555940508, -1.7306779449877614, -1.3161139044492312, 0.6341932724742192, -0.7347849903121613, 0.9645835907250738, 1.5026031951659682, -1.4760744795962333, -0.06731259930616487, 0.7042872721353796, -0.5335137254930029, 0.0716602316769604, 0.6043539708627061, 0.11692324897196178, -0.05768277951806856, 1.1162713764449659, 1.8796989655172829, 0.43088724829364505, 2.38688392018114, 0.29310955804355704, 0.7462035664728303, -1.4923332297842067, -1.2280466714373701, 1.0734872965346725, 0.5262032697307816, 0.7693518738655505, -0.28211783832137927, -0.0290036682453748, -2.931607725174539, -0.61001449056912, -0.7025484586715276, 0.7759827155138221, -0.19166960568471056, 0.9694902932312826, -1.04530914742025, 0.9727250463770896, 0.06310226379325519, 1.0818373134406507, 1.1047859736064884, -0.9784634968885791, -0.9146592081968249, 0.15142025533299056, 0.23328387697346153, 1.482068026300734, 1.4017194403233817, 0.5839385941999119, -3.499091269336771, 0.6898991159514024, -0.76367161011779, 0.271889761583164, -0.2648955270675521, -0.05132512877225392, -1.1445243383154795, -0.9341941596618715, -0.2758301417114395, -0.12386224872925095, 0.3429318698923175, -0.20380183235337243, -1.442620516648269, -0.08857891832728218, -0.5685844707827721, 0.31653125437081814, -0.7630932541957661, 1.0549727437086984, -0.23903901917404402, 0.13881369002402355, -0.277058267581059, -1.1828348650720584, 0.41122688905564325, -0.11093465300197233, 0.05700186250342231, -0.8530057143017865, -1.1330141754733023, -0.788433518694048, 0.0410432386990952, -0.2526837758051426, -0.7365204396871289, 2.374275605228078, 0.24647701310468878, 0.6189709904599635, -0.3036782549769593, -0.6671553020762782, 0.9568820989023366, -1.079178482400065, 0.29500583173695416, -0.9289020636769935, 0.7791599475788574, -0.1983372320556875, -0.49097598732772324, -1.2327667862306246, -0.463786196952311, -0.7468162049628737, 1.8137576226948215, 0.4907226689424396, 0.3853672976926061, 1.405986757744362, 0.006148904928010884, 0.5727386445488017, 0.09397490448508446, -0.35506525618267476, 1.7351653184984497, -0.39253263749716394, 0.12196757373920339, 0.38004382713166907, 0.7006111800175882, 0.4987705634227367, -0.7645303868257485, -0.5146892069655717, -0.5835515156473441, -1.1547773890712476, -0.05898296492235115}; + + +static double gemm_checksum[64] = {-45.1525872455864, -53.56382313501859, 75.37190918194668, 81.51135315789973, -15.61415231827229, -60.60307561986312, 47.96036541651724, 65.73237574275608, -4.4727051387073935, -33.991042035520486, -26.416772446199882, 1.7860331769884112, 63.625439870165444, 11.62205632780551, -15.064831482590407, -47.33578990077392, 31.789427261811298, 45.60325302655279, 46.39784351481784, -41.63175282633895, -37.58415419207174, 52.811751728757756, 17.491718577483027, 95.99796882635259, -31.290609142980582, 56.18913870959351, -9.784406747318776, -47.798468293167936, -68.85425504150908, 14.518540879027748, 12.444849316598145, 27.044449299453333, 34.41753472048874, 37.24202029503455, 0.0015372059941842764, 56.49727200521621, 42.08187683985865, -60.80036174635206, -41.51354371054238, 25.39617622130028, 64.16199934240205, -49.723260643988866, -67.73199521937849, 14.061632619059395, -46.723037598164815, -1.4946901268404673, -19.516162199239137, 13.487866069963179, -23.19623129877386, 56.32942826668456, 67.64491765822369, 25.427295331888367, -3.9993280938311173, 70.5746407371274, 68.98981144920677, 11.672168486094769, 10.78240530670366, 31.25611590676771, 34.98838254510045, -129.95599475048968, 14.933419865189286, 35.74263691521163, 85.87277962177788, 93.68226272318962}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/layer.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/layer.h new file mode 100644 index 00000000..ba49ef72 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/data/layer.h @@ -0,0 +1,134 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +typedef enum { FP64 = 8, FP32 = 4, FP16 = 2, FP8 = 1 } precision_t; + +/** + * @struct gemm_layer_struct + * @brief This structure contains all parameters necessary for GEMM. + * @var gemm_layer_struct::M + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::M_p + * M divided by number of compute cores + * @var gemm_layer_struct::N + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::K + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::TA + * Transpose matrix A + * @var gemm_layer_struct::TB + * Transpose matrix B + * @var gemm_layer_struct::TILE_M + * Tile factor across M dimension + * @var gemm_layer_struct::TILE_N + * Tile factor across N dimension + * @var gemm_layer_struct::TILE_K + * Tile factor across K dimension + * @var gemm_layer_struct::A + * Pointer to matrix A + * @var gemm_layer_struct::B + * Pointer to matrix B + * @var gemm_layer_struct::C + * Pointer to matrix C + * @var gemm_layer_struct::ALPHA + * constant factor: A * B + ALPHA * C + * @var gemm_layer_struct::dtype + * Precision of GEMM + * @var gemm_layer_struct::expand + * Use expanding DOTP instructions + */ +typedef struct gemm_layer_struct { + uint32_t M; + uint32_t M_p; + uint32_t N; + uint32_t K; + + uint32_t TA; + uint32_t TB; + + uint32_t TILE_M; + uint32_t TILE_N; + uint32_t TILE_K; + + double *A; + double *B; + double *C; + + uint32_t ALPHA; + + precision_t dtype; + uint32_t expand; +} gemm_layer; + +/** + * @struct conv_layer_struct + * @brief This structure contains all parameters necessary for Convolutional + * layers + * @var conv_layer_struct::CO + * Number of output channels + * @var conv_layer_struct::CI + * Number of input channels + * @var conv_layer_struct::IH + * Height of input feature map + * @var conv_layer_struct::IW + * Width of input feature map + * @var conv_layer_struct::OH + * Height of output feature map + * @var conv_layer_struct::OW + * Width of output feature map + * @var conv_layer_struct::FH + * Height of filter + * @var conv_layer_struct::FW + * Width of filter + * @var conv_layer_struct::pad + * Padding on all sides + * @var conv_layer_struct::ifmap + * Pointer to input feature map + * @var conv_layer_struct::weights + * Pointer to weights + * @var conv_layer_struct::ofmap + * Pointer to output feature map + * @var conv_layer_struct::TILE_CI + * Tiling factor of input channel + * @var conv_layer_struct::cluster2cluster + * Flag for enabling cluster 2 cluster communication + * @var conv_layer_struct::im2col + * Flag for enabling im2col + GEMM + * @var conv_layer_struct::gamma + * Pointer to gamma for BatchNorm + * @var conv_layer_struct::beta + * Pointer to beta for BatchNorm + * @var gemm_layer_struct::dtype + * Precision of Convolution layer + */ +typedef struct conv_layer_struct { + // CONV2D + uint32_t CO; + uint32_t CI; + uint32_t IH; + uint32_t IW; + uint32_t OH; + uint32_t OW; + uint32_t FH; + uint32_t FW; + uint32_t pad; + + double *ifmap; + double *weights; + double *ofmap; + + uint32_t TILE_CI; + uint32_t cluster2cluster; + uint32_t im2col; + + // BATCHNORM + double *gamma; + double *beta; + + precision_t dtype; +} conv_layer; diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/kernel/mxfmatmul.c b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/kernel/mxfmatmul.c new file mode 100644 index 00000000..471bbc50 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/kernel/mxfmatmul.c @@ -0,0 +1,429 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#include "mxfmatmul.h" + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 2*kernel_n, respectively +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 1)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v24, 0"); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mxfmacc.vv v24, v0, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mxfmacc.vv v24, v12, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v24, v12, v8"); + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; // Question: If give the abs value 4 to here, then the + // performance is better. Why? + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 4*kernel_n, respectively +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 2)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v28, 0"); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v8"); + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 8*kernel_n, respectively +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 3)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v18, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v22, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v26, 0"); + asm volatile("vmv.v.i v28, 0"); + asm volatile("vmv.v.i v30, 0"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v18, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v22, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v26, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v30, v12, v8"); + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v30, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/kernel/mxfmatmul.h b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/kernel/mxfmatmul.h new file mode 100644 index 00000000..a6b7979e --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/kernel/mxfmatmul.h @@ -0,0 +1,55 @@ +// Copyright 2021 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#ifndef MXMATMUL_H +#define MXMATMUL_H + +#include + +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +#endif diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/main.c b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/main.c new file mode 100644 index 00000000..a05c1972 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/main.c @@ -0,0 +1,249 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include DATAHEADER +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 4 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 8 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +//#define B2 1 + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + +#ifdef B2 + matmul_tiled_Bx2(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#else + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#endif + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/main.c~ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/main.c~ new file mode 100644 index 00000000..fe5d2e8c --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/main.c~ @@ -0,0 +1,249 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include DATAHEADER +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 8 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 4 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +//#define B2 1 + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + +#ifdef B2 + matmul_tiled_Bx2(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#else + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#endif + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/script/gen_data.py b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/script/gen_data.py new file mode 100644 index 00000000..feada63f --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/script/gen_data.py @@ -0,0 +1,592 @@ +#!/usr/bin/env python3 +# Copyright 2022 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Author: Tim Fischer + +import numpy as np +import torch +import torch.nn as nn +import argparse +import pathlib +import hjson +import struct + +np.random.seed(42) +torch.manual_seed(42) + +global verbose + + +def array_to_cstr(a, fmt=float): + out = '{' + if fmt == float: + if isinstance(a, np.ndarray): + a = a.flat + if isinstance(a, torch.Tensor): + a = a.numpy().flat + for el in a: + out += '{}, '.format(el) + else: + for sign, exp, mant in zip(a['sign'].numpy().flat, a['exponent'].numpy().flat, a['mantissa'].numpy().flat): + value = sign * 2**7 + exp * 2**2 + mant + out += "0x{:02x}, ".format(value) + out = out[:-2] + '}' + return out + + +def emit_header_file(layer_type: str, **kwargs): + + file_path = pathlib.Path(__file__).parent.parent / 'data' + emit_str = "// Copyright 2022 ETH Zurich and University of Bologna.\n" + \ + "// Licensed under the Apache License, Version 2.0, see LICENSE for details.\n" + \ + "// SPDX-License-Identifier: Apache-2.0\n\n" + + if layer_type == 'Conv2d': + file = file_path / 'data_conv2d.h' + emit_str += emit_conv2d_layer(**kwargs) + elif layer_type == 'GEMM': + file = file_path / ("data_" + str(kwargs["M"]) + "_" + str(kwargs["N"]) + "_" + str(kwargs["K"]) + ".h") + emit_str += emit_GEMM_layer(**kwargs) + elif layer_type == 'Print': + file = file_path / 'result_check.h' + emit_str += emit_Print_layer(**kwargs) + elif layer_type == 'BatchNorm': + file = file_path / 'data_batchnorm.h' + emit_str += emit_batchnorm_layer(**kwargs) + elif layer_type == 'MaxPool': + file = file_path / 'data_maxpool.h' + emit_str += emit_maxpool_layer(**kwargs) + elif layer_type == 'FusedConv': + file = file_path / 'data_fusedconv.h' + emit_str += emit_fusedconv(**kwargs) + with file.open('w') as f: + f.write(emit_str) + + +def emit_conv2d_layer(name='conv2d', **kwargs): + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + weights = kwargs['weights'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + _, fh, fw, _ = weights.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {fh},\n' + layer_str += f'\t.FW = {fw}\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_weights_dram[{co}][{ci}][{fh}][{fw}] = ' + array_to_cstr(weights) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_linear_layer(input, weights, ofmap): + + layer_str = '' + return layer_str + + +def emit_GEMM_layer(name='gemm', **kwargs): + mat_A = kwargs['A'] + mat_B = kwargs['B'] + mat_C = kwargs['C'] + result = kwargs['result'] + + m = kwargs['M'] + n = kwargs['N'] + k = kwargs['K'] + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'const gemm_layer {name}_l = {{\n' + layer_str += f'\t.M = {m},\n' + layer_str += f'\t.N = {n},\n' + layer_str += f'\t.K = {k},\n' + layer_str += f'\t.TA = {int(kwargs["ta"])},\n' + layer_str += f'\t.TB = {int(kwargs["tb"])},\n' + layer_str += f'\t.ALPHA = {kwargs["alpha"]},\n' + layer_str += f'\t.dtype = FP{kwargs["prec"]},\n' + layer_str += f'\t.expand = {kwargs["expand"]}\n' + layer_str += '};\n\n\n' + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str += f'{dtype} r[{m}] __attribute__((section(".l1")));\n\n' + + if dtype != 'char': + layer_str += f'static {dtype} {name}_A_dram [{m}*{k}] = ' + array_to_cstr(mat_A) + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}*{n}] = ' + array_to_cstr(mat_B) + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}*{n}] = ' + array_to_cstr(mat_C) + ';\n\n\n' + layer_str += f'static {dtype} {name}_checksum[{m}] = ' + array_to_cstr(torch.sum(result, dim=-1)) + ';\n\n\n' + else: + layer_str += f'static {dtype} {name}_A_dram [{m}][{k}] = ' + \ + array_to_cstr(kwargs['bits_A'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}][{n}] = ' + \ + array_to_cstr(kwargs['bits_B'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}][{n}] = ' + \ + array_to_cstr(kwargs['bits_C'], fmt='char') + ';\n\n\n' + + return layer_str + + +def emit_Print_layer(mat): + result_str = "// Results Print:\n" + for row in mat: + line = " ".join(str(struct.unpack('f', struct.pack('f', x))[0]) for x in row) + result_str += "// " + line + "\n" + return result_str + + +def emit_batchnorm_layer(name='batchnorm', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + beta = kwargs['beta'] + gamma = kwargs['gamma'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_beta_dram[{ci}] = ' + array_to_cstr(beta) + ';\n\n\n' + layer_str += f'static double {name}_gamma_dram[{ci}] = ' + array_to_cstr(gamma) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_maxpool_layer(name='maxpool', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + k = kwargs['kernel_size'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {k},\n' + layer_str += f'\t.FW = {k},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_fusedconv(name='fusedconv', **kwargs): + + ifmap = kwargs['ifmap'] + kernel = kwargs['kernel'] + bn_k = kwargs['bn_k'] + bn_l = kwargs['bn_l'] + ofmap = kwargs['ofmap'] + ofmap_before = kwargs['ofmap_before'] + ifmap_padded = kwargs['ifmap_padded'] + + padding = kwargs['padding'] + + if kwargs['depthwise']: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + fh, fw, co = kernel.shape + ci = co + ih_pad, iw_pad, _ = ifmap_padded.shape + elif kwargs['chw_layer']: + ci, ih, iw = ifmap.shape + oh, ow, co = ofmap.shape + co, ci, fh, fw = kernel.shape + _, ih_pad, iw_pad = ifmap_padded.shape + else: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + _, fh, fw, _ = kernel.shape + ih_pad, iw_pad, _ = ifmap_padded.shape + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str = '#include \n' + layer_str += '#include "conv2d.h"\n\n' + layer_str += 'kernel_fp32 k = {\n' + layer_str += f'\t.ch_in = {ci},\n' + layer_str += f'\t.ch_out = {co},\n' + layer_str += f'\t.dim_in_x = {iw},\n' + layer_str += f'\t.dim_in_y = {ih},\n' + layer_str += f'\t.dim_kernel_x = {fw},\n' + layer_str += f'\t.dim_kernel_y = {fh},\n' + layer_str += f'\t.dim_out_x = {ow},\n' + layer_str += f'\t.dim_out_y = {oh},\n' + layer_str += f'\t.padding_y_top = {padding["padding_y_top"]},\n' + layer_str += f'\t.padding_y_bottom = {padding["padding_y_bottom"]},\n' + layer_str += f'\t.padding_x_left = {padding["padding_x_left"]},\n' + layer_str += f'\t.padding_x_right = {padding["padding_x_right"]},\n' + layer_str += f'\t.stride_x = {kwargs["stride"]["stride_x"]},\n' + layer_str += f'\t.stride_y = {kwargs["stride"]["stride_y"]},\n' + layer_str += f'\t.flag_relu = {kwargs["flags"]["flag_relu"]},\n' + layer_str += f'\t.flag_batch_norm = {kwargs["flags"]["flag_batch_norm"]},\n' + layer_str += f'\t.flag_y_accumulate_start = {kwargs["flags"]["flag_y_accumulate_start"]},\n' + layer_str += f'\t.flag_y_accumulate_end = {kwargs["flags"]["flag_y_accumulate_end"]},\n' + layer_str += '};\n\n' + layer_str += f'uint32_t dw = {kwargs["depthwise"]};\n' + layer_str += f'uint32_t chw_layer = {kwargs["chw_layer"]};\n' + + layer_str += f'static {dtype} {name}_pInBuffer_dram[{ih_pad}][{iw_pad}][{ci}] = ' + \ + array_to_cstr(ifmap_padded) + ';\n\n' + layer_str += f'static {dtype} {name}_pWeight_dram[{co}][{fh}][{fw}][{ci}] = {array_to_cstr(kernel)};\n\n' + layer_str += f'static {dtype} {name}_lambda_dram[{ci}] = {array_to_cstr(bn_l)};\n\n' + layer_str += f'static {dtype} {name}_kappa_dram[{ci}] = {array_to_cstr(bn_k)};\n\n' + layer_str += f'static {dtype} {name}_pOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap_before)};\n\n' + layer_str += f'static {dtype} {name}_pCheckOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap)};\n\n' + + return layer_str + + +def rand_data_generator(shape, prec, alt=False): + if prec == 64: + return torch.randn(shape, requires_grad=False, dtype=torch.float64), {} + elif prec == 32: + return torch.randn(shape, requires_grad=False, dtype=torch.float32), {} + elif prec == 16: + if alt: + return torch.randn(shape, requires_grad=False, dtype=torch.bfloat16), {} + else: + return torch.randn(shape, requires_grad=False, dtype=torch.float16), {} + elif prec == 8: + sign = torch.randint(0, 2, shape, requires_grad=False, dtype=torch.uint8) # -1 or 1 + exponent = torch.randint(0, 16, shape, requires_grad=False, dtype=torch.uint8) # < 0b01111 + mantissa = torch.randint(0, 4, shape, requires_grad=False, dtype=torch.uint8) # can be arbitrary + bits = {'sign': sign, 'exponent': exponent, 'mantissa': mantissa} + # TODO: not actually correct + return ((-1.0)**sign.double()) * (2.0**(exponent.double() - 15.0)) * (1.0 + mantissa.double() / (2**2)), bits + + +def conv2d(ifmap, weights, padding=1, stride=1): + n, ci, ih, iw = ifmap.shape + co, _, fh, fw = weights.shape + + conv2d = nn.Conv2d(ci, co, (fh, fw), padding=((fh - 1) // 2, (fw - 1) // 2)) + conv2d.weight = nn.Parameter(weights, requires_grad=False) + conv2d.bias = nn.Parameter(torch.zeros_like(conv2d.bias, dtype=weights.dtype), requires_grad=False) + ofmap = conv2d(ifmap) + + return ofmap + + +def max_pooling(ifmap, kernel): + n, ci, ih, iw = ifmap.shape + max_pool = nn.MaxPool2d(kernel_size=kernel) + ofmap = max_pool(ifmap) + + return ofmap + + +def batchnorm(ifmap): + n, ci, ih, iw = ifmap.shape + bn = torch.nn.BatchNorm2d(ci) + bn.weight.requires_grad = False + bn.bias.requires_grad = False + running_mean = torch.randn_like(bn.running_mean, requires_grad=False) + running_var = torch.rand_like(bn.running_var, requires_grad=False) + gamma = bn.weight / torch.sqrt(running_var + bn.eps) + beta = bn.bias - running_mean * bn.weight / torch.sqrt(running_var + bn.eps) + ofmap = ifmap * gamma.unsqueeze(-1).unsqueeze(-1) + beta.unsqueeze(-1).unsqueeze(-1) + + return ofmap, gamma, beta + + +def fused_conv(ifmap, weights, bn_k, bn_l, padding, stride, bn, relu, accumulate, depthwise): + + ih, iw, ci = ifmap.shape + if not depthwise: + co, fh, fw, _ = weights.shape + else: + fh, fw, co = weights.shape + ci = co + + ifmap_padded = torch.zeros(ih + padding['padding_y_top'] + padding['padding_y_bottom'], + iw + padding['padding_x_left'] + padding['padding_x_right'], + ci, + requires_grad=False, dtype=ifmap.dtype) + ifmap_padded[padding['padding_y_top']:ih + padding['padding_y_top'], + padding['padding_x_left']:iw + padding['padding_x_left']] = ifmap + + # Don't cover undefined behaviour when there are steps without a complete kernel window + if (ifmap_padded.shape[0] - (fh - 1) - 1) % stride['stride_y'] != 0: + print("Warning: rounding h output dimension") + if (ifmap_padded.shape[1] - (fw - 1) - 1) % stride['stride_x'] != 0: + print("Warning: rounding w output dimension") + + ofmap = torch.zeros((ifmap_padded.shape[0] - (fh - 1) - 1) // stride['stride_y'] + 1, + (ifmap_padded.shape[1] - (fw - 1) - 1) // stride['stride_x'] + 1, co) + if accumulate: + ofmap_before = torch.randn_like(ofmap, requires_grad=False) + else: + ofmap_before = torch.zeros_like(ofmap, requires_grad=False) + + if verbose: + print(ifmap.shape, ifmap_padded.shape, ofmap.shape) + + if (depthwise): + # depthwise Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw, c].flatten(), weights[:, :, c].flatten()) + else: + # Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw].flatten(), weights[c].flatten()) + + ofmap += ofmap_before + + # BatchNorm + if bn: + ofmap = ofmap * bn_k + bn_l + + # ReLU + if relu: + ofmap = torch.nn.functional.relu(ofmap) + + return ofmap, ofmap_before, ifmap_padded + + +def main(): + + parser = argparse.ArgumentParser(description='Generate data for kernels') + parser.add_argument( + "-c", + "--cfg", + type=pathlib.Path, + required=True, + help='Select param config file kernel' + ) + parser.add_argument( + "-v", + "--verbose", + action='store_true', + help='Set verbose' + ) + + args = parser.parse_args() + + global verbose + verbose = args.verbose + + with args.cfg.open() as f: + param = hjson.loads(f.read()) + + if param['prec'] == 64: + dtype = torch.float64 + elif param['prec'] == 16: + dtype = torch.float16 + elif param['prec'] == 8: + dtype = None + else: + dtype = torch.float32 + + if param['kernel'] == 'Conv2d': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + weights = torch.randn(param['channels']['out'], + param['channels']['in'], + param['filter']['height'], + param['filter']['width'], requires_grad=False, dtype=dtype) + + ofmap = conv2d(ifmap, weights, + padding=param['filter']['padding'], + stride=param['filter']['stride']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + weights = weights.permute(0, 2, 3, 1) + kwargs = {'ifmap': ifmap, 'weights': weights, 'ofmap': ofmap} + emit_header_file('Conv2d', **kwargs) + + elif param['kernel'] == 'GEMM': + mat_A, bits_A = rand_data_generator((param['M'], param['K']), param['prec']) + mat_B, bits_B = rand_data_generator((param['K'], param['N']), param['prec']) + mat_C, bits_C = rand_data_generator((param['M'], param['N']), param['prec']) + + print("Mat_A Original:") + for row in mat_A: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + print("Mat_B Original:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + result = param['alpha'] * mat_C + torch.matmul(mat_A, mat_B) + + print("Result:") + for row in result: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + if param['transpose_A']: + mat_A = mat_A.T + if param['transpose_B']: + mat_B = mat_B.T + + print("Mat_B Transposed:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + kwargs = { + 'A': mat_A, + 'B': mat_B, + 'C': mat_C, + 'result': result, + 'M': param['M'], + 'N': param['N'], + 'K': param['K'], + 'ta': param['transpose_A'], + 'tb': param['transpose_B'], + 'alpha': param['alpha'], + 'prec': param['prec'], + 'expand': param['expand'], + 'bits_A': bits_A, + 'bits_B': bits_B, + 'bits_C': bits_C + } + + emit_header_file('GEMM', **kwargs) + emit_header_file('Print', mat=result) + + elif param['kernel'] == 'BatchNorm': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap, gamma, beta = batchnorm(ifmap) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'beta': beta, 'gamma': gamma, 'ofmap': ofmap} + emit_header_file('BatchNorm', **kwargs) + + elif param['kernel'] == 'MaxPool': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap = max_pooling(ifmap, param['kernel_size']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'ofmap': ofmap, 'kernel_size': param['kernel_size']} + emit_header_file('MaxPool', **kwargs) + + elif param['kernel'] == 'FusedConv': + ifmap = torch.randn(param['dim_in_y'], param['dim_in_x'], param['ch_in'], requires_grad=False, dtype=dtype) + if not param['depthwise']: + kernel = torch.randn(param['ch_out'], param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + else: + kernel = torch.randn(param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + + bn_k = torch.randn(param['ch_out'], requires_grad=False) + bn_l = torch.randn(param['ch_out'], requires_grad=False) + + ofmap, ofmap_before, ifmap_padded = fused_conv(ifmap, + kernel, + bn_k, + bn_l, + param['padding'], + param['stride'], + param['flags']['flag_batch_norm'], + param['flags']['flag_relu'], + not param['flags']['flag_y_accumulate_start'], + param['depthwise']) + + if param['chw_layer']: + ifmap = ifmap.permute(2, 0, 1) + ifmap_padded = ifmap_padded.permute(2, 0, 1) + kernel = kernel.permute(0, 3, 1, 2) + + kwargs = { + 'ifmap': ifmap, + 'ifmap_padded': ifmap_padded, + 'ofmap': ofmap, + 'ofmap_before': ofmap_before, + 'kernel': kernel, + 'bn_k': bn_k, + 'bn_l': bn_l, + 'padding': param['padding'], + 'stride': param['stride'], + 'prec': param['prec'], + 'flags': param['flags'], + 'depthwise': param['depthwise'], + 'chw_layer': param['chw_layer'] + } + emit_header_file('FusedConv', **kwargs) + + else: + print("No valid kernel selected") + + +if __name__ == '__main__': + main() diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/script/matmul.json b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/script/matmul.json new file mode 100644 index 00000000..3eb11985 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m4n4k8-b4/script/matmul.json @@ -0,0 +1,17 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Solderpad Hardware License, Version 0.51, see LICENSE for details. +// SPDX-License-Identifier: SHL-0.51 + +// Parameters for a GEMM + +{ + kernel: "GEMM" + M: 64, + N: 64, + K: 64, + alpha: 0, + transpose_A: false, + transpose_B: true, + prec: 64, + expand: 0 +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/data_16_16_16.h b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/data_16_16_16.h new file mode 100644 index 00000000..1052e7cf --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/data_16_16_16.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 16, + .N = 16, + .K = 16, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[16] __attribute__((section(".l1"))); + +static double gemm_A_dram [16*16] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033}; + + +static double gemm_B_dram [16*16] = {0.4780347016744464, -0.20314173587596263, 1.797754234791071, 0.23274595474814475, -0.9954168307888536, 1.8547476587140206, 0.09402273928088646, -0.9430074874135619, 0.8239191817788585, 0.11501735450468505, 0.8545701717376761, -0.007188030468140175, -0.018728729244763993, -0.9533932980859413, -0.12165398416725498, -0.42661916146469137, 0.9340946495293597, 0.19522143581405244, 0.23182973839731683, -1.2546554715250677, -0.7025528681323762, -0.03019556689050345, -1.4671607394596426, -0.1734020738525506, 1.0202696745617659, 1.0157942265133257, -0.4324600332331524, -0.296150919949663, 0.056387506785403815, 1.5109902204218253, -0.13585017018841927, 0.6485611566020152, -1.149354106366614, 0.24917168366560993, -0.4778501888006765, 0.8387576576827396, 0.41098923499226014, -0.2256181742270194, -1.219750082862799, 0.9803566659279874, 1.3346481596559676, 1.6129488803273395, -0.024493143878920487, -0.7591698936771379, -0.48921141096064424, -0.062040923189698165, 0.8520383693040029, -1.128094765763347, -0.07195237845460918, -0.46610241187034174, 0.29946965798993297, -0.6354031061312012, 0.7739177723108309, 0.19368409881631005, -1.3274229125145334, 0.0627858851186502, 0.36384746366328413, -0.19175241722939693, 1.980986216379721, 1.1809578134345797, -0.7306000207552646, -1.7641855643145632, 0.7245001435289563, -1.5840451502971633, 0.09414818556627164, -0.9029006394421663, 0.8488782882116401, -1.2173643223619721, -1.2762292342683303, 0.5058710736668895, 0.6099936154303692, 1.0423699879551078, 0.7611949933670529, 0.6164470190315824, -0.2658724362020457, -0.14668266051521825, -0.6274502774485388, 1.4985053270616493, 1.3299880805922875, 0.6965634921004461, -0.23035924547300898, -0.4005606761098726, 0.3315215039285197, 1.231436269706581, -0.1434065696905791, 0.1038460098414191, -0.11014269025953972, 1.5545069571528942, -0.8829189545685341, -0.20570447804044192, 0.011103897250099562, 0.5946658094550371, -0.6020537188199624, -0.4079372826543253, -0.1805351705743782, -0.33600719481813285, -1.8998197674219859, -1.3514084083199862, 0.12891223912089034, -0.12220432019599553, 0.199025684270468, -1.4076687315200758, -1.3293671463788634, 1.5849730687530486, 0.26915516555170543, 0.42155963063098567, 1.0111021595209633, -0.4752871063125886, 1.313122245567395, 1.429769590030981, -0.22203877342660364, -0.3359458033736853, 0.9478581977287968, -0.9017993731080081, -1.2238040021173409, -1.5066610314377438, -1.5400573604406471, 1.029960808199997, 0.7101787049919178, 0.7199388940089966, -0.09599439254200862, -0.5707540620409073, -1.1665892611773085, 1.1838674589073483, -0.14388808008330586, -0.2897447883816845, -0.5230311319816758, -1.3453794288815801, -0.5774972459244567, -1.6874596492942056, -0.6243273110799229, -0.131168025357405, 1.548288167937, 2.177326020841736, -0.01670896018294231, 2.6380786365181796, -0.6554716217755595, 0.6536593231539053, -0.7991803895400539, -0.48408003859590065, 1.3163800108985646, 0.7736151342348289, 0.045765518028111664, 0.782406872557914, 0.6273242190434466, 0.8505308967944145, 0.002119877636176426, -0.03123667988254042, 0.9288465316923816, 0.4365480813048655, 0.43343311885236446, -0.27680484002022715, 0.6816100143946399, -0.29432626362033404, 0.18661178764402744, -0.34832623473704294, -0.12593952342837475, 0.6104204582278638, 2.1112388578012884, 0.16436581820924961, 0.08511336387296158, 0.6772607869261693, -1.0103642468106544, 0.5124772757514626, 0.08390244767011035, -0.42153332375097163, -0.014621424093204098, 0.1962794539558957, -0.29262366803238393, -0.47610390457226875, 0.8742346952912949, -0.031424129829246916, 1.25609380794485, -0.5422032040096507, 1.9700777629678679, -0.6098672123657596, -0.1733949212480647, 0.07380298739515019, -1.1195878651441893, 0.8173767150222387, 0.3572785103117973, -0.9320608828189856, 0.6955788134794414, 0.8731470189472956, 0.9362614654567366, -1.3121219556703199, 0.22713168745929768, 0.6027021077218985, 1.1658575421017066, -1.149255707834347, 0.1456185008563352, -0.5846446870404606, 1.2335858050609876, 1.9920454844101763, -1.2632446956429335, -0.2772483620390129, 0.17859923880951847, 1.8110431275164358, 0.5722528182048355, 0.010205327986369436, 0.1418089057088939, -0.9264218514606051, -0.5133236613036435, -0.1269124796513161, -1.7009294128404835, 1.7075504892947724, 0.6952680695280342, 1.7665907233368394, 1.3917635799868133, -0.33044907219753716, 1.452604901391212, -0.8170580592759659, -0.6768899292657692, -1.4858191479600487, -1.481720319316519, -0.8838416943783096, -0.4836971414215709, 0.14788650580579352, -0.5447919995948828, -0.132580840204314, -0.3443663683433915, 1.4528943457305363, 1.289500316820128, 2.253287365111219, -0.9181737147627111, -0.39032216747009113, 0.6929251584566181, 0.11041826907812055, 0.8504258697467754, 0.7389689210845545, -0.15323533618009222, 0.8068577169597195, -1.242898069994524, 0.0069296369726892315, -1.4490806809539707, 0.8622146933847438, -0.9552666410033216, 1.5535736491676595, -0.3238211924056418, 2.1818716851528808, 0.8067649829193638, 1.498700405481595, 0.3435160724199721, 0.024119499618272, 0.9425485271043043, 0.6644577289945207, 1.090316288383937, 0.29925023340409146, 0.2730005353024221, 0.3306231644074124, -0.5830552203885363, -0.6652501624993471, -2.123695546730074, 0.8145713078829363, -0.8891278822176073, -0.5497385523974774}; + + +static double gemm_C_dram [16*16] = {0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222}; + + +static double gemm_checksum[16] = {3.53318139833275, 18.910557186514914, 17.061557051251178, -17.86682606914221, -5.920568815540228, -16.80427557391132, 12.345786410219814, 24.565576004988085, 3.617111620044957, -18.771063102425778, 43.637805771956224, -17.699257074021574, -7.3420911665199835, 8.052332093906525, -16.822597494037367, 2.274275182397295}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/data_32_32_32.h b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/data_32_32_32.h new file mode 100644 index 00000000..667ffd2d --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/data_32_32_32.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 32, + .N = 32, + .K = 32, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[32] __attribute__((section(".l1"))); + +static double gemm_A_dram [32*32] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342}; + + +static double gemm_B_dram [32*32] = {1.8448885093030065, 0.622613137075688, -2.0773600718526932, -0.05879218788301025, -0.14883240827467462, -1.6070787249452574, -1.2752325216668503, -0.9710154441004514, 2.8536471208979433, 1.0259687873673153, -0.07729526178752644, 2.90124785320579, -1.6099870201619317, -0.8847331619490723, 0.5939979568631141, 1.2200036287220326, 2.8510918408680124, -1.25582651238933, -1.5043005890504582, 0.809667872762421, 0.4455096569146938, 1.4533777876325222, 0.08093711755806289, 0.5433594960509881, 0.21407749737048995, 0.5053866496884525, -0.7063829736735863, -1.7255159569914225, -1.3941268553154642, -0.3611221208798455, -0.05334598793633222, -0.35435416471609005, 0.572007132100381, -0.5264955185026189, 0.5102128857829208, 0.6116700031464317, 2.0486968982261202, -0.7165117692039605, -0.44546162876683887, 0.4763931829831273, 1.3032022234889244, -0.02932551729568818, -0.4820520883676177, 0.9193799243970369, 0.6146813355739139, -0.22393893146647295, 0.571492357564412, -0.948302395460301, -0.7318379837818061, 0.03382654045677089, 0.7372524407400997, -0.4103668947560523, -1.5530036453685645, -1.508283926364581, -2.256777082059624, 0.5675579810614343, -0.41165660712793767, 0.3283028032403514, 0.08317733846151737, 0.6397252376986503, 0.5706575386796322, -1.4195164842808716, 0.10738590560666669, 0.6485877172023825, -0.9020532459752512, 1.7456452297639542, -1.3425473236398795, -1.3093298447872528, -0.9909136952855094, -0.7553512437574256, -0.15696203458936964, -0.8587268321219447, 0.4760756036980966, -0.7891190307945258, -0.3642766707809299, 1.4109003071198862, 1.0232681185457035, 0.2604924986511237, 1.2838646589587073, 0.6269276746157323, -0.6194976835634578, -0.45889090147992845, -0.5334658384258053, 1.749809215983805, 0.24334104727505046, -0.9454297378995183, 0.324177164165908, 1.9203285366540146, -0.8911684286042895, -2.225396433305001, -0.9039919874880522, 0.23342621054073684, 0.7831976119427991, 1.1907305012760756, 0.7476571054869932, -0.2757466733288484, 1.423932009681719, -0.0032580522874735246, 1.0664992078500592, -1.9790524548585495, -0.3600241005246587, 1.9280259690970352, -1.1862950949600968, 0.420689070376205, 0.04693766693045954, 0.29564308636903597, 0.2721281447061126, 0.9342714574384375, -0.6120020584064751, -1.065720378325982, 0.1968309175885564, -1.8413847347422614, 0.8118142867300344, -0.2896301303848118, 0.2567239585606655, 1.001647179219911, 1.9679440499519993, -1.010459444419853, 1.062105790670867, -0.5030970822643847, -0.49236046031915226, -1.096249407991655, -2.359353503098415, 0.21399479954715414, 0.28018300766602294, 0.1522501461827938, -1.5691946737355327, -0.3563016808385527, 1.1116421563744774, -0.08412480377121889, -1.3978347586933288, 2.327922240143418, 0.1602748303156346, -0.26733976223106926, 0.37408049529043713, 0.6054083058374654, -0.5984449522911452, -0.34927374642138076, -1.0173409588721802, 0.7408981122108215, -1.0855633146564565, -2.4784405095403583, 0.0125526247658802, 2.975492133500898, 0.43758672808479837, 0.4922810729687261, -0.6299751233419266, -1.7659243403508436, -0.14949638764508505, 0.0754147254586834, 0.2886235312894662, 0.8421602450844566, 0.08810619424950021, -0.9149883628966105, 0.11425878193276912, 1.1788921695577175, 0.13693472548612742, 0.922469684257407, 0.8999837788505479, -0.17817414950901492, -0.609918694875925, -0.09847618283385187, -0.5082793586733352, 0.5346029134452727, 0.07168780603661637, -0.0673955495394241, -0.38524482721238545, -0.7954680985571436, 0.7900271874549623, 0.8136749201194545, -0.22291945275506458, -1.501451886644788, 0.9035218354603602, -1.397338674255014, -0.588379978175527, 0.5732253342246594, -0.7150266134830248, -0.11561150744781683, 0.024035161278926437, 0.15383957509758237, -0.1787890634869671, -1.2810537542822706, -1.2983305542602077, -2.316838061301056, -1.4051338603716423, 0.21230053589695053, 0.64706666019578, -0.4946728962147127, 1.0154445987056024, 0.016501336648811274, 0.038792413114335636, -0.0019081140052624073, 1.0390897743423966, 0.5573182638994464, 1.0293339145628106, -0.2220392426765117, 0.30202523579276225, -0.536406291194771, 0.7842727318028115, -0.20058537792435566, -1.969917184758775, 0.620245645223459, 1.415842532715168, -0.8528561599738412, 1.199279110133032, 0.12733886071252698, -1.459242663662794, -1.876866690355531, -1.9406394619639358, -2.0656398984212156, 1.1244580271586777, -1.2779831760745572, -0.8694565617159877, -0.7736354580243704, -1.5005961252940438, -0.4201799135308444, -2.3224238004285707, -0.6023002440801871, 0.4359959376210403, -1.8310549540520982, -1.1860807036684393, 0.7429642513221194, 0.9914820089613138, -0.39273602229275606, -0.1305603800084962, -1.1975598741016937, 1.1953652639556394, 1.0350931612437495, -0.582835004754739, -0.7093789385459298, 1.1538879916827052, -0.19994075887630136, 0.3503211304018375, -0.43951272221042564, 0.3487504850213432, -1.4502786649323292, 0.21247320768848982, -0.962990797187108, -0.16058887298258492, -1.4492981424636866, 0.8679359705510734, -0.15730996466261546, 0.40836377201711715, 0.2669263499455465, -0.02701940155527667, -0.811961379205231, -1.4260396412546816, 1.99145358910135, -0.3410883214075715, 1.4512382841053386, -0.09281069482301793, -0.3690830035843751, -0.19007920263882952, 0.10750421501190041, 0.9465564741859593, 0.06348346009811161, 0.7049709576256773, -0.25042914816475237, -0.7592324149843712, 0.579583179532083, 1.0356927036283528, 1.744020696757244, -0.9454918159942679, -1.895096099561938, -0.0008137206583593385, 0.46265400794768385, 0.3522443413976922, -0.060333190180409904, -0.8276719054682797, -0.4158341820319732, -0.30513433025622483, -0.7472606420064576, 1.4354983174276066, 0.7768976641774541, -1.8739717517634698, -1.4256436904962992, -2.327140574554701, 1.3638217257964536, 0.12572172650108407, -1.1698739038813457, -0.12686282703773566, -1.5038113250304717, -0.5382334133878951, -0.42224783195423987, 0.1523832525182091, 0.4808356602618045, -0.9548035752110309, -0.8742437683710312, -0.30985592801910117, -0.24189491229960913, -0.9927853948011712, -0.09395716249601935, -1.0360800724687276, -0.8126325347024919, -1.405125889371723, -2.091666612524903, -0.6256281405885463, -1.869391305207575, 0.9077850533771569, -0.06215199874022316, 0.34353353507020123, 0.8295084980828852, 1.3958505210549053, 1.4876059940278459, 2.182868585469132, -0.7044791153933941, -0.26853628794603523, 0.040903466313536106, -0.3493894186252125, 1.077496971491708, -1.371518218990482, -0.48526560569590693, 0.23609553256542695, 0.11558860384831522, -0.633983343063867, 0.32423026673778105, -1.2093360312349437, 0.1323677945856938, 0.37108183095020375, -1.8689872110353185, -0.6566307196626123, 0.1717462405241003, -0.8401102070638347, -0.5606885258433681, 1.993616236752697, -1.5969922983164335, 1.0636457383418108, 0.0004974458415376117, -0.3510577387659576, 0.48193063531644537, -1.0749257488285808, 0.6962114020423124, 0.7795065425753578, 1.129362539634652, 1.112993202632025, -0.18934308720894036, -1.1741764376487758, 0.8524501556338853, 0.37761170331094157, -0.9342945534262868, -0.02711649643869937, 0.5810375830537511, 0.5998645930096181, -0.664516213841126, 0.23545196849666264, -0.06338166413389325, 0.49835413266819356, -0.4402301947763417, -2.100547843467698, -0.7034274377386549, -1.6932708709240643, -1.5147133895052636, -0.005304890708390932, 0.5303343737606813, 0.3955192048365272, -0.6916360198922066, -1.2365797403960304, -1.2686890383326754, -0.7818062318843579, -0.4080026099220151, -0.13894191854589522, -0.095540604007519, -2.072058608998672, 0.1737374420722428, -0.31690501369321267, 1.4448964367746397, -0.6980224325960035, 0.13020040181367357, -0.9331282790464878, -0.3340090119288742, -0.0050819767759484056, 0.7618231087000356, -0.2125855163161856, 0.3551271969105679, 1.2473531605780193, -2.1784216925774254, 1.371312887239788, 0.22201020504142566, -0.6176307398455463, 0.7465865033369634, -0.1530333323078057, 0.09645911224015045, 0.5742732453192894, -1.0184612409555949, 0.47214213858952303, 0.8246091313323292, 0.34215369871376844, -0.25495705935359947, 1.8548042098231963, -0.9291972010711246, 0.8829476857079316, -0.44867368855172923, 1.199426224041857, -0.16987767760770991, -1.189733419675099, 1.9987164641082087, 0.08404007020790137, -0.27202686813738103, -1.1242172376210566, 0.5331924552669381, -0.2820770772397286, 0.08640562469139157, 0.009684786386250501, -0.30058739646889815, -0.8626785926902893, -0.043876281219692365, -0.9358060344486432, -0.05592421534349575, 0.2318653380046876, 1.4399368526678278, -0.58828999383318, 0.43199223950922194, 1.1971503331114541, 2.532325541632594, 1.1869006875492747, 0.18139626346512772, 1.247922968974058, 1.010839700197812, -2.8791873832700547, -0.23051091319332653, 0.20499605949096963, 0.9031672530350638, 0.8745221489151239, 0.5700168037125656, 0.12132847331734303, -0.19495692375454912, -0.5102992245699747, 1.7922666332582982, -2.0217996637419504, -1.1376577043818543, -0.04898442309094625, 0.9913637676227545, -1.9483310573156807, -0.059343641632369076, 0.2636875321138984, -0.5446714593776727, 0.5125620452253108, -1.0850332393056394, 0.49295286102524044, -0.3735237580415768, 0.08464059182127714, -1.536144263111769, -1.7334295099492802, -1.939062107304355, -0.38189865297027337, -1.5866221126564115, 0.2555908214103616, -0.7129650139254672, -1.434297700901899, -0.8902436270883701, -0.0421115170793464, 0.5226206406896088, 1.2010757276760113, 2.269233244076525, 0.6929310708225009, -0.19142620469203458, -1.4608604499664002, -0.08834646865917613, -0.5266987160364432, 0.39258330183185886, 1.4723540101508836, 1.1669873661563108, 1.7267743114344978, -2.6437681894231435, 0.31916263280850626, 0.1619562886451128, -0.08553945533113934, -0.4802089660362259, 0.835126803441082, 1.109609770945844, -0.3494884497630849, -0.22461780649945687, 0.19008151199377613, -2.717778670757182, -0.8643497543156821, -0.10453191019598392, 0.7916834209392376, -1.971084122083064, -1.3999854653788708, -1.3195899155857833, -0.5773871236273995, 0.5757151238996234, 0.2803818171599705, -0.6035154511863011, 2.057751677950784, 0.40988533123157295, -0.39888705398196755, 0.7614369056740486, -0.22948805550230816, 1.2824833220745997, 0.38803217663099665, -0.1955663537656974, -0.5690532461968705, -0.5526532153140147, 0.3596144012700469, -0.6461446779487539, 0.6390360973776629, 0.15046570393731748, 0.33475288490766125, -1.1432227238603179, 0.4370304631746852, -1.0337911892064604, -0.9308402692062906, -0.6015415198184665, 1.7562161679995132, 0.1168039138752043, 0.689824201173873, 0.8153426406136252, -0.1728944869857963, -0.13301270859207348, -0.5270366881316677, -0.21170557963600709, 1.9951334816061994, -0.6241388306405901, -0.9401015854505796, 0.5592128760780101, 0.2883899362101988, -1.7212576593177709, 0.9994754870230482, 1.185949052557463, 0.051902944512615914, -0.13585649309388986, 1.2098862819236005, 1.185062371327038, 0.7600008532793323, 0.17431258922451653, -0.359544416669036, -0.8660236542618331, 0.5428826848071413, 2.7590525887014667, 3.4237712468503103, 0.5174957898345334, -1.4380277943151216, -1.8807813444109054, 0.3630283557686611, -0.525149213451578, 1.181971977987871, -0.5866181500734327, 1.524711206099055, -0.7800663274052761, 1.160481352505748, 0.39343143403797187, 1.8409181821652891, 0.49610977046001814, -0.9419344596787323, 1.0306895727537915, -0.08972003336849564, -0.3223643795390148, 1.6134203350119927, 0.7166427020983424, -1.666570871939696, 0.6170757026559303, -0.019119222645881905, 0.6657305691375492, -1.0678208861159952, -0.24969600604011072, -0.09696213550941978, -0.08674760587893786, 0.20255944297423273, 0.47452405238110584, 1.5065733412421733, 0.22065232253703387, 0.744628978129671, -0.26915089392842423, -0.15463871080474192, -1.2265714811977597, 1.7611911540817928, 0.20817264425532928, -0.8172519034071913, -1.5377442224077151, -1.548684848469057, -0.4477465519532468, -1.0427224611678692, 1.3390674367668436, -1.7547244042030132, -1.107773982297535, -1.3864755081036366, 0.5437796109495969, -0.640338334227558, 0.5138781656523993, -0.9640624060585024, 0.3627363765292881, 0.7961227485818212, 1.650950629705662, -0.9757273564713941, 0.6391954485208522, -1.6484340857205138, 0.5062590514320574, 0.49872412917775666, -0.02662111271639052, 0.3676083732835713, -0.4790606483008819, -0.47412499801799024, -1.3774088537570648, -0.9096458649167182, 0.3387263580347474, 1.427347151863727, 0.3936172157806796, -0.7229213248269448, 1.0421502948740846, -0.31575932783054717, -2.0944415177169953, 1.2284263304913572, 0.01545038682624204, -1.040602541009036, -0.747255398772972, 0.07405473692919617, 0.6462111934112551, -0.15540161000210675, -0.37254092473885336, 2.0182530686564895, -0.7592214987689807, -1.1213275218434526, -1.5589258141736047, 1.22745042848715, 1.7703882319843902, 1.8473014772988974, 0.3751449189250956, -0.6773093361468119, 0.7374924629427219, -0.6501714914135994, -0.5787298408624987, 0.8149334833372205, 1.5321216571398668, 0.2569777134684139, -0.29499229105904573, -0.6827694846192245, 1.2480509452812811, -0.03594236427723813, 1.0778363941578806, -0.4323877136781272, -0.24223189745187212, 0.2503737947188051, 0.7870016058915985, 0.19868751298961676, 0.39608506375087277, 1.8273660232377136, -0.16290875300595686, -0.14925008749413637, 1.688912150364615, 0.28089640344542804, 0.17302563058445183, -0.7235603815620858, 2.417337785331285, 0.6531743202785056, 1.3206137582172544, -0.6004867918118467, -0.49884117664872785, 0.5263294510598043, -0.19786418069226533, 0.19847908080770726, -1.0887076741188921, -1.4186463922997374, -0.46418731609632075, 0.9572709382349587, -0.1636651452718229, -0.18464959701431985, -2.4537835279476146, 1.6425500385797525, 1.9521841872543286, -0.9987807222089615, -0.8644861643567047, 0.09012216684853104, -1.5453453515930158, 0.028618079946139307, 0.8949404757727989, 0.11836116797672853, 1.1493902335657455, 1.4195569065800453, 0.4979804345513483, -1.8439449535735588, -1.3591299269239323, 0.6902199813822665, 0.16431412357817202, 0.6081345501547663, 0.17028885180838357, 0.2277981765470329, 0.22241582722694822, -0.5361669868684229, -0.35212526236220854, 0.07053654437136757, -1.1107085792532714, 0.43435982710100896, 0.9197089124134338, 0.4572717163404996, -0.7338887598113502, -1.4303046720322652, -1.0332700298347521, 0.707300443390559, -0.8341158090629236, -0.3900596403135759, 0.9788396157168914, 0.15285084511988004, -0.9521061052105131, 1.2693688025965613, -0.565952007041841, -1.723439924093865, -1.2488701028525535, -0.06310268278090121, -2.130104535188091, 0.8386877142814951, 0.08795913929250766, 0.3444816081051852, -0.7475464904708393, 0.055137779443554184, -0.297796251553928, 1.7752306448722606, -0.18586838199027028, -0.8359861748374583, -0.5254557201726808, 0.4874774972013086, 0.42973964778170143, 0.9547242579775002, 0.16954868116772995, -0.06608174057217904, 1.4198792364404926, -0.6798540159722049, 0.0037124668666011543, -1.9840617027488057, 0.9892360243254097, 0.16960249404796737, -0.43274207019506117, -0.9509348833512404, 1.001353646981955, -0.4453218737326093, -0.3765845085538441, -0.05609728003750563, -0.453301777620275, -0.7885161782185284, 1.8425900504983932, 0.7479073753397237, 1.1476608122361165, -1.0778628423584962, -1.1826687439735564, -0.2983334069128005, -0.9405677474521547, -0.1316442026885298, 1.0415794322065468, 0.031457706909880166, 0.40185795512569217, 0.5680057504067159, 0.4487811587655208, -1.890981268173993, -0.20813077355955645, -1.1278918446449648, 0.0976102127373202, -0.4396025725464862, 1.13966263395932, 0.8800683478695012, -0.4390315224865612, 0.8352543400425974, -0.6416390065504894, -0.4185489493255141, -0.14358452337381933, 0.3229857369820825, 0.40906237950521346, -0.8774506171339351, 0.17855829086113095, 0.2942911094966865, -0.26956499012979956, -0.594263411951702, -0.8820586551654293, 0.19168429076964602, 0.9320022617397814, 0.3469301281229362, 0.8708434312878163, 1.38335867526748, -1.693588315970276, -0.47920924486264665, 0.27195785052081917, 0.899919260122491, -0.5670525260070235, 0.28253652479051733, 1.4717430631656925, -0.3938745167085202, 1.3420338787636203, 0.07734968673664687, -0.22307281025633455, -0.06842865579333862, 0.8820726768303652, 1.1617475981837795, -0.5445053993271162, -1.6685708178136907, -0.604900108391799, -1.4509136246246903, -0.8677025372132973, 0.44175525248542286, 1.2380051766092655, -1.1301294572944445, 3.5953876986672255, -0.7311965810915613, 0.6612001818907256, 0.5644435285732619, 0.31200772222466067, -2.501823109461287, 0.03568906908977818, 0.6711365751637789, 0.10036766629128512, -1.9630063235244388, 0.20250426856488513, -0.37134570058665717, 0.8941462516437774, -0.5364177308537464, 0.14141128561714333, 1.1165497781562674, 0.6002964569533693, 0.3139908715338594, 0.7397153430022654, -0.5799201931033439, 0.5329264170127224, 0.0757461775588834, 1.1454947730219187, -1.2832223575262358, -1.1731970859703744, 2.264358935950376, 1.535151051934949, 1.2609714707832425, 1.0347284219371276, 0.7931445181078505, -1.1622188132692055, 0.27932962145356316, -0.8488543068716493, -0.21592794240105817, 0.6566383906736746, 0.8811148239408805, -1.4538990075976945, -0.673945501033193, 1.4420580869170465, 1.1526892923346204, -0.5580601750838238, -0.5193463961965822, 0.9856658198526146, 1.1612473442212157, 1.8901581231152924, 0.9954498087197619, 0.536910685665978, -0.5714364972858512, -0.7795697135851043, -1.1261703254618494, 0.8838113044537101, 0.31678992899871267, -0.7498434517605724, 0.945043974186398, 0.3830272308939737, 0.01811044220476568, 1.557358039479812, -1.1013820170238586, -0.18334305957155458, -0.048585931918069494, 0.48707383897255696, -0.06988463350772384, 0.03880070372652659, 0.666378400360196, 0.3153960860722241, -0.4553253041620339, -0.7620891486112908, 0.7833035854562042, -0.4972028753925732, 1.2235988334078434, -0.5372177387698984, -0.18194736753591428, 1.0076432223870029, -0.11562338831110575, -0.44166427943855957, 1.862246649641681, 0.16318485053532772, 0.21059455079709405, -0.04468791360092496, -0.09854463425203973, 0.610220453599741, 1.0966132130656288, -1.3377145615324746, -0.7432885872434457, -2.2463793716496183, -0.8271942633183708, 1.0330281295592512, 0.5665224930728516, 0.8235296531498106, 0.6513073416660541, -0.35686131551458816, -0.7466175012069378, -0.06866257813543919, 0.6819214512912009, -1.3157311036080868, 1.0765917423686246, -0.4124980314658376, -0.13454483357874214, 0.4039229699126195, 1.0392171119322082, 0.30783322485667264, -1.1636116702452202, -1.1864962493216553, -0.19855569336096057, 0.8554191239588586, 0.352400820758953, 0.509830562978939, 1.1127961330998304, -0.42772830220525987, 0.8203366802620794, -0.13107111869784893, 2.395067138296113, 0.9796702201792316, -0.31621524862176864, -1.855416176565475, 1.4335843287274053, -2.030956619344538, -1.0171091372766654, 0.1958899672744909, -1.7263899334779662, 1.3403087264740343, 0.5222811637226092, -0.3292665860742744, -0.805144923911586, 0.2937618607534383, -0.06839741587635721, 0.21159132832002855, 0.2439549047998887, -0.25957042793288443, 0.3803586083160361, -0.03287499950025958, 1.8371154985886862, 0.534974938780373, -0.22624467871026605, -0.5500096460519907, 1.688961038095004, 0.5698707282163747, 1.6482773735238936, -0.5991965310798085, -0.449879365783737, 2.22854455207779, 0.15551004552008937, 0.8500574802035589, 0.3316175009075528, -1.7646934144734967, 0.002668556331391873, -0.8136295403887579, -0.9465575672564711, 0.3469149176826813, 1.0045993947511778, 0.2610941691615629, 1.0788518344074862, 1.429798559996883, 1.6332065112971001, 1.7738534285950363, -1.6081696632587419, -1.161359070554741, 0.4734557044072717, 0.8251757971684041, -1.00859364816552, -0.47466672457489073, 1.2706120469339364, -1.728025679680301, -1.2420591801850245, -2.0058475112711514, 0.5071009399593757, -0.763791941134191, -0.8745505869548725, -0.20863591717796462, 0.6711383514595195, 1.4973252224613436, -0.4581821737978766, 2.85934273014681, -0.5905994619497847, -1.2986776963277358, -0.6884736402196919, -0.8420374077504474, -1.9226574720130702, -0.7714846254184806, 0.4879570553679617, 0.9569335370728702, 0.1215505686746317, -1.6928895703415128, 0.5214662704113713, 0.8488733195590197, -0.18689854597886257, -0.33142178700758057, 0.2108448776087118, 0.21001598604651528, -0.9215746025534817, -0.5943198935837782, -1.757528113553421, 1.251745108485312, -0.868299098407261, -0.1351648490652594, -0.23753657646460405, -0.4541796977906028, 0.6279007880533118, -1.697389937955057, 0.32284669288734297, 1.3123618498586958, 0.2238366057536359, -0.5546344165085834, 2.681801981114757, 0.620608819397525, 1.4571504499595769, 1.3299424270339977, -2.0231033737037047, 0.5166078996711738, -1.6380306920827867, -1.2122365561438313, -0.6623786574250906, 2.0063313680095405, 1.4850546815331578, 0.08949085370524765, 2.207851490608375, 0.6549815456848764, -0.8293836626550278, -0.6235361522388553, -0.626995367880836, 0.4159405289601604, -0.6195377638236638, -2.059249774668197, -0.7922512836603205, 1.9089401526170708, 1.59925697493435, 2.979844425070889, 0.19313774990116925, -0.5567288589208035, 0.5692262629524086, 0.2998477603655102, -0.8259830110426495, 0.820266660992923, -0.7182362270286512, -2.2200296733850635}; + + +static double gemm_C_dram [32*32] = {0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967}; + + +static double gemm_checksum[32] = {19.171406532352187, 64.83908386369714, -15.833072522846592, -9.097406689220577, 38.77022492904121, 36.661072250530495, -19.204889499817334, -26.71405328485298, 2.199782273326125, 22.879340449675865, -25.495771295498592, -22.74413590136339, 41.027971509741164, 2.3121890057321304, -19.49682405405703, 25.832519909539464, 42.9907473021782, 30.112697137204815, 26.7239787914316, 85.07758200685522, 6.60571186375147, -12.02777529819674, -23.409006725121806, 27.330350323575306, -24.78504460632868, 53.946894048375924, 92.26090941929412, 27.603604435548316, -41.68101813310628, -19.73859198296261, 37.159087216031466, 20.44420834195346}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/data_64_64_64.h b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/data_64_64_64.h new file mode 100644 index 00000000..1c964152 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/data_64_64_64.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 64, + .N = 64, + .K = 64, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[64] __attribute__((section(".l1"))); + +static double gemm_A_dram [64*64] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342, 1.8448885093030065, 0.572007132100381, -0.9020532459752512, 1.423932009681719, 1.1116421563744774, -0.609918694875925, 1.0390897743423966, -0.1305603800084962, 0.7049709576256773, -0.30985592801910117, -0.6566307196626123, -0.005304890708390932, 0.47214213858952303, 1.247922968974058, -1.434297700901899, -0.5773871236273995, 1.9951334816061994, -0.9419344596787323, -1.3864755081036366, -0.15540161000210675, 0.28089640344542804, 0.6902199813822665, 0.055137779443554184, -0.1316442026885298, -0.47920924486264665, -0.37134570058665717, 1.1612473442212157, 1.862246649641681, 1.1127961330998304, -0.449879365783737, -0.4581821737978766, 2.681801981114757, 0.622613137075688, -0.5264955185026189, 1.7456452297639542, -0.0032580522874735246, -0.08412480377121889, -0.09847618283385187, 0.5573182638994464, -1.1975598741016937, -0.25042914816475237, -0.24189491229960913, 0.1717462405241003, 0.5303343737606813, 0.8246091313323292, 1.010839700197812, -0.8902436270883701, 0.5757151238996234, -0.6241388306405901, 1.0306895727537915, 0.5437796109495969, -0.37254092473885336, 0.17302563058445183, 0.16431412357817202, -0.297796251553928, 1.0415794322065468, 0.27195785052081917, 0.8941462516437774, 1.8901581231152924, 0.16318485053532772, -0.42772830220525987, 2.22854455207779, 2.85934273014681, 0.620608819397525, -2.0773600718526932, 0.5102128857829208, -1.3425473236398795, 1.0664992078500592, -1.3978347586933288, -0.5082793586733352, 1.0293339145628106, 1.1953652639556394, -0.7592324149843712, -0.9927853948011712, -0.8401102070638347, 0.3955192048365272, 0.34215369871376844, -2.8791873832700547, -0.0421115170793464, 0.2803818171599705, -0.9401015854505796, -0.08972003336849564, -0.640338334227558, 2.0182530686564895, -0.7235603815620858, 0.6081345501547663, 1.7752306448722606, 0.031457706909880166, 0.899919260122491, -0.5364177308537464, 0.9954498087197619, 0.21059455079709405, 0.8203366802620794, 0.15551004552008937, -0.5905994619497847, 1.4571504499595769, -0.05879218788301025, 0.6116700031464317, -1.3093298447872528, -1.9790524548585495, 2.327922240143418, 0.5346029134452727, -0.2220392426765117, 1.0350931612437495, 0.579583179532083, -0.09395716249601935, -0.5606885258433681, -0.6916360198922066, -0.25495705935359947, -0.23051091319332653, 0.5226206406896088, -0.6035154511863011, 0.5592128760780101, -0.3223643795390148, 0.5138781656523993, -0.7592214987689807, 2.417337785331285, 0.17028885180838357, -0.18586838199027028, 0.40185795512569217, -0.5670525260070235, 0.14141128561714333, 0.536910685665978, -0.04468791360092496, -0.13107111869784893, 0.8500574802035589, -1.2986776963277358, 1.3299424270339977, -0.14883240827467462, 2.0486968982261202, -0.9909136952855094, -0.3600241005246587, 0.1602748303156346, 0.07168780603661637, 0.30202523579276225, -0.582835004754739, 1.0356927036283528, -1.0360800724687276, 1.993616236752697, -1.2365797403960304, 1.8548042098231963, 0.20499605949096963, 1.2010757276760113, 2.057751677950784, 0.2883899362101988, 1.6134203350119927, -0.9640624060585024, -1.1213275218434526, 0.6531743202785056, 0.2277981765470329, -0.8359861748374583, 0.5680057504067159, 0.28253652479051733, 1.1165497781562674, -0.5714364972858512, -0.09854463425203973, 2.395067138296113, 0.3316175009075528, -0.6884736402196919, -2.0231033737037047, -1.6070787249452574, -0.7165117692039605, -0.7553512437574256, 1.9280259690970352, -0.26733976223106926, -0.0673955495394241, -0.536406291194771, -0.7093789385459298, 1.744020696757244, -0.8126325347024919, -1.5969922983164335, -1.2686890383326754, -0.9291972010711246, 0.9031672530350638, 2.269233244076525, 0.40988533123157295, -1.7212576593177709, 0.7166427020983424, 0.3627363765292881, -1.5589258141736047, 1.3206137582172544, 0.22241582722694822, -0.5254557201726808, 0.4487811587655208, 1.4717430631656925, 0.6002964569533693, -0.7795697135851043, 0.610220453599741, 0.9796702201792316, -1.7646934144734967, -0.8420374077504474, 0.5166078996711738, -1.2752325216668503, -0.44546162876683887, -0.15696203458936964, -1.1862950949600968, 0.37408049529043713, -0.38524482721238545, 0.7842727318028115, 1.1538879916827052, -0.9454918159942679, -1.405125889371723, 1.0636457383418108, -0.7818062318843579, 0.8829476857079316, 0.8745221489151239, 0.6929310708225009, -0.39888705398196755, 0.9994754870230482, -1.666570871939696, 0.7961227485818212, 1.22745042848715, -0.6004867918118467, -0.5361669868684229, 0.4874774972013086, -1.890981268173993, -0.3938745167085202, 0.3139908715338594, -1.1261703254618494, 1.0966132130656288, -0.31621524862176864, 0.002668556331391873, -1.9226574720130702, -1.6380306920827867, -0.9710154441004514, 0.4763931829831273, -0.8587268321219447, 0.420689070376205, 0.6054083058374654, -0.7954680985571436, -0.20058537792435566, -0.19994075887630136, -1.895096099561938, -2.091666612524903, 0.0004974458415376117, -0.4080026099220151, -0.44867368855172923, 0.5700168037125656, -0.19142620469203458, 0.7614369056740486, 1.185949052557463, 0.6170757026559303, 1.650950629705662, 1.7703882319843902, -0.49884117664872785, -0.35212526236220854, 0.42973964778170143, -0.20813077355955645, 1.3420338787636203, 0.7397153430022654, 0.8838113044537101, -1.3377145615324746, -1.855416176565475, -0.8136295403887579, -0.7714846254184806, -1.2122365561438313, 2.8536471208979433, 1.3032022234889244, 0.4760756036980966, 0.04693766693045954, -0.5984449522911452, 0.7900271874549623, -1.969917184758775, 0.3503211304018375, -0.0008137206583593385, -0.6256281405885463, -0.3510577387659576, -0.13894191854589522, 1.199426224041857, 0.12132847331734303, -1.4608604499664002, -0.22948805550230816, 0.051902944512615914, -0.019119222645881905, -0.9757273564713941, 1.8473014772988974, 0.5263294510598043, 0.07053654437136757, 0.9547242579775002, -1.1278918446449648, 0.07734968673664687, -0.5799201931033439, 0.31678992899871267, -0.7432885872434457, 1.4335843287274053, -0.9465575672564711, 0.4879570553679617, -0.6623786574250906, 1.0259687873673153, -0.02932551729568818, -0.7891190307945258, 0.29564308636903597, -0.34927374642138076, 0.8136749201194545, 0.620245645223459, -0.43951272221042564, 0.46265400794768385, -1.869391305207575, 0.48193063531644537, -0.095540604007519, -0.16987767760770991, -0.19495692375454912, -0.08834646865917613, 1.2824833220745997, -0.13585649309388986, 0.6657305691375492, 0.6391954485208522, 0.3751449189250956, -0.19786418069226533, -1.1107085792532714, 0.16954868116772995, 0.0976102127373202, -0.22307281025633455, 0.5329264170127224, -0.7498434517605724, -2.2463793716496183, -2.030956619344538, 0.3469149176826813, 0.9569335370728702, 2.0063313680095405, -0.07729526178752644, -0.4820520883676177, -0.3642766707809299, 0.2721281447061126, -1.0173409588721802, -0.22291945275506458, 1.415842532715168, 0.3487504850213432, 0.3522443413976922, 0.9077850533771569, -1.0749257488285808, -2.072058608998672, -1.189733419675099, -0.5102992245699747, -0.5266987160364432, 0.38803217663099665, 1.2098862819236005, -1.0678208861159952, -1.6484340857205138, -0.6773093361468119, 0.19847908080770726, 0.43435982710100896, -0.06608174057217904, -0.4396025725464862, -0.06842865579333862, 0.0757461775588834, 0.945043974186398, -0.8271942633183708, -1.0171091372766654, 1.0045993947511778, 0.1215505686746317, 1.4850546815331578, 2.90124785320579, 0.9193799243970369, 1.4109003071198862, 0.9342714574384375, 0.7408981122108215, -1.501451886644788, -0.8528561599738412, -1.4502786649323292, -0.060333190180409904, -0.06215199874022316, 0.6962114020423124, 0.1737374420722428, 1.9987164641082087, 1.7922666332582982, 0.39258330183185886, -0.1955663537656974, 1.185062371327038, -0.24969600604011072, 0.5062590514320574, 0.7374924629427219, -1.0887076741188921, 0.9197089124134338, 1.4198792364404926, 1.13966263395932, 0.8820726768303652, 1.1454947730219187, 0.3830272308939737, 1.0330281295592512, 0.1958899672744909, 0.2610941691615629, -1.6928895703415128, 0.08949085370524765, -1.6099870201619317, 0.6146813355739139, 1.0232681185457035, -0.6120020584064751, -1.0855633146564565, 0.9035218354603602, 1.199279110133032, 0.21247320768848982, -0.8276719054682797, 0.34353353507020123, 0.7795065425753578, -0.31690501369321267, 0.08404007020790137, -2.0217996637419504, 1.4723540101508836, -0.5690532461968705, 0.7600008532793323, -0.09696213550941978, 0.49872412917775666, -0.6501714914135994, -1.4186463922997374, 0.4572717163404996, -0.6798540159722049, 0.8800683478695012, 1.1617475981837795, -1.2832223575262358, 0.01811044220476568, 0.5665224930728516, -1.7263899334779662, 1.0788518344074862, 0.5214662704113713, 2.207851490608375, -0.8847331619490723, -0.22393893146647295, 0.2604924986511237, -1.065720378325982, -2.4784405095403583, -1.397338674255014, 0.12733886071252698, -0.962990797187108, -0.4158341820319732, 0.8295084980828852, 1.129362539634652, 1.4448964367746397, -0.27202686813738103, -1.1376577043818543, 1.1669873661563108, -0.5526532153140147, 0.17431258922451653, -0.08674760587893786, -0.02662111271639052, -0.5787298408624987, -0.46418731609632075, -0.7338887598113502, 0.0037124668666011543, -0.4390315224865612, -0.5445053993271162, -1.1731970859703744, 1.557358039479812, 0.8235296531498106, 1.3403087264740343, 1.429798559996883, 0.8488733195590197, 0.6549815456848764, 0.5939979568631141, 0.571492357564412, 1.2838646589587073, 0.1968309175885564, 0.0125526247658802, -0.588379978175527, -1.459242663662794, -0.16058887298258492, -0.30513433025622483, 1.3958505210549053, 1.112993202632025, -0.6980224325960035, -1.1242172376210566, -0.04898442309094625, 1.7267743114344978, 0.3596144012700469, -0.359544416669036, 0.20255944297423273, 0.3676083732835713, 0.8149334833372205, 0.9572709382349587, -1.4303046720322652, -1.9840617027488057, 0.8352543400425974, -1.6685708178136907, 2.264358935950376, -1.1013820170238586, 0.6513073416660541, 0.5222811637226092, 1.6332065112971001, -0.18689854597886257, -0.8293836626550278, 1.2200036287220326, -0.948302395460301, 0.6269276746157323, -1.8413847347422614, 2.975492133500898, 0.5732253342246594, -1.876866690355531, -1.4492981424636866, -0.7472606420064576, 1.4876059940278459, -0.18934308720894036, 0.13020040181367357, 0.5331924552669381, 0.9913637676227545, -2.6437681894231435, -0.6461446779487539, -0.8660236542618331, 0.47452405238110584, -0.4790606483008819, 1.5321216571398668, -0.1636651452718229, -1.0332700298347521, 0.9892360243254097, -0.6416390065504894, -0.604900108391799, 1.535151051934949, -0.18334305957155458, -0.35686131551458816, -0.3292665860742744, 1.7738534285950363, -0.33142178700758057, -0.6235361522388553, 2.8510918408680124, -0.7318379837818061, -0.6194976835634578, 0.8118142867300344, 0.43758672808479837, -0.7150266134830248, -1.9406394619639358, 0.8679359705510734, 1.4354983174276066, 2.182868585469132, -1.1741764376487758, -0.9331282790464878, -0.2820770772397286, -1.9483310573156807, 0.31916263280850626, 0.6390360973776629, 0.5428826848071413, 1.5065733412421733, -0.47412499801799024, 0.2569777134684139, -0.18464959701431985, 0.707300443390559, 0.16960249404796737, -0.4185489493255141, -1.4509136246246903, 1.2609714707832425, -0.048585931918069494, -0.7466175012069378, -0.805144923911586, -1.6081696632587419, 0.2108448776087118, -0.626995367880836, -1.25582651238933, 0.03382654045677089, -0.45889090147992845, -0.2896301303848118, 0.4922810729687261, -0.11561150744781683, -2.0656398984212156, -0.15730996466261546, 0.7768976641774541, -0.7044791153933941, 0.8524501556338853, -0.3340090119288742, 0.08640562469139157, -0.059343641632369076, 0.1619562886451128, 0.15046570393731748, 2.7590525887014667, 0.22065232253703387, -1.3774088537570648, -0.29499229105904573, -2.4537835279476146, -0.8341158090629236, -0.43274207019506117, -0.14358452337381933, -0.8677025372132973, 1.0347284219371276, 0.48707383897255696, -0.06866257813543919, 0.2937618607534383, -1.161359070554741, 0.21001598604651528, 0.4159405289601604, -1.5043005890504582, 0.7372524407400997, -0.5334658384258053, 0.2567239585606655, -0.6299751233419266, 0.024035161278926437, 1.1244580271586777, 0.40836377201711715, -1.8739717517634698, -0.26853628794603523, 0.37761170331094157, -0.0050819767759484056, 0.009684786386250501, 0.2636875321138984, -0.08553945533113934, 0.33475288490766125, 3.4237712468503103, 0.744628978129671, -0.9096458649167182, -0.6827694846192245, 1.6425500385797525, -0.3900596403135759, -0.9509348833512404, 0.3229857369820825, 0.44175525248542286, 0.7931445181078505, -0.06988463350772384, 0.6819214512912009, -0.06839741587635721, 0.4734557044072717, -0.9215746025534817, -0.6195377638236638, 0.809667872762421, -0.4103668947560523, 1.749809215983805, 1.001647179219911, -1.7659243403508436, 0.15383957509758237, -1.2779831760745572, 0.2669263499455465, -1.4256436904962992, 0.040903466313536106, -0.9342945534262868, 0.7618231087000356, -0.30058739646889815, -0.5446714593776727, -0.4802089660362259, -1.1432227238603179, 0.5174957898345334, -0.26915089392842423, 0.3387263580347474, 1.2480509452812811, 1.9521841872543286, 0.9788396157168914, 1.001353646981955, 0.40906237950521346, 1.2380051766092655, -1.1622188132692055, 0.03880070372652659, -1.3157311036080868, 0.21159132832002855, 0.8251757971684041, -0.5943198935837782, -2.059249774668197, 0.4455096569146938, -1.5530036453685645, 0.24334104727505046, 1.9679440499519993, -0.14949638764508505, -0.1787890634869671, -0.8694565617159877, -0.02701940155527667, -2.327140574554701, -0.3493894186252125, -0.02711649643869937, -0.2125855163161856, -0.8626785926902893, 0.5125620452253108, 0.835126803441082, 0.4370304631746852, -1.4380277943151216, -0.15463871080474192, 1.427347151863727, -0.03594236427723813, -0.9987807222089615, 0.15285084511988004, -0.4453218737326093, -0.8774506171339351, -1.1301294572944445, 0.27932962145356316, 0.666378400360196, 1.0765917423686246, 0.2439549047998887, -1.00859364816552, -1.757528113553421, -0.7922512836603205, 1.4533777876325222, -1.508283926364581, -0.9454297378995183, -1.010459444419853, 0.0754147254586834, -1.2810537542822706, -0.7736354580243704, -0.811961379205231, 1.3638217257964536, 1.077496971491708, 0.5810375830537511, 0.3551271969105679, -0.043876281219692365, -1.0850332393056394, 1.109609770945844, -1.0337911892064604, -1.8807813444109054, -1.2265714811977597, 0.3936172157806796, 1.0778363941578806, -0.8644861643567047, -0.9521061052105131, -0.3765845085538441, 0.17855829086113095, 3.5953876986672255, -0.8488543068716493, 0.3153960860722241, -0.4124980314658376, -0.25957042793288443, -0.47466672457489073, 1.251745108485312, 1.9089401526170708, 0.08093711755806289, -2.256777082059624, 0.324177164165908, 1.062105790670867, 0.2886235312894662, -1.2983305542602077, -1.5005961252940438, -1.4260396412546816, 0.12572172650108407, -1.371518218990482, 0.5998645930096181, 1.2473531605780193, -0.9358060344486432, 0.49295286102524044, -0.3494884497630849, -0.9308402692062906, 0.3630283557686611, 1.7611911540817928, -0.7229213248269448, -0.4323877136781272, 0.09012216684853104, 1.2693688025965613, -0.05609728003750563, 0.2942911094966865, -0.7311965810915613, -0.21592794240105817, -0.4553253041620339, -0.13454483357874214, 0.3803586083160361, 1.2706120469339364, -0.868299098407261, 1.59925697493435, 0.5433594960509881, 0.5675579810614343, 1.9203285366540146, -0.5030970822643847, 0.8421602450844566, -2.316838061301056, -0.4201799135308444, 1.99145358910135, -1.1698739038813457, -0.48526560569590693, -0.664516213841126, -2.1784216925774254, -0.05592421534349575, -0.3735237580415768, -0.22461780649945687, -0.6015415198184665, -0.525149213451578, 0.20817264425532928, 1.0421502948740846, -0.24223189745187212, -1.5453453515930158, -0.565952007041841, -0.453301777620275, -0.26956499012979956, 0.6612001818907256, 0.6566383906736746, -0.7620891486112908, 0.4039229699126195, -0.03287499950025958, -1.728025679680301, -0.1351648490652594, 2.979844425070889, 0.21407749737048995, -0.41165660712793767, -0.8911684286042895, -0.49236046031915226, 0.08810619424950021, -1.4051338603716423, -2.3224238004285707, -0.3410883214075715, -0.12686282703773566, 0.23609553256542695, 0.23545196849666264, 1.371312887239788, 0.2318653380046876, 0.08464059182127714, 0.19008151199377613, 1.7562161679995132, 1.181971977987871, -0.8172519034071913, -0.31575932783054717, 0.2503737947188051, 0.028618079946139307, -1.723439924093865, -0.7885161782185284, -0.594263411951702, 0.5644435285732619, 0.8811148239408805, 0.7833035854562042, 1.0392171119322082, 1.8371154985886862, -1.2420591801850245, -0.23753657646460405, 0.19313774990116925, 0.5053866496884525, 0.3283028032403514, -2.225396433305001, -1.096249407991655, -0.9149883628966105, 0.21230053589695053, -0.6023002440801871, 1.4512382841053386, -1.5038113250304717, 0.11558860384831522, -0.06338166413389325, 0.22201020504142566, 1.4399368526678278, -1.536144263111769, -2.717778670757182, 0.1168039138752043, -0.5866181500734327, -1.5377442224077151, -2.0944415177169953, 0.7870016058915985, 0.8949404757727989, -1.2488701028525535, 1.8425900504983932, -0.8820586551654293, 0.31200772222466067, -1.4538990075976945, -0.4972028753925732, 0.30783322485667264, 0.534974938780373, -2.0058475112711514, -0.4541796977906028, -0.5567288589208035, -0.7063829736735863, 0.08317733846151737, -0.9039919874880522, -2.359353503098415, 0.11425878193276912, 0.64706666019578, 0.4359959376210403, -0.09281069482301793, -0.5382334133878951, -0.633983343063867, 0.49835413266819356, -0.6176307398455463, -0.58828999383318, -1.7334295099492802, -0.8643497543156821, 0.689824201173873, 1.524711206099055, -1.548684848469057, 1.2284263304913572, 0.19868751298961676, 0.11836116797672853, -0.06310268278090121, 0.7479073753397237, 0.19168429076964602, -2.501823109461287, -0.673945501033193, 1.2235988334078434, -1.1636116702452202, -0.22624467871026605, 0.5071009399593757, 0.6279007880533118, 0.5692262629524086, -1.7255159569914225, 0.6397252376986503, 0.23342621054073684, 0.21399479954715414, 1.1788921695577175, -0.4946728962147127, -1.8310549540520982, -0.3690830035843751, -0.42224783195423987, 0.32423026673778105, -0.4402301947763417, 0.7465865033369634, 0.43199223950922194, -1.939062107304355, -0.10453191019598392, 0.8153426406136252, -0.7800663274052761, -0.4477465519532468, 0.01545038682624204, 0.39608506375087277, 1.1493902335657455, -2.130104535188091, 1.1476608122361165, 0.9320022617397814, 0.03568906908977818, 1.4420580869170465, -0.5372177387698984, -1.1864962493216553, -0.5500096460519907, -0.763791941134191, -1.697389937955057, 0.2998477603655102, -1.3941268553154642, 0.5706575386796322, 0.7831976119427991, 0.28018300766602294, 0.13693472548612742, 1.0154445987056024, -1.1860807036684393, -0.19007920263882952, 0.1523832525182091, -1.2093360312349437, -2.100547843467698, -0.1530333323078057, 1.1971503331114541, -0.38189865297027337, 0.7916834209392376, -0.1728944869857963, 1.160481352505748, -1.0427224611678692, -1.040602541009036, 1.8273660232377136, 1.4195569065800453, 0.8386877142814951, -1.0778628423584962, 0.3469301281229362, 0.6711365751637789, 1.1526892923346204, -0.18194736753591428, -0.19855569336096057, 1.688961038095004, -0.8745505869548725, 0.32284669288734297, -0.8259830110426495, -0.3611221208798455, -1.4195164842808716, 1.1907305012760756, 0.1522501461827938, 0.922469684257407, 0.016501336648811274, 0.7429642513221194, 0.10750421501190041, 0.4808356602618045, 0.1323677945856938, -0.7034274377386549, 0.09645911224015045, 2.532325541632594, -1.5866221126564115, -1.971084122083064, -0.13301270859207348, 0.39343143403797187, 1.3390674367668436, -0.747255398772972, -0.16290875300595686, 0.4979804345513483, 0.08795913929250766, -1.1826687439735564, 0.8708434312878163, 0.10036766629128512, -0.5580601750838238, 1.0076432223870029, 0.8554191239588586, 0.5698707282163747, -0.20863591717796462, 1.3123618498586958, 0.820266660992923, -0.05334598793633222, 0.10738590560666669, 0.7476571054869932, -1.5691946737355327, 0.8999837788505479, 0.038792413114335636, 0.9914820089613138, 0.9465564741859593, -0.9548035752110309, 0.37108183095020375, -1.6932708709240643, 0.5742732453192894, 1.1869006875492747, 0.2555908214103616, -1.3999854653788708, -0.5270366881316677, 1.8409181821652891, -1.7547244042030132, 0.07405473692919617, -0.14925008749413637, -1.8439449535735588, 0.3444816081051852, -0.2983334069128005, 1.38335867526748, -1.9630063235244388, -0.5193463961965822, -0.11562338831110575, 0.352400820758953, 1.6482773735238936, 0.6711383514595195, 0.2238366057536359, -0.7182362270286512, -0.35435416471609005, 0.6485877172023825, -0.2757466733288484, -0.3563016808385527, -0.17817414950901492, -0.0019081140052624073, -0.39273602229275606, 0.06348346009811161, -0.8742437683710312, -1.8689872110353185, -1.5147133895052636, -1.0184612409555949, 0.18139626346512772, -0.7129650139254672, -1.3195899155857833, -0.21170557963600709, 0.49610977046001814, -1.107773982297535, 0.6462111934112551, 1.688912150364615, -1.3591299269239323, -0.7475464904708393, -0.9405677474521547, -1.693588315970276, 0.20250426856488513, 0.9856658198526146, -0.44166427943855957, 0.509830562978939, -0.5991965310798085, 1.4973252224613436, -0.5546344165085834, -2.2200296733850635, 0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967, -1.6848834226351845, -0.468054031300935, 0.2231411040063078, -1.2079120248207287, 2.0110030501455016, 1.4453850086239999, 0.34059707215507334, -1.8213959334958643, 0.8699402772722297, 0.4899667100861624, -0.01173787871675348, 1.1948559206670855, -0.8870269587625144, -1.555705163842219, -0.26533917383348415, -0.3325290424739039, 1.5977665804314234, -0.41203089860517084, 0.49183361850554513, 0.5136570154037132, -0.23309124875198506, -0.7998287164209388, 0.530066185314952, 0.47106304564421286, -1.0105968114955957, -0.8353508972894879, 0.12377709284481839, -0.07289187751377658, -0.6735741109340289, -2.0639344018430106, -0.014438189818046943, -0.4713457882035365, -1.3988791318705927, 0.7076705525000143, 1.0974072497097722, 1.1672671573256546, 0.5553099499949979, 0.12122031680888311, -1.3280507129101098, 1.1654608124772015, 1.3139075127865134, 1.28261825548601, 0.8583778828163117, 0.4508675701062839, -0.3773168693728364, 0.16884703765184494, -2.5899418769593017, 0.8980383022257733, -0.7871723126611332, 0.008146263601196916, 0.15100042746757067, -2.158690321719755, 0.5154773443584927, -0.8968793509306945, 0.12745529032276473, 0.3057102963260676, -1.127194036956006, 0.06889018035163645, -0.29649779158358486, 0.4000800574133786, 1.3294197922581654, -0.9809012577471112, 0.2604706024238921, 0.5802535538390949, -0.7974783258128166, -0.6640912726671294, -1.119222930304624, 0.5834025731102502, -0.25723586541301474, -1.618253196199123, -0.0570695619599075, -0.43841397343582966, -0.6767231131676439, -0.38371376805174173, -1.9996328333376983, -0.33850140623335534, -0.1183524981649774, 0.005796690030477999, -2.458306016054147, -1.099750705180441, 1.054860270281014, 1.1651235359219074, -0.8686068833819991, -1.4001372299430193, 1.1272944804074991, 0.03719751404379593, -0.06732456664178753, 1.0123217113273348, 1.396494377415687, -1.114892120467897, -0.23680354926169062, 1.1762829232717322, 0.35544788004728406, -0.41986744728203046, -0.3867023929082546, -1.483298749076887, -0.566334552372417, -0.03321061530877886, -0.8527679221181403, 1.4516682272189547, 0.7320822341298279, -0.05200885253027685, -0.9525949548843667, 0.5751795467491231, 1.178459960930901, -0.10762850518883417, 1.5651830651133336, 2.1380607452390663, 1.2280945171647695, 1.4042702000856067, 0.09325784801982663, -0.3557970327475224, -1.073778288097418, 0.8968276612463406, 1.399133831515596, -1.2439663723417378, -1.781799686206601, -0.33427106612358554, 0.889230360742913, -0.41170088971799085, 1.2155279834457413, 1.600649868770159, -1.6424774434123148, -0.30897369601229935, 1.047363878453214, -1.0791866371859211, 0.34680511458320423, 0.9927888544576774, -0.8514984695838704, -0.8372280244524042, -0.22804642016295132, -1.3868435427851724, 0.7441016059552877, 0.06972829881636747, 0.3420780025264497, -0.04386730461990216, -0.017778941397242242, 0.6102135468147727, 0.1101978218029996, -1.401046648194382, 0.6208120606616816, 0.26306079867835747, 1.6277476977056633, -1.4148077742490233, -1.12911289812443, -0.4018145604094114, -1.3755867441903893, -2.399920233063965, -0.020319571626188252, -0.895842610909627, -0.3494298955785707, -0.2738387174328631, 0.34922230639219626, 0.07109890321458032, -2.4101191646725644, -0.7411692543552041, -1.3233841458208606, 0.6863453426487733, 0.3632155343313335, -0.5590033258828403, -1.1449685446383917, -0.7258003922221851, 0.278797530701865, -0.3441402294664407, 1.441339424212574, -1.2335052347473323, 0.07612868920434228, -0.4241597163106437, -0.05332877983539378, 0.10099084201256278, -1.8787758687909357, 1.4045284087841965, -0.04347827565492549, -1.2990797348095602, 0.6319627183761264, -1.0748380347638893, -1.280830568026441, -0.4632576940943757, -1.2762157345443148, -0.4871099169463196, -0.8573516675952042, 0.2602500067557723, -0.663512812580364, 0.9193611678505703, 1.4195120671985408, 0.31768737978504635, -0.22676062071355782, 0.7472485772463154, 0.33979457913367445, -0.024989366536706515, -1.1780091950874647, 0.8422172106604986, -0.9853850143769382, 1.0084091587937258, -0.5446586568124329, 0.2287236140419025, 0.12649973956792954, -0.8624432460024017, -0.2042801144909528, 0.8201641258212513, -0.8429169760408267, 0.15786776211979775, 0.586990037118922, 0.7581270686613231, 0.13813966047716805, 0.14287983497159015, 1.542247836275435, 0.6889352238499454, 0.3790751131802156, -0.36007691647378387, 1.5453032787583676, 0.4475231964904419, -0.06905081640069816, -0.2556692520813782, -0.6423795723912976, -0.6500078649365075, -0.6577072095504994, -1.4866829628942408, 2.5030140049559653, -1.0572143847418314, -0.000571660449572993, -0.042894005602608545, -0.4591852328122149, 1.2843268761512387, 0.3968454779394536, 1.138745996685296, 2.4071733886455227, -0.10540633867195442, 1.2714215049136428, 0.04757946360595818, 1.2348108652417815, 1.6311115642560317, -1.6302649244099794, -1.2745470694966483, -0.8131839077565575, -0.6825393122927416, -1.0794370197645617, -0.7204636565534043, 2.1467941519636455, -0.18535362890328835, 0.6625127934408671, 0.38979365484662193, 0.7719784843101606, -0.4958538436662962, -0.658575404725063, -1.8250261743740281, -1.3009369789521832, 1.1569797741579901, 1.0803875458840382, 0.3519814471093802, -1.5678550885987372, 0.17700126122173684, 0.19570581803986603, -0.9713133420910822, -0.40681730492260765, -1.079374837348168, 0.9333820675088979, 0.7164115790249227, 1.5974993677559646, -0.27698287787067033, 2.0383895476075855, -0.6836849892211939, 0.8311193676081333, -2.4241121219014663, 0.31596002357495434, -0.999473279382509, -0.262687475352513, -0.46071381621370666, -0.8976883600787323, 0.5219272929937467, 0.9722622620644177, 0.552832436548929, -0.027467290841698567, -0.6107378749038481, 1.3506129449321138, -0.4521398968561788, -0.22117060492964993, 1.3204666166460701, 0.42542027990331455, -0.19467559818902735, 1.3362817877824478, 0.1643979281153062, -1.613150980719597, -0.5326178763831365, -1.5741387694417994, -0.2358632094400509, 0.35096623923842685, -0.40087086833885227, 1.547569381699142, -1.7090186764224344, 2.2199280575728784, 0.7516533958698258, 0.6804837145322774, -0.19556806995297935, 1.3537057525493934, -2.0138393066087383, 0.172351936169543, -1.7024086384702934, -1.0519290071418026, 1.6258351842437149, -0.11856858846558817, -0.8121335733777978, -0.02927583999406098, 1.548105034805526, 0.6981009969478109, -0.990277098683295, -0.15604117684813257, -0.9747927516511783, 0.4652704424950469, -0.31289780730884004, -1.651056798736739, 1.2755967903796157, -0.13648504411430237, -0.48481306969894616, 0.023313382404551213, 0.48504298344685315, -0.8507882704201493, -1.039212404883905, -0.653701398776706, -0.5189768622716721, -0.12449303534256825, -0.5128172446702866, -0.06818346256734656, 0.510667943805758, -0.20971767447744363, 0.7975878663589364, 0.3042695491801, 0.2654566914993375, -2.0012906991903865, 0.413870629899118, -0.6025010011948203, -0.14082858261327996, 1.075340195058932, 0.2593371488480129, 2.62922759693777, 0.3324210527578405, -1.2020419530087723, 1.1926421271709948, 0.2347858166167028, -0.9756048534996443, -1.8200265368846862, -0.5169307203823522, 0.1500518697766681, -0.038484274917838325, -0.5595155602432803, 0.7826664898369591, 0.4484219149387221, 0.29541985156163897, 1.3984689244673294, 0.25998037440140653, 0.42332643185294355, -1.2422400480672728, 0.2176902105319219, 0.728761958261402, -0.011206770084421624, 0.42373795905496436, -0.0772966783872132, -0.1844058501562145, 1.5231610698492861, 1.5815719719777372, -1.0224998294567542, -1.608411795245145, -1.8940383890496493, 0.5392647246180361, -0.9404210876785811, 0.24515734401955552, -0.8758837658412391, -1.528076170772824, 0.16773671218212843, -0.06372312245930913, -0.6625850298997638, 0.31931330490352056, -0.7703083579211024, 0.369010898692774, -0.9262558726002627, -0.021452503506505422, -0.6884402260487072, 1.5154027937733978, 0.8284697701567305, -0.07697958106921719, -0.4538814926580921, 0.5439309292438045, -0.5492443043774654, -1.220225030532012, -0.7053512461796413, 1.632643282613422, 0.5778426489678986, -0.9229177377752995, 1.588544297460673, -1.7481169305157809, 0.2618776316461439, -0.7711250331583439, 1.4721431859882452, 1.6321252809774605, 1.521708343024266, -0.46073261039758234, -0.7747734720993155, -1.3354599996427268, 0.9861401026653767, -0.575980258880269, 0.0853876730028182, -0.6195540436182536, -0.5432771078257063, 0.3060459872354665, -1.824118723913547, 0.8784176817828129, 0.8097094976615903, -0.361780627962229, -1.467071190440473, -1.8907115007272879, 1.1242546008439889, -0.4974181028535098, 1.829441455586246, 1.017979249905673, -0.7075497604105697, 0.059183606525579274, -0.13056990600722507, -0.5832122715205462, -0.01409309201012074, 0.016108610412205803, 0.1900118760884006, 0.24188780949423172, -0.8882450727066196, -1.3576659214518099, 0.07447367725510536, -2.991099769542917, -0.6488322635921112, 1.8595982643945574, -0.702641433986396, -0.6416959601570708, 1.3390388750212445, 0.057488906459266735, -1.808725561176733, 0.2948187135806436, 1.1497414866629478, 0.8709941695277267, -0.2850339815191343, -0.4997261831464098, -1.4398917507631508, -0.2148727154738073, -0.031164729254402425, 0.48150661412660234, 0.12415703923674576, -0.26613703422724105, 1.0565002395567262, -1.6752860867796824, 0.1869147939846373, -0.7272110183291539, 1.6245102578872348, -1.3773924349992401, 0.14296540214244555, 1.4878267201868336, 0.10331510654880505, 0.9062060348158155, 0.9324085143967664, -0.21818888199568304, -0.2522508930003547, -0.8562525871887124, 0.10204130138311729, -1.0184106320915587, 0.1825164284873822, 1.056310703030919, 1.7552903725196911, -0.12454007621445604, 0.31880532192621097, -0.35541825354040035, -0.8580393155101081, -0.2682711254651047, -0.30783295275138195, 1.3170139199898268, 0.7531186614185573, 1.192570085627795, -0.6615475858876328, 1.4991876630051717, 0.30861856418442385, 0.46151436623585584, 0.3960375120229514, -1.5852068567014443, 1.9903541747766398, -1.1185087223822021, -0.5183442785156127, 0.06782511507671637, -0.13813126796841926, -0.8649990189511263, 0.6978353775870149, 0.16085392211498364, 0.7383270750320552, -0.6856342770612354, -0.6045226539767258, 0.8110514204550441, -0.36508901079756473, 2.2802828142762928, -0.7663535452926638, -0.3887166303815122, 0.9034427218611359, 0.21868488058095606, -0.30457226174639157, -0.287175489125426, 1.3568449350217864, 0.39711905418048105, -1.1763187968954603, -0.33474769656895564, 0.917254226523988, 1.0804852401399638, -0.9584787505991971, 1.7478622379080422, -1.2473029790869914, -1.982585782186715, -0.41852445481952294, -0.9465815043529053, 1.3486167490991765, -1.3147522922373933, -0.14921512592164993, -0.6510935828594568, 0.009685462499594857, -1.0764421921168665, -0.12975724308626338, 0.4720265080850217, 0.3117809833804109, 0.8469168005900016, -0.520242573974674, 0.27675686046474957, -1.7178145403893597, 0.439729002709256, -0.30048055544717606, -0.6302171098523444, 1.241050608643494, 0.5721350887681553, -0.0022023636536079735, -0.4924114110139152, 0.9950463422748212, 0.9816810712679719, 1.9924377989279343, 0.03900009491657034, -0.2935571188258591, 0.1266892245615102, -0.715464769225636, 0.3145853867440553, -0.3835873169761903, -1.0953446648325833, 1.0121232148460444, -1.0957236224096085, 0.17063463111383734, 0.5102992173497909, -0.3658969046671184, 1.23797611806204, -0.18059200075977175, 0.9936325102325779, 0.18430235850671245, 0.16517189020344797, -2.016269812957052, -0.3616199185761283, 0.7527532999342817, 1.3277176349050535, 0.2920534284459897, 1.0606099435377094, 1.848598832091733, -1.3301443272735525, -0.5759958625549068, 0.27878675140631204, -0.2315083920631258, -0.8288316208067809, -0.2635580627160318, 1.3355871376746895, -0.8117302674348011, -0.23432703924765444, 1.92799930513707, -0.23101856846075614, -1.4238524703136513, 0.1368000358051577, -0.2055684135567207, -0.15855445409422964, -1.2600442043395892, 0.1701769006730323, -1.068866010850334, -0.1904292641612836, 0.5892434527813512, -0.2157459392172624, 0.4055498592698905, 1.6497067243577175, 0.7890192766736421, -1.044353487265588, 0.7953139847174688, -1.5740154854045074, 0.9665654379132748, -0.3889094455704384, -1.8426397459593846, -0.9001191779220159, 1.7045921258988515, -0.8923330121142684, -0.5956915482032328, 0.011227289589172133, 1.7111591357647962, -0.9587860284026688, 0.7548194520215976, -0.32603844480628175, -0.2353359336920787, -0.16729381132141224, -0.6023878547302806, 1.371156314999161, -0.2459473828028695, -0.2620130902224386, -1.2172056461838572, -0.20656000988613168, 0.5008110746890201, -1.4028780271648753, 0.7193747259694553, 0.0660307754939295, -1.3093771377458805, 0.407051194515542, -1.1823392140768092, -0.4019555472426395, -0.26250820888118304, 1.2702869545254583, -0.24272141574465245, -0.42155102572483116, -0.05194109601117269, 3.292873619493133, 0.7890333104486489, -0.6211877906484109, -0.8047810389893006, 0.9678567436130486, -2.079988930109922, -0.6016769585932343, 0.12364670959331653, 0.7229553379296235, -0.5227730192140618, 0.023991105176350242, -0.0017528334343272331, 1.2586605379107056, 0.8446327540395329, -2.252502331262609, -0.5270068966745032, 1.6223796347828976, -0.4278645067985037, 1.6333830568090013, -0.8062257833307152, -0.30685337459460577, 0.3507708774563464, 0.424527526741457, -0.03735386264172313, 0.229879937036083, 1.1454140027646036, -1.1872670475847902, 0.6262020869197982, 0.7589488691885292, -1.6862092963785988, 0.7944545737967115, 0.9971081922053232, 0.7560471613916118, -1.1851981001821967, 1.0965175918763284, -0.46530937265986, -1.2761702411382863, -0.9791491731581209, 1.1589807765966766, -0.8156014346461856, -2.8072546995497247, 0.5334627416087777, -1.3798149493182552, 1.3972706448160608, 0.4552374166958973, -0.535433943499853, 0.8920580452737524, -0.5856331944062472, 1.7623274652492553, -0.2852747983665435, -0.18313041510663963, 1.4659299617833124, 0.1519470164480292, 0.23355499681619366, -0.836602381173288, 0.18618502715241547, -0.08859676768441688, -0.7180391575300691, -0.36232537769580714, 0.36477740973605915, -0.9281105879066266, -0.46197664970984853, 0.6483976493075976, -0.3812217162848902, 0.4303579894467762, 2.0043530514779873, 0.39102979400332366, 0.37534637396631415, -1.071734524715999, -0.16045645113900145, -2.998145904788263, -0.36470187389744846, 0.03991547011616779, -0.7008645685896715, 0.9912516955548382, -0.7450675439952815, 0.3264674970899282, 1.601666916097199, 0.5405397248625541, -1.1861306612606524, -0.522172803007203, -0.7727094284088601, 1.2277562505941912, 0.37759283992313625, 0.7444682278368736, -0.6522853231400494, -1.0696424743836717, -0.8054574164094268, 0.905380130000978, -1.1121207299686113, 0.2063449976062078, 0.5176153181186626, 0.2301751658467518, -0.17968415020039138, -0.5804234791794292, 0.522042470813759, -0.47680230351950187, 0.7668678996668346, 2.1152176375874023, 0.4635399730851282, 0.7692324460373827, -0.5214713943997042, -1.6311809160767827, 0.7017462722924709, -0.31859839125881545, 0.20304228378387937, -0.18790051825211995, 0.18432739014512065, 1.1541296937922023, 0.4450818568868103, -0.13551483948610296, -0.2758105920455811, -0.5849315949646472, -1.0646125679003637, 0.27411289538745437, -0.5032261617196119, -0.04351057134624247, 0.7743236339777182, -0.6756715811861062, -0.2671752620926679, -0.23914374307205996, 0.16461452793247355, -1.4436309225983486, -2.20506341329235, -1.0189819575984795, 1.5608022939480573, 2.31499985378701, -0.4181529433643855, -0.2711132087457424, -0.7206084096900425, -1.2504073094445143, 0.31340429692041716, -0.1447897506201982, 1.1850402988106572, 1.9541706849775027, 0.11232761778850357, -0.4382234425091706, -0.3947615339868321, 0.7015762348678443, 0.43950731587232217, 0.4486281613565141, -0.33259394965579864, -1.2893276502905346, -0.5665027824228605, -0.9867864794525018, 1.7152028381164288, 0.7425175887812803, -0.4541542908237512, -0.04974419881485532, 0.7205327224864219, -0.49642760570489125, 0.5806736618394556, 0.8088452773706619, -0.15195744367862507, -0.12096553277305616, 0.6220396950025358, 0.8874367244840082, -0.960123924615042, -0.2512769100863725, -1.3487372983592427, 1.9195263893870158, 0.1391130058484598, 0.3556392382753691, 0.022946113835703726, 0.06403402028906036, 2.01431714516637, 0.9153269759513197, 0.45535078555080316, 0.8164902531014034, 0.7554878281598991, 0.7302943512899034, 0.9227450720901643, -0.2149435624765486, -1.9175638929241665, -0.47494584965396475, -0.8209686635530825, -1.475086806478942, 1.5375697346337323, 0.43409387407100747, -0.5748944134752534, -0.1207717673708367, 0.10757938709427231, 2.24973612340786, 0.5656573548928321, 0.7510332313304937, 0.2925755284670311, -1.1385387437599415, 0.9278383480094607, -1.9329319879816766, 0.8833452963447278, -0.9531724053699292, -0.1039290425260258, 0.4382286101469634, 1.8998623656623255, 0.19200494459198952, -0.6716950287224315, 0.5638093918454188, -1.6242049283972644, 1.7704636715303947, 1.6534314391102312, 0.92655666075164, -2.1666623771571185, 0.3089037330906556, -0.34387294467445684, -0.17869075221031164, 0.45228978471381315, -0.9526180775686287, -1.1784311215584218, -1.4588182758831976, -0.3751354576229393, -0.3058513410728059, 0.9384734481636833, 1.1326237644059438, 0.12950394282796612, 0.7421113354249786, 2.22774088023295, -0.38297985887788083, 1.184609638956563, -0.28900852784476955, -0.38476787730344003, 0.06257594537962448, -0.8447175394855944, -0.3276448761445928, 0.9520069001238655, -0.7029145751675628, -1.6244073387265128, 1.622978343226983, -1.2795553886248943, 0.2494267093436905, 0.6236424924999387, -0.04290636875881789, 1.8562326434548018, -1.3390517668015733, 0.5090655455389611, 1.2848563335735044, -0.5387392229559257, 1.6741064751678032, 0.10066535315992477, 0.8949591322162106, 1.6846660415357275, -0.47037844642707904, 0.4157622049238856, 0.540404845364168, 0.3967936830533677, 0.43668944123398024, 0.2112361885627918, 1.185672884091169, -0.33641286222705097, 0.5497594019101291, 0.12465203566067538, 0.38350811363315446, 1.4507326394999236, 0.14723038127353738, -0.7869045408490771, 0.39357209249435554, 0.9743220259735553, -0.06453115565194864, 0.38254243983530506, -0.8643740939583053, -1.684728335866361, -0.20622146179421566, -0.2747979191346741, -0.07028871827775147, -0.5729020560099904, -0.6189757445377713, -0.1510371111896753, -1.1820077963068163, 0.6043354866597276, -0.9774217378587312, -1.3380178663597784, -1.4201147833071752, 0.18880445993987796, -0.8427639940831457, -0.32186427356745245, -0.006664725012722541, 0.8058032956183504, -0.23641847937920588, -0.6756647705708424, 0.4773883748212866, -2.185477701275724, 0.7531165422993013, -0.8203844714762077, -0.4004758384259698, -0.6468022951980026, 2.2667765095579213, -0.1464154957378096, 2.098114036236069, 1.0184508455410493, 0.8103126555466662, -0.40972058902905745, -1.1414090507678094, -1.3867326701405396, -0.4507753555588849, 0.10028961530046718, 0.13126844765242035, 1.8046340365305968, 1.0498294815194782, -0.1970397367331956, -1.4653721149167949, 0.28738863276181814, 0.5271374800610847, -0.1451944493283091, -0.9800599971955779, 0.6516285157791157, 0.3396200289963888, -0.8198525721107438, 0.6319579574491423, -0.3772650215173409, 0.3077068224849206, 0.31720206688921, 0.12158776309046304, 1.0809042082121207, 1.0642567891228714, 1.8179097447438652, -0.43206935605397984, 0.37786874569296014, 0.3952043620022568, 0.3619801074518372, 0.836701763727239, 0.13589241191151316, 0.5983402387018408, 0.11083062853937264, -0.47684235510432976, -1.425496108886025, 0.5861440987479868, -1.086649842646286, 0.8692343861045037, -1.5595017100635853, -0.11939217655297334, 1.867839017091306, 0.1529344462913203, -0.4142188866098133, -0.015382150772253089, 0.02331025826997036, -0.31332150638072576, 0.07177806286427546, 0.9588513248678675, 0.4790246289141386, 0.1782800679264196, 0.8316439535085373, 1.3697451219813022, -0.29239194315140027, 1.7130334754533454, 0.15301199433584703, 0.2516538496321531, 0.8052203626705442, -0.8193169757784692, 0.8297372716531863, -1.6382362402194854, -1.039626938505833, -0.8865946056863021, -0.9294253652017392, -1.7978162276590155, -1.992621134234571, -0.05491414933488196, 0.7607121087371761, 0.07984366129268702, 0.5462619894735057, -0.2682509648059717, 2.6409716720600263, 0.45749720934429716, -1.5363699364147407, -0.7376116600379029, -0.00034809918522295523, -0.0446268595336354, -1.0661827948417526, 0.20144275615808793, 0.7334562425309233, 1.552508206699953, -0.4212114236659149, -0.18798580599722212, 0.362342131367099, -0.40201566793731663, 0.24422295735481817, 0.5936899101332285, 1.4911129590651635, -0.012571888777807325, 1.1564868960369348, -0.4347382827914363, -0.03991151500405277, 0.8894520643614005, 0.6750877041971858, -0.8924490272423622, 0.06802820117873785, 1.3941390498912603, -2.2183459123693248, 0.728823441885771, -0.20738631995329626, 0.5619451894738027, 0.24102109818707865, 0.5988075233622759, -1.197341333157397, 1.141794439805377, -1.4503023284963743, 0.17970074803850108, 2.2516048850144963, -0.56902356791673, 0.5251052705298633, 0.41230439233508803, -2.0610354044549024, 1.6463483630850755, -0.3895932560221762, 0.023372481314313378, 0.3726580742458444, 1.6009305244339782, -0.5079472543165146, 0.026058442391582896}; + + +static double gemm_B_dram [64*64] = {0.189669602985114, 1.325049359243402, -0.732183062829934, 0.572714186764936, 0.578590600877031, 1.2388796995290943, 1.0500306672776403, 1.8192381659692514, -1.1405729828723672, 1.0122300292640196, -0.6803068888120192, 0.23558756797719393, 0.4590523848413457, 0.039978934156923385, 0.7649728251851297, -0.6523866340206094, 0.9057001363970097, -1.4969909024911252, 0.5583314398652852, -0.4452115501359032, -0.3304347302314844, 0.027571386474332372, 0.8939826883481805, -1.872118961147354, 0.5298280317907396, -1.0826478091988276, 1.2084845569673108, -0.17218404794239636, -0.3252179452060136, 0.3945233627729552, 0.2425669838461522, -0.2564454574318479, 2.0415809465850456, 0.6967377843326548, -0.9048546980985884, -1.234321257122067, 0.03613326393674803, 1.5030525940981552, 0.039812401385598245, -1.028716739224381, 0.905199590933292, 0.07238255324721113, 0.9920291161315633, 1.607092129619061, -0.7789509309904787, -0.8098065870783787, 0.2185071569653127, -1.0776572234997361, 1.0422979672486086, 0.35098947793500807, 1.058321853508688, 0.21414179532614872, 0.87002060394994, -0.588672020705869, -0.9012431889469893, -1.1027247239157423, 0.20399290647527346, -0.22033680012834594, 0.41392188096741706, -0.42930260307085955, 2.008106278814718, -0.17141366812550005, -1.0826275786645045, -0.9116258668673404, -0.4909043876322673, 0.5943271959845479, -1.032232792355313, 0.6916475040075348, -0.2814338568695432, 0.3019276636231262, 0.30840104248656297, 1.1260293291302985, 1.0658378320568267, -1.309665630454003, 0.03270078938345398, -1.042853289185364, -1.1963506272729019, 0.22648827570429167, -0.27781730274050287, 0.6724032102680387, 1.4810649208771722, -1.705538843107525, 0.09082361393666324, -0.7042276239280941, -0.2383161417380752, -0.5754942139316102, 0.2034652918512655, 1.0314063302051917, -0.5483340133806348, 0.7261075561744313, 0.24325632249018914, 1.2040307377783537, 1.8952069586290123, 0.07195894063173909, 0.41620952444354886, -0.38792744247312216, 0.43271658564463056, -0.7152907230181043, -0.27441611835118457, -1.2767143227797635, -0.7237480311094019, -0.7801386726592521, 0.5873572672607883, -1.5638814718009917, 1.0026700985921706, -0.20658267805579636, 1.1147082449222048, -1.8735264640919256, -0.010118223620103015, 1.3128640032531393, -1.2394667444809362, -0.058071070610180346, 0.3326917440450766, -1.3418569139214052, -0.35250711745478874, 1.062335579748586, 0.20356887701465726, -1.5085222292073164, -0.20122570212640017, -1.2154057454628897, 0.5158621290601251, 0.9695271692142623, 0.3441306717260009, -2.1992152335223514, -1.3802722217172205, -0.6034656461417384, -0.4801083441565978, 0.8538691740175305, 1.251004287596872, -0.09542742482466746, 0.40740998722283345, -0.46840541134330865, 0.6471911034482357, 0.35532009889140853, 0.7653967450899795, 0.9524656674056426, -1.6215943351797741, -0.2686500917542327, 0.9449563832937318, -0.20293909969523755, 0.020177369737896966, 1.8868326165910845, 0.4576448036103095, -0.2498818144309833, -0.10142946285532765, -1.449579663145317, -0.8489450230349159, -0.6568950465417366, -1.67036939630407, -1.7958306634788441, -1.1021273970619352, -0.21287356137371105, 0.4835462118207064, -0.706131682059633, -0.0005784215469045945, 0.6574250653163278, 0.17766778608163517, -1.8727680007027385, -1.5710173931120528, 1.7986529290207192, -0.18797275721228432, -1.3910123695349608, 0.4306425799188508, -1.219748011178242, 1.0949707620919027, 0.1513762139476246, 1.9338021854764944, -1.7210422812237611, 0.9885068182490291, -0.9803371411601391, 0.29682676074294506, 0.5079171532797483, -1.0067592408859265, -1.1852909158053921, -0.24870697467690292, 1.5263388569653553, 0.3621209495718994, -0.10875592605323897, 1.5707754718355267, -0.058214043298022156, 0.11649757853760016, 2.20745259723818, 0.22508102515092662, 0.30413440003257725, 0.3361637150433332, -0.29948851492748413, -1.4644211330145278, -1.1645688132881276, 1.7112956696610628, 0.3665551294097223, -0.892280722293537, 0.23500589115883444, -0.006491959097523364, 0.6091191876188028, -0.4461691518402758, 0.9121131054406446, 0.6355326129684161, -1.268683781896227, -0.21309922823334831, -0.4526268909737412, -1.4960032394689278, 0.5540823200822727, 0.2560919649556906, 0.6958730281917784, -0.5196649709771612, -1.3359468501779264, -0.9612977596469916, 0.3684109792157164, 0.46874289915027023, -0.23500821987366438, -1.2492858128054651, -0.9712261431242842, -0.11106638365989584, 0.9412519070406014, 0.49297323422258654, -0.8131389146040623, 1.6400307701149688, 1.0589667993101595, -0.4626925507420147, -1.4812253208994315, -0.44695524379636, -0.5088098786201557, 0.7417386987297616, 1.9120910039247294, -0.5568304246735866, 1.082342797278427, -1.7235037406979286, 0.803163868309887, -0.9769340341766338, -0.35112463351229073, 1.089671633947238, 1.4945995510345567, -0.9605994188901047, 1.8558602683726249, 1.2656905677375838, 0.42254046476492185, 1.6858550771091214, 1.157878804816697, 0.4573643259259206, 0.024994765804824147, 0.6922554384196643, -1.0810666579003045, -0.993616522481608, 2.5847749332602, -0.5049684014655186, -1.1395828435290725, 0.7605771798197924, 0.4408163359631587, -0.0840611891215317, -0.9527439222312267, 0.6926562526915562, -0.0027305349396484877, -0.17986472316396296, 0.6422610144258437, 1.412615895841031, -0.8278577538333346, -0.34124077949668935, -1.0204861021625729, -1.639602822546497, 1.6074096919057093, -1.1584852824016685, -0.7208155426015784, 0.8392040761097412, 1.4407795793808869, -1.1752867571353782, 0.13944705380804281, -2.1057408864224376, 1.8791244019244464, -0.11042132844938202, 0.6020370854831343, 1.123017096832584, -0.05652868718922079, 0.9625740766310946, -0.9673606956637038, 0.34492034644528907, -1.5375361503838323, 0.4990455041789286, -0.9489277592897538, -0.44848662225935687, 0.20225111438661522, -0.7527660556091446, -1.1152440995018695, -0.678649964720999, -0.0170582056258441, -0.7846907726938122, 1.464993202427589, -0.23851486543700182, -0.21705046983702211, -0.48796761821159795, 0.06955842538462975, 1.354628016983049, 1.1723362156850679, -0.05921619047971073, 1.837739007328147, 1.8393226614447074, -0.5268796561342607, -0.009364231583693152, -0.34684234783223405, -2.176072940640231, -0.09860764477494396, -1.375924608815696, -0.3811363408541145, -0.25535084881820336, -0.5151247779921773, -1.9166699100712044, -0.7282751936534643, -0.770819120513824, 0.09989507970317545, -0.878538580803181, 0.7867474162185699, -0.6197714222289087, -0.7670250649875356, -1.1346435642707655, -1.0880912464935015, 1.068458625377813, -1.3222351936152148, -1.066593964724342, 0.6852370705793731, -0.7113480780630511, -0.40942559335898576, -0.7483757154858288, -0.07122776033319436, 1.737408764400146, 0.11841252923863307, 0.8754522360715343, -0.343031757238289, -0.16416710878946741, -0.19531408663845634, 0.7754013715005769, 2.1332591207760423, -0.5052118758709067, 0.7131591899986326, -1.7803264017675031, 0.09420444683357239, -1.0472700356156177, -1.141024988505546, 0.09968113439098554, -0.5500313848742133, -0.8741986078561492, 1.0386438045163713, -0.25198767361062563, 1.6311155422356378, -0.5489949380720973, 1.4199156443209913, -0.2207014712546088, -0.4933058762731387, -0.27150483339996007, -0.609287115241384, 1.8620527369297897, 0.3449111247951254, 0.47062028183460747, -1.1545294505661057, -1.292810580741897, -0.6289136729611903, 1.2737042271707677, -1.0511082561993392, 1.426825388255249, -0.015158507511135831, -1.273327662575822, 0.3566423182164152, 1.7276268792428473, -0.138705499081124, -0.3306294574129653, -0.25875806103153426, 0.9880995543293336, -1.8623261901283767, 0.4777716036036974, 0.7487573413181321, 0.2064510369320226, -0.6262881610175278, 0.7353602889754229, -0.51667585170615, 1.219994070236117, 0.08511682154742599, 0.461487533016861, -1.4324664872243593, -0.2831471438083741, 0.054981156346117374, -1.3700696100114267, 0.3096752736763023, 1.194241938484396, 1.8141528512917984, -1.58398942271415, 0.2567713855866453, 1.1325804441514433, 0.25474731658461836, 0.5102671515154679, -1.4402773937935691, 1.3631571444107151, -0.8745959707232299, -0.6709972930186268, 0.2283470744920325, -0.12596887340485374, 0.8065789677701352, 1.421469323382145, 0.4556508032642018, -1.0983863507243814, -0.6254964658092993, 1.070974103218303, 1.0062944399776677, -0.2034198776993104, 0.808780940775045, 0.5534680689510987, 0.8961184107636236, -0.5842103728027922, 0.5653085033471172, -2.1257290549864827, -1.5901962373203609, -1.9012367446206324, -0.6712383697091975, -1.5234460098622955, -0.5907400058854823, 0.5435115627741249, 0.8494509722996453, 0.39541460589373995, 0.34454168140199853, -0.5998570139754461, 1.4125085287986676, 1.6191319296034328, 0.5896315959519233, 1.6752120980115939, -0.2991192109089548, 0.9223415325858076, -0.7167872516194996, 0.22778147331011792, -0.7313561090591182, 0.2921479170003794, -1.625666094056695, -0.6445948416979022, -0.05395662589269566, -0.32651136607182046, -0.5718694030200041, -0.6239270633688702, 0.5293884091632937, 0.8538659984117739, -0.08646896041984872, -0.4591311530517561, 0.530729446677609, 0.9885369669648936, -0.10094123058942654, 0.7532893387345917, -0.5660396507329793, -2.0027194859651005, 0.5301317384831784, 1.7010094716661732, -0.6006505084403668, 0.07178044356560984, -0.7177231480244217, -1.359337165187181, 1.0326277403651098, -1.104532973746827, -1.6930804949542624, 0.8948572423285246, 0.6340160893384413, -1.5423915961168462, 0.011234729330484954, 0.08870089142026438, 0.3252000063592445, -0.3788953447378539, -1.6345167208845197, -1.9943938078659595, 0.5933545751971042, 0.1442610329440957, 0.8612263693463771, 1.0358096108450814, 0.6111080247478592, 0.3509848535144375, -1.1231152704037288, -0.1305107898573894, -0.41201313101807663, -0.03594780788378006, -0.9547182114259212, -0.011845221890036848, 1.12335088041976, -0.9774107703754668, -0.34076482193730445, -0.4446802970229687, 1.750328003641402, 0.11174788170294983, -1.565777190842104, -0.2346242003304713, 2.025590134435565, 0.735919593851651, -0.3026497563524433, 0.795453306662201, 0.46657766925371513, 1.3719765295674315, -0.4428217812148648, 0.7438423244369328, -1.0044446714902608, 1.154104526108482, 0.8839111136542974, -1.4508885825739297, 3.0611733845656395, 0.07901046926896166, 0.035058228455775144, -2.529204012749036, 2.2253130444496216, -0.4836215067602598, 0.16087228538156456, 0.7529292801127621, 0.3021529756635018, 0.4830310122781418, -0.8075856256378251, 0.26676009847445914, -0.29717856392002556, 1.2712147826101827, 1.3176937460170013, -1.4531100825401797, -0.401073196111487, -1.2871905265662251, 0.23493164012909643, 0.08751016369069563, -0.4032539921927929, 0.20282323529368904, -1.1162555921139607, 0.12695806790569364, -1.406093789252919, -1.0433007967333698, -0.6034955540076896, 0.17102026852126964, 0.7887411128500289, -0.703456192532379, -1.403341194881998, -1.0180851564689184, -1.207196105637615, 1.3037843089034824, -0.8651985363612925, 0.16224668087220992, 1.6395521189037061, -1.463483294540364, -0.7310087129802972, -1.409361808083387, -1.6742963677191696, 0.31488414200224113, -1.0807755665828445, 0.11328910546500368, -0.09407603144337613, -1.4910310277195566, 0.7879699185151358, -0.22617275756319744, -0.18453310046988597, -0.8088417376829332, -0.3039969187778905, 0.8286501834765244, 1.746576388943919, 0.4585966464736884, 0.25857411751629744, -0.7755037047860419, 1.420943752567541, -0.7945878809532562, -0.46422664555214305, -0.5870832701281387, 1.3591013677668105, 0.5825126289522653, 0.6302719139868384, -1.4892296911532181, -0.054354803805188714, 1.2886090146135347, -1.871894006094185, -0.17706345246737432, 0.8586917015117914, 0.9881224827101989, 1.7896888081081215, 1.8466624703615426, -0.652536121488528, 1.3010866809132744, -0.09621481510992093, 0.4195057830533126, -0.04083288515295536, 0.6108022121551525, -1.0750510120212, 2.0140943483593357, 0.4481129685052948, -0.9859321167207238, -0.08362383634635764, -0.03871848811440984, -0.2859438908875716, 0.5451864270031233, 1.096287644463553, -2.0123992429307687, 0.5129399194497606, -0.4096728112440253, -1.0733837614648305, 0.005037630800198677, -0.21228362057381842, 1.0230324323469668, -0.3656703260246628, 1.343090275133355, 1.22200570063805, -0.19194700432383366, 1.6409555329882874, -0.045055182295066304, 0.9609987857589979, -0.19006125129863014, 0.4532745570836223, -1.2557975528603051, 1.266664141133199, 0.7341021381288548, 1.0225863410319447, 1.0410718138994182, 0.7172806738325695, 0.7903692364559284, -1.2222599875487237, -1.1506465980729734, -0.5931209140159687, 0.0009066596896233819, 0.8988006272366036, -0.7368561086985402, -2.060685831545258, 0.5996372458926001, -2.6379391495512574, -0.15461646907210536, 0.5809320989641804, 1.2787415555120119, 0.9369918534027788, -0.6875243358298012, 1.4942643445597592, 0.2701534137189382, -1.1816059491920998, 0.33872966509087593, -0.24720917613413934, -0.3605679983284582, -0.6613196865194579, -0.41998189317162704, -1.4697058573054282, 0.8301051921559156, 0.41312510613488473, -0.3119279752724232, 0.4832898322611189, 0.07210674722777907, 0.46221378683028386, -0.37907311341065303, 1.0338668347332045, 1.827883401988348, 1.4366607957461852, 0.00961089155518196, 1.1215412005788055, -0.9367274619902408, -0.6322235536233912, -0.4955048405923246, 0.4275765566731029, -0.4174196455050283, 1.0639045161507725, 0.17385489080177374, 1.884693292443038, -0.9174412411641567, 0.28332303940663434, 0.5154356751840908, 0.4527845805518231, -1.0762757525300937, -1.179877567884639, 0.05121250188699606, -0.8370218706835116, 0.3936578615259371, 0.4760963910597331, 0.5554786252919994, 0.623642262045472, 1.1315240293178561, 0.6513772767640275, 0.9117480009446275, 2.0918988065309074, -0.18111164825082318, 0.14578447935362185, 0.7752307161020041, -0.7579177299008238, -1.4643865224645813, 0.03389748036349978, 2.120628606940419, 0.8014787143841253, -0.20745942068486495, -0.2879768579253691, -0.44376875474220623, -1.431453126891794, -0.11047101043242392, 0.24254161271823366, -1.3890767080063884, 0.3551940772843608, -0.4821841102534756, -1.7404902110705263, -0.40990083463094634, 1.8406160691146698, 1.1343291794639416, -0.8770360698657584, -1.308217262167615, -0.06936303775634156, -0.39764667123450276, 0.5769725286701373, 0.5896270638633384, 0.9362446576484363, -0.27937299969585233, -0.610273978130261, 0.3618651906707751, -1.2687776942664193, 1.0626862705466873, 0.1667616956765533, 0.8138441501785322, 1.6828432679771586, 1.49682253754663, -1.1863230769603135, -1.5117519393616556, 0.294281094993007, -0.2266617043180088, -0.41000204751825736, 0.290692491485043, 0.2610713689915173, -1.4803962625447804, -0.28203213808230204, -0.31875591594593894, -0.7579009703382211, 2.4195675460926807, 2.247768381111992, -1.2980855885884446, -0.6529880062202584, -1.1234187168399243, -0.6956208755464927, 0.18965693411991652, -0.7362169554932866, 1.7754003059642411, -1.4235677497447479, 1.2291191037431475, 0.723527014546075, -1.3435315937863141, -0.17217271634298267, 0.14983346550614027, -0.21891340206561175, -0.010486184647393863, 1.2886811180355797, 0.10616567929962695, -0.609164835229734, -2.4211016076172376, 0.9463913483379409, -1.2980770068731349, -2.686933468264052, -0.03499567459563232, -0.34422522533382366, -0.0004908173861640336, 0.6734912677572197, 0.3525723705153651, 0.26758049299320774, 1.0529967718142275, -1.0999426989251082, 0.607473797642488, -0.4324428804621579, -0.8747836211413581, -0.7615340045466905, -1.3987613199365359, 1.4760791332584298, -0.6692014546820036, 0.04206641378767387, -0.9954780884334878, -0.7367371645074806, -0.21469214077392976, 0.79863673183808, 0.5075977458329036, -1.1234803559227962, -0.11931261167544333, -0.9031732659236469, -1.5609889694409194, 0.027729684273670476, -0.0017713213496273143, -1.7998106503968425, -1.498807717939337, 0.8169615081274427, -1.225033387547948, -0.8400996437124898, -0.8235377496257132, -0.4364264295280201, -0.01520214370946306, -0.15565017655025964, 0.0711312016026537, 1.1732559505317561, 0.5421847899339702, -1.086805433546504, 0.08813241769030257, -1.3579610652989789, -0.95942170120491, 1.459939956281907, 1.0117046306174486, 1.236197607064445, -1.2847595366907714, 0.47824603981077524, 0.30763463139827374, 1.1982758403837634, -0.3864008241497015, -0.26343272683881636, -1.750741728784698, -0.7351692274922426, -1.1349702581587906, 1.587266678692178, -1.2860170377857756, -0.4801752859875242, 1.6636658079534445, -1.3553330327978614, -0.9100195679190681, -1.0672796342182451, 0.5487025003986162, -0.1791076550181655, -0.08327198475097396, -1.3750289943854572, 0.4208708674265662, 0.6401350535533352, -0.14063353058666744, 1.3736446383002492, 0.9976936151350384, 1.1041690429383328, 0.5683312485637652, -1.3367051291338052, 0.2753721538148257, -1.6017596501358158, 2.0374743389978627, 1.0455690189454758, -1.938665276478024, 1.252770550122401, 0.2561807897177513, 0.6323524439681041, 0.44731860905074394, -1.5602090121872974, 0.16086045997109896, -0.8663998447283321, -0.15184679830362122, -1.8365049505188262, -0.6194981237001738, -0.6491132407601561, -1.4279315144128575, -1.4527159141395913, -1.2860024861530703, 1.945998082166153, -0.4013256550665814, -0.23659055793172576, 1.6616248255857569, 0.9472591623961788, 0.22914631673454838, 0.4811708838672695, -2.4575219310050103, 1.3898278424498873, 0.20730337920079658, 0.8863788687809607, -0.5916662331186044, -1.4299091422968209, 0.025064490896124083, 1.8440846679363176, 1.0939727242689221, 0.7256395410256029, -0.8590688058956931, 0.33189582274019075, 0.00448664532664562, -0.6480863852455645, -0.19365121140022182, -0.769665428394861, -0.6311931076898489, -1.3627698357475697, 0.6622092567614445, 0.24357517704777013, 0.503103320093718, -0.20595689226841954, -0.13618936070901688, -0.019650584704433195, 0.7262082426269985, -0.506270084550158, -0.7099417203135552, 0.45165053042716463, 1.1300405981040555, -0.24719613566322082, 1.2071293877520475, 0.435400868244206, -0.6142313942856545, -0.2808055784619822, 1.332735503169351, -1.1560021403810814, -0.6195875521757297, 0.25810834246088477, -1.4065218105605355, -1.3610928866213383, -1.1598317103172542, -0.3269341470162602, 0.08570043587182144, -1.9223819765041372, -1.0843685493072819, -1.6036518992044688, -1.0540791458678187, 0.5783162278332646, -0.3724907451950873, 0.7280800945640448, -0.08142618606573834, -0.8401997607017293, 0.4112577930821558, 1.5228201136451585, 0.127297463548603, -1.2407599011227048, -0.8552188536617934, -1.4741717842067263, 1.2671552063447231, 1.2337003308820302, 0.2110414345000711, -0.49591180781239114, -0.7461512339849881, 0.46865565860373054, -0.29715235983531224, -0.12386177897129297, 0.505578016119112, -0.759425281130206, 1.1922469683938692, 0.7741861134374209, 0.05774506261158576, 2.127957081016315, -1.5401055327147126, -0.9942873953265658, 0.7559867086719737, -1.1410350461719765, -0.9659194892052072, 1.6982344632787765, -0.20931069081798342, 0.17013249407359873, 0.7270923030390775, 0.7204891484463551, -0.39207799039317925, -0.7155255221813551, 1.5011465291329578, 0.5459497541973576, 0.07243706212858651, -0.4803076283069569, -1.0054943042359705, -0.5237739778480014, -0.09835515549724476, 0.5775290716411025, 0.9348827174613787, -1.1210113987995936, -0.7552071013929652, -1.0007141329301783, 1.130624877307917, 0.2722502138472599, -1.7108387910528222, -1.1062867754981813, 0.5689569196095314, 1.398762352581004, -0.33899470403862797, -2.076656356422838, -1.0004947044013306, -0.06246586753421959, 0.3367745011191109, 1.202712320404443, 0.12986086111190515, 0.47863453049805044, -0.5301057190296372, 1.1951555259879219, 1.0407276314629512, -0.6060289812671181, -0.45188168827767916, 1.1672764414566084, -0.7601267361673396, -0.16562850009431018, -0.43860049222365943, 0.19265871886562935, 0.3369896727544974, 1.0727046962527615, 0.35280285161085073, -0.7944425795053791, 0.4195206213331096, -1.2168293697790002, -0.6443114053235841, -0.525365919337175, -0.9060734662625927, 1.1385254001814025, -0.889916275322328, 0.5268352654420474, -0.009977679759738923, -0.7448851196209746, -0.44666312777814293, -0.11724072209427554, -0.9165098978210413, 0.40637929060102135, -0.6093457976035641, -0.20545838480263884, -0.8249002512298813, -0.8187706458007767, 0.4689683976066863, 0.465846208938873, -0.5387718100480267, 0.29854415380834715, -1.3665663590081276, 0.6177965287355739, -0.21396707680556573, -1.7406726509793795, -0.9472077744730275, 1.2519402070664514, -1.500777460440331, 1.8997820918004282, -0.9743457775230356, 0.3295729377044873, 0.7301012356968105, -1.2391980530651758, 0.9236351835845457, 0.6089290100942146, -0.12102325767564293, 1.3403384783597367, -0.10824453003093894, -0.7827461172580052, 0.8781962552006474, 0.034791693460034315, 1.4473751097143777, 1.203987441260602, -0.6198007001117833, 1.301362501195787, 0.30216625220261106, -0.39889697987982026, 1.4638160519035035, 1.4441827711806823, 0.5084134433716269, -0.6532108007553509, 0.1035243161974872, 0.3054072741705922, -0.34435155003796397, -1.0278570477914484, -0.12173258785663424, 0.5950528675438397, -0.9207821659942775, 0.7261815748689618, 0.7245355697839364, 0.7604354547177733, -0.5960613431486281, -0.12501859797022763, 0.4557109402631586, -0.4506714771692287, 0.11847291756872175, 0.39464486011730787, 1.0377336775259156, -0.7663128158804938, 1.222002486711219, -2.508898843182651, -0.5222022711446821, 1.5139575345025822, -0.36009115973957706, -0.49699571473838994, -0.7320998923855627, 0.001340784350614637, 2.287441638998896, 2.6831380407821084, 0.9455827325947566, -0.6608925110148092, -0.5298256491030603, 0.45598613407332417, 0.9056367098865701, 0.3468095182692027, -0.41128275516824825, -1.9946284216093966, 1.3045604895745035, -0.31854406317287715, 0.5219610405531087, -0.6641421031054549, -0.8688348040549531, -1.4043267718460093, 0.30435888123608246, 1.7846564254581045, -0.9673767387337057, -0.2252780643800041, -0.05837566001580252, 0.4291753233203228, 0.5442117526259592, 1.694634248553822, 1.2354760527115538, 0.7959395609646354, -0.8911113251956342, 0.3981107862143589, -0.6038191850464151, 1.410835808709077, -2.11493035968152, 0.06393518361722653, -0.029139117833403446, -1.0055963360448883, -0.7926601642106428, -0.9735425062205508, 0.4554630839524932, -1.2992896271871042, 0.17829226436911383, 1.5977020899206693, 0.5447850111120647, 0.17559902453769902, -1.4737831888237733, -1.0419185868083787, -0.6982628146742288, 0.2928989175106737, -0.8214315460621029, 1.0127275799116227, 2.540754369404317, 0.12669952550269392, -1.1844739993372275, 0.04189705377801499, 0.19439551671935018, 1.4521501913227826, 0.9787682718988012, -0.10502618788525488, -1.545636873356207, 0.41955502862273386, 1.6344397845287502, -0.6996137533248805, 0.7734222385388448, 0.7646349717820928, 0.36213834223499025, -1.2242281615824748, 0.2849485575478564, 0.34587641407530284, -0.7695467082668787, -1.878968801793851, 0.6439945266787103, 0.39401855978146333, -1.846270591936921, 0.8119840231832707, 0.4632560672239587, 0.8872512984658244, -0.6531242638897106, 0.8234509000335084, -0.8470430861883507, 0.7043960474728573, 0.16029656369225695, -0.9199716837319385, 1.7516428594841185, 1.53571695111567, -0.5923963974647823, -0.09421724289639898, 0.6951583529670979, -0.9029293377217025, -0.5403629622028528, 0.6026873450172656, -0.8904457098799401, -0.18153071461918635, -0.7683616776084702, -0.7723477433968918, -1.1385745044486548, 1.2990481267032234, 0.6920712069054653, 0.13819751107759315, -1.6994515863979083, -1.6867607272487752, 0.11386912747556614, -1.4741086101976333, -0.4084554473716878, 1.2611098853442282, -0.29302661250863893, -2.0886778227205594, 1.461016480023341, 0.42560541758942194, 0.6191588554531684, -0.5985193479741547, -0.47737501108118235, -1.34361075336494, 0.44109611654147907, -1.1504741483205345, 0.12452161850318348, -0.26145501283663203, 1.0737929954280732, -0.3919359249696162, 0.7833381602627896, 0.4920754113025742, 0.7181988996772725, -1.2868290476443027, -0.5794523266184156, 2.077603848983364, -0.6799665641060869, 1.189260513704343, 0.20931239869905546, -2.3009614984683644, -0.4660635928974643, -0.0830634473482318, -0.6258324519513977, -0.37209211976632794, -1.4939045852147155, 0.8393277068222, -0.19085594755902638, 0.6591988409228787, 1.2272709847028767, 0.06978447405544162, -0.12326350295229303, 0.4001647745043678, 1.8718755909371418, -0.6642196576581617, -1.177488097714965, -0.2921906301066324, 0.35352988537757307, 0.6046877389175205, -0.46544921540870143, 1.3311200985616656, -0.3326058332617738, -0.33093067100049683, 0.8306989177074579, -1.1200409825086644, 0.8296377545936948, 1.62299765872056, -0.8169754874480261, -0.24116708825317848, -0.47162079773443777, -1.8381312799299088, -0.4816987181224384, 1.4153255218561738, 0.5404300549763246, 1.134165955447205, 0.36168092874820507, -1.0277579618997654, 0.05064223484110245, 1.2814696296764614, -1.3027980677359505, -0.7545827594608056, 2.355379772816784, 2.04718791252273, -1.759834086257933, 0.8184067330416113, -0.562184039487719, -1.0738447527439543, 1.0973524489753268, 1.9618314891849296, 0.5705572269774465, 0.046663848882222324, 0.6489189020968069, 1.0612872544961902, 0.10979465007800482, -0.08424919865351914, -0.046667928646890046, 0.01001877915514528, 0.5755430190021412, 0.39333359256220896, -1.3620271852148316, 0.7432663945852148, 0.8410052507767574, 0.7560345480854492, -0.6405935855372006, -0.7185790399995472, 0.8929178346215048, 0.027651783756700472, 1.4242859506295802, 1.3972167882558741, 0.49132298190860557, 1.2099518385773633, -1.1213635437310359, 1.7266262581251506, 0.6799784552405994, -0.24016735136695966, 1.4215773652232737, 0.3292899527453197, 0.13524241974414905, -0.6033204455513134, 1.2434604281943695, -1.3676515621225143, -0.29194920862061935, -0.5181588907438721, -0.8497114521365112, 0.18939885573177215, -1.405921031876885, 0.6278696550297107, -0.19610956093284193, 0.04397693978192499, 1.27214363752744, 0.4762447251944673, -1.1370577022172665, 0.3990519149808553, -0.03191869811931289, 0.11133077808104638, -1.3445513835383933, -0.6573925555742512, -1.8568976733896805, 0.4153648416666165, 1.1666478841476853, -0.46112981399687764, 0.9535530862878486, 0.3473471655658854, -0.4161422881398393, -0.36198900956783775, -0.6339438086298942, -1.3944739484632676, -0.20387130619003158, -1.2701487841608123, 0.8796180040454592, 1.788948584745946, -1.1631704471876354, -1.961477519039208, 0.06590179873448668, -0.41614806490650597, -0.266000444569746, 0.1643712657991143, 0.38488576234322136, 0.2840733616903701, -1.0787563446019552, 1.1302339241072494, 0.7397220744929801, 0.10555634094791072, 1.5575703663389617, 1.4916593464656478, -0.1350848011563506, -0.5955564946507164, -0.9779825570939976, 1.4575816264107626, -0.5635566812842832, -0.13730254477957476, 3.1760359675054914, 1.5468541517541319, 0.6712301995907592, -0.3010794489170866, 2.375386241376686, 0.39676442311673654, -1.2083016255148442, -0.08960307423878197, 0.3356703315379674, -0.298976814312964, -1.7665651290994233, -1.092767255651449, 1.3975407829596296, 1.141874801312204, -0.9828236038024252, 3.4474956927651337, -1.0339825534946439, -0.22625665352238514, -0.5013121080507481, -1.8800871143889077, -0.8372845710288846, -1.10244612265024, -0.3821121209536119, 0.08810124426666355, -0.6071774956226643, -0.15564993281113088, 1.022293595012591, 0.9689358555384477, -2.5957409768073245, -0.42027115973485385, -0.0461425798346585, 1.9376580364864786, 1.3588702019634644, 0.3263146874682954, 1.581370038498723, 0.7910848434880573, -2.460697055036825, 0.6447035193294413, -0.24547841579497692, -0.07769395725697413, -1.1061309579704512, 0.49835521087482404, 0.28668491714510613, -1.2325612333443072, -0.6448462257352514, 0.6067798642374093, -0.8354277456713564, -0.130333521585836, -0.9088480640459227, 1.3638181337811686, 1.3142064281473396, 0.2849199073658345, 0.592125761379138, 0.5012574226736635, 0.5318564513368325, -1.2555614763203795, -0.2193018045216694, -0.8128170056509231, 0.2508398220742027, -1.892210580413274, -1.2602630407674884, 0.0009566262638368953, 0.8443361157461801, 1.0745886240915608, 0.8806279132304711, 1.3774160713468802, -0.19850197254674795, 1.2234601520436406, 0.5881989810255106, -0.4965304502203755, -0.9766777894153844, -0.21817961411038742, 1.419239328081392, -1.6703766117775312, 0.41191565756029835, 0.5099444391903665, -1.4309207608869086, -0.015024811232282593, 1.9220050485455538, 0.8175509219535936, 0.08115843671613096, 0.00670673012745847, 0.4372668690607546, 0.17009166575934964, 0.9482553703319297, -0.2773813968150354, -1.6498126033020835, 0.11117370308283465, 2.0511476913856406, 0.4372657274738833, -0.7946302231549325, 0.07669974844112153, 1.260664230909938, -1.5213565790072734, -0.26684094546500337, -1.781805734225342, 1.3731126700876528, -0.5693906145441722, -0.7467107303747241, 0.30046251963870085, 0.5421086409579616, 0.8194948647249047, 0.553142239737994, 2.485647389509429, 2.047571834848655, 1.0547915487532276, -0.8404839317066655, -0.836914713668649, 1.2478277285342685, -0.9398734941624577, 1.3858886068530871, 0.6584361564011335, -0.32532143347778014, 0.1671936246779602, 0.6090123241409612, -1.0924306659919145, 0.8248616990025323, 0.40239815358228387, -1.3215398823928493, -0.3695707657351879, -0.4677903230735593, -1.4563234165763541, 0.2465317823851017, -1.507844840921064, -0.11213116060164738, 0.8182082579799453, 0.2257379259786798, 0.5232663992732692, 0.3677500720568211, 0.0890331713821522, 1.0175234856545008, -0.5316019239972422, 0.008273393570788342, -0.5142557769956214, 1.3236020557952743, 1.1683267443828442, -1.326046400550978, -0.877558359633544, -1.2811663730152782, -0.007179640854720999, -0.1558221865207312, 0.5717555419933172, 1.400174656314241, 0.5405546279191125, -0.6066094336440838, 0.3074008062852501, -0.7266655582548127, 1.0200651816876847, -0.9169096044014198, -0.005352229277594311, 0.9229483990313, -0.5050805874169455, -0.7830498896948143, -1.201873278369289, 0.6032417486934556, -1.1946344297396054, 0.2240479886640547, -1.332033491041734, 0.3621050864222061, -0.7508280591488423, -0.6990041625840486, -0.3589843137912688, -1.1294768284497914, 0.08522935573665827, -0.8932238012324163, 1.4598549115209354, -1.4447712869600169, 1.161056885783272, -1.3625301397704557, -0.035297958124361, -0.33008069949103136, 0.5239932036193977, -0.9535748485371196, -1.4160404491189216, -1.2653282493985, 0.9528088241690057, 1.8950184827415795, 0.536660694982275, 1.0358009972485072, 0.33684764607473267, -0.03807672876925321, -1.023646734531218, 0.40397027552612724, -1.3087493812000008, 0.48272717104738166, -0.9539524744639091, 0.6839967409804478, 0.6443820369253852, 0.31683998325190177, -0.13585198410986143, -0.46836797703096, -1.1069337244040973, 1.2699629292559889, -0.7617963846193975, 1.4541756482189356, 1.4282755674874026, -0.1861092734243662, -1.6655794153163535, -0.9018831271999473, -1.037689638483834, 0.8498409192473517, -0.07982833124499089, -1.2088906569879048, 1.9388046452293908, -0.6512630617583657, 1.1866504013111483, -0.33869047227217647, -0.4062584258255965, -0.13047088702582313, -0.2920609026154828, -1.5721710704372442, -0.7529385991063793, -0.4409489430185798, 0.6573725024011854, 0.9779867268215527, -1.1338038691333352, -0.03676275814229943, -1.3700180959347181, 0.4980096428874349, -1.8841567320644628, -0.36671037716186844, -0.33102623775307954, 0.44082885192374405, 1.613113523011985, 0.23245328885846092, -1.936031194784913, -0.6863173758499714, -1.403980406004003, 0.5048363560164861, 0.2836464927146788, -0.10581740020796536, -0.6422446354858306, 0.03847861193968079, -1.6367117659354635, 0.7105602568018861, 1.9161683660322844, 1.1010957888549868, -0.12160407112688297, 1.4925214870472732, 0.3264326568315127, 0.1233803144398878, 0.046322463990348964, 0.7961360452240189, 0.2452347016349107, -0.48943896240142126, -0.9290930154151816, 1.3257611388643007, -1.2121987546438076, -0.4675832048242394, -1.408413616302921, 1.681812863852406, -1.4107609501193221, 0.9608162613161545, 1.3382523033803306, -1.142429334719264, 0.3068199062637968, -1.373229118623735, 0.7359602107842439, -0.08027367417510534, 0.5703393562713633, 0.8224893358060019, -1.2675332626508233, 0.09157528929486593, -0.6239271870188987, -1.333424030987914, 1.542228511553581, -0.8290994826950859, 1.6002179297200447, -0.7290687216113811, 0.9827490621042851, -1.016128789591686, 1.1178052087911723, -0.11201905921608454, 1.545158085939111, -1.201782983516858, 0.2987368142749938, -0.013881908859372263, -1.4662280689414051, 1.195364231090116, -1.0207840815730405, 0.6038293322962383, 0.6920833223124919, 0.48928276635174567, -0.20719681719458505, 1.0528037049861176, 1.340110048415235, 1.0572972351619618, -0.7972871839181324, -1.445715944658206, 0.249550573252273, 1.7425897413780096, -0.6146482994249365, 0.3414417673370007, 0.5211686346384714, -0.4720635039991762, -1.6866627876101177, -0.41908164540912235, 0.9350268770492959, 0.2628866171785153, -1.4272699417780046, -1.5176019318982594, -0.5045820104317634, 2.3669803699198972, 0.04468306472425897, -0.8506586820583893, 0.5357032817625664, -0.7504240210817026, 1.2244644861038698, 0.32030678738297486, 1.9346717432885199, 1.8091618397708604, 0.7016264290342246, -0.7543230939085693, 0.3718249353749545, -0.39747629739679413, 0.1755020796040547, 1.7617259402782062, -0.6484224375517338, 0.5942375319267897, 0.5412303781268201, 1.3148250600931315, -0.4591000552529005, -0.5181152695539641, 1.0888867653411374, -0.4218577232399481, -0.03314875902158776, -0.45525424561822153, 0.6620103621803525, -0.4828556213675988, 1.0197136724339582, 0.8136601745512939, -1.7574981376543641, 0.5152733116422641, 1.7275770946339244, -0.6596098468939191, 0.8691431128119826, -0.5019581461983088, 0.1369233115111857, 1.2132056318163653, -0.07648699416462335, 1.6772557940687784, 0.926974844165011, -0.039740256852109336, -1.6422093576684975, 1.472165824690626, -0.5312294981487146, 0.5660281554370863, 0.9002601404675714, -0.5193311511183563, -1.4261107490492029, 0.7193849792885922, -0.8161020873770328, 1.3926227501034782, -0.10765873957312352, -1.750080716659231, -1.2315289364819961, 1.5271676147265836, -1.3692385165909204, -1.2665210758120529, 0.5835547255432384, 1.5267142534760538, 0.4735793365879849, 0.2713271999760396, 0.8293178842537923, -0.3678275742008581, -0.5196865213591367, 1.2467715006725173, 0.36881071704357293, -0.013146295073653665, -0.3910850558251935, -0.4717852822314755, 1.058925836769312, 1.2611027845782836, -1.2125355152651964, -1.6680040155978901, 0.11644777354668061, -0.6098586620173682, 1.4767717300094048, 0.0954623781181105, 1.107261067809891, 0.5332249726108867, 2.027865524163214, 0.5776330966220249, -0.1584788333976485, 0.6221202243471828, 0.822805243465044, 1.875280493218953, 1.0643032788775597, -0.0032231663149655688, -0.783876097094789, -1.0049561715754778, -0.09434442862031094, 1.159075456642561, -1.7015354910808584, 0.43626266846062023, 0.4657480592549505, -2.3595114280610967, 0.432788235995093, 1.1432761980922856, -1.2312064629781365, 0.47490063643075286, -0.28730531011989763, -0.26041490757239677, -2.1502487223253324, 2.002776378754567, -0.6572916671523635, -0.6468504633660788, 0.22368175843112467, -0.7056222632601199, -0.10902101632296987, -0.12191577116310535, 0.2333724929750161, 1.5718955134357182, -0.5232145959705184, 0.6697172441294476, -0.4925971310656774, -1.1446072903750102, 0.8349991429830456, 1.0200201403878384, -0.8977027776830132, 0.18977908394646267, 1.4964190701230657, -2.6540996410436106, 0.32799163478787424, -0.8074216676664461, 2.066401169980402, 2.509721984172877, -1.2264705966483058, -0.25822269433889045, -0.4480735859571536, 1.041820098630538, -0.693824507410013, 0.8791204277882693, 0.7037151344594822, -1.9977526467992452, 0.2157094268939756, -0.8146138503383921, -0.5977126284420752, 0.19219664371439094, -0.9859202287793376, -2.3682295377243645, -1.2913932275907674, 0.22696508074722685, 1.6407744690151982, 0.0480691978209954, -0.9966208197342079, 1.11889000511201, 0.055360709785356864, 2.161209836417307, -1.3704452982024895, 0.1620107139280786, 1.6935580592037394, -1.81141037991999, 0.4953254858094202, -0.6200845763863535, -0.4030152273570181, 1.9463103138523798, -0.48212576394146445, 1.6089090600319198, -1.1366638959357926, -1.6052774277617399, -0.47813886421591933, -0.8707692499175943, -0.20229126984501603, 0.17173503092906178, 1.1047377340309825, 0.5373785703708618, -1.5876796588068274, -1.1350981303051662, -0.6537352511089607, -0.1835463801348843, 0.7426490550608933, -0.0467107787449815, 1.248118109915001, 1.5524890878524804, -2.0084680514191806, -0.8159713739539352, -2.2848088931420065, -2.372309233730456, 2.2419857626757587, -0.3816077510920729, 0.7108618513078415, 0.09216683237316162, -0.42433779835516944, -0.06629069340678465, 1.2462956506064462, 0.11891915476573794, -0.8074432428697494, 1.0942537068290124, -0.33085780821604055, -1.1030272605184115, -0.04597990324972495, -1.461390865704153, -0.6649026362109189, 0.17729372155344567, 0.7571894944422922, 0.17210568890449163, 0.42634767130989204, -0.21152758583251302, 0.8842025248865851, 0.707894179465638, 1.181293809817535, -0.5576196967532386, -0.39767440147104705, 0.6261136824601904, 0.09416680314491302, -0.9432999224955897, -0.4798733122332927, 0.4698413593912798, -0.5301112335696907, -0.6225115798235682, -0.010179517498452952, -2.4149736340373655, 1.1241415524841798, -0.7384881145759171, 1.9364675418998223, -0.959887551414178, 0.28676342719419945, 1.733477852496386, 0.47070117017904045, -0.8415052898911937, 1.48342039099686, 0.1593815740133984, -1.0466970244656812, 0.35428426550521314, -0.8714460344191897, -1.772284863316179, 0.8553434412271401, 0.6431899649395725, 2.063848597546665, 1.2107520352104826, 2.068182515581034, -0.949826787922004, 1.55283475817559, 0.18702699770560685, -0.3142644472236707, 0.18807094004824762, 0.20872088585274678, 1.4946073381353722, -0.7270727909976298, -1.4616528319169775, 0.8902512659612491, 0.8397967248644236, -0.8310381295604786, -0.8630891545947001, 0.29222682765828795, 1.4445890756559074, -1.408345197598874, 0.7729936640614463, -0.5556592512747162, 1.0996078153848807, 1.4534847934773354, -0.8589893343576649, 1.0662489588346322, -0.8131357663444699, 1.8906549668204278, -0.221189396941947, -1.0066499489098275, 0.14833291807982577, -1.6944446869650207, 1.632367328013707, 0.4020635808682617, -1.869102265647399, 0.7511051409587467, 1.42836604641047, -0.6689545864836354, 0.7132732615745503, -0.037356754428425336, -1.4955905073070523, 0.6229077094186778, 0.3002815391057095, 0.40063712375861044, 0.7079213520824291, 0.39150882760380246, -0.665277265086938, -1.4631874840764194, 1.5154278721952714, -0.39079861469985133, -0.5171161188288925, 0.47240320094667826, -0.5680617901151106, -1.0849457635502189, 0.4598612881320188, 3.1976163385397074, 1.0060936340045976, -1.4829678245607811, 0.9298775421247323, -2.348820269680322, 1.4875415958593063, -0.3178590722956541, 0.1356924010752182, 0.21621700648737333, -0.23872149766619224, -0.38611367554412396, 0.7079229883060726, -0.2936924251847691, 0.17216377194136315, -0.6251678518688363, -0.6190596403307621, 1.0103278730986882, -0.42216692790377014, -0.6083934186789268, 0.48484746551641333, 1.0506326108080541, 0.18574134153247543, 1.674110486119981, 1.6908321897138245, 1.584396674715407, -0.6716403178792367, -2.1165124622742204, -0.7575386400758898, 0.42207025179163454, 0.34281900309511515, -0.17330930073486658, -0.5185221739427627, -0.6520860152162103, 0.02880708722030125, -0.7236136907093336, -0.7012590434919239, 0.9421047560257181, -0.6079997861419684, 0.30874446046730514, -0.5762449399777807, -0.41610271882814304, 0.15862039487955654, -0.1452834786642244, 0.03226987415993391, 0.84229162019877, -0.6933696474669173, 0.33663422390191694, -1.2150580083595408, 1.0076307089633902, 2.70409271869755, 0.30995661293173044, 0.6247436756056247, 0.08195954117181646, -1.4719055966627554, 0.803042507106028, 1.3021608863661167, 0.43434043468018996, 0.7974627211294567, -0.3682221393582528, -0.06403923371006702, 0.4170350364772233, 0.9541157159307389, 0.3239859963424095, -0.2949519680069482, 0.2619100970459515, -1.6511900176435539, 0.24934133729286487, -0.4154891414125775, 0.7849763826831557, -0.7841888048100197, -1.0286045457899349, 0.6553645303577179, 0.2653791661210467, -0.028721712652565425, -0.5496375596740606, -1.3471754095333917, -1.388799522496814, 0.29599312680859097, 2.140988791886186, -1.7758304801107512, -0.8660143027878295, -0.13855549523146243, 0.7423053567212846, 0.44908973109546657, 0.5684322570795058, 0.7170502881582332, -0.972793451864786, 1.0213495345802792, 0.3588891143774135, 1.4677584224643059, -1.8483066026640207, -1.0267595764809776, 0.8461892348632205, -1.1555368611628043, 0.6290502769928877, 0.6938132809945982, -0.6257637502682993, 0.07541789139329211, -0.2366005418237537, -0.35370856166896436, -0.807010114883981, 0.2605821179006874, 0.2423808558861513, -0.20913684813592306, 1.445612205825981, -0.16339120814322525, -0.28685192204171245, 1.6172348405102026, -0.24636947592105027, 1.6507389021911445, -0.9150073073042401, -1.4463083092451903, 1.8450467799321841, 1.6902670347280917, -1.8878093325127658, -0.28001777607518696, 2.0152721910595703, -0.3554080437826893, 0.3410600781005436, 0.3080846247560111, 0.4956327203352371, 0.23813604752289289, -2.862730990973833, 0.12978190732109626, -1.5902014047218211, 1.12682412380246, -1.5041496090466209, -0.10651038985747713, -1.335463053243616, 1.4022116059874739, -0.18269475995297718, -1.3404214162908434, -0.2438165410162293, 2.336027669010424, -0.8025341000321401, -0.07983117172640133, 0.9264513733160266, -1.4369204429877465, 0.658716342473419, -0.7939169687464911, -0.408484607372628, 1.081321363447789, -0.8278147672247551, 1.508807177607114, 0.5697618899554041, -0.5433190954101608, -0.34444959772498385, 1.4917081663181815, -1.6364404568511535, 1.088677730777631, -0.07743011620298457, 0.12679064943416948, -0.8422775912109417, 0.5204410421666292, 0.07816241030036447, -0.743203277087611, -0.2490679239134021, 0.296537366216279, -0.5802577510870809, -0.9727316982881665, -0.35347806043290736, -0.8964204184288705, 0.3118694011837782, 0.4272160752827559, -1.119951155966275, 0.8907214317482947, -0.6475131446929849, -0.8840313111682832, -0.7344446459241352, 0.23897405779048442, 1.5813119435145027, 0.571609333114801, 0.5054648516804614, -1.8867586637765072, -0.46210018982909373, 0.9548065220526738, -0.4770321781666495, 0.4675422030146951, -0.4463001426607724, -0.268935060413408, -0.4021684274370984, 2.1224401502693415, -0.5308353724645087, 0.2305268915721791, 0.1608750017124351, -0.900197705620758, 0.3127318821569574, 2.4681068345281907, -0.8490049971049308, 0.43895749888939467, 0.5864069300955381, 1.478184862839466, 0.6057649340496221, 0.866511884032407, 0.3839558739092927, 0.09528931157394888, -0.4023438236960017, -0.4953367269783747, -0.9411870219959466, 0.1449619784129578, -1.1659336494666324, -0.7043483767241477, 1.2177044932260268, -0.8968784595700237, -2.0180274699762313, 0.5569746847793453, 0.38572633069031625, -0.24109338697797905, 0.4264092604031469, -0.9226064296533822, -0.9777483292652849, -1.8614061954392773, -0.07181480501491022, -0.33916355744140897, -0.4913319447167086, 0.7409940265311785, 0.8195938255125932, 1.8760662842613385, -0.08022928270577098, -0.3617902098106558, 0.8773618510991119, -0.3026417513931259, 1.0746072114312424, 0.8949816226916981, -0.6064010457787304, 0.6104271933326174, -0.29251836991064384, -1.235928055595834, 1.1821055005631875, -0.2897775819027704, 0.6479427567431872, -1.7256511687931952, 0.2379834287461269, -0.6421838621896824, -0.3313666238103324, 0.11015187322020059, -1.1738282480311948, -0.6801063289945823, 1.0727263376369174, -0.12789818738063033, 1.1781691723419236, -0.7686061607983937, -0.6393035105594692, 0.9243691012328462, -0.7504431079196243, 0.8671446299467845, -0.698898758742007, -1.4195690799131522, 0.21204181061562222, 0.4516990863796165, -0.5488202376298091, 1.1769716081503954, -0.47339514182184983, -0.6706243964684786, -0.9391275890746287, -1.66916461604128, -0.32069248128125416, -0.9339415936059193, 1.6891904534141162, 0.448704117525186, -0.6576455996483718, -0.8787818682467556, 1.7783275330439052, 0.9849951430194023, -0.948815962845082, 0.04360439333359939, 1.1754643008394154, 0.4176607904866504, -0.032791860424978336, 1.6637836123504004, -0.6318610716818912, 0.4631965911323548, 0.7240844437060513, 0.42507353110252416, 2.223789705043405, -0.624587572177733, -1.3259578694687586, 1.821890903560027, 0.18282418791198085, 1.0718527529100068, -1.390080439023078, -0.7032982984900227, 0.606806535748979, 0.9807379610674246, -1.301799608995058, -1.2210833218836539, 0.8485594404128306, 0.9129734868959687, -1.609303253469617, -1.8896306217640972, -1.2745280345294823, -1.4589951124432525, 0.17397451011234072, -0.09849861993514802, 0.5213927711113006, 0.4464567604000436, 1.7658010428921032, -0.17334884721929977, -1.630863443675375, 0.10883356045207511, 0.9209592920512764, 2.506643391838216, 0.25920697127003867, -1.000610995686859, 1.2069309607629284, -0.8420265795888455, -0.5219090322847073, 1.0528496388391924, 3.4052517316861657, 0.3939521074267198, -1.2280870462459705, 0.7021465907786252, -0.848269051241505, 1.8523087243586671, 1.8942511988856663, -0.7324609521575315, -0.7405519451390545, 0.7825799663791051, -1.0570473532938447, 1.0071272154577544, 0.008367224499531539, -0.9832761022039055, 0.4619748421824861, 0.6054527978627932, -0.8069427471635754, 0.7695845202396114, 0.7255817354960545, -2.076356254004693, -1.866170928563386, 2.4960999423984482, 1.7821255702296483, 0.3249685672047233, 1.0516193586445621, 1.6029894061563263, 0.7111190742818572, -0.7186297277267051, 0.8266707092330077, -0.8172819525228391, 0.6694591532307673, 0.3170694850496892, -0.9984287239140569, -0.6246604296669839, 2.2772797990691647, 0.7458811584103926, -0.26479485589503565, 0.8890929266772621, 2.605058213283425, -0.4494919815199539, 0.2625572138302102, -1.4742411434507334, 0.6119113473927877, 1.3070889916855144, -0.44956874651117795, -0.5715779960963441, -0.8602100327750805, 0.10606974809893534, 1.6568916173993327, 0.6885256728955403, -0.2948202171449642, 1.5696072864217565, 0.899476846965225, -1.1070943362639738, 1.8975968381884851, -1.1062908985717914, 0.09202643450386803, 0.5179032468570114, 0.19738682741687985, 0.7832918030824878, -0.4175503084970734, 0.04748961117866384, -1.1431032202175238, -0.7876280793719912, -0.1670293961990677, -1.042531579871164, 1.4250241437929307, -0.5065603208361397, -0.05190576930487508, -0.9440633915033274, 0.5697559112545517, -0.19152297948200578, 0.014168618743096923, -0.7723577262137622, 1.0555673924267797, -0.3191246615023448, 0.10177303682522976, 0.2576454260927928, 0.09993013315995518, 2.4408592434196965, -0.1674045631751715, -2.5321239122945287, 0.5150701229891861, 0.8728012372431501, 0.1605968107424527, -0.13722954472953605, -0.13443581273542884, 0.24838805492190696, 0.9494869845586946, -0.8053048546223888, -0.4416437044439307, -0.5932230289976798, -2.0643157683856, -0.7809729727827792, 0.28847229101563315, 1.2875393651128213, 0.030979117600469074, -0.16633856709516748, 1.5324980852375782, -0.6468105502000671, 0.0373559919191076, 0.769892531358705, 0.42397577027479655, -0.139645087546484, -0.9427058228766325, -0.14560303293072532, 0.15531221334147638, 0.7867393096524915, -0.5932212618722055, 0.4862407608854612, -0.07780553709972224, 1.0490144034143574, -2.161361822163266, -0.2791053970836441, 0.2634627733105601, -1.5107411614291475, -0.5446415556288037, -1.2216533790784645, 1.497988454976838, -1.1092367045073637, -1.618664478117834, 0.9157906679850603, -0.2176025539922073, -1.8489698667637202, 0.3129035109422391, -1.5506214471694328, 0.23996231659805162, 0.43382470243213683, -1.2975465623015716, 0.3447086045230242, -0.5029629441562755, -1.0515292011570208, 0.4342286760696506, -0.13944564531024706, -0.3016669085440337, 0.2091053252025545, -0.2220062149826033, 2.2529183253773697, 0.09380606672705916, -1.3762881219090572, -1.0798033214501017, -0.030459679752091188, 1.0462656041957057, -0.5166066202685516, 1.099907646476609, -0.44810406970440003, -0.11226405829821795, 0.03079777593049583, -0.5730941391354524, -1.5304535066575236, -1.6366657813941712, -0.3672873484804794, 0.995515961126187, 0.09560804918091349, 0.367469145902725, 0.1649134830430658, 1.9434979202863867, 1.6446573868197591, 0.11229000519845835, 0.1176439522089831, -0.08402038714892086, 0.7274091035559674, -0.1815847476714992, -0.869284801742413, -0.8618126688825368, -0.9255303897325509, 0.675291066744399, -0.45590558967109956, -1.3881643437611735, 0.046983698579071434, -2.2593684559557246, -1.0714842437075964, -0.7980109810319539, 0.9376060820449048, 1.5088601684612821, 1.1401676515714214, -0.10893182605495363, -0.6793666542903476, 1.9224975768533579, -1.919045525488347, 0.5940059593484025, -0.07491402130843892, -1.2833894894614397, -0.012251254567757242, 1.0424262856623745, -1.4615127877407137, 1.5618547104206084, 1.3870856731187504, 0.6794906080144418, 0.6597456051505508, 1.1809752738189252, 0.6289022860101765, -0.6311541134061391, 1.2430525196600999, -0.1258884709654688, 0.03676529016321239, -0.15638601277079034, -1.9962862794970841, -1.0631859015069938, 0.3954333505187698, 1.305130180708799, -0.6198793866416389, -0.3671423775673435, -0.05091349499804217, 0.19572546628132184, 0.481387386454465, 0.18766811525805024, 0.4204577595863723, 0.31278547680895696, 2.260226631338183, -0.44163717594473184, 1.7281834262032811, 1.6610908786986758, -1.2346970008334854, 1.7791989418010552, -0.6921188907852247, 0.41412723052308587, 0.013963859727831377, 1.2495146354884694, 0.9217529559230451, -0.6408643293198005, -0.3656165913939135, 1.6408969472159909, 0.46769590500613, 1.2942189441837226, -2.4715771243751226, 0.4617271801485095, -1.3054611274711465, -0.6148341510806443, 0.5230236705061742, 0.1948581130574186, -0.8314871492327359, -0.23483236113230144, -1.3665590045394855, -0.14329578244546745, -1.807462368498706, 0.23801683948070443, -0.28981493648460016, -1.4362173161200273, 1.5602518232258726, 0.08045279279873387, 1.249783890153001, 0.026976636733625492, -0.39284231136024667, -0.20541102682291998, 0.39581632483835966, -0.4271835840370606, 0.8371704017648944, 0.2635251007081735, -0.7014811604960124, 0.0874164574098187, -0.6090513936305421, 0.24235117892116984, 0.9810895192151013, 0.8051030956141957, -0.033711366761932496, -0.1405561945796084, 0.8932360765812469, -0.2781538960944018, 0.19083714569711607, 1.1680467944309245, -0.876802883170169, -2.5359882587942857, 0.15717459862331037, 0.22749278757750177, 0.04618501623459061, -0.35514842522056567, 0.8668706188030013, -0.9972708114342066, -1.9786433296694181, 0.5447603805656711, -1.29987773563286, 0.24422468441969067, -0.8780654507613918, -0.1375102757192428, 2.362709945312936, -0.5102994863283247, -2.266949913807307, 0.47287943204761507, -0.4958325728592973, 1.6089495844965989, -0.4037770686515219, 0.9353787074591674, -2.113107054187719, 1.6432896343445524, 0.6023089914246612, 0.6625981775877482, -1.1477561641710432, 1.5082843130642087, 1.2879637708344551, 0.9632684685006433, 0.276232984051142, 1.3144782369860601, 1.3209816351528552, 0.053796140071209864, -0.4016237646146306, 1.0207985074811297, 1.471863012837933, 0.8696374882353123, 1.2014866344567057, -1.8078078993421411, 1.0601815230005722, 0.2828495091475873, -0.1316931030152692, 1.9409424148662304, 0.4796806532708648, 0.30952752417150853, 0.642261212971914, 1.2972810373469248, -0.5710516304874607, 1.296428671679604, 0.1882536400549766, 0.12024192413580576, 0.7482144125451611, -0.18022449922123449, 0.5193597474251914, -0.00015134736402941756, 1.2060122914372473, 0.400987603269216, 0.5805204623048469, -1.052764847449791, -1.0899041626739954, -0.26209920904526157, -0.45158221578290686, 0.23523486252012651, -0.45909954643471435, 1.0391700460549405, -1.1768146617436632, 0.6791469709199983, 1.011174817648215, 0.411199894209508, -0.7152198360224954, -1.1980320139463696, 0.4839032883340431, -1.5745057434452947, -0.41956356832710956, 0.9839964884211916, 0.015979923325116736, 0.2762049181371265, 0.6098483704805613, 0.4862291698694014, -0.4624922500096108, 0.2846677372677902, 1.367317839020472, -0.9474871099590387, -1.756106996546998, 0.2988197956163671, 1.495739110209002, 0.9277333393877758, -0.5643132881556219, -0.1558226529617167, -0.4888512541791814, 0.3410030049413046, 0.8125696535679003, -0.14506424114808303, -0.5563759421336263, -1.413259141058041, 0.4721963640474325, -1.336800515204708, 0.15802207902328172, 0.7713401976605815, -0.8451617487867245, 0.34178117698250476, 0.6229076512220945, 1.6110932188650129, -0.7181795974169856, 0.009266781617777662, -0.5588298639233481, -0.1767614344743045, -0.9226697694236917, 0.7076376663118469, -1.5566853652081156, -0.8619329742338163, 2.051139469309425, 1.0147636236527358, 0.4182684075319435, 1.8816350118726597, -0.45231597591557254, -2.177291625468745, 0.2818036067134789, 0.3528969484018996, 0.5094505048346659, 0.9557302887303304, -0.6754668943387816, -0.02729241829228328, -0.10185537856378798, -0.4591265210119423, 1.430262537673349, 0.2931013470203736, -0.42349373411850877, 1.2895062553420336, -1.254123931164029, 0.007274426609199737, -0.6746114093338123, 0.9946171745115864, 0.2864085373632313, -1.2280764417902754, -0.52661829084419, 1.5827795236366957, 0.15024675730990028, -0.4248525421861309, -0.5691386244762248, -1.2497033166837888, 0.7243884070840325, -0.8880262098400197, 0.022565602731663952, 2.813014693165735, 0.2524261198492061, -0.5815627560037311, 0.065952148847621, -1.5839049003439432, -0.32991814907198524, 1.3189945049352763, -0.9633738886349973, -0.7205611597593764, 0.29087939445256583, 0.0057889375667351094, 0.02150375939915354, 0.5103962896847007, -0.7791629303501022, -0.1566257320081451, -0.12533254753908293, 0.3677730246474584, 0.6808297404105077, -0.006814522630420675, -1.6332734431577842, -0.31084462878259445, -0.2816212687484363, 0.8306217769227588, -1.4223291833641392, -1.1328914140136568, -1.1798315543869777, 0.25880349272739006, -1.176722232598049, -0.9138103973636641, -1.4195908701604916, -0.9995107551919223, -1.82773175657593, 0.008499718134879552, -0.3447023347644645, 1.296344926519369, -0.43328033036609237, -0.6691715014457149, 0.5815463164249131, -1.351170406870033, 0.948354175015636, -1.7460166934842984, -0.394637468929365, -0.7854270758121915, -1.7802874942339497, 1.2686458890561711, 0.8564108501854661, 0.05383532865352654, 0.6253901471648027, -2.202145401537113, -0.041531422478273954, 0.29066318209770114, -0.5115801644049819, -0.2316865971443836, 0.04820236445222125, 2.043254030499081, 0.5378888526826829, -0.6502743062505872, 0.826238085727147, -0.9541804382014959, 0.6060754235439968, -0.27474418761709474, 0.8956610419016614, -1.0996407788536786, -0.257368300223374, -1.018696411251144, 0.6579800168488112, -1.7964528440425043, -0.8570639935152126, 0.42330444919804316, -1.1285000187041665, -0.25650286505666625, 0.24632151425551105, 0.24962408033917283, -1.156431660359815, -0.2432666473105903, 1.822498098193285, 0.3177090775637023, 1.3319015834176797, 0.4571443687995678, -0.15115069978271048, -0.9271093020874797, -0.4004107535270797, 0.18837621181964065, 0.2361034586065518, -0.049667590380486994, -0.7731735216366021, 1.5079696883540965, 0.2547235818307659, 1.710880865859913, 0.25423148693344516, -0.12417094682887361, 0.14355110585703812, -0.30889227644936884, -0.19518744408626176, -0.38657348236703737, 0.5747008941265317, 0.7763218624280281, -0.7932199304382765, -0.38004377705918146, 0.5546620950055203, 0.26238802318984583, -0.567803366150921, 1.2155283753301906, 1.1841352702569934, -0.36154499394302375, 0.48355518941861697, 0.028516722473608622, -0.5872424427404682, 1.3501269652114032, -0.4684289952147731, -0.3722041294537168, 0.2884795399986682, 0.06557171746910258, 0.04187102672842283, -1.2970923134475996, -0.01629195036762023, -0.9112994229878664, 2.0590829933787136, 0.39400030768000005, -0.7975908049246164, 0.24046578837235552, 1.504682832366687, -0.8911225638653535, -0.3936854489607823, -0.6384138322177773, 0.29369615979985814, -1.1026872898279598, 0.4356763930115034, -1.4259861740067266, 1.4839827513865715, 0.16538982992587942, -1.2275565773734964, -0.6469351862385775, 0.7977508692229875, 1.965560992268791, 0.8204484828263375, -0.09569261310086963, 1.0444105776920733, 0.3981939687558286, -0.17001990885000728, 0.03191303725869083, -0.22703800554331624, 1.8139801219827336, 0.918270672574204, -1.4990654058428237, 1.2013287338621885, -0.6573210575280002, -0.3475342578604577, 0.001024958794340004, -1.3091664900629916, 1.7052265295882478, 0.4253120949833701, 1.0311326194819417, -2.329708589685058, -1.5666613380497623, -0.20129982865454085, 1.4540261677025847, -0.062796460600534, -2.3750929169938804, -0.22853438210232366, -0.9911165491373074, -0.9849697798584544, 1.0908056348553017, -0.5335895092359707, 0.7114854381779321, -1.2006864703832458, -1.402537825666173, -1.6107945297750212, -0.06522295552167409, -0.22244804258316303, -0.6353277757640107, 1.1342357318491285, 1.1802856827413442, 0.7358095889904793, 0.4322781449509412, 0.1993641699969819, 0.04402596162369398, -0.618389217305553, -0.19855173166745999, -0.5969933305425132, 1.2023959036495757, 0.10533466463098612, -1.4071046643902017, -0.30217127261876753, -0.04403547820029734, -0.2335959164195668, -1.1388382692559194, 0.7969342297703721, 0.0025006347911576314, 0.4618061956689532, 0.9316220945417517, -0.586857161879394, -0.8038099773962392, -0.561632309015, -0.7319527488671081, -2.215500214281302, 1.2095052233589756, -0.6324676669003331, 1.8213621585713746, -0.16201666001698542, 0.9771306394522535, 0.08884650272073365, 0.17119383734576185, -0.052205598859868016, 0.6308204756962924, 1.2742399221121468, -0.8729416492214658, -0.41451142025139015, 1.0896473253676273, -0.11531924092553854, -1.0449722114717626, -1.3905060397760676, 0.01745826015650065, -1.1196034509026367, 0.16835781469295008, -1.1337994252104073, 0.6707102828626799, -0.1611008305495774, 1.8891773441773552, 0.22194994994725567, -0.8221389943598081, 0.14773366666584706, 0.7482169422869621, 0.8634619143586166, -0.28955079825767266, 0.7168358822007905, -2.0710700397722674, -0.5577499923860028, 1.3594786178950642, -0.06290120845238856, -0.6203795676764393, 0.37363430210542137, -0.6009801257039329, 1.685628214162959, -2.036958121665058, -2.2425671656367667, -1.9918630409006053, -1.376958147267138, -1.8638660542434666, -0.9750244314786808, 0.9080815115907477, 0.018142080648009342, -0.9320767794783268, 0.26546536698365886, -0.7622509288960355, -1.185039046008763, 0.3997987346703504, -0.8390830626369119, 0.7664612539005661, 1.1452390705220412, -0.44118709528048106, 0.26214721724628937, -0.4951545553209257, -0.11879885987832625, 1.3282328751747563, 0.06968815002457066, -1.1182821619345513, 0.23652079790675906, 0.3692795793157511, -1.140728747827738, 0.5263061454716625, -0.5207546968661813, -1.503533271861299, 1.685912359362119, 0.034636130743337525, -0.48051165567394033, 1.0460524144567587, -1.0839349618672527, -2.1211644723131724, -1.0311758922985133, -1.2021446452680054, 0.06983434930473358, -1.5815367050307532, 1.0876986546066656, 2.0186122729964926, 1.811073181558942, 2.061655680618017, 0.8146717603062831, -1.5968498453112046, -2.0662599115172653, -0.5461790439353942, -1.293954740300037, -0.04669787176283761, 0.23146865620783758, -0.588038234461568, 0.5933124208465305, -1.0163085846469417, 0.2521752390452931, -1.2106468003843902, 1.418999037385018, 1.1108278459257963, -1.2434580142633445, -0.5105267831106245, 1.962828854249686, -1.3742391623665489, 0.36301946174407, 1.9887587169725671, -0.11568422609670699, -0.642928398294438, -0.3803110761017083, 1.4124073508805255, 0.29869224683807033, 2.0608887843113273, -1.357435592557576, -0.04818489310611712, 0.9811928870760606, -0.40967432838228596, -0.3030480871350583, 0.9136149401717509, -1.0208925536710525, -0.3505675095839659, -1.71190823631273, 0.20144681297018477, -0.7142725656031783, 0.10941276154357217, -0.010518057969719493, 0.7986018616075307, 0.4091757607417071, 1.3254764619646495, 0.37900863212459757, 0.2801496864889041, -0.4903324954119249, 1.5611921907449, 0.8801581363850509, 0.23899617476391827, 0.4941237199528515, -0.19580489922245364, 3.06700252986585, 2.075939890459903, -1.0531656839887626, -0.5746240339508544, -1.2509817722769654, -0.02930485583633999, 0.4955890468754583, -0.18287439285074464, 0.4428019418512945, -0.7067595339381431, -0.5880758813860446, 1.1741037427266254, -2.2845558148071, -0.20091142427273523, -0.9327486743061679, 0.05419468096069937, 0.5696294165103171, 0.9711793150927074, 1.5638669636681488, -1.399980051448174, 1.6694377251663244, -0.5244820252135467, -1.257281067913892, 0.2808453440838143, 0.48904471670322064, 0.6563624003164797, -2.403734256558076, 1.8072200656396853, 0.7479993507037666, 0.8957599457510734, -1.1333475754839513, 0.6052811339871745, -0.4713654733277363, -0.7018354826915972, -0.14295613102166807, -0.854329570376376, 2.600781602195285, 0.15947531968114928, -1.9492123387745222, 0.4025575201110334, 0.5377569832746467, 0.8230410704104014, 0.38678827937826166, 1.1036337112977639, 0.3934547673395094, 0.30962342705126583, 1.139829687497562, -0.6649904581148862, -1.5139589626882188, 0.5785053189296201, -0.6976263977299514, -0.48521233846001877, -0.9001322196203593, -1.660622472181582, -2.2786897073448547, -0.6396523522765016, 0.42857993052128573, -0.47159666033630393, 0.09912656547054303, -0.8978325685014887, 0.63667062531427, -0.9285968325105913, -0.41245780364313256, 0.191616368806377, 0.6617774942176655, 1.3566617676123918, 0.02766324341023624, -1.0349560837804677, 0.9570579186595424, -0.13078780011810998, -0.7995854873426, 0.7151367410023329, -0.12167714338407565, 1.6209549425055911, 0.37634955414789306, -0.6846815563905236, -0.13340769738466304, 1.62999490749593, 0.24590379716684088, 2.080737900190375, 0.4807972440746681, 1.9233090609717092, -0.7457053375145688, 1.2931674090867675, -0.5389819127967479, 1.3378716219526687, 0.46191592051764446, -0.12685025114948897, -0.564392245951514, 0.054901669351109676, 0.9390772175487241, -0.2832080542168339, -0.2454859351558673, -1.8832700802531435, -0.16505100921916624, -0.6746837003668393, -0.1357900352713401, -0.2041348043523018, -0.37391290726473403, -0.4402500408509159, -1.2290888874925296, -0.13562273551657536, -1.6500691440373887, 0.46665062174560024, -0.24566106658181208, -0.797744380603796, 0.055547484850162934, -1.7195390885648585, -0.23801758053719915, -1.3385900681264526, 1.5281883065641328, -0.7190676510974615, -0.123355719896304, 0.7764022341446827, -0.30040150524704784, -0.3686167969737519, 0.0943659621832766, -0.3974661297032506, -0.6247729926926385, -1.3907256888978008, 0.3787327798855857, -0.1261918572820217, 0.333666129561352, -0.2268078626149827, 0.35899627766440534, 0.4003040718066842, 0.04939169628599765, 1.3181095248614239, -1.0040453137475622, 1.0270565232586033, -0.10527902120387268, 1.0184000283100978, 0.37032567852749, -1.1038727471781569, 2.06240141354978, 0.0724635819839709, -0.6749483178493708, 1.3752140381174898, -0.18527094825241655, -0.49771622437764096, -1.5563678592094914, 0.30641413633727077, 0.6888572155488026, -0.7813997319688913, -0.3334732608283706, 1.2077222840020747, -0.6696185160915793, -1.7441216997483413, -0.1443175790084589, 1.2530385228003316, 0.48953706269055897, -1.1454774810030333, -0.10072099150740713, -1.4690725419140442, 0.22773646275302892, 2.1495481922715567, -1.9763318246520143, 0.3734138241025368, 0.3678799166519874, 0.24199407601003217, -0.8317998284783682, -0.6175366203935166, -1.5435990936321167, 0.15257075985667826, 0.24569789929243, 0.2973109282823203, -1.0464692699857279, 1.4335012256250086, 0.7760340274462584, 0.030779877800647056, 0.13317012902523476, -0.6096349652250187, 1.8769504574256326, 1.8165778911592796, -2.029543137642918, -0.7314038673207472, 0.16788051959333397, -1.287512490286816, -0.17978414420698238, 0.6413441803591936, -0.03816736449793848, 0.14195508782466876, -1.3077696693750356, -0.2788578604231624, -0.7927822730097527, 0.033625917152435035, 0.22077326511399206, -0.5309962861055292, -0.14874114920579462, -2.1561599667291262, 0.21857950385145597, -0.39674562813596553, -0.6172994137123726, 0.7237763615783379, -0.6628173764404989, -0.09955687084553429, 0.7661708667508003, 2.050182109550436, -1.1343231763411903, -0.394150602661191, -0.4005731600700831, -0.6133729043121271, -0.006937209118528061, 0.8746192365726885, 0.9627065829455164, -0.004195755687396656, -1.431856899763485, 1.1723324732423348, -0.7907307751741902, -1.2383233071901971, 0.4450622193871014, 0.6135856643531975, 0.41087999419331056, -0.9106010889982076, 1.537140159071271, 1.203007531467209, 0.4522478618181492, 0.06901440689355592, 0.5616178375297155, -0.913304278073554, -0.617052799856045, 0.8513556242527552, 1.6492263827929101, 0.28736119321050707, 0.143060129811001, 0.13159474089261292, -0.556050658038526, -0.6819127080659984, 0.2854925491407574, -0.17685951799635244, -1.5861004634732518, 0.7398075993729516, -0.13718006475583142, -1.2360195428922787, -1.800475631340105, -0.6653270917294025, -0.24529552485016695, -0.3070462119648475, 0.5209731324914566, 0.8294618413486863, -0.17019749451831728, -0.23619342552685957, 0.03462283540349657, 0.2479211831622872, 0.721589399500632, 1.1742488499645927, -0.7209553934014017, -0.5677211833764197, -0.8920108887781215, -0.2951205793197307, -0.194041077024394, 0.07201516715432071, -1.7926897922269955, 0.5269357871669345, 1.0775869197853591, 0.5356448376759921, 1.6180226180054886, 0.09591731457863975, -0.3033610094512978, 0.35200443059829245, 0.6372500799705507, -0.6470129923265721, 0.4563870076575751, 0.3086697829408736, 0.15795477733282282, -0.28995254504887596, -1.3608513191181555, -0.5174181206012595, 0.15321158202821022, -1.0735391094616389, 0.9498709387195441, -1.1791274655949502, 0.3401662792087062, -1.3746370296756663, -1.820015514626756, 0.5904282098582874, -0.7640243887629617, 1.899332176169294, 1.8001612651602614, 0.11754067768731466, 0.3451387680566698, 0.4252773778706197, 1.2930499113213374, -0.13497558680801955, 0.8295099746093358, -0.06483231029486143, -0.4626305949889216, 1.7974505990090723, 0.357954244463521, -0.9446699924851863, 1.0753715521250267, 0.6468347012501044, 0.7325172508900486, -0.8235967956477911, -1.8197269407302108, -0.7527397495032649, -1.0471331516010438, 0.954992325464375, -0.6487949930861694, 0.5412489072541421, -0.9744135424772613, 1.1668079912055098, 0.5071573516626207, -1.4971922309648993, 1.6732330041304837, 0.6658466177075605, 0.004961040538083645, 0.9766610530990674, 1.217004629489626, 2.15632219900788, 0.2992554016895504, -0.19074076031070328, -0.08513462495764972, 1.4398343939227665, 0.7531587527492296, -2.434314852616728, 0.018698508958621483, 1.530666394156561, 1.4174088220386398, 0.39311606885126577, 0.8429893215764661, 0.6889143877613391, 1.7048899457191737, 0.8279914080421767, 0.3841808718708592, 0.4345613421962533, 0.9814598643661121, 1.1001489018141712, -0.5361865265613242, 0.21775129927781378, -0.5197236573250131, -0.9476378494963715, 0.8334286814456744, -1.447030660023786, 1.6027755842182616, 1.522909575863655, 1.3672741814009857, -1.6085273302015077, -0.6841212925165058, 0.8714988428569002, -0.7180711780751314, 0.5764950939705556, -0.09035661359187494, 1.0682344096280718, 0.27136338383972597, -1.093914555087802, -0.37115833509731555, -1.2339441459427007, -0.7985138795193706, -0.07775530075881103, 0.9386977073001513, 0.3186949805078729, -1.0013479121939963, 0.2068538637260416, 0.46704881675224336, 0.0930693446845866, 0.9087490791207049, -1.1095909880643675, 0.13620180501268486, -1.2318793580686687, 2.3698156234871006, -0.41043047284201517, 0.9647930068590418, 0.7035313262086113, -0.7357611817796008, -0.33944606940905453, 0.975792856064161, -0.7580109890249522, -0.9388831491865992, 0.16631539872440593, -0.9686623661641447, 0.11101021374002976, 1.2833168243970015, 2.3501189146758734, -0.7419808119512225, 3.3177770321629443, -0.378854974046106, 1.1894959769491664, 0.5170237486499323, 1.449757482527173, -0.11005429828053218, -0.7094783265215441, 0.10745076413242229, 1.6224830274878241, 0.025460594268897623, 0.6425343157670212, -0.31898415130533375, -1.0798679506403541, 0.5735256411790288, 1.3484671879831278, 1.1276215638225833, -0.7541391904025803, -0.00765546636667677, -1.4513065159005456, 0.463408611045455, 0.056782072073773386, -0.3398650955417231, -0.3278301461019186, -0.5506101111181769, -1.838129548833068, -0.6528412434007834, -0.22203922522726993, -0.11557789598708554, -1.9693756516575391, 0.10517217800088413, -1.034395434153627, -0.08008953380065702, -3.0001454304286095, -0.7355092140807842, 1.0594616327950752, -0.4189488435377704, 0.16781086931278816, -1.9669454509751187, -0.731458954443067, 0.01711080123922268, -1.0063738446337889, 1.1320693665450008, 0.31382355603718387, 1.0723003552935109, -0.48887663896467776, 0.16351892393813683, 0.6923423498891493, -1.2674896295636169, 1.1497258936055144, -0.8608042226343801, -0.9164072583967519, -1.487718346596927, 1.4350188139062847, -0.21184761253034057, 1.3710129669800468, -1.2943315365568762, -0.19362259003418086, 0.7187438609965356, -1.4536544736540666, 1.0156800590204957, 0.5854427384212253, -0.5260200198486596, -1.1553701278196844, -0.27349200057360523, -1.2338491844820385, 1.7074643949762172, 1.8501418087438086, 0.5436111298236262, 0.4744077558142584, 0.5678560114121703, -0.7181957190268707, 1.9652881178044732, -0.6639884519602309, 0.3479450777176482, -0.7279578424760957, -0.46058272586248855, -0.4390700834752314, 1.485071764115552, 1.4888034597366457, -1.9695365549171249, 0.6506253211085398, -0.2486297625885688, -0.5519419806661555, 0.1895096241785028, -0.8790965213306376, -0.6376838625799586, -0.8514356912425605, 0.44713349005542324, 0.8885460864971125, -0.984898049801574, 1.9226056756793166, 1.151756816890297, -1.3439533152505785, -1.3828305275303805, 0.9810008154794896, 0.5550625182987955, 1.9741629526950777, 0.8414467402239644, 0.9903516449069268, 0.30384787269295527, -0.5118420624618873, 0.21568313531934488, -0.1906549073376802, 0.9872047773741, 0.043447057275043346, -1.0722974377446446, 0.30840240507887645, 1.231529689961776, 1.289961254197282, -1.415052295757837, 0.3542872190261509, 0.5064578533223967, -0.7014386812841402, -0.21695269183024965, -0.8504048338756758, 1.9671268250571596, 1.0909763189822588, 1.1465910271880095, 0.9300579839066637, 0.19877285881355367, 0.4033127688590755, -0.5693078627176211, 0.2771445813826407, -0.5910526566968882, 2.277491279753263, 0.656638231269999, 0.7966594580004646, 0.5030962029782104, 1.2239112871910003, -2.135423288869684, 0.956905678821742, -0.29364649759959877, -0.5416351205869433, 0.4524513169226536, 2.1047567102187923, 1.2144059061100803, 0.15546139261435685, 2.0078238030698636, 0.6830117763416009, 0.21062683777699748, 0.3680381824722795, -1.921358153981379, 0.8720229260359057, -2.4572973110469056, -0.6789193350439231, -3.616244826516541, 0.5200969859479287, -0.8348270288277571, -1.5574761449522962, 0.6081958963575117, 0.19058848286262964, 1.0023339789202066, -0.3112079672420133, 0.44178370023062646, -0.5048076251130126, -1.3994069725233815, -0.17955195369335797, -0.06758378480990582, 1.7922435643746273, -0.6192862077789711, -1.6310903545738005, -1.1690021151149572, -1.2093145024199112, -3.09516529226863, 0.43169942287551266, 0.06218865917825329, 0.5839211556095644, -0.7134319737419914, -0.9162521618284151, -0.3378876880640738, 1.2878146580745333, -0.15439993951522968, 0.3077351479215355, -1.7206306176358126, -0.17985102389955504, 1.14519788200572, -0.8522103401341584, -0.3963647723939556, -0.7056726337225566, -0.37501801123158296, 1.4130923511612945, 0.11630436842876272, 1.185142796653237, 0.011204445485047487, -0.20302508970364014, 0.9178670073251192, 1.129883095823573, 0.42668333759774785, -0.7693262395031812, 0.5989106795317751, -2.1834227246100535, 0.5078594213457716, 0.9932110431979975, -0.017934502044962136, 0.014618718399019298, 0.43615689634540583, 2.2660916638054056, -1.4481002752982226, 0.6458685948033749, 0.45170197162057635, -0.7387052243324294, 1.3393361998974052, 0.6185085759613994, -0.36812460265029606, 0.11464668364155528, -1.791669964880979, -0.7254503276995763, -1.0220519870845493, 0.7459004970720945, -1.240093138147424, 0.36284766593900053, 1.1310636505387424, 0.21609065407695296, 0.9901982501221922, 1.4142801306207733, -0.5075874816754351, -1.8009636793346049, 2.3589933091709563, -0.043963810041906456, -0.9225837945409925, -0.6390092243100048, 0.10006348512241166, -0.9257763652451753, -0.6194490923758899, -1.0763155593061657, -2.788511038384896, 0.37967646564114543, 1.4376287260090312, -0.22804268789046647, -0.21979058106116164, -0.18220420821816138, -0.44937185484417963, 0.5740193687324415, 0.6373983419863073, 0.5856219393424119, 0.34112426931531764, -0.6084945465256884, 0.060234739722926374, 0.7847874077044223, -0.31357045824328467, -0.4526081006714111, 1.3140655172664333, -0.6237624307170951, 0.34610293084708627, -1.0050719223251598, -0.4541508223849615, 0.10854220774737425, -0.602040653782272, 1.0547536665950978, 0.7073102150037632, -0.9555005854035606, -2.0723034039377595, 0.5893216873540514, 0.1659232479155957, -0.691145872673244, 1.8692666106818923, -0.7005044755324946, 3.406168768770632, 0.6178045437029894, 0.209522404413903, 1.11020426427447, -0.935303827291181, -0.30107511733828557, 0.0005771812107460632, 0.6289350238005109, 1.4317466616428682, -1.7337209714531534, 0.33652676986636315, 1.2353463697524734, -0.5758839644664974, 0.8285985659333751, 0.018064999514862144, -0.8583929015402073, 1.640939453974592, 0.5647216927706189, 0.019320381958476556, -1.8626818101777476, 0.35623705928968014, -1.3920535728295902, -0.04025364308925709, -2.1219812182033895, 2.2492879960896084, -2.2117506504974447, -0.7015293372430998, -1.3386346301502519, 0.45434785513478976, 0.7429073598196138, -1.3842131227703087, -0.730674268674942, 1.8189971647722083, -0.4758820769224347, 0.4409253327910705, 0.9449444726231594, 0.551630007075062, 0.5399541172046803, 0.3885563045101157, 1.524994279141021, -0.7974884472315626, -0.6568938854009293, 0.27947376218479614, -0.4955153130182802, -0.08942974231790239, 1.3102764929145028, 1.5444242142322857, 0.476164533281359, -1.5496430190473407, -1.8678225332641818, -0.05437993080264503, 0.3236472053381355, -0.36746508462131555, 0.6826304187866886, 0.5736299498569932, 0.8053111300585767, 1.7107199047271453, 0.5683041332657001, 0.697952343937172, -0.6541864315768986, 0.364406640125318, 0.39958220554572854, -0.28761598269501143, 0.6201596788722094, -0.3666201942589558, -1.4101911998665215, -0.4412538914508458, -1.6829197968369678, 0.32907480828411917, -0.24881581245959397, -2.027089220978618, 0.7282873752125394, 0.4579330597709827, 1.15745181629871, 0.3236159180652725, 0.15743561049159477, -1.4532306051766954, -0.5917126528319241, 0.754060062389077, -0.3751247341071256, -0.4967717054593357, -1.1834916327999798, 1.2936501822037318, -2.0961349093879544, 1.0842624515579264, 0.004210702344412748, 0.8784821536444274, 1.6211488910349103, 0.6098625542626688, -2.162347704092384, 0.14557157851798416, 0.1956419307017713, 0.46311517202542646, 0.2606189680155636, -0.6442854252008431, 1.2224106966606128, 0.9032792502072324, -0.5921632526896037, -0.4403250314077104, 0.09900173255653308, 1.588518953960295, 1.5514984760944803, -0.1988361913928128, 0.42122454074468846, 0.09171832221402072, -0.05232317203714638, 0.5107161167447202, 0.6648048184574585, -0.5326903183397282, -0.40375562127323683, -0.9755898265306233, 1.093816318098742, 0.8299243008006667, -1.4928026705324111, -0.6150924237870229, 0.6827457566049314, -0.1250927382677157, -0.5461042938952528, -1.9785054425068482, 0.6621698769014782, 1.6911825874334077, -0.4512292838434167, 0.31893183399956626, -0.06938245071569392, -0.8685919574091027, -1.216755898801281, 0.43218338233503684, -1.482305424213906, -0.20624326083624842, -0.0987004649563861, 0.052580690462736515, 0.15082170348420298, 1.815968946976184, -1.801525657427965, -0.35269438817590215, 0.3165612132575932, -1.1274985211458544, -1.2081895706309593, 0.8947763791232438, 0.9256072483796912, 0.1160156247366876, -0.44837495229842944, -0.2739183590275094, 1.1153679055306462, 1.3928570054101417, -0.905378910739902, 0.7753045815203952, -0.33105364449783375, -1.5667536820401184, 1.1950148433456729, 0.354165616551781, 1.7647325336720354, 0.34842243659368244, -1.1445904695784506, -0.6488915404249679, -0.154811442924692, 1.647219601375317, 0.12852481855920034, 0.004310308986859974, -0.876142611650797, -1.1969960098569172, 2.505246673635534, -0.01839259972989579, -0.42338324819041095, 1.7006327293948955, -0.23835669566472859, -1.0830569238314645, -0.5058031215088832, 1.1137754394535067, -0.37799051437745823, 0.4689867373861166, 0.8846331641907219, -0.862827297911899, -0.02378812527403701, 0.7260021867969293, 1.1597883185839557, -0.23469208225352878, 2.113734390813324, -0.43787079759759806, 0.40094481205354565, -0.440940747042338, -0.11638255103314456, -0.5976246285724223, 0.10949744083274207, -1.213522552035225, -0.2801704266168622, -0.23088144999338397, 0.8531392120125499, -0.5131891025804275, 1.2147647043866772, 0.2396978620703071, -0.6513123608903771, 1.1189830026785335, -0.329502482141717, -0.4408963005006592, 1.7621110917013203, 0.37263249289836775, -0.4859330788946545, -0.6067042421983502, -0.652281974301976, 0.9767244079433385, 0.6586845642819952, -0.046623060723555695, -2.1849581690080555, 1.0767435169705282, 0.12722050362405046, 0.9986033617806298, 0.3243622406515602, 0.3488571494425995, -0.28194417652034437, -0.5174529713073618, -1.1589669416210095, -0.6257925557519216, 0.7845203905386896, -0.34496828558498516, -0.55392401828593, 0.21742125464736634, 0.1940339202350278, 0.5181013615346238, 0.6838608318277294, 0.0963437586410137, 0.16605883874954933, -0.8192859105507256, 0.3425249914970222, 1.206963641510476, 1.2072370620006596, -0.09132107400635489, -0.4915708710890753, 0.4788544238385019, -0.8129680193587631, -0.3597416459932602, -0.001935251987053423, -0.5173249508895911, -0.3901095063695634, -1.8048261251158957, 1.0191412836502698, -0.15735909472717494, 0.3259968219452401, 0.2983002122558138, -0.2865809153674455, 1.17563374798573, 0.9503886873331864, -0.017150838121724413, -1.5498598643101793, 2.568724923652603, -0.08029464734292162, 0.7019319162248578, -0.3680243157771866, -1.526918066370356, -1.5059053494163779, -1.509751062694838, 0.707105319149386, 0.3759576560377138, 0.6475726058839647, 1.338795258808114, 1.8598847911090388, -0.05763592033876413, -0.8688135009341061, 0.019960962804798733, 1.7401095555504877, -0.6280597716378297, 0.3473435634019159, -0.4462968771961304, 1.5433942416056965, 1.2587933112859289, -2.78079601104039, -0.47512302722136024, -0.065984099161594, 0.6888533485394165, 1.2305141892155638, -0.6518789292799052, 1.6086260544405733, 0.29196792037545233, 1.527761638614743, 1.6303894518830946, 0.15132243302789938, 0.7682912494990076, -2.7992162064438526, 0.252765632632188, -0.18536494230320436, 0.1286412370033291, 0.7444904216395526, 1.1101965867010084, 0.09583878264956507, 0.20541837056183218, -0.43900022720898685, 1.8446971502738685, 1.525269777862721, 0.34107287068465036, 1.370225466799814, 0.8993074950529176, 0.388987193739956, -0.41615197068085047, 1.6959480854121158, 0.6560019605281613, -0.059249535360658356, 0.3641096108993, -0.37088956582253585, -0.7118422460610452, -0.4547337947749852, 1.6833283452032104, -1.6932063886335549, 0.33007518208148007, -0.9793326842802514, -0.5685406484500056, -0.6764406676203423, 0.27223581970527805, 2.6210019152932134, -0.09677977060333055, -0.42338854207086507, 0.46197386760890474, 0.3011535518111016, 0.3182607957611916, 1.1190392605031392, 0.10747571439392618, 1.3205623217552738, -0.869982416258327, -0.3050369611353702, 0.3649867693439435, 0.7208855533271251, 2.45889669000764, -1.6481274773858574, -1.624333610347512, 0.5392519410260627, 1.1694640247181916, -1.4936888563147976, 0.22169790172897152, 2.47683597304532, 0.8476731372760178, -0.08882181771534245, 1.575370258034113, -0.4650474770641444, -0.301534039019897, 0.7151072657003036, -0.5139154643660516, -0.8973214534592038, 1.353278291959696, -0.785705814458699, -1.424798288107138, 0.8521605677636602, 1.1173074404160004, 1.1078334261149487, 0.5060403800263849, -0.7559434902011402, -1.7506912234691885, 1.6010916611258923, 1.1400621104262982, -0.9490178938632181, 0.08236269987589594, 1.1360090499605335, -0.6822008865400492, 1.2299082010225988, 0.5747472954848997, -0.9917405164498511, 0.7860707096819252, 2.094613031828752, 0.32476024918516005, -1.542485498562725, 0.19154241112008105, 0.30669357584478807, 0.37562510410149125, -1.0038556934540235, 0.17700385429720378, 0.3866792602527052, -0.048846256996197955, 1.0608228443140864, -0.3012251999336654, 1.2156737659864476, 0.04936433736528017, 0.3300941747271548, 0.13579425531133751, 2.0300902584395386, -0.3659348731125605, 0.5084747076597527, -1.214555459415656, 0.23882541455141687, -0.7048446726313435, -1.1718879290253827, 0.10611992491921178, 1.474365496672677, -0.7345685181989616, -0.36082108102321997, 0.9999061228905383, 0.8174526543777195, -0.012197041307958149, -1.7718376142638643, 0.5003281667388737, -1.4235098831155986, 1.773715315343277, 1.219914038937146, -2.213860133799711, -0.14916713468644752, 1.7628714799535847, 0.2339849515986858, -0.03761268839633734, 2.143907078190805, -1.0015286896665496, -0.40010337492322895, -0.6566439248016585, 1.4505614500774051, -0.5810568006549722, -1.6162077232566219, 0.18463910494905925, 0.7742911410807676, 0.14496376455100546, 0.8838498428601247, -0.34941054966462454, 2.02035055742048, -0.33887856780628234, -0.8213769209241042, 0.5669351554200318, -0.42298733389277077, -0.6005548745768965, 1.6430054310046425, 1.6035130190910534, -1.0319391121636672, -0.09774507597793355, -0.6520088992578232, 0.0477880560338064, 0.5747081768308763, 0.4828001936355227, -0.10582221958284689, -1.4668221584548882, 0.22049638564358517, 1.149953675035897, 0.5356482043193802, 2.209744990011742, -0.3608091685311371, 1.4441404573947205, -2.2581574537180726, -1.13629994945274, 0.7265837346915243, 0.3097883608445818, -0.8577004158636681, 0.17114666895138375, -0.7043940938451111, -0.3009786276980547, -0.8165363388123666, -0.9289682655079575, -0.12244992044143885, 1.542896177144803, -0.8841551589218146, -0.9208567330224402, -0.6540118144074791, -0.5171796742457738, -0.6023620659122336, 1.0635672960360585, -1.134330817545791, 0.7516849917169492, -1.3768346295850198, -0.2887033795344619, 0.056463263594405004, -0.2319843130014002, -1.5167554485466308, -0.25185231053466395, 0.9501800034747293, 1.3049896091031608, -1.2018551498395114, -1.352386595817521, 0.8816491221888422, -0.5136584805608818, 0.413721469429948, -0.34300581824604537, 0.6390192112355659, 0.2576064001530712, 0.9782101083250803, 0.6357892633788328, -2.538589768176732, 0.44695349034542475, 1.7303935529284833, -0.9684600861287586, 0.10236207599063739, -0.058130587212581325, -0.6593728867487116, 1.628655977372503, -0.9761527761546062, 0.9272948375646727, 0.27513668932269936, -1.8234460501370229, -0.9808233679288441, 0.3505076901816651, -0.5696532524323059, -0.3208932477679777, -0.7983286790842801, -0.2857415896451339, -1.1602067061862453, -0.6920493662799277, -0.7209260326374053, -2.4150876953168714, -1.345197705402757, 0.5891707013601143, 0.4315664458823607, -0.6577610674094022, 0.0005062460095738251, 1.2591509479456338, -0.6063765414897068, -1.7607966379468067, -0.9508899749801195, 1.4880740849985945, 1.0865988277002356, -1.1046192339132022, 0.6131311512926562, -0.9873330073605263, 1.3013956438407601, 0.7414214926541779, -0.8920958466820361, 0.41616978812279903, -1.1208556692016416, -0.8894703034997085, -0.8309067844131225, -1.8606842678184219, -0.07194654199784922, -0.07117390174891772, 0.5659822119815847, 1.916753711583183, -0.6963548682808837, -0.7855412487214021, 0.8047069590125108, 0.18349468568397984, 0.13587660177551125, -0.36150957824597807, -0.9508896526834771, -0.9483356430836982, -0.003902815411469966, 0.6106885504696978, 0.19376914373215087, 1.1932986357592312, -1.097567907692405, 0.25150655593518184, 0.4292062014732737, 1.0191286705659799, -0.03253742612676552, 0.050433113577438515, 0.10814583704412964, -1.05385401691128, -0.09071516667529367, -0.23849827593955103, 0.23738288144814607, 1.1169088997424437, 0.5886653092379591, -0.24354050181310793, 1.117611053039336, -0.2161013013225925, -0.7694711307041686, -0.2800587010869735, -0.8093412890185301, 0.1259803458217062, -0.3736394395978573}; + + +static double gemm_C_dram [64*64] = {0.029004260079962152, -0.8006824757561799, 1.1197336711178068, -0.9896157373454266, 0.4966790956650833, -0.320720861795497, 0.2404711868912757, 1.7983471339688688, -0.45215688264510606, 0.896961504429265, -1.1616159798557508, -0.840560393015905, 0.07480233754961872, 0.17992670342491432, 0.40524411436169705, -1.6268041045901802, -0.515842081058143, 0.3550333279229013, -0.7169358889557749, 0.2669144829157952, -0.7584809853254146, -0.8370380914872608, 0.48072270248825516, -0.40604137567306653, -1.0335439663756396, -2.069883524764944, 0.6487461014247821, 0.011710122578667713, 0.7558956908425195, 0.5521614840818139, -0.25174889683631496, -0.9515208767957234, 0.7906470835496024, 0.16009301473206583, -0.9156242627130992, -0.8294654016291866, 0.6405496416929598, -1.1150477048464416, -1.4778148420891877, -0.6532442833617729, 1.0668677881031745, 0.42505345945888107, 0.07673387953069587, 1.1717799752861355, 2.372817497973731, 0.31201596993898206, 0.6638888271489586, -0.8305561220137307, 0.028066442063465726, 0.5327162396709624, 0.1408772044753154, 0.7686937307721734, 1.2407913952843508, -1.7571668440478188, -1.4407261503018678, 0.46966304643082196, 1.067965459457961, -0.39086059969793585, 0.18266961756344147, -0.09601667538677204, -1.6541976778103968, 1.7762728362797546, 0.044625271683577473, -0.05332555492084246, 1.5519660869822542, -0.5164453460006669, 0.3735110292906932, -0.14055947835504265, -0.4662885370095864, -1.5754096176009653, -0.5279910388184064, 0.1877355482506709, -0.33550084881023345, -0.2335582239599356, -2.000574246170347, -0.5830606097499693, 0.7201314957738653, 0.2767541956493462, 0.4410172346230466, 0.1496171764974113, 0.25584855399911693, 0.4231757850905495, 0.819138838244574, -0.21665970285704256, 0.7993969106462642, -0.0524553739237593, -0.10297969217994243, 0.10341500732243082, 1.3960023077483688, -0.3532908554905869, 0.2203147660382962, -0.09582033114984764, -2.2210275614128365, 0.606197840696221, -0.8083685791528877, -0.5880259036476851, 1.3096925869345688, 0.14641410716326553, 1.0053476857132149, 0.7403000763828661, -0.5588102569869894, -1.8250095277930243, -1.0186046335834653, 0.7832698999328468, 0.3231401688432538, -0.8047074876514235, 0.22535724026429152, -1.3470992648831748, 0.4765280552548135, -0.04554836049444112, 1.0856094027781182, 0.11016455864671677, -0.07169925780054585, 0.0271210087334666, -1.880645185815656, -0.6627766870787014, -2.8871893512281774, -0.5590779904078584, -0.2852107316710877, -0.14430057889633358, -1.3447542589401562, 2.2915669321114898, 0.1728899952093592, -1.421973566402149, 0.08592097416861628, 1.0123703420638568, -0.9558110283152651, -0.9027941505852196, 0.5300767150099646, -1.9419175079586657, -0.2760382915222782, -1.0179287043200682, -0.1606599622524637, -0.3767181010147598, -1.1725123233730355, 0.9572648447195339, -0.1936224437544405, 0.42763321723323666, 0.0597133381305523, -0.9990105347232393, -0.4832753666973765, 0.6204763319584289, 1.960673372068261, 0.8079703046097372, -0.3452734166837273, 0.3245617375208927, -0.07491582919001254, 0.2743378624516145, 0.5983093934031979, -0.25216135518238597, 0.596753836231434, 2.245459616334286, -0.2948256683719357, 0.28882168918856443, 1.0813537774504756, 1.8535627999465232, 1.1961057282238132, 1.318252064967893, -0.3950711849667241, -1.377281651368375, -1.408790244923528, -0.4636389874147835, 0.4564524135315159, -1.6380091071491378, 0.9185995000712671, 0.4692427417861781, 1.276662831833898, -0.9447062381422022, 1.0877432601911943, -0.22886776336281126, -0.012711978863996708, -0.030811506691294257, 0.38780634756191124, -0.47366773078962465, 1.4814958435930687, -1.1828980688637942, -0.19863200267049605, -1.3001223272185354, -0.4242285448896925, 0.08898755668384477, -1.694063278944873, -1.6602985696240946, -0.6264097653393359, 2.1301257422525035, -0.9460005244382601, -0.5374812634338685, -0.43004926797690446, 0.29036657258875936, -0.8172987007397908, -0.5094563820595255, -0.6841925657572985, -0.008910378204569518, -0.7731489284211737, -0.616010025614043, 1.1972052729129066, 1.1413513407181342, 0.1378551765169379, -1.4064193442890494, 0.47683432031632644, -1.0476861800204984, -0.06901359480920458, -1.2496780870132282, 1.6753024031738708, 0.041143324574971704, -1.4522215930201885, 0.7573346464645373, -0.15931444765366126, -0.7557308301686515, 0.196471099443403, 0.9564572866814582, -1.4803875895078311, -0.9249142102969159, -1.0917150382335596, 1.2585219246267312, -1.2891710566522292, 0.2768772021936127, -0.11943879225386107, 1.4656182572667367, 0.021005580078823815, 1.015858071109535, 1.3572500812200858, 0.5985933296458931, 0.5118443929095804, 1.3341173368810655, 0.25975515970872654, -1.237917055905442, -1.5278312160468452, 2.1781558314592333, 0.4138981989747854, 0.9117147230752412, -0.0703340663019803, -1.0158619558246755, -0.10701579101103097, 1.1466314764426422, 1.6748325965852073, 0.5314453542027439, 0.22641290320796856, -0.6327321154028427, -0.3761520310209821, -0.9094876923198735, 0.5199396339404194, -0.6279140323320965, -0.5316788990880681, -0.7754230114648885, 1.6645731868153486, -0.25248989955644296, -0.07000691089126687, -1.4833807861581225, 0.2847398900881516, -0.4709041665604012, 0.21337597451344031, 0.4752659270130253, -0.6322357393536067, 0.8609686485998456, 0.6154141944357284, -0.5912751549232785, -1.3228568966598775, -0.0850817349853954, -0.8896445451859949, 0.30012988995739986, -2.946119896252344, 0.036167602681861456, -0.028803490284605167, -0.11461775128822176, -0.19075498390300027, 0.29202031786639293, -0.3294293306975217, -1.2138544157908646, -1.0972607879764735, 0.8248759718159153, -0.8925466032322242, -0.16541550491454302, -3.4465386476151045, -0.9566298189710206, -1.078687196973154, -0.4891250155546176, -0.19531569651548852, -0.5990381399213928, -0.7036039565674199, -0.5527767107100636, 0.16920318370993273, 0.5427235579499587, 0.5503428910211222, -0.7497767572001619, 0.011571029854715547, 0.49984033903822517, -1.7283983057101304, 0.8594792530055284, -0.12824597747986724, 1.130107130041837, -0.4987262662830606, -0.13416057776817544, 0.5080625985293201, 0.2117295363547809, -0.8118692986997613, 0.9424962371461574, 0.6300633108154001, 1.2746895140278918, -0.003615756251429331, -0.05126805599191769, -1.6138120917239291, 0.7882409923880206, -0.47367442818736116, -0.43963455311049604, 0.712317456491045, 1.3326960118808617, 0.5896451874379312, 0.9762107134249405, 0.5626831277485056, -0.4376044921422135, 1.5861409442199574, -0.3308751028344161, 0.45942840764057974, -1.7057231513870459, -0.9254725284067791, -0.11018949372955511, -0.7616338202748348, -1.0857700920096018, -0.4372008083571365, -0.40109369588497923, -0.644818536292368, 0.25281756977441044, 2.4197071280480786, -0.22106488208438388, -1.095650643379566, 1.894125695645947, -1.2761684375038809, 0.02036098869546291, 0.7947496785408548, 0.3421126605593487, 0.7949003661056283, 1.1747154329748026, -1.165207479384505, 1.183093398265755, -0.35715333224519835, 0.09841575912600005, 1.574023689454931, -0.23482068201661857, 1.2386946627395476, -1.6783552822721601, 0.8611354052037511, -0.03315728672592852, 1.0193997600753135, 0.8649479142208678, 0.4164604631092424, -1.7829228532488806, 1.18355749410558, 1.57769088119824, -1.686257098236667, -1.1607340307397962, 1.0433166175934159, -0.27772980615804893, -0.6837779231673817, 0.3903294683158698, -0.3671124601982576, -0.1276413455606181, -1.700409020471655, 2.268428305186674, 0.2736751307318294, 0.4618308615774054, -0.14119264307379673, 2.2199837786106715, -1.375939861531243, -0.7221917522954365, 1.1098492022750432, -1.4505379826083395, 0.26060143268332325, 0.9771611195144573, 0.3765145109829216, 2.215882692348702, 0.4047556377415391, 0.17708325001281291, -1.9644517128168955, 0.3982782935193131, -0.6262164185787708, 0.15245667799057772, -0.6508467682648665, -0.040947126846172834, 1.7119976409288793, 0.21779845582679846, -0.04145965880856733, 0.13225304399295884, 0.1739378890012343, 0.08037751104228624, -0.9411877899806691, 0.38565902729297424, 1.0958429749681566, 0.0669055558927883, 0.4361448377834406, -0.5901261511098935, -0.8885190831394413, -1.4871156416726072, 1.3669107918561987, 2.3091823854788514, 0.622552717517235, 0.2783143206723023, -2.1305113526512396, -1.4978709762185878, 0.8018120395351532, -0.33995160613042685, 0.1777765322633653, -0.2258895695037579, 0.19586512261588473, 0.45301580114334045, 0.18103013768124301, -0.5147488863527064, 0.20662933937315553, -0.09581792397706412, -0.4704069093141071, -0.13483315552265066, -0.5594310075701671, -1.5755216037255442, -1.5674068340789091, -0.5157357110184205, -0.10054465770334044, -0.7071565768766122, -0.4099340274741994, 0.35968200228333286, -0.18585633976713617, 1.5416706566134035, 1.9286900603543355, -0.5159285075025919, 0.16886996206928914, -0.9067434891373716, -0.6039824452258518, 0.27720989342858937, -0.8814432879855706, -0.6919477366657376, -3.300499554594386, -0.6173928008586741, 0.8153244286523782, -0.35573315997666993, -0.20534234860472675, 1.9722365498950571, -0.1019166129902459, 0.08112220912426235, 0.7463452888856003, 1.1314090216181174, 1.1725026304304351, -1.3737070495742683, 1.734619629252936, 2.481740839103901, 0.9194703215452048, -0.34821661861545355, 0.9728026357332336, -0.10658444194926611, 1.3646609952054927, -0.20423441003137643, -0.06138988353092309, -0.1103302198524375, -0.3172315867238737, -0.8436575516229253, -0.5086533079781693, -0.1020901909331111, 0.041548802438476466, -0.9989480071569191, -0.19084542074059116, -1.012929236908774, 0.37846266910121795, 1.5569101781200219, 0.03186861709827397, -1.9643672831540329, -0.9559693601351081, 1.0476398922384702, 0.4753938790634957, -1.9155181532004628, 2.7851118312057928, -0.4660427767210397, -0.7434686806220159, -1.8644578336246445, 0.7950519234725988, -1.5175445270408634, -0.18967795984276006, -0.07354703638985319, -0.0028940583295309318, 0.05057720453427609, -0.2571010737906899, 1.841219462891703, -2.1896361652733782, 1.2511986406908666, 0.5753085882254242, 1.1153018270644537, 0.13982610960157404, -1.383864413771338, 0.7931811133480174, 2.1309464599529786, -0.3672255367396895, 1.2349500491253345, -0.2851321814733262, 0.8721818251187332, -0.2026228852474988, -0.2791938533272248, 0.08040090821476319, 1.0892882614640076, 0.09768943644705562, 0.4204417256351771, 1.3114392443815635, 0.04829268265664478, 1.2850500288988436, -0.2779162535369758, -0.43169391727862744, -1.5832048871215894, -1.6962198203895802, 1.0729777959132656, -0.3475301277658165, 0.5554189051412136, -0.3178837805858156, 0.5327674010524779, 0.6755622625790911, -0.1842302677407756, 0.43041683511575013, -0.8115483237447811, 1.3968996263534743, -0.17863606115051833, 1.585212875612633, 1.3280038403293726, 1.6695928015875903, 0.6109821394084319, 1.1349894473760842, 0.28476618327344827, 1.4784673864794742, -0.2823155837802257, -0.9183380787461971, 0.18428479751772892, 0.9836044862804338, 2.025235066042294, 0.8265404261612499, 2.088855400024876, 1.2286394369048508, 0.6715801392320037, -1.0498151352816971, -0.8931372957848912, 0.009361893370829872, 0.9162789715980914, 0.006157909931788802, -0.4922874423094256, 0.18089602650564962, -0.9841484655534926, -1.1301889231546511, 1.3001340798635899, 0.13693015400741945, 1.0390411986454737, 0.09933412649399904, 1.7158843111310522, 1.904568532616043, -0.48794979349112055, -0.4338145756826169, -1.0370401983449686, 1.0390032114803736, 1.1522094113772554, -0.4274833545676901, -0.8753567770565199, -1.6315994757003491, -1.7385506630534566, 2.532384190967428, -1.7056567691204445, 0.5413608251407436, -0.7741297263854691, -0.9447738094748025, 0.6661287246658135, 1.2031380054266403, 1.10368337423764, -1.2970356849209472, -0.6566436584727551, -0.14816924917182495, 0.7899980629195169, 1.8273852077888946, -0.9277938527847925, 1.9598998746936958, -0.27099375424892697, 0.6313744587208714, 0.40220491996516095, -0.29639672770006376, -1.8023859026222553, -0.7750540161682024, 0.1947076125945104, 0.5471135873496065, -0.652969912710415, 0.8404848088284015, 0.12894499297938444, 0.6032885408701868, 1.2514835286413495, -2.3974894979687105, -0.9304443816961642, 0.5235805043032368, 0.9237070587307208, -1.2232371757835139, 0.5076176935522306, 0.11779678439009704, -0.34612498438387546, -0.7314860546390927, 1.553910216869756, 0.373159475336515, -0.30618102562662347, -1.0154187441535123, -1.3683721575144063, -1.6848734071167453, 0.7057898542723938, 0.7127375808855136, 0.6820908867090917, 0.14243208748778438, -0.49764571567254134, -0.34993722444753544, 0.28263895634917763, -0.0811609390230422, -0.8001263943467075, 1.2016381946021464, 0.6300938668214966, 2.0197124104278883, -0.39730245577489043, 1.1082615629881487, 0.46812678384907336, 0.666746788576162, 0.26123698644751225, -0.7024810946461257, -0.5922965445684787, -0.48103667153342716, -2.24353922047969, -0.9337194785548774, 1.3686185555811365, 0.3972741496203757, 0.37354079869199974, -1.1743179438700706, -1.1748244659763896, 0.1406513465704322, 0.7766944125577693, 0.6468554295128249, 0.8402029124529626, -0.5495888272912638, 0.2752226876433018, -1.0617295543596483, 0.45862157925707286, 1.1714768594080485, 1.1805224647157246, -1.6892820684956078, -2.393405099847649, -1.6331785264764314, -0.7303247685543807, -0.37576096935444997, 0.4013478691603241, -1.0157957733816363, 0.14002890339339075, -1.0252839102787974, -1.0375314340230521, 0.8172730168671789, 1.062543562593135, 1.2810809804809749, 1.3999493985992992, -0.1750138803985548, 1.395734920938993, 0.20896311087749608, -1.3682057826232348, 0.004699216277132869, 0.4764319522852837, 0.12823174581788757, -0.546109883020964, 0.2523240224674329, 1.9724181468899409, 0.571137816454056, 0.522392971014453, 0.06334935501567902, -1.4920451846109672, -1.0225677061413179, 0.44255002330819526, -0.4682032342920937, 1.0350483070201422, 0.8200797384116898, -0.3029007829607368, -0.9845615009741489, 0.7582526902117465, 1.4833592773254187, -1.3989560209509306, -0.02010565525754588, 1.696186541558, -0.14162189076683343, -0.6537141574516205, -0.38621139164560747, 0.8184053985461378, 0.6452934033126237, 0.7403406155596476, 0.5169782497985267, -0.8189857182537518, -0.3298835390479515, 0.4237001612173338, 0.7833162409431745, -0.0019372831953367766, 0.2733210830893454, -0.6400595311632477, 0.6228358338196626, 0.3278665095994055, 3.081520639298892, -1.4435639267846334, 1.7053027215702756, -0.9588347501825313, 0.8266484324217002, 0.6242654188330886, -0.6407113941329479, 0.2772593629992858, 0.24814190447973083, 0.03363219264335503, 0.04496534388566153, 0.7087040051423135, -0.9221069417630742, -1.5268364676636788, -1.2896607997985812, -1.3661213777130599, -1.2075968696301782, -2.389243136958518, 1.4955588874856782, 1.2032086179453023, -0.14139077396705954, 0.2105872325884853, -0.5266170806972954, -1.9635764068165913, -1.2961941687735021, -2.2835960332407423, 0.33843875542096646, 2.3953920170177923, -1.1837497023332566, 0.496939041745984, -1.6834236268645497, 0.0947364755311612, 1.3677509022976098, 1.3010190519580898, -1.7668063834316443, 0.21564869547117013, -0.44708261946187283, -0.002380181670482115, 0.650945443490256, 1.4074149358152999, -0.3502584098400984, -2.275975800589525, -0.713875724177341, 0.5589684491426312, -1.965116029720147, 0.47575103008133773, 0.1679025472894861, 0.5439197139149357, 0.18336508565925638, 0.3219885649627636, 1.7554902588109447, 0.4642725270837393, -0.4390920573164246, 2.2698459891448923, 1.9524244471530363, -0.14392435570038756, 0.8876434758028264, -1.6577043260766187, -1.0198707516700816, -0.5961056777066923, -0.34369290129618396, 2.3123203551692133, 0.9307680048590791, -0.002081134721685804, -0.4816298626933, 0.5166419734688004, 0.09544852566577597, 0.738769513030866, -0.5320413954446367, -0.4940048696009806, -0.6416355699204741, -0.9125056647182483, -1.1862204740038778, -0.6555000958717663, -0.833470938908399, -1.1616778894644986, -0.5822364941000208, 1.5789499695762335, 1.6906076958567484, -0.6682910973489802, -1.5375408783188134, -1.7035671717673282, 0.5113501775091176, 1.3627201535356952, 0.34281653314195654, -0.0361566378498718, 1.283526267201893, -2.2745695742593397, 0.19000854891098337, -0.9356963719873145, 0.7771715931847443, 1.1747876035023088, -0.6581782060160273, 2.1514708443588093, -0.36624102952776444, -1.02996208423095, 0.7217520972507986, -1.3423248117021074, 0.29948769841449313, -0.9983234204192304, -1.1349975297569361, 0.2390417601230243, 0.7072204486510455, 0.35832543994067206, 0.8041102924500155, 0.3028670857744879, 2.7623138131362417, -0.7089157750419613, 0.22621529706629703, 1.0159042552872546, 0.4778866048560423, 0.13862524435273077, -0.6817769904192166, 1.2905800338344828, -0.5617711995631723, -0.937878912770488, 0.036259068904784184, 0.3074683196641872, 0.02334508317808002, -0.056636545167360136, -0.6105722560497783, 0.22034125973327826, 1.3981176980080354, 0.002830930797289729, -0.24195892578863437, 1.3598231207188574, -0.5983975108140343, 1.509108735185707, -0.3108584778552104, -1.2228769868033365, 0.5943397739409046, 0.31935177535483583, -0.036439093781717204, 0.14778839039885514, -0.11651573539454131, -1.4649049971267012, -0.2683259472901276, -0.1143739595865752, 1.7635913804869325, -0.16130246501945172, 0.4072876137215747, -0.31103626857775446, -0.05171663918837877, -0.7274085567918993, -0.869998251494505, -0.7193321231806105, 1.7505951189711304, 0.7440630635174471, 0.0016957841800653661, -0.983556012268064, 0.5131452298233552, -0.21520406798199235, 1.2554935163458343, -1.0675348115557104, 0.7469420795328888, -0.9963438487998225, -0.6229174823536682, -0.6770598584016285, 1.2562729341933596, -0.2712138170575698, -3.068642230593467, -3.0531360276822577, -0.5584911390555901, 0.7473315149504595, -0.18706483628559678, 0.14675010155914514, -0.006368544270069353, 1.6844988114574022, -0.6214979241607808, -0.3355320210713104, -0.09820727272027757, 0.8687934479912008, -1.2005133663272494, -0.33084789733891284, 1.1571084045756281, 1.4246451046643682, 1.6962376428779853, -0.01965764703939021, -0.7773091413938378, 0.7348575748530396, -0.23216605868100404, -0.8192776375683218, -0.2080446140023382, -0.44904006003328667, -0.4432456841776011, 0.06399763185741875, 0.21563610206370648, -0.2508963268128007, -2.5393973783220463, 0.323376954594191, 0.1384357529412035, 0.021153113599300586, -1.6410540709354358, 0.3691910055245278, -0.17495885529094257, 0.554361827175954, 0.20816477209501544, 1.2322688447103174, 0.2259606292852208, 0.5140029111794593, 0.37718842026130545, 0.33603722021339, -0.017669087842033065, 0.3990879000210093, 2.178612539524806, -1.4021972726687062, -0.059858631189209026, -1.0031183337604832, 1.383398163582628, -1.0611670406818532, -0.6074540386699645, 0.25468663161832605, 0.13474280254470264, -0.10885846887714488, -1.3619488838854161, -1.1865743468938024, 0.8343602196452481, -0.31636758410943266, 0.0822806179687328, 0.03610500422763477, 0.36975660962214374, -0.37447984002912227, 0.9006398818186364, 0.4263942528559476, -0.8471405691528062, 0.6370923472128284, -2.771271846414234, -0.2775641216533752, -1.9698060876925318, -0.7631948292304876, -0.11501310895829121, 1.2264502383793572, 0.44510581587390197, 0.7850830340365011, -0.8972456251148753, 0.6916483637375145, -0.5297453646047573, -1.901732896640853, -1.007326391309077, 0.2220310453886031, 1.0724562599385534, 0.40011245153735736, -1.1593565442528044, 1.5287688772353074, -1.2265309382410865, 0.17812058438692274, -2.1424196963250663, -0.5365247347682954, -0.175882228830132, 0.20779436050052882, -1.2395880259585617, 0.04832542895494312, 0.07093709252503462, -0.056371503668414216, 1.3597592757778154, 0.3828295662314724, -0.5315492554139866, 0.6360780600344075, 0.7531154590527323, -0.7824250791522117, 1.0617544257117932, 0.5489962301017025, 0.6286191631180904, -0.7554812899095874, 1.3460101201505388, -0.6564959907077351, 0.16698785124367177, 0.09451925409687266, 0.17705768947811729, 1.0138194440077566, -0.24231907310256842, -2.546273886239003, -0.05507329609619993, 0.3576296538398323, 0.27507225100326244, -0.7942125094255036, 1.0744369972956842, -1.1548545340061322, -0.15997902636302005, 0.2950954321082824, 0.8845493763065855, -0.8132679790365331, 0.21153971778686953, 2.2177421007414084, -0.9299613122041496, -1.6733913807379388, 1.3474760825861976, 0.9816143450439703, -0.3855895553937516, 0.8502913770246404, -0.016034574759692683, -1.1339934776440412, -1.7563721581739282, -0.06647491888759757, -1.8920747028441938, 2.3760043080911335, 1.8177530262775197, -1.8575847163422115, 0.844553214178571, 1.5954993729399956, 2.1252863078605264, -0.9089236614521397, -2.0469171775640773, -0.9384063102943723, -1.5482176543034978, 0.4526740914408505, 1.4013381381239929, 0.991045705937935, -0.47656146801187094, -0.27582104974046956, -0.5642658623540668, 0.325163151043837, -1.544633482053262, 0.15518857788732585, 0.15382265815454396, -0.6343026666433687, -0.8052290074500515, -0.01691923834054946, 0.6541683607771073, 0.5338183805463347, -0.9091383582478858, 0.3968969223456185, -0.17061628431357603, 1.747323697825887, 0.8012341564226836, -1.255442509886699, -1.2920206203653015, 0.0749186813352897, 0.2120295206583239, 1.182843648729612, -1.1122449131709833, 0.6272974182744673, 0.22777924320090764, -1.6251751647156196, 1.0411757059610847, 0.019367245918048063, -1.5738996411263415, -0.269270207865917, -0.5708394331822761, 1.8504054703733777, -0.22094889809967533, 1.1868455374446385, 0.5717141696167073, 0.8579212808811838, -0.49203515643303497, 0.42647412290047176, 1.0808047827262008, 0.010157228470302567, -1.719815859158772, 0.38805715778854427, -0.9969905666150687, -1.9361769141375387, 0.2474759878876688, -1.4221009001917095, -0.5918211873235646, -0.8058159270505826, 0.5438653208536682, 0.19307918373458596, -0.24237795984767208, 2.3297553315723163, -0.6782771653830929, -2.264267240688485, -1.3620513569200732, -1.9227157102467343, -0.5474383968696648, 0.24293097804441546, 0.8929260011447531, 0.049719985269798754, 1.3121549852716419, -0.7380138820116222, -0.011523274745424477, 0.7707761640355849, 0.2159962953115613, 0.5540026920594798, 0.09682345285130588, 0.398898061918644, -0.8325427357082503, -0.8742308162726118, 0.047733473640843245, 2.054543245821081, -1.3898902807090843, -0.12538538363326618, -0.09873796128345852, -1.4497902777439649, -0.4782177466678878, -1.5489795500879526, -0.29518331705238504, -0.44407598222159483, -0.9106356388426876, -1.550174445411619, 0.9328231660401188, 0.05594760595703414, 0.07566938845558267, 0.3298955808621695, -0.0017861668992007044, 0.586486364465265, -0.4362101979996282, 1.009729735572833, -0.042390290391845505, -0.2808285449424426, -1.0403468643014806, 1.131390812188699, -0.773890404524892, -0.22102358669926575, 0.6645483621647768, 0.7694091180284272, -0.03831164560096324, -0.3150960131582738, -1.0259652416179839, 0.20049882895150267, 0.03693677780369976, 1.6551618339165797, -0.22673604901843455, -2.417611359678329, 1.1106483704352281, -0.715751960430851, 0.5164952578195183, -0.6996317634146395, -1.897990257489308, -1.8041186305012002, -1.4690150868698797, -1.3087988024213557, -0.17486927381146705, -0.45353269534719165, -0.19149104316066032, -1.4266479569878736, 1.8919903045082074, -0.9473356590670324, 0.5173785755076394, -0.13818347423848865, -1.086849997656127, 0.36593831570404595, 0.6194226195093413, 1.4453714190862008, -1.3271158566185721, 0.60921787209085, -0.4832669384376709, 1.3186433317044879, 0.9513213947793335, -0.8548751359506115, 0.1071168124112579, 0.26717848135064914, 0.7030211740414508, -1.0709788797992723, 0.45569586838966974, 0.2887090154342446, -0.24229609713368583, 0.49390930613496803, 1.2738314634647165, 0.8139546371116826, -0.8058423065764165, 0.916823751781412, -0.6678215090538104, 1.4119852560554031, -1.3924034581122728, -0.48456149875876053, 1.0643581297073346, 0.3566463977388516, 1.0415975486050486, 0.028040080194454448, 1.0504197093941925, 0.44965919555783174, 0.8435496128685037, 1.7026256067041448, 0.14373254549294262, 0.7291427328749441, 1.2935074397997568, 1.1398931375510761, -0.18068743577377236, -0.6047067890923773, -0.5346294021251248, -0.10853463546664842, 2.24413601184453, 0.3297355179043857, 0.6657531282588651, 0.964251923438201, -0.5628928015239664, -0.0017106246437996794, -0.19257380601095586, -0.5999594838401076, 1.3310045638118178, 0.01078134546842449, -0.9551407698862096, 0.3885729820005979, -0.05434661623637475, 0.3767388172770911, -0.4898330949543117, -0.713441149440031, 0.42018478215791266, -0.8439100277112023, -0.19565425401483183, 1.2508445943709827, -0.598991758922596, 1.8429649718578998, -0.14258798772701783, -0.18138700905606242, 0.18618696335301746, -0.17087391761424983, -0.8432760462260274, -0.9939917370091027, 0.4305596597055404, 1.1091371083897912, 0.0790722776794302, 1.2495242586059518, -1.521274693280775, -0.7616476824293791, 0.19580408817424708, -1.3143027744001392, -2.091488061999562, 1.9663088091747154, 0.229879430005645, 1.4409375453185944, -0.36162055274827665, -0.27464439642870486, -0.6230996505620815, 0.5751002240784702, -0.16100067047853925, -0.09962621112274908, -0.4351501356168505, 1.3351792476960413, -0.5784998697471228, 1.3361458462940539, 2.3601479775013887, -0.4647589716386651, -0.4548988716102504, 0.7028762701773292, 0.5914980686358756, -0.6966115762392115, -0.7696723521588696, 0.03715612980676316, 0.32221017528830087, -0.4234227574937845, 0.34726424283234486, -0.48116562286295844, 0.3138392530237178, -3.16017434136752e-05, -0.3914227082899591, -0.581666722921146, 0.17111964776203006, -0.06008169278035282, -0.041886584782142536, -0.28699248044931597, 1.462175320301007, 0.1245846313065406, -0.1123526751684876, 2.092515176950615, 1.2272760858332872, -0.19552592726578952, 0.49191271925867636, 0.6144137708252538, -0.6106235763708134, 1.4976844345055038, 1.1892142848985179, -1.1357119642005757, -0.28436481789594376, -0.4421830922813949, -0.6328684584245098, -1.7040349067620155, 1.0820432527761576, -0.9968510182567392, -0.7985198199890275, -0.2588215482253829, 0.20174302514172218, 0.7287507331021361, 1.1722852714149967, 0.4322448567665407, -0.771155579801035, -2.612258680121964, -0.7051447495309736, -0.08301192443248484, -1.4472391477276658, -0.3526737726608245, 1.1294354483566833, -1.0899837588692494, -1.1395916553408674, 0.7779937885751342, 0.5183410812373956, 0.8509697670045957, 0.6208144564226835, -0.778892715214496, -1.0501461846073583, 0.8552859071722188, 0.8608448046488019, 0.5497428154557589, 0.04882443454369946, 1.6651080232070385, -0.32090016182105363, -0.3728486660772143, 0.8430133361143574, -0.5655459744432224, 0.7215544062511454, -1.9484490239876828, 0.6423145640402413, 0.014400283567776857, -0.7898745532400717, -1.586323922234601, -0.8458020923790143, -3.088311088273429, -0.7711672240651922, 0.9871615977182401, -0.9045757185197361, 1.1588809667487696, -1.3285096437778892, 0.5493583705018974, -0.17757552950573202, -1.6167076444272095, -0.6257691840041929, 0.3674989256823125, 1.5365222795738054, 0.3527319212488765, 1.0485204480487655, -1.660459836294662, -0.5794960248043395, -1.2465657293652699, 0.39414956926958317, -0.22431122185124802, -0.7424297725903407, -2.0183158330852966, 1.0943683904642862, 1.9180228164677529, 0.33125926943311296, -1.4098590113169003, -0.3049008568768526, 1.2884791320277762, -0.8304495335533479, 0.5648082533641575, -0.6324582858362591, 0.15519145016196245, -0.14331072524661, 0.5955341112172925, 0.2683604694117294, -0.46158779655753196, 0.07612773147707591, 0.4518924976580781, 0.4439502747372077, 0.8523538103367174, 0.6526631303289786, -0.14639057359720992, 0.11541815018151078, -0.14641912207628505, -0.28858965267185804, -1.1094993394266683, -0.13666302182060672, 1.1197245750262241, 0.5969030971713879, 0.7652826186532012, 0.5565420987155717, -0.39973686526861824, 0.7840343460033151, -1.1888373414791333, -0.38373069667860454, -0.2549327865564444, -0.831606465136574, -0.8020163962470959, -0.867149529466562, 0.3741626587437947, 0.009823237085445392, -1.7368701460461045, 0.9578205180189425, -0.30283019943674705, 1.1710486547250496, 1.3504432585716344, 2.135913369966061, -0.37144981581277836, 0.6683173129623053, 0.20836373808769923, 0.45158986081203556, -1.1459347939795756, -0.819138263097992, -0.44181173736632695, -2.228038352852804, 1.3450784569893894, -1.1523580752749787, -0.20464272457508284, -2.6483454695188007, 1.213210112709636, -1.4004764346361736, 0.09732611023114367, -0.44728592455565547, 0.10547550295522748, -0.42093313113048986, -0.5056183426815237, -0.35915275364763544, -1.0946537876925737, 0.31096146492651894, -1.8148942677707616, -0.3091292910916751, -0.07769189114014907, 0.8210353689958184, 0.9977559638388211, -0.9741254410868778, -0.532900582192196, 1.2326485600619295, -0.556852354708009, 0.5224831305011773, 0.2473387410334785, 1.1142299086991494, -1.1993099089239656, -2.3844231540204452, -0.031312298998023125, -0.2578374897963484, 1.3655566629409817, -1.978772520685182, 0.05702667001523861, -2.7661971160023278, 1.4379234027888605, -0.7192462186848305, -0.8359204541555126, -1.97072449798586, 1.2834263121409806, 0.5648994039770748, -0.10923252179999401, 0.5481965021182704, 0.192406781879664, 0.48581076499243303, -2.605560426009065, 1.03504983076068, 1.4042025146049608, -0.6532422029882547, 0.21720993132656635, 0.44583467031113655, -1.4473969873605004, 0.7442621658759352, 0.0035577574611439537, -1.5352838320153788, 0.36582337868920506, -0.43827718248031894, -0.331658585134989, 0.03475743065587794, 1.695364872590356, 1.558451620009631, -0.20689475301966134, -0.45129848619848684, -1.523170827436555, -1.694309335523152, -1.198176658548595, -0.19969177462827617, -0.05282460007952421, -1.1791283297361472, -1.0067735453064437, 0.17055987486894333, 1.548598735029748, 0.7208980223949303, 0.4530935835189574, 0.8089115623004025, 0.3351300125270723, 0.3800443655445466, 0.3736345544751257, 0.08967024919905225, 0.9223811114430721, -0.9791572872575997, 0.7490556870861242, 0.04211285779316042, -0.48675401364389137, 0.7892987384887062, 0.6514935495821761, -0.7389337564143339, 0.8226734205961588, 0.7249237684279655, 0.9660211264551801, -0.4532783587481408, -0.8511090310517235, -1.2152362800727083, -2.2688038747495143, 1.0639266151110012, -0.11852527671845324, -0.04079710558992621, -1.959172190759805, 0.634813706645387, -0.024392389160913488, -0.8994503599741844, 0.02058425261846817, -0.5502771537286061, -0.7627382878672573, 2.812113990163829, -0.35697622542008045, 0.8954830632884034, -1.2850622093830648, 0.9048756978263991, 1.295681539205646, -1.8039444541082827, 0.6289956120674256, -1.2464825605819987, -2.434105594966877, -0.7368776196463713, 0.07517741459098572, -0.7212226336631826, 0.6482644881693863, 0.7243697163628927, -1.015612682453925, -0.20576178987164687, -0.03565973922119395, 0.46655943398917193, -0.49256995004987253, -0.6208601544556013, -1.9147957069743964, 0.9111798522207986, -1.050789491681603, -0.17826554882391007, 0.0034287654351666343, 0.23891042130951867, -0.2896526657972369, -0.9678605370350775, -0.15606979834697407, -0.539588519878248, -0.9744762714085187, -0.1158787137991666, 0.463186013778498, -0.31756023012613327, 0.32352357908448803, -0.585725835882206, -1.7678336366681864, 1.5889268041950584, -0.20630705622264997, 1.232645492185463, -1.536865929859409, -0.9261652386696412, -2.0561143314389776, 0.4779964081018399, -0.8596011929021515, 1.0843957545428986, -0.9897567668916143, -2.3232928720337003, -0.03340641205022988, 0.7598708513617404, 0.6584247271159631, -2.3279582198317708, 0.24768310253870407, 0.8762008827221577, -0.6729640746468504, 1.2959884053547635, 0.9381350368383641, -1.1241425977603545, 0.4829581184819777, 0.44171108339691467, -0.1872572531285367, -1.2571533983758636, 0.2048074965235173, 1.6143344982484689, -1.3124698136215769, 0.3635463079780809, 1.3596873368910098, 1.081430863928576, -1.7061600182770245, 0.2118428338657974, -1.0006407692588688, -0.3401431816847726, -0.7813320328275092, -1.0011400049098196, -0.04519821459969004, 1.2603284232288081, -1.0630920047189185, -0.44789118146525986, 0.5582310695632384, -0.7090682864355446, -0.5133533644647693, -0.13049594943266846, 0.7311900472570971, 1.493841327862994, -0.25011186120154755, -0.7748595776465173, -0.5052909848740618, -0.5033837938274406, 1.0631419148120849, 2.2478394914416504, 0.7500249601704074, 1.5817576559551234, 0.8472836111216092, -0.470416237895585, -0.19965720263223283, 1.0216451463957437, -2.1860339921625407, -0.9948198936152898, -0.4396019229076382, 0.8734144476777804, -0.2965813670330133, 2.2470581118653734, -0.3395559758401316, -1.791968271962612, -1.9257914274985277, 0.3714309214848273, 0.703855673271628, -0.555710126333215, 1.0220050901401225, 0.20363711487789027, 0.8516796154742334, 1.5757937650329772, -0.09665836315586222, -0.776148895209055, -0.8004256779107253, -1.2413561284257886, -0.12925323644050332, -1.2379066703304404, 0.06651546025851007, 0.01391190021081403, -0.17367092702089812, -0.3287548140792935, -0.8711037772397026, -0.13391409347721686, 1.046744495577508, 0.8549541076563608, -1.14897045533444, -1.9386803001956516, -0.38823478112772664, -0.913589660602426, 0.2729518941831664, 0.15071694940790553, -0.10547684574045808, -1.2248164227256482, -1.351082215307864, -1.331163419569997, -1.3025284037326679, 1.591100615537101, 1.6839972656851228, -1.5013406493986328, -0.014560098841445244, 0.8758316571675913, -0.8616058158966454, 0.5237127012367585, -1.196778610697725, -0.35407288196013637, 0.6942107386263077, -1.8315746797885266, 1.4846155028429848, 0.43076769047114793, 0.384367439106405, -0.23394885184834452, 1.2198064491495224, -0.5383323547980174, 0.8160510810336509, -0.4573571329857449, -1.7335152974789638, -0.4636249816670279, -0.15318904243505294, -0.42412709535096155, -1.2846318534528511, 1.325417287661619, -0.24420837398318634, 1.7225099174527827, -1.3858598478981758, -0.350222801326749, 0.22885965098157468, 1.4051554822746368, 0.3335772936910085, -0.6286767607540873, -0.07004282442105106, 0.04489437050367313, -0.4059451088431407, -0.8094857079707901, 1.7505330159261117, -0.583610420693528, -0.7366008689555579, 0.3984745730971409, -0.06377005585758136, -0.8206644772162646, -0.6843563782443158, 0.413445320652666, -0.4554691818585017, -0.6229184879111299, -0.2413741831461815, 0.5506155379147128, -1.3103237870729614, 0.551465002061796, -0.5526669452272004, -1.432939322764634, 1.783677814895783, -0.2619175408084894, -1.7366570861134099, -0.35564945315684077, 0.10137133388748105, 0.7235998519780015, 0.09403042929115289, 0.15425730783069394, -1.8572780611255473, 0.5058501044761556, -0.7574907452490733, 0.17607281289803361, -0.8396945461067945, -0.7292802178089858, -0.7002824669050794, 0.5503576214615272, -1.5890603582592648, 1.793036043038875, 2.7878235846616866, 0.38956928497568377, 0.26174869373444265, 1.711065590611669, -0.21780984024318578, -0.7476219519355383, 0.18354455463527203, 0.9102969356546101, -0.9733253628488144, -2.344766204767146, 0.07301118913271507, -0.4917986474536467, 0.7416391329516281, -1.2880000713234445, -0.46197477360345757, 0.30212819705891386, -1.5167184180382485, 0.8501535296247528, 0.5175168374586809, 0.1763279409946514, 0.5808980947903934, 1.8472712753780864, 0.5887473330756161, 2.1954184977584354, -0.03769822240764868, -0.15613316317636414, 0.5004769377495568, -0.7455652599230427, 0.7677830295108011, -0.1441337502428087, -0.7523387828605589, -0.36755553576567623, 0.34105345138077786, -1.1914248220126447, 1.2303531748948233, 1.3432678076153106, -0.4313094961431832, -0.716554553207416, -0.36217498101423934, -1.5133659288612389, 1.4950695017357467, -0.5715269477785132, 1.1593421463571147, 0.43789720927678055, 0.09116342195238117, -0.3049393765588991, -0.837272212664342, -0.5766435716140458, -0.7356401726215391, -0.9485280265926767, -0.1250772778287353, -0.24361064177838979, 0.8522508371598432, -0.0037377039062253593, -2.5439058613954306, -0.0569000266151025, 0.4320024316685166, 2.194478575759713, 1.4396842305532822, 0.36543499574809074, -0.3770338147135057, -0.8552418236779827, -2.641615137447347, -0.01832206949724758, -1.220279075748726, -0.4532959432254292, 0.2687666926125023, -0.8588555314205266, 0.2995859931505431, -0.5333350265572113, 1.2847615357173254, -0.6750734120371739, 0.8097130403145714, -1.6270630113161542, -0.9700686987748345, -0.626750470435254, -0.873880059260819, -2.302124621855377, -0.2119446632235012, -0.45104357068515205, 1.474647321380819, -2.452150203161443, -0.26422200819131053, 0.3355570393620066, 0.4521192920529254, 0.6898023906005871, -1.0228088805014108, -1.5620067151329697, 0.2114421450103242, 0.16571047265242836, -0.9976369476833716, 0.2707035595461758, 1.527376877291636, -1.1501231170867043, -0.8215138548193065, 1.1255100205347468, -1.4908295737477542, -0.9614784827261649, 1.253875753998538, 0.6502131896760401, 0.5459866901410766, 1.4600197648017388, -0.0961460203532497, 0.7266795346872365, 0.24327467641293096, 0.6629927940460294, 0.1425139446241705, 0.6769287783907216, -1.3236927946900179, 1.7325000099103491, -0.44398667144970083, -0.06250247294850679, 0.7996605229107876, -0.8781887569136042, -0.04685771081608833, -2.1381243641968757, -1.1057101272330927, -0.2334652569852083, 0.9622037237887306, 0.6635341672421278, 0.12296392422848872, 0.16098800191091994, -1.9738778562669794, 0.878801521788013, 1.1264406225655363, 0.9266111456784218, -0.5837955300185679, -1.1381689631937657, -0.7637975260788618, 0.6253414266910773, 0.2560476374285288, 0.6225515550412877, -1.4003990017303332, 0.33627768607969516, -1.9427666341170824, -0.6932243069544903, -1.6260875697896702, -0.7277319111014768, 1.4038229847386294, 0.2920548422295979, -0.4789539104472966, -1.5162957655731588, 0.7303018926046246, -0.08451244525442732, 0.784113042439586, -1.5334585479514933, 0.5670458287729787, 0.42975930410924124, 2.449800593141972, -0.747332434740572, -1.2322385206168842, -0.7568040112448173, -1.4135743704317814, 0.02577746009056378, -2.0837637677880294, 0.49143275227877103, -0.09302281017834362, 0.7031745485857588, 1.9067771128764397, 0.017922750249444862, -1.0118512011569816, 1.098381595132738, 0.7341755899609803, 1.2311978717249155, -1.0213846091416032, -0.30656617450535995, 0.2039715668363261, 0.9137009208505903, -0.1853547296025253, -0.4531226067380201, 0.4791486178122148, 0.4244894303034229, -0.21125213591144995, -0.9006724834631074, 0.687500015940671, 1.5478498713739013, 0.5971262704659354, -0.28221603850355226, 0.1853982344045198, -0.4972609839585217, 0.09701023695712938, 0.5695911267833031, -0.3164094642230819, -0.14706947612684826, -1.3149133497939054, 0.6864680014836566, -0.772852350625843, -0.5806236044379457, -0.3330938726043226, -0.2730406772068024, 0.5762813326703923, -1.4304622484096188, -0.8424942170683648, -1.3966094397492712, -0.895345937295373, -2.1450526226610602, 0.8982603474010731, 0.2447347737164159, -0.14421939866277614, -0.32759685565611457, 0.296699608032958, 0.4488491381463045, -0.9366906772433812, 0.8575927698912629, -0.21528850062417895, -1.1881007189482282, 1.126951428099562, -0.9182517838371076, 0.03845610449911805, 0.21538710321609011, 0.4345124212863915, 0.22806905558766796, -0.0433565930969285, 0.7593857162181715, -0.31477607928734513, 0.45451779677564275, 1.1460305154279424, 0.17511551763090402, -1.8856875430269369, 0.8346203714049741, -0.0696682533840345, -1.477209694338219, 1.167580661482926, -0.17554887202590774, -0.8474837486432465, 0.34080524465178785, -1.067656844368498, -1.2235746072702904, -0.1496059091339221, -0.6271075452205968, 0.17720185109195266, 0.4353918232872083, 0.5660926079329978, 2.8554574415424483, -0.6620166583187813, -1.7269876019682948, -0.4078387228577495, -1.7228178107762542, 0.3726054112499986, -1.1217641084697834, -0.4549722253573668, -1.1732831794353027, 0.6575544136481785, -0.9201334492342766, 1.6328222950437552, 1.6244241347609476, 1.5613555902002136, 1.4668846483103386, -0.3487215605525855, 0.12066051762324873, -1.3338304508691319, -2.838826297994906, -0.6706495059056897, -0.2112553589247857, 0.4093088155814143, 0.0586543436679839, -1.9337244019029907, 0.07171251023300006, -0.453400009742923, 1.1415999381407176, -1.1548675809496596, -2.382993633047374, 1.665455784920222, 0.36977079711240063, -0.535727132830006, -1.4579294636750366, -1.6520070983625739, 0.08837369320935094, 1.1015994425060465, -1.2436747485612611, -0.16173195775871396, 0.7874586254788326, 0.8455365274680086, -0.47385229544186175, 0.8581794726994194, 1.9141693890868874, 1.2111468774347625, -1.283834409703804, 1.4122001960991903, 1.4246122083213058, 0.09617143246488447, -0.680416520345397, 0.7939074419436761, 0.05082061802593895, -0.3375681951224267, 0.2728075634559421, 1.8677062690963786, -1.2849446512608989, -0.3646522458534046, 0.917024620691813, 0.836213051287984, 0.4199460834454394, -1.2038519270531134, 0.12232264627089835, -2.2232529926712767, 0.32822411605932045, 0.2221878465543045, -0.40914638546335264, -0.5038836046014628, 1.8256305544491191, -0.7565556539701808, -2.7739792692396126, 0.28066845231027215, 1.3738789070045716, 1.7661381760831198, -0.9580232806819591, -0.1780922624537117, -1.0984645221049045, 0.12603798766445923, -0.1849675475219486, -1.4475049162679143, 0.9388707018063479, -0.5362768656635394, 0.9452817076530887, -0.37341197131483667, -0.2629170752516286, 1.325991973487167, 0.9619471376599076, 2.1975015359014103, -1.9973341541819725, 0.8588312686492864, 0.13666135012685632, 0.3102389236196128, 0.6936509306420062, 0.05434653570011313, 0.3886040413097377, -1.3881648803578328, -0.24232672717865358, -2.3006844443180974, -1.518751357394444, -0.3706901669875656, 0.7539809084190491, 0.4912794553641408, 1.285898467547851, -1.2234469904502512, -0.08958864363508236, 0.583078020131131, -0.23178079681176902, 0.4769446061135408, -0.4016965792806681, 2.1618387681417497, -0.3808916318031749, 0.7019003947692466, 0.6921832736273762, 0.2010723299967834, 0.23634082843208823, 0.6056544806575411, -0.11651743275509928, 0.5766313042860137, -0.5190655005970012, -0.4579416002427724, -0.424209530527786, 2.232559210366838, -1.8171412233712165, -0.6495312007257151, 0.01454464350825512, -0.012160378768442833, 0.45900058613553946, 1.622427208224704, -0.8381648037082366, -0.06922690164521429, -1.1571533446018838, 1.2962530073258305, -0.4164012434169487, -0.14957792428793357, -0.0966188865041463, -0.17162818417291137, 1.5823601195567514, 1.0185460546773435, -0.27435903244422055, 1.0624307534321238, 1.6824917464322542, 0.3499999101405133, -1.7539284490002658, 0.3415515608898923, -0.9304971196835875, 0.04252683790482448, -1.5965834974215565, 1.3596129553980816, 0.5975052601318105, 0.7282491018628274, -0.8685422050617817, 0.8955457613350786, -0.43664776638074715, -0.8206970291571989, -1.2898007224720796, -0.3186171612571654, -0.3330818341118064, 0.6655752973348447, 1.6764347205970604, 0.6078743574830635, -1.2342507922222805, 1.9210718505914963, 0.26510984025007406, 0.2685882654026507, 0.7102430456245953, -1.0462145584529572, 0.3857191152427833, -1.8835805633826779, -2.768761193953574, -0.4915726819365157, -1.5089924717034593, 0.013278831567490521, 1.5474176875871273, 1.7045030442907954, -0.7048211460588357, 1.0382872389284454, -0.4236141117291399, -1.1507654519546344, -1.6074537360491772, -0.7267874141115397, 0.11876040295645178, -0.6408806028454356, -0.12049820175789154, 1.1256684566373316, -1.1503658259476168, 0.3808406082354331, 0.16166298056768014, -0.9796873977838907, 1.0438547113586458, 0.2695904409689415, 0.7097366282641338, 0.36812978605144314, 1.1038117080137047, -0.5807051449206111, 1.027731721586947, 0.9661580338116212, 0.2598371929157506, -1.2798102496315147, 0.8352067419464927, -0.1452621149892954, 1.8549267889124994, 0.5665323669164135, 1.5421593189692089, -1.4677264718771512, 0.9585639718948312, -1.6479655417171202, 0.22271257385409565, -1.161398773427602, -0.861813501728504, -0.33065924746715947, -1.2370435572165541, 0.13012798200740622, -0.17426050640126142, -0.38744989631009263, 1.4307827967619229, 0.03543562533000589, -0.9972687727886126, -0.5170550450401604, -0.7750247609617125, -1.5190613124777796, -0.45895251295378553, -1.8056739512190008, 0.568360571435928, -0.2004869809428556, -0.14483685708825503, 0.5258043449164731, -0.16813587996429707, 0.10846389250099084, -0.05315797521827668, -0.21651365686613308, 0.06006145597959008, -1.4024064633139812, 0.689880904910238, -1.3428757039530983, 0.4589303661569864, -1.4188669947772765, 0.29352168212647334, 0.7308608932842507, -0.1353758679174761, 0.17358923934048226, -0.40216684119518126, 0.43993814071860016, -1.2871086596268482, -1.2622185432193231, 0.5955345200199184, -0.8657767655249429, -2.0777147735575694, -1.0097475327974674, -0.29221483234147594, 0.2292766310482291, -1.1056969652514455, 1.4876657299426514, -0.036104835108870456, -0.6423673306131062, 1.17645837315232, -0.27627899423171265, -2.1294237281854707, 1.0389397167884664, -0.6156099069368945, 0.5660062401217804, -0.34735225445425977, -0.32061267845758085, -0.898048854923999, 2.3890802889591454, -0.1207700865946951, 0.9658162458846846, 2.1295380289836494, 0.22730977326083576, 0.307795221689862, -3.159470294922449, 0.8956823805247126, 1.4364518339011614, -1.6940979672180807, 0.165976015208281, 1.0227277830757575, 0.9471964236813554, 1.3689187788341273, 2.0082590219654723, -1.4127390079463908, -1.4582830839548455, 2.057655232622654, -1.6262107983377108, 0.8065089603585295, 0.059317700347295395, 0.13330649608758663, 0.41871631403681064, -1.6670993078179417, -0.4557222192488648, 0.8358412168608853, 1.1485241583907668, 0.42382769612443416, 0.07067530896807704, 0.7805845452452761, -0.9230705042306333, -0.7008265657860365, 0.1238579585529523, -1.5033879105374937, -0.8006324477609928, -0.44793642959253405, -0.27299529722657506, -0.42911609794809474, -0.04754182561350199, 0.4678169668023181, 0.9609426463686324, -1.135854381028605, -0.9604027706620838, -0.8759778130611081, 1.3255392992467154, 1.4437271577682296, 0.4932168845856174, 1.1198442202865473, 1.2097953377572856, -1.4782787622655886, 1.534331937472566, -0.18592464788213361, 0.9065510875978713, 0.2441526620364802, 1.2142409950847504, -0.005934606839626211, -0.19071981471485608, -0.3040583507442866, 0.060081676730458174, 0.018762337319815515, -0.9902130995818926, 1.3074986871427252, -1.2758677347357341, 1.0698936415205338, 0.5702156020946687, 0.3041015469962475, 1.0315316803895331, -1.3625531333588328, -0.4647788936504099, 1.3043793230085174, -2.2931238782528447, -1.8655685521053629, -0.9669629869645776, 0.1883663353758491, -1.0634824082910936, 0.8013306975599391, -1.5443624045591937, 0.32715347959892516, -1.1042425552504813, -1.6161041406680392, -0.5109993363057571, -0.9190886093343267, -0.6077428272848499, -0.5002569071129503, 0.9756689510277916, 0.2772218606494787, -0.43287852998208237, 0.6296681915983172, -0.8502843261320427, -0.9505069068832771, -0.650584341206366, -1.661723761397373, 1.007089074815852, -0.11873490106540271, -0.1272993611104505, 0.9298614676390998, -0.5153289230941936, -1.556702035787103, 0.3807701443952423, 0.6123807492207072, 1.1867467887368908, 0.14654907176430795, -0.5370416367498603, -2.1139883997425315, -0.7876830210703504, -0.6237996086335619, 0.13592084587607914, 0.6393276776955494, 0.13991569771729745, -0.81809230737367, -0.6683486553698732, 1.115178173122076, 2.446771414213701, -0.1637585890568815, -1.1209704564711065, 0.4467511515071406, -0.9534092482312004, 0.3182330919933401, 0.271683759433474, -0.9573363828477164, -1.0712413179694105, -0.30255813778652974, 0.958247674089883, 0.4979415521551006, -0.8376872519699228, 0.022535961046091832, 0.6840510626836408, -0.21077828406318735, 0.584447240190305, 0.3410263701239205, 1.187176771555195, -2.1172358171100973, 0.30995019232039317, 0.7901976578611829, 0.30913468523891424, -0.9844146654250953, 0.3474506697688135, 0.6259418281233743, 0.4794626029480261, -0.06173762343825315, -1.3627102955192472, -0.20031835021540442, 1.6870429458740388, 1.6083459881399655, 0.2789050227337342, -1.2719884064904396, 1.1853106830638485, -0.9913580737072663, 1.2233104543278213, 0.8134432318899081, 1.886557959191833, 0.11022533467624505, -0.7681413266984113, 1.436892344457456, -0.5556957709754798, 2.3038212660346935, -0.682772274731363, -0.4746168209407287, 0.5511129315383609, 0.4215246673091607, -1.4860625654820405, 0.1897176503580621, 0.44020540443738876, 0.7496215071681255, 2.552398472469107, 0.7607506386602476, 1.0820709259858656, 0.19917231987970416, 0.7942499355919473, 0.19973021075409347, 0.29481380935757473, -0.6357637486064631, 0.12863791178542627, 1.8561515112410554, -1.4521073859968245, -0.44690133813439353, -0.5281516778029656, 0.23031228507637702, -0.05163289925469105, 1.4531091939178806, 0.06594794127602743, 1.9158929778743325, 1.3893544881471012, 0.8377158542991587, 0.4599670791005717, 0.6058828013346426, 0.21069233748771843, 2.0847766207434564, -0.029268516047371095, -0.3252030660188709, 0.13202105483543372, -1.2051521919108732, 0.08810029046160057, 0.2998899394140385, -1.329901911797941, -0.35244571721201917, 1.0093949421205954, -0.6561924048355037, -0.6769220785633787, 0.9004707724740563, 0.4215313341559502, -0.7375271922065233, 1.0706249247137103, -0.028892244945197036, -0.5183281825357204, 0.5736153002965058, -0.3758685831678415, -0.7918995871067815, 1.2782634446781616, -0.6356995421752419, -0.4833863369287177, 0.9974534142023732, 0.29124328932605514, -0.8236355220229586, -0.08699050597488259, 0.6590141733829847, 2.441583292882557, 1.8873452628569025, 2.2474275746061965, -1.2084812281924566, -0.8018851520041654, 0.6759181159646618, 0.00313769957548172, 0.31474207170695445, -0.07736951126774436, -0.25018161293926583, -1.2830507962514812, -1.5628441907653305, 2.8453969247062276, -0.6342184442111992, -0.592854552706071, -0.653723999513639, -0.76565949917059, -0.730526998162015, 0.09075307806432394, -0.9481548645415303, -0.04755585978648472, 1.3476101538895733, -0.9875559107864285, -0.7896939152505444, 0.4816267344514175, -2.1648165937072137, -0.7268788889746165, 1.2960347147856455, 2.9109429440400323, -1.065376273609101, 0.18513796404565092, -0.8814138828253623, 1.2409135508501319, -0.012877656665903105, -0.6476617613042353, -1.994768600369764, 1.3443028214739667, -1.8514533014456531, -0.7379582086548833, 1.694396228823381, 0.4026562338082194, -1.2758466479856054, -0.25334115795781886, -0.10298131523967101, -1.3748667924232236, 0.6293890561733958, 0.2738888278899806, 0.5612373487486728, -0.35340678348969806, -0.736843748234479, -0.40367835808832514, -1.2439466232262497, 1.2570138663363715, 0.45632423807954914, -1.170707965548015, -0.9587623429264018, 0.6425982154718701, 1.5567146540543542, 1.2516374448322218, -0.22322323181634318, -0.5695167025136576, 1.3827725588378879, 0.529065899193698, -1.5470827592965664, -1.0944906269170949, 0.2905472841355263, -0.987585623182969, -0.3515621243107407, -1.1366040859833553, -0.5160321145422849, -1.6442173347711861, 1.3423907595439113, 0.31986604002016844, -0.5786595172834021, 0.73801532386848, 0.5788365796442495, -0.7375548663739422, 0.45423130001442397, -1.225358779977498, 0.7678067565519512, -0.05078757448886205, 1.512293872317004, 1.106989348588503, 1.3272064524680798, -1.0102290516604413, 1.3418085812620126, 0.4314053354881663, -0.8698836928173348, -0.33508116195249105, 2.273858285763485, 0.41127055898865217, -0.5417916233776102, 1.3173262896619646, -0.06588492371272986, 0.5969382095462551, 0.6197204718248582, 0.3742348312569251, -0.04007772711014461, -1.6143631344300409, -1.2617480510616137, -1.2401273803885422, 0.3822358970465057, 1.8061346386866513, -0.22702264172388117, 0.37048462734622856, -0.11799395539242921, -0.005235059103559137, -0.6489984366966667, 0.7782101694572308, -0.024126859434724878, -0.09798935833649829, -1.0417284651310414, -0.6605483359597034, 0.6972000521784677, -0.15225780204879624, -0.36034171752445354, 0.5934576132973614, -0.25056255516564263, -0.7310153609877714, -1.8861910032233697, 0.254480151361828, 1.4148114593503607, -0.8002251737459469, -1.3914075562421209, 2.6894920671041236, -0.1506644941293263, 0.4047667831579401, 0.5611273432518382, 1.779203788992058, -0.48565136522391056, -0.26653744823132164, -0.8829510316719237, 2.532755174768609, 0.5582799591535964, 0.3625488756486719, 0.8429610656748877, -0.1422677046514221, 0.059560937411363916, -1.54096863376706, -3.409308449483486, -1.501482227036858, -0.17084770021492382, 2.3317238025849716, -1.2471763217303788, 0.6742533376141315, -0.4671654422272103, -0.7254154200533441, 0.23441703660981258, -0.4694323705405022, -1.612196166706617, -0.32563743615759183, 1.3898422646804982, 0.859146411700291, -0.2601661523404493, 0.3217117418244543, -1.0494347817905338, -0.5991667659706216, 0.8881794866760082, 0.5840210011255069, -1.2075635705473267, -0.3377101947699321, 0.13603306699179857, 0.5802301275309478, -0.704852221496425, 0.9615592481981307, 0.5450775566697076, -1.3780611142397772, -1.6167118554509825, -1.2811556928029282, -1.2724034602241299, 0.16120409249117293, 0.42750602102457846, 1.2666174612779004, -1.5508664421057543, 0.2620798945065646, 2.0332984208088303, 0.1261854523088127, 0.8345628189160572, -0.687707400490003, 1.0656169293117534, -0.31887838781706285, -0.005112174834790412, 0.2023207919468502, -0.5067392202386992, 1.823953396894383, 0.1523428263375545, 2.2440789764565605, -0.6697609733471732, -0.34309395149284333, -0.3824068477398153, -0.33303131558596377, 0.9716664193169441, 0.8311581421420695, -0.22780854741625758, 0.20032616901737238, -1.2785511330679982, -0.3197180135822623, 0.4959834053798831, 0.6752515974385053, 0.5334780166422973, -2.002795187816773, 0.27050605525523075, -0.9424869426824867, 0.458248932225858, -0.46118697878329784, 0.47832198627914324, -0.3661079341479641, -0.09319576406942727, 0.577819340020893, 1.2520997452677414, -0.2933921906178384, 1.136343377990995, 0.2468127074537116, -1.2252940887079373, 0.6375579341674809, 0.3462788965739153, -0.5177836733288577, -0.035284483529249705, -0.5338255181822806, 0.5193809161508848, 0.21798950092913766, -0.6956597590579882, 0.8046664677176151, -0.11463713804889088, -0.19176077914163675, 0.791885645189318, -1.4328882682847868, -0.9528659659051965, -1.637558975422558, -1.989264868496837, -0.8459538105074142, 0.944828292676069, -1.1921028346027158, 0.2546472038919744, 0.3861916389251654, -1.521512495954636, 1.535375205330882, -1.8914196543962882, 0.5149418901648063, 0.7752013519581096, 0.9145512827088738, -0.5080387911664219, 0.05031436015329658, -0.41216922303342934, 0.37227191099516266, -1.6600720014787667, -0.17968185610490092, 0.31830407850338693, 0.7686158224111359, 0.3658407552939923, -0.7165726159358554, 0.013357030158994452, -0.3372894061190394, -0.6789238357123408, -0.3832898769073804, -0.3227036184382978, 0.4460521819485986, 0.061892643502349666, -0.32267506934792967, 1.484633534363464, 0.4021774493619681, 0.4307762865129178, -0.5296069271797403, 4.151195369087241, 0.5487000909862146, 0.7163468748574175, 0.3808084179332832, -0.4772621640085183, 0.5479157515300286, -1.1044576899329694, -1.2036713335057232, 0.6909028182382742, -0.6529263174772725, -1.4725628267518027, -0.7473406606454858, 0.7387557364279378, -0.8760308731605688, -0.967180804004829, -0.49221734292555436, -1.4382474439405089, -0.3481040054911766, 0.22254446316102353, 1.731032969663649, 2.8055652681876384, 2.1160837251189757, -1.379194059803083, 0.6326539345516785, 0.15520482328940885, 0.8119547790137315, -1.610952801893542, 0.008918798158614715, 0.477564041851444, 0.25533528319659754, 0.998197782393884, -1.6484421505039013, -0.3004410869764593, 0.6057050457224126, -0.32020257217470566, 1.3359336989858763, 0.535133451920879, -0.5673962878727761, 0.24055606737735033, -1.6590194676777759, 1.9066265876591473, 0.2721183739248777, 0.06834872118107038, -0.7693837262978656, 0.6000193521872865, 0.20157135480173424, 2.472674269826056, 0.8258740084136792, 0.47137911495882484, 1.244572899040009, -0.3130562609295631, -0.7435497606216963, 0.13509423548484906, 0.6656236185332783, -0.5980179153119386, -0.6435416164377876, -1.3312882258359282, 1.0671430529417514, -0.09759042594372078, -0.35648374184511217, -1.2269456519162936, 1.6814992783555787, 0.04184788447848968, 1.68139083696507, -0.3030041682277847, 2.2849057798957273, -1.196531329787736, 0.6523992375423346, 1.4893905469952924, -0.6823297566186022, -1.1041446305707252, 0.4421841974696293, -1.4167436314301174, -1.5920898580925384, 1.4343243359414184, -1.9045005981467849, 0.057069471507391965, 0.5278224067845345, -0.7362602350911139, 0.19448161568570255, 1.5261487666748228, 0.004388839910851893, 0.015470814085829732, 1.615975884645819, 0.8879261649672402, -0.1326774466682177, 1.9382951563961202, -0.44547041979800195, 0.021230799239171535, -0.1571038497582797, -0.16148117044663435, -0.36447608885124355, 0.9360978659212479, -1.9835447885628907, -1.8064899970710941, 0.9036470769919311, 2.425086908712557, -0.6272015905517969, 1.957160646153106, -1.7538826809290353, -1.2373863108002687, -0.42249715021397544, -0.02100757430425144, 0.7526038212912296, 0.2047007870068672, 0.570705167349308, -0.7783611682766279, -2.3095477705978107, 0.22606718794222244, -0.32290132655615966, -1.597852946819715, -0.8952260637834641, 0.5568680007496093, 0.31733948888023006, -0.24697424901807427, -1.1633182632185708, -0.261549901914151, -1.855510767468883, -0.12245837196266503, -0.041080160924985655, -0.585409894265932, -0.4138566348289641, -0.6980329178942006, -1.0029216664042124, 0.10979946351080472, -1.6542257294131706, 1.393533502384212, 0.5174318732191945, 0.30147088153612134, 0.13176508644926532, -0.21802556521053773, -0.55329143084434, 0.2739291983626038, -0.6883020380352294, 0.6825537252923997, -1.5046508987238285, -0.5828333121318955, -1.1884290907589348, 0.1665509776472768, 1.3971140199197725, -1.3673567412727532, 3.0130147873449924, 0.7896539284272303, -1.055832543621147, 0.16658265730062774, 0.5232158049212052, 0.28570121739370363, -0.5325889850018535, 1.2918469178499534, 1.9819733294664026, -0.8093143209894869, 1.469595195954295, -1.2932943712519451, -2.1208284016640415, -0.4050898165492931, -1.1517011911443218, 0.8998956145443444, -0.23384644657433187, 0.526560658434697, 1.1222026129349756, 0.2160342440751586, 0.6797496626133915, -0.5331175042591417, 0.6637291624241468, -1.0147033164625645, -0.5049005083720637, 2.0659370602844436, -1.5900216896103532, -1.5339789892006166, -0.3200566858112642, 1.2830977533887504, 0.04654283897838462, 1.7838815763897529, 0.3904401499994594, -0.4111612807908421, 1.1847627666014435, -0.3955642857036182, 0.3675601425931492, 0.088662611923031, 0.46299757634197497, -2.2893235368562155, -2.268927460602336, 1.283516393286584, 0.20920007589000394, 2.4411204448502586, 1.1389069409067243, -1.1898031767179975, -0.43341406963651063, 1.7741298995608883, -0.016709317081657786, 0.11517899718492178, -1.5511855060356194, -1.3117417253404795, 0.13351391911792548, 1.1637653113813886, -0.27570074398670863, -1.5697680634730649, -1.954956462100421, 0.5552656916393576, 0.2373994429321212, -1.9303747103380289, -0.1921132978172397, 0.6250698172881495, -0.5949372282094622, -0.7826608913130164, 1.4562229269964548, -0.5416543116490529, 0.6936768940278385, 0.6261775893704643, -0.5859171652539004, 0.8555032381807751, -1.3676477362552337, 4.238533804853162, 2.4545185017647904, -0.913404759221193, 0.4250981319720471, -0.9763799065871701, 0.7808586039540816, -1.0328656450097617, -0.7721604644533069, -0.3530813727528884, -1.5411637128692925, 0.6539840707892913, 0.008229110336607592, 0.7966890453416182, 0.7037436956153061, 0.6614113279704881, -0.202848267721112, -0.29922308805427594, -0.5522097500427048, 0.09875065962242098, 0.7083328933399845, 1.7362802880024957, -0.2266535118741716, 0.5299005404626365, 0.6719364752934611, -1.8615906591576734, -0.09068813508526216, -0.1888891414579059, 1.3423077781666952, -0.6924470819765697, 1.1041424493388294, 0.4134851965057971, -0.4735791706069265, -0.7356651547484112, -1.575469178834194, 0.2059058482018911, -1.317543434131728, 2.347983690185328, -0.9350302948592141, 1.0039027596124084, 0.30969112449845376, 0.2541035100649089, 0.4211688015877788, 1.0647819562744412, 1.2886070484626828, 1.4453593413552184, -0.026423761925036916, -0.10046863824315762, 0.9375145304857443, -0.8794152043439424, 0.6161524124555712, 2.1765363841706007, -0.17519057418498793, 0.40239774219958097, -0.5314020562312248, -0.028260581879397745, 0.5266158478069836, -0.8130604924415793, -0.1620471073410965, 1.368895928096441, 0.2544222901453687, 0.0682140981898076, -0.08305873685961358, 1.1551649925205691, 0.20488815881813946, 0.9788412565833704, 0.6730413277634831, -0.10343628631794778, -0.011056773466636922, -0.26893242071811874, -0.22234819963659333, -2.063667484853198, -0.9528556130697672, -2.298918544448265, 1.4641851715761252, -0.6443216828282126, -0.7448597363782805, -0.5637254977251447, 0.026036289664867818, 1.7947458799857385, 0.47823466572724166, -0.6009031631006543, 1.5622161381793802, -0.012361922782423504, 1.1320815868058798, 0.2666111797781486, 1.0800481352272358, -1.3534368975569377, -0.12565159569358056, 0.8269760280151415, 0.4101805250340873, 0.5459250834776258, -0.578841318268924, -0.7708632540651004, -0.004711348442621566, 0.9139140784227678, -0.5887863731031122, 0.5255711160933076, 0.6899347371240381, 1.8406881042526044, -0.1494953868420972, -1.487372075437836, 0.04531226841225139, -0.8785887917514404, 0.6773321050874577, -0.0983506278141217, 0.5597628029545394, 0.9487620637619515, -2.0252012328413445, -0.3325641975286207, -1.1258330017788327, 0.023802932989263906, 0.42532764883918267, -0.1719694477750812, 1.1366386876717014, -0.06950662371831764, -0.5610077364219385, 0.6924775343736279, -0.08202929488370111, 0.03632839803067284, 0.2035677562126695, 0.48902609842042033, 1.0804149661369027, -0.7425106537204975, -0.5702977393123885, -1.3826240552189546, -0.5228635824639636, 2.541990031610674, -0.3358484399232096, 0.2708627260856431, 0.3577767439219406, 1.0481739531875494, 0.41502512979161693, 1.945039667472124, -1.333971998047096, -1.6319888693166744, 1.8081668907285702, -1.126545357015281, 1.017481115516176, -0.8746343950821853, 1.613464623094451, -0.987275067228173, -0.7782780233402289, 0.9358137937887636, 1.2685709811916313, -0.9922941446951046, 0.6495420807278994, -0.5015976512021791, -1.4515930568861974, -0.3017145427194569, 0.22396206990737433, 0.2449168875921067, 2.4353212694888504, 0.17708064085180888, 1.6379030780705819, 1.3277860775740942, 1.9763199313325732, -0.7129095818443579, -1.2469376388413769, -0.6242116235182271, -0.48041188552500946, -0.14268548581723478, -1.6604837693733687, -0.03806802185256857, 0.6963957195724964, 1.0623750746697818, 0.6233441558858677, 0.36657697739573364, -2.295074935487194, 1.0845561474708743, 0.4905268784109729, 0.9510955040687479, -0.5026253874469225, 0.5855406556971665, -0.4674907407543193, -0.5608509773657036, -0.054561000082436986, -0.13488620479039842, -1.6100667806518532, -0.3709803597469035, 0.29582203102054655, 0.8410085106517383, -0.6645326878187746, 1.1367845966619665, -1.3201243250510812, 0.13674546078719402, 0.9775512964502551, -0.6593867653205457, -0.16315112660697673, -0.6429666213286755, 0.5269463017070531, 0.13689944560905168, 0.2704736580667669, 1.0956057892301136, 2.0377599847068084, 1.1896914387079371, -1.1056334740369136, -0.061419064162327903, 0.6558988396743295, 1.1616563231258492, 0.05233437675572931, -0.43279599457514883, -0.6310196056008639, -0.07017445588897313, 0.21859133324465385, 1.7464304327601714, -0.38374464463022673, -0.4116300533373271, -0.9012559637626759, -0.29838378562277373, 0.1776181377502974, 0.5337179529206251, -1.6927309440114802, 0.19627841167268098, -1.3375053577369045, 0.34292489957433187, 1.7252380623451755, 0.3893308049876548, -1.6138835583138924, 0.24320533391068808, -1.503402740971457, -0.9820815913055403, 0.02826537327258336, -0.8677808012629867, -0.15732458310810252, 1.6448055242437023, 0.3882793537178024, -0.4745596075074129, 0.1657838803136746, -2.6918015152661914, 0.7632486195032542, 0.6973513947209198, 0.4101471209696532, -2.2799074841609177, 1.284770153684539, 0.03995086580146711, -0.2991581182473426, -0.08304172354784842, 0.28042933971050626, -1.0923071947444258, 0.9164084413681113, -0.6812760370027394, 1.5480579290916134, 1.4837613730950547, 0.023182419970626405, -0.2668022486973583, -0.1188765567232481, -0.22450605274030175, -0.01068777580695019, -0.5681288373513323, -0.798016193089919, 1.112093456749927, 1.4289069908566108, -0.8325323358283204, 0.6527204397669472, 0.45576965736433434, -0.05177234665505003, 1.1825820243015825, 0.5633724078799881, -0.2598338582029702, 1.2260636343236992, -0.06502314120499497, 1.3554177601202826, 0.015378075446720483, 1.771795744777381, 0.19716116753361734, -0.9289545353666014, -0.01120548540552129, -1.6568561810835647, -0.9711632993719995, 0.2888457566302567, -0.33812030790826947, -0.6944997091883152, -0.08753361436324024, -1.0825962267681306, -0.4698117598324523, -0.31391779051735585, 0.5155485258897468, -1.3906426323765313, -0.08794713693189429, 1.323299166667676, -0.1281180737897692, -0.7313549630276092, 0.30727046798040325, 1.1752251844693715, -0.7441249207177553, 1.6052690350217986, 0.18649308224250258, 0.17892852927651728, -0.0995691575256924, 0.4348534499771249, 1.484991734895783, -0.5720258392859724, -0.08690696328546704, 0.7713939696120472, 1.1722789472312292, 1.9496467641354467, 0.22942775691626238, 0.7124499254350729, -0.40961823346856296, -1.5841557574786587, -0.5783735657948544, 1.7072885072301731, -0.9760682458530513, -0.7133260677207641, -0.17406636751269225, 1.5115376392568705, 0.3444982802650086, 0.5618620561647593, 0.7768151831330067, -1.8495980414473379, -0.022772431183660354, -0.2688258642531703, -0.2316501235768239, -0.4349049986098626, 0.09524082099485014, 0.18287945969711975, 0.9756566821517488, 1.2112951490716906, -0.8350588047652798, -0.7894781658614808, -0.8425885522378407, 1.0078366331542066, -2.170943513352494, -0.07697039348999336, 0.624710432231761, -1.5714538060400307, 0.25497055299290833, 0.9193656642088831, 1.0914383490187152, -0.2746559451582547, -0.24795001040712014, -0.1821963308600328, -0.6151863420266909, -0.07974289047525698, 0.864835252508244, -0.11852133979339911, -0.5867385141837459, 0.7425778869302543, 0.7772435416319093, 0.7418518577569089, 0.18477538422252776, -0.862469199675159, -0.7201960090993764, 0.7441788487719844, -0.44740979333359115, -2.011406066578824, -2.0397719472330946, 1.6317617740438857, 0.501298361621573, 0.46480805036189093, -0.6492071444203512, -0.9962577891956758, -1.176143672100762, -1.460358133281756, 0.91939184535992, -2.6115193413417344, -0.11701441464426601, 0.36330899947821516, -0.7619851206952822, -0.9791836397007687, 0.06605184536205168, 0.9852736131214399, 0.18316974821162169, -0.16385983370688456, 1.769889718870536, -0.7568083172666948, -0.07093554823462433, 0.34915804932546474, 0.04394955212420144, -0.3412151969411125, -0.037998909530440356, -0.7920940693112494, 0.23924283654785033, -0.7218726802077204, 0.756794397487571, 1.129998141517764, 0.06199671202439378, 1.5818825635871332, -2.0927309142911965, -1.009720388820037, -1.161041154747722, -0.8447671692136892, -1.0157929981350513, 0.7904271516718387, 0.7254384385818724, -0.603295486359894, 0.25924412778603606, -0.04640660866056171, -1.6000423263326133, 1.8143254523998487, -0.08862538404196012, 0.5332621638876169, 1.1045997215315637, -0.41584450160976266, 0.9441745490519653, 0.24798697093505728, 0.007684578291883661, 0.10198392659226542, 1.6199201784700468, -0.32528736620138143, -0.5826981266958557, -0.36325256797247957, 1.1471577477638135, 0.6178987140946427, 0.36972297251343633, 0.5437284650592201, -1.4459624565283546, 0.05792287061159475, 0.41648235426252744, -0.3752827187450667, 1.6652887251405053, -0.42564437336001554, 0.9761973006448895, -0.7275241033025399, 0.6934458083833381, -0.29112188437100084, 1.3282243166189927, -0.9536927875603478, -0.719434212611784, 0.6748136465043926, -0.03597354593983007, 1.94009058703115, 0.09882655123973512, 2.1053876175385304, 1.4185342675315131, 0.1206620765251783, 0.14903745714080963, 0.10442318495551679, -0.17795681161591564, 1.2580662909953826, -0.309432614193383, -1.0905944849250224, 0.4769931537784153, 0.42744787996997274, 0.015299040637353436, -0.35211140544489866, 0.2588719668529644, 0.39806242670614195, 0.0982957694556772, -0.3643039151707563, -1.661352851241187, -0.7050125329026734, -0.943960952206926, -1.4473953121799084, 0.6926023466644213, 0.284659435800313, 1.6730413075943111, 0.6423676343810131, 0.3968310937206259, -0.8342984203305135, -0.06635863092332817, 0.48133940282415283, -0.34365908316039695, 0.8195486752084361, -0.2781857864218842, -1.0136587780355568, -0.4538474341770635, -1.1337344789342048, -0.5150244531135606, 0.958566232938252, -0.16105129432877321, 0.38436738614303156, -0.5172439276028532, 0.23093709347387772, -0.30272270953081704, -0.21962749662435752, 0.9566459591875526, -0.788349928603636, -0.44952615913370747, 0.525332205545319, -0.5812548660484521, 1.2956320514491553, -1.752164482642109, -0.6047121066028011, -0.15329007945272555, -0.04110361189064399, 0.2075100652227872, -0.04955642332135181, -1.2847570979710345, 0.4806820630644186, 0.8112350665109486, 0.577438605043487, -0.5506815219471743, 0.7858766373478445, -1.101050840231404, -2.2244251571050273, 0.09434075969634925, 0.19198836106624168, 1.0670984516256519, -0.7989553140491875, -0.20794218769948203, 1.5326125420890269, 0.020895643272767377, 1.429434237396836, -0.09226519337744446, 0.2530160966559398, -1.2052909073582596, 0.18629835668130743, -1.1412717735009497, 1.2293983703310951, 0.20963090073800605, 0.2771037033747804, 1.1176243523307434, -1.7749390137644867, -0.6160566595276167, 0.37431077650255806, -0.628817850166509, -1.5457989014436102, 1.0413567521072367, -0.6687052895376355, 0.08823501338384936, -0.8504561089335623, 2.674041129993747, -1.5899356389768722, -0.12358228035838018, 0.4957660906211637, 0.31851942141963985, -2.077120767009975, -0.5844799194788266, 1.9510391355162264, -0.347560684365186, 1.3086755801775074, 0.34475766053720236, -0.4033872470813162, 1.1582973308383313, -1.0684599760113471, 0.529968393960725, -1.6526921510620116, 0.9524384542696674, -0.22909069471152455, 0.6652418786019982, 0.0030589233668147898, 0.11365610389048802, -0.2480098634476716, -1.739708416005498, 0.13128969246670458, -0.8124775515041727, 0.09211054412374194, -0.5372875032406812, -0.0032089521665293573, -0.8316736236057737, 1.5059153046848375, 0.5055489101297763, -0.9926899954404349, 0.06717218616117565, 0.7564225434228204, -1.1172446398752929, -0.0971278427942958, 0.1783634876571702, -0.43831740139818265, -0.9897246258630265, 0.42789947696918956, -1.1881782474146696, -2.2595621851300622, 0.6418731773450146, 0.2534262764606806, 0.4316556467189196, -0.1404488018967209, 0.8263074484867586, -0.14552757065621125, 0.0789242186302759, 0.8209702417714765, -0.25903816299191046, 0.6767653743426741, 1.6145117461589933, 0.6926264703024766, -0.32214772217430293, 0.9292349516554164, -1.0508805938355477, -2.749764645898245, 0.013188601563584493, 0.33055296889149677, -1.1958215283600067, 0.1405450269372766, -0.508425415799171, 1.4570136536517577, -1.0251431195020073, 1.0969073653806085, 0.2995765466625078, -0.7079203015696985, 0.1288388731533383, 0.7296772632654821, -0.5084827629757859, -0.9959874907849151, 0.7608364139386558, -1.1970996777698375, 1.9127937929371042, 0.38743478707694207, 0.21795474706617954, -0.29993899538603785, -1.4785086866034736, -1.5956467908439216, -1.2082094773229581, 0.03773293580577447, 0.790311941516555, 0.5111896121176778, -1.1940258469292004, 1.2227006637979814, 0.836882842830787, -1.4311686461788606, -1.2744460342013122, 1.4644637457684015, 0.9728193611804964, 0.555860074890682, -0.4409659816734968, -1.268835784551248, 1.830337701005201, 0.5659326920677746, -0.5949593269450844, -0.48933591057504616, -0.5902894454298842, 0.8313257587194035, -0.014541865211528828, 0.42819120074867917, 0.12344083343107326, -1.5259370836437376, -0.4422937354316872, 0.2663102136658507, 0.7711270876630171, -0.6631414912664546, 0.7010024223490354, 2.074527616332793, 0.1267033512168494, 0.5771332153363341, -0.1669943788998164, 0.37570932219774306, -0.009486467375681047, 0.6339720925542973, -1.100679804820569, 0.208089727845949, -0.9425617416684303, -1.4440593374039066, -0.4882367066101957, 0.7163657255326146, -1.0357588950466872, -3.0737220356886374, 0.2470950795522819, 0.2864288554119523, 0.1483978221958065, 2.1154989451643167, -0.4001965762118845, -0.6462203956080385, 1.1265359562700552, -1.2596675882237476, -1.0043123290637297, -1.2085727111478823, 1.4452610642730932, -1.5066630796353353, -0.26195290731609777, -0.14271399927968614, -0.6530276111308737, 0.31402361422899266, -0.615575261840529, -1.5382467581744872, -1.146638529472436, -1.2566936090246918, -0.11659270837613013, 0.35542964402643873, 0.02526277564568483, -1.7743572584114875, -0.7085383632824588, -0.63517949386522, 0.7100322417458258, 0.37725139473966673, -0.5759538564824571, 0.08180511402950946, 0.41407533287471754, -0.24200104577387313, -0.4385693241008144, 1.6526863394676001, -0.11474769466518762, -0.7778772946580198, -0.28839425476706665, -1.9107601252457116, 1.2251863883694925, -0.6102167805929645, 1.314166180001923, 0.33549111757526723, 0.1642165334041994, -0.2711391207536865, -0.7227241249586495, -0.20242746834599726, 0.511635243911443, 0.7803547739974653, -0.327423000785996, 0.3502846670812043, -0.6690281009028096, -1.603564129628161, 0.651294169982652, 1.5346475986331407, 0.6076831921328979, 0.09553225219459871, -0.7254748961580175, 0.5000694612537876, 0.41285641663749495, -0.6307563086891868, 0.10304359933774031, 0.6906693939179498, -0.6117088277209861, -0.37359085726781716, 0.6415372041475905, 0.5667199392606257, -0.471612466163586, -0.28409429557130345, -1.1000185275940002, 1.2078426552444212, 1.820822882585083, -0.049716516450738324, 0.48541676042055915, -0.24833733761952417, 1.9706194085315605, -1.9357972478544503, 1.2746428725319756, 0.8787450667483632, -0.5743399181816461, 1.146477625622449, 0.82904607165605, -0.6240307749078965, -0.5201093385684066, 1.7563590799610034, 0.9291759054010359, 0.03949431623274768, 0.09878351123218292, 0.4678794507416003, -0.21611204185496907, -1.9415038866503043, 2.2711411739440632, -0.7573422816803704, 0.4462925903632097, -0.7789087537529676, -0.5503182367952988, 0.5971424930574555, -0.07203878009168195, -0.5217028851935946, 1.082108216219426, 0.41790242250612963, -0.0679066357661384, -1.263509598957737, 0.8004808096290376, -0.2541222406082443, -0.2133433497515408, -0.26792364723437295, 0.20112906676382966, -0.32435552792181394, 0.23282205608740192, 2.2221675354748855, -1.4830106452698057, 0.9891247273398209, 0.2603986195227453, 0.4910300720533456, -1.357238648432873, -1.2514963996484836, -0.30125845912815724, 0.1928097450048526, 1.4448018223442105, 0.5625834185014028, -1.1979257187589254, -0.07857776228971138, 0.06045821558284647, 0.7133596907037718, -0.8010426610921747, 2.0440257915732163, -0.5915625781476785, 0.4614571279264127, -0.8323915586162163, -0.12281522077241769, -1.891751987785829, -1.436820011323204, -0.3375407922826853, -0.4583639388670451, -0.09352467965350812, -0.09376078246251955, -1.104789843452201, -1.9113071146131402, -0.3080107984257694, 0.6890879947469407, 1.6298325324990017, 1.7332383276272256, -0.6570721931348752, 0.5011093119580866, 1.4256340832824121, -1.6409542816000537, 0.3031292239641022, 2.064237216045931, -0.051705902095611905, -0.7832897005596622, -0.7454241686325258, 0.7295020332844333, 1.6375808311567626, -1.2299275543889183, -0.5600159935032863, 0.36276227989135124, -0.0841421034314566, -0.34511214955582953, 0.1013965878283084, -0.18098461747365058, 0.9191251794719164, 0.06765779742714738, -0.24919806799835556, -1.7584641099826481, -0.2408943706631287, 1.1586506587846426, -0.6941027599159496, -0.40284176463802435, -0.07218934233754541, -0.6866794606674014, -1.136814985867382, -1.0286542111302972, -1.0753215203338025, -0.523524292626774, -1.1218134808250722, -0.874089313385567, 0.09331272041243248, 0.9386738047553144, 0.09076349142987619, -1.2160470369625689, 0.27900325888755534, -1.3482125481314258, -2.0470437247953943, -0.40859660863279956, 0.2828811548709021, 2.4800984064132803, 0.19294989666278736, 0.28212861056292143, -1.610912083835489, -0.5315801864225906, 1.706608368850939, -1.8501729731293364, -0.630002988972623, 1.4757143328892797, -1.6396479208187233, -1.8371716642350544, -1.0742314481301545, 1.0754611432095824, -0.5378007226773498, -0.3178784375535398, 0.5735335996600629, 0.4868994275345122, -0.21549627729467807, -0.16640172916066487, 0.908080649370133, 2.173437328284729, 0.4190344084566232, -0.9569146506578511, 0.45263575951706014, 1.778059009562198, 1.4488553145210796, 0.07467679612778716, -1.3459068501008828, 1.0900502612985628, 1.8272758673855272, -0.23894381261705294, 0.12043314967623445, -0.5773200285051094, 0.5216921180645022, -1.5092635778866117, 0.18102168205190566, 0.8965052639560143, 0.9201255573471795, -1.2903912922821366, 0.9873211691804024, 1.172724388329733, 0.20376377055663986, 2.138854170658406, -0.9316113182700534, -1.2475280594655904, 0.417911924644604, 0.3104385253889033, 0.8962967028920321, -0.5778036698087538, 1.0180641994003492, 1.978139527067393, 0.37723162368545265, -0.3153731448300482, -0.28043983006620493, 1.2268346250368896, -0.17227523540812437, 0.2580612644636763, 0.7839164309552376, -1.6857109421253955, -1.3003167935540005, 1.933409068497346, -0.720369637396077, 0.5104055429987321, -1.08388129713197, 0.23369005993420508, -0.8857461821887489, 0.21884110679487903, 0.3399839311138383, 2.2927612097100596, -0.1302670929713838, -0.2227227695346543, -1.4346253879586792, -0.8344086694038684, -0.7002516953857244, 0.43509420272323845, 0.8609631356011878, -0.43270705045183616, -0.24001073577599197, 0.28609176501217787, 0.7031717689478829, 0.23204270200931182, 2.1505272334979897, 0.2861763181933207, -0.7584547841123832, 0.5168757252968688, -1.1092933224722437, 0.28264197275089215, -0.7359352757039123, 0.7696916736749783, 1.1693904145377578, -0.03894762164617204, 0.6641135169499479, -0.7147964181583462, -0.3596311141562558, -1.8435871360153697, -1.0008815336080084, -0.8745896149619665, -1.7854772192044157, 1.4101601051693955, 0.3989081511969654, -0.46138352582140285, -2.070033977081843, -0.18644561980439622, 1.2400855648899223, -1.164136732605302, -0.7927090251554685, 0.5630168884076489, 1.1671379510254194, 2.231868835700232, 0.4565350508345933, -0.3389202312449233, -1.5275179745183336, 0.3230936836149417, 0.6082923125809354, -1.385778896370543, 0.4933263314478739, -1.9751095768562033, -0.2065779574546836, -0.19565497391904002, 0.19507228882058708, 1.1491676003071556, 0.47753659551701444, 1.267566892973097, 1.2699972267061581, -0.14783471801597317, 1.3947086641636515, 0.13849276493060986, 1.543713937406089, 0.8793567120723491, -0.19166319681661234, -2.178011595451856, -0.047935435051166216, 1.0519017754831546, -1.1503195176998693, 0.9590735535318957, -0.4101942648351055, -0.9291595233845755, 0.04827969552760872, -0.006591472103865717, -0.8287084685787525, 0.510991782645471, 1.1993354234468527, -0.6249200800653011, 0.06906024810652203, -0.2810131831119284, 1.7132565332176783, 0.3715878450725023, 0.4232188686511501, -0.23751681917622205, -0.284138784599415, -0.9181240192735334, 1.7200351673814782, -0.5646085076036653, 0.9511857419563984, -1.2703881921689144, 1.044280055990386, 0.03786689772227966, 1.4182728427165774, 0.8337325218228854, -1.0587247347181652, -0.5031113248889103, 0.8873021806079839, -1.6837264548806383, -0.963353987660909, -0.3925379775035674, 0.030351645171583227, -0.1480784901933993, 0.5971587614103617, -0.5966536682782796, -0.32585054539846936, -1.2881189235714545, 1.4626168790196996, 0.4876451579697916, -2.5512587798294053, -0.22746942805830464, 0.22714076786745147, -1.2367287849167479, -1.4958341332392378, 0.8404569974160938, -0.5250803172042454, 1.1030214409483563, -0.9430810970721388, 0.8419017021480036, 0.10747778668821155, -0.3872490592960608, -0.5972525446631549, 0.9643730616194118, -1.9150859939615104, -0.16132999883201363, 2.247013458758037, 0.2793924489497806, 0.22445447609820876, -0.5935321078971101, -1.021619853538392, -0.5669336330928147, 1.51072676166332, -0.4577459477554841, 0.2856756020469671, 1.3003683403048245, 1.6681883000570241, 0.29140173625397836, 1.4448227513845624, -0.49337735263206095, 0.3063926208053877, -0.8839906748898476, -0.8508338033152001, 0.32884664967404276, 0.8225807552240499, 0.28615338220135916, -0.6459677898912536, 0.456084692916367, 1.1816323117108978, 0.005750129390048088, -0.23080308943910496, 1.2329424071409298, -3.103298270774514, 1.2457064642869893, -1.438732143788353, -0.5069669088042135, 1.9410370006144513, -0.680135288988108, -0.684441394790031, -0.9299498749943689, -1.0023257557431406, -0.20085573890294844, 2.1892107786913413, 1.0539082768590986, -0.12946159481571648, -0.9603859816501762, -0.6759566438229674, 0.6063321523892387, -2.04080451980182, 0.3448387208567922, 0.6188680405937481, -2.53483233750232, 0.4718381152261103, 0.5204602861759604, -0.37294274011868744, -1.0608122326322948, 0.876995543974861, 1.6208103493973607, -0.10501804755065293, -1.144605534391477, -0.11545809967020526, -1.5254381527091445, 0.704971452166678, -1.1385423962074352, -1.0702260829994228, -0.8042670395297246, -1.9958053298936345, 0.06149218869846654, 0.0034778293679331336, -1.6309611881902848, -1.579450043003391, -0.812854397163873, -1.3440391096930395, -0.7992158635130223, -0.7307305666236779, 0.563033821782763, 0.5929740847991084, -0.4072124328227139, -0.9597031772508735, 0.6326426393413165, -1.26743591058185, 0.012961789096372823, 1.3690236683244486, 0.5626351995527971, 0.3930969343026333, 0.3804639938085295, -0.7055289460485151, -1.1137071825718237, -0.32401279261679405, -0.25360651639701537, -0.3629288727538312, 0.40309857005433064, 1.6124254520554622, 1.145346015655076, 0.18482864793147852, 1.0146132489781052, 0.5762713361888263, -0.4302922143454036, -0.7781673008888688, 0.3165266777932903, -1.3210033528584464, 0.47419403592709836, -0.02875008939599337, 0.14714621419460175, 1.4797797158907586, 0.6830428568029596, -1.051712101999051, 1.194440018218743, -1.1642432883696971, 1.04395640790416, -0.3903019504585278, -0.9469832104094259, -0.15920476878484313, 1.2958603176641055, 1.2195200287127348, -0.18102374320360753, -1.1645019636692635, 0.31512163398607973, 0.4112140952226413, 0.799068132489134, -0.194553356476797, -0.24713828227948162, 1.1162744704218956, -0.5100587555940508, -1.7306779449877614, -1.3161139044492312, 0.6341932724742192, -0.7347849903121613, 0.9645835907250738, 1.5026031951659682, -1.4760744795962333, -0.06731259930616487, 0.7042872721353796, -0.5335137254930029, 0.0716602316769604, 0.6043539708627061, 0.11692324897196178, -0.05768277951806856, 1.1162713764449659, 1.8796989655172829, 0.43088724829364505, 2.38688392018114, 0.29310955804355704, 0.7462035664728303, -1.4923332297842067, -1.2280466714373701, 1.0734872965346725, 0.5262032697307816, 0.7693518738655505, -0.28211783832137927, -0.0290036682453748, -2.931607725174539, -0.61001449056912, -0.7025484586715276, 0.7759827155138221, -0.19166960568471056, 0.9694902932312826, -1.04530914742025, 0.9727250463770896, 0.06310226379325519, 1.0818373134406507, 1.1047859736064884, -0.9784634968885791, -0.9146592081968249, 0.15142025533299056, 0.23328387697346153, 1.482068026300734, 1.4017194403233817, 0.5839385941999119, -3.499091269336771, 0.6898991159514024, -0.76367161011779, 0.271889761583164, -0.2648955270675521, -0.05132512877225392, -1.1445243383154795, -0.9341941596618715, -0.2758301417114395, -0.12386224872925095, 0.3429318698923175, -0.20380183235337243, -1.442620516648269, -0.08857891832728218, -0.5685844707827721, 0.31653125437081814, -0.7630932541957661, 1.0549727437086984, -0.23903901917404402, 0.13881369002402355, -0.277058267581059, -1.1828348650720584, 0.41122688905564325, -0.11093465300197233, 0.05700186250342231, -0.8530057143017865, -1.1330141754733023, -0.788433518694048, 0.0410432386990952, -0.2526837758051426, -0.7365204396871289, 2.374275605228078, 0.24647701310468878, 0.6189709904599635, -0.3036782549769593, -0.6671553020762782, 0.9568820989023366, -1.079178482400065, 0.29500583173695416, -0.9289020636769935, 0.7791599475788574, -0.1983372320556875, -0.49097598732772324, -1.2327667862306246, -0.463786196952311, -0.7468162049628737, 1.8137576226948215, 0.4907226689424396, 0.3853672976926061, 1.405986757744362, 0.006148904928010884, 0.5727386445488017, 0.09397490448508446, -0.35506525618267476, 1.7351653184984497, -0.39253263749716394, 0.12196757373920339, 0.38004382713166907, 0.7006111800175882, 0.4987705634227367, -0.7645303868257485, -0.5146892069655717, -0.5835515156473441, -1.1547773890712476, -0.05898296492235115}; + + +static double gemm_checksum[64] = {-45.1525872455864, -53.56382313501859, 75.37190918194668, 81.51135315789973, -15.61415231827229, -60.60307561986312, 47.96036541651724, 65.73237574275608, -4.4727051387073935, -33.991042035520486, -26.416772446199882, 1.7860331769884112, 63.625439870165444, 11.62205632780551, -15.064831482590407, -47.33578990077392, 31.789427261811298, 45.60325302655279, 46.39784351481784, -41.63175282633895, -37.58415419207174, 52.811751728757756, 17.491718577483027, 95.99796882635259, -31.290609142980582, 56.18913870959351, -9.784406747318776, -47.798468293167936, -68.85425504150908, 14.518540879027748, 12.444849316598145, 27.044449299453333, 34.41753472048874, 37.24202029503455, 0.0015372059941842764, 56.49727200521621, 42.08187683985865, -60.80036174635206, -41.51354371054238, 25.39617622130028, 64.16199934240205, -49.723260643988866, -67.73199521937849, 14.061632619059395, -46.723037598164815, -1.4946901268404673, -19.516162199239137, 13.487866069963179, -23.19623129877386, 56.32942826668456, 67.64491765822369, 25.427295331888367, -3.9993280938311173, 70.5746407371274, 68.98981144920677, 11.672168486094769, 10.78240530670366, 31.25611590676771, 34.98838254510045, -129.95599475048968, 14.933419865189286, 35.74263691521163, 85.87277962177788, 93.68226272318962}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/layer.h b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/layer.h new file mode 100644 index 00000000..ba49ef72 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/data/layer.h @@ -0,0 +1,134 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +typedef enum { FP64 = 8, FP32 = 4, FP16 = 2, FP8 = 1 } precision_t; + +/** + * @struct gemm_layer_struct + * @brief This structure contains all parameters necessary for GEMM. + * @var gemm_layer_struct::M + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::M_p + * M divided by number of compute cores + * @var gemm_layer_struct::N + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::K + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::TA + * Transpose matrix A + * @var gemm_layer_struct::TB + * Transpose matrix B + * @var gemm_layer_struct::TILE_M + * Tile factor across M dimension + * @var gemm_layer_struct::TILE_N + * Tile factor across N dimension + * @var gemm_layer_struct::TILE_K + * Tile factor across K dimension + * @var gemm_layer_struct::A + * Pointer to matrix A + * @var gemm_layer_struct::B + * Pointer to matrix B + * @var gemm_layer_struct::C + * Pointer to matrix C + * @var gemm_layer_struct::ALPHA + * constant factor: A * B + ALPHA * C + * @var gemm_layer_struct::dtype + * Precision of GEMM + * @var gemm_layer_struct::expand + * Use expanding DOTP instructions + */ +typedef struct gemm_layer_struct { + uint32_t M; + uint32_t M_p; + uint32_t N; + uint32_t K; + + uint32_t TA; + uint32_t TB; + + uint32_t TILE_M; + uint32_t TILE_N; + uint32_t TILE_K; + + double *A; + double *B; + double *C; + + uint32_t ALPHA; + + precision_t dtype; + uint32_t expand; +} gemm_layer; + +/** + * @struct conv_layer_struct + * @brief This structure contains all parameters necessary for Convolutional + * layers + * @var conv_layer_struct::CO + * Number of output channels + * @var conv_layer_struct::CI + * Number of input channels + * @var conv_layer_struct::IH + * Height of input feature map + * @var conv_layer_struct::IW + * Width of input feature map + * @var conv_layer_struct::OH + * Height of output feature map + * @var conv_layer_struct::OW + * Width of output feature map + * @var conv_layer_struct::FH + * Height of filter + * @var conv_layer_struct::FW + * Width of filter + * @var conv_layer_struct::pad + * Padding on all sides + * @var conv_layer_struct::ifmap + * Pointer to input feature map + * @var conv_layer_struct::weights + * Pointer to weights + * @var conv_layer_struct::ofmap + * Pointer to output feature map + * @var conv_layer_struct::TILE_CI + * Tiling factor of input channel + * @var conv_layer_struct::cluster2cluster + * Flag for enabling cluster 2 cluster communication + * @var conv_layer_struct::im2col + * Flag for enabling im2col + GEMM + * @var conv_layer_struct::gamma + * Pointer to gamma for BatchNorm + * @var conv_layer_struct::beta + * Pointer to beta for BatchNorm + * @var gemm_layer_struct::dtype + * Precision of Convolution layer + */ +typedef struct conv_layer_struct { + // CONV2D + uint32_t CO; + uint32_t CI; + uint32_t IH; + uint32_t IW; + uint32_t OH; + uint32_t OW; + uint32_t FH; + uint32_t FW; + uint32_t pad; + + double *ifmap; + double *weights; + double *ofmap; + + uint32_t TILE_CI; + uint32_t cluster2cluster; + uint32_t im2col; + + // BATCHNORM + double *gamma; + double *beta; + + precision_t dtype; +} conv_layer; diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/kernel/mxfmatmul.c b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/kernel/mxfmatmul.c new file mode 100644 index 00000000..471bbc50 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/kernel/mxfmatmul.c @@ -0,0 +1,429 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#include "mxfmatmul.h" + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 2*kernel_n, respectively +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 1)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v24, 0"); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mxfmacc.vv v24, v0, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mxfmacc.vv v24, v12, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v24, v12, v8"); + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; // Question: If give the abs value 4 to here, then the + // performance is better. Why? + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 4*kernel_n, respectively +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 2)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v28, 0"); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v8"); + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 8*kernel_n, respectively +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 3)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v18, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v22, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v26, 0"); + asm volatile("vmv.v.i v28, 0"); + asm volatile("vmv.v.i v30, 0"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v18, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v22, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v26, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v30, v12, v8"); + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v30, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/kernel/mxfmatmul.h b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/kernel/mxfmatmul.h new file mode 100644 index 00000000..a6b7979e --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/kernel/mxfmatmul.h @@ -0,0 +1,55 @@ +// Copyright 2021 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#ifndef MXMATMUL_H +#define MXMATMUL_H + +#include + +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +#endif diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/main.c b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/main.c new file mode 100644 index 00000000..2b2c1f3b --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/main.c @@ -0,0 +1,249 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include DATAHEADER +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 8 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 4 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +#define B2 1 + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + +#ifdef B2 + matmul_tiled_Bx2(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#else + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#endif + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/main.c~ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/main.c~ new file mode 100644 index 00000000..fe5d2e8c --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/main.c~ @@ -0,0 +1,249 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include DATAHEADER +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 8 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 4 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +//#define B2 1 + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + +#ifdef B2 + matmul_tiled_Bx2(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#else + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#endif + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/script/gen_data.py b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/script/gen_data.py new file mode 100644 index 00000000..feada63f --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/script/gen_data.py @@ -0,0 +1,592 @@ +#!/usr/bin/env python3 +# Copyright 2022 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Author: Tim Fischer + +import numpy as np +import torch +import torch.nn as nn +import argparse +import pathlib +import hjson +import struct + +np.random.seed(42) +torch.manual_seed(42) + +global verbose + + +def array_to_cstr(a, fmt=float): + out = '{' + if fmt == float: + if isinstance(a, np.ndarray): + a = a.flat + if isinstance(a, torch.Tensor): + a = a.numpy().flat + for el in a: + out += '{}, '.format(el) + else: + for sign, exp, mant in zip(a['sign'].numpy().flat, a['exponent'].numpy().flat, a['mantissa'].numpy().flat): + value = sign * 2**7 + exp * 2**2 + mant + out += "0x{:02x}, ".format(value) + out = out[:-2] + '}' + return out + + +def emit_header_file(layer_type: str, **kwargs): + + file_path = pathlib.Path(__file__).parent.parent / 'data' + emit_str = "// Copyright 2022 ETH Zurich and University of Bologna.\n" + \ + "// Licensed under the Apache License, Version 2.0, see LICENSE for details.\n" + \ + "// SPDX-License-Identifier: Apache-2.0\n\n" + + if layer_type == 'Conv2d': + file = file_path / 'data_conv2d.h' + emit_str += emit_conv2d_layer(**kwargs) + elif layer_type == 'GEMM': + file = file_path / ("data_" + str(kwargs["M"]) + "_" + str(kwargs["N"]) + "_" + str(kwargs["K"]) + ".h") + emit_str += emit_GEMM_layer(**kwargs) + elif layer_type == 'Print': + file = file_path / 'result_check.h' + emit_str += emit_Print_layer(**kwargs) + elif layer_type == 'BatchNorm': + file = file_path / 'data_batchnorm.h' + emit_str += emit_batchnorm_layer(**kwargs) + elif layer_type == 'MaxPool': + file = file_path / 'data_maxpool.h' + emit_str += emit_maxpool_layer(**kwargs) + elif layer_type == 'FusedConv': + file = file_path / 'data_fusedconv.h' + emit_str += emit_fusedconv(**kwargs) + with file.open('w') as f: + f.write(emit_str) + + +def emit_conv2d_layer(name='conv2d', **kwargs): + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + weights = kwargs['weights'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + _, fh, fw, _ = weights.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {fh},\n' + layer_str += f'\t.FW = {fw}\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_weights_dram[{co}][{ci}][{fh}][{fw}] = ' + array_to_cstr(weights) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_linear_layer(input, weights, ofmap): + + layer_str = '' + return layer_str + + +def emit_GEMM_layer(name='gemm', **kwargs): + mat_A = kwargs['A'] + mat_B = kwargs['B'] + mat_C = kwargs['C'] + result = kwargs['result'] + + m = kwargs['M'] + n = kwargs['N'] + k = kwargs['K'] + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'const gemm_layer {name}_l = {{\n' + layer_str += f'\t.M = {m},\n' + layer_str += f'\t.N = {n},\n' + layer_str += f'\t.K = {k},\n' + layer_str += f'\t.TA = {int(kwargs["ta"])},\n' + layer_str += f'\t.TB = {int(kwargs["tb"])},\n' + layer_str += f'\t.ALPHA = {kwargs["alpha"]},\n' + layer_str += f'\t.dtype = FP{kwargs["prec"]},\n' + layer_str += f'\t.expand = {kwargs["expand"]}\n' + layer_str += '};\n\n\n' + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str += f'{dtype} r[{m}] __attribute__((section(".l1")));\n\n' + + if dtype != 'char': + layer_str += f'static {dtype} {name}_A_dram [{m}*{k}] = ' + array_to_cstr(mat_A) + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}*{n}] = ' + array_to_cstr(mat_B) + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}*{n}] = ' + array_to_cstr(mat_C) + ';\n\n\n' + layer_str += f'static {dtype} {name}_checksum[{m}] = ' + array_to_cstr(torch.sum(result, dim=-1)) + ';\n\n\n' + else: + layer_str += f'static {dtype} {name}_A_dram [{m}][{k}] = ' + \ + array_to_cstr(kwargs['bits_A'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}][{n}] = ' + \ + array_to_cstr(kwargs['bits_B'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}][{n}] = ' + \ + array_to_cstr(kwargs['bits_C'], fmt='char') + ';\n\n\n' + + return layer_str + + +def emit_Print_layer(mat): + result_str = "// Results Print:\n" + for row in mat: + line = " ".join(str(struct.unpack('f', struct.pack('f', x))[0]) for x in row) + result_str += "// " + line + "\n" + return result_str + + +def emit_batchnorm_layer(name='batchnorm', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + beta = kwargs['beta'] + gamma = kwargs['gamma'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_beta_dram[{ci}] = ' + array_to_cstr(beta) + ';\n\n\n' + layer_str += f'static double {name}_gamma_dram[{ci}] = ' + array_to_cstr(gamma) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_maxpool_layer(name='maxpool', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + k = kwargs['kernel_size'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {k},\n' + layer_str += f'\t.FW = {k},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_fusedconv(name='fusedconv', **kwargs): + + ifmap = kwargs['ifmap'] + kernel = kwargs['kernel'] + bn_k = kwargs['bn_k'] + bn_l = kwargs['bn_l'] + ofmap = kwargs['ofmap'] + ofmap_before = kwargs['ofmap_before'] + ifmap_padded = kwargs['ifmap_padded'] + + padding = kwargs['padding'] + + if kwargs['depthwise']: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + fh, fw, co = kernel.shape + ci = co + ih_pad, iw_pad, _ = ifmap_padded.shape + elif kwargs['chw_layer']: + ci, ih, iw = ifmap.shape + oh, ow, co = ofmap.shape + co, ci, fh, fw = kernel.shape + _, ih_pad, iw_pad = ifmap_padded.shape + else: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + _, fh, fw, _ = kernel.shape + ih_pad, iw_pad, _ = ifmap_padded.shape + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str = '#include \n' + layer_str += '#include "conv2d.h"\n\n' + layer_str += 'kernel_fp32 k = {\n' + layer_str += f'\t.ch_in = {ci},\n' + layer_str += f'\t.ch_out = {co},\n' + layer_str += f'\t.dim_in_x = {iw},\n' + layer_str += f'\t.dim_in_y = {ih},\n' + layer_str += f'\t.dim_kernel_x = {fw},\n' + layer_str += f'\t.dim_kernel_y = {fh},\n' + layer_str += f'\t.dim_out_x = {ow},\n' + layer_str += f'\t.dim_out_y = {oh},\n' + layer_str += f'\t.padding_y_top = {padding["padding_y_top"]},\n' + layer_str += f'\t.padding_y_bottom = {padding["padding_y_bottom"]},\n' + layer_str += f'\t.padding_x_left = {padding["padding_x_left"]},\n' + layer_str += f'\t.padding_x_right = {padding["padding_x_right"]},\n' + layer_str += f'\t.stride_x = {kwargs["stride"]["stride_x"]},\n' + layer_str += f'\t.stride_y = {kwargs["stride"]["stride_y"]},\n' + layer_str += f'\t.flag_relu = {kwargs["flags"]["flag_relu"]},\n' + layer_str += f'\t.flag_batch_norm = {kwargs["flags"]["flag_batch_norm"]},\n' + layer_str += f'\t.flag_y_accumulate_start = {kwargs["flags"]["flag_y_accumulate_start"]},\n' + layer_str += f'\t.flag_y_accumulate_end = {kwargs["flags"]["flag_y_accumulate_end"]},\n' + layer_str += '};\n\n' + layer_str += f'uint32_t dw = {kwargs["depthwise"]};\n' + layer_str += f'uint32_t chw_layer = {kwargs["chw_layer"]};\n' + + layer_str += f'static {dtype} {name}_pInBuffer_dram[{ih_pad}][{iw_pad}][{ci}] = ' + \ + array_to_cstr(ifmap_padded) + ';\n\n' + layer_str += f'static {dtype} {name}_pWeight_dram[{co}][{fh}][{fw}][{ci}] = {array_to_cstr(kernel)};\n\n' + layer_str += f'static {dtype} {name}_lambda_dram[{ci}] = {array_to_cstr(bn_l)};\n\n' + layer_str += f'static {dtype} {name}_kappa_dram[{ci}] = {array_to_cstr(bn_k)};\n\n' + layer_str += f'static {dtype} {name}_pOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap_before)};\n\n' + layer_str += f'static {dtype} {name}_pCheckOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap)};\n\n' + + return layer_str + + +def rand_data_generator(shape, prec, alt=False): + if prec == 64: + return torch.randn(shape, requires_grad=False, dtype=torch.float64), {} + elif prec == 32: + return torch.randn(shape, requires_grad=False, dtype=torch.float32), {} + elif prec == 16: + if alt: + return torch.randn(shape, requires_grad=False, dtype=torch.bfloat16), {} + else: + return torch.randn(shape, requires_grad=False, dtype=torch.float16), {} + elif prec == 8: + sign = torch.randint(0, 2, shape, requires_grad=False, dtype=torch.uint8) # -1 or 1 + exponent = torch.randint(0, 16, shape, requires_grad=False, dtype=torch.uint8) # < 0b01111 + mantissa = torch.randint(0, 4, shape, requires_grad=False, dtype=torch.uint8) # can be arbitrary + bits = {'sign': sign, 'exponent': exponent, 'mantissa': mantissa} + # TODO: not actually correct + return ((-1.0)**sign.double()) * (2.0**(exponent.double() - 15.0)) * (1.0 + mantissa.double() / (2**2)), bits + + +def conv2d(ifmap, weights, padding=1, stride=1): + n, ci, ih, iw = ifmap.shape + co, _, fh, fw = weights.shape + + conv2d = nn.Conv2d(ci, co, (fh, fw), padding=((fh - 1) // 2, (fw - 1) // 2)) + conv2d.weight = nn.Parameter(weights, requires_grad=False) + conv2d.bias = nn.Parameter(torch.zeros_like(conv2d.bias, dtype=weights.dtype), requires_grad=False) + ofmap = conv2d(ifmap) + + return ofmap + + +def max_pooling(ifmap, kernel): + n, ci, ih, iw = ifmap.shape + max_pool = nn.MaxPool2d(kernel_size=kernel) + ofmap = max_pool(ifmap) + + return ofmap + + +def batchnorm(ifmap): + n, ci, ih, iw = ifmap.shape + bn = torch.nn.BatchNorm2d(ci) + bn.weight.requires_grad = False + bn.bias.requires_grad = False + running_mean = torch.randn_like(bn.running_mean, requires_grad=False) + running_var = torch.rand_like(bn.running_var, requires_grad=False) + gamma = bn.weight / torch.sqrt(running_var + bn.eps) + beta = bn.bias - running_mean * bn.weight / torch.sqrt(running_var + bn.eps) + ofmap = ifmap * gamma.unsqueeze(-1).unsqueeze(-1) + beta.unsqueeze(-1).unsqueeze(-1) + + return ofmap, gamma, beta + + +def fused_conv(ifmap, weights, bn_k, bn_l, padding, stride, bn, relu, accumulate, depthwise): + + ih, iw, ci = ifmap.shape + if not depthwise: + co, fh, fw, _ = weights.shape + else: + fh, fw, co = weights.shape + ci = co + + ifmap_padded = torch.zeros(ih + padding['padding_y_top'] + padding['padding_y_bottom'], + iw + padding['padding_x_left'] + padding['padding_x_right'], + ci, + requires_grad=False, dtype=ifmap.dtype) + ifmap_padded[padding['padding_y_top']:ih + padding['padding_y_top'], + padding['padding_x_left']:iw + padding['padding_x_left']] = ifmap + + # Don't cover undefined behaviour when there are steps without a complete kernel window + if (ifmap_padded.shape[0] - (fh - 1) - 1) % stride['stride_y'] != 0: + print("Warning: rounding h output dimension") + if (ifmap_padded.shape[1] - (fw - 1) - 1) % stride['stride_x'] != 0: + print("Warning: rounding w output dimension") + + ofmap = torch.zeros((ifmap_padded.shape[0] - (fh - 1) - 1) // stride['stride_y'] + 1, + (ifmap_padded.shape[1] - (fw - 1) - 1) // stride['stride_x'] + 1, co) + if accumulate: + ofmap_before = torch.randn_like(ofmap, requires_grad=False) + else: + ofmap_before = torch.zeros_like(ofmap, requires_grad=False) + + if verbose: + print(ifmap.shape, ifmap_padded.shape, ofmap.shape) + + if (depthwise): + # depthwise Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw, c].flatten(), weights[:, :, c].flatten()) + else: + # Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw].flatten(), weights[c].flatten()) + + ofmap += ofmap_before + + # BatchNorm + if bn: + ofmap = ofmap * bn_k + bn_l + + # ReLU + if relu: + ofmap = torch.nn.functional.relu(ofmap) + + return ofmap, ofmap_before, ifmap_padded + + +def main(): + + parser = argparse.ArgumentParser(description='Generate data for kernels') + parser.add_argument( + "-c", + "--cfg", + type=pathlib.Path, + required=True, + help='Select param config file kernel' + ) + parser.add_argument( + "-v", + "--verbose", + action='store_true', + help='Set verbose' + ) + + args = parser.parse_args() + + global verbose + verbose = args.verbose + + with args.cfg.open() as f: + param = hjson.loads(f.read()) + + if param['prec'] == 64: + dtype = torch.float64 + elif param['prec'] == 16: + dtype = torch.float16 + elif param['prec'] == 8: + dtype = None + else: + dtype = torch.float32 + + if param['kernel'] == 'Conv2d': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + weights = torch.randn(param['channels']['out'], + param['channels']['in'], + param['filter']['height'], + param['filter']['width'], requires_grad=False, dtype=dtype) + + ofmap = conv2d(ifmap, weights, + padding=param['filter']['padding'], + stride=param['filter']['stride']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + weights = weights.permute(0, 2, 3, 1) + kwargs = {'ifmap': ifmap, 'weights': weights, 'ofmap': ofmap} + emit_header_file('Conv2d', **kwargs) + + elif param['kernel'] == 'GEMM': + mat_A, bits_A = rand_data_generator((param['M'], param['K']), param['prec']) + mat_B, bits_B = rand_data_generator((param['K'], param['N']), param['prec']) + mat_C, bits_C = rand_data_generator((param['M'], param['N']), param['prec']) + + print("Mat_A Original:") + for row in mat_A: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + print("Mat_B Original:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + result = param['alpha'] * mat_C + torch.matmul(mat_A, mat_B) + + print("Result:") + for row in result: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + if param['transpose_A']: + mat_A = mat_A.T + if param['transpose_B']: + mat_B = mat_B.T + + print("Mat_B Transposed:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + kwargs = { + 'A': mat_A, + 'B': mat_B, + 'C': mat_C, + 'result': result, + 'M': param['M'], + 'N': param['N'], + 'K': param['K'], + 'ta': param['transpose_A'], + 'tb': param['transpose_B'], + 'alpha': param['alpha'], + 'prec': param['prec'], + 'expand': param['expand'], + 'bits_A': bits_A, + 'bits_B': bits_B, + 'bits_C': bits_C + } + + emit_header_file('GEMM', **kwargs) + emit_header_file('Print', mat=result) + + elif param['kernel'] == 'BatchNorm': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap, gamma, beta = batchnorm(ifmap) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'beta': beta, 'gamma': gamma, 'ofmap': ofmap} + emit_header_file('BatchNorm', **kwargs) + + elif param['kernel'] == 'MaxPool': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap = max_pooling(ifmap, param['kernel_size']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'ofmap': ofmap, 'kernel_size': param['kernel_size']} + emit_header_file('MaxPool', **kwargs) + + elif param['kernel'] == 'FusedConv': + ifmap = torch.randn(param['dim_in_y'], param['dim_in_x'], param['ch_in'], requires_grad=False, dtype=dtype) + if not param['depthwise']: + kernel = torch.randn(param['ch_out'], param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + else: + kernel = torch.randn(param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + + bn_k = torch.randn(param['ch_out'], requires_grad=False) + bn_l = torch.randn(param['ch_out'], requires_grad=False) + + ofmap, ofmap_before, ifmap_padded = fused_conv(ifmap, + kernel, + bn_k, + bn_l, + param['padding'], + param['stride'], + param['flags']['flag_batch_norm'], + param['flags']['flag_relu'], + not param['flags']['flag_y_accumulate_start'], + param['depthwise']) + + if param['chw_layer']: + ifmap = ifmap.permute(2, 0, 1) + ifmap_padded = ifmap_padded.permute(2, 0, 1) + kernel = kernel.permute(0, 3, 1, 2) + + kwargs = { + 'ifmap': ifmap, + 'ifmap_padded': ifmap_padded, + 'ofmap': ofmap, + 'ofmap_before': ofmap_before, + 'kernel': kernel, + 'bn_k': bn_k, + 'bn_l': bn_l, + 'padding': param['padding'], + 'stride': param['stride'], + 'prec': param['prec'], + 'flags': param['flags'], + 'depthwise': param['depthwise'], + 'chw_layer': param['chw_layer'] + } + emit_header_file('FusedConv', **kwargs) + + else: + print("No valid kernel selected") + + +if __name__ == '__main__': + main() diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/script/matmul.json b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/script/matmul.json new file mode 100644 index 00000000..3eb11985 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b2/script/matmul.json @@ -0,0 +1,17 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Solderpad Hardware License, Version 0.51, see LICENSE for details. +// SPDX-License-Identifier: SHL-0.51 + +// Parameters for a GEMM + +{ + kernel: "GEMM" + M: 64, + N: 64, + K: 64, + alpha: 0, + transpose_A: false, + transpose_B: true, + prec: 64, + expand: 0 +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/data_16_16_16.h b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/data_16_16_16.h new file mode 100644 index 00000000..1052e7cf --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/data_16_16_16.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 16, + .N = 16, + .K = 16, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[16] __attribute__((section(".l1"))); + +static double gemm_A_dram [16*16] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033}; + + +static double gemm_B_dram [16*16] = {0.4780347016744464, -0.20314173587596263, 1.797754234791071, 0.23274595474814475, -0.9954168307888536, 1.8547476587140206, 0.09402273928088646, -0.9430074874135619, 0.8239191817788585, 0.11501735450468505, 0.8545701717376761, -0.007188030468140175, -0.018728729244763993, -0.9533932980859413, -0.12165398416725498, -0.42661916146469137, 0.9340946495293597, 0.19522143581405244, 0.23182973839731683, -1.2546554715250677, -0.7025528681323762, -0.03019556689050345, -1.4671607394596426, -0.1734020738525506, 1.0202696745617659, 1.0157942265133257, -0.4324600332331524, -0.296150919949663, 0.056387506785403815, 1.5109902204218253, -0.13585017018841927, 0.6485611566020152, -1.149354106366614, 0.24917168366560993, -0.4778501888006765, 0.8387576576827396, 0.41098923499226014, -0.2256181742270194, -1.219750082862799, 0.9803566659279874, 1.3346481596559676, 1.6129488803273395, -0.024493143878920487, -0.7591698936771379, -0.48921141096064424, -0.062040923189698165, 0.8520383693040029, -1.128094765763347, -0.07195237845460918, -0.46610241187034174, 0.29946965798993297, -0.6354031061312012, 0.7739177723108309, 0.19368409881631005, -1.3274229125145334, 0.0627858851186502, 0.36384746366328413, -0.19175241722939693, 1.980986216379721, 1.1809578134345797, -0.7306000207552646, -1.7641855643145632, 0.7245001435289563, -1.5840451502971633, 0.09414818556627164, -0.9029006394421663, 0.8488782882116401, -1.2173643223619721, -1.2762292342683303, 0.5058710736668895, 0.6099936154303692, 1.0423699879551078, 0.7611949933670529, 0.6164470190315824, -0.2658724362020457, -0.14668266051521825, -0.6274502774485388, 1.4985053270616493, 1.3299880805922875, 0.6965634921004461, -0.23035924547300898, -0.4005606761098726, 0.3315215039285197, 1.231436269706581, -0.1434065696905791, 0.1038460098414191, -0.11014269025953972, 1.5545069571528942, -0.8829189545685341, -0.20570447804044192, 0.011103897250099562, 0.5946658094550371, -0.6020537188199624, -0.4079372826543253, -0.1805351705743782, -0.33600719481813285, -1.8998197674219859, -1.3514084083199862, 0.12891223912089034, -0.12220432019599553, 0.199025684270468, -1.4076687315200758, -1.3293671463788634, 1.5849730687530486, 0.26915516555170543, 0.42155963063098567, 1.0111021595209633, -0.4752871063125886, 1.313122245567395, 1.429769590030981, -0.22203877342660364, -0.3359458033736853, 0.9478581977287968, -0.9017993731080081, -1.2238040021173409, -1.5066610314377438, -1.5400573604406471, 1.029960808199997, 0.7101787049919178, 0.7199388940089966, -0.09599439254200862, -0.5707540620409073, -1.1665892611773085, 1.1838674589073483, -0.14388808008330586, -0.2897447883816845, -0.5230311319816758, -1.3453794288815801, -0.5774972459244567, -1.6874596492942056, -0.6243273110799229, -0.131168025357405, 1.548288167937, 2.177326020841736, -0.01670896018294231, 2.6380786365181796, -0.6554716217755595, 0.6536593231539053, -0.7991803895400539, -0.48408003859590065, 1.3163800108985646, 0.7736151342348289, 0.045765518028111664, 0.782406872557914, 0.6273242190434466, 0.8505308967944145, 0.002119877636176426, -0.03123667988254042, 0.9288465316923816, 0.4365480813048655, 0.43343311885236446, -0.27680484002022715, 0.6816100143946399, -0.29432626362033404, 0.18661178764402744, -0.34832623473704294, -0.12593952342837475, 0.6104204582278638, 2.1112388578012884, 0.16436581820924961, 0.08511336387296158, 0.6772607869261693, -1.0103642468106544, 0.5124772757514626, 0.08390244767011035, -0.42153332375097163, -0.014621424093204098, 0.1962794539558957, -0.29262366803238393, -0.47610390457226875, 0.8742346952912949, -0.031424129829246916, 1.25609380794485, -0.5422032040096507, 1.9700777629678679, -0.6098672123657596, -0.1733949212480647, 0.07380298739515019, -1.1195878651441893, 0.8173767150222387, 0.3572785103117973, -0.9320608828189856, 0.6955788134794414, 0.8731470189472956, 0.9362614654567366, -1.3121219556703199, 0.22713168745929768, 0.6027021077218985, 1.1658575421017066, -1.149255707834347, 0.1456185008563352, -0.5846446870404606, 1.2335858050609876, 1.9920454844101763, -1.2632446956429335, -0.2772483620390129, 0.17859923880951847, 1.8110431275164358, 0.5722528182048355, 0.010205327986369436, 0.1418089057088939, -0.9264218514606051, -0.5133236613036435, -0.1269124796513161, -1.7009294128404835, 1.7075504892947724, 0.6952680695280342, 1.7665907233368394, 1.3917635799868133, -0.33044907219753716, 1.452604901391212, -0.8170580592759659, -0.6768899292657692, -1.4858191479600487, -1.481720319316519, -0.8838416943783096, -0.4836971414215709, 0.14788650580579352, -0.5447919995948828, -0.132580840204314, -0.3443663683433915, 1.4528943457305363, 1.289500316820128, 2.253287365111219, -0.9181737147627111, -0.39032216747009113, 0.6929251584566181, 0.11041826907812055, 0.8504258697467754, 0.7389689210845545, -0.15323533618009222, 0.8068577169597195, -1.242898069994524, 0.0069296369726892315, -1.4490806809539707, 0.8622146933847438, -0.9552666410033216, 1.5535736491676595, -0.3238211924056418, 2.1818716851528808, 0.8067649829193638, 1.498700405481595, 0.3435160724199721, 0.024119499618272, 0.9425485271043043, 0.6644577289945207, 1.090316288383937, 0.29925023340409146, 0.2730005353024221, 0.3306231644074124, -0.5830552203885363, -0.6652501624993471, -2.123695546730074, 0.8145713078829363, -0.8891278822176073, -0.5497385523974774}; + + +static double gemm_C_dram [16*16] = {0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222}; + + +static double gemm_checksum[16] = {3.53318139833275, 18.910557186514914, 17.061557051251178, -17.86682606914221, -5.920568815540228, -16.80427557391132, 12.345786410219814, 24.565576004988085, 3.617111620044957, -18.771063102425778, 43.637805771956224, -17.699257074021574, -7.3420911665199835, 8.052332093906525, -16.822597494037367, 2.274275182397295}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/data_32_32_32.h b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/data_32_32_32.h new file mode 100644 index 00000000..667ffd2d --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/data_32_32_32.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 32, + .N = 32, + .K = 32, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[32] __attribute__((section(".l1"))); + +static double gemm_A_dram [32*32] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342}; + + +static double gemm_B_dram [32*32] = {1.8448885093030065, 0.622613137075688, -2.0773600718526932, -0.05879218788301025, -0.14883240827467462, -1.6070787249452574, -1.2752325216668503, -0.9710154441004514, 2.8536471208979433, 1.0259687873673153, -0.07729526178752644, 2.90124785320579, -1.6099870201619317, -0.8847331619490723, 0.5939979568631141, 1.2200036287220326, 2.8510918408680124, -1.25582651238933, -1.5043005890504582, 0.809667872762421, 0.4455096569146938, 1.4533777876325222, 0.08093711755806289, 0.5433594960509881, 0.21407749737048995, 0.5053866496884525, -0.7063829736735863, -1.7255159569914225, -1.3941268553154642, -0.3611221208798455, -0.05334598793633222, -0.35435416471609005, 0.572007132100381, -0.5264955185026189, 0.5102128857829208, 0.6116700031464317, 2.0486968982261202, -0.7165117692039605, -0.44546162876683887, 0.4763931829831273, 1.3032022234889244, -0.02932551729568818, -0.4820520883676177, 0.9193799243970369, 0.6146813355739139, -0.22393893146647295, 0.571492357564412, -0.948302395460301, -0.7318379837818061, 0.03382654045677089, 0.7372524407400997, -0.4103668947560523, -1.5530036453685645, -1.508283926364581, -2.256777082059624, 0.5675579810614343, -0.41165660712793767, 0.3283028032403514, 0.08317733846151737, 0.6397252376986503, 0.5706575386796322, -1.4195164842808716, 0.10738590560666669, 0.6485877172023825, -0.9020532459752512, 1.7456452297639542, -1.3425473236398795, -1.3093298447872528, -0.9909136952855094, -0.7553512437574256, -0.15696203458936964, -0.8587268321219447, 0.4760756036980966, -0.7891190307945258, -0.3642766707809299, 1.4109003071198862, 1.0232681185457035, 0.2604924986511237, 1.2838646589587073, 0.6269276746157323, -0.6194976835634578, -0.45889090147992845, -0.5334658384258053, 1.749809215983805, 0.24334104727505046, -0.9454297378995183, 0.324177164165908, 1.9203285366540146, -0.8911684286042895, -2.225396433305001, -0.9039919874880522, 0.23342621054073684, 0.7831976119427991, 1.1907305012760756, 0.7476571054869932, -0.2757466733288484, 1.423932009681719, -0.0032580522874735246, 1.0664992078500592, -1.9790524548585495, -0.3600241005246587, 1.9280259690970352, -1.1862950949600968, 0.420689070376205, 0.04693766693045954, 0.29564308636903597, 0.2721281447061126, 0.9342714574384375, -0.6120020584064751, -1.065720378325982, 0.1968309175885564, -1.8413847347422614, 0.8118142867300344, -0.2896301303848118, 0.2567239585606655, 1.001647179219911, 1.9679440499519993, -1.010459444419853, 1.062105790670867, -0.5030970822643847, -0.49236046031915226, -1.096249407991655, -2.359353503098415, 0.21399479954715414, 0.28018300766602294, 0.1522501461827938, -1.5691946737355327, -0.3563016808385527, 1.1116421563744774, -0.08412480377121889, -1.3978347586933288, 2.327922240143418, 0.1602748303156346, -0.26733976223106926, 0.37408049529043713, 0.6054083058374654, -0.5984449522911452, -0.34927374642138076, -1.0173409588721802, 0.7408981122108215, -1.0855633146564565, -2.4784405095403583, 0.0125526247658802, 2.975492133500898, 0.43758672808479837, 0.4922810729687261, -0.6299751233419266, -1.7659243403508436, -0.14949638764508505, 0.0754147254586834, 0.2886235312894662, 0.8421602450844566, 0.08810619424950021, -0.9149883628966105, 0.11425878193276912, 1.1788921695577175, 0.13693472548612742, 0.922469684257407, 0.8999837788505479, -0.17817414950901492, -0.609918694875925, -0.09847618283385187, -0.5082793586733352, 0.5346029134452727, 0.07168780603661637, -0.0673955495394241, -0.38524482721238545, -0.7954680985571436, 0.7900271874549623, 0.8136749201194545, -0.22291945275506458, -1.501451886644788, 0.9035218354603602, -1.397338674255014, -0.588379978175527, 0.5732253342246594, -0.7150266134830248, -0.11561150744781683, 0.024035161278926437, 0.15383957509758237, -0.1787890634869671, -1.2810537542822706, -1.2983305542602077, -2.316838061301056, -1.4051338603716423, 0.21230053589695053, 0.64706666019578, -0.4946728962147127, 1.0154445987056024, 0.016501336648811274, 0.038792413114335636, -0.0019081140052624073, 1.0390897743423966, 0.5573182638994464, 1.0293339145628106, -0.2220392426765117, 0.30202523579276225, -0.536406291194771, 0.7842727318028115, -0.20058537792435566, -1.969917184758775, 0.620245645223459, 1.415842532715168, -0.8528561599738412, 1.199279110133032, 0.12733886071252698, -1.459242663662794, -1.876866690355531, -1.9406394619639358, -2.0656398984212156, 1.1244580271586777, -1.2779831760745572, -0.8694565617159877, -0.7736354580243704, -1.5005961252940438, -0.4201799135308444, -2.3224238004285707, -0.6023002440801871, 0.4359959376210403, -1.8310549540520982, -1.1860807036684393, 0.7429642513221194, 0.9914820089613138, -0.39273602229275606, -0.1305603800084962, -1.1975598741016937, 1.1953652639556394, 1.0350931612437495, -0.582835004754739, -0.7093789385459298, 1.1538879916827052, -0.19994075887630136, 0.3503211304018375, -0.43951272221042564, 0.3487504850213432, -1.4502786649323292, 0.21247320768848982, -0.962990797187108, -0.16058887298258492, -1.4492981424636866, 0.8679359705510734, -0.15730996466261546, 0.40836377201711715, 0.2669263499455465, -0.02701940155527667, -0.811961379205231, -1.4260396412546816, 1.99145358910135, -0.3410883214075715, 1.4512382841053386, -0.09281069482301793, -0.3690830035843751, -0.19007920263882952, 0.10750421501190041, 0.9465564741859593, 0.06348346009811161, 0.7049709576256773, -0.25042914816475237, -0.7592324149843712, 0.579583179532083, 1.0356927036283528, 1.744020696757244, -0.9454918159942679, -1.895096099561938, -0.0008137206583593385, 0.46265400794768385, 0.3522443413976922, -0.060333190180409904, -0.8276719054682797, -0.4158341820319732, -0.30513433025622483, -0.7472606420064576, 1.4354983174276066, 0.7768976641774541, -1.8739717517634698, -1.4256436904962992, -2.327140574554701, 1.3638217257964536, 0.12572172650108407, -1.1698739038813457, -0.12686282703773566, -1.5038113250304717, -0.5382334133878951, -0.42224783195423987, 0.1523832525182091, 0.4808356602618045, -0.9548035752110309, -0.8742437683710312, -0.30985592801910117, -0.24189491229960913, -0.9927853948011712, -0.09395716249601935, -1.0360800724687276, -0.8126325347024919, -1.405125889371723, -2.091666612524903, -0.6256281405885463, -1.869391305207575, 0.9077850533771569, -0.06215199874022316, 0.34353353507020123, 0.8295084980828852, 1.3958505210549053, 1.4876059940278459, 2.182868585469132, -0.7044791153933941, -0.26853628794603523, 0.040903466313536106, -0.3493894186252125, 1.077496971491708, -1.371518218990482, -0.48526560569590693, 0.23609553256542695, 0.11558860384831522, -0.633983343063867, 0.32423026673778105, -1.2093360312349437, 0.1323677945856938, 0.37108183095020375, -1.8689872110353185, -0.6566307196626123, 0.1717462405241003, -0.8401102070638347, -0.5606885258433681, 1.993616236752697, -1.5969922983164335, 1.0636457383418108, 0.0004974458415376117, -0.3510577387659576, 0.48193063531644537, -1.0749257488285808, 0.6962114020423124, 0.7795065425753578, 1.129362539634652, 1.112993202632025, -0.18934308720894036, -1.1741764376487758, 0.8524501556338853, 0.37761170331094157, -0.9342945534262868, -0.02711649643869937, 0.5810375830537511, 0.5998645930096181, -0.664516213841126, 0.23545196849666264, -0.06338166413389325, 0.49835413266819356, -0.4402301947763417, -2.100547843467698, -0.7034274377386549, -1.6932708709240643, -1.5147133895052636, -0.005304890708390932, 0.5303343737606813, 0.3955192048365272, -0.6916360198922066, -1.2365797403960304, -1.2686890383326754, -0.7818062318843579, -0.4080026099220151, -0.13894191854589522, -0.095540604007519, -2.072058608998672, 0.1737374420722428, -0.31690501369321267, 1.4448964367746397, -0.6980224325960035, 0.13020040181367357, -0.9331282790464878, -0.3340090119288742, -0.0050819767759484056, 0.7618231087000356, -0.2125855163161856, 0.3551271969105679, 1.2473531605780193, -2.1784216925774254, 1.371312887239788, 0.22201020504142566, -0.6176307398455463, 0.7465865033369634, -0.1530333323078057, 0.09645911224015045, 0.5742732453192894, -1.0184612409555949, 0.47214213858952303, 0.8246091313323292, 0.34215369871376844, -0.25495705935359947, 1.8548042098231963, -0.9291972010711246, 0.8829476857079316, -0.44867368855172923, 1.199426224041857, -0.16987767760770991, -1.189733419675099, 1.9987164641082087, 0.08404007020790137, -0.27202686813738103, -1.1242172376210566, 0.5331924552669381, -0.2820770772397286, 0.08640562469139157, 0.009684786386250501, -0.30058739646889815, -0.8626785926902893, -0.043876281219692365, -0.9358060344486432, -0.05592421534349575, 0.2318653380046876, 1.4399368526678278, -0.58828999383318, 0.43199223950922194, 1.1971503331114541, 2.532325541632594, 1.1869006875492747, 0.18139626346512772, 1.247922968974058, 1.010839700197812, -2.8791873832700547, -0.23051091319332653, 0.20499605949096963, 0.9031672530350638, 0.8745221489151239, 0.5700168037125656, 0.12132847331734303, -0.19495692375454912, -0.5102992245699747, 1.7922666332582982, -2.0217996637419504, -1.1376577043818543, -0.04898442309094625, 0.9913637676227545, -1.9483310573156807, -0.059343641632369076, 0.2636875321138984, -0.5446714593776727, 0.5125620452253108, -1.0850332393056394, 0.49295286102524044, -0.3735237580415768, 0.08464059182127714, -1.536144263111769, -1.7334295099492802, -1.939062107304355, -0.38189865297027337, -1.5866221126564115, 0.2555908214103616, -0.7129650139254672, -1.434297700901899, -0.8902436270883701, -0.0421115170793464, 0.5226206406896088, 1.2010757276760113, 2.269233244076525, 0.6929310708225009, -0.19142620469203458, -1.4608604499664002, -0.08834646865917613, -0.5266987160364432, 0.39258330183185886, 1.4723540101508836, 1.1669873661563108, 1.7267743114344978, -2.6437681894231435, 0.31916263280850626, 0.1619562886451128, -0.08553945533113934, -0.4802089660362259, 0.835126803441082, 1.109609770945844, -0.3494884497630849, -0.22461780649945687, 0.19008151199377613, -2.717778670757182, -0.8643497543156821, -0.10453191019598392, 0.7916834209392376, -1.971084122083064, -1.3999854653788708, -1.3195899155857833, -0.5773871236273995, 0.5757151238996234, 0.2803818171599705, -0.6035154511863011, 2.057751677950784, 0.40988533123157295, -0.39888705398196755, 0.7614369056740486, -0.22948805550230816, 1.2824833220745997, 0.38803217663099665, -0.1955663537656974, -0.5690532461968705, -0.5526532153140147, 0.3596144012700469, -0.6461446779487539, 0.6390360973776629, 0.15046570393731748, 0.33475288490766125, -1.1432227238603179, 0.4370304631746852, -1.0337911892064604, -0.9308402692062906, -0.6015415198184665, 1.7562161679995132, 0.1168039138752043, 0.689824201173873, 0.8153426406136252, -0.1728944869857963, -0.13301270859207348, -0.5270366881316677, -0.21170557963600709, 1.9951334816061994, -0.6241388306405901, -0.9401015854505796, 0.5592128760780101, 0.2883899362101988, -1.7212576593177709, 0.9994754870230482, 1.185949052557463, 0.051902944512615914, -0.13585649309388986, 1.2098862819236005, 1.185062371327038, 0.7600008532793323, 0.17431258922451653, -0.359544416669036, -0.8660236542618331, 0.5428826848071413, 2.7590525887014667, 3.4237712468503103, 0.5174957898345334, -1.4380277943151216, -1.8807813444109054, 0.3630283557686611, -0.525149213451578, 1.181971977987871, -0.5866181500734327, 1.524711206099055, -0.7800663274052761, 1.160481352505748, 0.39343143403797187, 1.8409181821652891, 0.49610977046001814, -0.9419344596787323, 1.0306895727537915, -0.08972003336849564, -0.3223643795390148, 1.6134203350119927, 0.7166427020983424, -1.666570871939696, 0.6170757026559303, -0.019119222645881905, 0.6657305691375492, -1.0678208861159952, -0.24969600604011072, -0.09696213550941978, -0.08674760587893786, 0.20255944297423273, 0.47452405238110584, 1.5065733412421733, 0.22065232253703387, 0.744628978129671, -0.26915089392842423, -0.15463871080474192, -1.2265714811977597, 1.7611911540817928, 0.20817264425532928, -0.8172519034071913, -1.5377442224077151, -1.548684848469057, -0.4477465519532468, -1.0427224611678692, 1.3390674367668436, -1.7547244042030132, -1.107773982297535, -1.3864755081036366, 0.5437796109495969, -0.640338334227558, 0.5138781656523993, -0.9640624060585024, 0.3627363765292881, 0.7961227485818212, 1.650950629705662, -0.9757273564713941, 0.6391954485208522, -1.6484340857205138, 0.5062590514320574, 0.49872412917775666, -0.02662111271639052, 0.3676083732835713, -0.4790606483008819, -0.47412499801799024, -1.3774088537570648, -0.9096458649167182, 0.3387263580347474, 1.427347151863727, 0.3936172157806796, -0.7229213248269448, 1.0421502948740846, -0.31575932783054717, -2.0944415177169953, 1.2284263304913572, 0.01545038682624204, -1.040602541009036, -0.747255398772972, 0.07405473692919617, 0.6462111934112551, -0.15540161000210675, -0.37254092473885336, 2.0182530686564895, -0.7592214987689807, -1.1213275218434526, -1.5589258141736047, 1.22745042848715, 1.7703882319843902, 1.8473014772988974, 0.3751449189250956, -0.6773093361468119, 0.7374924629427219, -0.6501714914135994, -0.5787298408624987, 0.8149334833372205, 1.5321216571398668, 0.2569777134684139, -0.29499229105904573, -0.6827694846192245, 1.2480509452812811, -0.03594236427723813, 1.0778363941578806, -0.4323877136781272, -0.24223189745187212, 0.2503737947188051, 0.7870016058915985, 0.19868751298961676, 0.39608506375087277, 1.8273660232377136, -0.16290875300595686, -0.14925008749413637, 1.688912150364615, 0.28089640344542804, 0.17302563058445183, -0.7235603815620858, 2.417337785331285, 0.6531743202785056, 1.3206137582172544, -0.6004867918118467, -0.49884117664872785, 0.5263294510598043, -0.19786418069226533, 0.19847908080770726, -1.0887076741188921, -1.4186463922997374, -0.46418731609632075, 0.9572709382349587, -0.1636651452718229, -0.18464959701431985, -2.4537835279476146, 1.6425500385797525, 1.9521841872543286, -0.9987807222089615, -0.8644861643567047, 0.09012216684853104, -1.5453453515930158, 0.028618079946139307, 0.8949404757727989, 0.11836116797672853, 1.1493902335657455, 1.4195569065800453, 0.4979804345513483, -1.8439449535735588, -1.3591299269239323, 0.6902199813822665, 0.16431412357817202, 0.6081345501547663, 0.17028885180838357, 0.2277981765470329, 0.22241582722694822, -0.5361669868684229, -0.35212526236220854, 0.07053654437136757, -1.1107085792532714, 0.43435982710100896, 0.9197089124134338, 0.4572717163404996, -0.7338887598113502, -1.4303046720322652, -1.0332700298347521, 0.707300443390559, -0.8341158090629236, -0.3900596403135759, 0.9788396157168914, 0.15285084511988004, -0.9521061052105131, 1.2693688025965613, -0.565952007041841, -1.723439924093865, -1.2488701028525535, -0.06310268278090121, -2.130104535188091, 0.8386877142814951, 0.08795913929250766, 0.3444816081051852, -0.7475464904708393, 0.055137779443554184, -0.297796251553928, 1.7752306448722606, -0.18586838199027028, -0.8359861748374583, -0.5254557201726808, 0.4874774972013086, 0.42973964778170143, 0.9547242579775002, 0.16954868116772995, -0.06608174057217904, 1.4198792364404926, -0.6798540159722049, 0.0037124668666011543, -1.9840617027488057, 0.9892360243254097, 0.16960249404796737, -0.43274207019506117, -0.9509348833512404, 1.001353646981955, -0.4453218737326093, -0.3765845085538441, -0.05609728003750563, -0.453301777620275, -0.7885161782185284, 1.8425900504983932, 0.7479073753397237, 1.1476608122361165, -1.0778628423584962, -1.1826687439735564, -0.2983334069128005, -0.9405677474521547, -0.1316442026885298, 1.0415794322065468, 0.031457706909880166, 0.40185795512569217, 0.5680057504067159, 0.4487811587655208, -1.890981268173993, -0.20813077355955645, -1.1278918446449648, 0.0976102127373202, -0.4396025725464862, 1.13966263395932, 0.8800683478695012, -0.4390315224865612, 0.8352543400425974, -0.6416390065504894, -0.4185489493255141, -0.14358452337381933, 0.3229857369820825, 0.40906237950521346, -0.8774506171339351, 0.17855829086113095, 0.2942911094966865, -0.26956499012979956, -0.594263411951702, -0.8820586551654293, 0.19168429076964602, 0.9320022617397814, 0.3469301281229362, 0.8708434312878163, 1.38335867526748, -1.693588315970276, -0.47920924486264665, 0.27195785052081917, 0.899919260122491, -0.5670525260070235, 0.28253652479051733, 1.4717430631656925, -0.3938745167085202, 1.3420338787636203, 0.07734968673664687, -0.22307281025633455, -0.06842865579333862, 0.8820726768303652, 1.1617475981837795, -0.5445053993271162, -1.6685708178136907, -0.604900108391799, -1.4509136246246903, -0.8677025372132973, 0.44175525248542286, 1.2380051766092655, -1.1301294572944445, 3.5953876986672255, -0.7311965810915613, 0.6612001818907256, 0.5644435285732619, 0.31200772222466067, -2.501823109461287, 0.03568906908977818, 0.6711365751637789, 0.10036766629128512, -1.9630063235244388, 0.20250426856488513, -0.37134570058665717, 0.8941462516437774, -0.5364177308537464, 0.14141128561714333, 1.1165497781562674, 0.6002964569533693, 0.3139908715338594, 0.7397153430022654, -0.5799201931033439, 0.5329264170127224, 0.0757461775588834, 1.1454947730219187, -1.2832223575262358, -1.1731970859703744, 2.264358935950376, 1.535151051934949, 1.2609714707832425, 1.0347284219371276, 0.7931445181078505, -1.1622188132692055, 0.27932962145356316, -0.8488543068716493, -0.21592794240105817, 0.6566383906736746, 0.8811148239408805, -1.4538990075976945, -0.673945501033193, 1.4420580869170465, 1.1526892923346204, -0.5580601750838238, -0.5193463961965822, 0.9856658198526146, 1.1612473442212157, 1.8901581231152924, 0.9954498087197619, 0.536910685665978, -0.5714364972858512, -0.7795697135851043, -1.1261703254618494, 0.8838113044537101, 0.31678992899871267, -0.7498434517605724, 0.945043974186398, 0.3830272308939737, 0.01811044220476568, 1.557358039479812, -1.1013820170238586, -0.18334305957155458, -0.048585931918069494, 0.48707383897255696, -0.06988463350772384, 0.03880070372652659, 0.666378400360196, 0.3153960860722241, -0.4553253041620339, -0.7620891486112908, 0.7833035854562042, -0.4972028753925732, 1.2235988334078434, -0.5372177387698984, -0.18194736753591428, 1.0076432223870029, -0.11562338831110575, -0.44166427943855957, 1.862246649641681, 0.16318485053532772, 0.21059455079709405, -0.04468791360092496, -0.09854463425203973, 0.610220453599741, 1.0966132130656288, -1.3377145615324746, -0.7432885872434457, -2.2463793716496183, -0.8271942633183708, 1.0330281295592512, 0.5665224930728516, 0.8235296531498106, 0.6513073416660541, -0.35686131551458816, -0.7466175012069378, -0.06866257813543919, 0.6819214512912009, -1.3157311036080868, 1.0765917423686246, -0.4124980314658376, -0.13454483357874214, 0.4039229699126195, 1.0392171119322082, 0.30783322485667264, -1.1636116702452202, -1.1864962493216553, -0.19855569336096057, 0.8554191239588586, 0.352400820758953, 0.509830562978939, 1.1127961330998304, -0.42772830220525987, 0.8203366802620794, -0.13107111869784893, 2.395067138296113, 0.9796702201792316, -0.31621524862176864, -1.855416176565475, 1.4335843287274053, -2.030956619344538, -1.0171091372766654, 0.1958899672744909, -1.7263899334779662, 1.3403087264740343, 0.5222811637226092, -0.3292665860742744, -0.805144923911586, 0.2937618607534383, -0.06839741587635721, 0.21159132832002855, 0.2439549047998887, -0.25957042793288443, 0.3803586083160361, -0.03287499950025958, 1.8371154985886862, 0.534974938780373, -0.22624467871026605, -0.5500096460519907, 1.688961038095004, 0.5698707282163747, 1.6482773735238936, -0.5991965310798085, -0.449879365783737, 2.22854455207779, 0.15551004552008937, 0.8500574802035589, 0.3316175009075528, -1.7646934144734967, 0.002668556331391873, -0.8136295403887579, -0.9465575672564711, 0.3469149176826813, 1.0045993947511778, 0.2610941691615629, 1.0788518344074862, 1.429798559996883, 1.6332065112971001, 1.7738534285950363, -1.6081696632587419, -1.161359070554741, 0.4734557044072717, 0.8251757971684041, -1.00859364816552, -0.47466672457489073, 1.2706120469339364, -1.728025679680301, -1.2420591801850245, -2.0058475112711514, 0.5071009399593757, -0.763791941134191, -0.8745505869548725, -0.20863591717796462, 0.6711383514595195, 1.4973252224613436, -0.4581821737978766, 2.85934273014681, -0.5905994619497847, -1.2986776963277358, -0.6884736402196919, -0.8420374077504474, -1.9226574720130702, -0.7714846254184806, 0.4879570553679617, 0.9569335370728702, 0.1215505686746317, -1.6928895703415128, 0.5214662704113713, 0.8488733195590197, -0.18689854597886257, -0.33142178700758057, 0.2108448776087118, 0.21001598604651528, -0.9215746025534817, -0.5943198935837782, -1.757528113553421, 1.251745108485312, -0.868299098407261, -0.1351648490652594, -0.23753657646460405, -0.4541796977906028, 0.6279007880533118, -1.697389937955057, 0.32284669288734297, 1.3123618498586958, 0.2238366057536359, -0.5546344165085834, 2.681801981114757, 0.620608819397525, 1.4571504499595769, 1.3299424270339977, -2.0231033737037047, 0.5166078996711738, -1.6380306920827867, -1.2122365561438313, -0.6623786574250906, 2.0063313680095405, 1.4850546815331578, 0.08949085370524765, 2.207851490608375, 0.6549815456848764, -0.8293836626550278, -0.6235361522388553, -0.626995367880836, 0.4159405289601604, -0.6195377638236638, -2.059249774668197, -0.7922512836603205, 1.9089401526170708, 1.59925697493435, 2.979844425070889, 0.19313774990116925, -0.5567288589208035, 0.5692262629524086, 0.2998477603655102, -0.8259830110426495, 0.820266660992923, -0.7182362270286512, -2.2200296733850635}; + + +static double gemm_C_dram [32*32] = {0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967}; + + +static double gemm_checksum[32] = {19.171406532352187, 64.83908386369714, -15.833072522846592, -9.097406689220577, 38.77022492904121, 36.661072250530495, -19.204889499817334, -26.71405328485298, 2.199782273326125, 22.879340449675865, -25.495771295498592, -22.74413590136339, 41.027971509741164, 2.3121890057321304, -19.49682405405703, 25.832519909539464, 42.9907473021782, 30.112697137204815, 26.7239787914316, 85.07758200685522, 6.60571186375147, -12.02777529819674, -23.409006725121806, 27.330350323575306, -24.78504460632868, 53.946894048375924, 92.26090941929412, 27.603604435548316, -41.68101813310628, -19.73859198296261, 37.159087216031466, 20.44420834195346}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/data_64_64_64.h b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/data_64_64_64.h new file mode 100644 index 00000000..1c964152 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/data_64_64_64.h @@ -0,0 +1,32 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = { + .M = 64, + .N = 64, + .K = 64, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0 +}; + + +double r[64] __attribute__((section(".l1"))); + +static double gemm_A_dram [64*64] = {0.2995562877502637, 0.24237779080894106, 0.28320739441795323, -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, -1.7903080050220619, -1.748402801489203, 0.17347640142361004, 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, -1.4920727283504345, 0.4212009947066779, 1.504572275678796, 1.2715909667771088, 0.618669993885617, -0.03720300727052493, 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, 0.875893884648022, 0.39238484373268534, 1.108461181451433, 0.8651734647119074, 0.855215961472287, 0.6551143052731048, 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, 0.6058412077786697, 1.3109621860249783, -0.226715890674857, -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, 0.16048920142982762, -0.9214988800859956, -1.108152357089335, -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, 0.87049067708538, 0.42876533202174155, -1.0822943886075476, 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, 0.9723184024569489, 2.5161385989502594, 1.417476842717687, 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, -0.6505400281702892, -0.5982505878283358, 1.104934291883692, 0.07340003052572891, -0.26503771215326066, 1.53173972311803, -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, -0.09100868239112153, -1.260561108016399, 0.8441868298852333, -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, 1.092646154841347, -2.0855244747434423, -0.43826430885192064, 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, -1.922962357248398, 1.981160746670956, 0.6291940423652077, -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, -0.21825697811845282, -1.059395117948861, -0.9331956574757799, 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, -0.2216721956818539, -1.420713573549913, -0.476969896992711, 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, 1.0133904557056803, -0.9822868898637884, 2.425005496346911, -0.03315290272508095, 2.059923212244384, -0.9175734236430358, -0.13843588731523931, -2.200242275592898, -1.1737601958122919, 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, -0.18967721053619913, -0.3885493746810846, -0.78645738020847, -1.769258018600366, 0.2863012087770702, -0.2101644250728928, -0.922379116692611, 0.4542988582917103, -1.168731602563987, 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, -0.34934190685175504, -0.698883217299044, -1.5400984867493595, -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, 0.675401077688519, 0.7094535110109988, 1.8141622548156382, 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, 2.1807319429357963, 0.3954366945921875, 1.54663939130953, -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, -0.349041502695088, 1.4026313276860414, 1.4061442335836205, -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, -1.149354106366614, -0.07195237845460918, 0.09414818556627164, -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, -0.33044907219753716, -0.39032216747009113, 1.498700405481595, 1.797754234791071, 0.23182973839731683, -0.4778501888006765, 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, -1.2632446956429335, 1.452604901391212, 0.6929251584566181, 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, 1.231436269706581, -0.12220432019599553, -1.5066610314377438, -0.131168025357405, -0.03123667988254042, 0.5124772757514626, 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, 0.11041826907812055, 0.024119499618272, -0.9954168307888536, -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, -1.2762292342683303, -0.1434065696905791, 0.199025684270468, -1.5400573604406471, 1.548288167937, 0.9288465316923816, 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, -1.4076687315200758, 1.029960808199997, 2.177326020841736, 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, -1.219750082862799, -1.3274229125145334, 0.6099936154303692, -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, 0.6955788134794414, 0.5722528182048355, -1.481720319316519, -0.15323533618009222, 1.090316288383937, -0.9430074874135619, -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, 0.1418089057088939, -0.4836971414215709, -1.242898069994524, 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, -0.4324600332331524, -0.024493143878920487, 1.980986216379721, -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, -0.007188030468140175, -0.296150919949663, -0.7591698936771379, 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, -0.1269124796513161, -0.132580840204314, 0.8622146933847438, -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, -0.6020537188199624, 1.313122245567395, -0.14388808008330586, 1.3163800108985646, -0.12593952342837475, 1.25609380794485, 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, -0.9552666410033216, -2.123695546730074, -0.9533932980859413, 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, 1.4985053270616493, -0.4079372826543253, 1.429769590030981, -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, -0.5422032040096507, -1.149255707834347, 1.7075504892947724, 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, 0.6952680695280342, 1.289500316820128, -0.3238211924056418, -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, -1.128094765763347, -1.5840451502971633, 0.6965634921004461, -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, 0.782406872557914, 0.16436581820924961, -0.6098672123657596, -0.5846446870404606, 1.7665907233368394, 2.253287365111219, 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, 1.4238494481371482, -1.024560317933999, -2.1184228571205432, 2.7190025950526526, 0.12139097966886359, -2.264633819910481, 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, 0.9068876194863097, -3.317724464737154, -2.0497241895681757, -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, -1.0396879806496875, 0.38836715314064946, -1.148341236578185, -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, -1.0320197896016023, -1.809474915977338, -0.1212982442332069, -0.2953960807718986, 0.40810561816935464, 2.080423035876765, -1.6117772384994753, -0.7770214056299425, 0.379905274145285, -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, 2.1497158382519235, -1.1455161335907829, 0.844733308455809, 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, 0.059525595286359326, 0.560337204317833, 0.6318144321904159, -1.7948551540624313, -2.440206368576267, 0.5654999312912312, -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, 0.18996944175263808, 0.603530025130453, -1.3260639610027685, 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, 0.859036998403129, 0.27126294568239095, 1.8807687476094996, -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, -1.387711080066175, -0.779366472482911, 0.542636780326917, -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, -1.2770378677003342, 0.22379393827708674, -1.95976131874838, -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, 2.204709247318846, 0.9671035281600022, -0.6015194657963759, 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, 0.704684219382097, 0.2565189930017906, -1.4057495378342344, -1.0808628096566764, -0.4273012936563684, 2.287956668802193, 0.5526482370477976, 0.142964149258401, -0.7930994287718156, -0.5786351421939423, 0.1616835183072944, -2.689381825560445, -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, -0.49594780886248946, -1.4696350425430305, 1.269091194574501, -0.884671817225045, 0.0807615803099693, 0.5077333887313688, 0.304270254383685, 1.5824852577508077, 0.4716519250182116, -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, -0.05776065052087469, -0.644036723587402, -1.514758454423881, 0.3626037495002716, 1.756443180184832, -0.5869030814107414, 1.2593028322942528, -0.340947718595298, 2.207695578155158, 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, -0.5735331920138907, 0.26485631537640625, 1.153689142566015, -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, -0.591808771914277, -1.0211709179461228, 0.6622884149541679, 0.611943061415204, -0.162129505874177, 1.4938404772180522, 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, 0.7699322703630633, 1.688709572678028, -0.2618739541353086, 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, 0.590108990863298, -1.3269259225493335, 0.8247851368961774, 0.4794641862284306, 1.239178450003301, 0.41946015140529674, -1.02228304173901, -0.6273635004355048, -0.6286704687439647, 0.9193684651720564, -1.125225644513147, -2.247205808116544, 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, 1.1236395260389371, -0.901284920834397, -1.8393473423011502, 1.457813522969226, 0.2982753351251207, -0.5522345751716979, 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, 0.521961207539444, 0.32024874494404343, 1.8372706762077982, 1.0847219277436837, 0.3665684218008724, -0.506672978923869, -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, 0.23449566822494436, 0.9401533066766986, -1.244264362290661, -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, -1.0009161837866754, 0.8160531051827333, -1.527546407704811, -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, -1.3221584274660605, 1.0841297942511154, -0.864758376903117, 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, 1.4855852794311764, 1.850491258358576, 0.6391454162969747, -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, -0.5050782797778097, 0.5502897408064048, -1.264625107579972, -1.128243178397043, 0.9541627279264773, -0.5333769913585662, -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, -1.06906722027293, -0.6118481578548427, 0.7226526120697837, 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, -0.620495126954499, 0.46700278861928723, 0.6600059658549468, -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, -1.0350451028798564, -0.3386972075915535, -0.985820806311947, 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, 0.24766987368776427, 0.2672756574827596, -2.021019599490311, -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, -0.5073118474816601, -0.929884933785043, -0.8919914961789093, -0.92789390971797, -0.9712191679734525, 2.048440256292676, 0.59801535888525, -0.15644532147921494, -1.116297697923303, 1.4382328249156382, 0.4742282779073321, 2.315456482213615, 0.41611617343791296, -0.8808931261653652, -1.42213674320648, -1.2404962116839235, -0.9363848730494202, -0.899312646918738, 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, 2.179937643276768, 0.21389684803719178, 0.05784031807603419, -0.671324911467819, -0.4138960024201802, 0.2706183364237272, 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, 0.5529895567096951, 0.997991850817377, 0.49134730013314215, -0.5071857064533738, -0.699622693536108, 1.1696801481884702, 0.3782115611225297, 0.44706160647953386, 1.44017146059469, 0.990643290368379, 0.13256218985493962, 1.5886336771168668, -0.579126585596691, -0.6047821885765065, -0.013481234821095128, -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, 0.5121269879811529, 0.19241754110954368, 1.05805011001695, -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, 1.3277786760361687, 1.047502591195173, -0.5706374980256799, -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, -0.2592049945947187, -0.5738783430402962, -0.364632760285267, -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, -0.7120980746820729, -0.6412087574310469, -1.609734635530038, 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, 0.7388050176954863, -0.8895230526460256, -0.835218553213963, -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, -0.14884400882014526, -0.90485439549858, -0.25332197648462423, 0.8305024600077695, -2.062594376376904, 0.5380534777302792, 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, 0.5990291318233845, 0.7629575394167195, -1.635505435400148, -0.7720334712821033, -0.7306901806421247, -1.250662917555403, 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, -2.164946991193342, 1.8448885093030065, 0.572007132100381, -0.9020532459752512, 1.423932009681719, 1.1116421563744774, -0.609918694875925, 1.0390897743423966, -0.1305603800084962, 0.7049709576256773, -0.30985592801910117, -0.6566307196626123, -0.005304890708390932, 0.47214213858952303, 1.247922968974058, -1.434297700901899, -0.5773871236273995, 1.9951334816061994, -0.9419344596787323, -1.3864755081036366, -0.15540161000210675, 0.28089640344542804, 0.6902199813822665, 0.055137779443554184, -0.1316442026885298, -0.47920924486264665, -0.37134570058665717, 1.1612473442212157, 1.862246649641681, 1.1127961330998304, -0.449879365783737, -0.4581821737978766, 2.681801981114757, 0.622613137075688, -0.5264955185026189, 1.7456452297639542, -0.0032580522874735246, -0.08412480377121889, -0.09847618283385187, 0.5573182638994464, -1.1975598741016937, -0.25042914816475237, -0.24189491229960913, 0.1717462405241003, 0.5303343737606813, 0.8246091313323292, 1.010839700197812, -0.8902436270883701, 0.5757151238996234, -0.6241388306405901, 1.0306895727537915, 0.5437796109495969, -0.37254092473885336, 0.17302563058445183, 0.16431412357817202, -0.297796251553928, 1.0415794322065468, 0.27195785052081917, 0.8941462516437774, 1.8901581231152924, 0.16318485053532772, -0.42772830220525987, 2.22854455207779, 2.85934273014681, 0.620608819397525, -2.0773600718526932, 0.5102128857829208, -1.3425473236398795, 1.0664992078500592, -1.3978347586933288, -0.5082793586733352, 1.0293339145628106, 1.1953652639556394, -0.7592324149843712, -0.9927853948011712, -0.8401102070638347, 0.3955192048365272, 0.34215369871376844, -2.8791873832700547, -0.0421115170793464, 0.2803818171599705, -0.9401015854505796, -0.08972003336849564, -0.640338334227558, 2.0182530686564895, -0.7235603815620858, 0.6081345501547663, 1.7752306448722606, 0.031457706909880166, 0.899919260122491, -0.5364177308537464, 0.9954498087197619, 0.21059455079709405, 0.8203366802620794, 0.15551004552008937, -0.5905994619497847, 1.4571504499595769, -0.05879218788301025, 0.6116700031464317, -1.3093298447872528, -1.9790524548585495, 2.327922240143418, 0.5346029134452727, -0.2220392426765117, 1.0350931612437495, 0.579583179532083, -0.09395716249601935, -0.5606885258433681, -0.6916360198922066, -0.25495705935359947, -0.23051091319332653, 0.5226206406896088, -0.6035154511863011, 0.5592128760780101, -0.3223643795390148, 0.5138781656523993, -0.7592214987689807, 2.417337785331285, 0.17028885180838357, -0.18586838199027028, 0.40185795512569217, -0.5670525260070235, 0.14141128561714333, 0.536910685665978, -0.04468791360092496, -0.13107111869784893, 0.8500574802035589, -1.2986776963277358, 1.3299424270339977, -0.14883240827467462, 2.0486968982261202, -0.9909136952855094, -0.3600241005246587, 0.1602748303156346, 0.07168780603661637, 0.30202523579276225, -0.582835004754739, 1.0356927036283528, -1.0360800724687276, 1.993616236752697, -1.2365797403960304, 1.8548042098231963, 0.20499605949096963, 1.2010757276760113, 2.057751677950784, 0.2883899362101988, 1.6134203350119927, -0.9640624060585024, -1.1213275218434526, 0.6531743202785056, 0.2277981765470329, -0.8359861748374583, 0.5680057504067159, 0.28253652479051733, 1.1165497781562674, -0.5714364972858512, -0.09854463425203973, 2.395067138296113, 0.3316175009075528, -0.6884736402196919, -2.0231033737037047, -1.6070787249452574, -0.7165117692039605, -0.7553512437574256, 1.9280259690970352, -0.26733976223106926, -0.0673955495394241, -0.536406291194771, -0.7093789385459298, 1.744020696757244, -0.8126325347024919, -1.5969922983164335, -1.2686890383326754, -0.9291972010711246, 0.9031672530350638, 2.269233244076525, 0.40988533123157295, -1.7212576593177709, 0.7166427020983424, 0.3627363765292881, -1.5589258141736047, 1.3206137582172544, 0.22241582722694822, -0.5254557201726808, 0.4487811587655208, 1.4717430631656925, 0.6002964569533693, -0.7795697135851043, 0.610220453599741, 0.9796702201792316, -1.7646934144734967, -0.8420374077504474, 0.5166078996711738, -1.2752325216668503, -0.44546162876683887, -0.15696203458936964, -1.1862950949600968, 0.37408049529043713, -0.38524482721238545, 0.7842727318028115, 1.1538879916827052, -0.9454918159942679, -1.405125889371723, 1.0636457383418108, -0.7818062318843579, 0.8829476857079316, 0.8745221489151239, 0.6929310708225009, -0.39888705398196755, 0.9994754870230482, -1.666570871939696, 0.7961227485818212, 1.22745042848715, -0.6004867918118467, -0.5361669868684229, 0.4874774972013086, -1.890981268173993, -0.3938745167085202, 0.3139908715338594, -1.1261703254618494, 1.0966132130656288, -0.31621524862176864, 0.002668556331391873, -1.9226574720130702, -1.6380306920827867, -0.9710154441004514, 0.4763931829831273, -0.8587268321219447, 0.420689070376205, 0.6054083058374654, -0.7954680985571436, -0.20058537792435566, -0.19994075887630136, -1.895096099561938, -2.091666612524903, 0.0004974458415376117, -0.4080026099220151, -0.44867368855172923, 0.5700168037125656, -0.19142620469203458, 0.7614369056740486, 1.185949052557463, 0.6170757026559303, 1.650950629705662, 1.7703882319843902, -0.49884117664872785, -0.35212526236220854, 0.42973964778170143, -0.20813077355955645, 1.3420338787636203, 0.7397153430022654, 0.8838113044537101, -1.3377145615324746, -1.855416176565475, -0.8136295403887579, -0.7714846254184806, -1.2122365561438313, 2.8536471208979433, 1.3032022234889244, 0.4760756036980966, 0.04693766693045954, -0.5984449522911452, 0.7900271874549623, -1.969917184758775, 0.3503211304018375, -0.0008137206583593385, -0.6256281405885463, -0.3510577387659576, -0.13894191854589522, 1.199426224041857, 0.12132847331734303, -1.4608604499664002, -0.22948805550230816, 0.051902944512615914, -0.019119222645881905, -0.9757273564713941, 1.8473014772988974, 0.5263294510598043, 0.07053654437136757, 0.9547242579775002, -1.1278918446449648, 0.07734968673664687, -0.5799201931033439, 0.31678992899871267, -0.7432885872434457, 1.4335843287274053, -0.9465575672564711, 0.4879570553679617, -0.6623786574250906, 1.0259687873673153, -0.02932551729568818, -0.7891190307945258, 0.29564308636903597, -0.34927374642138076, 0.8136749201194545, 0.620245645223459, -0.43951272221042564, 0.46265400794768385, -1.869391305207575, 0.48193063531644537, -0.095540604007519, -0.16987767760770991, -0.19495692375454912, -0.08834646865917613, 1.2824833220745997, -0.13585649309388986, 0.6657305691375492, 0.6391954485208522, 0.3751449189250956, -0.19786418069226533, -1.1107085792532714, 0.16954868116772995, 0.0976102127373202, -0.22307281025633455, 0.5329264170127224, -0.7498434517605724, -2.2463793716496183, -2.030956619344538, 0.3469149176826813, 0.9569335370728702, 2.0063313680095405, -0.07729526178752644, -0.4820520883676177, -0.3642766707809299, 0.2721281447061126, -1.0173409588721802, -0.22291945275506458, 1.415842532715168, 0.3487504850213432, 0.3522443413976922, 0.9077850533771569, -1.0749257488285808, -2.072058608998672, -1.189733419675099, -0.5102992245699747, -0.5266987160364432, 0.38803217663099665, 1.2098862819236005, -1.0678208861159952, -1.6484340857205138, -0.6773093361468119, 0.19847908080770726, 0.43435982710100896, -0.06608174057217904, -0.4396025725464862, -0.06842865579333862, 0.0757461775588834, 0.945043974186398, -0.8271942633183708, -1.0171091372766654, 1.0045993947511778, 0.1215505686746317, 1.4850546815331578, 2.90124785320579, 0.9193799243970369, 1.4109003071198862, 0.9342714574384375, 0.7408981122108215, -1.501451886644788, -0.8528561599738412, -1.4502786649323292, -0.060333190180409904, -0.06215199874022316, 0.6962114020423124, 0.1737374420722428, 1.9987164641082087, 1.7922666332582982, 0.39258330183185886, -0.1955663537656974, 1.185062371327038, -0.24969600604011072, 0.5062590514320574, 0.7374924629427219, -1.0887076741188921, 0.9197089124134338, 1.4198792364404926, 1.13966263395932, 0.8820726768303652, 1.1454947730219187, 0.3830272308939737, 1.0330281295592512, 0.1958899672744909, 0.2610941691615629, -1.6928895703415128, 0.08949085370524765, -1.6099870201619317, 0.6146813355739139, 1.0232681185457035, -0.6120020584064751, -1.0855633146564565, 0.9035218354603602, 1.199279110133032, 0.21247320768848982, -0.8276719054682797, 0.34353353507020123, 0.7795065425753578, -0.31690501369321267, 0.08404007020790137, -2.0217996637419504, 1.4723540101508836, -0.5690532461968705, 0.7600008532793323, -0.09696213550941978, 0.49872412917775666, -0.6501714914135994, -1.4186463922997374, 0.4572717163404996, -0.6798540159722049, 0.8800683478695012, 1.1617475981837795, -1.2832223575262358, 0.01811044220476568, 0.5665224930728516, -1.7263899334779662, 1.0788518344074862, 0.5214662704113713, 2.207851490608375, -0.8847331619490723, -0.22393893146647295, 0.2604924986511237, -1.065720378325982, -2.4784405095403583, -1.397338674255014, 0.12733886071252698, -0.962990797187108, -0.4158341820319732, 0.8295084980828852, 1.129362539634652, 1.4448964367746397, -0.27202686813738103, -1.1376577043818543, 1.1669873661563108, -0.5526532153140147, 0.17431258922451653, -0.08674760587893786, -0.02662111271639052, -0.5787298408624987, -0.46418731609632075, -0.7338887598113502, 0.0037124668666011543, -0.4390315224865612, -0.5445053993271162, -1.1731970859703744, 1.557358039479812, 0.8235296531498106, 1.3403087264740343, 1.429798559996883, 0.8488733195590197, 0.6549815456848764, 0.5939979568631141, 0.571492357564412, 1.2838646589587073, 0.1968309175885564, 0.0125526247658802, -0.588379978175527, -1.459242663662794, -0.16058887298258492, -0.30513433025622483, 1.3958505210549053, 1.112993202632025, -0.6980224325960035, -1.1242172376210566, -0.04898442309094625, 1.7267743114344978, 0.3596144012700469, -0.359544416669036, 0.20255944297423273, 0.3676083732835713, 0.8149334833372205, 0.9572709382349587, -1.4303046720322652, -1.9840617027488057, 0.8352543400425974, -1.6685708178136907, 2.264358935950376, -1.1013820170238586, 0.6513073416660541, 0.5222811637226092, 1.6332065112971001, -0.18689854597886257, -0.8293836626550278, 1.2200036287220326, -0.948302395460301, 0.6269276746157323, -1.8413847347422614, 2.975492133500898, 0.5732253342246594, -1.876866690355531, -1.4492981424636866, -0.7472606420064576, 1.4876059940278459, -0.18934308720894036, 0.13020040181367357, 0.5331924552669381, 0.9913637676227545, -2.6437681894231435, -0.6461446779487539, -0.8660236542618331, 0.47452405238110584, -0.4790606483008819, 1.5321216571398668, -0.1636651452718229, -1.0332700298347521, 0.9892360243254097, -0.6416390065504894, -0.604900108391799, 1.535151051934949, -0.18334305957155458, -0.35686131551458816, -0.3292665860742744, 1.7738534285950363, -0.33142178700758057, -0.6235361522388553, 2.8510918408680124, -0.7318379837818061, -0.6194976835634578, 0.8118142867300344, 0.43758672808479837, -0.7150266134830248, -1.9406394619639358, 0.8679359705510734, 1.4354983174276066, 2.182868585469132, -1.1741764376487758, -0.9331282790464878, -0.2820770772397286, -1.9483310573156807, 0.31916263280850626, 0.6390360973776629, 0.5428826848071413, 1.5065733412421733, -0.47412499801799024, 0.2569777134684139, -0.18464959701431985, 0.707300443390559, 0.16960249404796737, -0.4185489493255141, -1.4509136246246903, 1.2609714707832425, -0.048585931918069494, -0.7466175012069378, -0.805144923911586, -1.6081696632587419, 0.2108448776087118, -0.626995367880836, -1.25582651238933, 0.03382654045677089, -0.45889090147992845, -0.2896301303848118, 0.4922810729687261, -0.11561150744781683, -2.0656398984212156, -0.15730996466261546, 0.7768976641774541, -0.7044791153933941, 0.8524501556338853, -0.3340090119288742, 0.08640562469139157, -0.059343641632369076, 0.1619562886451128, 0.15046570393731748, 2.7590525887014667, 0.22065232253703387, -1.3774088537570648, -0.29499229105904573, -2.4537835279476146, -0.8341158090629236, -0.43274207019506117, -0.14358452337381933, -0.8677025372132973, 1.0347284219371276, 0.48707383897255696, -0.06866257813543919, 0.2937618607534383, -1.161359070554741, 0.21001598604651528, 0.4159405289601604, -1.5043005890504582, 0.7372524407400997, -0.5334658384258053, 0.2567239585606655, -0.6299751233419266, 0.024035161278926437, 1.1244580271586777, 0.40836377201711715, -1.8739717517634698, -0.26853628794603523, 0.37761170331094157, -0.0050819767759484056, 0.009684786386250501, 0.2636875321138984, -0.08553945533113934, 0.33475288490766125, 3.4237712468503103, 0.744628978129671, -0.9096458649167182, -0.6827694846192245, 1.6425500385797525, -0.3900596403135759, -0.9509348833512404, 0.3229857369820825, 0.44175525248542286, 0.7931445181078505, -0.06988463350772384, 0.6819214512912009, -0.06839741587635721, 0.4734557044072717, -0.9215746025534817, -0.6195377638236638, 0.809667872762421, -0.4103668947560523, 1.749809215983805, 1.001647179219911, -1.7659243403508436, 0.15383957509758237, -1.2779831760745572, 0.2669263499455465, -1.4256436904962992, 0.040903466313536106, -0.9342945534262868, 0.7618231087000356, -0.30058739646889815, -0.5446714593776727, -0.4802089660362259, -1.1432227238603179, 0.5174957898345334, -0.26915089392842423, 0.3387263580347474, 1.2480509452812811, 1.9521841872543286, 0.9788396157168914, 1.001353646981955, 0.40906237950521346, 1.2380051766092655, -1.1622188132692055, 0.03880070372652659, -1.3157311036080868, 0.21159132832002855, 0.8251757971684041, -0.5943198935837782, -2.059249774668197, 0.4455096569146938, -1.5530036453685645, 0.24334104727505046, 1.9679440499519993, -0.14949638764508505, -0.1787890634869671, -0.8694565617159877, -0.02701940155527667, -2.327140574554701, -0.3493894186252125, -0.02711649643869937, -0.2125855163161856, -0.8626785926902893, 0.5125620452253108, 0.835126803441082, 0.4370304631746852, -1.4380277943151216, -0.15463871080474192, 1.427347151863727, -0.03594236427723813, -0.9987807222089615, 0.15285084511988004, -0.4453218737326093, -0.8774506171339351, -1.1301294572944445, 0.27932962145356316, 0.666378400360196, 1.0765917423686246, 0.2439549047998887, -1.00859364816552, -1.757528113553421, -0.7922512836603205, 1.4533777876325222, -1.508283926364581, -0.9454297378995183, -1.010459444419853, 0.0754147254586834, -1.2810537542822706, -0.7736354580243704, -0.811961379205231, 1.3638217257964536, 1.077496971491708, 0.5810375830537511, 0.3551271969105679, -0.043876281219692365, -1.0850332393056394, 1.109609770945844, -1.0337911892064604, -1.8807813444109054, -1.2265714811977597, 0.3936172157806796, 1.0778363941578806, -0.8644861643567047, -0.9521061052105131, -0.3765845085538441, 0.17855829086113095, 3.5953876986672255, -0.8488543068716493, 0.3153960860722241, -0.4124980314658376, -0.25957042793288443, -0.47466672457489073, 1.251745108485312, 1.9089401526170708, 0.08093711755806289, -2.256777082059624, 0.324177164165908, 1.062105790670867, 0.2886235312894662, -1.2983305542602077, -1.5005961252940438, -1.4260396412546816, 0.12572172650108407, -1.371518218990482, 0.5998645930096181, 1.2473531605780193, -0.9358060344486432, 0.49295286102524044, -0.3494884497630849, -0.9308402692062906, 0.3630283557686611, 1.7611911540817928, -0.7229213248269448, -0.4323877136781272, 0.09012216684853104, 1.2693688025965613, -0.05609728003750563, 0.2942911094966865, -0.7311965810915613, -0.21592794240105817, -0.4553253041620339, -0.13454483357874214, 0.3803586083160361, 1.2706120469339364, -0.868299098407261, 1.59925697493435, 0.5433594960509881, 0.5675579810614343, 1.9203285366540146, -0.5030970822643847, 0.8421602450844566, -2.316838061301056, -0.4201799135308444, 1.99145358910135, -1.1698739038813457, -0.48526560569590693, -0.664516213841126, -2.1784216925774254, -0.05592421534349575, -0.3735237580415768, -0.22461780649945687, -0.6015415198184665, -0.525149213451578, 0.20817264425532928, 1.0421502948740846, -0.24223189745187212, -1.5453453515930158, -0.565952007041841, -0.453301777620275, -0.26956499012979956, 0.6612001818907256, 0.6566383906736746, -0.7620891486112908, 0.4039229699126195, -0.03287499950025958, -1.728025679680301, -0.1351648490652594, 2.979844425070889, 0.21407749737048995, -0.41165660712793767, -0.8911684286042895, -0.49236046031915226, 0.08810619424950021, -1.4051338603716423, -2.3224238004285707, -0.3410883214075715, -0.12686282703773566, 0.23609553256542695, 0.23545196849666264, 1.371312887239788, 0.2318653380046876, 0.08464059182127714, 0.19008151199377613, 1.7562161679995132, 1.181971977987871, -0.8172519034071913, -0.31575932783054717, 0.2503737947188051, 0.028618079946139307, -1.723439924093865, -0.7885161782185284, -0.594263411951702, 0.5644435285732619, 0.8811148239408805, 0.7833035854562042, 1.0392171119322082, 1.8371154985886862, -1.2420591801850245, -0.23753657646460405, 0.19313774990116925, 0.5053866496884525, 0.3283028032403514, -2.225396433305001, -1.096249407991655, -0.9149883628966105, 0.21230053589695053, -0.6023002440801871, 1.4512382841053386, -1.5038113250304717, 0.11558860384831522, -0.06338166413389325, 0.22201020504142566, 1.4399368526678278, -1.536144263111769, -2.717778670757182, 0.1168039138752043, -0.5866181500734327, -1.5377442224077151, -2.0944415177169953, 0.7870016058915985, 0.8949404757727989, -1.2488701028525535, 1.8425900504983932, -0.8820586551654293, 0.31200772222466067, -1.4538990075976945, -0.4972028753925732, 0.30783322485667264, 0.534974938780373, -2.0058475112711514, -0.4541796977906028, -0.5567288589208035, -0.7063829736735863, 0.08317733846151737, -0.9039919874880522, -2.359353503098415, 0.11425878193276912, 0.64706666019578, 0.4359959376210403, -0.09281069482301793, -0.5382334133878951, -0.633983343063867, 0.49835413266819356, -0.6176307398455463, -0.58828999383318, -1.7334295099492802, -0.8643497543156821, 0.689824201173873, 1.524711206099055, -1.548684848469057, 1.2284263304913572, 0.19868751298961676, 0.11836116797672853, -0.06310268278090121, 0.7479073753397237, 0.19168429076964602, -2.501823109461287, -0.673945501033193, 1.2235988334078434, -1.1636116702452202, -0.22624467871026605, 0.5071009399593757, 0.6279007880533118, 0.5692262629524086, -1.7255159569914225, 0.6397252376986503, 0.23342621054073684, 0.21399479954715414, 1.1788921695577175, -0.4946728962147127, -1.8310549540520982, -0.3690830035843751, -0.42224783195423987, 0.32423026673778105, -0.4402301947763417, 0.7465865033369634, 0.43199223950922194, -1.939062107304355, -0.10453191019598392, 0.8153426406136252, -0.7800663274052761, -0.4477465519532468, 0.01545038682624204, 0.39608506375087277, 1.1493902335657455, -2.130104535188091, 1.1476608122361165, 0.9320022617397814, 0.03568906908977818, 1.4420580869170465, -0.5372177387698984, -1.1864962493216553, -0.5500096460519907, -0.763791941134191, -1.697389937955057, 0.2998477603655102, -1.3941268553154642, 0.5706575386796322, 0.7831976119427991, 0.28018300766602294, 0.13693472548612742, 1.0154445987056024, -1.1860807036684393, -0.19007920263882952, 0.1523832525182091, -1.2093360312349437, -2.100547843467698, -0.1530333323078057, 1.1971503331114541, -0.38189865297027337, 0.7916834209392376, -0.1728944869857963, 1.160481352505748, -1.0427224611678692, -1.040602541009036, 1.8273660232377136, 1.4195569065800453, 0.8386877142814951, -1.0778628423584962, 0.3469301281229362, 0.6711365751637789, 1.1526892923346204, -0.18194736753591428, -0.19855569336096057, 1.688961038095004, -0.8745505869548725, 0.32284669288734297, -0.8259830110426495, -0.3611221208798455, -1.4195164842808716, 1.1907305012760756, 0.1522501461827938, 0.922469684257407, 0.016501336648811274, 0.7429642513221194, 0.10750421501190041, 0.4808356602618045, 0.1323677945856938, -0.7034274377386549, 0.09645911224015045, 2.532325541632594, -1.5866221126564115, -1.971084122083064, -0.13301270859207348, 0.39343143403797187, 1.3390674367668436, -0.747255398772972, -0.16290875300595686, 0.4979804345513483, 0.08795913929250766, -1.1826687439735564, 0.8708434312878163, 0.10036766629128512, -0.5580601750838238, 1.0076432223870029, 0.8554191239588586, 0.5698707282163747, -0.20863591717796462, 1.3123618498586958, 0.820266660992923, -0.05334598793633222, 0.10738590560666669, 0.7476571054869932, -1.5691946737355327, 0.8999837788505479, 0.038792413114335636, 0.9914820089613138, 0.9465564741859593, -0.9548035752110309, 0.37108183095020375, -1.6932708709240643, 0.5742732453192894, 1.1869006875492747, 0.2555908214103616, -1.3999854653788708, -0.5270366881316677, 1.8409181821652891, -1.7547244042030132, 0.07405473692919617, -0.14925008749413637, -1.8439449535735588, 0.3444816081051852, -0.2983334069128005, 1.38335867526748, -1.9630063235244388, -0.5193463961965822, -0.11562338831110575, 0.352400820758953, 1.6482773735238936, 0.6711383514595195, 0.2238366057536359, -0.7182362270286512, -0.35435416471609005, 0.6485877172023825, -0.2757466733288484, -0.3563016808385527, -0.17817414950901492, -0.0019081140052624073, -0.39273602229275606, 0.06348346009811161, -0.8742437683710312, -1.8689872110353185, -1.5147133895052636, -1.0184612409555949, 0.18139626346512772, -0.7129650139254672, -1.3195899155857833, -0.21170557963600709, 0.49610977046001814, -1.107773982297535, 0.6462111934112551, 1.688912150364615, -1.3591299269239323, -0.7475464904708393, -0.9405677474521547, -1.693588315970276, 0.20250426856488513, 0.9856658198526146, -0.44166427943855957, 0.509830562978939, -0.5991965310798085, 1.4973252224613436, -0.5546344165085834, -2.2200296733850635, 0.11782530162434772, -0.2746421487353144, 0.4690531558116329, 1.40804274909555, -1.1589358423900673, -1.39264188930796, -1.6570523533049744, -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, 1.2692870943822299, 0.40403527645846804, -0.261501940678677, -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, 1.3723479505028726, 0.824813770461099, 0.5243129136614292, -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, -0.508032215950158, 0.004726053571028723, -0.30330784941160444, 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, -0.010248112584533295, -2.380960707383888, 0.2770426540930432, 1.4353993617223093, 1.043407848929735, -0.6643084477672975, 0.1560528379614375, -1.0888910309318305, -1.39073904258463, -1.0653294525847614, -1.685728242447165, 0.4278716389829903, 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, -1.801558199044534, -2.7422706187790467, -0.5385419989517659, 0.4561341860266813, -0.310225122334308, -2.1875217223893677, -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, -1.257101185725113, 1.0310169221725312, -0.13131058277048602, 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, -1.641862178277871, 2.3640821336546574, -0.9548887269449952, 0.8055568803047201, 1.7115905120926056, -0.563245126658301, -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, -0.138088388413468, -0.0857690957689657, -1.170514473695407, -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, 1.332952122458738, -1.106990241078737, -0.8323599454667959, 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, 0.8972323805641829, 2.434777614341617, 1.0541755565684054, -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, -1.3038099206851257, -0.802611403636314, -0.7510835439747036, 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, -0.818440789798608, 0.2561702472397693, -1.2318619147211731, 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, 0.5887777831164662, 0.5273151918284512, 1.640536966751914, 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, -0.263170367989491, 0.2895021927054334, -0.4314031435542754, 1.6490973670655187, 1.5338741666166893, -0.677703293025438, 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, -1.5839480376139985, 0.93074956060378, -1.5149960747905178, -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, 0.7363355075559743, 0.10653207903038861, -2.639936447634558, -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, 1.547983753080703, 0.7288188703318803, -0.0933899148618752, -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, 2.164276135105918, 1.4789527353334166, 0.6160953641329345, 0.038310480621150396, 1.6452500224294333, 1.494343112286883, -0.7650247014788575, -0.533709060717757, 0.24993274705180898, 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, -0.7565222879698993, -2.233593705684145, 0.7533866182365011, 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, 2.0424397893714183, -0.1606058104953894, -2.121156427498829, -0.814081708698557, -0.27922653429038075, 0.613844672204543, 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, -1.014494742181071, -1.0343996078852367, -0.14083690434012247, -2.659674765988563, 1.1200535905266031, -0.4586778781046084, 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, 1.4233809128401147, -0.8987486269309799, -1.453057056751839, -0.7448768215305785, -0.2267855258163122, 1.945693704496327, 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, 0.15373776030536832, 1.711074878534925, 0.023787252110310374, 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, 0.8014014989569858, 1.5435968634285022, 1.902043007662628, 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, 1.5886418554737576, -0.7748824652422079, 2.103248029337103, 0.890022377440416, 0.6445857174711459, 1.142680024548178, 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, 0.8972524641969086, 0.5171651392783594, -2.680398134256749, -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, -1.150648836844086, -0.27918479828900283, 0.18762273746188549, -0.2897213292792658, 3.366197693866059, 0.2467457004931064, 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, -1.9240434249515963, -1.151736654209814, -0.7733751324010287, 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, 0.6048642954458721, -0.23792858122085253, 1.620207826009963, -1.7785773079872162, 0.747925897632815, 0.27650594380432825, 1.405206974690175, 1.4527336375856612, -0.8045674628364357, -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, -1.23776452431, -0.7207401991713909, -0.5835455049457218, 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, -1.292458696881581, 0.005456891100888988, 0.769740287438423, 0.7214780176914463, 1.345661917126047, 0.18333266477760912, 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, 0.374049479643793, -0.4714366545027258, -1.7800873492764042, 0.200432184971249, -0.4510884110917245, 0.7815208373774285, -0.529196555581843, -0.6004156268390762, -1.987720596410682, 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, -0.18865548902962756, -0.2574880688121813, 0.523806567104555, -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, 0.983917326770679, 1.5508445843971757, 1.0928624592476766, -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, -0.7100199116352982, 0.2251083357001051, 1.090471403127213, -1.1754999891954272, -1.4111309180712674, 1.594334716432477, 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, -1.5396688044442735, -0.6530928014336336, 1.120347029827944, -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, 1.060013239317373, -1.0891223916285455, 0.28360515994750446, 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, -0.3546644244976776, 0.87387343925544, -0.5520139384476067, -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, -1.168389537997648, -0.18353619149782954, -0.3721734346762326, -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, -0.12351163257863787, 0.1776654000420943, -1.615145727172023, -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, -1.2449841234813048, -1.103185502766208, 1.4687648094175687, -2.321135504151646, 1.8028715890978269, 1.618525966060461, -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, -0.9085526532719989, -1.5432961003875627, -1.382447044939543, -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, 0.4162133575979579, -0.5834522007996513, 1.526399442141217, 0.932690624644091, -0.8327089198669363, 0.008129612787209651, -0.8756430509115771, -1.710104948463473, 0.7313833433842383, 0.38408626128483575, -0.649419875486093, -0.513266352794694, 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, -1.333352138482723, 1.6199178344118101, -1.1117879761260026, 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, 1.0573490168071358, 0.969281396126661, -0.16453913664021197, 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, 2.8979565669480776, 0.494994469813483, -1.033921386291816, 0.532567367721892, -2.3224749060682606, -0.26278621379585276, 0.733390618716078, 0.26893520218170347, 1.221797483656276, 0.323206684696481, 0.9161514268765875, -0.47743933817297207, -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, 1.762955600977091, -0.6663298900129063, 0.7995964753155814, 0.5257372157147355, -0.707308331499479, -0.6136393162168713, -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, -0.58231197299488, -0.78654738406919, 0.5380613168300563, -2.672784704980037, 0.6606461413961936, -0.1465624833411055, 0.0888686178359086, 2.210061572985145, 2.294971536351295, 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, -0.11848755674606819, -0.7858056186488147, 1.249740380134423, -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, -0.3179037933173635, -1.1888561761902947, 0.437705987045847, -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, 1.895957414765353, 0.9248264121062436, -1.2110092283276828, 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, 0.3661454196313209, 1.314104216899166, -0.2441216940535231, 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, -0.6467096589101514, -0.36467836426192457, 2.306805171234094, 0.10333405365920315, 1.262206300587313, 1.2385757211726727, 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, -1.9146406027175389, -0.5346724812004263, -1.140909676169055, -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, -1.0999458151114896, -1.2537006155798813, 0.931769887114095, -0.6461245870221363, -0.583460013639197, -0.9265736250708216, -1.3079107876503053, -0.528389767905448, 0.62761091808355, -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, -0.682575283096325, 0.757967165609461, -0.5075729205837868, -0.11858690586463072, 2.312019925911996, 1.1827166724325398, 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, -0.6671392597715344, 0.6068864566857306, -2.066749712250998, 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, -0.20964059111239142, 1.842231958342178, -0.7335304642031956, 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, 0.18061216815427464, 0.5520102397033649, 0.59836911473434, -1.263347844489138, -1.1297726718055079, 0.35098777857068997, 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, -0.7191313345929545, 0.778220364395407, -0.13120556048835122, -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, 0.2070121538250916, 0.2504069869217224, -2.631300644202274, 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, 0.2853163858135379, -0.35328868813706593, 0.882172885773135, -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, -0.4342808065669149, 0.08406524833082493, 2.120062200683758, -0.39093327003097744, 0.604848796983356, 0.9747407688885689, 1.012873772943999, 1.484776688598748, 0.14565192873522928, -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, 1.232763521495371, -1.146675753152276, 0.5240190746997556, -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, -0.3182492668955925, 1.1361942311054651, -1.145113482369334, 0.9739359234143615, -0.05841150864303299, 1.209516920788085, 1.1578737392495533, 1.0079838324611112, -2.045985771110317, 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, 0.8510208092372255, -0.12233978003488, 0.5205292747850148, 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, 0.5547580599772614, -0.660840001199387, 0.8690939961288345, 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, -0.51771218110873, -0.17599895386113948, -0.8218468597925086, -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, 0.08582685153919768, -0.6888794127719298, 0.248428760381155, 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, 1.855731462672373, -0.9915477914770672, -0.39104957954484354, 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, -0.64002492430303, -2.1257015836539916, 1.2385096001374738, 1.579659452635625, -0.3357229908464301, 0.18491188600986957, -0.3025292534015403, -0.125549804848653, 0.622928495685437, -0.40809712587392005, 1.617634084815633, -1.3903083795868942, 0.8455260891545993, 2.405637871088736, -0.0418063625320119, 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, 0.376683847715228, -0.5960809546537884, 0.49012293971249343, -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, -0.20389300980685746, 0.576569789963951, -1.1187440105143156, -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, -0.014639223084981728, 1.7314859050882176, 0.6987110800208967, -1.6848834226351845, -0.468054031300935, 0.2231411040063078, -1.2079120248207287, 2.0110030501455016, 1.4453850086239999, 0.34059707215507334, -1.8213959334958643, 0.8699402772722297, 0.4899667100861624, -0.01173787871675348, 1.1948559206670855, -0.8870269587625144, -1.555705163842219, -0.26533917383348415, -0.3325290424739039, 1.5977665804314234, -0.41203089860517084, 0.49183361850554513, 0.5136570154037132, -0.23309124875198506, -0.7998287164209388, 0.530066185314952, 0.47106304564421286, -1.0105968114955957, -0.8353508972894879, 0.12377709284481839, -0.07289187751377658, -0.6735741109340289, -2.0639344018430106, -0.014438189818046943, -0.4713457882035365, -1.3988791318705927, 0.7076705525000143, 1.0974072497097722, 1.1672671573256546, 0.5553099499949979, 0.12122031680888311, -1.3280507129101098, 1.1654608124772015, 1.3139075127865134, 1.28261825548601, 0.8583778828163117, 0.4508675701062839, -0.3773168693728364, 0.16884703765184494, -2.5899418769593017, 0.8980383022257733, -0.7871723126611332, 0.008146263601196916, 0.15100042746757067, -2.158690321719755, 0.5154773443584927, -0.8968793509306945, 0.12745529032276473, 0.3057102963260676, -1.127194036956006, 0.06889018035163645, -0.29649779158358486, 0.4000800574133786, 1.3294197922581654, -0.9809012577471112, 0.2604706024238921, 0.5802535538390949, -0.7974783258128166, -0.6640912726671294, -1.119222930304624, 0.5834025731102502, -0.25723586541301474, -1.618253196199123, -0.0570695619599075, -0.43841397343582966, -0.6767231131676439, -0.38371376805174173, -1.9996328333376983, -0.33850140623335534, -0.1183524981649774, 0.005796690030477999, -2.458306016054147, -1.099750705180441, 1.054860270281014, 1.1651235359219074, -0.8686068833819991, -1.4001372299430193, 1.1272944804074991, 0.03719751404379593, -0.06732456664178753, 1.0123217113273348, 1.396494377415687, -1.114892120467897, -0.23680354926169062, 1.1762829232717322, 0.35544788004728406, -0.41986744728203046, -0.3867023929082546, -1.483298749076887, -0.566334552372417, -0.03321061530877886, -0.8527679221181403, 1.4516682272189547, 0.7320822341298279, -0.05200885253027685, -0.9525949548843667, 0.5751795467491231, 1.178459960930901, -0.10762850518883417, 1.5651830651133336, 2.1380607452390663, 1.2280945171647695, 1.4042702000856067, 0.09325784801982663, -0.3557970327475224, -1.073778288097418, 0.8968276612463406, 1.399133831515596, -1.2439663723417378, -1.781799686206601, -0.33427106612358554, 0.889230360742913, -0.41170088971799085, 1.2155279834457413, 1.600649868770159, -1.6424774434123148, -0.30897369601229935, 1.047363878453214, -1.0791866371859211, 0.34680511458320423, 0.9927888544576774, -0.8514984695838704, -0.8372280244524042, -0.22804642016295132, -1.3868435427851724, 0.7441016059552877, 0.06972829881636747, 0.3420780025264497, -0.04386730461990216, -0.017778941397242242, 0.6102135468147727, 0.1101978218029996, -1.401046648194382, 0.6208120606616816, 0.26306079867835747, 1.6277476977056633, -1.4148077742490233, -1.12911289812443, -0.4018145604094114, -1.3755867441903893, -2.399920233063965, -0.020319571626188252, -0.895842610909627, -0.3494298955785707, -0.2738387174328631, 0.34922230639219626, 0.07109890321458032, -2.4101191646725644, -0.7411692543552041, -1.3233841458208606, 0.6863453426487733, 0.3632155343313335, -0.5590033258828403, -1.1449685446383917, -0.7258003922221851, 0.278797530701865, -0.3441402294664407, 1.441339424212574, -1.2335052347473323, 0.07612868920434228, -0.4241597163106437, -0.05332877983539378, 0.10099084201256278, -1.8787758687909357, 1.4045284087841965, -0.04347827565492549, -1.2990797348095602, 0.6319627183761264, -1.0748380347638893, -1.280830568026441, -0.4632576940943757, -1.2762157345443148, -0.4871099169463196, -0.8573516675952042, 0.2602500067557723, -0.663512812580364, 0.9193611678505703, 1.4195120671985408, 0.31768737978504635, -0.22676062071355782, 0.7472485772463154, 0.33979457913367445, -0.024989366536706515, -1.1780091950874647, 0.8422172106604986, -0.9853850143769382, 1.0084091587937258, -0.5446586568124329, 0.2287236140419025, 0.12649973956792954, -0.8624432460024017, -0.2042801144909528, 0.8201641258212513, -0.8429169760408267, 0.15786776211979775, 0.586990037118922, 0.7581270686613231, 0.13813966047716805, 0.14287983497159015, 1.542247836275435, 0.6889352238499454, 0.3790751131802156, -0.36007691647378387, 1.5453032787583676, 0.4475231964904419, -0.06905081640069816, -0.2556692520813782, -0.6423795723912976, -0.6500078649365075, -0.6577072095504994, -1.4866829628942408, 2.5030140049559653, -1.0572143847418314, -0.000571660449572993, -0.042894005602608545, -0.4591852328122149, 1.2843268761512387, 0.3968454779394536, 1.138745996685296, 2.4071733886455227, -0.10540633867195442, 1.2714215049136428, 0.04757946360595818, 1.2348108652417815, 1.6311115642560317, -1.6302649244099794, -1.2745470694966483, -0.8131839077565575, -0.6825393122927416, -1.0794370197645617, -0.7204636565534043, 2.1467941519636455, -0.18535362890328835, 0.6625127934408671, 0.38979365484662193, 0.7719784843101606, -0.4958538436662962, -0.658575404725063, -1.8250261743740281, -1.3009369789521832, 1.1569797741579901, 1.0803875458840382, 0.3519814471093802, -1.5678550885987372, 0.17700126122173684, 0.19570581803986603, -0.9713133420910822, -0.40681730492260765, -1.079374837348168, 0.9333820675088979, 0.7164115790249227, 1.5974993677559646, -0.27698287787067033, 2.0383895476075855, -0.6836849892211939, 0.8311193676081333, -2.4241121219014663, 0.31596002357495434, -0.999473279382509, -0.262687475352513, -0.46071381621370666, -0.8976883600787323, 0.5219272929937467, 0.9722622620644177, 0.552832436548929, -0.027467290841698567, -0.6107378749038481, 1.3506129449321138, -0.4521398968561788, -0.22117060492964993, 1.3204666166460701, 0.42542027990331455, -0.19467559818902735, 1.3362817877824478, 0.1643979281153062, -1.613150980719597, -0.5326178763831365, -1.5741387694417994, -0.2358632094400509, 0.35096623923842685, -0.40087086833885227, 1.547569381699142, -1.7090186764224344, 2.2199280575728784, 0.7516533958698258, 0.6804837145322774, -0.19556806995297935, 1.3537057525493934, -2.0138393066087383, 0.172351936169543, -1.7024086384702934, -1.0519290071418026, 1.6258351842437149, -0.11856858846558817, -0.8121335733777978, -0.02927583999406098, 1.548105034805526, 0.6981009969478109, -0.990277098683295, -0.15604117684813257, -0.9747927516511783, 0.4652704424950469, -0.31289780730884004, -1.651056798736739, 1.2755967903796157, -0.13648504411430237, -0.48481306969894616, 0.023313382404551213, 0.48504298344685315, -0.8507882704201493, -1.039212404883905, -0.653701398776706, -0.5189768622716721, -0.12449303534256825, -0.5128172446702866, -0.06818346256734656, 0.510667943805758, -0.20971767447744363, 0.7975878663589364, 0.3042695491801, 0.2654566914993375, -2.0012906991903865, 0.413870629899118, -0.6025010011948203, -0.14082858261327996, 1.075340195058932, 0.2593371488480129, 2.62922759693777, 0.3324210527578405, -1.2020419530087723, 1.1926421271709948, 0.2347858166167028, -0.9756048534996443, -1.8200265368846862, -0.5169307203823522, 0.1500518697766681, -0.038484274917838325, -0.5595155602432803, 0.7826664898369591, 0.4484219149387221, 0.29541985156163897, 1.3984689244673294, 0.25998037440140653, 0.42332643185294355, -1.2422400480672728, 0.2176902105319219, 0.728761958261402, -0.011206770084421624, 0.42373795905496436, -0.0772966783872132, -0.1844058501562145, 1.5231610698492861, 1.5815719719777372, -1.0224998294567542, -1.608411795245145, -1.8940383890496493, 0.5392647246180361, -0.9404210876785811, 0.24515734401955552, -0.8758837658412391, -1.528076170772824, 0.16773671218212843, -0.06372312245930913, -0.6625850298997638, 0.31931330490352056, -0.7703083579211024, 0.369010898692774, -0.9262558726002627, -0.021452503506505422, -0.6884402260487072, 1.5154027937733978, 0.8284697701567305, -0.07697958106921719, -0.4538814926580921, 0.5439309292438045, -0.5492443043774654, -1.220225030532012, -0.7053512461796413, 1.632643282613422, 0.5778426489678986, -0.9229177377752995, 1.588544297460673, -1.7481169305157809, 0.2618776316461439, -0.7711250331583439, 1.4721431859882452, 1.6321252809774605, 1.521708343024266, -0.46073261039758234, -0.7747734720993155, -1.3354599996427268, 0.9861401026653767, -0.575980258880269, 0.0853876730028182, -0.6195540436182536, -0.5432771078257063, 0.3060459872354665, -1.824118723913547, 0.8784176817828129, 0.8097094976615903, -0.361780627962229, -1.467071190440473, -1.8907115007272879, 1.1242546008439889, -0.4974181028535098, 1.829441455586246, 1.017979249905673, -0.7075497604105697, 0.059183606525579274, -0.13056990600722507, -0.5832122715205462, -0.01409309201012074, 0.016108610412205803, 0.1900118760884006, 0.24188780949423172, -0.8882450727066196, -1.3576659214518099, 0.07447367725510536, -2.991099769542917, -0.6488322635921112, 1.8595982643945574, -0.702641433986396, -0.6416959601570708, 1.3390388750212445, 0.057488906459266735, -1.808725561176733, 0.2948187135806436, 1.1497414866629478, 0.8709941695277267, -0.2850339815191343, -0.4997261831464098, -1.4398917507631508, -0.2148727154738073, -0.031164729254402425, 0.48150661412660234, 0.12415703923674576, -0.26613703422724105, 1.0565002395567262, -1.6752860867796824, 0.1869147939846373, -0.7272110183291539, 1.6245102578872348, -1.3773924349992401, 0.14296540214244555, 1.4878267201868336, 0.10331510654880505, 0.9062060348158155, 0.9324085143967664, -0.21818888199568304, -0.2522508930003547, -0.8562525871887124, 0.10204130138311729, -1.0184106320915587, 0.1825164284873822, 1.056310703030919, 1.7552903725196911, -0.12454007621445604, 0.31880532192621097, -0.35541825354040035, -0.8580393155101081, -0.2682711254651047, -0.30783295275138195, 1.3170139199898268, 0.7531186614185573, 1.192570085627795, -0.6615475858876328, 1.4991876630051717, 0.30861856418442385, 0.46151436623585584, 0.3960375120229514, -1.5852068567014443, 1.9903541747766398, -1.1185087223822021, -0.5183442785156127, 0.06782511507671637, -0.13813126796841926, -0.8649990189511263, 0.6978353775870149, 0.16085392211498364, 0.7383270750320552, -0.6856342770612354, -0.6045226539767258, 0.8110514204550441, -0.36508901079756473, 2.2802828142762928, -0.7663535452926638, -0.3887166303815122, 0.9034427218611359, 0.21868488058095606, -0.30457226174639157, -0.287175489125426, 1.3568449350217864, 0.39711905418048105, -1.1763187968954603, -0.33474769656895564, 0.917254226523988, 1.0804852401399638, -0.9584787505991971, 1.7478622379080422, -1.2473029790869914, -1.982585782186715, -0.41852445481952294, -0.9465815043529053, 1.3486167490991765, -1.3147522922373933, -0.14921512592164993, -0.6510935828594568, 0.009685462499594857, -1.0764421921168665, -0.12975724308626338, 0.4720265080850217, 0.3117809833804109, 0.8469168005900016, -0.520242573974674, 0.27675686046474957, -1.7178145403893597, 0.439729002709256, -0.30048055544717606, -0.6302171098523444, 1.241050608643494, 0.5721350887681553, -0.0022023636536079735, -0.4924114110139152, 0.9950463422748212, 0.9816810712679719, 1.9924377989279343, 0.03900009491657034, -0.2935571188258591, 0.1266892245615102, -0.715464769225636, 0.3145853867440553, -0.3835873169761903, -1.0953446648325833, 1.0121232148460444, -1.0957236224096085, 0.17063463111383734, 0.5102992173497909, -0.3658969046671184, 1.23797611806204, -0.18059200075977175, 0.9936325102325779, 0.18430235850671245, 0.16517189020344797, -2.016269812957052, -0.3616199185761283, 0.7527532999342817, 1.3277176349050535, 0.2920534284459897, 1.0606099435377094, 1.848598832091733, -1.3301443272735525, -0.5759958625549068, 0.27878675140631204, -0.2315083920631258, -0.8288316208067809, -0.2635580627160318, 1.3355871376746895, -0.8117302674348011, -0.23432703924765444, 1.92799930513707, -0.23101856846075614, -1.4238524703136513, 0.1368000358051577, -0.2055684135567207, -0.15855445409422964, -1.2600442043395892, 0.1701769006730323, -1.068866010850334, -0.1904292641612836, 0.5892434527813512, -0.2157459392172624, 0.4055498592698905, 1.6497067243577175, 0.7890192766736421, -1.044353487265588, 0.7953139847174688, -1.5740154854045074, 0.9665654379132748, -0.3889094455704384, -1.8426397459593846, -0.9001191779220159, 1.7045921258988515, -0.8923330121142684, -0.5956915482032328, 0.011227289589172133, 1.7111591357647962, -0.9587860284026688, 0.7548194520215976, -0.32603844480628175, -0.2353359336920787, -0.16729381132141224, -0.6023878547302806, 1.371156314999161, -0.2459473828028695, -0.2620130902224386, -1.2172056461838572, -0.20656000988613168, 0.5008110746890201, -1.4028780271648753, 0.7193747259694553, 0.0660307754939295, -1.3093771377458805, 0.407051194515542, -1.1823392140768092, -0.4019555472426395, -0.26250820888118304, 1.2702869545254583, -0.24272141574465245, -0.42155102572483116, -0.05194109601117269, 3.292873619493133, 0.7890333104486489, -0.6211877906484109, -0.8047810389893006, 0.9678567436130486, -2.079988930109922, -0.6016769585932343, 0.12364670959331653, 0.7229553379296235, -0.5227730192140618, 0.023991105176350242, -0.0017528334343272331, 1.2586605379107056, 0.8446327540395329, -2.252502331262609, -0.5270068966745032, 1.6223796347828976, -0.4278645067985037, 1.6333830568090013, -0.8062257833307152, -0.30685337459460577, 0.3507708774563464, 0.424527526741457, -0.03735386264172313, 0.229879937036083, 1.1454140027646036, -1.1872670475847902, 0.6262020869197982, 0.7589488691885292, -1.6862092963785988, 0.7944545737967115, 0.9971081922053232, 0.7560471613916118, -1.1851981001821967, 1.0965175918763284, -0.46530937265986, -1.2761702411382863, -0.9791491731581209, 1.1589807765966766, -0.8156014346461856, -2.8072546995497247, 0.5334627416087777, -1.3798149493182552, 1.3972706448160608, 0.4552374166958973, -0.535433943499853, 0.8920580452737524, -0.5856331944062472, 1.7623274652492553, -0.2852747983665435, -0.18313041510663963, 1.4659299617833124, 0.1519470164480292, 0.23355499681619366, -0.836602381173288, 0.18618502715241547, -0.08859676768441688, -0.7180391575300691, -0.36232537769580714, 0.36477740973605915, -0.9281105879066266, -0.46197664970984853, 0.6483976493075976, -0.3812217162848902, 0.4303579894467762, 2.0043530514779873, 0.39102979400332366, 0.37534637396631415, -1.071734524715999, -0.16045645113900145, -2.998145904788263, -0.36470187389744846, 0.03991547011616779, -0.7008645685896715, 0.9912516955548382, -0.7450675439952815, 0.3264674970899282, 1.601666916097199, 0.5405397248625541, -1.1861306612606524, -0.522172803007203, -0.7727094284088601, 1.2277562505941912, 0.37759283992313625, 0.7444682278368736, -0.6522853231400494, -1.0696424743836717, -0.8054574164094268, 0.905380130000978, -1.1121207299686113, 0.2063449976062078, 0.5176153181186626, 0.2301751658467518, -0.17968415020039138, -0.5804234791794292, 0.522042470813759, -0.47680230351950187, 0.7668678996668346, 2.1152176375874023, 0.4635399730851282, 0.7692324460373827, -0.5214713943997042, -1.6311809160767827, 0.7017462722924709, -0.31859839125881545, 0.20304228378387937, -0.18790051825211995, 0.18432739014512065, 1.1541296937922023, 0.4450818568868103, -0.13551483948610296, -0.2758105920455811, -0.5849315949646472, -1.0646125679003637, 0.27411289538745437, -0.5032261617196119, -0.04351057134624247, 0.7743236339777182, -0.6756715811861062, -0.2671752620926679, -0.23914374307205996, 0.16461452793247355, -1.4436309225983486, -2.20506341329235, -1.0189819575984795, 1.5608022939480573, 2.31499985378701, -0.4181529433643855, -0.2711132087457424, -0.7206084096900425, -1.2504073094445143, 0.31340429692041716, -0.1447897506201982, 1.1850402988106572, 1.9541706849775027, 0.11232761778850357, -0.4382234425091706, -0.3947615339868321, 0.7015762348678443, 0.43950731587232217, 0.4486281613565141, -0.33259394965579864, -1.2893276502905346, -0.5665027824228605, -0.9867864794525018, 1.7152028381164288, 0.7425175887812803, -0.4541542908237512, -0.04974419881485532, 0.7205327224864219, -0.49642760570489125, 0.5806736618394556, 0.8088452773706619, -0.15195744367862507, -0.12096553277305616, 0.6220396950025358, 0.8874367244840082, -0.960123924615042, -0.2512769100863725, -1.3487372983592427, 1.9195263893870158, 0.1391130058484598, 0.3556392382753691, 0.022946113835703726, 0.06403402028906036, 2.01431714516637, 0.9153269759513197, 0.45535078555080316, 0.8164902531014034, 0.7554878281598991, 0.7302943512899034, 0.9227450720901643, -0.2149435624765486, -1.9175638929241665, -0.47494584965396475, -0.8209686635530825, -1.475086806478942, 1.5375697346337323, 0.43409387407100747, -0.5748944134752534, -0.1207717673708367, 0.10757938709427231, 2.24973612340786, 0.5656573548928321, 0.7510332313304937, 0.2925755284670311, -1.1385387437599415, 0.9278383480094607, -1.9329319879816766, 0.8833452963447278, -0.9531724053699292, -0.1039290425260258, 0.4382286101469634, 1.8998623656623255, 0.19200494459198952, -0.6716950287224315, 0.5638093918454188, -1.6242049283972644, 1.7704636715303947, 1.6534314391102312, 0.92655666075164, -2.1666623771571185, 0.3089037330906556, -0.34387294467445684, -0.17869075221031164, 0.45228978471381315, -0.9526180775686287, -1.1784311215584218, -1.4588182758831976, -0.3751354576229393, -0.3058513410728059, 0.9384734481636833, 1.1326237644059438, 0.12950394282796612, 0.7421113354249786, 2.22774088023295, -0.38297985887788083, 1.184609638956563, -0.28900852784476955, -0.38476787730344003, 0.06257594537962448, -0.8447175394855944, -0.3276448761445928, 0.9520069001238655, -0.7029145751675628, -1.6244073387265128, 1.622978343226983, -1.2795553886248943, 0.2494267093436905, 0.6236424924999387, -0.04290636875881789, 1.8562326434548018, -1.3390517668015733, 0.5090655455389611, 1.2848563335735044, -0.5387392229559257, 1.6741064751678032, 0.10066535315992477, 0.8949591322162106, 1.6846660415357275, -0.47037844642707904, 0.4157622049238856, 0.540404845364168, 0.3967936830533677, 0.43668944123398024, 0.2112361885627918, 1.185672884091169, -0.33641286222705097, 0.5497594019101291, 0.12465203566067538, 0.38350811363315446, 1.4507326394999236, 0.14723038127353738, -0.7869045408490771, 0.39357209249435554, 0.9743220259735553, -0.06453115565194864, 0.38254243983530506, -0.8643740939583053, -1.684728335866361, -0.20622146179421566, -0.2747979191346741, -0.07028871827775147, -0.5729020560099904, -0.6189757445377713, -0.1510371111896753, -1.1820077963068163, 0.6043354866597276, -0.9774217378587312, -1.3380178663597784, -1.4201147833071752, 0.18880445993987796, -0.8427639940831457, -0.32186427356745245, -0.006664725012722541, 0.8058032956183504, -0.23641847937920588, -0.6756647705708424, 0.4773883748212866, -2.185477701275724, 0.7531165422993013, -0.8203844714762077, -0.4004758384259698, -0.6468022951980026, 2.2667765095579213, -0.1464154957378096, 2.098114036236069, 1.0184508455410493, 0.8103126555466662, -0.40972058902905745, -1.1414090507678094, -1.3867326701405396, -0.4507753555588849, 0.10028961530046718, 0.13126844765242035, 1.8046340365305968, 1.0498294815194782, -0.1970397367331956, -1.4653721149167949, 0.28738863276181814, 0.5271374800610847, -0.1451944493283091, -0.9800599971955779, 0.6516285157791157, 0.3396200289963888, -0.8198525721107438, 0.6319579574491423, -0.3772650215173409, 0.3077068224849206, 0.31720206688921, 0.12158776309046304, 1.0809042082121207, 1.0642567891228714, 1.8179097447438652, -0.43206935605397984, 0.37786874569296014, 0.3952043620022568, 0.3619801074518372, 0.836701763727239, 0.13589241191151316, 0.5983402387018408, 0.11083062853937264, -0.47684235510432976, -1.425496108886025, 0.5861440987479868, -1.086649842646286, 0.8692343861045037, -1.5595017100635853, -0.11939217655297334, 1.867839017091306, 0.1529344462913203, -0.4142188866098133, -0.015382150772253089, 0.02331025826997036, -0.31332150638072576, 0.07177806286427546, 0.9588513248678675, 0.4790246289141386, 0.1782800679264196, 0.8316439535085373, 1.3697451219813022, -0.29239194315140027, 1.7130334754533454, 0.15301199433584703, 0.2516538496321531, 0.8052203626705442, -0.8193169757784692, 0.8297372716531863, -1.6382362402194854, -1.039626938505833, -0.8865946056863021, -0.9294253652017392, -1.7978162276590155, -1.992621134234571, -0.05491414933488196, 0.7607121087371761, 0.07984366129268702, 0.5462619894735057, -0.2682509648059717, 2.6409716720600263, 0.45749720934429716, -1.5363699364147407, -0.7376116600379029, -0.00034809918522295523, -0.0446268595336354, -1.0661827948417526, 0.20144275615808793, 0.7334562425309233, 1.552508206699953, -0.4212114236659149, -0.18798580599722212, 0.362342131367099, -0.40201566793731663, 0.24422295735481817, 0.5936899101332285, 1.4911129590651635, -0.012571888777807325, 1.1564868960369348, -0.4347382827914363, -0.03991151500405277, 0.8894520643614005, 0.6750877041971858, -0.8924490272423622, 0.06802820117873785, 1.3941390498912603, -2.2183459123693248, 0.728823441885771, -0.20738631995329626, 0.5619451894738027, 0.24102109818707865, 0.5988075233622759, -1.197341333157397, 1.141794439805377, -1.4503023284963743, 0.17970074803850108, 2.2516048850144963, -0.56902356791673, 0.5251052705298633, 0.41230439233508803, -2.0610354044549024, 1.6463483630850755, -0.3895932560221762, 0.023372481314313378, 0.3726580742458444, 1.6009305244339782, -0.5079472543165146, 0.026058442391582896}; + + +static double gemm_B_dram [64*64] = {0.189669602985114, 1.325049359243402, -0.732183062829934, 0.572714186764936, 0.578590600877031, 1.2388796995290943, 1.0500306672776403, 1.8192381659692514, -1.1405729828723672, 1.0122300292640196, -0.6803068888120192, 0.23558756797719393, 0.4590523848413457, 0.039978934156923385, 0.7649728251851297, -0.6523866340206094, 0.9057001363970097, -1.4969909024911252, 0.5583314398652852, -0.4452115501359032, -0.3304347302314844, 0.027571386474332372, 0.8939826883481805, -1.872118961147354, 0.5298280317907396, -1.0826478091988276, 1.2084845569673108, -0.17218404794239636, -0.3252179452060136, 0.3945233627729552, 0.2425669838461522, -0.2564454574318479, 2.0415809465850456, 0.6967377843326548, -0.9048546980985884, -1.234321257122067, 0.03613326393674803, 1.5030525940981552, 0.039812401385598245, -1.028716739224381, 0.905199590933292, 0.07238255324721113, 0.9920291161315633, 1.607092129619061, -0.7789509309904787, -0.8098065870783787, 0.2185071569653127, -1.0776572234997361, 1.0422979672486086, 0.35098947793500807, 1.058321853508688, 0.21414179532614872, 0.87002060394994, -0.588672020705869, -0.9012431889469893, -1.1027247239157423, 0.20399290647527346, -0.22033680012834594, 0.41392188096741706, -0.42930260307085955, 2.008106278814718, -0.17141366812550005, -1.0826275786645045, -0.9116258668673404, -0.4909043876322673, 0.5943271959845479, -1.032232792355313, 0.6916475040075348, -0.2814338568695432, 0.3019276636231262, 0.30840104248656297, 1.1260293291302985, 1.0658378320568267, -1.309665630454003, 0.03270078938345398, -1.042853289185364, -1.1963506272729019, 0.22648827570429167, -0.27781730274050287, 0.6724032102680387, 1.4810649208771722, -1.705538843107525, 0.09082361393666324, -0.7042276239280941, -0.2383161417380752, -0.5754942139316102, 0.2034652918512655, 1.0314063302051917, -0.5483340133806348, 0.7261075561744313, 0.24325632249018914, 1.2040307377783537, 1.8952069586290123, 0.07195894063173909, 0.41620952444354886, -0.38792744247312216, 0.43271658564463056, -0.7152907230181043, -0.27441611835118457, -1.2767143227797635, -0.7237480311094019, -0.7801386726592521, 0.5873572672607883, -1.5638814718009917, 1.0026700985921706, -0.20658267805579636, 1.1147082449222048, -1.8735264640919256, -0.010118223620103015, 1.3128640032531393, -1.2394667444809362, -0.058071070610180346, 0.3326917440450766, -1.3418569139214052, -0.35250711745478874, 1.062335579748586, 0.20356887701465726, -1.5085222292073164, -0.20122570212640017, -1.2154057454628897, 0.5158621290601251, 0.9695271692142623, 0.3441306717260009, -2.1992152335223514, -1.3802722217172205, -0.6034656461417384, -0.4801083441565978, 0.8538691740175305, 1.251004287596872, -0.09542742482466746, 0.40740998722283345, -0.46840541134330865, 0.6471911034482357, 0.35532009889140853, 0.7653967450899795, 0.9524656674056426, -1.6215943351797741, -0.2686500917542327, 0.9449563832937318, -0.20293909969523755, 0.020177369737896966, 1.8868326165910845, 0.4576448036103095, -0.2498818144309833, -0.10142946285532765, -1.449579663145317, -0.8489450230349159, -0.6568950465417366, -1.67036939630407, -1.7958306634788441, -1.1021273970619352, -0.21287356137371105, 0.4835462118207064, -0.706131682059633, -0.0005784215469045945, 0.6574250653163278, 0.17766778608163517, -1.8727680007027385, -1.5710173931120528, 1.7986529290207192, -0.18797275721228432, -1.3910123695349608, 0.4306425799188508, -1.219748011178242, 1.0949707620919027, 0.1513762139476246, 1.9338021854764944, -1.7210422812237611, 0.9885068182490291, -0.9803371411601391, 0.29682676074294506, 0.5079171532797483, -1.0067592408859265, -1.1852909158053921, -0.24870697467690292, 1.5263388569653553, 0.3621209495718994, -0.10875592605323897, 1.5707754718355267, -0.058214043298022156, 0.11649757853760016, 2.20745259723818, 0.22508102515092662, 0.30413440003257725, 0.3361637150433332, -0.29948851492748413, -1.4644211330145278, -1.1645688132881276, 1.7112956696610628, 0.3665551294097223, -0.892280722293537, 0.23500589115883444, -0.006491959097523364, 0.6091191876188028, -0.4461691518402758, 0.9121131054406446, 0.6355326129684161, -1.268683781896227, -0.21309922823334831, -0.4526268909737412, -1.4960032394689278, 0.5540823200822727, 0.2560919649556906, 0.6958730281917784, -0.5196649709771612, -1.3359468501779264, -0.9612977596469916, 0.3684109792157164, 0.46874289915027023, -0.23500821987366438, -1.2492858128054651, -0.9712261431242842, -0.11106638365989584, 0.9412519070406014, 0.49297323422258654, -0.8131389146040623, 1.6400307701149688, 1.0589667993101595, -0.4626925507420147, -1.4812253208994315, -0.44695524379636, -0.5088098786201557, 0.7417386987297616, 1.9120910039247294, -0.5568304246735866, 1.082342797278427, -1.7235037406979286, 0.803163868309887, -0.9769340341766338, -0.35112463351229073, 1.089671633947238, 1.4945995510345567, -0.9605994188901047, 1.8558602683726249, 1.2656905677375838, 0.42254046476492185, 1.6858550771091214, 1.157878804816697, 0.4573643259259206, 0.024994765804824147, 0.6922554384196643, -1.0810666579003045, -0.993616522481608, 2.5847749332602, -0.5049684014655186, -1.1395828435290725, 0.7605771798197924, 0.4408163359631587, -0.0840611891215317, -0.9527439222312267, 0.6926562526915562, -0.0027305349396484877, -0.17986472316396296, 0.6422610144258437, 1.412615895841031, -0.8278577538333346, -0.34124077949668935, -1.0204861021625729, -1.639602822546497, 1.6074096919057093, -1.1584852824016685, -0.7208155426015784, 0.8392040761097412, 1.4407795793808869, -1.1752867571353782, 0.13944705380804281, -2.1057408864224376, 1.8791244019244464, -0.11042132844938202, 0.6020370854831343, 1.123017096832584, -0.05652868718922079, 0.9625740766310946, -0.9673606956637038, 0.34492034644528907, -1.5375361503838323, 0.4990455041789286, -0.9489277592897538, -0.44848662225935687, 0.20225111438661522, -0.7527660556091446, -1.1152440995018695, -0.678649964720999, -0.0170582056258441, -0.7846907726938122, 1.464993202427589, -0.23851486543700182, -0.21705046983702211, -0.48796761821159795, 0.06955842538462975, 1.354628016983049, 1.1723362156850679, -0.05921619047971073, 1.837739007328147, 1.8393226614447074, -0.5268796561342607, -0.009364231583693152, -0.34684234783223405, -2.176072940640231, -0.09860764477494396, -1.375924608815696, -0.3811363408541145, -0.25535084881820336, -0.5151247779921773, -1.9166699100712044, -0.7282751936534643, -0.770819120513824, 0.09989507970317545, -0.878538580803181, 0.7867474162185699, -0.6197714222289087, -0.7670250649875356, -1.1346435642707655, -1.0880912464935015, 1.068458625377813, -1.3222351936152148, -1.066593964724342, 0.6852370705793731, -0.7113480780630511, -0.40942559335898576, -0.7483757154858288, -0.07122776033319436, 1.737408764400146, 0.11841252923863307, 0.8754522360715343, -0.343031757238289, -0.16416710878946741, -0.19531408663845634, 0.7754013715005769, 2.1332591207760423, -0.5052118758709067, 0.7131591899986326, -1.7803264017675031, 0.09420444683357239, -1.0472700356156177, -1.141024988505546, 0.09968113439098554, -0.5500313848742133, -0.8741986078561492, 1.0386438045163713, -0.25198767361062563, 1.6311155422356378, -0.5489949380720973, 1.4199156443209913, -0.2207014712546088, -0.4933058762731387, -0.27150483339996007, -0.609287115241384, 1.8620527369297897, 0.3449111247951254, 0.47062028183460747, -1.1545294505661057, -1.292810580741897, -0.6289136729611903, 1.2737042271707677, -1.0511082561993392, 1.426825388255249, -0.015158507511135831, -1.273327662575822, 0.3566423182164152, 1.7276268792428473, -0.138705499081124, -0.3306294574129653, -0.25875806103153426, 0.9880995543293336, -1.8623261901283767, 0.4777716036036974, 0.7487573413181321, 0.2064510369320226, -0.6262881610175278, 0.7353602889754229, -0.51667585170615, 1.219994070236117, 0.08511682154742599, 0.461487533016861, -1.4324664872243593, -0.2831471438083741, 0.054981156346117374, -1.3700696100114267, 0.3096752736763023, 1.194241938484396, 1.8141528512917984, -1.58398942271415, 0.2567713855866453, 1.1325804441514433, 0.25474731658461836, 0.5102671515154679, -1.4402773937935691, 1.3631571444107151, -0.8745959707232299, -0.6709972930186268, 0.2283470744920325, -0.12596887340485374, 0.8065789677701352, 1.421469323382145, 0.4556508032642018, -1.0983863507243814, -0.6254964658092993, 1.070974103218303, 1.0062944399776677, -0.2034198776993104, 0.808780940775045, 0.5534680689510987, 0.8961184107636236, -0.5842103728027922, 0.5653085033471172, -2.1257290549864827, -1.5901962373203609, -1.9012367446206324, -0.6712383697091975, -1.5234460098622955, -0.5907400058854823, 0.5435115627741249, 0.8494509722996453, 0.39541460589373995, 0.34454168140199853, -0.5998570139754461, 1.4125085287986676, 1.6191319296034328, 0.5896315959519233, 1.6752120980115939, -0.2991192109089548, 0.9223415325858076, -0.7167872516194996, 0.22778147331011792, -0.7313561090591182, 0.2921479170003794, -1.625666094056695, -0.6445948416979022, -0.05395662589269566, -0.32651136607182046, -0.5718694030200041, -0.6239270633688702, 0.5293884091632937, 0.8538659984117739, -0.08646896041984872, -0.4591311530517561, 0.530729446677609, 0.9885369669648936, -0.10094123058942654, 0.7532893387345917, -0.5660396507329793, -2.0027194859651005, 0.5301317384831784, 1.7010094716661732, -0.6006505084403668, 0.07178044356560984, -0.7177231480244217, -1.359337165187181, 1.0326277403651098, -1.104532973746827, -1.6930804949542624, 0.8948572423285246, 0.6340160893384413, -1.5423915961168462, 0.011234729330484954, 0.08870089142026438, 0.3252000063592445, -0.3788953447378539, -1.6345167208845197, -1.9943938078659595, 0.5933545751971042, 0.1442610329440957, 0.8612263693463771, 1.0358096108450814, 0.6111080247478592, 0.3509848535144375, -1.1231152704037288, -0.1305107898573894, -0.41201313101807663, -0.03594780788378006, -0.9547182114259212, -0.011845221890036848, 1.12335088041976, -0.9774107703754668, -0.34076482193730445, -0.4446802970229687, 1.750328003641402, 0.11174788170294983, -1.565777190842104, -0.2346242003304713, 2.025590134435565, 0.735919593851651, -0.3026497563524433, 0.795453306662201, 0.46657766925371513, 1.3719765295674315, -0.4428217812148648, 0.7438423244369328, -1.0044446714902608, 1.154104526108482, 0.8839111136542974, -1.4508885825739297, 3.0611733845656395, 0.07901046926896166, 0.035058228455775144, -2.529204012749036, 2.2253130444496216, -0.4836215067602598, 0.16087228538156456, 0.7529292801127621, 0.3021529756635018, 0.4830310122781418, -0.8075856256378251, 0.26676009847445914, -0.29717856392002556, 1.2712147826101827, 1.3176937460170013, -1.4531100825401797, -0.401073196111487, -1.2871905265662251, 0.23493164012909643, 0.08751016369069563, -0.4032539921927929, 0.20282323529368904, -1.1162555921139607, 0.12695806790569364, -1.406093789252919, -1.0433007967333698, -0.6034955540076896, 0.17102026852126964, 0.7887411128500289, -0.703456192532379, -1.403341194881998, -1.0180851564689184, -1.207196105637615, 1.3037843089034824, -0.8651985363612925, 0.16224668087220992, 1.6395521189037061, -1.463483294540364, -0.7310087129802972, -1.409361808083387, -1.6742963677191696, 0.31488414200224113, -1.0807755665828445, 0.11328910546500368, -0.09407603144337613, -1.4910310277195566, 0.7879699185151358, -0.22617275756319744, -0.18453310046988597, -0.8088417376829332, -0.3039969187778905, 0.8286501834765244, 1.746576388943919, 0.4585966464736884, 0.25857411751629744, -0.7755037047860419, 1.420943752567541, -0.7945878809532562, -0.46422664555214305, -0.5870832701281387, 1.3591013677668105, 0.5825126289522653, 0.6302719139868384, -1.4892296911532181, -0.054354803805188714, 1.2886090146135347, -1.871894006094185, -0.17706345246737432, 0.8586917015117914, 0.9881224827101989, 1.7896888081081215, 1.8466624703615426, -0.652536121488528, 1.3010866809132744, -0.09621481510992093, 0.4195057830533126, -0.04083288515295536, 0.6108022121551525, -1.0750510120212, 2.0140943483593357, 0.4481129685052948, -0.9859321167207238, -0.08362383634635764, -0.03871848811440984, -0.2859438908875716, 0.5451864270031233, 1.096287644463553, -2.0123992429307687, 0.5129399194497606, -0.4096728112440253, -1.0733837614648305, 0.005037630800198677, -0.21228362057381842, 1.0230324323469668, -0.3656703260246628, 1.343090275133355, 1.22200570063805, -0.19194700432383366, 1.6409555329882874, -0.045055182295066304, 0.9609987857589979, -0.19006125129863014, 0.4532745570836223, -1.2557975528603051, 1.266664141133199, 0.7341021381288548, 1.0225863410319447, 1.0410718138994182, 0.7172806738325695, 0.7903692364559284, -1.2222599875487237, -1.1506465980729734, -0.5931209140159687, 0.0009066596896233819, 0.8988006272366036, -0.7368561086985402, -2.060685831545258, 0.5996372458926001, -2.6379391495512574, -0.15461646907210536, 0.5809320989641804, 1.2787415555120119, 0.9369918534027788, -0.6875243358298012, 1.4942643445597592, 0.2701534137189382, -1.1816059491920998, 0.33872966509087593, -0.24720917613413934, -0.3605679983284582, -0.6613196865194579, -0.41998189317162704, -1.4697058573054282, 0.8301051921559156, 0.41312510613488473, -0.3119279752724232, 0.4832898322611189, 0.07210674722777907, 0.46221378683028386, -0.37907311341065303, 1.0338668347332045, 1.827883401988348, 1.4366607957461852, 0.00961089155518196, 1.1215412005788055, -0.9367274619902408, -0.6322235536233912, -0.4955048405923246, 0.4275765566731029, -0.4174196455050283, 1.0639045161507725, 0.17385489080177374, 1.884693292443038, -0.9174412411641567, 0.28332303940663434, 0.5154356751840908, 0.4527845805518231, -1.0762757525300937, -1.179877567884639, 0.05121250188699606, -0.8370218706835116, 0.3936578615259371, 0.4760963910597331, 0.5554786252919994, 0.623642262045472, 1.1315240293178561, 0.6513772767640275, 0.9117480009446275, 2.0918988065309074, -0.18111164825082318, 0.14578447935362185, 0.7752307161020041, -0.7579177299008238, -1.4643865224645813, 0.03389748036349978, 2.120628606940419, 0.8014787143841253, -0.20745942068486495, -0.2879768579253691, -0.44376875474220623, -1.431453126891794, -0.11047101043242392, 0.24254161271823366, -1.3890767080063884, 0.3551940772843608, -0.4821841102534756, -1.7404902110705263, -0.40990083463094634, 1.8406160691146698, 1.1343291794639416, -0.8770360698657584, -1.308217262167615, -0.06936303775634156, -0.39764667123450276, 0.5769725286701373, 0.5896270638633384, 0.9362446576484363, -0.27937299969585233, -0.610273978130261, 0.3618651906707751, -1.2687776942664193, 1.0626862705466873, 0.1667616956765533, 0.8138441501785322, 1.6828432679771586, 1.49682253754663, -1.1863230769603135, -1.5117519393616556, 0.294281094993007, -0.2266617043180088, -0.41000204751825736, 0.290692491485043, 0.2610713689915173, -1.4803962625447804, -0.28203213808230204, -0.31875591594593894, -0.7579009703382211, 2.4195675460926807, 2.247768381111992, -1.2980855885884446, -0.6529880062202584, -1.1234187168399243, -0.6956208755464927, 0.18965693411991652, -0.7362169554932866, 1.7754003059642411, -1.4235677497447479, 1.2291191037431475, 0.723527014546075, -1.3435315937863141, -0.17217271634298267, 0.14983346550614027, -0.21891340206561175, -0.010486184647393863, 1.2886811180355797, 0.10616567929962695, -0.609164835229734, -2.4211016076172376, 0.9463913483379409, -1.2980770068731349, -2.686933468264052, -0.03499567459563232, -0.34422522533382366, -0.0004908173861640336, 0.6734912677572197, 0.3525723705153651, 0.26758049299320774, 1.0529967718142275, -1.0999426989251082, 0.607473797642488, -0.4324428804621579, -0.8747836211413581, -0.7615340045466905, -1.3987613199365359, 1.4760791332584298, -0.6692014546820036, 0.04206641378767387, -0.9954780884334878, -0.7367371645074806, -0.21469214077392976, 0.79863673183808, 0.5075977458329036, -1.1234803559227962, -0.11931261167544333, -0.9031732659236469, -1.5609889694409194, 0.027729684273670476, -0.0017713213496273143, -1.7998106503968425, -1.498807717939337, 0.8169615081274427, -1.225033387547948, -0.8400996437124898, -0.8235377496257132, -0.4364264295280201, -0.01520214370946306, -0.15565017655025964, 0.0711312016026537, 1.1732559505317561, 0.5421847899339702, -1.086805433546504, 0.08813241769030257, -1.3579610652989789, -0.95942170120491, 1.459939956281907, 1.0117046306174486, 1.236197607064445, -1.2847595366907714, 0.47824603981077524, 0.30763463139827374, 1.1982758403837634, -0.3864008241497015, -0.26343272683881636, -1.750741728784698, -0.7351692274922426, -1.1349702581587906, 1.587266678692178, -1.2860170377857756, -0.4801752859875242, 1.6636658079534445, -1.3553330327978614, -0.9100195679190681, -1.0672796342182451, 0.5487025003986162, -0.1791076550181655, -0.08327198475097396, -1.3750289943854572, 0.4208708674265662, 0.6401350535533352, -0.14063353058666744, 1.3736446383002492, 0.9976936151350384, 1.1041690429383328, 0.5683312485637652, -1.3367051291338052, 0.2753721538148257, -1.6017596501358158, 2.0374743389978627, 1.0455690189454758, -1.938665276478024, 1.252770550122401, 0.2561807897177513, 0.6323524439681041, 0.44731860905074394, -1.5602090121872974, 0.16086045997109896, -0.8663998447283321, -0.15184679830362122, -1.8365049505188262, -0.6194981237001738, -0.6491132407601561, -1.4279315144128575, -1.4527159141395913, -1.2860024861530703, 1.945998082166153, -0.4013256550665814, -0.23659055793172576, 1.6616248255857569, 0.9472591623961788, 0.22914631673454838, 0.4811708838672695, -2.4575219310050103, 1.3898278424498873, 0.20730337920079658, 0.8863788687809607, -0.5916662331186044, -1.4299091422968209, 0.025064490896124083, 1.8440846679363176, 1.0939727242689221, 0.7256395410256029, -0.8590688058956931, 0.33189582274019075, 0.00448664532664562, -0.6480863852455645, -0.19365121140022182, -0.769665428394861, -0.6311931076898489, -1.3627698357475697, 0.6622092567614445, 0.24357517704777013, 0.503103320093718, -0.20595689226841954, -0.13618936070901688, -0.019650584704433195, 0.7262082426269985, -0.506270084550158, -0.7099417203135552, 0.45165053042716463, 1.1300405981040555, -0.24719613566322082, 1.2071293877520475, 0.435400868244206, -0.6142313942856545, -0.2808055784619822, 1.332735503169351, -1.1560021403810814, -0.6195875521757297, 0.25810834246088477, -1.4065218105605355, -1.3610928866213383, -1.1598317103172542, -0.3269341470162602, 0.08570043587182144, -1.9223819765041372, -1.0843685493072819, -1.6036518992044688, -1.0540791458678187, 0.5783162278332646, -0.3724907451950873, 0.7280800945640448, -0.08142618606573834, -0.8401997607017293, 0.4112577930821558, 1.5228201136451585, 0.127297463548603, -1.2407599011227048, -0.8552188536617934, -1.4741717842067263, 1.2671552063447231, 1.2337003308820302, 0.2110414345000711, -0.49591180781239114, -0.7461512339849881, 0.46865565860373054, -0.29715235983531224, -0.12386177897129297, 0.505578016119112, -0.759425281130206, 1.1922469683938692, 0.7741861134374209, 0.05774506261158576, 2.127957081016315, -1.5401055327147126, -0.9942873953265658, 0.7559867086719737, -1.1410350461719765, -0.9659194892052072, 1.6982344632787765, -0.20931069081798342, 0.17013249407359873, 0.7270923030390775, 0.7204891484463551, -0.39207799039317925, -0.7155255221813551, 1.5011465291329578, 0.5459497541973576, 0.07243706212858651, -0.4803076283069569, -1.0054943042359705, -0.5237739778480014, -0.09835515549724476, 0.5775290716411025, 0.9348827174613787, -1.1210113987995936, -0.7552071013929652, -1.0007141329301783, 1.130624877307917, 0.2722502138472599, -1.7108387910528222, -1.1062867754981813, 0.5689569196095314, 1.398762352581004, -0.33899470403862797, -2.076656356422838, -1.0004947044013306, -0.06246586753421959, 0.3367745011191109, 1.202712320404443, 0.12986086111190515, 0.47863453049805044, -0.5301057190296372, 1.1951555259879219, 1.0407276314629512, -0.6060289812671181, -0.45188168827767916, 1.1672764414566084, -0.7601267361673396, -0.16562850009431018, -0.43860049222365943, 0.19265871886562935, 0.3369896727544974, 1.0727046962527615, 0.35280285161085073, -0.7944425795053791, 0.4195206213331096, -1.2168293697790002, -0.6443114053235841, -0.525365919337175, -0.9060734662625927, 1.1385254001814025, -0.889916275322328, 0.5268352654420474, -0.009977679759738923, -0.7448851196209746, -0.44666312777814293, -0.11724072209427554, -0.9165098978210413, 0.40637929060102135, -0.6093457976035641, -0.20545838480263884, -0.8249002512298813, -0.8187706458007767, 0.4689683976066863, 0.465846208938873, -0.5387718100480267, 0.29854415380834715, -1.3665663590081276, 0.6177965287355739, -0.21396707680556573, -1.7406726509793795, -0.9472077744730275, 1.2519402070664514, -1.500777460440331, 1.8997820918004282, -0.9743457775230356, 0.3295729377044873, 0.7301012356968105, -1.2391980530651758, 0.9236351835845457, 0.6089290100942146, -0.12102325767564293, 1.3403384783597367, -0.10824453003093894, -0.7827461172580052, 0.8781962552006474, 0.034791693460034315, 1.4473751097143777, 1.203987441260602, -0.6198007001117833, 1.301362501195787, 0.30216625220261106, -0.39889697987982026, 1.4638160519035035, 1.4441827711806823, 0.5084134433716269, -0.6532108007553509, 0.1035243161974872, 0.3054072741705922, -0.34435155003796397, -1.0278570477914484, -0.12173258785663424, 0.5950528675438397, -0.9207821659942775, 0.7261815748689618, 0.7245355697839364, 0.7604354547177733, -0.5960613431486281, -0.12501859797022763, 0.4557109402631586, -0.4506714771692287, 0.11847291756872175, 0.39464486011730787, 1.0377336775259156, -0.7663128158804938, 1.222002486711219, -2.508898843182651, -0.5222022711446821, 1.5139575345025822, -0.36009115973957706, -0.49699571473838994, -0.7320998923855627, 0.001340784350614637, 2.287441638998896, 2.6831380407821084, 0.9455827325947566, -0.6608925110148092, -0.5298256491030603, 0.45598613407332417, 0.9056367098865701, 0.3468095182692027, -0.41128275516824825, -1.9946284216093966, 1.3045604895745035, -0.31854406317287715, 0.5219610405531087, -0.6641421031054549, -0.8688348040549531, -1.4043267718460093, 0.30435888123608246, 1.7846564254581045, -0.9673767387337057, -0.2252780643800041, -0.05837566001580252, 0.4291753233203228, 0.5442117526259592, 1.694634248553822, 1.2354760527115538, 0.7959395609646354, -0.8911113251956342, 0.3981107862143589, -0.6038191850464151, 1.410835808709077, -2.11493035968152, 0.06393518361722653, -0.029139117833403446, -1.0055963360448883, -0.7926601642106428, -0.9735425062205508, 0.4554630839524932, -1.2992896271871042, 0.17829226436911383, 1.5977020899206693, 0.5447850111120647, 0.17559902453769902, -1.4737831888237733, -1.0419185868083787, -0.6982628146742288, 0.2928989175106737, -0.8214315460621029, 1.0127275799116227, 2.540754369404317, 0.12669952550269392, -1.1844739993372275, 0.04189705377801499, 0.19439551671935018, 1.4521501913227826, 0.9787682718988012, -0.10502618788525488, -1.545636873356207, 0.41955502862273386, 1.6344397845287502, -0.6996137533248805, 0.7734222385388448, 0.7646349717820928, 0.36213834223499025, -1.2242281615824748, 0.2849485575478564, 0.34587641407530284, -0.7695467082668787, -1.878968801793851, 0.6439945266787103, 0.39401855978146333, -1.846270591936921, 0.8119840231832707, 0.4632560672239587, 0.8872512984658244, -0.6531242638897106, 0.8234509000335084, -0.8470430861883507, 0.7043960474728573, 0.16029656369225695, -0.9199716837319385, 1.7516428594841185, 1.53571695111567, -0.5923963974647823, -0.09421724289639898, 0.6951583529670979, -0.9029293377217025, -0.5403629622028528, 0.6026873450172656, -0.8904457098799401, -0.18153071461918635, -0.7683616776084702, -0.7723477433968918, -1.1385745044486548, 1.2990481267032234, 0.6920712069054653, 0.13819751107759315, -1.6994515863979083, -1.6867607272487752, 0.11386912747556614, -1.4741086101976333, -0.4084554473716878, 1.2611098853442282, -0.29302661250863893, -2.0886778227205594, 1.461016480023341, 0.42560541758942194, 0.6191588554531684, -0.5985193479741547, -0.47737501108118235, -1.34361075336494, 0.44109611654147907, -1.1504741483205345, 0.12452161850318348, -0.26145501283663203, 1.0737929954280732, -0.3919359249696162, 0.7833381602627896, 0.4920754113025742, 0.7181988996772725, -1.2868290476443027, -0.5794523266184156, 2.077603848983364, -0.6799665641060869, 1.189260513704343, 0.20931239869905546, -2.3009614984683644, -0.4660635928974643, -0.0830634473482318, -0.6258324519513977, -0.37209211976632794, -1.4939045852147155, 0.8393277068222, -0.19085594755902638, 0.6591988409228787, 1.2272709847028767, 0.06978447405544162, -0.12326350295229303, 0.4001647745043678, 1.8718755909371418, -0.6642196576581617, -1.177488097714965, -0.2921906301066324, 0.35352988537757307, 0.6046877389175205, -0.46544921540870143, 1.3311200985616656, -0.3326058332617738, -0.33093067100049683, 0.8306989177074579, -1.1200409825086644, 0.8296377545936948, 1.62299765872056, -0.8169754874480261, -0.24116708825317848, -0.47162079773443777, -1.8381312799299088, -0.4816987181224384, 1.4153255218561738, 0.5404300549763246, 1.134165955447205, 0.36168092874820507, -1.0277579618997654, 0.05064223484110245, 1.2814696296764614, -1.3027980677359505, -0.7545827594608056, 2.355379772816784, 2.04718791252273, -1.759834086257933, 0.8184067330416113, -0.562184039487719, -1.0738447527439543, 1.0973524489753268, 1.9618314891849296, 0.5705572269774465, 0.046663848882222324, 0.6489189020968069, 1.0612872544961902, 0.10979465007800482, -0.08424919865351914, -0.046667928646890046, 0.01001877915514528, 0.5755430190021412, 0.39333359256220896, -1.3620271852148316, 0.7432663945852148, 0.8410052507767574, 0.7560345480854492, -0.6405935855372006, -0.7185790399995472, 0.8929178346215048, 0.027651783756700472, 1.4242859506295802, 1.3972167882558741, 0.49132298190860557, 1.2099518385773633, -1.1213635437310359, 1.7266262581251506, 0.6799784552405994, -0.24016735136695966, 1.4215773652232737, 0.3292899527453197, 0.13524241974414905, -0.6033204455513134, 1.2434604281943695, -1.3676515621225143, -0.29194920862061935, -0.5181588907438721, -0.8497114521365112, 0.18939885573177215, -1.405921031876885, 0.6278696550297107, -0.19610956093284193, 0.04397693978192499, 1.27214363752744, 0.4762447251944673, -1.1370577022172665, 0.3990519149808553, -0.03191869811931289, 0.11133077808104638, -1.3445513835383933, -0.6573925555742512, -1.8568976733896805, 0.4153648416666165, 1.1666478841476853, -0.46112981399687764, 0.9535530862878486, 0.3473471655658854, -0.4161422881398393, -0.36198900956783775, -0.6339438086298942, -1.3944739484632676, -0.20387130619003158, -1.2701487841608123, 0.8796180040454592, 1.788948584745946, -1.1631704471876354, -1.961477519039208, 0.06590179873448668, -0.41614806490650597, -0.266000444569746, 0.1643712657991143, 0.38488576234322136, 0.2840733616903701, -1.0787563446019552, 1.1302339241072494, 0.7397220744929801, 0.10555634094791072, 1.5575703663389617, 1.4916593464656478, -0.1350848011563506, -0.5955564946507164, -0.9779825570939976, 1.4575816264107626, -0.5635566812842832, -0.13730254477957476, 3.1760359675054914, 1.5468541517541319, 0.6712301995907592, -0.3010794489170866, 2.375386241376686, 0.39676442311673654, -1.2083016255148442, -0.08960307423878197, 0.3356703315379674, -0.298976814312964, -1.7665651290994233, -1.092767255651449, 1.3975407829596296, 1.141874801312204, -0.9828236038024252, 3.4474956927651337, -1.0339825534946439, -0.22625665352238514, -0.5013121080507481, -1.8800871143889077, -0.8372845710288846, -1.10244612265024, -0.3821121209536119, 0.08810124426666355, -0.6071774956226643, -0.15564993281113088, 1.022293595012591, 0.9689358555384477, -2.5957409768073245, -0.42027115973485385, -0.0461425798346585, 1.9376580364864786, 1.3588702019634644, 0.3263146874682954, 1.581370038498723, 0.7910848434880573, -2.460697055036825, 0.6447035193294413, -0.24547841579497692, -0.07769395725697413, -1.1061309579704512, 0.49835521087482404, 0.28668491714510613, -1.2325612333443072, -0.6448462257352514, 0.6067798642374093, -0.8354277456713564, -0.130333521585836, -0.9088480640459227, 1.3638181337811686, 1.3142064281473396, 0.2849199073658345, 0.592125761379138, 0.5012574226736635, 0.5318564513368325, -1.2555614763203795, -0.2193018045216694, -0.8128170056509231, 0.2508398220742027, -1.892210580413274, -1.2602630407674884, 0.0009566262638368953, 0.8443361157461801, 1.0745886240915608, 0.8806279132304711, 1.3774160713468802, -0.19850197254674795, 1.2234601520436406, 0.5881989810255106, -0.4965304502203755, -0.9766777894153844, -0.21817961411038742, 1.419239328081392, -1.6703766117775312, 0.41191565756029835, 0.5099444391903665, -1.4309207608869086, -0.015024811232282593, 1.9220050485455538, 0.8175509219535936, 0.08115843671613096, 0.00670673012745847, 0.4372668690607546, 0.17009166575934964, 0.9482553703319297, -0.2773813968150354, -1.6498126033020835, 0.11117370308283465, 2.0511476913856406, 0.4372657274738833, -0.7946302231549325, 0.07669974844112153, 1.260664230909938, -1.5213565790072734, -0.26684094546500337, -1.781805734225342, 1.3731126700876528, -0.5693906145441722, -0.7467107303747241, 0.30046251963870085, 0.5421086409579616, 0.8194948647249047, 0.553142239737994, 2.485647389509429, 2.047571834848655, 1.0547915487532276, -0.8404839317066655, -0.836914713668649, 1.2478277285342685, -0.9398734941624577, 1.3858886068530871, 0.6584361564011335, -0.32532143347778014, 0.1671936246779602, 0.6090123241409612, -1.0924306659919145, 0.8248616990025323, 0.40239815358228387, -1.3215398823928493, -0.3695707657351879, -0.4677903230735593, -1.4563234165763541, 0.2465317823851017, -1.507844840921064, -0.11213116060164738, 0.8182082579799453, 0.2257379259786798, 0.5232663992732692, 0.3677500720568211, 0.0890331713821522, 1.0175234856545008, -0.5316019239972422, 0.008273393570788342, -0.5142557769956214, 1.3236020557952743, 1.1683267443828442, -1.326046400550978, -0.877558359633544, -1.2811663730152782, -0.007179640854720999, -0.1558221865207312, 0.5717555419933172, 1.400174656314241, 0.5405546279191125, -0.6066094336440838, 0.3074008062852501, -0.7266655582548127, 1.0200651816876847, -0.9169096044014198, -0.005352229277594311, 0.9229483990313, -0.5050805874169455, -0.7830498896948143, -1.201873278369289, 0.6032417486934556, -1.1946344297396054, 0.2240479886640547, -1.332033491041734, 0.3621050864222061, -0.7508280591488423, -0.6990041625840486, -0.3589843137912688, -1.1294768284497914, 0.08522935573665827, -0.8932238012324163, 1.4598549115209354, -1.4447712869600169, 1.161056885783272, -1.3625301397704557, -0.035297958124361, -0.33008069949103136, 0.5239932036193977, -0.9535748485371196, -1.4160404491189216, -1.2653282493985, 0.9528088241690057, 1.8950184827415795, 0.536660694982275, 1.0358009972485072, 0.33684764607473267, -0.03807672876925321, -1.023646734531218, 0.40397027552612724, -1.3087493812000008, 0.48272717104738166, -0.9539524744639091, 0.6839967409804478, 0.6443820369253852, 0.31683998325190177, -0.13585198410986143, -0.46836797703096, -1.1069337244040973, 1.2699629292559889, -0.7617963846193975, 1.4541756482189356, 1.4282755674874026, -0.1861092734243662, -1.6655794153163535, -0.9018831271999473, -1.037689638483834, 0.8498409192473517, -0.07982833124499089, -1.2088906569879048, 1.9388046452293908, -0.6512630617583657, 1.1866504013111483, -0.33869047227217647, -0.4062584258255965, -0.13047088702582313, -0.2920609026154828, -1.5721710704372442, -0.7529385991063793, -0.4409489430185798, 0.6573725024011854, 0.9779867268215527, -1.1338038691333352, -0.03676275814229943, -1.3700180959347181, 0.4980096428874349, -1.8841567320644628, -0.36671037716186844, -0.33102623775307954, 0.44082885192374405, 1.613113523011985, 0.23245328885846092, -1.936031194784913, -0.6863173758499714, -1.403980406004003, 0.5048363560164861, 0.2836464927146788, -0.10581740020796536, -0.6422446354858306, 0.03847861193968079, -1.6367117659354635, 0.7105602568018861, 1.9161683660322844, 1.1010957888549868, -0.12160407112688297, 1.4925214870472732, 0.3264326568315127, 0.1233803144398878, 0.046322463990348964, 0.7961360452240189, 0.2452347016349107, -0.48943896240142126, -0.9290930154151816, 1.3257611388643007, -1.2121987546438076, -0.4675832048242394, -1.408413616302921, 1.681812863852406, -1.4107609501193221, 0.9608162613161545, 1.3382523033803306, -1.142429334719264, 0.3068199062637968, -1.373229118623735, 0.7359602107842439, -0.08027367417510534, 0.5703393562713633, 0.8224893358060019, -1.2675332626508233, 0.09157528929486593, -0.6239271870188987, -1.333424030987914, 1.542228511553581, -0.8290994826950859, 1.6002179297200447, -0.7290687216113811, 0.9827490621042851, -1.016128789591686, 1.1178052087911723, -0.11201905921608454, 1.545158085939111, -1.201782983516858, 0.2987368142749938, -0.013881908859372263, -1.4662280689414051, 1.195364231090116, -1.0207840815730405, 0.6038293322962383, 0.6920833223124919, 0.48928276635174567, -0.20719681719458505, 1.0528037049861176, 1.340110048415235, 1.0572972351619618, -0.7972871839181324, -1.445715944658206, 0.249550573252273, 1.7425897413780096, -0.6146482994249365, 0.3414417673370007, 0.5211686346384714, -0.4720635039991762, -1.6866627876101177, -0.41908164540912235, 0.9350268770492959, 0.2628866171785153, -1.4272699417780046, -1.5176019318982594, -0.5045820104317634, 2.3669803699198972, 0.04468306472425897, -0.8506586820583893, 0.5357032817625664, -0.7504240210817026, 1.2244644861038698, 0.32030678738297486, 1.9346717432885199, 1.8091618397708604, 0.7016264290342246, -0.7543230939085693, 0.3718249353749545, -0.39747629739679413, 0.1755020796040547, 1.7617259402782062, -0.6484224375517338, 0.5942375319267897, 0.5412303781268201, 1.3148250600931315, -0.4591000552529005, -0.5181152695539641, 1.0888867653411374, -0.4218577232399481, -0.03314875902158776, -0.45525424561822153, 0.6620103621803525, -0.4828556213675988, 1.0197136724339582, 0.8136601745512939, -1.7574981376543641, 0.5152733116422641, 1.7275770946339244, -0.6596098468939191, 0.8691431128119826, -0.5019581461983088, 0.1369233115111857, 1.2132056318163653, -0.07648699416462335, 1.6772557940687784, 0.926974844165011, -0.039740256852109336, -1.6422093576684975, 1.472165824690626, -0.5312294981487146, 0.5660281554370863, 0.9002601404675714, -0.5193311511183563, -1.4261107490492029, 0.7193849792885922, -0.8161020873770328, 1.3926227501034782, -0.10765873957312352, -1.750080716659231, -1.2315289364819961, 1.5271676147265836, -1.3692385165909204, -1.2665210758120529, 0.5835547255432384, 1.5267142534760538, 0.4735793365879849, 0.2713271999760396, 0.8293178842537923, -0.3678275742008581, -0.5196865213591367, 1.2467715006725173, 0.36881071704357293, -0.013146295073653665, -0.3910850558251935, -0.4717852822314755, 1.058925836769312, 1.2611027845782836, -1.2125355152651964, -1.6680040155978901, 0.11644777354668061, -0.6098586620173682, 1.4767717300094048, 0.0954623781181105, 1.107261067809891, 0.5332249726108867, 2.027865524163214, 0.5776330966220249, -0.1584788333976485, 0.6221202243471828, 0.822805243465044, 1.875280493218953, 1.0643032788775597, -0.0032231663149655688, -0.783876097094789, -1.0049561715754778, -0.09434442862031094, 1.159075456642561, -1.7015354910808584, 0.43626266846062023, 0.4657480592549505, -2.3595114280610967, 0.432788235995093, 1.1432761980922856, -1.2312064629781365, 0.47490063643075286, -0.28730531011989763, -0.26041490757239677, -2.1502487223253324, 2.002776378754567, -0.6572916671523635, -0.6468504633660788, 0.22368175843112467, -0.7056222632601199, -0.10902101632296987, -0.12191577116310535, 0.2333724929750161, 1.5718955134357182, -0.5232145959705184, 0.6697172441294476, -0.4925971310656774, -1.1446072903750102, 0.8349991429830456, 1.0200201403878384, -0.8977027776830132, 0.18977908394646267, 1.4964190701230657, -2.6540996410436106, 0.32799163478787424, -0.8074216676664461, 2.066401169980402, 2.509721984172877, -1.2264705966483058, -0.25822269433889045, -0.4480735859571536, 1.041820098630538, -0.693824507410013, 0.8791204277882693, 0.7037151344594822, -1.9977526467992452, 0.2157094268939756, -0.8146138503383921, -0.5977126284420752, 0.19219664371439094, -0.9859202287793376, -2.3682295377243645, -1.2913932275907674, 0.22696508074722685, 1.6407744690151982, 0.0480691978209954, -0.9966208197342079, 1.11889000511201, 0.055360709785356864, 2.161209836417307, -1.3704452982024895, 0.1620107139280786, 1.6935580592037394, -1.81141037991999, 0.4953254858094202, -0.6200845763863535, -0.4030152273570181, 1.9463103138523798, -0.48212576394146445, 1.6089090600319198, -1.1366638959357926, -1.6052774277617399, -0.47813886421591933, -0.8707692499175943, -0.20229126984501603, 0.17173503092906178, 1.1047377340309825, 0.5373785703708618, -1.5876796588068274, -1.1350981303051662, -0.6537352511089607, -0.1835463801348843, 0.7426490550608933, -0.0467107787449815, 1.248118109915001, 1.5524890878524804, -2.0084680514191806, -0.8159713739539352, -2.2848088931420065, -2.372309233730456, 2.2419857626757587, -0.3816077510920729, 0.7108618513078415, 0.09216683237316162, -0.42433779835516944, -0.06629069340678465, 1.2462956506064462, 0.11891915476573794, -0.8074432428697494, 1.0942537068290124, -0.33085780821604055, -1.1030272605184115, -0.04597990324972495, -1.461390865704153, -0.6649026362109189, 0.17729372155344567, 0.7571894944422922, 0.17210568890449163, 0.42634767130989204, -0.21152758583251302, 0.8842025248865851, 0.707894179465638, 1.181293809817535, -0.5576196967532386, -0.39767440147104705, 0.6261136824601904, 0.09416680314491302, -0.9432999224955897, -0.4798733122332927, 0.4698413593912798, -0.5301112335696907, -0.6225115798235682, -0.010179517498452952, -2.4149736340373655, 1.1241415524841798, -0.7384881145759171, 1.9364675418998223, -0.959887551414178, 0.28676342719419945, 1.733477852496386, 0.47070117017904045, -0.8415052898911937, 1.48342039099686, 0.1593815740133984, -1.0466970244656812, 0.35428426550521314, -0.8714460344191897, -1.772284863316179, 0.8553434412271401, 0.6431899649395725, 2.063848597546665, 1.2107520352104826, 2.068182515581034, -0.949826787922004, 1.55283475817559, 0.18702699770560685, -0.3142644472236707, 0.18807094004824762, 0.20872088585274678, 1.4946073381353722, -0.7270727909976298, -1.4616528319169775, 0.8902512659612491, 0.8397967248644236, -0.8310381295604786, -0.8630891545947001, 0.29222682765828795, 1.4445890756559074, -1.408345197598874, 0.7729936640614463, -0.5556592512747162, 1.0996078153848807, 1.4534847934773354, -0.8589893343576649, 1.0662489588346322, -0.8131357663444699, 1.8906549668204278, -0.221189396941947, -1.0066499489098275, 0.14833291807982577, -1.6944446869650207, 1.632367328013707, 0.4020635808682617, -1.869102265647399, 0.7511051409587467, 1.42836604641047, -0.6689545864836354, 0.7132732615745503, -0.037356754428425336, -1.4955905073070523, 0.6229077094186778, 0.3002815391057095, 0.40063712375861044, 0.7079213520824291, 0.39150882760380246, -0.665277265086938, -1.4631874840764194, 1.5154278721952714, -0.39079861469985133, -0.5171161188288925, 0.47240320094667826, -0.5680617901151106, -1.0849457635502189, 0.4598612881320188, 3.1976163385397074, 1.0060936340045976, -1.4829678245607811, 0.9298775421247323, -2.348820269680322, 1.4875415958593063, -0.3178590722956541, 0.1356924010752182, 0.21621700648737333, -0.23872149766619224, -0.38611367554412396, 0.7079229883060726, -0.2936924251847691, 0.17216377194136315, -0.6251678518688363, -0.6190596403307621, 1.0103278730986882, -0.42216692790377014, -0.6083934186789268, 0.48484746551641333, 1.0506326108080541, 0.18574134153247543, 1.674110486119981, 1.6908321897138245, 1.584396674715407, -0.6716403178792367, -2.1165124622742204, -0.7575386400758898, 0.42207025179163454, 0.34281900309511515, -0.17330930073486658, -0.5185221739427627, -0.6520860152162103, 0.02880708722030125, -0.7236136907093336, -0.7012590434919239, 0.9421047560257181, -0.6079997861419684, 0.30874446046730514, -0.5762449399777807, -0.41610271882814304, 0.15862039487955654, -0.1452834786642244, 0.03226987415993391, 0.84229162019877, -0.6933696474669173, 0.33663422390191694, -1.2150580083595408, 1.0076307089633902, 2.70409271869755, 0.30995661293173044, 0.6247436756056247, 0.08195954117181646, -1.4719055966627554, 0.803042507106028, 1.3021608863661167, 0.43434043468018996, 0.7974627211294567, -0.3682221393582528, -0.06403923371006702, 0.4170350364772233, 0.9541157159307389, 0.3239859963424095, -0.2949519680069482, 0.2619100970459515, -1.6511900176435539, 0.24934133729286487, -0.4154891414125775, 0.7849763826831557, -0.7841888048100197, -1.0286045457899349, 0.6553645303577179, 0.2653791661210467, -0.028721712652565425, -0.5496375596740606, -1.3471754095333917, -1.388799522496814, 0.29599312680859097, 2.140988791886186, -1.7758304801107512, -0.8660143027878295, -0.13855549523146243, 0.7423053567212846, 0.44908973109546657, 0.5684322570795058, 0.7170502881582332, -0.972793451864786, 1.0213495345802792, 0.3588891143774135, 1.4677584224643059, -1.8483066026640207, -1.0267595764809776, 0.8461892348632205, -1.1555368611628043, 0.6290502769928877, 0.6938132809945982, -0.6257637502682993, 0.07541789139329211, -0.2366005418237537, -0.35370856166896436, -0.807010114883981, 0.2605821179006874, 0.2423808558861513, -0.20913684813592306, 1.445612205825981, -0.16339120814322525, -0.28685192204171245, 1.6172348405102026, -0.24636947592105027, 1.6507389021911445, -0.9150073073042401, -1.4463083092451903, 1.8450467799321841, 1.6902670347280917, -1.8878093325127658, -0.28001777607518696, 2.0152721910595703, -0.3554080437826893, 0.3410600781005436, 0.3080846247560111, 0.4956327203352371, 0.23813604752289289, -2.862730990973833, 0.12978190732109626, -1.5902014047218211, 1.12682412380246, -1.5041496090466209, -0.10651038985747713, -1.335463053243616, 1.4022116059874739, -0.18269475995297718, -1.3404214162908434, -0.2438165410162293, 2.336027669010424, -0.8025341000321401, -0.07983117172640133, 0.9264513733160266, -1.4369204429877465, 0.658716342473419, -0.7939169687464911, -0.408484607372628, 1.081321363447789, -0.8278147672247551, 1.508807177607114, 0.5697618899554041, -0.5433190954101608, -0.34444959772498385, 1.4917081663181815, -1.6364404568511535, 1.088677730777631, -0.07743011620298457, 0.12679064943416948, -0.8422775912109417, 0.5204410421666292, 0.07816241030036447, -0.743203277087611, -0.2490679239134021, 0.296537366216279, -0.5802577510870809, -0.9727316982881665, -0.35347806043290736, -0.8964204184288705, 0.3118694011837782, 0.4272160752827559, -1.119951155966275, 0.8907214317482947, -0.6475131446929849, -0.8840313111682832, -0.7344446459241352, 0.23897405779048442, 1.5813119435145027, 0.571609333114801, 0.5054648516804614, -1.8867586637765072, -0.46210018982909373, 0.9548065220526738, -0.4770321781666495, 0.4675422030146951, -0.4463001426607724, -0.268935060413408, -0.4021684274370984, 2.1224401502693415, -0.5308353724645087, 0.2305268915721791, 0.1608750017124351, -0.900197705620758, 0.3127318821569574, 2.4681068345281907, -0.8490049971049308, 0.43895749888939467, 0.5864069300955381, 1.478184862839466, 0.6057649340496221, 0.866511884032407, 0.3839558739092927, 0.09528931157394888, -0.4023438236960017, -0.4953367269783747, -0.9411870219959466, 0.1449619784129578, -1.1659336494666324, -0.7043483767241477, 1.2177044932260268, -0.8968784595700237, -2.0180274699762313, 0.5569746847793453, 0.38572633069031625, -0.24109338697797905, 0.4264092604031469, -0.9226064296533822, -0.9777483292652849, -1.8614061954392773, -0.07181480501491022, -0.33916355744140897, -0.4913319447167086, 0.7409940265311785, 0.8195938255125932, 1.8760662842613385, -0.08022928270577098, -0.3617902098106558, 0.8773618510991119, -0.3026417513931259, 1.0746072114312424, 0.8949816226916981, -0.6064010457787304, 0.6104271933326174, -0.29251836991064384, -1.235928055595834, 1.1821055005631875, -0.2897775819027704, 0.6479427567431872, -1.7256511687931952, 0.2379834287461269, -0.6421838621896824, -0.3313666238103324, 0.11015187322020059, -1.1738282480311948, -0.6801063289945823, 1.0727263376369174, -0.12789818738063033, 1.1781691723419236, -0.7686061607983937, -0.6393035105594692, 0.9243691012328462, -0.7504431079196243, 0.8671446299467845, -0.698898758742007, -1.4195690799131522, 0.21204181061562222, 0.4516990863796165, -0.5488202376298091, 1.1769716081503954, -0.47339514182184983, -0.6706243964684786, -0.9391275890746287, -1.66916461604128, -0.32069248128125416, -0.9339415936059193, 1.6891904534141162, 0.448704117525186, -0.6576455996483718, -0.8787818682467556, 1.7783275330439052, 0.9849951430194023, -0.948815962845082, 0.04360439333359939, 1.1754643008394154, 0.4176607904866504, -0.032791860424978336, 1.6637836123504004, -0.6318610716818912, 0.4631965911323548, 0.7240844437060513, 0.42507353110252416, 2.223789705043405, -0.624587572177733, -1.3259578694687586, 1.821890903560027, 0.18282418791198085, 1.0718527529100068, -1.390080439023078, -0.7032982984900227, 0.606806535748979, 0.9807379610674246, -1.301799608995058, -1.2210833218836539, 0.8485594404128306, 0.9129734868959687, -1.609303253469617, -1.8896306217640972, -1.2745280345294823, -1.4589951124432525, 0.17397451011234072, -0.09849861993514802, 0.5213927711113006, 0.4464567604000436, 1.7658010428921032, -0.17334884721929977, -1.630863443675375, 0.10883356045207511, 0.9209592920512764, 2.506643391838216, 0.25920697127003867, -1.000610995686859, 1.2069309607629284, -0.8420265795888455, -0.5219090322847073, 1.0528496388391924, 3.4052517316861657, 0.3939521074267198, -1.2280870462459705, 0.7021465907786252, -0.848269051241505, 1.8523087243586671, 1.8942511988856663, -0.7324609521575315, -0.7405519451390545, 0.7825799663791051, -1.0570473532938447, 1.0071272154577544, 0.008367224499531539, -0.9832761022039055, 0.4619748421824861, 0.6054527978627932, -0.8069427471635754, 0.7695845202396114, 0.7255817354960545, -2.076356254004693, -1.866170928563386, 2.4960999423984482, 1.7821255702296483, 0.3249685672047233, 1.0516193586445621, 1.6029894061563263, 0.7111190742818572, -0.7186297277267051, 0.8266707092330077, -0.8172819525228391, 0.6694591532307673, 0.3170694850496892, -0.9984287239140569, -0.6246604296669839, 2.2772797990691647, 0.7458811584103926, -0.26479485589503565, 0.8890929266772621, 2.605058213283425, -0.4494919815199539, 0.2625572138302102, -1.4742411434507334, 0.6119113473927877, 1.3070889916855144, -0.44956874651117795, -0.5715779960963441, -0.8602100327750805, 0.10606974809893534, 1.6568916173993327, 0.6885256728955403, -0.2948202171449642, 1.5696072864217565, 0.899476846965225, -1.1070943362639738, 1.8975968381884851, -1.1062908985717914, 0.09202643450386803, 0.5179032468570114, 0.19738682741687985, 0.7832918030824878, -0.4175503084970734, 0.04748961117866384, -1.1431032202175238, -0.7876280793719912, -0.1670293961990677, -1.042531579871164, 1.4250241437929307, -0.5065603208361397, -0.05190576930487508, -0.9440633915033274, 0.5697559112545517, -0.19152297948200578, 0.014168618743096923, -0.7723577262137622, 1.0555673924267797, -0.3191246615023448, 0.10177303682522976, 0.2576454260927928, 0.09993013315995518, 2.4408592434196965, -0.1674045631751715, -2.5321239122945287, 0.5150701229891861, 0.8728012372431501, 0.1605968107424527, -0.13722954472953605, -0.13443581273542884, 0.24838805492190696, 0.9494869845586946, -0.8053048546223888, -0.4416437044439307, -0.5932230289976798, -2.0643157683856, -0.7809729727827792, 0.28847229101563315, 1.2875393651128213, 0.030979117600469074, -0.16633856709516748, 1.5324980852375782, -0.6468105502000671, 0.0373559919191076, 0.769892531358705, 0.42397577027479655, -0.139645087546484, -0.9427058228766325, -0.14560303293072532, 0.15531221334147638, 0.7867393096524915, -0.5932212618722055, 0.4862407608854612, -0.07780553709972224, 1.0490144034143574, -2.161361822163266, -0.2791053970836441, 0.2634627733105601, -1.5107411614291475, -0.5446415556288037, -1.2216533790784645, 1.497988454976838, -1.1092367045073637, -1.618664478117834, 0.9157906679850603, -0.2176025539922073, -1.8489698667637202, 0.3129035109422391, -1.5506214471694328, 0.23996231659805162, 0.43382470243213683, -1.2975465623015716, 0.3447086045230242, -0.5029629441562755, -1.0515292011570208, 0.4342286760696506, -0.13944564531024706, -0.3016669085440337, 0.2091053252025545, -0.2220062149826033, 2.2529183253773697, 0.09380606672705916, -1.3762881219090572, -1.0798033214501017, -0.030459679752091188, 1.0462656041957057, -0.5166066202685516, 1.099907646476609, -0.44810406970440003, -0.11226405829821795, 0.03079777593049583, -0.5730941391354524, -1.5304535066575236, -1.6366657813941712, -0.3672873484804794, 0.995515961126187, 0.09560804918091349, 0.367469145902725, 0.1649134830430658, 1.9434979202863867, 1.6446573868197591, 0.11229000519845835, 0.1176439522089831, -0.08402038714892086, 0.7274091035559674, -0.1815847476714992, -0.869284801742413, -0.8618126688825368, -0.9255303897325509, 0.675291066744399, -0.45590558967109956, -1.3881643437611735, 0.046983698579071434, -2.2593684559557246, -1.0714842437075964, -0.7980109810319539, 0.9376060820449048, 1.5088601684612821, 1.1401676515714214, -0.10893182605495363, -0.6793666542903476, 1.9224975768533579, -1.919045525488347, 0.5940059593484025, -0.07491402130843892, -1.2833894894614397, -0.012251254567757242, 1.0424262856623745, -1.4615127877407137, 1.5618547104206084, 1.3870856731187504, 0.6794906080144418, 0.6597456051505508, 1.1809752738189252, 0.6289022860101765, -0.6311541134061391, 1.2430525196600999, -0.1258884709654688, 0.03676529016321239, -0.15638601277079034, -1.9962862794970841, -1.0631859015069938, 0.3954333505187698, 1.305130180708799, -0.6198793866416389, -0.3671423775673435, -0.05091349499804217, 0.19572546628132184, 0.481387386454465, 0.18766811525805024, 0.4204577595863723, 0.31278547680895696, 2.260226631338183, -0.44163717594473184, 1.7281834262032811, 1.6610908786986758, -1.2346970008334854, 1.7791989418010552, -0.6921188907852247, 0.41412723052308587, 0.013963859727831377, 1.2495146354884694, 0.9217529559230451, -0.6408643293198005, -0.3656165913939135, 1.6408969472159909, 0.46769590500613, 1.2942189441837226, -2.4715771243751226, 0.4617271801485095, -1.3054611274711465, -0.6148341510806443, 0.5230236705061742, 0.1948581130574186, -0.8314871492327359, -0.23483236113230144, -1.3665590045394855, -0.14329578244546745, -1.807462368498706, 0.23801683948070443, -0.28981493648460016, -1.4362173161200273, 1.5602518232258726, 0.08045279279873387, 1.249783890153001, 0.026976636733625492, -0.39284231136024667, -0.20541102682291998, 0.39581632483835966, -0.4271835840370606, 0.8371704017648944, 0.2635251007081735, -0.7014811604960124, 0.0874164574098187, -0.6090513936305421, 0.24235117892116984, 0.9810895192151013, 0.8051030956141957, -0.033711366761932496, -0.1405561945796084, 0.8932360765812469, -0.2781538960944018, 0.19083714569711607, 1.1680467944309245, -0.876802883170169, -2.5359882587942857, 0.15717459862331037, 0.22749278757750177, 0.04618501623459061, -0.35514842522056567, 0.8668706188030013, -0.9972708114342066, -1.9786433296694181, 0.5447603805656711, -1.29987773563286, 0.24422468441969067, -0.8780654507613918, -0.1375102757192428, 2.362709945312936, -0.5102994863283247, -2.266949913807307, 0.47287943204761507, -0.4958325728592973, 1.6089495844965989, -0.4037770686515219, 0.9353787074591674, -2.113107054187719, 1.6432896343445524, 0.6023089914246612, 0.6625981775877482, -1.1477561641710432, 1.5082843130642087, 1.2879637708344551, 0.9632684685006433, 0.276232984051142, 1.3144782369860601, 1.3209816351528552, 0.053796140071209864, -0.4016237646146306, 1.0207985074811297, 1.471863012837933, 0.8696374882353123, 1.2014866344567057, -1.8078078993421411, 1.0601815230005722, 0.2828495091475873, -0.1316931030152692, 1.9409424148662304, 0.4796806532708648, 0.30952752417150853, 0.642261212971914, 1.2972810373469248, -0.5710516304874607, 1.296428671679604, 0.1882536400549766, 0.12024192413580576, 0.7482144125451611, -0.18022449922123449, 0.5193597474251914, -0.00015134736402941756, 1.2060122914372473, 0.400987603269216, 0.5805204623048469, -1.052764847449791, -1.0899041626739954, -0.26209920904526157, -0.45158221578290686, 0.23523486252012651, -0.45909954643471435, 1.0391700460549405, -1.1768146617436632, 0.6791469709199983, 1.011174817648215, 0.411199894209508, -0.7152198360224954, -1.1980320139463696, 0.4839032883340431, -1.5745057434452947, -0.41956356832710956, 0.9839964884211916, 0.015979923325116736, 0.2762049181371265, 0.6098483704805613, 0.4862291698694014, -0.4624922500096108, 0.2846677372677902, 1.367317839020472, -0.9474871099590387, -1.756106996546998, 0.2988197956163671, 1.495739110209002, 0.9277333393877758, -0.5643132881556219, -0.1558226529617167, -0.4888512541791814, 0.3410030049413046, 0.8125696535679003, -0.14506424114808303, -0.5563759421336263, -1.413259141058041, 0.4721963640474325, -1.336800515204708, 0.15802207902328172, 0.7713401976605815, -0.8451617487867245, 0.34178117698250476, 0.6229076512220945, 1.6110932188650129, -0.7181795974169856, 0.009266781617777662, -0.5588298639233481, -0.1767614344743045, -0.9226697694236917, 0.7076376663118469, -1.5566853652081156, -0.8619329742338163, 2.051139469309425, 1.0147636236527358, 0.4182684075319435, 1.8816350118726597, -0.45231597591557254, -2.177291625468745, 0.2818036067134789, 0.3528969484018996, 0.5094505048346659, 0.9557302887303304, -0.6754668943387816, -0.02729241829228328, -0.10185537856378798, -0.4591265210119423, 1.430262537673349, 0.2931013470203736, -0.42349373411850877, 1.2895062553420336, -1.254123931164029, 0.007274426609199737, -0.6746114093338123, 0.9946171745115864, 0.2864085373632313, -1.2280764417902754, -0.52661829084419, 1.5827795236366957, 0.15024675730990028, -0.4248525421861309, -0.5691386244762248, -1.2497033166837888, 0.7243884070840325, -0.8880262098400197, 0.022565602731663952, 2.813014693165735, 0.2524261198492061, -0.5815627560037311, 0.065952148847621, -1.5839049003439432, -0.32991814907198524, 1.3189945049352763, -0.9633738886349973, -0.7205611597593764, 0.29087939445256583, 0.0057889375667351094, 0.02150375939915354, 0.5103962896847007, -0.7791629303501022, -0.1566257320081451, -0.12533254753908293, 0.3677730246474584, 0.6808297404105077, -0.006814522630420675, -1.6332734431577842, -0.31084462878259445, -0.2816212687484363, 0.8306217769227588, -1.4223291833641392, -1.1328914140136568, -1.1798315543869777, 0.25880349272739006, -1.176722232598049, -0.9138103973636641, -1.4195908701604916, -0.9995107551919223, -1.82773175657593, 0.008499718134879552, -0.3447023347644645, 1.296344926519369, -0.43328033036609237, -0.6691715014457149, 0.5815463164249131, -1.351170406870033, 0.948354175015636, -1.7460166934842984, -0.394637468929365, -0.7854270758121915, -1.7802874942339497, 1.2686458890561711, 0.8564108501854661, 0.05383532865352654, 0.6253901471648027, -2.202145401537113, -0.041531422478273954, 0.29066318209770114, -0.5115801644049819, -0.2316865971443836, 0.04820236445222125, 2.043254030499081, 0.5378888526826829, -0.6502743062505872, 0.826238085727147, -0.9541804382014959, 0.6060754235439968, -0.27474418761709474, 0.8956610419016614, -1.0996407788536786, -0.257368300223374, -1.018696411251144, 0.6579800168488112, -1.7964528440425043, -0.8570639935152126, 0.42330444919804316, -1.1285000187041665, -0.25650286505666625, 0.24632151425551105, 0.24962408033917283, -1.156431660359815, -0.2432666473105903, 1.822498098193285, 0.3177090775637023, 1.3319015834176797, 0.4571443687995678, -0.15115069978271048, -0.9271093020874797, -0.4004107535270797, 0.18837621181964065, 0.2361034586065518, -0.049667590380486994, -0.7731735216366021, 1.5079696883540965, 0.2547235818307659, 1.710880865859913, 0.25423148693344516, -0.12417094682887361, 0.14355110585703812, -0.30889227644936884, -0.19518744408626176, -0.38657348236703737, 0.5747008941265317, 0.7763218624280281, -0.7932199304382765, -0.38004377705918146, 0.5546620950055203, 0.26238802318984583, -0.567803366150921, 1.2155283753301906, 1.1841352702569934, -0.36154499394302375, 0.48355518941861697, 0.028516722473608622, -0.5872424427404682, 1.3501269652114032, -0.4684289952147731, -0.3722041294537168, 0.2884795399986682, 0.06557171746910258, 0.04187102672842283, -1.2970923134475996, -0.01629195036762023, -0.9112994229878664, 2.0590829933787136, 0.39400030768000005, -0.7975908049246164, 0.24046578837235552, 1.504682832366687, -0.8911225638653535, -0.3936854489607823, -0.6384138322177773, 0.29369615979985814, -1.1026872898279598, 0.4356763930115034, -1.4259861740067266, 1.4839827513865715, 0.16538982992587942, -1.2275565773734964, -0.6469351862385775, 0.7977508692229875, 1.965560992268791, 0.8204484828263375, -0.09569261310086963, 1.0444105776920733, 0.3981939687558286, -0.17001990885000728, 0.03191303725869083, -0.22703800554331624, 1.8139801219827336, 0.918270672574204, -1.4990654058428237, 1.2013287338621885, -0.6573210575280002, -0.3475342578604577, 0.001024958794340004, -1.3091664900629916, 1.7052265295882478, 0.4253120949833701, 1.0311326194819417, -2.329708589685058, -1.5666613380497623, -0.20129982865454085, 1.4540261677025847, -0.062796460600534, -2.3750929169938804, -0.22853438210232366, -0.9911165491373074, -0.9849697798584544, 1.0908056348553017, -0.5335895092359707, 0.7114854381779321, -1.2006864703832458, -1.402537825666173, -1.6107945297750212, -0.06522295552167409, -0.22244804258316303, -0.6353277757640107, 1.1342357318491285, 1.1802856827413442, 0.7358095889904793, 0.4322781449509412, 0.1993641699969819, 0.04402596162369398, -0.618389217305553, -0.19855173166745999, -0.5969933305425132, 1.2023959036495757, 0.10533466463098612, -1.4071046643902017, -0.30217127261876753, -0.04403547820029734, -0.2335959164195668, -1.1388382692559194, 0.7969342297703721, 0.0025006347911576314, 0.4618061956689532, 0.9316220945417517, -0.586857161879394, -0.8038099773962392, -0.561632309015, -0.7319527488671081, -2.215500214281302, 1.2095052233589756, -0.6324676669003331, 1.8213621585713746, -0.16201666001698542, 0.9771306394522535, 0.08884650272073365, 0.17119383734576185, -0.052205598859868016, 0.6308204756962924, 1.2742399221121468, -0.8729416492214658, -0.41451142025139015, 1.0896473253676273, -0.11531924092553854, -1.0449722114717626, -1.3905060397760676, 0.01745826015650065, -1.1196034509026367, 0.16835781469295008, -1.1337994252104073, 0.6707102828626799, -0.1611008305495774, 1.8891773441773552, 0.22194994994725567, -0.8221389943598081, 0.14773366666584706, 0.7482169422869621, 0.8634619143586166, -0.28955079825767266, 0.7168358822007905, -2.0710700397722674, -0.5577499923860028, 1.3594786178950642, -0.06290120845238856, -0.6203795676764393, 0.37363430210542137, -0.6009801257039329, 1.685628214162959, -2.036958121665058, -2.2425671656367667, -1.9918630409006053, -1.376958147267138, -1.8638660542434666, -0.9750244314786808, 0.9080815115907477, 0.018142080648009342, -0.9320767794783268, 0.26546536698365886, -0.7622509288960355, -1.185039046008763, 0.3997987346703504, -0.8390830626369119, 0.7664612539005661, 1.1452390705220412, -0.44118709528048106, 0.26214721724628937, -0.4951545553209257, -0.11879885987832625, 1.3282328751747563, 0.06968815002457066, -1.1182821619345513, 0.23652079790675906, 0.3692795793157511, -1.140728747827738, 0.5263061454716625, -0.5207546968661813, -1.503533271861299, 1.685912359362119, 0.034636130743337525, -0.48051165567394033, 1.0460524144567587, -1.0839349618672527, -2.1211644723131724, -1.0311758922985133, -1.2021446452680054, 0.06983434930473358, -1.5815367050307532, 1.0876986546066656, 2.0186122729964926, 1.811073181558942, 2.061655680618017, 0.8146717603062831, -1.5968498453112046, -2.0662599115172653, -0.5461790439353942, -1.293954740300037, -0.04669787176283761, 0.23146865620783758, -0.588038234461568, 0.5933124208465305, -1.0163085846469417, 0.2521752390452931, -1.2106468003843902, 1.418999037385018, 1.1108278459257963, -1.2434580142633445, -0.5105267831106245, 1.962828854249686, -1.3742391623665489, 0.36301946174407, 1.9887587169725671, -0.11568422609670699, -0.642928398294438, -0.3803110761017083, 1.4124073508805255, 0.29869224683807033, 2.0608887843113273, -1.357435592557576, -0.04818489310611712, 0.9811928870760606, -0.40967432838228596, -0.3030480871350583, 0.9136149401717509, -1.0208925536710525, -0.3505675095839659, -1.71190823631273, 0.20144681297018477, -0.7142725656031783, 0.10941276154357217, -0.010518057969719493, 0.7986018616075307, 0.4091757607417071, 1.3254764619646495, 0.37900863212459757, 0.2801496864889041, -0.4903324954119249, 1.5611921907449, 0.8801581363850509, 0.23899617476391827, 0.4941237199528515, -0.19580489922245364, 3.06700252986585, 2.075939890459903, -1.0531656839887626, -0.5746240339508544, -1.2509817722769654, -0.02930485583633999, 0.4955890468754583, -0.18287439285074464, 0.4428019418512945, -0.7067595339381431, -0.5880758813860446, 1.1741037427266254, -2.2845558148071, -0.20091142427273523, -0.9327486743061679, 0.05419468096069937, 0.5696294165103171, 0.9711793150927074, 1.5638669636681488, -1.399980051448174, 1.6694377251663244, -0.5244820252135467, -1.257281067913892, 0.2808453440838143, 0.48904471670322064, 0.6563624003164797, -2.403734256558076, 1.8072200656396853, 0.7479993507037666, 0.8957599457510734, -1.1333475754839513, 0.6052811339871745, -0.4713654733277363, -0.7018354826915972, -0.14295613102166807, -0.854329570376376, 2.600781602195285, 0.15947531968114928, -1.9492123387745222, 0.4025575201110334, 0.5377569832746467, 0.8230410704104014, 0.38678827937826166, 1.1036337112977639, 0.3934547673395094, 0.30962342705126583, 1.139829687497562, -0.6649904581148862, -1.5139589626882188, 0.5785053189296201, -0.6976263977299514, -0.48521233846001877, -0.9001322196203593, -1.660622472181582, -2.2786897073448547, -0.6396523522765016, 0.42857993052128573, -0.47159666033630393, 0.09912656547054303, -0.8978325685014887, 0.63667062531427, -0.9285968325105913, -0.41245780364313256, 0.191616368806377, 0.6617774942176655, 1.3566617676123918, 0.02766324341023624, -1.0349560837804677, 0.9570579186595424, -0.13078780011810998, -0.7995854873426, 0.7151367410023329, -0.12167714338407565, 1.6209549425055911, 0.37634955414789306, -0.6846815563905236, -0.13340769738466304, 1.62999490749593, 0.24590379716684088, 2.080737900190375, 0.4807972440746681, 1.9233090609717092, -0.7457053375145688, 1.2931674090867675, -0.5389819127967479, 1.3378716219526687, 0.46191592051764446, -0.12685025114948897, -0.564392245951514, 0.054901669351109676, 0.9390772175487241, -0.2832080542168339, -0.2454859351558673, -1.8832700802531435, -0.16505100921916624, -0.6746837003668393, -0.1357900352713401, -0.2041348043523018, -0.37391290726473403, -0.4402500408509159, -1.2290888874925296, -0.13562273551657536, -1.6500691440373887, 0.46665062174560024, -0.24566106658181208, -0.797744380603796, 0.055547484850162934, -1.7195390885648585, -0.23801758053719915, -1.3385900681264526, 1.5281883065641328, -0.7190676510974615, -0.123355719896304, 0.7764022341446827, -0.30040150524704784, -0.3686167969737519, 0.0943659621832766, -0.3974661297032506, -0.6247729926926385, -1.3907256888978008, 0.3787327798855857, -0.1261918572820217, 0.333666129561352, -0.2268078626149827, 0.35899627766440534, 0.4003040718066842, 0.04939169628599765, 1.3181095248614239, -1.0040453137475622, 1.0270565232586033, -0.10527902120387268, 1.0184000283100978, 0.37032567852749, -1.1038727471781569, 2.06240141354978, 0.0724635819839709, -0.6749483178493708, 1.3752140381174898, -0.18527094825241655, -0.49771622437764096, -1.5563678592094914, 0.30641413633727077, 0.6888572155488026, -0.7813997319688913, -0.3334732608283706, 1.2077222840020747, -0.6696185160915793, -1.7441216997483413, -0.1443175790084589, 1.2530385228003316, 0.48953706269055897, -1.1454774810030333, -0.10072099150740713, -1.4690725419140442, 0.22773646275302892, 2.1495481922715567, -1.9763318246520143, 0.3734138241025368, 0.3678799166519874, 0.24199407601003217, -0.8317998284783682, -0.6175366203935166, -1.5435990936321167, 0.15257075985667826, 0.24569789929243, 0.2973109282823203, -1.0464692699857279, 1.4335012256250086, 0.7760340274462584, 0.030779877800647056, 0.13317012902523476, -0.6096349652250187, 1.8769504574256326, 1.8165778911592796, -2.029543137642918, -0.7314038673207472, 0.16788051959333397, -1.287512490286816, -0.17978414420698238, 0.6413441803591936, -0.03816736449793848, 0.14195508782466876, -1.3077696693750356, -0.2788578604231624, -0.7927822730097527, 0.033625917152435035, 0.22077326511399206, -0.5309962861055292, -0.14874114920579462, -2.1561599667291262, 0.21857950385145597, -0.39674562813596553, -0.6172994137123726, 0.7237763615783379, -0.6628173764404989, -0.09955687084553429, 0.7661708667508003, 2.050182109550436, -1.1343231763411903, -0.394150602661191, -0.4005731600700831, -0.6133729043121271, -0.006937209118528061, 0.8746192365726885, 0.9627065829455164, -0.004195755687396656, -1.431856899763485, 1.1723324732423348, -0.7907307751741902, -1.2383233071901971, 0.4450622193871014, 0.6135856643531975, 0.41087999419331056, -0.9106010889982076, 1.537140159071271, 1.203007531467209, 0.4522478618181492, 0.06901440689355592, 0.5616178375297155, -0.913304278073554, -0.617052799856045, 0.8513556242527552, 1.6492263827929101, 0.28736119321050707, 0.143060129811001, 0.13159474089261292, -0.556050658038526, -0.6819127080659984, 0.2854925491407574, -0.17685951799635244, -1.5861004634732518, 0.7398075993729516, -0.13718006475583142, -1.2360195428922787, -1.800475631340105, -0.6653270917294025, -0.24529552485016695, -0.3070462119648475, 0.5209731324914566, 0.8294618413486863, -0.17019749451831728, -0.23619342552685957, 0.03462283540349657, 0.2479211831622872, 0.721589399500632, 1.1742488499645927, -0.7209553934014017, -0.5677211833764197, -0.8920108887781215, -0.2951205793197307, -0.194041077024394, 0.07201516715432071, -1.7926897922269955, 0.5269357871669345, 1.0775869197853591, 0.5356448376759921, 1.6180226180054886, 0.09591731457863975, -0.3033610094512978, 0.35200443059829245, 0.6372500799705507, -0.6470129923265721, 0.4563870076575751, 0.3086697829408736, 0.15795477733282282, -0.28995254504887596, -1.3608513191181555, -0.5174181206012595, 0.15321158202821022, -1.0735391094616389, 0.9498709387195441, -1.1791274655949502, 0.3401662792087062, -1.3746370296756663, -1.820015514626756, 0.5904282098582874, -0.7640243887629617, 1.899332176169294, 1.8001612651602614, 0.11754067768731466, 0.3451387680566698, 0.4252773778706197, 1.2930499113213374, -0.13497558680801955, 0.8295099746093358, -0.06483231029486143, -0.4626305949889216, 1.7974505990090723, 0.357954244463521, -0.9446699924851863, 1.0753715521250267, 0.6468347012501044, 0.7325172508900486, -0.8235967956477911, -1.8197269407302108, -0.7527397495032649, -1.0471331516010438, 0.954992325464375, -0.6487949930861694, 0.5412489072541421, -0.9744135424772613, 1.1668079912055098, 0.5071573516626207, -1.4971922309648993, 1.6732330041304837, 0.6658466177075605, 0.004961040538083645, 0.9766610530990674, 1.217004629489626, 2.15632219900788, 0.2992554016895504, -0.19074076031070328, -0.08513462495764972, 1.4398343939227665, 0.7531587527492296, -2.434314852616728, 0.018698508958621483, 1.530666394156561, 1.4174088220386398, 0.39311606885126577, 0.8429893215764661, 0.6889143877613391, 1.7048899457191737, 0.8279914080421767, 0.3841808718708592, 0.4345613421962533, 0.9814598643661121, 1.1001489018141712, -0.5361865265613242, 0.21775129927781378, -0.5197236573250131, -0.9476378494963715, 0.8334286814456744, -1.447030660023786, 1.6027755842182616, 1.522909575863655, 1.3672741814009857, -1.6085273302015077, -0.6841212925165058, 0.8714988428569002, -0.7180711780751314, 0.5764950939705556, -0.09035661359187494, 1.0682344096280718, 0.27136338383972597, -1.093914555087802, -0.37115833509731555, -1.2339441459427007, -0.7985138795193706, -0.07775530075881103, 0.9386977073001513, 0.3186949805078729, -1.0013479121939963, 0.2068538637260416, 0.46704881675224336, 0.0930693446845866, 0.9087490791207049, -1.1095909880643675, 0.13620180501268486, -1.2318793580686687, 2.3698156234871006, -0.41043047284201517, 0.9647930068590418, 0.7035313262086113, -0.7357611817796008, -0.33944606940905453, 0.975792856064161, -0.7580109890249522, -0.9388831491865992, 0.16631539872440593, -0.9686623661641447, 0.11101021374002976, 1.2833168243970015, 2.3501189146758734, -0.7419808119512225, 3.3177770321629443, -0.378854974046106, 1.1894959769491664, 0.5170237486499323, 1.449757482527173, -0.11005429828053218, -0.7094783265215441, 0.10745076413242229, 1.6224830274878241, 0.025460594268897623, 0.6425343157670212, -0.31898415130533375, -1.0798679506403541, 0.5735256411790288, 1.3484671879831278, 1.1276215638225833, -0.7541391904025803, -0.00765546636667677, -1.4513065159005456, 0.463408611045455, 0.056782072073773386, -0.3398650955417231, -0.3278301461019186, -0.5506101111181769, -1.838129548833068, -0.6528412434007834, -0.22203922522726993, -0.11557789598708554, -1.9693756516575391, 0.10517217800088413, -1.034395434153627, -0.08008953380065702, -3.0001454304286095, -0.7355092140807842, 1.0594616327950752, -0.4189488435377704, 0.16781086931278816, -1.9669454509751187, -0.731458954443067, 0.01711080123922268, -1.0063738446337889, 1.1320693665450008, 0.31382355603718387, 1.0723003552935109, -0.48887663896467776, 0.16351892393813683, 0.6923423498891493, -1.2674896295636169, 1.1497258936055144, -0.8608042226343801, -0.9164072583967519, -1.487718346596927, 1.4350188139062847, -0.21184761253034057, 1.3710129669800468, -1.2943315365568762, -0.19362259003418086, 0.7187438609965356, -1.4536544736540666, 1.0156800590204957, 0.5854427384212253, -0.5260200198486596, -1.1553701278196844, -0.27349200057360523, -1.2338491844820385, 1.7074643949762172, 1.8501418087438086, 0.5436111298236262, 0.4744077558142584, 0.5678560114121703, -0.7181957190268707, 1.9652881178044732, -0.6639884519602309, 0.3479450777176482, -0.7279578424760957, -0.46058272586248855, -0.4390700834752314, 1.485071764115552, 1.4888034597366457, -1.9695365549171249, 0.6506253211085398, -0.2486297625885688, -0.5519419806661555, 0.1895096241785028, -0.8790965213306376, -0.6376838625799586, -0.8514356912425605, 0.44713349005542324, 0.8885460864971125, -0.984898049801574, 1.9226056756793166, 1.151756816890297, -1.3439533152505785, -1.3828305275303805, 0.9810008154794896, 0.5550625182987955, 1.9741629526950777, 0.8414467402239644, 0.9903516449069268, 0.30384787269295527, -0.5118420624618873, 0.21568313531934488, -0.1906549073376802, 0.9872047773741, 0.043447057275043346, -1.0722974377446446, 0.30840240507887645, 1.231529689961776, 1.289961254197282, -1.415052295757837, 0.3542872190261509, 0.5064578533223967, -0.7014386812841402, -0.21695269183024965, -0.8504048338756758, 1.9671268250571596, 1.0909763189822588, 1.1465910271880095, 0.9300579839066637, 0.19877285881355367, 0.4033127688590755, -0.5693078627176211, 0.2771445813826407, -0.5910526566968882, 2.277491279753263, 0.656638231269999, 0.7966594580004646, 0.5030962029782104, 1.2239112871910003, -2.135423288869684, 0.956905678821742, -0.29364649759959877, -0.5416351205869433, 0.4524513169226536, 2.1047567102187923, 1.2144059061100803, 0.15546139261435685, 2.0078238030698636, 0.6830117763416009, 0.21062683777699748, 0.3680381824722795, -1.921358153981379, 0.8720229260359057, -2.4572973110469056, -0.6789193350439231, -3.616244826516541, 0.5200969859479287, -0.8348270288277571, -1.5574761449522962, 0.6081958963575117, 0.19058848286262964, 1.0023339789202066, -0.3112079672420133, 0.44178370023062646, -0.5048076251130126, -1.3994069725233815, -0.17955195369335797, -0.06758378480990582, 1.7922435643746273, -0.6192862077789711, -1.6310903545738005, -1.1690021151149572, -1.2093145024199112, -3.09516529226863, 0.43169942287551266, 0.06218865917825329, 0.5839211556095644, -0.7134319737419914, -0.9162521618284151, -0.3378876880640738, 1.2878146580745333, -0.15439993951522968, 0.3077351479215355, -1.7206306176358126, -0.17985102389955504, 1.14519788200572, -0.8522103401341584, -0.3963647723939556, -0.7056726337225566, -0.37501801123158296, 1.4130923511612945, 0.11630436842876272, 1.185142796653237, 0.011204445485047487, -0.20302508970364014, 0.9178670073251192, 1.129883095823573, 0.42668333759774785, -0.7693262395031812, 0.5989106795317751, -2.1834227246100535, 0.5078594213457716, 0.9932110431979975, -0.017934502044962136, 0.014618718399019298, 0.43615689634540583, 2.2660916638054056, -1.4481002752982226, 0.6458685948033749, 0.45170197162057635, -0.7387052243324294, 1.3393361998974052, 0.6185085759613994, -0.36812460265029606, 0.11464668364155528, -1.791669964880979, -0.7254503276995763, -1.0220519870845493, 0.7459004970720945, -1.240093138147424, 0.36284766593900053, 1.1310636505387424, 0.21609065407695296, 0.9901982501221922, 1.4142801306207733, -0.5075874816754351, -1.8009636793346049, 2.3589933091709563, -0.043963810041906456, -0.9225837945409925, -0.6390092243100048, 0.10006348512241166, -0.9257763652451753, -0.6194490923758899, -1.0763155593061657, -2.788511038384896, 0.37967646564114543, 1.4376287260090312, -0.22804268789046647, -0.21979058106116164, -0.18220420821816138, -0.44937185484417963, 0.5740193687324415, 0.6373983419863073, 0.5856219393424119, 0.34112426931531764, -0.6084945465256884, 0.060234739722926374, 0.7847874077044223, -0.31357045824328467, -0.4526081006714111, 1.3140655172664333, -0.6237624307170951, 0.34610293084708627, -1.0050719223251598, -0.4541508223849615, 0.10854220774737425, -0.602040653782272, 1.0547536665950978, 0.7073102150037632, -0.9555005854035606, -2.0723034039377595, 0.5893216873540514, 0.1659232479155957, -0.691145872673244, 1.8692666106818923, -0.7005044755324946, 3.406168768770632, 0.6178045437029894, 0.209522404413903, 1.11020426427447, -0.935303827291181, -0.30107511733828557, 0.0005771812107460632, 0.6289350238005109, 1.4317466616428682, -1.7337209714531534, 0.33652676986636315, 1.2353463697524734, -0.5758839644664974, 0.8285985659333751, 0.018064999514862144, -0.8583929015402073, 1.640939453974592, 0.5647216927706189, 0.019320381958476556, -1.8626818101777476, 0.35623705928968014, -1.3920535728295902, -0.04025364308925709, -2.1219812182033895, 2.2492879960896084, -2.2117506504974447, -0.7015293372430998, -1.3386346301502519, 0.45434785513478976, 0.7429073598196138, -1.3842131227703087, -0.730674268674942, 1.8189971647722083, -0.4758820769224347, 0.4409253327910705, 0.9449444726231594, 0.551630007075062, 0.5399541172046803, 0.3885563045101157, 1.524994279141021, -0.7974884472315626, -0.6568938854009293, 0.27947376218479614, -0.4955153130182802, -0.08942974231790239, 1.3102764929145028, 1.5444242142322857, 0.476164533281359, -1.5496430190473407, -1.8678225332641818, -0.05437993080264503, 0.3236472053381355, -0.36746508462131555, 0.6826304187866886, 0.5736299498569932, 0.8053111300585767, 1.7107199047271453, 0.5683041332657001, 0.697952343937172, -0.6541864315768986, 0.364406640125318, 0.39958220554572854, -0.28761598269501143, 0.6201596788722094, -0.3666201942589558, -1.4101911998665215, -0.4412538914508458, -1.6829197968369678, 0.32907480828411917, -0.24881581245959397, -2.027089220978618, 0.7282873752125394, 0.4579330597709827, 1.15745181629871, 0.3236159180652725, 0.15743561049159477, -1.4532306051766954, -0.5917126528319241, 0.754060062389077, -0.3751247341071256, -0.4967717054593357, -1.1834916327999798, 1.2936501822037318, -2.0961349093879544, 1.0842624515579264, 0.004210702344412748, 0.8784821536444274, 1.6211488910349103, 0.6098625542626688, -2.162347704092384, 0.14557157851798416, 0.1956419307017713, 0.46311517202542646, 0.2606189680155636, -0.6442854252008431, 1.2224106966606128, 0.9032792502072324, -0.5921632526896037, -0.4403250314077104, 0.09900173255653308, 1.588518953960295, 1.5514984760944803, -0.1988361913928128, 0.42122454074468846, 0.09171832221402072, -0.05232317203714638, 0.5107161167447202, 0.6648048184574585, -0.5326903183397282, -0.40375562127323683, -0.9755898265306233, 1.093816318098742, 0.8299243008006667, -1.4928026705324111, -0.6150924237870229, 0.6827457566049314, -0.1250927382677157, -0.5461042938952528, -1.9785054425068482, 0.6621698769014782, 1.6911825874334077, -0.4512292838434167, 0.31893183399956626, -0.06938245071569392, -0.8685919574091027, -1.216755898801281, 0.43218338233503684, -1.482305424213906, -0.20624326083624842, -0.0987004649563861, 0.052580690462736515, 0.15082170348420298, 1.815968946976184, -1.801525657427965, -0.35269438817590215, 0.3165612132575932, -1.1274985211458544, -1.2081895706309593, 0.8947763791232438, 0.9256072483796912, 0.1160156247366876, -0.44837495229842944, -0.2739183590275094, 1.1153679055306462, 1.3928570054101417, -0.905378910739902, 0.7753045815203952, -0.33105364449783375, -1.5667536820401184, 1.1950148433456729, 0.354165616551781, 1.7647325336720354, 0.34842243659368244, -1.1445904695784506, -0.6488915404249679, -0.154811442924692, 1.647219601375317, 0.12852481855920034, 0.004310308986859974, -0.876142611650797, -1.1969960098569172, 2.505246673635534, -0.01839259972989579, -0.42338324819041095, 1.7006327293948955, -0.23835669566472859, -1.0830569238314645, -0.5058031215088832, 1.1137754394535067, -0.37799051437745823, 0.4689867373861166, 0.8846331641907219, -0.862827297911899, -0.02378812527403701, 0.7260021867969293, 1.1597883185839557, -0.23469208225352878, 2.113734390813324, -0.43787079759759806, 0.40094481205354565, -0.440940747042338, -0.11638255103314456, -0.5976246285724223, 0.10949744083274207, -1.213522552035225, -0.2801704266168622, -0.23088144999338397, 0.8531392120125499, -0.5131891025804275, 1.2147647043866772, 0.2396978620703071, -0.6513123608903771, 1.1189830026785335, -0.329502482141717, -0.4408963005006592, 1.7621110917013203, 0.37263249289836775, -0.4859330788946545, -0.6067042421983502, -0.652281974301976, 0.9767244079433385, 0.6586845642819952, -0.046623060723555695, -2.1849581690080555, 1.0767435169705282, 0.12722050362405046, 0.9986033617806298, 0.3243622406515602, 0.3488571494425995, -0.28194417652034437, -0.5174529713073618, -1.1589669416210095, -0.6257925557519216, 0.7845203905386896, -0.34496828558498516, -0.55392401828593, 0.21742125464736634, 0.1940339202350278, 0.5181013615346238, 0.6838608318277294, 0.0963437586410137, 0.16605883874954933, -0.8192859105507256, 0.3425249914970222, 1.206963641510476, 1.2072370620006596, -0.09132107400635489, -0.4915708710890753, 0.4788544238385019, -0.8129680193587631, -0.3597416459932602, -0.001935251987053423, -0.5173249508895911, -0.3901095063695634, -1.8048261251158957, 1.0191412836502698, -0.15735909472717494, 0.3259968219452401, 0.2983002122558138, -0.2865809153674455, 1.17563374798573, 0.9503886873331864, -0.017150838121724413, -1.5498598643101793, 2.568724923652603, -0.08029464734292162, 0.7019319162248578, -0.3680243157771866, -1.526918066370356, -1.5059053494163779, -1.509751062694838, 0.707105319149386, 0.3759576560377138, 0.6475726058839647, 1.338795258808114, 1.8598847911090388, -0.05763592033876413, -0.8688135009341061, 0.019960962804798733, 1.7401095555504877, -0.6280597716378297, 0.3473435634019159, -0.4462968771961304, 1.5433942416056965, 1.2587933112859289, -2.78079601104039, -0.47512302722136024, -0.065984099161594, 0.6888533485394165, 1.2305141892155638, -0.6518789292799052, 1.6086260544405733, 0.29196792037545233, 1.527761638614743, 1.6303894518830946, 0.15132243302789938, 0.7682912494990076, -2.7992162064438526, 0.252765632632188, -0.18536494230320436, 0.1286412370033291, 0.7444904216395526, 1.1101965867010084, 0.09583878264956507, 0.20541837056183218, -0.43900022720898685, 1.8446971502738685, 1.525269777862721, 0.34107287068465036, 1.370225466799814, 0.8993074950529176, 0.388987193739956, -0.41615197068085047, 1.6959480854121158, 0.6560019605281613, -0.059249535360658356, 0.3641096108993, -0.37088956582253585, -0.7118422460610452, -0.4547337947749852, 1.6833283452032104, -1.6932063886335549, 0.33007518208148007, -0.9793326842802514, -0.5685406484500056, -0.6764406676203423, 0.27223581970527805, 2.6210019152932134, -0.09677977060333055, -0.42338854207086507, 0.46197386760890474, 0.3011535518111016, 0.3182607957611916, 1.1190392605031392, 0.10747571439392618, 1.3205623217552738, -0.869982416258327, -0.3050369611353702, 0.3649867693439435, 0.7208855533271251, 2.45889669000764, -1.6481274773858574, -1.624333610347512, 0.5392519410260627, 1.1694640247181916, -1.4936888563147976, 0.22169790172897152, 2.47683597304532, 0.8476731372760178, -0.08882181771534245, 1.575370258034113, -0.4650474770641444, -0.301534039019897, 0.7151072657003036, -0.5139154643660516, -0.8973214534592038, 1.353278291959696, -0.785705814458699, -1.424798288107138, 0.8521605677636602, 1.1173074404160004, 1.1078334261149487, 0.5060403800263849, -0.7559434902011402, -1.7506912234691885, 1.6010916611258923, 1.1400621104262982, -0.9490178938632181, 0.08236269987589594, 1.1360090499605335, -0.6822008865400492, 1.2299082010225988, 0.5747472954848997, -0.9917405164498511, 0.7860707096819252, 2.094613031828752, 0.32476024918516005, -1.542485498562725, 0.19154241112008105, 0.30669357584478807, 0.37562510410149125, -1.0038556934540235, 0.17700385429720378, 0.3866792602527052, -0.048846256996197955, 1.0608228443140864, -0.3012251999336654, 1.2156737659864476, 0.04936433736528017, 0.3300941747271548, 0.13579425531133751, 2.0300902584395386, -0.3659348731125605, 0.5084747076597527, -1.214555459415656, 0.23882541455141687, -0.7048446726313435, -1.1718879290253827, 0.10611992491921178, 1.474365496672677, -0.7345685181989616, -0.36082108102321997, 0.9999061228905383, 0.8174526543777195, -0.012197041307958149, -1.7718376142638643, 0.5003281667388737, -1.4235098831155986, 1.773715315343277, 1.219914038937146, -2.213860133799711, -0.14916713468644752, 1.7628714799535847, 0.2339849515986858, -0.03761268839633734, 2.143907078190805, -1.0015286896665496, -0.40010337492322895, -0.6566439248016585, 1.4505614500774051, -0.5810568006549722, -1.6162077232566219, 0.18463910494905925, 0.7742911410807676, 0.14496376455100546, 0.8838498428601247, -0.34941054966462454, 2.02035055742048, -0.33887856780628234, -0.8213769209241042, 0.5669351554200318, -0.42298733389277077, -0.6005548745768965, 1.6430054310046425, 1.6035130190910534, -1.0319391121636672, -0.09774507597793355, -0.6520088992578232, 0.0477880560338064, 0.5747081768308763, 0.4828001936355227, -0.10582221958284689, -1.4668221584548882, 0.22049638564358517, 1.149953675035897, 0.5356482043193802, 2.209744990011742, -0.3608091685311371, 1.4441404573947205, -2.2581574537180726, -1.13629994945274, 0.7265837346915243, 0.3097883608445818, -0.8577004158636681, 0.17114666895138375, -0.7043940938451111, -0.3009786276980547, -0.8165363388123666, -0.9289682655079575, -0.12244992044143885, 1.542896177144803, -0.8841551589218146, -0.9208567330224402, -0.6540118144074791, -0.5171796742457738, -0.6023620659122336, 1.0635672960360585, -1.134330817545791, 0.7516849917169492, -1.3768346295850198, -0.2887033795344619, 0.056463263594405004, -0.2319843130014002, -1.5167554485466308, -0.25185231053466395, 0.9501800034747293, 1.3049896091031608, -1.2018551498395114, -1.352386595817521, 0.8816491221888422, -0.5136584805608818, 0.413721469429948, -0.34300581824604537, 0.6390192112355659, 0.2576064001530712, 0.9782101083250803, 0.6357892633788328, -2.538589768176732, 0.44695349034542475, 1.7303935529284833, -0.9684600861287586, 0.10236207599063739, -0.058130587212581325, -0.6593728867487116, 1.628655977372503, -0.9761527761546062, 0.9272948375646727, 0.27513668932269936, -1.8234460501370229, -0.9808233679288441, 0.3505076901816651, -0.5696532524323059, -0.3208932477679777, -0.7983286790842801, -0.2857415896451339, -1.1602067061862453, -0.6920493662799277, -0.7209260326374053, -2.4150876953168714, -1.345197705402757, 0.5891707013601143, 0.4315664458823607, -0.6577610674094022, 0.0005062460095738251, 1.2591509479456338, -0.6063765414897068, -1.7607966379468067, -0.9508899749801195, 1.4880740849985945, 1.0865988277002356, -1.1046192339132022, 0.6131311512926562, -0.9873330073605263, 1.3013956438407601, 0.7414214926541779, -0.8920958466820361, 0.41616978812279903, -1.1208556692016416, -0.8894703034997085, -0.8309067844131225, -1.8606842678184219, -0.07194654199784922, -0.07117390174891772, 0.5659822119815847, 1.916753711583183, -0.6963548682808837, -0.7855412487214021, 0.8047069590125108, 0.18349468568397984, 0.13587660177551125, -0.36150957824597807, -0.9508896526834771, -0.9483356430836982, -0.003902815411469966, 0.6106885504696978, 0.19376914373215087, 1.1932986357592312, -1.097567907692405, 0.25150655593518184, 0.4292062014732737, 1.0191286705659799, -0.03253742612676552, 0.050433113577438515, 0.10814583704412964, -1.05385401691128, -0.09071516667529367, -0.23849827593955103, 0.23738288144814607, 1.1169088997424437, 0.5886653092379591, -0.24354050181310793, 1.117611053039336, -0.2161013013225925, -0.7694711307041686, -0.2800587010869735, -0.8093412890185301, 0.1259803458217062, -0.3736394395978573}; + + +static double gemm_C_dram [64*64] = {0.029004260079962152, -0.8006824757561799, 1.1197336711178068, -0.9896157373454266, 0.4966790956650833, -0.320720861795497, 0.2404711868912757, 1.7983471339688688, -0.45215688264510606, 0.896961504429265, -1.1616159798557508, -0.840560393015905, 0.07480233754961872, 0.17992670342491432, 0.40524411436169705, -1.6268041045901802, -0.515842081058143, 0.3550333279229013, -0.7169358889557749, 0.2669144829157952, -0.7584809853254146, -0.8370380914872608, 0.48072270248825516, -0.40604137567306653, -1.0335439663756396, -2.069883524764944, 0.6487461014247821, 0.011710122578667713, 0.7558956908425195, 0.5521614840818139, -0.25174889683631496, -0.9515208767957234, 0.7906470835496024, 0.16009301473206583, -0.9156242627130992, -0.8294654016291866, 0.6405496416929598, -1.1150477048464416, -1.4778148420891877, -0.6532442833617729, 1.0668677881031745, 0.42505345945888107, 0.07673387953069587, 1.1717799752861355, 2.372817497973731, 0.31201596993898206, 0.6638888271489586, -0.8305561220137307, 0.028066442063465726, 0.5327162396709624, 0.1408772044753154, 0.7686937307721734, 1.2407913952843508, -1.7571668440478188, -1.4407261503018678, 0.46966304643082196, 1.067965459457961, -0.39086059969793585, 0.18266961756344147, -0.09601667538677204, -1.6541976778103968, 1.7762728362797546, 0.044625271683577473, -0.05332555492084246, 1.5519660869822542, -0.5164453460006669, 0.3735110292906932, -0.14055947835504265, -0.4662885370095864, -1.5754096176009653, -0.5279910388184064, 0.1877355482506709, -0.33550084881023345, -0.2335582239599356, -2.000574246170347, -0.5830606097499693, 0.7201314957738653, 0.2767541956493462, 0.4410172346230466, 0.1496171764974113, 0.25584855399911693, 0.4231757850905495, 0.819138838244574, -0.21665970285704256, 0.7993969106462642, -0.0524553739237593, -0.10297969217994243, 0.10341500732243082, 1.3960023077483688, -0.3532908554905869, 0.2203147660382962, -0.09582033114984764, -2.2210275614128365, 0.606197840696221, -0.8083685791528877, -0.5880259036476851, 1.3096925869345688, 0.14641410716326553, 1.0053476857132149, 0.7403000763828661, -0.5588102569869894, -1.8250095277930243, -1.0186046335834653, 0.7832698999328468, 0.3231401688432538, -0.8047074876514235, 0.22535724026429152, -1.3470992648831748, 0.4765280552548135, -0.04554836049444112, 1.0856094027781182, 0.11016455864671677, -0.07169925780054585, 0.0271210087334666, -1.880645185815656, -0.6627766870787014, -2.8871893512281774, -0.5590779904078584, -0.2852107316710877, -0.14430057889633358, -1.3447542589401562, 2.2915669321114898, 0.1728899952093592, -1.421973566402149, 0.08592097416861628, 1.0123703420638568, -0.9558110283152651, -0.9027941505852196, 0.5300767150099646, -1.9419175079586657, -0.2760382915222782, -1.0179287043200682, -0.1606599622524637, -0.3767181010147598, -1.1725123233730355, 0.9572648447195339, -0.1936224437544405, 0.42763321723323666, 0.0597133381305523, -0.9990105347232393, -0.4832753666973765, 0.6204763319584289, 1.960673372068261, 0.8079703046097372, -0.3452734166837273, 0.3245617375208927, -0.07491582919001254, 0.2743378624516145, 0.5983093934031979, -0.25216135518238597, 0.596753836231434, 2.245459616334286, -0.2948256683719357, 0.28882168918856443, 1.0813537774504756, 1.8535627999465232, 1.1961057282238132, 1.318252064967893, -0.3950711849667241, -1.377281651368375, -1.408790244923528, -0.4636389874147835, 0.4564524135315159, -1.6380091071491378, 0.9185995000712671, 0.4692427417861781, 1.276662831833898, -0.9447062381422022, 1.0877432601911943, -0.22886776336281126, -0.012711978863996708, -0.030811506691294257, 0.38780634756191124, -0.47366773078962465, 1.4814958435930687, -1.1828980688637942, -0.19863200267049605, -1.3001223272185354, -0.4242285448896925, 0.08898755668384477, -1.694063278944873, -1.6602985696240946, -0.6264097653393359, 2.1301257422525035, -0.9460005244382601, -0.5374812634338685, -0.43004926797690446, 0.29036657258875936, -0.8172987007397908, -0.5094563820595255, -0.6841925657572985, -0.008910378204569518, -0.7731489284211737, -0.616010025614043, 1.1972052729129066, 1.1413513407181342, 0.1378551765169379, -1.4064193442890494, 0.47683432031632644, -1.0476861800204984, -0.06901359480920458, -1.2496780870132282, 1.6753024031738708, 0.041143324574971704, -1.4522215930201885, 0.7573346464645373, -0.15931444765366126, -0.7557308301686515, 0.196471099443403, 0.9564572866814582, -1.4803875895078311, -0.9249142102969159, -1.0917150382335596, 1.2585219246267312, -1.2891710566522292, 0.2768772021936127, -0.11943879225386107, 1.4656182572667367, 0.021005580078823815, 1.015858071109535, 1.3572500812200858, 0.5985933296458931, 0.5118443929095804, 1.3341173368810655, 0.25975515970872654, -1.237917055905442, -1.5278312160468452, 2.1781558314592333, 0.4138981989747854, 0.9117147230752412, -0.0703340663019803, -1.0158619558246755, -0.10701579101103097, 1.1466314764426422, 1.6748325965852073, 0.5314453542027439, 0.22641290320796856, -0.6327321154028427, -0.3761520310209821, -0.9094876923198735, 0.5199396339404194, -0.6279140323320965, -0.5316788990880681, -0.7754230114648885, 1.6645731868153486, -0.25248989955644296, -0.07000691089126687, -1.4833807861581225, 0.2847398900881516, -0.4709041665604012, 0.21337597451344031, 0.4752659270130253, -0.6322357393536067, 0.8609686485998456, 0.6154141944357284, -0.5912751549232785, -1.3228568966598775, -0.0850817349853954, -0.8896445451859949, 0.30012988995739986, -2.946119896252344, 0.036167602681861456, -0.028803490284605167, -0.11461775128822176, -0.19075498390300027, 0.29202031786639293, -0.3294293306975217, -1.2138544157908646, -1.0972607879764735, 0.8248759718159153, -0.8925466032322242, -0.16541550491454302, -3.4465386476151045, -0.9566298189710206, -1.078687196973154, -0.4891250155546176, -0.19531569651548852, -0.5990381399213928, -0.7036039565674199, -0.5527767107100636, 0.16920318370993273, 0.5427235579499587, 0.5503428910211222, -0.7497767572001619, 0.011571029854715547, 0.49984033903822517, -1.7283983057101304, 0.8594792530055284, -0.12824597747986724, 1.130107130041837, -0.4987262662830606, -0.13416057776817544, 0.5080625985293201, 0.2117295363547809, -0.8118692986997613, 0.9424962371461574, 0.6300633108154001, 1.2746895140278918, -0.003615756251429331, -0.05126805599191769, -1.6138120917239291, 0.7882409923880206, -0.47367442818736116, -0.43963455311049604, 0.712317456491045, 1.3326960118808617, 0.5896451874379312, 0.9762107134249405, 0.5626831277485056, -0.4376044921422135, 1.5861409442199574, -0.3308751028344161, 0.45942840764057974, -1.7057231513870459, -0.9254725284067791, -0.11018949372955511, -0.7616338202748348, -1.0857700920096018, -0.4372008083571365, -0.40109369588497923, -0.644818536292368, 0.25281756977441044, 2.4197071280480786, -0.22106488208438388, -1.095650643379566, 1.894125695645947, -1.2761684375038809, 0.02036098869546291, 0.7947496785408548, 0.3421126605593487, 0.7949003661056283, 1.1747154329748026, -1.165207479384505, 1.183093398265755, -0.35715333224519835, 0.09841575912600005, 1.574023689454931, -0.23482068201661857, 1.2386946627395476, -1.6783552822721601, 0.8611354052037511, -0.03315728672592852, 1.0193997600753135, 0.8649479142208678, 0.4164604631092424, -1.7829228532488806, 1.18355749410558, 1.57769088119824, -1.686257098236667, -1.1607340307397962, 1.0433166175934159, -0.27772980615804893, -0.6837779231673817, 0.3903294683158698, -0.3671124601982576, -0.1276413455606181, -1.700409020471655, 2.268428305186674, 0.2736751307318294, 0.4618308615774054, -0.14119264307379673, 2.2199837786106715, -1.375939861531243, -0.7221917522954365, 1.1098492022750432, -1.4505379826083395, 0.26060143268332325, 0.9771611195144573, 0.3765145109829216, 2.215882692348702, 0.4047556377415391, 0.17708325001281291, -1.9644517128168955, 0.3982782935193131, -0.6262164185787708, 0.15245667799057772, -0.6508467682648665, -0.040947126846172834, 1.7119976409288793, 0.21779845582679846, -0.04145965880856733, 0.13225304399295884, 0.1739378890012343, 0.08037751104228624, -0.9411877899806691, 0.38565902729297424, 1.0958429749681566, 0.0669055558927883, 0.4361448377834406, -0.5901261511098935, -0.8885190831394413, -1.4871156416726072, 1.3669107918561987, 2.3091823854788514, 0.622552717517235, 0.2783143206723023, -2.1305113526512396, -1.4978709762185878, 0.8018120395351532, -0.33995160613042685, 0.1777765322633653, -0.2258895695037579, 0.19586512261588473, 0.45301580114334045, 0.18103013768124301, -0.5147488863527064, 0.20662933937315553, -0.09581792397706412, -0.4704069093141071, -0.13483315552265066, -0.5594310075701671, -1.5755216037255442, -1.5674068340789091, -0.5157357110184205, -0.10054465770334044, -0.7071565768766122, -0.4099340274741994, 0.35968200228333286, -0.18585633976713617, 1.5416706566134035, 1.9286900603543355, -0.5159285075025919, 0.16886996206928914, -0.9067434891373716, -0.6039824452258518, 0.27720989342858937, -0.8814432879855706, -0.6919477366657376, -3.300499554594386, -0.6173928008586741, 0.8153244286523782, -0.35573315997666993, -0.20534234860472675, 1.9722365498950571, -0.1019166129902459, 0.08112220912426235, 0.7463452888856003, 1.1314090216181174, 1.1725026304304351, -1.3737070495742683, 1.734619629252936, 2.481740839103901, 0.9194703215452048, -0.34821661861545355, 0.9728026357332336, -0.10658444194926611, 1.3646609952054927, -0.20423441003137643, -0.06138988353092309, -0.1103302198524375, -0.3172315867238737, -0.8436575516229253, -0.5086533079781693, -0.1020901909331111, 0.041548802438476466, -0.9989480071569191, -0.19084542074059116, -1.012929236908774, 0.37846266910121795, 1.5569101781200219, 0.03186861709827397, -1.9643672831540329, -0.9559693601351081, 1.0476398922384702, 0.4753938790634957, -1.9155181532004628, 2.7851118312057928, -0.4660427767210397, -0.7434686806220159, -1.8644578336246445, 0.7950519234725988, -1.5175445270408634, -0.18967795984276006, -0.07354703638985319, -0.0028940583295309318, 0.05057720453427609, -0.2571010737906899, 1.841219462891703, -2.1896361652733782, 1.2511986406908666, 0.5753085882254242, 1.1153018270644537, 0.13982610960157404, -1.383864413771338, 0.7931811133480174, 2.1309464599529786, -0.3672255367396895, 1.2349500491253345, -0.2851321814733262, 0.8721818251187332, -0.2026228852474988, -0.2791938533272248, 0.08040090821476319, 1.0892882614640076, 0.09768943644705562, 0.4204417256351771, 1.3114392443815635, 0.04829268265664478, 1.2850500288988436, -0.2779162535369758, -0.43169391727862744, -1.5832048871215894, -1.6962198203895802, 1.0729777959132656, -0.3475301277658165, 0.5554189051412136, -0.3178837805858156, 0.5327674010524779, 0.6755622625790911, -0.1842302677407756, 0.43041683511575013, -0.8115483237447811, 1.3968996263534743, -0.17863606115051833, 1.585212875612633, 1.3280038403293726, 1.6695928015875903, 0.6109821394084319, 1.1349894473760842, 0.28476618327344827, 1.4784673864794742, -0.2823155837802257, -0.9183380787461971, 0.18428479751772892, 0.9836044862804338, 2.025235066042294, 0.8265404261612499, 2.088855400024876, 1.2286394369048508, 0.6715801392320037, -1.0498151352816971, -0.8931372957848912, 0.009361893370829872, 0.9162789715980914, 0.006157909931788802, -0.4922874423094256, 0.18089602650564962, -0.9841484655534926, -1.1301889231546511, 1.3001340798635899, 0.13693015400741945, 1.0390411986454737, 0.09933412649399904, 1.7158843111310522, 1.904568532616043, -0.48794979349112055, -0.4338145756826169, -1.0370401983449686, 1.0390032114803736, 1.1522094113772554, -0.4274833545676901, -0.8753567770565199, -1.6315994757003491, -1.7385506630534566, 2.532384190967428, -1.7056567691204445, 0.5413608251407436, -0.7741297263854691, -0.9447738094748025, 0.6661287246658135, 1.2031380054266403, 1.10368337423764, -1.2970356849209472, -0.6566436584727551, -0.14816924917182495, 0.7899980629195169, 1.8273852077888946, -0.9277938527847925, 1.9598998746936958, -0.27099375424892697, 0.6313744587208714, 0.40220491996516095, -0.29639672770006376, -1.8023859026222553, -0.7750540161682024, 0.1947076125945104, 0.5471135873496065, -0.652969912710415, 0.8404848088284015, 0.12894499297938444, 0.6032885408701868, 1.2514835286413495, -2.3974894979687105, -0.9304443816961642, 0.5235805043032368, 0.9237070587307208, -1.2232371757835139, 0.5076176935522306, 0.11779678439009704, -0.34612498438387546, -0.7314860546390927, 1.553910216869756, 0.373159475336515, -0.30618102562662347, -1.0154187441535123, -1.3683721575144063, -1.6848734071167453, 0.7057898542723938, 0.7127375808855136, 0.6820908867090917, 0.14243208748778438, -0.49764571567254134, -0.34993722444753544, 0.28263895634917763, -0.0811609390230422, -0.8001263943467075, 1.2016381946021464, 0.6300938668214966, 2.0197124104278883, -0.39730245577489043, 1.1082615629881487, 0.46812678384907336, 0.666746788576162, 0.26123698644751225, -0.7024810946461257, -0.5922965445684787, -0.48103667153342716, -2.24353922047969, -0.9337194785548774, 1.3686185555811365, 0.3972741496203757, 0.37354079869199974, -1.1743179438700706, -1.1748244659763896, 0.1406513465704322, 0.7766944125577693, 0.6468554295128249, 0.8402029124529626, -0.5495888272912638, 0.2752226876433018, -1.0617295543596483, 0.45862157925707286, 1.1714768594080485, 1.1805224647157246, -1.6892820684956078, -2.393405099847649, -1.6331785264764314, -0.7303247685543807, -0.37576096935444997, 0.4013478691603241, -1.0157957733816363, 0.14002890339339075, -1.0252839102787974, -1.0375314340230521, 0.8172730168671789, 1.062543562593135, 1.2810809804809749, 1.3999493985992992, -0.1750138803985548, 1.395734920938993, 0.20896311087749608, -1.3682057826232348, 0.004699216277132869, 0.4764319522852837, 0.12823174581788757, -0.546109883020964, 0.2523240224674329, 1.9724181468899409, 0.571137816454056, 0.522392971014453, 0.06334935501567902, -1.4920451846109672, -1.0225677061413179, 0.44255002330819526, -0.4682032342920937, 1.0350483070201422, 0.8200797384116898, -0.3029007829607368, -0.9845615009741489, 0.7582526902117465, 1.4833592773254187, -1.3989560209509306, -0.02010565525754588, 1.696186541558, -0.14162189076683343, -0.6537141574516205, -0.38621139164560747, 0.8184053985461378, 0.6452934033126237, 0.7403406155596476, 0.5169782497985267, -0.8189857182537518, -0.3298835390479515, 0.4237001612173338, 0.7833162409431745, -0.0019372831953367766, 0.2733210830893454, -0.6400595311632477, 0.6228358338196626, 0.3278665095994055, 3.081520639298892, -1.4435639267846334, 1.7053027215702756, -0.9588347501825313, 0.8266484324217002, 0.6242654188330886, -0.6407113941329479, 0.2772593629992858, 0.24814190447973083, 0.03363219264335503, 0.04496534388566153, 0.7087040051423135, -0.9221069417630742, -1.5268364676636788, -1.2896607997985812, -1.3661213777130599, -1.2075968696301782, -2.389243136958518, 1.4955588874856782, 1.2032086179453023, -0.14139077396705954, 0.2105872325884853, -0.5266170806972954, -1.9635764068165913, -1.2961941687735021, -2.2835960332407423, 0.33843875542096646, 2.3953920170177923, -1.1837497023332566, 0.496939041745984, -1.6834236268645497, 0.0947364755311612, 1.3677509022976098, 1.3010190519580898, -1.7668063834316443, 0.21564869547117013, -0.44708261946187283, -0.002380181670482115, 0.650945443490256, 1.4074149358152999, -0.3502584098400984, -2.275975800589525, -0.713875724177341, 0.5589684491426312, -1.965116029720147, 0.47575103008133773, 0.1679025472894861, 0.5439197139149357, 0.18336508565925638, 0.3219885649627636, 1.7554902588109447, 0.4642725270837393, -0.4390920573164246, 2.2698459891448923, 1.9524244471530363, -0.14392435570038756, 0.8876434758028264, -1.6577043260766187, -1.0198707516700816, -0.5961056777066923, -0.34369290129618396, 2.3123203551692133, 0.9307680048590791, -0.002081134721685804, -0.4816298626933, 0.5166419734688004, 0.09544852566577597, 0.738769513030866, -0.5320413954446367, -0.4940048696009806, -0.6416355699204741, -0.9125056647182483, -1.1862204740038778, -0.6555000958717663, -0.833470938908399, -1.1616778894644986, -0.5822364941000208, 1.5789499695762335, 1.6906076958567484, -0.6682910973489802, -1.5375408783188134, -1.7035671717673282, 0.5113501775091176, 1.3627201535356952, 0.34281653314195654, -0.0361566378498718, 1.283526267201893, -2.2745695742593397, 0.19000854891098337, -0.9356963719873145, 0.7771715931847443, 1.1747876035023088, -0.6581782060160273, 2.1514708443588093, -0.36624102952776444, -1.02996208423095, 0.7217520972507986, -1.3423248117021074, 0.29948769841449313, -0.9983234204192304, -1.1349975297569361, 0.2390417601230243, 0.7072204486510455, 0.35832543994067206, 0.8041102924500155, 0.3028670857744879, 2.7623138131362417, -0.7089157750419613, 0.22621529706629703, 1.0159042552872546, 0.4778866048560423, 0.13862524435273077, -0.6817769904192166, 1.2905800338344828, -0.5617711995631723, -0.937878912770488, 0.036259068904784184, 0.3074683196641872, 0.02334508317808002, -0.056636545167360136, -0.6105722560497783, 0.22034125973327826, 1.3981176980080354, 0.002830930797289729, -0.24195892578863437, 1.3598231207188574, -0.5983975108140343, 1.509108735185707, -0.3108584778552104, -1.2228769868033365, 0.5943397739409046, 0.31935177535483583, -0.036439093781717204, 0.14778839039885514, -0.11651573539454131, -1.4649049971267012, -0.2683259472901276, -0.1143739595865752, 1.7635913804869325, -0.16130246501945172, 0.4072876137215747, -0.31103626857775446, -0.05171663918837877, -0.7274085567918993, -0.869998251494505, -0.7193321231806105, 1.7505951189711304, 0.7440630635174471, 0.0016957841800653661, -0.983556012268064, 0.5131452298233552, -0.21520406798199235, 1.2554935163458343, -1.0675348115557104, 0.7469420795328888, -0.9963438487998225, -0.6229174823536682, -0.6770598584016285, 1.2562729341933596, -0.2712138170575698, -3.068642230593467, -3.0531360276822577, -0.5584911390555901, 0.7473315149504595, -0.18706483628559678, 0.14675010155914514, -0.006368544270069353, 1.6844988114574022, -0.6214979241607808, -0.3355320210713104, -0.09820727272027757, 0.8687934479912008, -1.2005133663272494, -0.33084789733891284, 1.1571084045756281, 1.4246451046643682, 1.6962376428779853, -0.01965764703939021, -0.7773091413938378, 0.7348575748530396, -0.23216605868100404, -0.8192776375683218, -0.2080446140023382, -0.44904006003328667, -0.4432456841776011, 0.06399763185741875, 0.21563610206370648, -0.2508963268128007, -2.5393973783220463, 0.323376954594191, 0.1384357529412035, 0.021153113599300586, -1.6410540709354358, 0.3691910055245278, -0.17495885529094257, 0.554361827175954, 0.20816477209501544, 1.2322688447103174, 0.2259606292852208, 0.5140029111794593, 0.37718842026130545, 0.33603722021339, -0.017669087842033065, 0.3990879000210093, 2.178612539524806, -1.4021972726687062, -0.059858631189209026, -1.0031183337604832, 1.383398163582628, -1.0611670406818532, -0.6074540386699645, 0.25468663161832605, 0.13474280254470264, -0.10885846887714488, -1.3619488838854161, -1.1865743468938024, 0.8343602196452481, -0.31636758410943266, 0.0822806179687328, 0.03610500422763477, 0.36975660962214374, -0.37447984002912227, 0.9006398818186364, 0.4263942528559476, -0.8471405691528062, 0.6370923472128284, -2.771271846414234, -0.2775641216533752, -1.9698060876925318, -0.7631948292304876, -0.11501310895829121, 1.2264502383793572, 0.44510581587390197, 0.7850830340365011, -0.8972456251148753, 0.6916483637375145, -0.5297453646047573, -1.901732896640853, -1.007326391309077, 0.2220310453886031, 1.0724562599385534, 0.40011245153735736, -1.1593565442528044, 1.5287688772353074, -1.2265309382410865, 0.17812058438692274, -2.1424196963250663, -0.5365247347682954, -0.175882228830132, 0.20779436050052882, -1.2395880259585617, 0.04832542895494312, 0.07093709252503462, -0.056371503668414216, 1.3597592757778154, 0.3828295662314724, -0.5315492554139866, 0.6360780600344075, 0.7531154590527323, -0.7824250791522117, 1.0617544257117932, 0.5489962301017025, 0.6286191631180904, -0.7554812899095874, 1.3460101201505388, -0.6564959907077351, 0.16698785124367177, 0.09451925409687266, 0.17705768947811729, 1.0138194440077566, -0.24231907310256842, -2.546273886239003, -0.05507329609619993, 0.3576296538398323, 0.27507225100326244, -0.7942125094255036, 1.0744369972956842, -1.1548545340061322, -0.15997902636302005, 0.2950954321082824, 0.8845493763065855, -0.8132679790365331, 0.21153971778686953, 2.2177421007414084, -0.9299613122041496, -1.6733913807379388, 1.3474760825861976, 0.9816143450439703, -0.3855895553937516, 0.8502913770246404, -0.016034574759692683, -1.1339934776440412, -1.7563721581739282, -0.06647491888759757, -1.8920747028441938, 2.3760043080911335, 1.8177530262775197, -1.8575847163422115, 0.844553214178571, 1.5954993729399956, 2.1252863078605264, -0.9089236614521397, -2.0469171775640773, -0.9384063102943723, -1.5482176543034978, 0.4526740914408505, 1.4013381381239929, 0.991045705937935, -0.47656146801187094, -0.27582104974046956, -0.5642658623540668, 0.325163151043837, -1.544633482053262, 0.15518857788732585, 0.15382265815454396, -0.6343026666433687, -0.8052290074500515, -0.01691923834054946, 0.6541683607771073, 0.5338183805463347, -0.9091383582478858, 0.3968969223456185, -0.17061628431357603, 1.747323697825887, 0.8012341564226836, -1.255442509886699, -1.2920206203653015, 0.0749186813352897, 0.2120295206583239, 1.182843648729612, -1.1122449131709833, 0.6272974182744673, 0.22777924320090764, -1.6251751647156196, 1.0411757059610847, 0.019367245918048063, -1.5738996411263415, -0.269270207865917, -0.5708394331822761, 1.8504054703733777, -0.22094889809967533, 1.1868455374446385, 0.5717141696167073, 0.8579212808811838, -0.49203515643303497, 0.42647412290047176, 1.0808047827262008, 0.010157228470302567, -1.719815859158772, 0.38805715778854427, -0.9969905666150687, -1.9361769141375387, 0.2474759878876688, -1.4221009001917095, -0.5918211873235646, -0.8058159270505826, 0.5438653208536682, 0.19307918373458596, -0.24237795984767208, 2.3297553315723163, -0.6782771653830929, -2.264267240688485, -1.3620513569200732, -1.9227157102467343, -0.5474383968696648, 0.24293097804441546, 0.8929260011447531, 0.049719985269798754, 1.3121549852716419, -0.7380138820116222, -0.011523274745424477, 0.7707761640355849, 0.2159962953115613, 0.5540026920594798, 0.09682345285130588, 0.398898061918644, -0.8325427357082503, -0.8742308162726118, 0.047733473640843245, 2.054543245821081, -1.3898902807090843, -0.12538538363326618, -0.09873796128345852, -1.4497902777439649, -0.4782177466678878, -1.5489795500879526, -0.29518331705238504, -0.44407598222159483, -0.9106356388426876, -1.550174445411619, 0.9328231660401188, 0.05594760595703414, 0.07566938845558267, 0.3298955808621695, -0.0017861668992007044, 0.586486364465265, -0.4362101979996282, 1.009729735572833, -0.042390290391845505, -0.2808285449424426, -1.0403468643014806, 1.131390812188699, -0.773890404524892, -0.22102358669926575, 0.6645483621647768, 0.7694091180284272, -0.03831164560096324, -0.3150960131582738, -1.0259652416179839, 0.20049882895150267, 0.03693677780369976, 1.6551618339165797, -0.22673604901843455, -2.417611359678329, 1.1106483704352281, -0.715751960430851, 0.5164952578195183, -0.6996317634146395, -1.897990257489308, -1.8041186305012002, -1.4690150868698797, -1.3087988024213557, -0.17486927381146705, -0.45353269534719165, -0.19149104316066032, -1.4266479569878736, 1.8919903045082074, -0.9473356590670324, 0.5173785755076394, -0.13818347423848865, -1.086849997656127, 0.36593831570404595, 0.6194226195093413, 1.4453714190862008, -1.3271158566185721, 0.60921787209085, -0.4832669384376709, 1.3186433317044879, 0.9513213947793335, -0.8548751359506115, 0.1071168124112579, 0.26717848135064914, 0.7030211740414508, -1.0709788797992723, 0.45569586838966974, 0.2887090154342446, -0.24229609713368583, 0.49390930613496803, 1.2738314634647165, 0.8139546371116826, -0.8058423065764165, 0.916823751781412, -0.6678215090538104, 1.4119852560554031, -1.3924034581122728, -0.48456149875876053, 1.0643581297073346, 0.3566463977388516, 1.0415975486050486, 0.028040080194454448, 1.0504197093941925, 0.44965919555783174, 0.8435496128685037, 1.7026256067041448, 0.14373254549294262, 0.7291427328749441, 1.2935074397997568, 1.1398931375510761, -0.18068743577377236, -0.6047067890923773, -0.5346294021251248, -0.10853463546664842, 2.24413601184453, 0.3297355179043857, 0.6657531282588651, 0.964251923438201, -0.5628928015239664, -0.0017106246437996794, -0.19257380601095586, -0.5999594838401076, 1.3310045638118178, 0.01078134546842449, -0.9551407698862096, 0.3885729820005979, -0.05434661623637475, 0.3767388172770911, -0.4898330949543117, -0.713441149440031, 0.42018478215791266, -0.8439100277112023, -0.19565425401483183, 1.2508445943709827, -0.598991758922596, 1.8429649718578998, -0.14258798772701783, -0.18138700905606242, 0.18618696335301746, -0.17087391761424983, -0.8432760462260274, -0.9939917370091027, 0.4305596597055404, 1.1091371083897912, 0.0790722776794302, 1.2495242586059518, -1.521274693280775, -0.7616476824293791, 0.19580408817424708, -1.3143027744001392, -2.091488061999562, 1.9663088091747154, 0.229879430005645, 1.4409375453185944, -0.36162055274827665, -0.27464439642870486, -0.6230996505620815, 0.5751002240784702, -0.16100067047853925, -0.09962621112274908, -0.4351501356168505, 1.3351792476960413, -0.5784998697471228, 1.3361458462940539, 2.3601479775013887, -0.4647589716386651, -0.4548988716102504, 0.7028762701773292, 0.5914980686358756, -0.6966115762392115, -0.7696723521588696, 0.03715612980676316, 0.32221017528830087, -0.4234227574937845, 0.34726424283234486, -0.48116562286295844, 0.3138392530237178, -3.16017434136752e-05, -0.3914227082899591, -0.581666722921146, 0.17111964776203006, -0.06008169278035282, -0.041886584782142536, -0.28699248044931597, 1.462175320301007, 0.1245846313065406, -0.1123526751684876, 2.092515176950615, 1.2272760858332872, -0.19552592726578952, 0.49191271925867636, 0.6144137708252538, -0.6106235763708134, 1.4976844345055038, 1.1892142848985179, -1.1357119642005757, -0.28436481789594376, -0.4421830922813949, -0.6328684584245098, -1.7040349067620155, 1.0820432527761576, -0.9968510182567392, -0.7985198199890275, -0.2588215482253829, 0.20174302514172218, 0.7287507331021361, 1.1722852714149967, 0.4322448567665407, -0.771155579801035, -2.612258680121964, -0.7051447495309736, -0.08301192443248484, -1.4472391477276658, -0.3526737726608245, 1.1294354483566833, -1.0899837588692494, -1.1395916553408674, 0.7779937885751342, 0.5183410812373956, 0.8509697670045957, 0.6208144564226835, -0.778892715214496, -1.0501461846073583, 0.8552859071722188, 0.8608448046488019, 0.5497428154557589, 0.04882443454369946, 1.6651080232070385, -0.32090016182105363, -0.3728486660772143, 0.8430133361143574, -0.5655459744432224, 0.7215544062511454, -1.9484490239876828, 0.6423145640402413, 0.014400283567776857, -0.7898745532400717, -1.586323922234601, -0.8458020923790143, -3.088311088273429, -0.7711672240651922, 0.9871615977182401, -0.9045757185197361, 1.1588809667487696, -1.3285096437778892, 0.5493583705018974, -0.17757552950573202, -1.6167076444272095, -0.6257691840041929, 0.3674989256823125, 1.5365222795738054, 0.3527319212488765, 1.0485204480487655, -1.660459836294662, -0.5794960248043395, -1.2465657293652699, 0.39414956926958317, -0.22431122185124802, -0.7424297725903407, -2.0183158330852966, 1.0943683904642862, 1.9180228164677529, 0.33125926943311296, -1.4098590113169003, -0.3049008568768526, 1.2884791320277762, -0.8304495335533479, 0.5648082533641575, -0.6324582858362591, 0.15519145016196245, -0.14331072524661, 0.5955341112172925, 0.2683604694117294, -0.46158779655753196, 0.07612773147707591, 0.4518924976580781, 0.4439502747372077, 0.8523538103367174, 0.6526631303289786, -0.14639057359720992, 0.11541815018151078, -0.14641912207628505, -0.28858965267185804, -1.1094993394266683, -0.13666302182060672, 1.1197245750262241, 0.5969030971713879, 0.7652826186532012, 0.5565420987155717, -0.39973686526861824, 0.7840343460033151, -1.1888373414791333, -0.38373069667860454, -0.2549327865564444, -0.831606465136574, -0.8020163962470959, -0.867149529466562, 0.3741626587437947, 0.009823237085445392, -1.7368701460461045, 0.9578205180189425, -0.30283019943674705, 1.1710486547250496, 1.3504432585716344, 2.135913369966061, -0.37144981581277836, 0.6683173129623053, 0.20836373808769923, 0.45158986081203556, -1.1459347939795756, -0.819138263097992, -0.44181173736632695, -2.228038352852804, 1.3450784569893894, -1.1523580752749787, -0.20464272457508284, -2.6483454695188007, 1.213210112709636, -1.4004764346361736, 0.09732611023114367, -0.44728592455565547, 0.10547550295522748, -0.42093313113048986, -0.5056183426815237, -0.35915275364763544, -1.0946537876925737, 0.31096146492651894, -1.8148942677707616, -0.3091292910916751, -0.07769189114014907, 0.8210353689958184, 0.9977559638388211, -0.9741254410868778, -0.532900582192196, 1.2326485600619295, -0.556852354708009, 0.5224831305011773, 0.2473387410334785, 1.1142299086991494, -1.1993099089239656, -2.3844231540204452, -0.031312298998023125, -0.2578374897963484, 1.3655566629409817, -1.978772520685182, 0.05702667001523861, -2.7661971160023278, 1.4379234027888605, -0.7192462186848305, -0.8359204541555126, -1.97072449798586, 1.2834263121409806, 0.5648994039770748, -0.10923252179999401, 0.5481965021182704, 0.192406781879664, 0.48581076499243303, -2.605560426009065, 1.03504983076068, 1.4042025146049608, -0.6532422029882547, 0.21720993132656635, 0.44583467031113655, -1.4473969873605004, 0.7442621658759352, 0.0035577574611439537, -1.5352838320153788, 0.36582337868920506, -0.43827718248031894, -0.331658585134989, 0.03475743065587794, 1.695364872590356, 1.558451620009631, -0.20689475301966134, -0.45129848619848684, -1.523170827436555, -1.694309335523152, -1.198176658548595, -0.19969177462827617, -0.05282460007952421, -1.1791283297361472, -1.0067735453064437, 0.17055987486894333, 1.548598735029748, 0.7208980223949303, 0.4530935835189574, 0.8089115623004025, 0.3351300125270723, 0.3800443655445466, 0.3736345544751257, 0.08967024919905225, 0.9223811114430721, -0.9791572872575997, 0.7490556870861242, 0.04211285779316042, -0.48675401364389137, 0.7892987384887062, 0.6514935495821761, -0.7389337564143339, 0.8226734205961588, 0.7249237684279655, 0.9660211264551801, -0.4532783587481408, -0.8511090310517235, -1.2152362800727083, -2.2688038747495143, 1.0639266151110012, -0.11852527671845324, -0.04079710558992621, -1.959172190759805, 0.634813706645387, -0.024392389160913488, -0.8994503599741844, 0.02058425261846817, -0.5502771537286061, -0.7627382878672573, 2.812113990163829, -0.35697622542008045, 0.8954830632884034, -1.2850622093830648, 0.9048756978263991, 1.295681539205646, -1.8039444541082827, 0.6289956120674256, -1.2464825605819987, -2.434105594966877, -0.7368776196463713, 0.07517741459098572, -0.7212226336631826, 0.6482644881693863, 0.7243697163628927, -1.015612682453925, -0.20576178987164687, -0.03565973922119395, 0.46655943398917193, -0.49256995004987253, -0.6208601544556013, -1.9147957069743964, 0.9111798522207986, -1.050789491681603, -0.17826554882391007, 0.0034287654351666343, 0.23891042130951867, -0.2896526657972369, -0.9678605370350775, -0.15606979834697407, -0.539588519878248, -0.9744762714085187, -0.1158787137991666, 0.463186013778498, -0.31756023012613327, 0.32352357908448803, -0.585725835882206, -1.7678336366681864, 1.5889268041950584, -0.20630705622264997, 1.232645492185463, -1.536865929859409, -0.9261652386696412, -2.0561143314389776, 0.4779964081018399, -0.8596011929021515, 1.0843957545428986, -0.9897567668916143, -2.3232928720337003, -0.03340641205022988, 0.7598708513617404, 0.6584247271159631, -2.3279582198317708, 0.24768310253870407, 0.8762008827221577, -0.6729640746468504, 1.2959884053547635, 0.9381350368383641, -1.1241425977603545, 0.4829581184819777, 0.44171108339691467, -0.1872572531285367, -1.2571533983758636, 0.2048074965235173, 1.6143344982484689, -1.3124698136215769, 0.3635463079780809, 1.3596873368910098, 1.081430863928576, -1.7061600182770245, 0.2118428338657974, -1.0006407692588688, -0.3401431816847726, -0.7813320328275092, -1.0011400049098196, -0.04519821459969004, 1.2603284232288081, -1.0630920047189185, -0.44789118146525986, 0.5582310695632384, -0.7090682864355446, -0.5133533644647693, -0.13049594943266846, 0.7311900472570971, 1.493841327862994, -0.25011186120154755, -0.7748595776465173, -0.5052909848740618, -0.5033837938274406, 1.0631419148120849, 2.2478394914416504, 0.7500249601704074, 1.5817576559551234, 0.8472836111216092, -0.470416237895585, -0.19965720263223283, 1.0216451463957437, -2.1860339921625407, -0.9948198936152898, -0.4396019229076382, 0.8734144476777804, -0.2965813670330133, 2.2470581118653734, -0.3395559758401316, -1.791968271962612, -1.9257914274985277, 0.3714309214848273, 0.703855673271628, -0.555710126333215, 1.0220050901401225, 0.20363711487789027, 0.8516796154742334, 1.5757937650329772, -0.09665836315586222, -0.776148895209055, -0.8004256779107253, -1.2413561284257886, -0.12925323644050332, -1.2379066703304404, 0.06651546025851007, 0.01391190021081403, -0.17367092702089812, -0.3287548140792935, -0.8711037772397026, -0.13391409347721686, 1.046744495577508, 0.8549541076563608, -1.14897045533444, -1.9386803001956516, -0.38823478112772664, -0.913589660602426, 0.2729518941831664, 0.15071694940790553, -0.10547684574045808, -1.2248164227256482, -1.351082215307864, -1.331163419569997, -1.3025284037326679, 1.591100615537101, 1.6839972656851228, -1.5013406493986328, -0.014560098841445244, 0.8758316571675913, -0.8616058158966454, 0.5237127012367585, -1.196778610697725, -0.35407288196013637, 0.6942107386263077, -1.8315746797885266, 1.4846155028429848, 0.43076769047114793, 0.384367439106405, -0.23394885184834452, 1.2198064491495224, -0.5383323547980174, 0.8160510810336509, -0.4573571329857449, -1.7335152974789638, -0.4636249816670279, -0.15318904243505294, -0.42412709535096155, -1.2846318534528511, 1.325417287661619, -0.24420837398318634, 1.7225099174527827, -1.3858598478981758, -0.350222801326749, 0.22885965098157468, 1.4051554822746368, 0.3335772936910085, -0.6286767607540873, -0.07004282442105106, 0.04489437050367313, -0.4059451088431407, -0.8094857079707901, 1.7505330159261117, -0.583610420693528, -0.7366008689555579, 0.3984745730971409, -0.06377005585758136, -0.8206644772162646, -0.6843563782443158, 0.413445320652666, -0.4554691818585017, -0.6229184879111299, -0.2413741831461815, 0.5506155379147128, -1.3103237870729614, 0.551465002061796, -0.5526669452272004, -1.432939322764634, 1.783677814895783, -0.2619175408084894, -1.7366570861134099, -0.35564945315684077, 0.10137133388748105, 0.7235998519780015, 0.09403042929115289, 0.15425730783069394, -1.8572780611255473, 0.5058501044761556, -0.7574907452490733, 0.17607281289803361, -0.8396945461067945, -0.7292802178089858, -0.7002824669050794, 0.5503576214615272, -1.5890603582592648, 1.793036043038875, 2.7878235846616866, 0.38956928497568377, 0.26174869373444265, 1.711065590611669, -0.21780984024318578, -0.7476219519355383, 0.18354455463527203, 0.9102969356546101, -0.9733253628488144, -2.344766204767146, 0.07301118913271507, -0.4917986474536467, 0.7416391329516281, -1.2880000713234445, -0.46197477360345757, 0.30212819705891386, -1.5167184180382485, 0.8501535296247528, 0.5175168374586809, 0.1763279409946514, 0.5808980947903934, 1.8472712753780864, 0.5887473330756161, 2.1954184977584354, -0.03769822240764868, -0.15613316317636414, 0.5004769377495568, -0.7455652599230427, 0.7677830295108011, -0.1441337502428087, -0.7523387828605589, -0.36755553576567623, 0.34105345138077786, -1.1914248220126447, 1.2303531748948233, 1.3432678076153106, -0.4313094961431832, -0.716554553207416, -0.36217498101423934, -1.5133659288612389, 1.4950695017357467, -0.5715269477785132, 1.1593421463571147, 0.43789720927678055, 0.09116342195238117, -0.3049393765588991, -0.837272212664342, -0.5766435716140458, -0.7356401726215391, -0.9485280265926767, -0.1250772778287353, -0.24361064177838979, 0.8522508371598432, -0.0037377039062253593, -2.5439058613954306, -0.0569000266151025, 0.4320024316685166, 2.194478575759713, 1.4396842305532822, 0.36543499574809074, -0.3770338147135057, -0.8552418236779827, -2.641615137447347, -0.01832206949724758, -1.220279075748726, -0.4532959432254292, 0.2687666926125023, -0.8588555314205266, 0.2995859931505431, -0.5333350265572113, 1.2847615357173254, -0.6750734120371739, 0.8097130403145714, -1.6270630113161542, -0.9700686987748345, -0.626750470435254, -0.873880059260819, -2.302124621855377, -0.2119446632235012, -0.45104357068515205, 1.474647321380819, -2.452150203161443, -0.26422200819131053, 0.3355570393620066, 0.4521192920529254, 0.6898023906005871, -1.0228088805014108, -1.5620067151329697, 0.2114421450103242, 0.16571047265242836, -0.9976369476833716, 0.2707035595461758, 1.527376877291636, -1.1501231170867043, -0.8215138548193065, 1.1255100205347468, -1.4908295737477542, -0.9614784827261649, 1.253875753998538, 0.6502131896760401, 0.5459866901410766, 1.4600197648017388, -0.0961460203532497, 0.7266795346872365, 0.24327467641293096, 0.6629927940460294, 0.1425139446241705, 0.6769287783907216, -1.3236927946900179, 1.7325000099103491, -0.44398667144970083, -0.06250247294850679, 0.7996605229107876, -0.8781887569136042, -0.04685771081608833, -2.1381243641968757, -1.1057101272330927, -0.2334652569852083, 0.9622037237887306, 0.6635341672421278, 0.12296392422848872, 0.16098800191091994, -1.9738778562669794, 0.878801521788013, 1.1264406225655363, 0.9266111456784218, -0.5837955300185679, -1.1381689631937657, -0.7637975260788618, 0.6253414266910773, 0.2560476374285288, 0.6225515550412877, -1.4003990017303332, 0.33627768607969516, -1.9427666341170824, -0.6932243069544903, -1.6260875697896702, -0.7277319111014768, 1.4038229847386294, 0.2920548422295979, -0.4789539104472966, -1.5162957655731588, 0.7303018926046246, -0.08451244525442732, 0.784113042439586, -1.5334585479514933, 0.5670458287729787, 0.42975930410924124, 2.449800593141972, -0.747332434740572, -1.2322385206168842, -0.7568040112448173, -1.4135743704317814, 0.02577746009056378, -2.0837637677880294, 0.49143275227877103, -0.09302281017834362, 0.7031745485857588, 1.9067771128764397, 0.017922750249444862, -1.0118512011569816, 1.098381595132738, 0.7341755899609803, 1.2311978717249155, -1.0213846091416032, -0.30656617450535995, 0.2039715668363261, 0.9137009208505903, -0.1853547296025253, -0.4531226067380201, 0.4791486178122148, 0.4244894303034229, -0.21125213591144995, -0.9006724834631074, 0.687500015940671, 1.5478498713739013, 0.5971262704659354, -0.28221603850355226, 0.1853982344045198, -0.4972609839585217, 0.09701023695712938, 0.5695911267833031, -0.3164094642230819, -0.14706947612684826, -1.3149133497939054, 0.6864680014836566, -0.772852350625843, -0.5806236044379457, -0.3330938726043226, -0.2730406772068024, 0.5762813326703923, -1.4304622484096188, -0.8424942170683648, -1.3966094397492712, -0.895345937295373, -2.1450526226610602, 0.8982603474010731, 0.2447347737164159, -0.14421939866277614, -0.32759685565611457, 0.296699608032958, 0.4488491381463045, -0.9366906772433812, 0.8575927698912629, -0.21528850062417895, -1.1881007189482282, 1.126951428099562, -0.9182517838371076, 0.03845610449911805, 0.21538710321609011, 0.4345124212863915, 0.22806905558766796, -0.0433565930969285, 0.7593857162181715, -0.31477607928734513, 0.45451779677564275, 1.1460305154279424, 0.17511551763090402, -1.8856875430269369, 0.8346203714049741, -0.0696682533840345, -1.477209694338219, 1.167580661482926, -0.17554887202590774, -0.8474837486432465, 0.34080524465178785, -1.067656844368498, -1.2235746072702904, -0.1496059091339221, -0.6271075452205968, 0.17720185109195266, 0.4353918232872083, 0.5660926079329978, 2.8554574415424483, -0.6620166583187813, -1.7269876019682948, -0.4078387228577495, -1.7228178107762542, 0.3726054112499986, -1.1217641084697834, -0.4549722253573668, -1.1732831794353027, 0.6575544136481785, -0.9201334492342766, 1.6328222950437552, 1.6244241347609476, 1.5613555902002136, 1.4668846483103386, -0.3487215605525855, 0.12066051762324873, -1.3338304508691319, -2.838826297994906, -0.6706495059056897, -0.2112553589247857, 0.4093088155814143, 0.0586543436679839, -1.9337244019029907, 0.07171251023300006, -0.453400009742923, 1.1415999381407176, -1.1548675809496596, -2.382993633047374, 1.665455784920222, 0.36977079711240063, -0.535727132830006, -1.4579294636750366, -1.6520070983625739, 0.08837369320935094, 1.1015994425060465, -1.2436747485612611, -0.16173195775871396, 0.7874586254788326, 0.8455365274680086, -0.47385229544186175, 0.8581794726994194, 1.9141693890868874, 1.2111468774347625, -1.283834409703804, 1.4122001960991903, 1.4246122083213058, 0.09617143246488447, -0.680416520345397, 0.7939074419436761, 0.05082061802593895, -0.3375681951224267, 0.2728075634559421, 1.8677062690963786, -1.2849446512608989, -0.3646522458534046, 0.917024620691813, 0.836213051287984, 0.4199460834454394, -1.2038519270531134, 0.12232264627089835, -2.2232529926712767, 0.32822411605932045, 0.2221878465543045, -0.40914638546335264, -0.5038836046014628, 1.8256305544491191, -0.7565556539701808, -2.7739792692396126, 0.28066845231027215, 1.3738789070045716, 1.7661381760831198, -0.9580232806819591, -0.1780922624537117, -1.0984645221049045, 0.12603798766445923, -0.1849675475219486, -1.4475049162679143, 0.9388707018063479, -0.5362768656635394, 0.9452817076530887, -0.37341197131483667, -0.2629170752516286, 1.325991973487167, 0.9619471376599076, 2.1975015359014103, -1.9973341541819725, 0.8588312686492864, 0.13666135012685632, 0.3102389236196128, 0.6936509306420062, 0.05434653570011313, 0.3886040413097377, -1.3881648803578328, -0.24232672717865358, -2.3006844443180974, -1.518751357394444, -0.3706901669875656, 0.7539809084190491, 0.4912794553641408, 1.285898467547851, -1.2234469904502512, -0.08958864363508236, 0.583078020131131, -0.23178079681176902, 0.4769446061135408, -0.4016965792806681, 2.1618387681417497, -0.3808916318031749, 0.7019003947692466, 0.6921832736273762, 0.2010723299967834, 0.23634082843208823, 0.6056544806575411, -0.11651743275509928, 0.5766313042860137, -0.5190655005970012, -0.4579416002427724, -0.424209530527786, 2.232559210366838, -1.8171412233712165, -0.6495312007257151, 0.01454464350825512, -0.012160378768442833, 0.45900058613553946, 1.622427208224704, -0.8381648037082366, -0.06922690164521429, -1.1571533446018838, 1.2962530073258305, -0.4164012434169487, -0.14957792428793357, -0.0966188865041463, -0.17162818417291137, 1.5823601195567514, 1.0185460546773435, -0.27435903244422055, 1.0624307534321238, 1.6824917464322542, 0.3499999101405133, -1.7539284490002658, 0.3415515608898923, -0.9304971196835875, 0.04252683790482448, -1.5965834974215565, 1.3596129553980816, 0.5975052601318105, 0.7282491018628274, -0.8685422050617817, 0.8955457613350786, -0.43664776638074715, -0.8206970291571989, -1.2898007224720796, -0.3186171612571654, -0.3330818341118064, 0.6655752973348447, 1.6764347205970604, 0.6078743574830635, -1.2342507922222805, 1.9210718505914963, 0.26510984025007406, 0.2685882654026507, 0.7102430456245953, -1.0462145584529572, 0.3857191152427833, -1.8835805633826779, -2.768761193953574, -0.4915726819365157, -1.5089924717034593, 0.013278831567490521, 1.5474176875871273, 1.7045030442907954, -0.7048211460588357, 1.0382872389284454, -0.4236141117291399, -1.1507654519546344, -1.6074537360491772, -0.7267874141115397, 0.11876040295645178, -0.6408806028454356, -0.12049820175789154, 1.1256684566373316, -1.1503658259476168, 0.3808406082354331, 0.16166298056768014, -0.9796873977838907, 1.0438547113586458, 0.2695904409689415, 0.7097366282641338, 0.36812978605144314, 1.1038117080137047, -0.5807051449206111, 1.027731721586947, 0.9661580338116212, 0.2598371929157506, -1.2798102496315147, 0.8352067419464927, -0.1452621149892954, 1.8549267889124994, 0.5665323669164135, 1.5421593189692089, -1.4677264718771512, 0.9585639718948312, -1.6479655417171202, 0.22271257385409565, -1.161398773427602, -0.861813501728504, -0.33065924746715947, -1.2370435572165541, 0.13012798200740622, -0.17426050640126142, -0.38744989631009263, 1.4307827967619229, 0.03543562533000589, -0.9972687727886126, -0.5170550450401604, -0.7750247609617125, -1.5190613124777796, -0.45895251295378553, -1.8056739512190008, 0.568360571435928, -0.2004869809428556, -0.14483685708825503, 0.5258043449164731, -0.16813587996429707, 0.10846389250099084, -0.05315797521827668, -0.21651365686613308, 0.06006145597959008, -1.4024064633139812, 0.689880904910238, -1.3428757039530983, 0.4589303661569864, -1.4188669947772765, 0.29352168212647334, 0.7308608932842507, -0.1353758679174761, 0.17358923934048226, -0.40216684119518126, 0.43993814071860016, -1.2871086596268482, -1.2622185432193231, 0.5955345200199184, -0.8657767655249429, -2.0777147735575694, -1.0097475327974674, -0.29221483234147594, 0.2292766310482291, -1.1056969652514455, 1.4876657299426514, -0.036104835108870456, -0.6423673306131062, 1.17645837315232, -0.27627899423171265, -2.1294237281854707, 1.0389397167884664, -0.6156099069368945, 0.5660062401217804, -0.34735225445425977, -0.32061267845758085, -0.898048854923999, 2.3890802889591454, -0.1207700865946951, 0.9658162458846846, 2.1295380289836494, 0.22730977326083576, 0.307795221689862, -3.159470294922449, 0.8956823805247126, 1.4364518339011614, -1.6940979672180807, 0.165976015208281, 1.0227277830757575, 0.9471964236813554, 1.3689187788341273, 2.0082590219654723, -1.4127390079463908, -1.4582830839548455, 2.057655232622654, -1.6262107983377108, 0.8065089603585295, 0.059317700347295395, 0.13330649608758663, 0.41871631403681064, -1.6670993078179417, -0.4557222192488648, 0.8358412168608853, 1.1485241583907668, 0.42382769612443416, 0.07067530896807704, 0.7805845452452761, -0.9230705042306333, -0.7008265657860365, 0.1238579585529523, -1.5033879105374937, -0.8006324477609928, -0.44793642959253405, -0.27299529722657506, -0.42911609794809474, -0.04754182561350199, 0.4678169668023181, 0.9609426463686324, -1.135854381028605, -0.9604027706620838, -0.8759778130611081, 1.3255392992467154, 1.4437271577682296, 0.4932168845856174, 1.1198442202865473, 1.2097953377572856, -1.4782787622655886, 1.534331937472566, -0.18592464788213361, 0.9065510875978713, 0.2441526620364802, 1.2142409950847504, -0.005934606839626211, -0.19071981471485608, -0.3040583507442866, 0.060081676730458174, 0.018762337319815515, -0.9902130995818926, 1.3074986871427252, -1.2758677347357341, 1.0698936415205338, 0.5702156020946687, 0.3041015469962475, 1.0315316803895331, -1.3625531333588328, -0.4647788936504099, 1.3043793230085174, -2.2931238782528447, -1.8655685521053629, -0.9669629869645776, 0.1883663353758491, -1.0634824082910936, 0.8013306975599391, -1.5443624045591937, 0.32715347959892516, -1.1042425552504813, -1.6161041406680392, -0.5109993363057571, -0.9190886093343267, -0.6077428272848499, -0.5002569071129503, 0.9756689510277916, 0.2772218606494787, -0.43287852998208237, 0.6296681915983172, -0.8502843261320427, -0.9505069068832771, -0.650584341206366, -1.661723761397373, 1.007089074815852, -0.11873490106540271, -0.1272993611104505, 0.9298614676390998, -0.5153289230941936, -1.556702035787103, 0.3807701443952423, 0.6123807492207072, 1.1867467887368908, 0.14654907176430795, -0.5370416367498603, -2.1139883997425315, -0.7876830210703504, -0.6237996086335619, 0.13592084587607914, 0.6393276776955494, 0.13991569771729745, -0.81809230737367, -0.6683486553698732, 1.115178173122076, 2.446771414213701, -0.1637585890568815, -1.1209704564711065, 0.4467511515071406, -0.9534092482312004, 0.3182330919933401, 0.271683759433474, -0.9573363828477164, -1.0712413179694105, -0.30255813778652974, 0.958247674089883, 0.4979415521551006, -0.8376872519699228, 0.022535961046091832, 0.6840510626836408, -0.21077828406318735, 0.584447240190305, 0.3410263701239205, 1.187176771555195, -2.1172358171100973, 0.30995019232039317, 0.7901976578611829, 0.30913468523891424, -0.9844146654250953, 0.3474506697688135, 0.6259418281233743, 0.4794626029480261, -0.06173762343825315, -1.3627102955192472, -0.20031835021540442, 1.6870429458740388, 1.6083459881399655, 0.2789050227337342, -1.2719884064904396, 1.1853106830638485, -0.9913580737072663, 1.2233104543278213, 0.8134432318899081, 1.886557959191833, 0.11022533467624505, -0.7681413266984113, 1.436892344457456, -0.5556957709754798, 2.3038212660346935, -0.682772274731363, -0.4746168209407287, 0.5511129315383609, 0.4215246673091607, -1.4860625654820405, 0.1897176503580621, 0.44020540443738876, 0.7496215071681255, 2.552398472469107, 0.7607506386602476, 1.0820709259858656, 0.19917231987970416, 0.7942499355919473, 0.19973021075409347, 0.29481380935757473, -0.6357637486064631, 0.12863791178542627, 1.8561515112410554, -1.4521073859968245, -0.44690133813439353, -0.5281516778029656, 0.23031228507637702, -0.05163289925469105, 1.4531091939178806, 0.06594794127602743, 1.9158929778743325, 1.3893544881471012, 0.8377158542991587, 0.4599670791005717, 0.6058828013346426, 0.21069233748771843, 2.0847766207434564, -0.029268516047371095, -0.3252030660188709, 0.13202105483543372, -1.2051521919108732, 0.08810029046160057, 0.2998899394140385, -1.329901911797941, -0.35244571721201917, 1.0093949421205954, -0.6561924048355037, -0.6769220785633787, 0.9004707724740563, 0.4215313341559502, -0.7375271922065233, 1.0706249247137103, -0.028892244945197036, -0.5183281825357204, 0.5736153002965058, -0.3758685831678415, -0.7918995871067815, 1.2782634446781616, -0.6356995421752419, -0.4833863369287177, 0.9974534142023732, 0.29124328932605514, -0.8236355220229586, -0.08699050597488259, 0.6590141733829847, 2.441583292882557, 1.8873452628569025, 2.2474275746061965, -1.2084812281924566, -0.8018851520041654, 0.6759181159646618, 0.00313769957548172, 0.31474207170695445, -0.07736951126774436, -0.25018161293926583, -1.2830507962514812, -1.5628441907653305, 2.8453969247062276, -0.6342184442111992, -0.592854552706071, -0.653723999513639, -0.76565949917059, -0.730526998162015, 0.09075307806432394, -0.9481548645415303, -0.04755585978648472, 1.3476101538895733, -0.9875559107864285, -0.7896939152505444, 0.4816267344514175, -2.1648165937072137, -0.7268788889746165, 1.2960347147856455, 2.9109429440400323, -1.065376273609101, 0.18513796404565092, -0.8814138828253623, 1.2409135508501319, -0.012877656665903105, -0.6476617613042353, -1.994768600369764, 1.3443028214739667, -1.8514533014456531, -0.7379582086548833, 1.694396228823381, 0.4026562338082194, -1.2758466479856054, -0.25334115795781886, -0.10298131523967101, -1.3748667924232236, 0.6293890561733958, 0.2738888278899806, 0.5612373487486728, -0.35340678348969806, -0.736843748234479, -0.40367835808832514, -1.2439466232262497, 1.2570138663363715, 0.45632423807954914, -1.170707965548015, -0.9587623429264018, 0.6425982154718701, 1.5567146540543542, 1.2516374448322218, -0.22322323181634318, -0.5695167025136576, 1.3827725588378879, 0.529065899193698, -1.5470827592965664, -1.0944906269170949, 0.2905472841355263, -0.987585623182969, -0.3515621243107407, -1.1366040859833553, -0.5160321145422849, -1.6442173347711861, 1.3423907595439113, 0.31986604002016844, -0.5786595172834021, 0.73801532386848, 0.5788365796442495, -0.7375548663739422, 0.45423130001442397, -1.225358779977498, 0.7678067565519512, -0.05078757448886205, 1.512293872317004, 1.106989348588503, 1.3272064524680798, -1.0102290516604413, 1.3418085812620126, 0.4314053354881663, -0.8698836928173348, -0.33508116195249105, 2.273858285763485, 0.41127055898865217, -0.5417916233776102, 1.3173262896619646, -0.06588492371272986, 0.5969382095462551, 0.6197204718248582, 0.3742348312569251, -0.04007772711014461, -1.6143631344300409, -1.2617480510616137, -1.2401273803885422, 0.3822358970465057, 1.8061346386866513, -0.22702264172388117, 0.37048462734622856, -0.11799395539242921, -0.005235059103559137, -0.6489984366966667, 0.7782101694572308, -0.024126859434724878, -0.09798935833649829, -1.0417284651310414, -0.6605483359597034, 0.6972000521784677, -0.15225780204879624, -0.36034171752445354, 0.5934576132973614, -0.25056255516564263, -0.7310153609877714, -1.8861910032233697, 0.254480151361828, 1.4148114593503607, -0.8002251737459469, -1.3914075562421209, 2.6894920671041236, -0.1506644941293263, 0.4047667831579401, 0.5611273432518382, 1.779203788992058, -0.48565136522391056, -0.26653744823132164, -0.8829510316719237, 2.532755174768609, 0.5582799591535964, 0.3625488756486719, 0.8429610656748877, -0.1422677046514221, 0.059560937411363916, -1.54096863376706, -3.409308449483486, -1.501482227036858, -0.17084770021492382, 2.3317238025849716, -1.2471763217303788, 0.6742533376141315, -0.4671654422272103, -0.7254154200533441, 0.23441703660981258, -0.4694323705405022, -1.612196166706617, -0.32563743615759183, 1.3898422646804982, 0.859146411700291, -0.2601661523404493, 0.3217117418244543, -1.0494347817905338, -0.5991667659706216, 0.8881794866760082, 0.5840210011255069, -1.2075635705473267, -0.3377101947699321, 0.13603306699179857, 0.5802301275309478, -0.704852221496425, 0.9615592481981307, 0.5450775566697076, -1.3780611142397772, -1.6167118554509825, -1.2811556928029282, -1.2724034602241299, 0.16120409249117293, 0.42750602102457846, 1.2666174612779004, -1.5508664421057543, 0.2620798945065646, 2.0332984208088303, 0.1261854523088127, 0.8345628189160572, -0.687707400490003, 1.0656169293117534, -0.31887838781706285, -0.005112174834790412, 0.2023207919468502, -0.5067392202386992, 1.823953396894383, 0.1523428263375545, 2.2440789764565605, -0.6697609733471732, -0.34309395149284333, -0.3824068477398153, -0.33303131558596377, 0.9716664193169441, 0.8311581421420695, -0.22780854741625758, 0.20032616901737238, -1.2785511330679982, -0.3197180135822623, 0.4959834053798831, 0.6752515974385053, 0.5334780166422973, -2.002795187816773, 0.27050605525523075, -0.9424869426824867, 0.458248932225858, -0.46118697878329784, 0.47832198627914324, -0.3661079341479641, -0.09319576406942727, 0.577819340020893, 1.2520997452677414, -0.2933921906178384, 1.136343377990995, 0.2468127074537116, -1.2252940887079373, 0.6375579341674809, 0.3462788965739153, -0.5177836733288577, -0.035284483529249705, -0.5338255181822806, 0.5193809161508848, 0.21798950092913766, -0.6956597590579882, 0.8046664677176151, -0.11463713804889088, -0.19176077914163675, 0.791885645189318, -1.4328882682847868, -0.9528659659051965, -1.637558975422558, -1.989264868496837, -0.8459538105074142, 0.944828292676069, -1.1921028346027158, 0.2546472038919744, 0.3861916389251654, -1.521512495954636, 1.535375205330882, -1.8914196543962882, 0.5149418901648063, 0.7752013519581096, 0.9145512827088738, -0.5080387911664219, 0.05031436015329658, -0.41216922303342934, 0.37227191099516266, -1.6600720014787667, -0.17968185610490092, 0.31830407850338693, 0.7686158224111359, 0.3658407552939923, -0.7165726159358554, 0.013357030158994452, -0.3372894061190394, -0.6789238357123408, -0.3832898769073804, -0.3227036184382978, 0.4460521819485986, 0.061892643502349666, -0.32267506934792967, 1.484633534363464, 0.4021774493619681, 0.4307762865129178, -0.5296069271797403, 4.151195369087241, 0.5487000909862146, 0.7163468748574175, 0.3808084179332832, -0.4772621640085183, 0.5479157515300286, -1.1044576899329694, -1.2036713335057232, 0.6909028182382742, -0.6529263174772725, -1.4725628267518027, -0.7473406606454858, 0.7387557364279378, -0.8760308731605688, -0.967180804004829, -0.49221734292555436, -1.4382474439405089, -0.3481040054911766, 0.22254446316102353, 1.731032969663649, 2.8055652681876384, 2.1160837251189757, -1.379194059803083, 0.6326539345516785, 0.15520482328940885, 0.8119547790137315, -1.610952801893542, 0.008918798158614715, 0.477564041851444, 0.25533528319659754, 0.998197782393884, -1.6484421505039013, -0.3004410869764593, 0.6057050457224126, -0.32020257217470566, 1.3359336989858763, 0.535133451920879, -0.5673962878727761, 0.24055606737735033, -1.6590194676777759, 1.9066265876591473, 0.2721183739248777, 0.06834872118107038, -0.7693837262978656, 0.6000193521872865, 0.20157135480173424, 2.472674269826056, 0.8258740084136792, 0.47137911495882484, 1.244572899040009, -0.3130562609295631, -0.7435497606216963, 0.13509423548484906, 0.6656236185332783, -0.5980179153119386, -0.6435416164377876, -1.3312882258359282, 1.0671430529417514, -0.09759042594372078, -0.35648374184511217, -1.2269456519162936, 1.6814992783555787, 0.04184788447848968, 1.68139083696507, -0.3030041682277847, 2.2849057798957273, -1.196531329787736, 0.6523992375423346, 1.4893905469952924, -0.6823297566186022, -1.1041446305707252, 0.4421841974696293, -1.4167436314301174, -1.5920898580925384, 1.4343243359414184, -1.9045005981467849, 0.057069471507391965, 0.5278224067845345, -0.7362602350911139, 0.19448161568570255, 1.5261487666748228, 0.004388839910851893, 0.015470814085829732, 1.615975884645819, 0.8879261649672402, -0.1326774466682177, 1.9382951563961202, -0.44547041979800195, 0.021230799239171535, -0.1571038497582797, -0.16148117044663435, -0.36447608885124355, 0.9360978659212479, -1.9835447885628907, -1.8064899970710941, 0.9036470769919311, 2.425086908712557, -0.6272015905517969, 1.957160646153106, -1.7538826809290353, -1.2373863108002687, -0.42249715021397544, -0.02100757430425144, 0.7526038212912296, 0.2047007870068672, 0.570705167349308, -0.7783611682766279, -2.3095477705978107, 0.22606718794222244, -0.32290132655615966, -1.597852946819715, -0.8952260637834641, 0.5568680007496093, 0.31733948888023006, -0.24697424901807427, -1.1633182632185708, -0.261549901914151, -1.855510767468883, -0.12245837196266503, -0.041080160924985655, -0.585409894265932, -0.4138566348289641, -0.6980329178942006, -1.0029216664042124, 0.10979946351080472, -1.6542257294131706, 1.393533502384212, 0.5174318732191945, 0.30147088153612134, 0.13176508644926532, -0.21802556521053773, -0.55329143084434, 0.2739291983626038, -0.6883020380352294, 0.6825537252923997, -1.5046508987238285, -0.5828333121318955, -1.1884290907589348, 0.1665509776472768, 1.3971140199197725, -1.3673567412727532, 3.0130147873449924, 0.7896539284272303, -1.055832543621147, 0.16658265730062774, 0.5232158049212052, 0.28570121739370363, -0.5325889850018535, 1.2918469178499534, 1.9819733294664026, -0.8093143209894869, 1.469595195954295, -1.2932943712519451, -2.1208284016640415, -0.4050898165492931, -1.1517011911443218, 0.8998956145443444, -0.23384644657433187, 0.526560658434697, 1.1222026129349756, 0.2160342440751586, 0.6797496626133915, -0.5331175042591417, 0.6637291624241468, -1.0147033164625645, -0.5049005083720637, 2.0659370602844436, -1.5900216896103532, -1.5339789892006166, -0.3200566858112642, 1.2830977533887504, 0.04654283897838462, 1.7838815763897529, 0.3904401499994594, -0.4111612807908421, 1.1847627666014435, -0.3955642857036182, 0.3675601425931492, 0.088662611923031, 0.46299757634197497, -2.2893235368562155, -2.268927460602336, 1.283516393286584, 0.20920007589000394, 2.4411204448502586, 1.1389069409067243, -1.1898031767179975, -0.43341406963651063, 1.7741298995608883, -0.016709317081657786, 0.11517899718492178, -1.5511855060356194, -1.3117417253404795, 0.13351391911792548, 1.1637653113813886, -0.27570074398670863, -1.5697680634730649, -1.954956462100421, 0.5552656916393576, 0.2373994429321212, -1.9303747103380289, -0.1921132978172397, 0.6250698172881495, -0.5949372282094622, -0.7826608913130164, 1.4562229269964548, -0.5416543116490529, 0.6936768940278385, 0.6261775893704643, -0.5859171652539004, 0.8555032381807751, -1.3676477362552337, 4.238533804853162, 2.4545185017647904, -0.913404759221193, 0.4250981319720471, -0.9763799065871701, 0.7808586039540816, -1.0328656450097617, -0.7721604644533069, -0.3530813727528884, -1.5411637128692925, 0.6539840707892913, 0.008229110336607592, 0.7966890453416182, 0.7037436956153061, 0.6614113279704881, -0.202848267721112, -0.29922308805427594, -0.5522097500427048, 0.09875065962242098, 0.7083328933399845, 1.7362802880024957, -0.2266535118741716, 0.5299005404626365, 0.6719364752934611, -1.8615906591576734, -0.09068813508526216, -0.1888891414579059, 1.3423077781666952, -0.6924470819765697, 1.1041424493388294, 0.4134851965057971, -0.4735791706069265, -0.7356651547484112, -1.575469178834194, 0.2059058482018911, -1.317543434131728, 2.347983690185328, -0.9350302948592141, 1.0039027596124084, 0.30969112449845376, 0.2541035100649089, 0.4211688015877788, 1.0647819562744412, 1.2886070484626828, 1.4453593413552184, -0.026423761925036916, -0.10046863824315762, 0.9375145304857443, -0.8794152043439424, 0.6161524124555712, 2.1765363841706007, -0.17519057418498793, 0.40239774219958097, -0.5314020562312248, -0.028260581879397745, 0.5266158478069836, -0.8130604924415793, -0.1620471073410965, 1.368895928096441, 0.2544222901453687, 0.0682140981898076, -0.08305873685961358, 1.1551649925205691, 0.20488815881813946, 0.9788412565833704, 0.6730413277634831, -0.10343628631794778, -0.011056773466636922, -0.26893242071811874, -0.22234819963659333, -2.063667484853198, -0.9528556130697672, -2.298918544448265, 1.4641851715761252, -0.6443216828282126, -0.7448597363782805, -0.5637254977251447, 0.026036289664867818, 1.7947458799857385, 0.47823466572724166, -0.6009031631006543, 1.5622161381793802, -0.012361922782423504, 1.1320815868058798, 0.2666111797781486, 1.0800481352272358, -1.3534368975569377, -0.12565159569358056, 0.8269760280151415, 0.4101805250340873, 0.5459250834776258, -0.578841318268924, -0.7708632540651004, -0.004711348442621566, 0.9139140784227678, -0.5887863731031122, 0.5255711160933076, 0.6899347371240381, 1.8406881042526044, -0.1494953868420972, -1.487372075437836, 0.04531226841225139, -0.8785887917514404, 0.6773321050874577, -0.0983506278141217, 0.5597628029545394, 0.9487620637619515, -2.0252012328413445, -0.3325641975286207, -1.1258330017788327, 0.023802932989263906, 0.42532764883918267, -0.1719694477750812, 1.1366386876717014, -0.06950662371831764, -0.5610077364219385, 0.6924775343736279, -0.08202929488370111, 0.03632839803067284, 0.2035677562126695, 0.48902609842042033, 1.0804149661369027, -0.7425106537204975, -0.5702977393123885, -1.3826240552189546, -0.5228635824639636, 2.541990031610674, -0.3358484399232096, 0.2708627260856431, 0.3577767439219406, 1.0481739531875494, 0.41502512979161693, 1.945039667472124, -1.333971998047096, -1.6319888693166744, 1.8081668907285702, -1.126545357015281, 1.017481115516176, -0.8746343950821853, 1.613464623094451, -0.987275067228173, -0.7782780233402289, 0.9358137937887636, 1.2685709811916313, -0.9922941446951046, 0.6495420807278994, -0.5015976512021791, -1.4515930568861974, -0.3017145427194569, 0.22396206990737433, 0.2449168875921067, 2.4353212694888504, 0.17708064085180888, 1.6379030780705819, 1.3277860775740942, 1.9763199313325732, -0.7129095818443579, -1.2469376388413769, -0.6242116235182271, -0.48041188552500946, -0.14268548581723478, -1.6604837693733687, -0.03806802185256857, 0.6963957195724964, 1.0623750746697818, 0.6233441558858677, 0.36657697739573364, -2.295074935487194, 1.0845561474708743, 0.4905268784109729, 0.9510955040687479, -0.5026253874469225, 0.5855406556971665, -0.4674907407543193, -0.5608509773657036, -0.054561000082436986, -0.13488620479039842, -1.6100667806518532, -0.3709803597469035, 0.29582203102054655, 0.8410085106517383, -0.6645326878187746, 1.1367845966619665, -1.3201243250510812, 0.13674546078719402, 0.9775512964502551, -0.6593867653205457, -0.16315112660697673, -0.6429666213286755, 0.5269463017070531, 0.13689944560905168, 0.2704736580667669, 1.0956057892301136, 2.0377599847068084, 1.1896914387079371, -1.1056334740369136, -0.061419064162327903, 0.6558988396743295, 1.1616563231258492, 0.05233437675572931, -0.43279599457514883, -0.6310196056008639, -0.07017445588897313, 0.21859133324465385, 1.7464304327601714, -0.38374464463022673, -0.4116300533373271, -0.9012559637626759, -0.29838378562277373, 0.1776181377502974, 0.5337179529206251, -1.6927309440114802, 0.19627841167268098, -1.3375053577369045, 0.34292489957433187, 1.7252380623451755, 0.3893308049876548, -1.6138835583138924, 0.24320533391068808, -1.503402740971457, -0.9820815913055403, 0.02826537327258336, -0.8677808012629867, -0.15732458310810252, 1.6448055242437023, 0.3882793537178024, -0.4745596075074129, 0.1657838803136746, -2.6918015152661914, 0.7632486195032542, 0.6973513947209198, 0.4101471209696532, -2.2799074841609177, 1.284770153684539, 0.03995086580146711, -0.2991581182473426, -0.08304172354784842, 0.28042933971050626, -1.0923071947444258, 0.9164084413681113, -0.6812760370027394, 1.5480579290916134, 1.4837613730950547, 0.023182419970626405, -0.2668022486973583, -0.1188765567232481, -0.22450605274030175, -0.01068777580695019, -0.5681288373513323, -0.798016193089919, 1.112093456749927, 1.4289069908566108, -0.8325323358283204, 0.6527204397669472, 0.45576965736433434, -0.05177234665505003, 1.1825820243015825, 0.5633724078799881, -0.2598338582029702, 1.2260636343236992, -0.06502314120499497, 1.3554177601202826, 0.015378075446720483, 1.771795744777381, 0.19716116753361734, -0.9289545353666014, -0.01120548540552129, -1.6568561810835647, -0.9711632993719995, 0.2888457566302567, -0.33812030790826947, -0.6944997091883152, -0.08753361436324024, -1.0825962267681306, -0.4698117598324523, -0.31391779051735585, 0.5155485258897468, -1.3906426323765313, -0.08794713693189429, 1.323299166667676, -0.1281180737897692, -0.7313549630276092, 0.30727046798040325, 1.1752251844693715, -0.7441249207177553, 1.6052690350217986, 0.18649308224250258, 0.17892852927651728, -0.0995691575256924, 0.4348534499771249, 1.484991734895783, -0.5720258392859724, -0.08690696328546704, 0.7713939696120472, 1.1722789472312292, 1.9496467641354467, 0.22942775691626238, 0.7124499254350729, -0.40961823346856296, -1.5841557574786587, -0.5783735657948544, 1.7072885072301731, -0.9760682458530513, -0.7133260677207641, -0.17406636751269225, 1.5115376392568705, 0.3444982802650086, 0.5618620561647593, 0.7768151831330067, -1.8495980414473379, -0.022772431183660354, -0.2688258642531703, -0.2316501235768239, -0.4349049986098626, 0.09524082099485014, 0.18287945969711975, 0.9756566821517488, 1.2112951490716906, -0.8350588047652798, -0.7894781658614808, -0.8425885522378407, 1.0078366331542066, -2.170943513352494, -0.07697039348999336, 0.624710432231761, -1.5714538060400307, 0.25497055299290833, 0.9193656642088831, 1.0914383490187152, -0.2746559451582547, -0.24795001040712014, -0.1821963308600328, -0.6151863420266909, -0.07974289047525698, 0.864835252508244, -0.11852133979339911, -0.5867385141837459, 0.7425778869302543, 0.7772435416319093, 0.7418518577569089, 0.18477538422252776, -0.862469199675159, -0.7201960090993764, 0.7441788487719844, -0.44740979333359115, -2.011406066578824, -2.0397719472330946, 1.6317617740438857, 0.501298361621573, 0.46480805036189093, -0.6492071444203512, -0.9962577891956758, -1.176143672100762, -1.460358133281756, 0.91939184535992, -2.6115193413417344, -0.11701441464426601, 0.36330899947821516, -0.7619851206952822, -0.9791836397007687, 0.06605184536205168, 0.9852736131214399, 0.18316974821162169, -0.16385983370688456, 1.769889718870536, -0.7568083172666948, -0.07093554823462433, 0.34915804932546474, 0.04394955212420144, -0.3412151969411125, -0.037998909530440356, -0.7920940693112494, 0.23924283654785033, -0.7218726802077204, 0.756794397487571, 1.129998141517764, 0.06199671202439378, 1.5818825635871332, -2.0927309142911965, -1.009720388820037, -1.161041154747722, -0.8447671692136892, -1.0157929981350513, 0.7904271516718387, 0.7254384385818724, -0.603295486359894, 0.25924412778603606, -0.04640660866056171, -1.6000423263326133, 1.8143254523998487, -0.08862538404196012, 0.5332621638876169, 1.1045997215315637, -0.41584450160976266, 0.9441745490519653, 0.24798697093505728, 0.007684578291883661, 0.10198392659226542, 1.6199201784700468, -0.32528736620138143, -0.5826981266958557, -0.36325256797247957, 1.1471577477638135, 0.6178987140946427, 0.36972297251343633, 0.5437284650592201, -1.4459624565283546, 0.05792287061159475, 0.41648235426252744, -0.3752827187450667, 1.6652887251405053, -0.42564437336001554, 0.9761973006448895, -0.7275241033025399, 0.6934458083833381, -0.29112188437100084, 1.3282243166189927, -0.9536927875603478, -0.719434212611784, 0.6748136465043926, -0.03597354593983007, 1.94009058703115, 0.09882655123973512, 2.1053876175385304, 1.4185342675315131, 0.1206620765251783, 0.14903745714080963, 0.10442318495551679, -0.17795681161591564, 1.2580662909953826, -0.309432614193383, -1.0905944849250224, 0.4769931537784153, 0.42744787996997274, 0.015299040637353436, -0.35211140544489866, 0.2588719668529644, 0.39806242670614195, 0.0982957694556772, -0.3643039151707563, -1.661352851241187, -0.7050125329026734, -0.943960952206926, -1.4473953121799084, 0.6926023466644213, 0.284659435800313, 1.6730413075943111, 0.6423676343810131, 0.3968310937206259, -0.8342984203305135, -0.06635863092332817, 0.48133940282415283, -0.34365908316039695, 0.8195486752084361, -0.2781857864218842, -1.0136587780355568, -0.4538474341770635, -1.1337344789342048, -0.5150244531135606, 0.958566232938252, -0.16105129432877321, 0.38436738614303156, -0.5172439276028532, 0.23093709347387772, -0.30272270953081704, -0.21962749662435752, 0.9566459591875526, -0.788349928603636, -0.44952615913370747, 0.525332205545319, -0.5812548660484521, 1.2956320514491553, -1.752164482642109, -0.6047121066028011, -0.15329007945272555, -0.04110361189064399, 0.2075100652227872, -0.04955642332135181, -1.2847570979710345, 0.4806820630644186, 0.8112350665109486, 0.577438605043487, -0.5506815219471743, 0.7858766373478445, -1.101050840231404, -2.2244251571050273, 0.09434075969634925, 0.19198836106624168, 1.0670984516256519, -0.7989553140491875, -0.20794218769948203, 1.5326125420890269, 0.020895643272767377, 1.429434237396836, -0.09226519337744446, 0.2530160966559398, -1.2052909073582596, 0.18629835668130743, -1.1412717735009497, 1.2293983703310951, 0.20963090073800605, 0.2771037033747804, 1.1176243523307434, -1.7749390137644867, -0.6160566595276167, 0.37431077650255806, -0.628817850166509, -1.5457989014436102, 1.0413567521072367, -0.6687052895376355, 0.08823501338384936, -0.8504561089335623, 2.674041129993747, -1.5899356389768722, -0.12358228035838018, 0.4957660906211637, 0.31851942141963985, -2.077120767009975, -0.5844799194788266, 1.9510391355162264, -0.347560684365186, 1.3086755801775074, 0.34475766053720236, -0.4033872470813162, 1.1582973308383313, -1.0684599760113471, 0.529968393960725, -1.6526921510620116, 0.9524384542696674, -0.22909069471152455, 0.6652418786019982, 0.0030589233668147898, 0.11365610389048802, -0.2480098634476716, -1.739708416005498, 0.13128969246670458, -0.8124775515041727, 0.09211054412374194, -0.5372875032406812, -0.0032089521665293573, -0.8316736236057737, 1.5059153046848375, 0.5055489101297763, -0.9926899954404349, 0.06717218616117565, 0.7564225434228204, -1.1172446398752929, -0.0971278427942958, 0.1783634876571702, -0.43831740139818265, -0.9897246258630265, 0.42789947696918956, -1.1881782474146696, -2.2595621851300622, 0.6418731773450146, 0.2534262764606806, 0.4316556467189196, -0.1404488018967209, 0.8263074484867586, -0.14552757065621125, 0.0789242186302759, 0.8209702417714765, -0.25903816299191046, 0.6767653743426741, 1.6145117461589933, 0.6926264703024766, -0.32214772217430293, 0.9292349516554164, -1.0508805938355477, -2.749764645898245, 0.013188601563584493, 0.33055296889149677, -1.1958215283600067, 0.1405450269372766, -0.508425415799171, 1.4570136536517577, -1.0251431195020073, 1.0969073653806085, 0.2995765466625078, -0.7079203015696985, 0.1288388731533383, 0.7296772632654821, -0.5084827629757859, -0.9959874907849151, 0.7608364139386558, -1.1970996777698375, 1.9127937929371042, 0.38743478707694207, 0.21795474706617954, -0.29993899538603785, -1.4785086866034736, -1.5956467908439216, -1.2082094773229581, 0.03773293580577447, 0.790311941516555, 0.5111896121176778, -1.1940258469292004, 1.2227006637979814, 0.836882842830787, -1.4311686461788606, -1.2744460342013122, 1.4644637457684015, 0.9728193611804964, 0.555860074890682, -0.4409659816734968, -1.268835784551248, 1.830337701005201, 0.5659326920677746, -0.5949593269450844, -0.48933591057504616, -0.5902894454298842, 0.8313257587194035, -0.014541865211528828, 0.42819120074867917, 0.12344083343107326, -1.5259370836437376, -0.4422937354316872, 0.2663102136658507, 0.7711270876630171, -0.6631414912664546, 0.7010024223490354, 2.074527616332793, 0.1267033512168494, 0.5771332153363341, -0.1669943788998164, 0.37570932219774306, -0.009486467375681047, 0.6339720925542973, -1.100679804820569, 0.208089727845949, -0.9425617416684303, -1.4440593374039066, -0.4882367066101957, 0.7163657255326146, -1.0357588950466872, -3.0737220356886374, 0.2470950795522819, 0.2864288554119523, 0.1483978221958065, 2.1154989451643167, -0.4001965762118845, -0.6462203956080385, 1.1265359562700552, -1.2596675882237476, -1.0043123290637297, -1.2085727111478823, 1.4452610642730932, -1.5066630796353353, -0.26195290731609777, -0.14271399927968614, -0.6530276111308737, 0.31402361422899266, -0.615575261840529, -1.5382467581744872, -1.146638529472436, -1.2566936090246918, -0.11659270837613013, 0.35542964402643873, 0.02526277564568483, -1.7743572584114875, -0.7085383632824588, -0.63517949386522, 0.7100322417458258, 0.37725139473966673, -0.5759538564824571, 0.08180511402950946, 0.41407533287471754, -0.24200104577387313, -0.4385693241008144, 1.6526863394676001, -0.11474769466518762, -0.7778772946580198, -0.28839425476706665, -1.9107601252457116, 1.2251863883694925, -0.6102167805929645, 1.314166180001923, 0.33549111757526723, 0.1642165334041994, -0.2711391207536865, -0.7227241249586495, -0.20242746834599726, 0.511635243911443, 0.7803547739974653, -0.327423000785996, 0.3502846670812043, -0.6690281009028096, -1.603564129628161, 0.651294169982652, 1.5346475986331407, 0.6076831921328979, 0.09553225219459871, -0.7254748961580175, 0.5000694612537876, 0.41285641663749495, -0.6307563086891868, 0.10304359933774031, 0.6906693939179498, -0.6117088277209861, -0.37359085726781716, 0.6415372041475905, 0.5667199392606257, -0.471612466163586, -0.28409429557130345, -1.1000185275940002, 1.2078426552444212, 1.820822882585083, -0.049716516450738324, 0.48541676042055915, -0.24833733761952417, 1.9706194085315605, -1.9357972478544503, 1.2746428725319756, 0.8787450667483632, -0.5743399181816461, 1.146477625622449, 0.82904607165605, -0.6240307749078965, -0.5201093385684066, 1.7563590799610034, 0.9291759054010359, 0.03949431623274768, 0.09878351123218292, 0.4678794507416003, -0.21611204185496907, -1.9415038866503043, 2.2711411739440632, -0.7573422816803704, 0.4462925903632097, -0.7789087537529676, -0.5503182367952988, 0.5971424930574555, -0.07203878009168195, -0.5217028851935946, 1.082108216219426, 0.41790242250612963, -0.0679066357661384, -1.263509598957737, 0.8004808096290376, -0.2541222406082443, -0.2133433497515408, -0.26792364723437295, 0.20112906676382966, -0.32435552792181394, 0.23282205608740192, 2.2221675354748855, -1.4830106452698057, 0.9891247273398209, 0.2603986195227453, 0.4910300720533456, -1.357238648432873, -1.2514963996484836, -0.30125845912815724, 0.1928097450048526, 1.4448018223442105, 0.5625834185014028, -1.1979257187589254, -0.07857776228971138, 0.06045821558284647, 0.7133596907037718, -0.8010426610921747, 2.0440257915732163, -0.5915625781476785, 0.4614571279264127, -0.8323915586162163, -0.12281522077241769, -1.891751987785829, -1.436820011323204, -0.3375407922826853, -0.4583639388670451, -0.09352467965350812, -0.09376078246251955, -1.104789843452201, -1.9113071146131402, -0.3080107984257694, 0.6890879947469407, 1.6298325324990017, 1.7332383276272256, -0.6570721931348752, 0.5011093119580866, 1.4256340832824121, -1.6409542816000537, 0.3031292239641022, 2.064237216045931, -0.051705902095611905, -0.7832897005596622, -0.7454241686325258, 0.7295020332844333, 1.6375808311567626, -1.2299275543889183, -0.5600159935032863, 0.36276227989135124, -0.0841421034314566, -0.34511214955582953, 0.1013965878283084, -0.18098461747365058, 0.9191251794719164, 0.06765779742714738, -0.24919806799835556, -1.7584641099826481, -0.2408943706631287, 1.1586506587846426, -0.6941027599159496, -0.40284176463802435, -0.07218934233754541, -0.6866794606674014, -1.136814985867382, -1.0286542111302972, -1.0753215203338025, -0.523524292626774, -1.1218134808250722, -0.874089313385567, 0.09331272041243248, 0.9386738047553144, 0.09076349142987619, -1.2160470369625689, 0.27900325888755534, -1.3482125481314258, -2.0470437247953943, -0.40859660863279956, 0.2828811548709021, 2.4800984064132803, 0.19294989666278736, 0.28212861056292143, -1.610912083835489, -0.5315801864225906, 1.706608368850939, -1.8501729731293364, -0.630002988972623, 1.4757143328892797, -1.6396479208187233, -1.8371716642350544, -1.0742314481301545, 1.0754611432095824, -0.5378007226773498, -0.3178784375535398, 0.5735335996600629, 0.4868994275345122, -0.21549627729467807, -0.16640172916066487, 0.908080649370133, 2.173437328284729, 0.4190344084566232, -0.9569146506578511, 0.45263575951706014, 1.778059009562198, 1.4488553145210796, 0.07467679612778716, -1.3459068501008828, 1.0900502612985628, 1.8272758673855272, -0.23894381261705294, 0.12043314967623445, -0.5773200285051094, 0.5216921180645022, -1.5092635778866117, 0.18102168205190566, 0.8965052639560143, 0.9201255573471795, -1.2903912922821366, 0.9873211691804024, 1.172724388329733, 0.20376377055663986, 2.138854170658406, -0.9316113182700534, -1.2475280594655904, 0.417911924644604, 0.3104385253889033, 0.8962967028920321, -0.5778036698087538, 1.0180641994003492, 1.978139527067393, 0.37723162368545265, -0.3153731448300482, -0.28043983006620493, 1.2268346250368896, -0.17227523540812437, 0.2580612644636763, 0.7839164309552376, -1.6857109421253955, -1.3003167935540005, 1.933409068497346, -0.720369637396077, 0.5104055429987321, -1.08388129713197, 0.23369005993420508, -0.8857461821887489, 0.21884110679487903, 0.3399839311138383, 2.2927612097100596, -0.1302670929713838, -0.2227227695346543, -1.4346253879586792, -0.8344086694038684, -0.7002516953857244, 0.43509420272323845, 0.8609631356011878, -0.43270705045183616, -0.24001073577599197, 0.28609176501217787, 0.7031717689478829, 0.23204270200931182, 2.1505272334979897, 0.2861763181933207, -0.7584547841123832, 0.5168757252968688, -1.1092933224722437, 0.28264197275089215, -0.7359352757039123, 0.7696916736749783, 1.1693904145377578, -0.03894762164617204, 0.6641135169499479, -0.7147964181583462, -0.3596311141562558, -1.8435871360153697, -1.0008815336080084, -0.8745896149619665, -1.7854772192044157, 1.4101601051693955, 0.3989081511969654, -0.46138352582140285, -2.070033977081843, -0.18644561980439622, 1.2400855648899223, -1.164136732605302, -0.7927090251554685, 0.5630168884076489, 1.1671379510254194, 2.231868835700232, 0.4565350508345933, -0.3389202312449233, -1.5275179745183336, 0.3230936836149417, 0.6082923125809354, -1.385778896370543, 0.4933263314478739, -1.9751095768562033, -0.2065779574546836, -0.19565497391904002, 0.19507228882058708, 1.1491676003071556, 0.47753659551701444, 1.267566892973097, 1.2699972267061581, -0.14783471801597317, 1.3947086641636515, 0.13849276493060986, 1.543713937406089, 0.8793567120723491, -0.19166319681661234, -2.178011595451856, -0.047935435051166216, 1.0519017754831546, -1.1503195176998693, 0.9590735535318957, -0.4101942648351055, -0.9291595233845755, 0.04827969552760872, -0.006591472103865717, -0.8287084685787525, 0.510991782645471, 1.1993354234468527, -0.6249200800653011, 0.06906024810652203, -0.2810131831119284, 1.7132565332176783, 0.3715878450725023, 0.4232188686511501, -0.23751681917622205, -0.284138784599415, -0.9181240192735334, 1.7200351673814782, -0.5646085076036653, 0.9511857419563984, -1.2703881921689144, 1.044280055990386, 0.03786689772227966, 1.4182728427165774, 0.8337325218228854, -1.0587247347181652, -0.5031113248889103, 0.8873021806079839, -1.6837264548806383, -0.963353987660909, -0.3925379775035674, 0.030351645171583227, -0.1480784901933993, 0.5971587614103617, -0.5966536682782796, -0.32585054539846936, -1.2881189235714545, 1.4626168790196996, 0.4876451579697916, -2.5512587798294053, -0.22746942805830464, 0.22714076786745147, -1.2367287849167479, -1.4958341332392378, 0.8404569974160938, -0.5250803172042454, 1.1030214409483563, -0.9430810970721388, 0.8419017021480036, 0.10747778668821155, -0.3872490592960608, -0.5972525446631549, 0.9643730616194118, -1.9150859939615104, -0.16132999883201363, 2.247013458758037, 0.2793924489497806, 0.22445447609820876, -0.5935321078971101, -1.021619853538392, -0.5669336330928147, 1.51072676166332, -0.4577459477554841, 0.2856756020469671, 1.3003683403048245, 1.6681883000570241, 0.29140173625397836, 1.4448227513845624, -0.49337735263206095, 0.3063926208053877, -0.8839906748898476, -0.8508338033152001, 0.32884664967404276, 0.8225807552240499, 0.28615338220135916, -0.6459677898912536, 0.456084692916367, 1.1816323117108978, 0.005750129390048088, -0.23080308943910496, 1.2329424071409298, -3.103298270774514, 1.2457064642869893, -1.438732143788353, -0.5069669088042135, 1.9410370006144513, -0.680135288988108, -0.684441394790031, -0.9299498749943689, -1.0023257557431406, -0.20085573890294844, 2.1892107786913413, 1.0539082768590986, -0.12946159481571648, -0.9603859816501762, -0.6759566438229674, 0.6063321523892387, -2.04080451980182, 0.3448387208567922, 0.6188680405937481, -2.53483233750232, 0.4718381152261103, 0.5204602861759604, -0.37294274011868744, -1.0608122326322948, 0.876995543974861, 1.6208103493973607, -0.10501804755065293, -1.144605534391477, -0.11545809967020526, -1.5254381527091445, 0.704971452166678, -1.1385423962074352, -1.0702260829994228, -0.8042670395297246, -1.9958053298936345, 0.06149218869846654, 0.0034778293679331336, -1.6309611881902848, -1.579450043003391, -0.812854397163873, -1.3440391096930395, -0.7992158635130223, -0.7307305666236779, 0.563033821782763, 0.5929740847991084, -0.4072124328227139, -0.9597031772508735, 0.6326426393413165, -1.26743591058185, 0.012961789096372823, 1.3690236683244486, 0.5626351995527971, 0.3930969343026333, 0.3804639938085295, -0.7055289460485151, -1.1137071825718237, -0.32401279261679405, -0.25360651639701537, -0.3629288727538312, 0.40309857005433064, 1.6124254520554622, 1.145346015655076, 0.18482864793147852, 1.0146132489781052, 0.5762713361888263, -0.4302922143454036, -0.7781673008888688, 0.3165266777932903, -1.3210033528584464, 0.47419403592709836, -0.02875008939599337, 0.14714621419460175, 1.4797797158907586, 0.6830428568029596, -1.051712101999051, 1.194440018218743, -1.1642432883696971, 1.04395640790416, -0.3903019504585278, -0.9469832104094259, -0.15920476878484313, 1.2958603176641055, 1.2195200287127348, -0.18102374320360753, -1.1645019636692635, 0.31512163398607973, 0.4112140952226413, 0.799068132489134, -0.194553356476797, -0.24713828227948162, 1.1162744704218956, -0.5100587555940508, -1.7306779449877614, -1.3161139044492312, 0.6341932724742192, -0.7347849903121613, 0.9645835907250738, 1.5026031951659682, -1.4760744795962333, -0.06731259930616487, 0.7042872721353796, -0.5335137254930029, 0.0716602316769604, 0.6043539708627061, 0.11692324897196178, -0.05768277951806856, 1.1162713764449659, 1.8796989655172829, 0.43088724829364505, 2.38688392018114, 0.29310955804355704, 0.7462035664728303, -1.4923332297842067, -1.2280466714373701, 1.0734872965346725, 0.5262032697307816, 0.7693518738655505, -0.28211783832137927, -0.0290036682453748, -2.931607725174539, -0.61001449056912, -0.7025484586715276, 0.7759827155138221, -0.19166960568471056, 0.9694902932312826, -1.04530914742025, 0.9727250463770896, 0.06310226379325519, 1.0818373134406507, 1.1047859736064884, -0.9784634968885791, -0.9146592081968249, 0.15142025533299056, 0.23328387697346153, 1.482068026300734, 1.4017194403233817, 0.5839385941999119, -3.499091269336771, 0.6898991159514024, -0.76367161011779, 0.271889761583164, -0.2648955270675521, -0.05132512877225392, -1.1445243383154795, -0.9341941596618715, -0.2758301417114395, -0.12386224872925095, 0.3429318698923175, -0.20380183235337243, -1.442620516648269, -0.08857891832728218, -0.5685844707827721, 0.31653125437081814, -0.7630932541957661, 1.0549727437086984, -0.23903901917404402, 0.13881369002402355, -0.277058267581059, -1.1828348650720584, 0.41122688905564325, -0.11093465300197233, 0.05700186250342231, -0.8530057143017865, -1.1330141754733023, -0.788433518694048, 0.0410432386990952, -0.2526837758051426, -0.7365204396871289, 2.374275605228078, 0.24647701310468878, 0.6189709904599635, -0.3036782549769593, -0.6671553020762782, 0.9568820989023366, -1.079178482400065, 0.29500583173695416, -0.9289020636769935, 0.7791599475788574, -0.1983372320556875, -0.49097598732772324, -1.2327667862306246, -0.463786196952311, -0.7468162049628737, 1.8137576226948215, 0.4907226689424396, 0.3853672976926061, 1.405986757744362, 0.006148904928010884, 0.5727386445488017, 0.09397490448508446, -0.35506525618267476, 1.7351653184984497, -0.39253263749716394, 0.12196757373920339, 0.38004382713166907, 0.7006111800175882, 0.4987705634227367, -0.7645303868257485, -0.5146892069655717, -0.5835515156473441, -1.1547773890712476, -0.05898296492235115}; + + +static double gemm_checksum[64] = {-45.1525872455864, -53.56382313501859, 75.37190918194668, 81.51135315789973, -15.61415231827229, -60.60307561986312, 47.96036541651724, 65.73237574275608, -4.4727051387073935, -33.991042035520486, -26.416772446199882, 1.7860331769884112, 63.625439870165444, 11.62205632780551, -15.064831482590407, -47.33578990077392, 31.789427261811298, 45.60325302655279, 46.39784351481784, -41.63175282633895, -37.58415419207174, 52.811751728757756, 17.491718577483027, 95.99796882635259, -31.290609142980582, 56.18913870959351, -9.784406747318776, -47.798468293167936, -68.85425504150908, 14.518540879027748, 12.444849316598145, 27.044449299453333, 34.41753472048874, 37.24202029503455, 0.0015372059941842764, 56.49727200521621, 42.08187683985865, -60.80036174635206, -41.51354371054238, 25.39617622130028, 64.16199934240205, -49.723260643988866, -67.73199521937849, 14.061632619059395, -46.723037598164815, -1.4946901268404673, -19.516162199239137, 13.487866069963179, -23.19623129877386, 56.32942826668456, 67.64491765822369, 25.427295331888367, -3.9993280938311173, 70.5746407371274, 68.98981144920677, 11.672168486094769, 10.78240530670366, 31.25611590676771, 34.98838254510045, -129.95599475048968, 14.933419865189286, 35.74263691521163, 85.87277962177788, 93.68226272318962}; + + diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/layer.h b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/layer.h new file mode 100644 index 00000000..ba49ef72 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/data/layer.h @@ -0,0 +1,134 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +typedef enum { FP64 = 8, FP32 = 4, FP16 = 2, FP8 = 1 } precision_t; + +/** + * @struct gemm_layer_struct + * @brief This structure contains all parameters necessary for GEMM. + * @var gemm_layer_struct::M + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::M_p + * M divided by number of compute cores + * @var gemm_layer_struct::N + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::K + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::TA + * Transpose matrix A + * @var gemm_layer_struct::TB + * Transpose matrix B + * @var gemm_layer_struct::TILE_M + * Tile factor across M dimension + * @var gemm_layer_struct::TILE_N + * Tile factor across N dimension + * @var gemm_layer_struct::TILE_K + * Tile factor across K dimension + * @var gemm_layer_struct::A + * Pointer to matrix A + * @var gemm_layer_struct::B + * Pointer to matrix B + * @var gemm_layer_struct::C + * Pointer to matrix C + * @var gemm_layer_struct::ALPHA + * constant factor: A * B + ALPHA * C + * @var gemm_layer_struct::dtype + * Precision of GEMM + * @var gemm_layer_struct::expand + * Use expanding DOTP instructions + */ +typedef struct gemm_layer_struct { + uint32_t M; + uint32_t M_p; + uint32_t N; + uint32_t K; + + uint32_t TA; + uint32_t TB; + + uint32_t TILE_M; + uint32_t TILE_N; + uint32_t TILE_K; + + double *A; + double *B; + double *C; + + uint32_t ALPHA; + + precision_t dtype; + uint32_t expand; +} gemm_layer; + +/** + * @struct conv_layer_struct + * @brief This structure contains all parameters necessary for Convolutional + * layers + * @var conv_layer_struct::CO + * Number of output channels + * @var conv_layer_struct::CI + * Number of input channels + * @var conv_layer_struct::IH + * Height of input feature map + * @var conv_layer_struct::IW + * Width of input feature map + * @var conv_layer_struct::OH + * Height of output feature map + * @var conv_layer_struct::OW + * Width of output feature map + * @var conv_layer_struct::FH + * Height of filter + * @var conv_layer_struct::FW + * Width of filter + * @var conv_layer_struct::pad + * Padding on all sides + * @var conv_layer_struct::ifmap + * Pointer to input feature map + * @var conv_layer_struct::weights + * Pointer to weights + * @var conv_layer_struct::ofmap + * Pointer to output feature map + * @var conv_layer_struct::TILE_CI + * Tiling factor of input channel + * @var conv_layer_struct::cluster2cluster + * Flag for enabling cluster 2 cluster communication + * @var conv_layer_struct::im2col + * Flag for enabling im2col + GEMM + * @var conv_layer_struct::gamma + * Pointer to gamma for BatchNorm + * @var conv_layer_struct::beta + * Pointer to beta for BatchNorm + * @var gemm_layer_struct::dtype + * Precision of Convolution layer + */ +typedef struct conv_layer_struct { + // CONV2D + uint32_t CO; + uint32_t CI; + uint32_t IH; + uint32_t IW; + uint32_t OH; + uint32_t OW; + uint32_t FH; + uint32_t FW; + uint32_t pad; + + double *ifmap; + double *weights; + double *ofmap; + + uint32_t TILE_CI; + uint32_t cluster2cluster; + uint32_t im2col; + + // BATCHNORM + double *gamma; + double *beta; + + precision_t dtype; +} conv_layer; diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/kernel/mxfmatmul.c b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/kernel/mxfmatmul.c new file mode 100644 index 00000000..471bbc50 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/kernel/mxfmatmul.c @@ -0,0 +1,429 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#include "mxfmatmul.h" + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 2*kernel_n, respectively +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 1)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v24, 0"); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mxfmacc.vv v24, v0, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mxfmacc.vv v24, v12, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v24, v12, v8"); + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; // Question: If give the abs value 4 to here, then the + // performance is better. Why? + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 4*kernel_n, respectively +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 2)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v28, 0"); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v8"); + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 8*kernel_n, respectively +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 3)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v18, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v22, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v26, 0"); + asm volatile("vmv.v.i v28, 0"); + asm volatile("vmv.v.i v30, 0"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v18, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v22, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v26, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v30, v12, v8"); + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v30, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/kernel/mxfmatmul.h b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/kernel/mxfmatmul.h new file mode 100644 index 00000000..a6b7979e --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/kernel/mxfmatmul.h @@ -0,0 +1,55 @@ +// Copyright 2021 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#ifndef MXMATMUL_H +#define MXMATMUL_H + +#include + +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +#endif diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/main.c b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/main.c new file mode 100644 index 00000000..fe5d2e8c --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/main.c @@ -0,0 +1,249 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include DATAHEADER +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 8 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 4 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +//#define B2 1 + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 3; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0 && (i == 2)) + start_kernel(); + +#ifdef B2 + matmul_tiled_Bx2(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#else + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); +#endif + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0 && (i == 2)) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/script/gen_data.py b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/script/gen_data.py new file mode 100644 index 00000000..feada63f --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/script/gen_data.py @@ -0,0 +1,592 @@ +#!/usr/bin/env python3 +# Copyright 2022 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Author: Tim Fischer + +import numpy as np +import torch +import torch.nn as nn +import argparse +import pathlib +import hjson +import struct + +np.random.seed(42) +torch.manual_seed(42) + +global verbose + + +def array_to_cstr(a, fmt=float): + out = '{' + if fmt == float: + if isinstance(a, np.ndarray): + a = a.flat + if isinstance(a, torch.Tensor): + a = a.numpy().flat + for el in a: + out += '{}, '.format(el) + else: + for sign, exp, mant in zip(a['sign'].numpy().flat, a['exponent'].numpy().flat, a['mantissa'].numpy().flat): + value = sign * 2**7 + exp * 2**2 + mant + out += "0x{:02x}, ".format(value) + out = out[:-2] + '}' + return out + + +def emit_header_file(layer_type: str, **kwargs): + + file_path = pathlib.Path(__file__).parent.parent / 'data' + emit_str = "// Copyright 2022 ETH Zurich and University of Bologna.\n" + \ + "// Licensed under the Apache License, Version 2.0, see LICENSE for details.\n" + \ + "// SPDX-License-Identifier: Apache-2.0\n\n" + + if layer_type == 'Conv2d': + file = file_path / 'data_conv2d.h' + emit_str += emit_conv2d_layer(**kwargs) + elif layer_type == 'GEMM': + file = file_path / ("data_" + str(kwargs["M"]) + "_" + str(kwargs["N"]) + "_" + str(kwargs["K"]) + ".h") + emit_str += emit_GEMM_layer(**kwargs) + elif layer_type == 'Print': + file = file_path / 'result_check.h' + emit_str += emit_Print_layer(**kwargs) + elif layer_type == 'BatchNorm': + file = file_path / 'data_batchnorm.h' + emit_str += emit_batchnorm_layer(**kwargs) + elif layer_type == 'MaxPool': + file = file_path / 'data_maxpool.h' + emit_str += emit_maxpool_layer(**kwargs) + elif layer_type == 'FusedConv': + file = file_path / 'data_fusedconv.h' + emit_str += emit_fusedconv(**kwargs) + with file.open('w') as f: + f.write(emit_str) + + +def emit_conv2d_layer(name='conv2d', **kwargs): + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + weights = kwargs['weights'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + _, fh, fw, _ = weights.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {fh},\n' + layer_str += f'\t.FW = {fw}\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_weights_dram[{co}][{ci}][{fh}][{fw}] = ' + array_to_cstr(weights) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_linear_layer(input, weights, ofmap): + + layer_str = '' + return layer_str + + +def emit_GEMM_layer(name='gemm', **kwargs): + mat_A = kwargs['A'] + mat_B = kwargs['B'] + mat_C = kwargs['C'] + result = kwargs['result'] + + m = kwargs['M'] + n = kwargs['N'] + k = kwargs['K'] + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'const gemm_layer {name}_l = {{\n' + layer_str += f'\t.M = {m},\n' + layer_str += f'\t.N = {n},\n' + layer_str += f'\t.K = {k},\n' + layer_str += f'\t.TA = {int(kwargs["ta"])},\n' + layer_str += f'\t.TB = {int(kwargs["tb"])},\n' + layer_str += f'\t.ALPHA = {kwargs["alpha"]},\n' + layer_str += f'\t.dtype = FP{kwargs["prec"]},\n' + layer_str += f'\t.expand = {kwargs["expand"]}\n' + layer_str += '};\n\n\n' + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str += f'{dtype} r[{m}] __attribute__((section(".l1")));\n\n' + + if dtype != 'char': + layer_str += f'static {dtype} {name}_A_dram [{m}*{k}] = ' + array_to_cstr(mat_A) + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}*{n}] = ' + array_to_cstr(mat_B) + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}*{n}] = ' + array_to_cstr(mat_C) + ';\n\n\n' + layer_str += f'static {dtype} {name}_checksum[{m}] = ' + array_to_cstr(torch.sum(result, dim=-1)) + ';\n\n\n' + else: + layer_str += f'static {dtype} {name}_A_dram [{m}][{k}] = ' + \ + array_to_cstr(kwargs['bits_A'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}][{n}] = ' + \ + array_to_cstr(kwargs['bits_B'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}][{n}] = ' + \ + array_to_cstr(kwargs['bits_C'], fmt='char') + ';\n\n\n' + + return layer_str + + +def emit_Print_layer(mat): + result_str = "// Results Print:\n" + for row in mat: + line = " ".join(str(struct.unpack('f', struct.pack('f', x))[0]) for x in row) + result_str += "// " + line + "\n" + return result_str + + +def emit_batchnorm_layer(name='batchnorm', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + beta = kwargs['beta'] + gamma = kwargs['gamma'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_beta_dram[{ci}] = ' + array_to_cstr(beta) + ';\n\n\n' + layer_str += f'static double {name}_gamma_dram[{ci}] = ' + array_to_cstr(gamma) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_maxpool_layer(name='maxpool', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + k = kwargs['kernel_size'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {k},\n' + layer_str += f'\t.FW = {k},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_fusedconv(name='fusedconv', **kwargs): + + ifmap = kwargs['ifmap'] + kernel = kwargs['kernel'] + bn_k = kwargs['bn_k'] + bn_l = kwargs['bn_l'] + ofmap = kwargs['ofmap'] + ofmap_before = kwargs['ofmap_before'] + ifmap_padded = kwargs['ifmap_padded'] + + padding = kwargs['padding'] + + if kwargs['depthwise']: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + fh, fw, co = kernel.shape + ci = co + ih_pad, iw_pad, _ = ifmap_padded.shape + elif kwargs['chw_layer']: + ci, ih, iw = ifmap.shape + oh, ow, co = ofmap.shape + co, ci, fh, fw = kernel.shape + _, ih_pad, iw_pad = ifmap_padded.shape + else: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + _, fh, fw, _ = kernel.shape + ih_pad, iw_pad, _ = ifmap_padded.shape + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str = '#include \n' + layer_str += '#include "conv2d.h"\n\n' + layer_str += 'kernel_fp32 k = {\n' + layer_str += f'\t.ch_in = {ci},\n' + layer_str += f'\t.ch_out = {co},\n' + layer_str += f'\t.dim_in_x = {iw},\n' + layer_str += f'\t.dim_in_y = {ih},\n' + layer_str += f'\t.dim_kernel_x = {fw},\n' + layer_str += f'\t.dim_kernel_y = {fh},\n' + layer_str += f'\t.dim_out_x = {ow},\n' + layer_str += f'\t.dim_out_y = {oh},\n' + layer_str += f'\t.padding_y_top = {padding["padding_y_top"]},\n' + layer_str += f'\t.padding_y_bottom = {padding["padding_y_bottom"]},\n' + layer_str += f'\t.padding_x_left = {padding["padding_x_left"]},\n' + layer_str += f'\t.padding_x_right = {padding["padding_x_right"]},\n' + layer_str += f'\t.stride_x = {kwargs["stride"]["stride_x"]},\n' + layer_str += f'\t.stride_y = {kwargs["stride"]["stride_y"]},\n' + layer_str += f'\t.flag_relu = {kwargs["flags"]["flag_relu"]},\n' + layer_str += f'\t.flag_batch_norm = {kwargs["flags"]["flag_batch_norm"]},\n' + layer_str += f'\t.flag_y_accumulate_start = {kwargs["flags"]["flag_y_accumulate_start"]},\n' + layer_str += f'\t.flag_y_accumulate_end = {kwargs["flags"]["flag_y_accumulate_end"]},\n' + layer_str += '};\n\n' + layer_str += f'uint32_t dw = {kwargs["depthwise"]};\n' + layer_str += f'uint32_t chw_layer = {kwargs["chw_layer"]};\n' + + layer_str += f'static {dtype} {name}_pInBuffer_dram[{ih_pad}][{iw_pad}][{ci}] = ' + \ + array_to_cstr(ifmap_padded) + ';\n\n' + layer_str += f'static {dtype} {name}_pWeight_dram[{co}][{fh}][{fw}][{ci}] = {array_to_cstr(kernel)};\n\n' + layer_str += f'static {dtype} {name}_lambda_dram[{ci}] = {array_to_cstr(bn_l)};\n\n' + layer_str += f'static {dtype} {name}_kappa_dram[{ci}] = {array_to_cstr(bn_k)};\n\n' + layer_str += f'static {dtype} {name}_pOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap_before)};\n\n' + layer_str += f'static {dtype} {name}_pCheckOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap)};\n\n' + + return layer_str + + +def rand_data_generator(shape, prec, alt=False): + if prec == 64: + return torch.randn(shape, requires_grad=False, dtype=torch.float64), {} + elif prec == 32: + return torch.randn(shape, requires_grad=False, dtype=torch.float32), {} + elif prec == 16: + if alt: + return torch.randn(shape, requires_grad=False, dtype=torch.bfloat16), {} + else: + return torch.randn(shape, requires_grad=False, dtype=torch.float16), {} + elif prec == 8: + sign = torch.randint(0, 2, shape, requires_grad=False, dtype=torch.uint8) # -1 or 1 + exponent = torch.randint(0, 16, shape, requires_grad=False, dtype=torch.uint8) # < 0b01111 + mantissa = torch.randint(0, 4, shape, requires_grad=False, dtype=torch.uint8) # can be arbitrary + bits = {'sign': sign, 'exponent': exponent, 'mantissa': mantissa} + # TODO: not actually correct + return ((-1.0)**sign.double()) * (2.0**(exponent.double() - 15.0)) * (1.0 + mantissa.double() / (2**2)), bits + + +def conv2d(ifmap, weights, padding=1, stride=1): + n, ci, ih, iw = ifmap.shape + co, _, fh, fw = weights.shape + + conv2d = nn.Conv2d(ci, co, (fh, fw), padding=((fh - 1) // 2, (fw - 1) // 2)) + conv2d.weight = nn.Parameter(weights, requires_grad=False) + conv2d.bias = nn.Parameter(torch.zeros_like(conv2d.bias, dtype=weights.dtype), requires_grad=False) + ofmap = conv2d(ifmap) + + return ofmap + + +def max_pooling(ifmap, kernel): + n, ci, ih, iw = ifmap.shape + max_pool = nn.MaxPool2d(kernel_size=kernel) + ofmap = max_pool(ifmap) + + return ofmap + + +def batchnorm(ifmap): + n, ci, ih, iw = ifmap.shape + bn = torch.nn.BatchNorm2d(ci) + bn.weight.requires_grad = False + bn.bias.requires_grad = False + running_mean = torch.randn_like(bn.running_mean, requires_grad=False) + running_var = torch.rand_like(bn.running_var, requires_grad=False) + gamma = bn.weight / torch.sqrt(running_var + bn.eps) + beta = bn.bias - running_mean * bn.weight / torch.sqrt(running_var + bn.eps) + ofmap = ifmap * gamma.unsqueeze(-1).unsqueeze(-1) + beta.unsqueeze(-1).unsqueeze(-1) + + return ofmap, gamma, beta + + +def fused_conv(ifmap, weights, bn_k, bn_l, padding, stride, bn, relu, accumulate, depthwise): + + ih, iw, ci = ifmap.shape + if not depthwise: + co, fh, fw, _ = weights.shape + else: + fh, fw, co = weights.shape + ci = co + + ifmap_padded = torch.zeros(ih + padding['padding_y_top'] + padding['padding_y_bottom'], + iw + padding['padding_x_left'] + padding['padding_x_right'], + ci, + requires_grad=False, dtype=ifmap.dtype) + ifmap_padded[padding['padding_y_top']:ih + padding['padding_y_top'], + padding['padding_x_left']:iw + padding['padding_x_left']] = ifmap + + # Don't cover undefined behaviour when there are steps without a complete kernel window + if (ifmap_padded.shape[0] - (fh - 1) - 1) % stride['stride_y'] != 0: + print("Warning: rounding h output dimension") + if (ifmap_padded.shape[1] - (fw - 1) - 1) % stride['stride_x'] != 0: + print("Warning: rounding w output dimension") + + ofmap = torch.zeros((ifmap_padded.shape[0] - (fh - 1) - 1) // stride['stride_y'] + 1, + (ifmap_padded.shape[1] - (fw - 1) - 1) // stride['stride_x'] + 1, co) + if accumulate: + ofmap_before = torch.randn_like(ofmap, requires_grad=False) + else: + ofmap_before = torch.zeros_like(ofmap, requires_grad=False) + + if verbose: + print(ifmap.shape, ifmap_padded.shape, ofmap.shape) + + if (depthwise): + # depthwise Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw, c].flatten(), weights[:, :, c].flatten()) + else: + # Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw].flatten(), weights[c].flatten()) + + ofmap += ofmap_before + + # BatchNorm + if bn: + ofmap = ofmap * bn_k + bn_l + + # ReLU + if relu: + ofmap = torch.nn.functional.relu(ofmap) + + return ofmap, ofmap_before, ifmap_padded + + +def main(): + + parser = argparse.ArgumentParser(description='Generate data for kernels') + parser.add_argument( + "-c", + "--cfg", + type=pathlib.Path, + required=True, + help='Select param config file kernel' + ) + parser.add_argument( + "-v", + "--verbose", + action='store_true', + help='Set verbose' + ) + + args = parser.parse_args() + + global verbose + verbose = args.verbose + + with args.cfg.open() as f: + param = hjson.loads(f.read()) + + if param['prec'] == 64: + dtype = torch.float64 + elif param['prec'] == 16: + dtype = torch.float16 + elif param['prec'] == 8: + dtype = None + else: + dtype = torch.float32 + + if param['kernel'] == 'Conv2d': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + weights = torch.randn(param['channels']['out'], + param['channels']['in'], + param['filter']['height'], + param['filter']['width'], requires_grad=False, dtype=dtype) + + ofmap = conv2d(ifmap, weights, + padding=param['filter']['padding'], + stride=param['filter']['stride']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + weights = weights.permute(0, 2, 3, 1) + kwargs = {'ifmap': ifmap, 'weights': weights, 'ofmap': ofmap} + emit_header_file('Conv2d', **kwargs) + + elif param['kernel'] == 'GEMM': + mat_A, bits_A = rand_data_generator((param['M'], param['K']), param['prec']) + mat_B, bits_B = rand_data_generator((param['K'], param['N']), param['prec']) + mat_C, bits_C = rand_data_generator((param['M'], param['N']), param['prec']) + + print("Mat_A Original:") + for row in mat_A: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + print("Mat_B Original:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + result = param['alpha'] * mat_C + torch.matmul(mat_A, mat_B) + + print("Result:") + for row in result: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + if param['transpose_A']: + mat_A = mat_A.T + if param['transpose_B']: + mat_B = mat_B.T + + print("Mat_B Transposed:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + kwargs = { + 'A': mat_A, + 'B': mat_B, + 'C': mat_C, + 'result': result, + 'M': param['M'], + 'N': param['N'], + 'K': param['K'], + 'ta': param['transpose_A'], + 'tb': param['transpose_B'], + 'alpha': param['alpha'], + 'prec': param['prec'], + 'expand': param['expand'], + 'bits_A': bits_A, + 'bits_B': bits_B, + 'bits_C': bits_C + } + + emit_header_file('GEMM', **kwargs) + emit_header_file('Print', mat=result) + + elif param['kernel'] == 'BatchNorm': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap, gamma, beta = batchnorm(ifmap) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'beta': beta, 'gamma': gamma, 'ofmap': ofmap} + emit_header_file('BatchNorm', **kwargs) + + elif param['kernel'] == 'MaxPool': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap = max_pooling(ifmap, param['kernel_size']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'ofmap': ofmap, 'kernel_size': param['kernel_size']} + emit_header_file('MaxPool', **kwargs) + + elif param['kernel'] == 'FusedConv': + ifmap = torch.randn(param['dim_in_y'], param['dim_in_x'], param['ch_in'], requires_grad=False, dtype=dtype) + if not param['depthwise']: + kernel = torch.randn(param['ch_out'], param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + else: + kernel = torch.randn(param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + + bn_k = torch.randn(param['ch_out'], requires_grad=False) + bn_l = torch.randn(param['ch_out'], requires_grad=False) + + ofmap, ofmap_before, ifmap_padded = fused_conv(ifmap, + kernel, + bn_k, + bn_l, + param['padding'], + param['stride'], + param['flags']['flag_batch_norm'], + param['flags']['flag_relu'], + not param['flags']['flag_y_accumulate_start'], + param['depthwise']) + + if param['chw_layer']: + ifmap = ifmap.permute(2, 0, 1) + ifmap_padded = ifmap_padded.permute(2, 0, 1) + kernel = kernel.permute(0, 3, 1, 2) + + kwargs = { + 'ifmap': ifmap, + 'ifmap_padded': ifmap_padded, + 'ofmap': ofmap, + 'ofmap_before': ofmap_before, + 'kernel': kernel, + 'bn_k': bn_k, + 'bn_l': bn_l, + 'padding': param['padding'], + 'stride': param['stride'], + 'prec': param['prec'], + 'flags': param['flags'], + 'depthwise': param['depthwise'], + 'chw_layer': param['chw_layer'] + } + emit_header_file('FusedConv', **kwargs) + + else: + print("No valid kernel selected") + + +if __name__ == '__main__': + main() diff --git a/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/script/matmul.json b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/script/matmul.json new file mode 100644 index 00000000..3eb11985 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul-m8n4k4-b4/script/matmul.json @@ -0,0 +1,17 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Solderpad Hardware License, Version 0.51, see LICENSE for details. +// SPDX-License-Identifier: SHL-0.51 + +// Parameters for a GEMM + +{ + kernel: "GEMM" + M: 64, + N: 64, + K: 64, + alpha: 0, + transpose_A: false, + transpose_B: true, + prec: 64, + expand: 0 +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul/data/data_gemm.h b/sw/spatzBenchmarks/dp-mxfmatmul/data/data_gemm.h new file mode 100644 index 00000000..26253785 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul/data/data_gemm.h @@ -0,0 +1,4144 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#include "layer.h" + +const gemm_layer gemm_l = {.M = 64, + .N = 64, + .K = 64, + .TA = 0, + .TB = 1, + .ALPHA = 0, + .dtype = FP64, + .expand = 0}; + +double r[64] __attribute__((section(".l1"))); + +static double gemm_A_dram[64 * 64] = { + 0.2995562877502637, 0.24237779080894106, 0.28320739441795323, + -0.23294220898382634, 0.6711532211923003, 0.7817673742546976, + -1.7903080050220619, -1.748402801489203, 0.17347640142361004, + 0.26684314514213736, 0.4285173645433462, 0.2318702888580676, + -1.0214571469180447, -0.8272632292381021, 1.7342104609172728, + -1.4920727283504345, 0.4212009947066779, 1.504572275678796, + 1.2715909667771088, 0.618669993885617, -0.03720300727052493, + 1.0352472972512925, -0.010085521702337353, 0.08948016046560357, + 0.08403017765893717, 0.3900034836035703, -0.5798414554742108, + 0.875893884648022, 0.39238484373268534, 1.108461181451433, + 0.8651734647119074, 0.855215961472287, 0.6551143052731048, + 0.6284835523998145, -1.2405276437359183, -0.32069813902911876, + 1.9312142505772192, 0.14532018661151294, -0.6426551784819938, + 0.8636024370428342, -0.28692658848988356, 0.6076122224111371, + 0.6058412077786697, 1.3109621860249783, -0.226715890674857, + -0.21202045663845112, 0.5717787885763634, 0.6217140784054469, + 0.16048920142982762, -0.9214988800859956, -1.108152357089335, + -0.18737793842779638, 0.4428268084752764, -0.23210767943346114, + -0.03265155768725795, -2.4472388194699217, 1.4654350727468453, + 0.9460834933616517, -1.1149258145774585, 1.1145903864961688, + 0.03089355171661811, -1.3457475275202437, 1.1755166198951001, + -2.6327923840518515, -0.3402723143550538, 0.9906934705391687, + -0.8522497497179303, 2.1413916159323136, -1.3971667891606305, + -0.3466771947976861, 0.8272179859465014, -0.8144713393247613, + 0.87049067708538, 0.42876533202174155, -1.0822943886075476, + 0.08978802838707413, -0.5701157444892732, -0.43797201089529525, + 0.9723184024569489, 2.5161385989502594, 1.417476842717687, + 0.9893999456810375, 1.3602887543809026, -0.09352909908052096, + 1.7962695897011005, -2.7218123037264546, 0.6793039385517347, + -0.4281911334985128, 0.10439951327040194, 0.6829997901277192, + -0.6505400281702892, -0.5982505878283358, 1.104934291883692, + 0.07340003052572891, -0.26503771215326066, 1.53173972311803, + -0.4234650258705706, -1.2932401334189778, -0.33809498992556575, + -1.7333080707300015, -0.8419343543824934, -0.5396385130105458, + -1.5231894436921225, 0.5315326394037233, -1.2034415205611886, + -0.42457720716015085, 0.07730565131249138, 1.8754720735908623, + -0.4534667104093323, -0.7925668941744968, 0.9535707528995508, + 1.1519037944728634, -0.13315541187567187, 0.08438003070731266, + -0.09100868239112153, -1.260561108016399, 0.8441868298852333, + -0.09287318729238316, -0.6985651606872716, 0.21403879685760624, + -0.1558016358619296, 0.23432766680511513, 0.6822389778186558, + 1.092646154841347, -2.0855244747434423, -0.43826430885192064, + 2.4477905540112914, -1.2867459190214319, -0.7331361007165538, + 0.02971415623949211, -0.44976485629065605, 0.5125347764599241, + 0.9635794871121548, -0.6281530761889705, -0.26829634814791053, + 0.7101594539703159, 0.07767737996636266, -0.14202016911094215, + -1.922962357248398, 1.981160746670956, 0.6291940423652077, + -0.8662414779896375, 0.30459236840252873, 2.1301275306235565, + -0.031142489440454883, -1.0110560351499196, -0.7547012361469367, + -0.1504751849288266, -1.0343187759704584, 0.4319095829234074, + -0.21825697811845282, -1.059395117948861, -0.9331956574757799, + 0.7418633974455897, -0.6416015466878071, -1.1449408682286504, + -0.2216721956818539, -1.420713573549913, -0.476969896992711, + 0.9096040699613742, -0.7038921871424687, 1.5214450634475556, + -0.6507369068478477, 0.7751228541207369, 0.22993705977460382, + 1.0133904557056803, -0.9822868898637884, 2.425005496346911, + -0.03315290272508095, 2.059923212244384, -0.9175734236430358, + -0.13843588731523931, -2.200242275592898, -1.1737601958122919, + 2.3141540243381327, 1.8193583560461684, -0.02606758800262461, + -0.15813365028362542, -0.4990858233389999, 1.3612493070253837, + -0.18967721053619913, -0.3885493746810846, -0.78645738020847, + -1.769258018600366, 0.2863012087770702, -0.2101644250728928, + -0.922379116692611, 0.4542988582917103, -1.168731602563987, + 0.9219834856645437, -1.5306804207222386, 0.023687715374861383, + 0.24904992357977876, -0.5595901539006848, 0.8956621506501764, + 0.04378461171949896, 1.6459648576014418, 0.41662757007673235, + 0.6518019493570052, 0.38131542509896527, -0.23150035949424588, + 1.2160699112636764, 0.08806271189112921, 0.6308029102131235, + -0.34934190685175504, -0.698883217299044, -1.5400984867493595, + -0.5138258202566868, -0.8326722177147288, 0.3555538090114088, + -1.7180388726188185, 0.013161284807438048, 0.17891679769777372, + 0.675401077688519, 0.7094535110109988, 1.8141622548156382, + 0.46742788122395995, -0.8301903074578377, 0.5800148267422183, + 0.0506475437751616, -0.6755331480708628, -0.5170525025832357, + -1.0310269968302381, 1.0266955308406385, -0.5373877604116372, + -0.6849286438665895, 1.0066107886868416, -0.31691218246652836, + 2.1807319429357963, 0.3954366945921875, 1.54663939130953, + -0.1729693166437901, 0.002840677025019378, -1.3705193782077094, + -1.2542332261046765, -0.17928341987650082, 0.30056229131177675, + -1.2411619166267582, -0.7604763355807861, -0.9971481442759493, + -0.349041502695088, 1.4026313276860414, 1.4061442335836205, + -0.1791036479495098, 1.0127676186224994, 0.6204230823178866, + 1.6317833840380092, -0.7482913095490172, 0.013824710906791784, + -0.3287020311202719, 0.2805330310458293, -0.3815781043999949, + 1.0504938948460687, 0.22899320285046032, 1.5547745398580755, + 1.3818135139012033, 0.4780347016744464, 0.9340946495293597, + -1.149354106366614, -0.07195237845460918, 0.09414818556627164, + -0.23035924547300898, -1.8998197674219859, 0.9478581977287968, + -0.5774972459244567, 0.6273242190434466, 0.08511336387296158, + -0.1733949212480647, 1.2335858050609876, 1.3917635799868133, + -0.9181737147627111, 0.8067649829193638, -0.20314173587596263, + 0.19522143581405244, 0.24917168366560993, -0.46610241187034174, + -0.9029006394421663, -0.4005606761098726, -1.3514084083199862, + -0.9017993731080081, -1.6874596492942056, 0.8505308967944145, + 0.6772607869261693, 0.07380298739515019, 1.9920454844101763, + -0.33044907219753716, -0.39032216747009113, 1.498700405481595, + 1.797754234791071, 0.23182973839731683, -0.4778501888006765, + 0.29946965798993297, 0.8488782882116401, 0.3315215039285197, + 0.12891223912089034, -1.2238040021173409, -0.6243273110799229, + 0.002119877636176426, -1.0103642468106544, -1.1195878651441893, + -1.2632446956429335, 1.452604901391212, 0.6929251584566181, + 0.3435160724199721, 0.23274595474814475, -1.2546554715250677, + 0.8387576576827396, -0.6354031061312012, -1.2173643223619721, + 1.231436269706581, -0.12220432019599553, -1.5066610314377438, + -0.131168025357405, -0.03123667988254042, 0.5124772757514626, + 0.8173767150222387, -0.2772483620390129, -0.8170580592759659, + 0.11041826907812055, 0.024119499618272, -0.9954168307888536, + -0.7025528681323762, 0.41098923499226014, 0.7739177723108309, + -1.2762292342683303, -0.1434065696905791, 0.199025684270468, + -1.5400573604406471, 1.548288167937, 0.9288465316923816, + 0.08390244767011035, 0.3572785103117973, 0.17859923880951847, + -0.6768899292657692, 0.8504258697467754, 0.9425485271043043, + 1.8547476587140206, -0.03019556689050345, -0.2256181742270194, + 0.19368409881631005, 0.5058710736668895, 0.1038460098414191, + -1.4076687315200758, 1.029960808199997, 2.177326020841736, + 0.4365480813048655, -0.42153332375097163, -0.9320608828189856, + 1.8110431275164358, -1.4858191479600487, 0.7389689210845545, + 0.6644577289945207, 0.09402273928088646, -1.4671607394596426, + -1.219750082862799, -1.3274229125145334, 0.6099936154303692, + -0.11014269025953972, -1.3293671463788634, 0.7101787049919178, + -0.01670896018294231, 0.43343311885236446, -0.014621424093204098, + 0.6955788134794414, 0.5722528182048355, -1.481720319316519, + -0.15323533618009222, 1.090316288383937, -0.9430074874135619, + -0.1734020738525506, 0.9803566659279874, 0.0627858851186502, + 1.0423699879551078, 1.5545069571528942, 1.5849730687530486, + 0.7199388940089966, 2.6380786365181796, -0.27680484002022715, + 0.1962794539558957, 0.8731470189472956, 0.010205327986369436, + -0.8838416943783096, 0.8068577169597195, 0.29925023340409146, + 0.8239191817788585, 1.0202696745617659, 1.3346481596559676, + 0.36384746366328413, 0.7611949933670529, -0.8829189545685341, + 0.26915516555170543, -0.09599439254200862, -0.6554716217755595, + 0.6816100143946399, -0.29262366803238393, 0.9362614654567366, + 0.1418089057088939, -0.4836971414215709, -1.242898069994524, + 0.2730005353024221, 0.11501735450468505, 1.0157942265133257, + 1.6129488803273395, -0.19175241722939693, 0.6164470190315824, + -0.20570447804044192, 0.42155963063098567, -0.5707540620409073, + 0.6536593231539053, -0.29432626362033404, -0.47610390457226875, + -1.3121219556703199, -0.9264218514606051, 0.14788650580579352, + 0.0069296369726892315, 0.3306231644074124, 0.8545701717376761, + -0.4324600332331524, -0.024493143878920487, 1.980986216379721, + -0.2658724362020457, 0.011103897250099562, 1.0111021595209633, + -1.1665892611773085, -0.7991803895400539, 0.18661178764402744, + 0.8742346952912949, 0.22713168745929768, -0.5133236613036435, + -0.5447919995948828, -1.4490806809539707, -0.5830552203885363, + -0.007188030468140175, -0.296150919949663, -0.7591698936771379, + 1.1809578134345797, -0.14668266051521825, 0.5946658094550371, + -0.4752871063125886, 1.1838674589073483, -0.48408003859590065, + -0.34832623473704294, -0.031424129829246916, 0.6027021077218985, + -0.1269124796513161, -0.132580840204314, 0.8622146933847438, + -0.6652501624993471, -0.018728729244763993, 0.056387506785403815, + -0.48921141096064424, -0.7306000207552646, -0.6274502774485388, + -0.6020537188199624, 1.313122245567395, -0.14388808008330586, + 1.3163800108985646, -0.12593952342837475, 1.25609380794485, + 1.1658575421017066, -1.7009294128404835, -0.3443663683433915, + -0.9552666410033216, -2.123695546730074, -0.9533932980859413, + 1.5109902204218253, -0.062040923189698165, -1.7641855643145632, + 1.4985053270616493, -0.4079372826543253, 1.429769590030981, + -0.2897447883816845, 0.7736151342348289, 0.6104204582278638, + -0.5422032040096507, -1.149255707834347, 1.7075504892947724, + 1.4528943457305363, 1.5535736491676595, 0.8145713078829363, + -0.12165398416725498, -0.13585017018841927, 0.8520383693040029, + 0.7245001435289563, 1.3299880805922875, -0.1805351705743782, + -0.22203877342660364, -0.5230311319816758, 0.045765518028111664, + 2.1112388578012884, 1.9700777629678679, 0.1456185008563352, + 0.6952680695280342, 1.289500316820128, -0.3238211924056418, + -0.8891278822176073, -0.42661916146469137, 0.6485611566020152, + -1.128094765763347, -1.5840451502971633, 0.6965634921004461, + -0.33600719481813285, -0.3359458033736853, -1.3453794288815801, + 0.782406872557914, 0.16436581820924961, -0.6098672123657596, + -0.5846446870404606, 1.7665907233368394, 2.253287365111219, + 2.1818716851528808, -0.5497385523974774, 0.13346330686979527, + 1.4238494481371482, -1.024560317933999, -2.1184228571205432, + 2.7190025950526526, 0.12139097966886359, -2.264633819910481, + 0.3073860300996402, -0.7067903733730903, 0.6106696781448256, + 0.9068876194863097, -3.317724464737154, -2.0497241895681757, + -0.10894532272353238, -0.7411727659275126, -0.12690932620061937, + 0.9755465820040533, -2.2324805857840126, -0.41172630952063033, + -1.0396879806496875, 0.38836715314064946, -1.148341236578185, + -0.13701257775185274, -1.2830157440037042, 0.5193131643764798, + -1.0320197896016023, -1.809474915977338, -0.1212982442332069, + -0.2953960807718986, 0.40810561816935464, 2.080423035876765, + -1.6117772384994753, -0.7770214056299425, 0.379905274145285, + -0.9775608318995274, -0.48822228555618374, -1.3000959690754121, + 1.4827558216775214, -0.8285588045938762, -0.6205741491240148, + 2.1497158382519235, -1.1455161335907829, 0.844733308455809, + 0.8508105491449758, 0.3061881865842359, -0.5136891309162446, + -0.11046637288796825, 0.4878869471857865, -0.5131842262175592, + 0.08157970174938708, -0.48327399294734996, 1.5494731988925168, + 0.059525595286359326, 0.560337204317833, 0.6318144321904159, + -1.7948551540624313, -2.440206368576267, 0.5654999312912312, + -0.6693129837816646, -0.8345726953909537, 0.05563606786609529, + 0.11995542081423934, 0.5998747719913895, -1.6482501392785356, + 0.18996944175263808, 0.603530025130453, -1.3260639610027685, + 1.9579409009069817, 0.06554413856695715, 0.3899927059446832, + -0.8570262343091058, -0.8140874120394594, 0.6530495473603715, + -1.3205023718336957, 1.4463956827881592, -0.6955344996109667, + 0.859036998403129, 0.27126294568239095, 1.8807687476094996, + -0.05881285078150477, 1.1510677794844635, -2.1598758970478302, + -1.387711080066175, -0.779366472482911, 0.542636780326917, + -0.9998595017431842, -1.6364853454862702, 1.5308606521156258, + -0.15272340779879137, -0.7474152589725457, -0.1530695247591354, + -1.2770378677003342, 0.22379393827708674, -1.95976131874838, + -0.7884119049961946, 0.23925119616572765, 3.0843102220187633, + 2.204709247318846, 0.9671035281600022, -0.6015194657963759, + 1.9106686856645196, -0.017570965456876506, -0.06254843505777236, + -0.7926727266835605, 1.8947383625846692, 0.6468787552277963, + 0.704684219382097, 0.2565189930017906, -1.4057495378342344, + -1.0808628096566764, -0.4273012936563684, 2.287956668802193, + 0.5526482370477976, 0.142964149258401, -0.7930994287718156, + -0.5786351421939423, 0.1616835183072944, -2.689381825560445, + -2.0035925209937995, -0.43019404089477187, -0.32497931191317414, + -1.2294649564907443, 0.05854823882802772, 1.7607346842800078, + -0.49594780886248946, -1.4696350425430305, 1.269091194574501, + -0.884671817225045, 0.0807615803099693, 0.5077333887313688, + 0.304270254383685, 1.5824852577508077, 0.4716519250182116, + -0.9607904064463364, 1.4597512716514713, -0.38639502943884424, + 0.4659928495863631, -1.2913394509133977, 0.024423790012846384, + -0.05776065052087469, -0.644036723587402, -1.514758454423881, + 0.3626037495002716, 1.756443180184832, -0.5869030814107414, + 1.2593028322942528, -0.340947718595298, 2.207695578155158, + 0.6951962730289927, 0.6947642434919321, 1.2736538935419954, + -1.7039409548401039, 0.18861681148233045, 0.4579767141523542, + -1.8789407232333342, 1.1325984777976321, 0.43671727579331154, + -0.6955731648941668, 0.5909184719641842, -0.8761414392960942, + -0.5735331920138907, 0.26485631537640625, 1.153689142566015, + -1.6172676643688644, -0.7137843919114272, -0.004609597655560631, + -0.591808771914277, -1.0211709179461228, 0.6622884149541679, + 0.611943061415204, -0.162129505874177, 1.4938404772180522, + 0.8407858992660718, 1.8174697527666106, -0.9696281260065643, + 0.7699322703630633, 1.688709572678028, -0.2618739541353086, + 1.4059432066016413, -0.5895552326475855, -0.05711374038137653, + 0.7308571090935566, -0.4257290444557625, -0.24652477255422542, + 1.4961023491676013, 0.25902030686035765, 1.5913375580679756, + 0.590108990863298, -1.3269259225493335, 0.8247851368961774, + 0.4794641862284306, 1.239178450003301, 0.41946015140529674, + -1.02228304173901, -0.6273635004355048, -0.6286704687439647, + 0.9193684651720564, -1.125225644513147, -2.247205808116544, + 0.8178069723083835, -1.7216065309582145, 0.3308046207711071, + 0.07037045527138296, -1.2470259813686277, 0.7465640363343465, + 1.1236395260389371, -0.901284920834397, -1.8393473423011502, + 1.457813522969226, 0.2982753351251207, -0.5522345751716979, + 0.011250176636954672, -0.5433769113297531, 0.027717906354865082, + 0.5734589140951897, -1.5664807121482967, -0.6555190564641905, + 0.521961207539444, 0.32024874494404343, 1.8372706762077982, + 1.0847219277436837, 0.3665684218008724, -0.506672978923869, + -0.0660291206367521, -1.4522203291737121, -0.4763976850787918, + 0.23449566822494436, 0.9401533066766986, -1.244264362290661, + -0.6576403996011381, -0.3912248051013657, 0.2132005776593881, + -0.7013462750206747, 0.8833144877181079, 0.8951579913045912, + 2.6779598810353225, 0.36248256904087583, 0.26317282721818835, + 0.2580803877827819, -1.2840589899911636, -0.8595430115504922, + -1.7391046125842329, 0.5987174412346722, -0.4790660968302261, + -1.0009161837866754, 0.8160531051827333, -1.527546407704811, + -0.23161600262281976, -0.9169925661510694, 1.1536049623647049, + -0.40278351922650607, -0.35741798345451153, -1.9473525260009101, + 0.9148458058134971, -0.14812844625039906, -0.20686408486978222, + -1.3221584274660605, 1.0841297942511154, -0.864758376903117, + 1.1174296841710698, 0.12202574123467505, -1.4379655080311924, + -0.7949319926075188, 0.24943584530698598, -0.05700776373524006, + 2.0712307224954674, -0.9787309005385717, 0.5288924819697196, + 0.43438863938401984, 0.0031548489024193003, -1.8202790460193656, + -0.02297096125752481, 2.0503199405113706, -0.061837796219370904, + 1.4855852794311764, 1.850491258358576, 0.6391454162969747, + -0.21242379812703974, -0.020780063653957327, -0.2427246425452274, + 0.8121769075682133, 1.1872866756259406, 0.9382361849222579, + 1.5263532189403517, -0.08790829161953824, 0.16964112109884352, + -0.36212270482618497, 1.3293513220384825, -0.4419944634213407, + 0.8584886934901282, 0.7087186561094931, 1.1690740710716336, + -0.5050782797778097, 0.5502897408064048, -1.264625107579972, + -1.128243178397043, 0.9541627279264773, -0.5333769913585662, + -0.20695218709712568, 0.49101133113120243, 1.2954089803971967, + -0.4901943459756449, -0.3913051481757693, -0.6234744959310314, + -1.9873903000732074, 0.3852736787379978, -0.23316848396889817, + -1.06906722027293, -0.6118481578548427, 0.7226526120697837, + 0.11228583803533418, -0.8993418416628162, -1.1955451753729813, + -0.4409374559005072, 0.5243841797548443, -0.42450556612989615, + 0.4297670077790326, 0.9001838057649912, -0.006581727072356131, + -0.620495126954499, 0.46700278861928723, 0.6600059658549468, + -1.0813730160200128, -0.34889427804997897, -1.3217622633045483, + 0.3727169342367613, 0.08667290592050396, -1.6685397004302298, + -1.0350451028798564, -0.3386972075915535, -0.985820806311947, + 2.5064779220476376, 0.3281878803866474, 0.5143771232291072, + -0.2906445690610249, -1.1880599421803792, 0.7093874142064377, + 0.24766987368776427, 0.2672756574827596, -2.021019599490311, + -0.39816415540770655, -0.35637099082932283, 0.49482862922777465, + -0.5073118474816601, -0.929884933785043, -0.8919914961789093, + -0.92789390971797, -0.9712191679734525, 2.048440256292676, + 0.59801535888525, -0.15644532147921494, -1.116297697923303, + 1.4382328249156382, 0.4742282779073321, 2.315456482213615, + 0.41611617343791296, -0.8808931261653652, -1.42213674320648, + -1.2404962116839235, -0.9363848730494202, -0.899312646918738, + 0.29094958787958103, -0.12739207920780846, -1.2665816828938377, + 2.179937643276768, 0.21389684803719178, 0.05784031807603419, + -0.671324911467819, -0.4138960024201802, 0.2706183364237272, + 0.2802920667435499, -0.6792154903389193, -0.18016770542870633, + -1.3352980446651361, 0.13621565634321928, 0.6361186775847667, + -0.6170103130896376, 0.02840989750857299, 0.9146548225539167, + 0.14571459871197492, 0.6967400087768053, 0.6094254527734683, + 1.8590918614847836, -1.6726069773891121, 0.8445823549282497, + 0.5529895567096951, 0.997991850817377, 0.49134730013314215, + -0.5071857064533738, -0.699622693536108, 1.1696801481884702, + 0.3782115611225297, 0.44706160647953386, 1.44017146059469, + 0.990643290368379, 0.13256218985493962, 1.5886336771168668, + -0.579126585596691, -0.6047821885765065, -0.013481234821095128, + -0.5537763930281832, -0.06480982392192557, 1.2916562025813139, + 0.5121269879811529, 0.19241754110954368, 1.05805011001695, + -0.015422002750152309, -0.2604603812395411, -0.5360435812878344, + 1.1334557143017412, 0.3573722166002946, 0.3899590736303808, + -0.31507295414269654, 0.1144179100372435, 1.9999413141571094, + 2.4488104808936493, -0.48840655366597163, -0.5753574907768261, + 0.5734085911138078, -0.6458100785379858, -0.032048796436221154, + 1.3277786760361687, 1.047502591195173, -0.5706374980256799, + -0.8152715128376032, 0.05819716648813362, 0.8348604945110601, + -2.2618786266770643, 0.3369312365937199, -0.3717647502610429, + 0.8550957042841542, 1.4097204921161488, 0.8899056401717678, + -0.2592049945947187, -0.5738783430402962, -0.364632760285267, + -0.06612270522780948, 0.4600454100781274, -1.8871797555136716, + -3.2590072774815586, 1.4095581263320807, -1.1825817231688467, + -0.7120980746820729, -0.6412087574310469, -1.609734635530038, + 1.0875663945370075, -0.5914659713862586, 0.1465398461641377, + 1.3019340290708845, 0.7323856221618156, 0.36068863811318463, + -0.5616692295013568, -0.2655220037590903, 0.3344572214184909, + 0.8900182108394689, 0.8811328264048767, -0.027078634857837874, + -0.23178354493628234, 1.0763690216500268, -0.5782450538093661, + 0.7006877821801691, 0.9847648224117718, -1.0347613496413428, + 0.7944059476969486, -0.7732806055161906, 0.08934191578205063, + 0.7388050176954863, -0.8895230526460256, -0.835218553213963, + -1.8597460454623918, 0.24853208035785185, -0.15107765981874388, + 1.3946491399984025, -0.8737930996086417, -1.0427812337080475, + -0.14884400882014526, -0.90485439549858, -0.25332197648462423, + 0.8305024600077695, -2.062594376376904, 0.5380534777302792, + 0.6851653185678168, 0.2141878125426338, -1.0528125578486207, + 0.7634824898379703, 0.2556207716425529, 0.08580015356101996, + 0.5990291318233845, 0.7629575394167195, -1.635505435400148, + -0.7720334712821033, -0.7306901806421247, -1.250662917555403, + 0.6263961964819627, -0.4155658786618593, 0.8544108257491024, + 0.36553334768552004, 0.5295297470202731, 0.24044416879470595, + -1.6361624867259377, -0.43387632610976606, 1.6279732482605165, + 0.09851177778540401, -0.3110607524822321, -0.7987154250978998, + 0.7467893991401736, -0.13210512906518346, -0.22100505432393036, + 0.9738535255832226, -0.30241759525823037, 0.16284752539836636, + -2.164946991193342, 1.8448885093030065, 0.572007132100381, + -0.9020532459752512, 1.423932009681719, 1.1116421563744774, + -0.609918694875925, 1.0390897743423966, -0.1305603800084962, + 0.7049709576256773, -0.30985592801910117, -0.6566307196626123, + -0.005304890708390932, 0.47214213858952303, 1.247922968974058, + -1.434297700901899, -0.5773871236273995, 1.9951334816061994, + -0.9419344596787323, -1.3864755081036366, -0.15540161000210675, + 0.28089640344542804, 0.6902199813822665, 0.055137779443554184, + -0.1316442026885298, -0.47920924486264665, -0.37134570058665717, + 1.1612473442212157, 1.862246649641681, 1.1127961330998304, + -0.449879365783737, -0.4581821737978766, 2.681801981114757, + 0.622613137075688, -0.5264955185026189, 1.7456452297639542, + -0.0032580522874735246, -0.08412480377121889, -0.09847618283385187, + 0.5573182638994464, -1.1975598741016937, -0.25042914816475237, + -0.24189491229960913, 0.1717462405241003, 0.5303343737606813, + 0.8246091313323292, 1.010839700197812, -0.8902436270883701, + 0.5757151238996234, -0.6241388306405901, 1.0306895727537915, + 0.5437796109495969, -0.37254092473885336, 0.17302563058445183, + 0.16431412357817202, -0.297796251553928, 1.0415794322065468, + 0.27195785052081917, 0.8941462516437774, 1.8901581231152924, + 0.16318485053532772, -0.42772830220525987, 2.22854455207779, + 2.85934273014681, 0.620608819397525, -2.0773600718526932, + 0.5102128857829208, -1.3425473236398795, 1.0664992078500592, + -1.3978347586933288, -0.5082793586733352, 1.0293339145628106, + 1.1953652639556394, -0.7592324149843712, -0.9927853948011712, + -0.8401102070638347, 0.3955192048365272, 0.34215369871376844, + -2.8791873832700547, -0.0421115170793464, 0.2803818171599705, + -0.9401015854505796, -0.08972003336849564, -0.640338334227558, + 2.0182530686564895, -0.7235603815620858, 0.6081345501547663, + 1.7752306448722606, 0.031457706909880166, 0.899919260122491, + -0.5364177308537464, 0.9954498087197619, 0.21059455079709405, + 0.8203366802620794, 0.15551004552008937, -0.5905994619497847, + 1.4571504499595769, -0.05879218788301025, 0.6116700031464317, + -1.3093298447872528, -1.9790524548585495, 2.327922240143418, + 0.5346029134452727, -0.2220392426765117, 1.0350931612437495, + 0.579583179532083, -0.09395716249601935, -0.5606885258433681, + -0.6916360198922066, -0.25495705935359947, -0.23051091319332653, + 0.5226206406896088, -0.6035154511863011, 0.5592128760780101, + -0.3223643795390148, 0.5138781656523993, -0.7592214987689807, + 2.417337785331285, 0.17028885180838357, -0.18586838199027028, + 0.40185795512569217, -0.5670525260070235, 0.14141128561714333, + 0.536910685665978, -0.04468791360092496, -0.13107111869784893, + 0.8500574802035589, -1.2986776963277358, 1.3299424270339977, + -0.14883240827467462, 2.0486968982261202, -0.9909136952855094, + -0.3600241005246587, 0.1602748303156346, 0.07168780603661637, + 0.30202523579276225, -0.582835004754739, 1.0356927036283528, + -1.0360800724687276, 1.993616236752697, -1.2365797403960304, + 1.8548042098231963, 0.20499605949096963, 1.2010757276760113, + 2.057751677950784, 0.2883899362101988, 1.6134203350119927, + -0.9640624060585024, -1.1213275218434526, 0.6531743202785056, + 0.2277981765470329, -0.8359861748374583, 0.5680057504067159, + 0.28253652479051733, 1.1165497781562674, -0.5714364972858512, + -0.09854463425203973, 2.395067138296113, 0.3316175009075528, + -0.6884736402196919, -2.0231033737037047, -1.6070787249452574, + -0.7165117692039605, -0.7553512437574256, 1.9280259690970352, + -0.26733976223106926, -0.0673955495394241, -0.536406291194771, + -0.7093789385459298, 1.744020696757244, -0.8126325347024919, + -1.5969922983164335, -1.2686890383326754, -0.9291972010711246, + 0.9031672530350638, 2.269233244076525, 0.40988533123157295, + -1.7212576593177709, 0.7166427020983424, 0.3627363765292881, + -1.5589258141736047, 1.3206137582172544, 0.22241582722694822, + -0.5254557201726808, 0.4487811587655208, 1.4717430631656925, + 0.6002964569533693, -0.7795697135851043, 0.610220453599741, + 0.9796702201792316, -1.7646934144734967, -0.8420374077504474, + 0.5166078996711738, -1.2752325216668503, -0.44546162876683887, + -0.15696203458936964, -1.1862950949600968, 0.37408049529043713, + -0.38524482721238545, 0.7842727318028115, 1.1538879916827052, + -0.9454918159942679, -1.405125889371723, 1.0636457383418108, + -0.7818062318843579, 0.8829476857079316, 0.8745221489151239, + 0.6929310708225009, -0.39888705398196755, 0.9994754870230482, + -1.666570871939696, 0.7961227485818212, 1.22745042848715, + -0.6004867918118467, -0.5361669868684229, 0.4874774972013086, + -1.890981268173993, -0.3938745167085202, 0.3139908715338594, + -1.1261703254618494, 1.0966132130656288, -0.31621524862176864, + 0.002668556331391873, -1.9226574720130702, -1.6380306920827867, + -0.9710154441004514, 0.4763931829831273, -0.8587268321219447, + 0.420689070376205, 0.6054083058374654, -0.7954680985571436, + -0.20058537792435566, -0.19994075887630136, -1.895096099561938, + -2.091666612524903, 0.0004974458415376117, -0.4080026099220151, + -0.44867368855172923, 0.5700168037125656, -0.19142620469203458, + 0.7614369056740486, 1.185949052557463, 0.6170757026559303, + 1.650950629705662, 1.7703882319843902, -0.49884117664872785, + -0.35212526236220854, 0.42973964778170143, -0.20813077355955645, + 1.3420338787636203, 0.7397153430022654, 0.8838113044537101, + -1.3377145615324746, -1.855416176565475, -0.8136295403887579, + -0.7714846254184806, -1.2122365561438313, 2.8536471208979433, + 1.3032022234889244, 0.4760756036980966, 0.04693766693045954, + -0.5984449522911452, 0.7900271874549623, -1.969917184758775, + 0.3503211304018375, -0.0008137206583593385, -0.6256281405885463, + -0.3510577387659576, -0.13894191854589522, 1.199426224041857, + 0.12132847331734303, -1.4608604499664002, -0.22948805550230816, + 0.051902944512615914, -0.019119222645881905, -0.9757273564713941, + 1.8473014772988974, 0.5263294510598043, 0.07053654437136757, + 0.9547242579775002, -1.1278918446449648, 0.07734968673664687, + -0.5799201931033439, 0.31678992899871267, -0.7432885872434457, + 1.4335843287274053, -0.9465575672564711, 0.4879570553679617, + -0.6623786574250906, 1.0259687873673153, -0.02932551729568818, + -0.7891190307945258, 0.29564308636903597, -0.34927374642138076, + 0.8136749201194545, 0.620245645223459, -0.43951272221042564, + 0.46265400794768385, -1.869391305207575, 0.48193063531644537, + -0.095540604007519, -0.16987767760770991, -0.19495692375454912, + -0.08834646865917613, 1.2824833220745997, -0.13585649309388986, + 0.6657305691375492, 0.6391954485208522, 0.3751449189250956, + -0.19786418069226533, -1.1107085792532714, 0.16954868116772995, + 0.0976102127373202, -0.22307281025633455, 0.5329264170127224, + -0.7498434517605724, -2.2463793716496183, -2.030956619344538, + 0.3469149176826813, 0.9569335370728702, 2.0063313680095405, + -0.07729526178752644, -0.4820520883676177, -0.3642766707809299, + 0.2721281447061126, -1.0173409588721802, -0.22291945275506458, + 1.415842532715168, 0.3487504850213432, 0.3522443413976922, + 0.9077850533771569, -1.0749257488285808, -2.072058608998672, + -1.189733419675099, -0.5102992245699747, -0.5266987160364432, + 0.38803217663099665, 1.2098862819236005, -1.0678208861159952, + -1.6484340857205138, -0.6773093361468119, 0.19847908080770726, + 0.43435982710100896, -0.06608174057217904, -0.4396025725464862, + -0.06842865579333862, 0.0757461775588834, 0.945043974186398, + -0.8271942633183708, -1.0171091372766654, 1.0045993947511778, + 0.1215505686746317, 1.4850546815331578, 2.90124785320579, + 0.9193799243970369, 1.4109003071198862, 0.9342714574384375, + 0.7408981122108215, -1.501451886644788, -0.8528561599738412, + -1.4502786649323292, -0.060333190180409904, -0.06215199874022316, + 0.6962114020423124, 0.1737374420722428, 1.9987164641082087, + 1.7922666332582982, 0.39258330183185886, -0.1955663537656974, + 1.185062371327038, -0.24969600604011072, 0.5062590514320574, + 0.7374924629427219, -1.0887076741188921, 0.9197089124134338, + 1.4198792364404926, 1.13966263395932, 0.8820726768303652, + 1.1454947730219187, 0.3830272308939737, 1.0330281295592512, + 0.1958899672744909, 0.2610941691615629, -1.6928895703415128, + 0.08949085370524765, -1.6099870201619317, 0.6146813355739139, + 1.0232681185457035, -0.6120020584064751, -1.0855633146564565, + 0.9035218354603602, 1.199279110133032, 0.21247320768848982, + -0.8276719054682797, 0.34353353507020123, 0.7795065425753578, + -0.31690501369321267, 0.08404007020790137, -2.0217996637419504, + 1.4723540101508836, -0.5690532461968705, 0.7600008532793323, + -0.09696213550941978, 0.49872412917775666, -0.6501714914135994, + -1.4186463922997374, 0.4572717163404996, -0.6798540159722049, + 0.8800683478695012, 1.1617475981837795, -1.2832223575262358, + 0.01811044220476568, 0.5665224930728516, -1.7263899334779662, + 1.0788518344074862, 0.5214662704113713, 2.207851490608375, + -0.8847331619490723, -0.22393893146647295, 0.2604924986511237, + -1.065720378325982, -2.4784405095403583, -1.397338674255014, + 0.12733886071252698, -0.962990797187108, -0.4158341820319732, + 0.8295084980828852, 1.129362539634652, 1.4448964367746397, + -0.27202686813738103, -1.1376577043818543, 1.1669873661563108, + -0.5526532153140147, 0.17431258922451653, -0.08674760587893786, + -0.02662111271639052, -0.5787298408624987, -0.46418731609632075, + -0.7338887598113502, 0.0037124668666011543, -0.4390315224865612, + -0.5445053993271162, -1.1731970859703744, 1.557358039479812, + 0.8235296531498106, 1.3403087264740343, 1.429798559996883, + 0.8488733195590197, 0.6549815456848764, 0.5939979568631141, + 0.571492357564412, 1.2838646589587073, 0.1968309175885564, + 0.0125526247658802, -0.588379978175527, -1.459242663662794, + -0.16058887298258492, -0.30513433025622483, 1.3958505210549053, + 1.112993202632025, -0.6980224325960035, -1.1242172376210566, + -0.04898442309094625, 1.7267743114344978, 0.3596144012700469, + -0.359544416669036, 0.20255944297423273, 0.3676083732835713, + 0.8149334833372205, 0.9572709382349587, -1.4303046720322652, + -1.9840617027488057, 0.8352543400425974, -1.6685708178136907, + 2.264358935950376, -1.1013820170238586, 0.6513073416660541, + 0.5222811637226092, 1.6332065112971001, -0.18689854597886257, + -0.8293836626550278, 1.2200036287220326, -0.948302395460301, + 0.6269276746157323, -1.8413847347422614, 2.975492133500898, + 0.5732253342246594, -1.876866690355531, -1.4492981424636866, + -0.7472606420064576, 1.4876059940278459, -0.18934308720894036, + 0.13020040181367357, 0.5331924552669381, 0.9913637676227545, + -2.6437681894231435, -0.6461446779487539, -0.8660236542618331, + 0.47452405238110584, -0.4790606483008819, 1.5321216571398668, + -0.1636651452718229, -1.0332700298347521, 0.9892360243254097, + -0.6416390065504894, -0.604900108391799, 1.535151051934949, + -0.18334305957155458, -0.35686131551458816, -0.3292665860742744, + 1.7738534285950363, -0.33142178700758057, -0.6235361522388553, + 2.8510918408680124, -0.7318379837818061, -0.6194976835634578, + 0.8118142867300344, 0.43758672808479837, -0.7150266134830248, + -1.9406394619639358, 0.8679359705510734, 1.4354983174276066, + 2.182868585469132, -1.1741764376487758, -0.9331282790464878, + -0.2820770772397286, -1.9483310573156807, 0.31916263280850626, + 0.6390360973776629, 0.5428826848071413, 1.5065733412421733, + -0.47412499801799024, 0.2569777134684139, -0.18464959701431985, + 0.707300443390559, 0.16960249404796737, -0.4185489493255141, + -1.4509136246246903, 1.2609714707832425, -0.048585931918069494, + -0.7466175012069378, -0.805144923911586, -1.6081696632587419, + 0.2108448776087118, -0.626995367880836, -1.25582651238933, + 0.03382654045677089, -0.45889090147992845, -0.2896301303848118, + 0.4922810729687261, -0.11561150744781683, -2.0656398984212156, + -0.15730996466261546, 0.7768976641774541, -0.7044791153933941, + 0.8524501556338853, -0.3340090119288742, 0.08640562469139157, + -0.059343641632369076, 0.1619562886451128, 0.15046570393731748, + 2.7590525887014667, 0.22065232253703387, -1.3774088537570648, + -0.29499229105904573, -2.4537835279476146, -0.8341158090629236, + -0.43274207019506117, -0.14358452337381933, -0.8677025372132973, + 1.0347284219371276, 0.48707383897255696, -0.06866257813543919, + 0.2937618607534383, -1.161359070554741, 0.21001598604651528, + 0.4159405289601604, -1.5043005890504582, 0.7372524407400997, + -0.5334658384258053, 0.2567239585606655, -0.6299751233419266, + 0.024035161278926437, 1.1244580271586777, 0.40836377201711715, + -1.8739717517634698, -0.26853628794603523, 0.37761170331094157, + -0.0050819767759484056, 0.009684786386250501, 0.2636875321138984, + -0.08553945533113934, 0.33475288490766125, 3.4237712468503103, + 0.744628978129671, -0.9096458649167182, -0.6827694846192245, + 1.6425500385797525, -0.3900596403135759, -0.9509348833512404, + 0.3229857369820825, 0.44175525248542286, 0.7931445181078505, + -0.06988463350772384, 0.6819214512912009, -0.06839741587635721, + 0.4734557044072717, -0.9215746025534817, -0.6195377638236638, + 0.809667872762421, -0.4103668947560523, 1.749809215983805, + 1.001647179219911, -1.7659243403508436, 0.15383957509758237, + -1.2779831760745572, 0.2669263499455465, -1.4256436904962992, + 0.040903466313536106, -0.9342945534262868, 0.7618231087000356, + -0.30058739646889815, -0.5446714593776727, -0.4802089660362259, + -1.1432227238603179, 0.5174957898345334, -0.26915089392842423, + 0.3387263580347474, 1.2480509452812811, 1.9521841872543286, + 0.9788396157168914, 1.001353646981955, 0.40906237950521346, + 1.2380051766092655, -1.1622188132692055, 0.03880070372652659, + -1.3157311036080868, 0.21159132832002855, 0.8251757971684041, + -0.5943198935837782, -2.059249774668197, 0.4455096569146938, + -1.5530036453685645, 0.24334104727505046, 1.9679440499519993, + -0.14949638764508505, -0.1787890634869671, -0.8694565617159877, + -0.02701940155527667, -2.327140574554701, -0.3493894186252125, + -0.02711649643869937, -0.2125855163161856, -0.8626785926902893, + 0.5125620452253108, 0.835126803441082, 0.4370304631746852, + -1.4380277943151216, -0.15463871080474192, 1.427347151863727, + -0.03594236427723813, -0.9987807222089615, 0.15285084511988004, + -0.4453218737326093, -0.8774506171339351, -1.1301294572944445, + 0.27932962145356316, 0.666378400360196, 1.0765917423686246, + 0.2439549047998887, -1.00859364816552, -1.757528113553421, + -0.7922512836603205, 1.4533777876325222, -1.508283926364581, + -0.9454297378995183, -1.010459444419853, 0.0754147254586834, + -1.2810537542822706, -0.7736354580243704, -0.811961379205231, + 1.3638217257964536, 1.077496971491708, 0.5810375830537511, + 0.3551271969105679, -0.043876281219692365, -1.0850332393056394, + 1.109609770945844, -1.0337911892064604, -1.8807813444109054, + -1.2265714811977597, 0.3936172157806796, 1.0778363941578806, + -0.8644861643567047, -0.9521061052105131, -0.3765845085538441, + 0.17855829086113095, 3.5953876986672255, -0.8488543068716493, + 0.3153960860722241, -0.4124980314658376, -0.25957042793288443, + -0.47466672457489073, 1.251745108485312, 1.9089401526170708, + 0.08093711755806289, -2.256777082059624, 0.324177164165908, + 1.062105790670867, 0.2886235312894662, -1.2983305542602077, + -1.5005961252940438, -1.4260396412546816, 0.12572172650108407, + -1.371518218990482, 0.5998645930096181, 1.2473531605780193, + -0.9358060344486432, 0.49295286102524044, -0.3494884497630849, + -0.9308402692062906, 0.3630283557686611, 1.7611911540817928, + -0.7229213248269448, -0.4323877136781272, 0.09012216684853104, + 1.2693688025965613, -0.05609728003750563, 0.2942911094966865, + -0.7311965810915613, -0.21592794240105817, -0.4553253041620339, + -0.13454483357874214, 0.3803586083160361, 1.2706120469339364, + -0.868299098407261, 1.59925697493435, 0.5433594960509881, + 0.5675579810614343, 1.9203285366540146, -0.5030970822643847, + 0.8421602450844566, -2.316838061301056, -0.4201799135308444, + 1.99145358910135, -1.1698739038813457, -0.48526560569590693, + -0.664516213841126, -2.1784216925774254, -0.05592421534349575, + -0.3735237580415768, -0.22461780649945687, -0.6015415198184665, + -0.525149213451578, 0.20817264425532928, 1.0421502948740846, + -0.24223189745187212, -1.5453453515930158, -0.565952007041841, + -0.453301777620275, -0.26956499012979956, 0.6612001818907256, + 0.6566383906736746, -0.7620891486112908, 0.4039229699126195, + -0.03287499950025958, -1.728025679680301, -0.1351648490652594, + 2.979844425070889, 0.21407749737048995, -0.41165660712793767, + -0.8911684286042895, -0.49236046031915226, 0.08810619424950021, + -1.4051338603716423, -2.3224238004285707, -0.3410883214075715, + -0.12686282703773566, 0.23609553256542695, 0.23545196849666264, + 1.371312887239788, 0.2318653380046876, 0.08464059182127714, + 0.19008151199377613, 1.7562161679995132, 1.181971977987871, + -0.8172519034071913, -0.31575932783054717, 0.2503737947188051, + 0.028618079946139307, -1.723439924093865, -0.7885161782185284, + -0.594263411951702, 0.5644435285732619, 0.8811148239408805, + 0.7833035854562042, 1.0392171119322082, 1.8371154985886862, + -1.2420591801850245, -0.23753657646460405, 0.19313774990116925, + 0.5053866496884525, 0.3283028032403514, -2.225396433305001, + -1.096249407991655, -0.9149883628966105, 0.21230053589695053, + -0.6023002440801871, 1.4512382841053386, -1.5038113250304717, + 0.11558860384831522, -0.06338166413389325, 0.22201020504142566, + 1.4399368526678278, -1.536144263111769, -2.717778670757182, + 0.1168039138752043, -0.5866181500734327, -1.5377442224077151, + -2.0944415177169953, 0.7870016058915985, 0.8949404757727989, + -1.2488701028525535, 1.8425900504983932, -0.8820586551654293, + 0.31200772222466067, -1.4538990075976945, -0.4972028753925732, + 0.30783322485667264, 0.534974938780373, -2.0058475112711514, + -0.4541796977906028, -0.5567288589208035, -0.7063829736735863, + 0.08317733846151737, -0.9039919874880522, -2.359353503098415, + 0.11425878193276912, 0.64706666019578, 0.4359959376210403, + -0.09281069482301793, -0.5382334133878951, -0.633983343063867, + 0.49835413266819356, -0.6176307398455463, -0.58828999383318, + -1.7334295099492802, -0.8643497543156821, 0.689824201173873, + 1.524711206099055, -1.548684848469057, 1.2284263304913572, + 0.19868751298961676, 0.11836116797672853, -0.06310268278090121, + 0.7479073753397237, 0.19168429076964602, -2.501823109461287, + -0.673945501033193, 1.2235988334078434, -1.1636116702452202, + -0.22624467871026605, 0.5071009399593757, 0.6279007880533118, + 0.5692262629524086, -1.7255159569914225, 0.6397252376986503, + 0.23342621054073684, 0.21399479954715414, 1.1788921695577175, + -0.4946728962147127, -1.8310549540520982, -0.3690830035843751, + -0.42224783195423987, 0.32423026673778105, -0.4402301947763417, + 0.7465865033369634, 0.43199223950922194, -1.939062107304355, + -0.10453191019598392, 0.8153426406136252, -0.7800663274052761, + -0.4477465519532468, 0.01545038682624204, 0.39608506375087277, + 1.1493902335657455, -2.130104535188091, 1.1476608122361165, + 0.9320022617397814, 0.03568906908977818, 1.4420580869170465, + -0.5372177387698984, -1.1864962493216553, -0.5500096460519907, + -0.763791941134191, -1.697389937955057, 0.2998477603655102, + -1.3941268553154642, 0.5706575386796322, 0.7831976119427991, + 0.28018300766602294, 0.13693472548612742, 1.0154445987056024, + -1.1860807036684393, -0.19007920263882952, 0.1523832525182091, + -1.2093360312349437, -2.100547843467698, -0.1530333323078057, + 1.1971503331114541, -0.38189865297027337, 0.7916834209392376, + -0.1728944869857963, 1.160481352505748, -1.0427224611678692, + -1.040602541009036, 1.8273660232377136, 1.4195569065800453, + 0.8386877142814951, -1.0778628423584962, 0.3469301281229362, + 0.6711365751637789, 1.1526892923346204, -0.18194736753591428, + -0.19855569336096057, 1.688961038095004, -0.8745505869548725, + 0.32284669288734297, -0.8259830110426495, -0.3611221208798455, + -1.4195164842808716, 1.1907305012760756, 0.1522501461827938, + 0.922469684257407, 0.016501336648811274, 0.7429642513221194, + 0.10750421501190041, 0.4808356602618045, 0.1323677945856938, + -0.7034274377386549, 0.09645911224015045, 2.532325541632594, + -1.5866221126564115, -1.971084122083064, -0.13301270859207348, + 0.39343143403797187, 1.3390674367668436, -0.747255398772972, + -0.16290875300595686, 0.4979804345513483, 0.08795913929250766, + -1.1826687439735564, 0.8708434312878163, 0.10036766629128512, + -0.5580601750838238, 1.0076432223870029, 0.8554191239588586, + 0.5698707282163747, -0.20863591717796462, 1.3123618498586958, + 0.820266660992923, -0.05334598793633222, 0.10738590560666669, + 0.7476571054869932, -1.5691946737355327, 0.8999837788505479, + 0.038792413114335636, 0.9914820089613138, 0.9465564741859593, + -0.9548035752110309, 0.37108183095020375, -1.6932708709240643, + 0.5742732453192894, 1.1869006875492747, 0.2555908214103616, + -1.3999854653788708, -0.5270366881316677, 1.8409181821652891, + -1.7547244042030132, 0.07405473692919617, -0.14925008749413637, + -1.8439449535735588, 0.3444816081051852, -0.2983334069128005, + 1.38335867526748, -1.9630063235244388, -0.5193463961965822, + -0.11562338831110575, 0.352400820758953, 1.6482773735238936, + 0.6711383514595195, 0.2238366057536359, -0.7182362270286512, + -0.35435416471609005, 0.6485877172023825, -0.2757466733288484, + -0.3563016808385527, -0.17817414950901492, -0.0019081140052624073, + -0.39273602229275606, 0.06348346009811161, -0.8742437683710312, + -1.8689872110353185, -1.5147133895052636, -1.0184612409555949, + 0.18139626346512772, -0.7129650139254672, -1.3195899155857833, + -0.21170557963600709, 0.49610977046001814, -1.107773982297535, + 0.6462111934112551, 1.688912150364615, -1.3591299269239323, + -0.7475464904708393, -0.9405677474521547, -1.693588315970276, + 0.20250426856488513, 0.9856658198526146, -0.44166427943855957, + 0.509830562978939, -0.5991965310798085, 1.4973252224613436, + -0.5546344165085834, -2.2200296733850635, 0.11782530162434772, + -0.2746421487353144, 0.4690531558116329, 1.40804274909555, + -1.1589358423900673, -1.39264188930796, -1.6570523533049744, + -0.5797120770538159, -0.5914414514498524, 0.9272580348234067, + 1.2692870943822299, 0.40403527645846804, -0.261501940678677, + -1.0862317630027116, -0.1526016183398903, -0.08532835954893107, + -0.8388665678221077, 0.23964567353038213, -0.7439278891788523, + 1.3723479505028726, 0.824813770461099, 0.5243129136614292, + -0.10372952028569096, 1.3566661021189814, -0.5845287147363865, + -0.8059330271558699, 0.6671892437824667, -0.49774514260345515, + 0.29484142406469005, 0.6191696327292491, 1.8705821587413778, + 0.7631902200350251, -0.7088811330868576, 1.0059809179620727, + -0.508032215950158, 0.004726053571028723, -0.30330784941160444, + 0.22020618545944062, 0.1331832955345884, 0.04208118830258324, + -1.2387913861871258, 0.7326479811535176, 0.1542920099223582, + 0.4162106818030797, 0.7167058863039155, -1.1914296976986598, + 0.05132650366382693, -0.4211031612870858, -1.7864727886991922, + -0.19373243001813595, -0.5237224340522099, 0.47552274099861314, + 0.37932931641385165, -0.01778581204620033, 0.5135963784050196, + -0.0920407091659859, -1.2851040951432764, -1.3867367743332586, + -0.010248112584533295, -2.380960707383888, 0.2770426540930432, + 1.4353993617223093, 1.043407848929735, -0.6643084477672975, + 0.1560528379614375, -1.0888910309318305, -1.39073904258463, + -1.0653294525847614, -1.685728242447165, 0.4278716389829903, + 0.8151267745756855, 0.4590974059792218, -0.8170842929318204, + -1.801558199044534, -2.7422706187790467, -0.5385419989517659, + 0.4561341860266813, -0.310225122334308, -2.1875217223893677, + -0.45557869602550916, -0.45727725255439894, 0.9297468280161273, + 0.32453333878542806, -1.7736376333551942, -0.9131947056110343, + -0.4728773766206769, -0.6493391107311841, 0.1834771824260959, + -0.45551981611072734, 0.7193135815798101, -0.6933979942834584, + -0.5348504033921155, 0.3478776145762176, -0.1393727443862952, + -0.3424969723393732, -0.7332649826023855, 0.6913175647423441, + -1.257101185725113, 1.0310169221725312, -0.13131058277048602, + 0.030573820416151365, -0.6620542368308769, -0.49766727093101915, + -1.641862178277871, 2.3640821336546574, -0.9548887269449952, + 0.8055568803047201, 1.7115905120926056, -0.563245126658301, + -0.3859649719336605, 1.0784783346646432, -1.1361477490330392, + 0.4775583825007609, 0.5678618464386147, -1.2049378392751529, + -0.5784213772732109, 0.3638626925141807, -0.6477251149727985, + -0.138088388413468, -0.0857690957689657, -1.170514473695407, + -1.3583835241962454, -0.8536726298571233, -0.5789612164736667, + 0.5515364147936958, -0.21001044830338852, 1.5965986648878876, + 1.332952122458738, -1.106990241078737, -0.8323599454667959, + 0.2023236465664476, 1.8101184401899872, -0.04969075738554229, + 0.8972323805641829, 2.434777614341617, 1.0541755565684054, + -2.2557001693044554, -1.1197104590989124, 1.3770060053835511, + -1.3038099206851257, -0.802611403636314, -0.7510835439747036, + 1.0990271545114865, -0.4529621630427125, -1.4636178063664385, + 0.06335152605342771, -0.6206243450289093, 1.1869113497927544, + -0.818440789798608, 0.2561702472397693, -1.2318619147211731, + 0.2627597696598712, 0.11912488371549859, -1.7453842388181258, + 0.5887777831164662, 0.5273151918284512, 1.640536966751914, + 1.3794237668484932, -0.12785314033845285, -0.23534497071474694, + -0.9009256843963697, -0.7250059642049492, -0.3977475426257049, + -1.0030890967146173, 1.2159224791122567, -1.1216933730870873, + -0.20804879801288678, -0.4245954695995834, -0.6569530388001403, + -0.263170367989491, 0.2895021927054334, -0.4314031435542754, + 1.6490973670655187, 1.5338741666166893, -0.677703293025438, + 0.3143397547229224, 0.7007642565342262, -0.2522685361450174, + -1.5839480376139985, 0.93074956060378, -1.5149960747905178, + -0.6856706097428578, -0.04648765391700708, -1.3398052760638477, + 0.7363355075559743, 0.10653207903038861, -2.639936447634558, + -0.5287473140151686, 0.6498935272688897, -0.2527748085146442, + -0.34770737406235824, -0.14220047626519997, -0.21879014539673222, + -0.07200916739308166, 0.25193535673172046, 1.2609596592019676, + -1.1086716524384936, -1.6354483839867169, 0.5380690112521336, + 1.4518703841949971, -0.8093138277596921, 0.06530274990972673, + 1.3084005610091705, -0.7378474785525959, -0.15513790834740002, + 1.547983753080703, 0.7288188703318803, -0.0933899148618752, + -0.6840324465492571, 1.0468602313032118, 0.1347189206162325, + 0.32826400571663844, -0.18723650691558066, -0.7075241895582589, + -1.9984292742164604, -0.2914318569441844, 1.4668619149746296, + -0.5938909033513795, -0.4553027196820818, -0.012440663289446416, + 2.164276135105918, 1.4789527353334166, 0.6160953641329345, + 0.038310480621150396, 1.6452500224294333, 1.494343112286883, + -0.7650247014788575, -0.533709060717757, 0.24993274705180898, + 1.6324500704316365, -0.4538416684548764, -0.6445270873066975, + -0.06237514498867967, 0.7630851408555358, -1.3197078202188879, + 0.038195444018690794, -2.0454029376907057, -0.9556481289697868, + -1.3658861254597947, -0.4601388424221046, -0.40389335639772284, + 0.3790463199332069, 0.17039119497287172, 1.9051753831890847, + -0.7565222879698993, -2.233593705684145, 0.7533866182365011, + 1.4157272603671784, -0.5779376838751896, 1.3152500508527694, + 2.0424397893714183, -0.1606058104953894, -2.121156427498829, + -0.814081708698557, -0.27922653429038075, 0.613844672204543, + 0.15119026883650383, 0.06413060813440008, -0.23094742754961228, + -0.4124703421444433, -0.3236376417397888, 0.15518720205424386, + 0.5184938316181349, 0.13564301588069413, -0.7100012592183507, + 0.4212833527503162, 0.9262968064316901, 1.6187247645232936, + -0.44643936620597546, 0.1009606074107147, -0.35665110868705857, + -1.014494742181071, -1.0343996078852367, -0.14083690434012247, + -2.659674765988563, 1.1200535905266031, -0.4586778781046084, + 1.6905924900617433, -1.8033182127130851, 0.5433525267884302, + 1.4233809128401147, -0.8987486269309799, -1.453057056751839, + -0.7448768215305785, -0.2267855258163122, 1.945693704496327, + 0.33609999329560913, 0.40548081566055455, -0.5462618578171711, + 0.15373776030536832, 1.711074878534925, 0.023787252110310374, + 0.4233202019040906, -0.008827631681980003, -0.10826351511745486, + -1.1066691303703746, -0.7957526976620205, 1.8473188835888321, + -0.9965255911026194, 0.09807222024537897, -0.9407586128443268, + -1.0498307678564212, -0.6755550472210402, 0.6860650501401647, + 1.2491613871904947, -0.4157878155545817, 0.06440187003639199, + -1.0303028958266864, 0.5622472587190729, -0.3536052308653158, + 1.0932146030825403, 0.36571824880332326, -0.19675259067500117, + 0.8014014989569858, 1.5435968634285022, 1.902043007662628, + 0.43820881569167025, -0.18756171249906528, -0.6866083948565544, + 0.2644213172812575, -0.8739131198364251, 0.5028273336903448, + -0.22790955142933395, 1.5505766536584806, -0.3083581069104587, + -0.2756384235217714, -0.08712041258032677, -1.5385358044156583, + 1.5886418554737576, -0.7748824652422079, 2.103248029337103, + 0.890022377440416, 0.6445857174711459, 1.142680024548178, + 0.7279074737383107, -2.3500551015249735, -0.04587882784611171, + 0.8972524641969086, 0.5171651392783594, -2.680398134256749, + -0.14294078235428628, 1.4535614828454053, -0.25878946093034666, + -1.150648836844086, -0.27918479828900283, 0.18762273746188549, + -0.2897213292792658, 3.366197693866059, 0.2467457004931064, + 1.3146142241825884, -0.33042133576860777, 1.1368661880496993, + -1.2765256946266974, 0.5631661206163274, -1.9298974365961459, + 0.5804306040972446, -1.6436648860641425, -1.1242856767655485, + 0.7176381272548557, -0.26502129920077905, 0.018804496205326933, + -1.9240434249515963, -1.151736654209814, -0.7733751324010287, + 0.12724549306641642, 0.8698381079510638, 1.3468989585853053, + 0.6993307309524431, -1.3755887390386246, -1.3702040758563874, + 0.6048642954458721, -0.23792858122085253, 1.620207826009963, + -1.7785773079872162, 0.747925897632815, 0.27650594380432825, + 1.405206974690175, 1.4527336375856612, -0.8045674628364357, + -1.3268370782350791, 0.03901846375371842, 0.5689529546931205, + -1.4234302377651125, 0.19220471457556346, 0.7741988976758539, + -1.23776452431, -0.7207401991713909, -0.5835455049457218, + 1.2122375074919018, 0.21249919187342148, 1.3298659450361623, + -1.292458696881581, 0.005456891100888988, 0.769740287438423, + 0.7214780176914463, 1.345661917126047, 0.18333266477760912, + 0.4406591505341931, 1.2158097956852845, -0.8159372232158066, + -0.29215327086693227, -0.8869329146871234, -0.08988881844794458, + 0.39160206252059276, -0.5251538857201289, 0.5323166743578026, + -0.16374565008274838, 0.3397135343663835, 0.20781479108384168, + -0.1570056470130424, 1.1186692216915683, -0.5922507420399947, + 0.374049479643793, -0.4714366545027258, -1.7800873492764042, + 0.200432184971249, -0.4510884110917245, 0.7815208373774285, + -0.529196555581843, -0.6004156268390762, -1.987720596410682, + 0.48026877352900804, -0.7125624358838566, -0.8635819653496137, + -0.18865548902962756, -0.2574880688121813, 0.523806567104555, + -1.7303517305542833, -1.0285553977934347, -0.11034990592802998, + -0.7884438344511571, -0.24170806050666505, -0.2991729019398932, + -0.36617527054992993, -0.2180913173890188, 0.49441274267255686, + 0.6678157312282177, -0.23699048511969242, 0.1614226129495087, + -0.2552962154031892, -1.6932679790648506, -0.7260428936615658, + 0.983917326770679, 1.5508445843971757, 1.0928624592476766, + -0.2686621350585599, 0.10550971291282485, 1.2293114178521045, + -0.7100199116352982, 0.2251083357001051, 1.090471403127213, + -1.1754999891954272, -1.4111309180712674, 1.594334716432477, + 1.1372124171259699, -1.4830687641923233, -0.3439724328166409, + -1.5396688044442735, -0.6530928014336336, 1.120347029827944, + -0.9233474350658438, 0.5042380476094092, -0.6904562284525139, + 2.4780322297004083, -0.2031870518226454, -0.4232460765743194, + 0.4081816219963742, -0.4288812456955435, -0.5678348620750594, + 1.060013239317373, -1.0891223916285455, 0.28360515994750446, + 0.5489348880826361, 0.8552310805980752, 0.6629955550754738, + -0.5855799022885917, 0.04505979751703283, -0.7679200474020268, + -0.16387626425210505, -0.37261710919405294, -0.5739676712378301, + -1.1613713542857809, 0.5234541491477545, 0.03777729114334165, + -0.3546644244976776, 0.87387343925544, -0.5520139384476067, + -0.4720689981267439, 0.01761451566596255, -0.4379304095967114, + 0.06737860874331991, -1.5623779775926485, -0.9121315682652166, + 0.029834900788377673, 0.1905497192124624, -0.7566715014724017, + -0.10983522918119382, 0.9742107436060682, 0.1815564957981359, + 1.2838385132758123, 0.13797695908894034, -0.6442723551108704, + -0.8432744836505134, -0.1576458748377887, 1.1087873353884619, + -1.1040097942922944, 0.13926798182665912, 0.6638960874060112, + 1.6693259142853603, -0.042589103587092496, 0.5092687615690856, + 0.8709546215751225, -0.5934609907062391, 0.45661093976245476, + -1.168389537997648, -0.18353619149782954, -0.3721734346762326, + -0.07431406396242313, 1.8921813580128142, -0.39768063718044483, + -0.12351163257863787, 0.1776654000420943, -1.615145727172023, + -0.8295223514809212, 0.19496211097190255, -1.6753936838176986, + -1.2449841234813048, -1.103185502766208, 1.4687648094175687, + -2.321135504151646, 1.8028715890978269, 1.618525966060461, + -1.6264971386084712, 1.2252147966002902, -0.8266134139742128, + -0.7896159557742973, -1.9930284454336427, -0.8745205052196425, + -0.03567815340518255, 0.0007735740585857306, 0.24630311446624104, + 2.4046485450836372, -0.27585688749815324, -0.034901401558489656, + -0.6129097478356353, -0.11827005035011492, 0.21092672955479633, + -1.9032603306465568, -0.3131719125585028, 0.19173872269255007, + 0.6267867341635497, -0.3384374795024242, 1.0490754729429352, + 0.8498306144609853, 1.3559229216880748, 1.0814542782212446, + 1.9102104086410767, -0.7012681525615534, -0.19191977865841836, + -0.23081233263192683, 0.11906173850664951, 0.09610887971340569, + 1.8209463416759175, -0.15734240718500028, -0.11962634027135648, + -0.9085526532719989, -1.5432961003875627, -1.382447044939543, + -2.0883967374837424, -0.9868856173905888, -1.8445485130687704, + -1.8549177920034712, -1.1632546049183305, -0.32159816338170244, + 0.4162133575979579, -0.5834522007996513, 1.526399442141217, + 0.932690624644091, -0.8327089198669363, 0.008129612787209651, + -0.8756430509115771, -1.710104948463473, 0.7313833433842383, + 0.38408626128483575, -0.649419875486093, -0.513266352794694, + 1.8195502866473248, -0.1763912919090115, 0.19407569314639708, + -1.333352138482723, 1.6199178344118101, -1.1117879761260026, + 0.13364018438286004, -1.1948230210123498, 0.1612449407072351, + 0.5333275706619913, -1.0918332184562467, 0.16551955021595594, + 1.2108353511404824, 1.8565281147242538, 1.0200840632616635, + 1.2917964848033998, -0.5995012498463435, 0.4542355507386299, + 1.0573490168071358, 0.969281396126661, -0.16453913664021197, + 0.012557288974792772, -0.8326648169504967, 0.20556814037632598, + 0.03248765167879757, -0.7245324573042504, -0.43713748626328824, + -1.0603675746188996, -1.4111542329070657, 0.08140056889890593, + -1.6690868948551485, -1.1813269148820238, -0.5973114058758489, + -0.2775847609684858, -0.5829098608452269, 0.7225893211798833, + -1.2788343348724025, 0.5877801879908481, 1.4192183290393245, + 2.8979565669480776, 0.494994469813483, -1.033921386291816, + 0.532567367721892, -2.3224749060682606, -0.26278621379585276, + 0.733390618716078, 0.26893520218170347, 1.221797483656276, + 0.323206684696481, 0.9161514268765875, -0.47743933817297207, + -1.3341639985706244, -0.9366913808485806, 0.8888120977620863, + -0.7753383102835627, -0.9472878915679738, 0.6280600246330923, + 1.762955600977091, -0.6663298900129063, 0.7995964753155814, + 0.5257372157147355, -0.707308331499479, -0.6136393162168713, + -2.7489424780609055, 0.7065684336229514, -0.6573403725716099, + -0.58231197299488, -0.78654738406919, 0.5380613168300563, + -2.672784704980037, 0.6606461413961936, -0.1465624833411055, + 0.0888686178359086, 2.210061572985145, 2.294971536351295, + 0.9054629313566077, 0.19123939814004304, -0.7690722863543772, + -0.48141989592265805, 0.30117385932659657, -0.6322754761814786, + -0.11848755674606819, -0.7858056186488147, 1.249740380134423, + -0.9833533015410122, 1.5702883009575592, 0.7329811562451155, + -2.3453034094765703, 0.06961372042941413, -1.7674377652295938, + -0.4823518480102962, -0.9096482757858206, -0.3911960495224077, + 0.9584964196392289, 0.2091404096377211, 1.9440629363828146, + -0.6836512541286069, 2.0686371705300597, 0.10643253908633565, + -0.3179037933173635, -1.1888561761902947, 0.437705987045847, + -0.2147721802061823, 0.2761341259404923, -1.0209599555567732, + 1.895957414765353, 0.9248264121062436, -1.2110092283276828, + 0.3602228469209382, -0.6987373586718392, -0.7082064195775276, + 0.3661454196313209, 1.314104216899166, -0.2441216940535231, + 2.0138382754778252, 0.5219720954022979, -0.08440099763819482, + -0.6467096589101514, -0.36467836426192457, 2.306805171234094, + 0.10333405365920315, 1.262206300587313, 1.2385757211726727, + 0.0786512979538671, -0.0446569301783945, -0.7978964905353421, + -0.7341983188707576, 0.9061681213460211, 0.1070785877700045, + -2.1287955756401415, -0.03971436372203894, -0.10957554854168067, + -1.0317721302803744, 0.5993302414050995, 0.6123891869516165, + -1.9146406027175389, -0.5346724812004263, -1.140909676169055, + -0.9218011862017488, 0.27611730546102964, -0.9881133157145163, + -0.6348662646698552, -0.40453729148031137, 0.5490850093087994, + 0.10449493299406218, 0.7058222782976669, 1.1573538404416537, + -0.9614417476066206, 0.11039493566755493, 0.8016514059839949, + -1.0999458151114896, -1.2537006155798813, 0.931769887114095, + -0.6461245870221363, -0.583460013639197, -0.9265736250708216, + -1.3079107876503053, -0.528389767905448, 0.62761091808355, + -0.3351114611430507, -0.19252255814410482, -0.5539637811185102, + -1.0780381690215899, -0.36024421304719534, 0.40487342139413346, + 0.8273606518739184, -0.2632800799913896, 0.6091457655412053, + -1.4683341216884573, 0.9334821307825095, 0.7871629831549233, + 0.3110198224106242, -0.7390068869208783, -0.12142732607052047, + -0.682575283096325, 0.757967165609461, -0.5075729205837868, + -0.11858690586463072, 2.312019925911996, 1.1827166724325398, + 2.5605087627947176, 0.4504053399188213, 0.30833615112301993, + 0.4395390057955763, -0.3102740398455176, -0.47513590682940166, + 1.9197995391230374, -0.057986766993555844, 0.40667950306171746, + -0.9311249518862825, -1.6081698979146364, -1.7033414267080773, + -1.1548182787566532, 0.4591173186661342, -0.22126557360431712, + -0.8931423124095793, -0.4730945723131449, -1.5713279143291838, + 0.042243251969781355, -0.13675379123545883, 1.5818686396946895, + -0.6671392597715344, 0.6068864566857306, -2.066749712250998, + 1.0166034670789614, 0.7872049592007335, -1.5370113666767096, + -1.4157897348781787, -0.6571753489676143, -0.0073887060348982025, + -0.20964059111239142, 1.842231958342178, -0.7335304642031956, + 0.2603592655580558, -0.24727516775674271, -0.12878384178251495, + 0.18061216815427464, 0.5520102397033649, 0.59836911473434, + -1.263347844489138, -1.1297726718055079, 0.35098777857068997, + 0.6671280250584627, -0.9504464833410847, -1.7319145858764533, + -0.7191313345929545, 0.778220364395407, -0.13120556048835122, + -0.2930163511505559, 0.5723346703893823, 0.6203708393226456, + 0.2070121538250916, 0.2504069869217224, -2.631300644202274, + 1.2304876155132989, 0.12374552127660925, -0.3119765375252944, + 0.24839138525664695, -0.1624153403778225, 0.03880244392900311, + 0.6158820453287145, -0.5981193189630719, -0.30265359442735773, + 0.2853163858135379, -0.35328868813706593, 0.882172885773135, + -0.12961925475721936, 0.06243420099283874, -0.20407710211890429, + -1.5949026874652747, -0.05332681850296319, -0.25597623856642276, + -0.6030242198434205, 0.4088883202636772, -0.2724833852008808, + -0.45929307858413176, 0.38697114353479634, -0.30186361360214947, + 0.8892702547518307, -1.5902155659117287, 0.1280189328715702, + -1.0606800869205806, 0.29698071047896596, 0.9178955776947431, + 1.3204150787059499, 1.9096001735626094, 2.0246106010626352, + -1.8886998371777806, 0.17210627716791888, 0.5173357468686053, + 0.21821777482903415, -0.7469644301115992, -1.5153025298846639, + 1.4750641794860442, -0.012974963571520922, 0.30800329068321186, + -0.13644745817708911, 0.060062407256992176, 0.43707696467535867, + -0.4342808065669149, 0.08406524833082493, 2.120062200683758, + -0.39093327003097744, 0.604848796983356, 0.9747407688885689, + 1.012873772943999, 1.484776688598748, 0.14565192873522928, + -0.9294574487154434, -0.7571009810872806, -0.9386802556218249, + 1.1602915547581503, 0.7893195458148732, -0.06367056771853903, + -0.15812194267803795, -0.7149486541702276, 0.8231769198784274, + 1.232763521495371, -1.146675753152276, 0.5240190746997556, + -0.9345501217515976, 0.9493595584367673, -1.5446192639792005, + -0.3182492668955925, 1.1361942311054651, -1.145113482369334, + 0.9739359234143615, -0.05841150864303299, 1.209516920788085, + 1.1578737392495533, 1.0079838324611112, -2.045985771110317, + 0.31763376711687136, -0.6693994649557887, 0.7872340825098989, + -0.06219090357218694, -0.4887568391095863, 1.5264479465661827, + -0.3920484186494468, -1.3841274063303197, 0.9141674224442334, + -0.13399877228790466, -0.2383751675490254, -1.4089934229838479, + 1.5497639675164128, -1.4115187301366752, -1.2316301831360181, + -0.4075135129474034, -0.27807277617596804, 0.16055275587935025, + 0.3822750196275415, 2.0936195435761773, 0.08483080701202206, + -0.42553701943795863, -1.5213654253629316, 0.6610673515383165, + 0.8510208092372255, -0.12233978003488, 0.5205292747850148, + 2.5691121311598972, 0.13206472221872997, -0.2935492442322827, + 0.6666703683850778, -0.9817375451511643, 0.25713755671616667, + 0.18450887391512988, -0.7031562630047683, -0.27282672187157186, + 0.9797623849731464, -0.9521997441000268, 0.4189269010623663, + 0.07265230453723724, -0.5690752366847833, -0.3834312229563053, + 0.5547580599772614, -0.660840001199387, 0.8690939961288345, + 0.6286101267287627, -0.8030869088145396, -0.4403845106326689, + 1.6136934748883152, -0.025545618694785378, 0.4121108237247161, + -0.7099613669538072, -0.0820084862859561, 1.1658044052170125, + -2.2633259411386595, -0.33500756427622663, -0.4332396299087868, + -0.51771218110873, -0.17599895386113948, -0.8218468597925086, + -0.14128842540754843, -0.8802180892372109, -0.9099975918055594, + -0.5809101072983743, 0.35829864679310924, 0.24582058796063788, + 0.08582685153919768, -0.6888794127719298, 0.248428760381155, + 0.3681953510986335, -0.4119406792648015, 0.10295452460701619, + -0.028514516594771975, 0.29777232727863706, 0.8033790542554038, + 1.855731462672373, -0.9915477914770672, -0.39104957954484354, + 1.8604829261476872, -1.3498707308861384, 0.6985676905680062, + 0.6491575771420562, 0.10035814975085965, 0.6203657041059164, + 0.03720130058393096, -0.5092646268916621, -0.9522644140450425, + -1.1410759953910785, 0.19107807200401367, -0.46218201119755625, + -0.64002492430303, -2.1257015836539916, 1.2385096001374738, + 1.579659452635625, -0.3357229908464301, 0.18491188600986957, + -0.3025292534015403, -0.125549804848653, 0.622928495685437, + -0.40809712587392005, 1.617634084815633, -1.3903083795868942, + 0.8455260891545993, 2.405637871088736, -0.0418063625320119, + 1.3018845864309894, -0.17197041932468912, -2.2541117032362497, + 0.376683847715228, -0.5960809546537884, 0.49012293971249343, + -0.9331394837018785, 1.6819198933778177, -0.7158309082227594, + 0.9297067612987469, -1.2692584190046803, 0.8420013194403864, + -0.20389300980685746, 0.576569789963951, -1.1187440105143156, + -0.5856510449204204, 0.9663331828007576, -1.7177271455306033, + -0.014639223084981728, 1.7314859050882176, 0.6987110800208967, + -1.6848834226351845, -0.468054031300935, 0.2231411040063078, + -1.2079120248207287, 2.0110030501455016, 1.4453850086239999, + 0.34059707215507334, -1.8213959334958643, 0.8699402772722297, + 0.4899667100861624, -0.01173787871675348, 1.1948559206670855, + -0.8870269587625144, -1.555705163842219, -0.26533917383348415, + -0.3325290424739039, 1.5977665804314234, -0.41203089860517084, + 0.49183361850554513, 0.5136570154037132, -0.23309124875198506, + -0.7998287164209388, 0.530066185314952, 0.47106304564421286, + -1.0105968114955957, -0.8353508972894879, 0.12377709284481839, + -0.07289187751377658, -0.6735741109340289, -2.0639344018430106, + -0.014438189818046943, -0.4713457882035365, -1.3988791318705927, + 0.7076705525000143, 1.0974072497097722, 1.1672671573256546, + 0.5553099499949979, 0.12122031680888311, -1.3280507129101098, + 1.1654608124772015, 1.3139075127865134, 1.28261825548601, + 0.8583778828163117, 0.4508675701062839, -0.3773168693728364, + 0.16884703765184494, -2.5899418769593017, 0.8980383022257733, + -0.7871723126611332, 0.008146263601196916, 0.15100042746757067, + -2.158690321719755, 0.5154773443584927, -0.8968793509306945, + 0.12745529032276473, 0.3057102963260676, -1.127194036956006, + 0.06889018035163645, -0.29649779158358486, 0.4000800574133786, + 1.3294197922581654, -0.9809012577471112, 0.2604706024238921, + 0.5802535538390949, -0.7974783258128166, -0.6640912726671294, + -1.119222930304624, 0.5834025731102502, -0.25723586541301474, + -1.618253196199123, -0.0570695619599075, -0.43841397343582966, + -0.6767231131676439, -0.38371376805174173, -1.9996328333376983, + -0.33850140623335534, -0.1183524981649774, 0.005796690030477999, + -2.458306016054147, -1.099750705180441, 1.054860270281014, + 1.1651235359219074, -0.8686068833819991, -1.4001372299430193, + 1.1272944804074991, 0.03719751404379593, -0.06732456664178753, + 1.0123217113273348, 1.396494377415687, -1.114892120467897, + -0.23680354926169062, 1.1762829232717322, 0.35544788004728406, + -0.41986744728203046, -0.3867023929082546, -1.483298749076887, + -0.566334552372417, -0.03321061530877886, -0.8527679221181403, + 1.4516682272189547, 0.7320822341298279, -0.05200885253027685, + -0.9525949548843667, 0.5751795467491231, 1.178459960930901, + -0.10762850518883417, 1.5651830651133336, 2.1380607452390663, + 1.2280945171647695, 1.4042702000856067, 0.09325784801982663, + -0.3557970327475224, -1.073778288097418, 0.8968276612463406, + 1.399133831515596, -1.2439663723417378, -1.781799686206601, + -0.33427106612358554, 0.889230360742913, -0.41170088971799085, + 1.2155279834457413, 1.600649868770159, -1.6424774434123148, + -0.30897369601229935, 1.047363878453214, -1.0791866371859211, + 0.34680511458320423, 0.9927888544576774, -0.8514984695838704, + -0.8372280244524042, -0.22804642016295132, -1.3868435427851724, + 0.7441016059552877, 0.06972829881636747, 0.3420780025264497, + -0.04386730461990216, -0.017778941397242242, 0.6102135468147727, + 0.1101978218029996, -1.401046648194382, 0.6208120606616816, + 0.26306079867835747, 1.6277476977056633, -1.4148077742490233, + -1.12911289812443, -0.4018145604094114, -1.3755867441903893, + -2.399920233063965, -0.020319571626188252, -0.895842610909627, + -0.3494298955785707, -0.2738387174328631, 0.34922230639219626, + 0.07109890321458032, -2.4101191646725644, -0.7411692543552041, + -1.3233841458208606, 0.6863453426487733, 0.3632155343313335, + -0.5590033258828403, -1.1449685446383917, -0.7258003922221851, + 0.278797530701865, -0.3441402294664407, 1.441339424212574, + -1.2335052347473323, 0.07612868920434228, -0.4241597163106437, + -0.05332877983539378, 0.10099084201256278, -1.8787758687909357, + 1.4045284087841965, -0.04347827565492549, -1.2990797348095602, + 0.6319627183761264, -1.0748380347638893, -1.280830568026441, + -0.4632576940943757, -1.2762157345443148, -0.4871099169463196, + -0.8573516675952042, 0.2602500067557723, -0.663512812580364, + 0.9193611678505703, 1.4195120671985408, 0.31768737978504635, + -0.22676062071355782, 0.7472485772463154, 0.33979457913367445, + -0.024989366536706515, -1.1780091950874647, 0.8422172106604986, + -0.9853850143769382, 1.0084091587937258, -0.5446586568124329, + 0.2287236140419025, 0.12649973956792954, -0.8624432460024017, + -0.2042801144909528, 0.8201641258212513, -0.8429169760408267, + 0.15786776211979775, 0.586990037118922, 0.7581270686613231, + 0.13813966047716805, 0.14287983497159015, 1.542247836275435, + 0.6889352238499454, 0.3790751131802156, -0.36007691647378387, + 1.5453032787583676, 0.4475231964904419, -0.06905081640069816, + -0.2556692520813782, -0.6423795723912976, -0.6500078649365075, + -0.6577072095504994, -1.4866829628942408, 2.5030140049559653, + -1.0572143847418314, -0.000571660449572993, -0.042894005602608545, + -0.4591852328122149, 1.2843268761512387, 0.3968454779394536, + 1.138745996685296, 2.4071733886455227, -0.10540633867195442, + 1.2714215049136428, 0.04757946360595818, 1.2348108652417815, + 1.6311115642560317, -1.6302649244099794, -1.2745470694966483, + -0.8131839077565575, -0.6825393122927416, -1.0794370197645617, + -0.7204636565534043, 2.1467941519636455, -0.18535362890328835, + 0.6625127934408671, 0.38979365484662193, 0.7719784843101606, + -0.4958538436662962, -0.658575404725063, -1.8250261743740281, + -1.3009369789521832, 1.1569797741579901, 1.0803875458840382, + 0.3519814471093802, -1.5678550885987372, 0.17700126122173684, + 0.19570581803986603, -0.9713133420910822, -0.40681730492260765, + -1.079374837348168, 0.9333820675088979, 0.7164115790249227, + 1.5974993677559646, -0.27698287787067033, 2.0383895476075855, + -0.6836849892211939, 0.8311193676081333, -2.4241121219014663, + 0.31596002357495434, -0.999473279382509, -0.262687475352513, + -0.46071381621370666, -0.8976883600787323, 0.5219272929937467, + 0.9722622620644177, 0.552832436548929, -0.027467290841698567, + -0.6107378749038481, 1.3506129449321138, -0.4521398968561788, + -0.22117060492964993, 1.3204666166460701, 0.42542027990331455, + -0.19467559818902735, 1.3362817877824478, 0.1643979281153062, + -1.613150980719597, -0.5326178763831365, -1.5741387694417994, + -0.2358632094400509, 0.35096623923842685, -0.40087086833885227, + 1.547569381699142, -1.7090186764224344, 2.2199280575728784, + 0.7516533958698258, 0.6804837145322774, -0.19556806995297935, + 1.3537057525493934, -2.0138393066087383, 0.172351936169543, + -1.7024086384702934, -1.0519290071418026, 1.6258351842437149, + -0.11856858846558817, -0.8121335733777978, -0.02927583999406098, + 1.548105034805526, 0.6981009969478109, -0.990277098683295, + -0.15604117684813257, -0.9747927516511783, 0.4652704424950469, + -0.31289780730884004, -1.651056798736739, 1.2755967903796157, + -0.13648504411430237, -0.48481306969894616, 0.023313382404551213, + 0.48504298344685315, -0.8507882704201493, -1.039212404883905, + -0.653701398776706, -0.5189768622716721, -0.12449303534256825, + -0.5128172446702866, -0.06818346256734656, 0.510667943805758, + -0.20971767447744363, 0.7975878663589364, 0.3042695491801, + 0.2654566914993375, -2.0012906991903865, 0.413870629899118, + -0.6025010011948203, -0.14082858261327996, 1.075340195058932, + 0.2593371488480129, 2.62922759693777, 0.3324210527578405, + -1.2020419530087723, 1.1926421271709948, 0.2347858166167028, + -0.9756048534996443, -1.8200265368846862, -0.5169307203823522, + 0.1500518697766681, -0.038484274917838325, -0.5595155602432803, + 0.7826664898369591, 0.4484219149387221, 0.29541985156163897, + 1.3984689244673294, 0.25998037440140653, 0.42332643185294355, + -1.2422400480672728, 0.2176902105319219, 0.728761958261402, + -0.011206770084421624, 0.42373795905496436, -0.0772966783872132, + -0.1844058501562145, 1.5231610698492861, 1.5815719719777372, + -1.0224998294567542, -1.608411795245145, -1.8940383890496493, + 0.5392647246180361, -0.9404210876785811, 0.24515734401955552, + -0.8758837658412391, -1.528076170772824, 0.16773671218212843, + -0.06372312245930913, -0.6625850298997638, 0.31931330490352056, + -0.7703083579211024, 0.369010898692774, -0.9262558726002627, + -0.021452503506505422, -0.6884402260487072, 1.5154027937733978, + 0.8284697701567305, -0.07697958106921719, -0.4538814926580921, + 0.5439309292438045, -0.5492443043774654, -1.220225030532012, + -0.7053512461796413, 1.632643282613422, 0.5778426489678986, + -0.9229177377752995, 1.588544297460673, -1.7481169305157809, + 0.2618776316461439, -0.7711250331583439, 1.4721431859882452, + 1.6321252809774605, 1.521708343024266, -0.46073261039758234, + -0.7747734720993155, -1.3354599996427268, 0.9861401026653767, + -0.575980258880269, 0.0853876730028182, -0.6195540436182536, + -0.5432771078257063, 0.3060459872354665, -1.824118723913547, + 0.8784176817828129, 0.8097094976615903, -0.361780627962229, + -1.467071190440473, -1.8907115007272879, 1.1242546008439889, + -0.4974181028535098, 1.829441455586246, 1.017979249905673, + -0.7075497604105697, 0.059183606525579274, -0.13056990600722507, + -0.5832122715205462, -0.01409309201012074, 0.016108610412205803, + 0.1900118760884006, 0.24188780949423172, -0.8882450727066196, + -1.3576659214518099, 0.07447367725510536, -2.991099769542917, + -0.6488322635921112, 1.8595982643945574, -0.702641433986396, + -0.6416959601570708, 1.3390388750212445, 0.057488906459266735, + -1.808725561176733, 0.2948187135806436, 1.1497414866629478, + 0.8709941695277267, -0.2850339815191343, -0.4997261831464098, + -1.4398917507631508, -0.2148727154738073, -0.031164729254402425, + 0.48150661412660234, 0.12415703923674576, -0.26613703422724105, + 1.0565002395567262, -1.6752860867796824, 0.1869147939846373, + -0.7272110183291539, 1.6245102578872348, -1.3773924349992401, + 0.14296540214244555, 1.4878267201868336, 0.10331510654880505, + 0.9062060348158155, 0.9324085143967664, -0.21818888199568304, + -0.2522508930003547, -0.8562525871887124, 0.10204130138311729, + -1.0184106320915587, 0.1825164284873822, 1.056310703030919, + 1.7552903725196911, -0.12454007621445604, 0.31880532192621097, + -0.35541825354040035, -0.8580393155101081, -0.2682711254651047, + -0.30783295275138195, 1.3170139199898268, 0.7531186614185573, + 1.192570085627795, -0.6615475858876328, 1.4991876630051717, + 0.30861856418442385, 0.46151436623585584, 0.3960375120229514, + -1.5852068567014443, 1.9903541747766398, -1.1185087223822021, + -0.5183442785156127, 0.06782511507671637, -0.13813126796841926, + -0.8649990189511263, 0.6978353775870149, 0.16085392211498364, + 0.7383270750320552, -0.6856342770612354, -0.6045226539767258, + 0.8110514204550441, -0.36508901079756473, 2.2802828142762928, + -0.7663535452926638, -0.3887166303815122, 0.9034427218611359, + 0.21868488058095606, -0.30457226174639157, -0.287175489125426, + 1.3568449350217864, 0.39711905418048105, -1.1763187968954603, + -0.33474769656895564, 0.917254226523988, 1.0804852401399638, + -0.9584787505991971, 1.7478622379080422, -1.2473029790869914, + -1.982585782186715, -0.41852445481952294, -0.9465815043529053, + 1.3486167490991765, -1.3147522922373933, -0.14921512592164993, + -0.6510935828594568, 0.009685462499594857, -1.0764421921168665, + -0.12975724308626338, 0.4720265080850217, 0.3117809833804109, + 0.8469168005900016, -0.520242573974674, 0.27675686046474957, + -1.7178145403893597, 0.439729002709256, -0.30048055544717606, + -0.6302171098523444, 1.241050608643494, 0.5721350887681553, + -0.0022023636536079735, -0.4924114110139152, 0.9950463422748212, + 0.9816810712679719, 1.9924377989279343, 0.03900009491657034, + -0.2935571188258591, 0.1266892245615102, -0.715464769225636, + 0.3145853867440553, -0.3835873169761903, -1.0953446648325833, + 1.0121232148460444, -1.0957236224096085, 0.17063463111383734, + 0.5102992173497909, -0.3658969046671184, 1.23797611806204, + -0.18059200075977175, 0.9936325102325779, 0.18430235850671245, + 0.16517189020344797, -2.016269812957052, -0.3616199185761283, + 0.7527532999342817, 1.3277176349050535, 0.2920534284459897, + 1.0606099435377094, 1.848598832091733, -1.3301443272735525, + -0.5759958625549068, 0.27878675140631204, -0.2315083920631258, + -0.8288316208067809, -0.2635580627160318, 1.3355871376746895, + -0.8117302674348011, -0.23432703924765444, 1.92799930513707, + -0.23101856846075614, -1.4238524703136513, 0.1368000358051577, + -0.2055684135567207, -0.15855445409422964, -1.2600442043395892, + 0.1701769006730323, -1.068866010850334, -0.1904292641612836, + 0.5892434527813512, -0.2157459392172624, 0.4055498592698905, + 1.6497067243577175, 0.7890192766736421, -1.044353487265588, + 0.7953139847174688, -1.5740154854045074, 0.9665654379132748, + -0.3889094455704384, -1.8426397459593846, -0.9001191779220159, + 1.7045921258988515, -0.8923330121142684, -0.5956915482032328, + 0.011227289589172133, 1.7111591357647962, -0.9587860284026688, + 0.7548194520215976, -0.32603844480628175, -0.2353359336920787, + -0.16729381132141224, -0.6023878547302806, 1.371156314999161, + -0.2459473828028695, -0.2620130902224386, -1.2172056461838572, + -0.20656000988613168, 0.5008110746890201, -1.4028780271648753, + 0.7193747259694553, 0.0660307754939295, -1.3093771377458805, + 0.407051194515542, -1.1823392140768092, -0.4019555472426395, + -0.26250820888118304, 1.2702869545254583, -0.24272141574465245, + -0.42155102572483116, -0.05194109601117269, 3.292873619493133, + 0.7890333104486489, -0.6211877906484109, -0.8047810389893006, + 0.9678567436130486, -2.079988930109922, -0.6016769585932343, + 0.12364670959331653, 0.7229553379296235, -0.5227730192140618, + 0.023991105176350242, -0.0017528334343272331, 1.2586605379107056, + 0.8446327540395329, -2.252502331262609, -0.5270068966745032, + 1.6223796347828976, -0.4278645067985037, 1.6333830568090013, + -0.8062257833307152, -0.30685337459460577, 0.3507708774563464, + 0.424527526741457, -0.03735386264172313, 0.229879937036083, + 1.1454140027646036, -1.1872670475847902, 0.6262020869197982, + 0.7589488691885292, -1.6862092963785988, 0.7944545737967115, + 0.9971081922053232, 0.7560471613916118, -1.1851981001821967, + 1.0965175918763284, -0.46530937265986, -1.2761702411382863, + -0.9791491731581209, 1.1589807765966766, -0.8156014346461856, + -2.8072546995497247, 0.5334627416087777, -1.3798149493182552, + 1.3972706448160608, 0.4552374166958973, -0.535433943499853, + 0.8920580452737524, -0.5856331944062472, 1.7623274652492553, + -0.2852747983665435, -0.18313041510663963, 1.4659299617833124, + 0.1519470164480292, 0.23355499681619366, -0.836602381173288, + 0.18618502715241547, -0.08859676768441688, -0.7180391575300691, + -0.36232537769580714, 0.36477740973605915, -0.9281105879066266, + -0.46197664970984853, 0.6483976493075976, -0.3812217162848902, + 0.4303579894467762, 2.0043530514779873, 0.39102979400332366, + 0.37534637396631415, -1.071734524715999, -0.16045645113900145, + -2.998145904788263, -0.36470187389744846, 0.03991547011616779, + -0.7008645685896715, 0.9912516955548382, -0.7450675439952815, + 0.3264674970899282, 1.601666916097199, 0.5405397248625541, + -1.1861306612606524, -0.522172803007203, -0.7727094284088601, + 1.2277562505941912, 0.37759283992313625, 0.7444682278368736, + -0.6522853231400494, -1.0696424743836717, -0.8054574164094268, + 0.905380130000978, -1.1121207299686113, 0.2063449976062078, + 0.5176153181186626, 0.2301751658467518, -0.17968415020039138, + -0.5804234791794292, 0.522042470813759, -0.47680230351950187, + 0.7668678996668346, 2.1152176375874023, 0.4635399730851282, + 0.7692324460373827, -0.5214713943997042, -1.6311809160767827, + 0.7017462722924709, -0.31859839125881545, 0.20304228378387937, + -0.18790051825211995, 0.18432739014512065, 1.1541296937922023, + 0.4450818568868103, -0.13551483948610296, -0.2758105920455811, + -0.5849315949646472, -1.0646125679003637, 0.27411289538745437, + -0.5032261617196119, -0.04351057134624247, 0.7743236339777182, + -0.6756715811861062, -0.2671752620926679, -0.23914374307205996, + 0.16461452793247355, -1.4436309225983486, -2.20506341329235, + -1.0189819575984795, 1.5608022939480573, 2.31499985378701, + -0.4181529433643855, -0.2711132087457424, -0.7206084096900425, + -1.2504073094445143, 0.31340429692041716, -0.1447897506201982, + 1.1850402988106572, 1.9541706849775027, 0.11232761778850357, + -0.4382234425091706, -0.3947615339868321, 0.7015762348678443, + 0.43950731587232217, 0.4486281613565141, -0.33259394965579864, + -1.2893276502905346, -0.5665027824228605, -0.9867864794525018, + 1.7152028381164288, 0.7425175887812803, -0.4541542908237512, + -0.04974419881485532, 0.7205327224864219, -0.49642760570489125, + 0.5806736618394556, 0.8088452773706619, -0.15195744367862507, + -0.12096553277305616, 0.6220396950025358, 0.8874367244840082, + -0.960123924615042, -0.2512769100863725, -1.3487372983592427, + 1.9195263893870158, 0.1391130058484598, 0.3556392382753691, + 0.022946113835703726, 0.06403402028906036, 2.01431714516637, + 0.9153269759513197, 0.45535078555080316, 0.8164902531014034, + 0.7554878281598991, 0.7302943512899034, 0.9227450720901643, + -0.2149435624765486, -1.9175638929241665, -0.47494584965396475, + -0.8209686635530825, -1.475086806478942, 1.5375697346337323, + 0.43409387407100747, -0.5748944134752534, -0.1207717673708367, + 0.10757938709427231, 2.24973612340786, 0.5656573548928321, + 0.7510332313304937, 0.2925755284670311, -1.1385387437599415, + 0.9278383480094607, -1.9329319879816766, 0.8833452963447278, + -0.9531724053699292, -0.1039290425260258, 0.4382286101469634, + 1.8998623656623255, 0.19200494459198952, -0.6716950287224315, + 0.5638093918454188, -1.6242049283972644, 1.7704636715303947, + 1.6534314391102312, 0.92655666075164, -2.1666623771571185, + 0.3089037330906556, -0.34387294467445684, -0.17869075221031164, + 0.45228978471381315, -0.9526180775686287, -1.1784311215584218, + -1.4588182758831976, -0.3751354576229393, -0.3058513410728059, + 0.9384734481636833, 1.1326237644059438, 0.12950394282796612, + 0.7421113354249786, 2.22774088023295, -0.38297985887788083, + 1.184609638956563, -0.28900852784476955, -0.38476787730344003, + 0.06257594537962448, -0.8447175394855944, -0.3276448761445928, + 0.9520069001238655, -0.7029145751675628, -1.6244073387265128, + 1.622978343226983, -1.2795553886248943, 0.2494267093436905, + 0.6236424924999387, -0.04290636875881789, 1.8562326434548018, + -1.3390517668015733, 0.5090655455389611, 1.2848563335735044, + -0.5387392229559257, 1.6741064751678032, 0.10066535315992477, + 0.8949591322162106, 1.6846660415357275, -0.47037844642707904, + 0.4157622049238856, 0.540404845364168, 0.3967936830533677, + 0.43668944123398024, 0.2112361885627918, 1.185672884091169, + -0.33641286222705097, 0.5497594019101291, 0.12465203566067538, + 0.38350811363315446, 1.4507326394999236, 0.14723038127353738, + -0.7869045408490771, 0.39357209249435554, 0.9743220259735553, + -0.06453115565194864, 0.38254243983530506, -0.8643740939583053, + -1.684728335866361, -0.20622146179421566, -0.2747979191346741, + -0.07028871827775147, -0.5729020560099904, -0.6189757445377713, + -0.1510371111896753, -1.1820077963068163, 0.6043354866597276, + -0.9774217378587312, -1.3380178663597784, -1.4201147833071752, + 0.18880445993987796, -0.8427639940831457, -0.32186427356745245, + -0.006664725012722541, 0.8058032956183504, -0.23641847937920588, + -0.6756647705708424, 0.4773883748212866, -2.185477701275724, + 0.7531165422993013, -0.8203844714762077, -0.4004758384259698, + -0.6468022951980026, 2.2667765095579213, -0.1464154957378096, + 2.098114036236069, 1.0184508455410493, 0.8103126555466662, + -0.40972058902905745, -1.1414090507678094, -1.3867326701405396, + -0.4507753555588849, 0.10028961530046718, 0.13126844765242035, + 1.8046340365305968, 1.0498294815194782, -0.1970397367331956, + -1.4653721149167949, 0.28738863276181814, 0.5271374800610847, + -0.1451944493283091, -0.9800599971955779, 0.6516285157791157, + 0.3396200289963888, -0.8198525721107438, 0.6319579574491423, + -0.3772650215173409, 0.3077068224849206, 0.31720206688921, + 0.12158776309046304, 1.0809042082121207, 1.0642567891228714, + 1.8179097447438652, -0.43206935605397984, 0.37786874569296014, + 0.3952043620022568, 0.3619801074518372, 0.836701763727239, + 0.13589241191151316, 0.5983402387018408, 0.11083062853937264, + -0.47684235510432976, -1.425496108886025, 0.5861440987479868, + -1.086649842646286, 0.8692343861045037, -1.5595017100635853, + -0.11939217655297334, 1.867839017091306, 0.1529344462913203, + -0.4142188866098133, -0.015382150772253089, 0.02331025826997036, + -0.31332150638072576, 0.07177806286427546, 0.9588513248678675, + 0.4790246289141386, 0.1782800679264196, 0.8316439535085373, + 1.3697451219813022, -0.29239194315140027, 1.7130334754533454, + 0.15301199433584703, 0.2516538496321531, 0.8052203626705442, + -0.8193169757784692, 0.8297372716531863, -1.6382362402194854, + -1.039626938505833, -0.8865946056863021, -0.9294253652017392, + -1.7978162276590155, -1.992621134234571, -0.05491414933488196, + 0.7607121087371761, 0.07984366129268702, 0.5462619894735057, + -0.2682509648059717, 2.6409716720600263, 0.45749720934429716, + -1.5363699364147407, -0.7376116600379029, -0.00034809918522295523, + -0.0446268595336354, -1.0661827948417526, 0.20144275615808793, + 0.7334562425309233, 1.552508206699953, -0.4212114236659149, + -0.18798580599722212, 0.362342131367099, -0.40201566793731663, + 0.24422295735481817, 0.5936899101332285, 1.4911129590651635, + -0.012571888777807325, 1.1564868960369348, -0.4347382827914363, + -0.03991151500405277, 0.8894520643614005, 0.6750877041971858, + -0.8924490272423622, 0.06802820117873785, 1.3941390498912603, + -2.2183459123693248, 0.728823441885771, -0.20738631995329626, + 0.5619451894738027, 0.24102109818707865, 0.5988075233622759, + -1.197341333157397, 1.141794439805377, -1.4503023284963743, + 0.17970074803850108, 2.2516048850144963, -0.56902356791673, + 0.5251052705298633, 0.41230439233508803, -2.0610354044549024, + 1.6463483630850755, -0.3895932560221762, 0.023372481314313378, + 0.3726580742458444, 1.6009305244339782, -0.5079472543165146, + 0.026058442391582896}; + +static double gemm_B_dram[64 * 64] = { + 0.189669602985114, 1.325049359243402, -0.732183062829934, + 0.572714186764936, 0.578590600877031, 1.2388796995290943, + 1.0500306672776403, 1.8192381659692514, -1.1405729828723672, + 1.0122300292640196, -0.6803068888120192, 0.23558756797719393, + 0.4590523848413457, 0.039978934156923385, 0.7649728251851297, + -0.6523866340206094, 0.9057001363970097, -1.4969909024911252, + 0.5583314398652852, -0.4452115501359032, -0.3304347302314844, + 0.027571386474332372, 0.8939826883481805, -1.872118961147354, + 0.5298280317907396, -1.0826478091988276, 1.2084845569673108, + -0.17218404794239636, -0.3252179452060136, 0.3945233627729552, + 0.2425669838461522, -0.2564454574318479, 2.0415809465850456, + 0.6967377843326548, -0.9048546980985884, -1.234321257122067, + 0.03613326393674803, 1.5030525940981552, 0.039812401385598245, + -1.028716739224381, 0.905199590933292, 0.07238255324721113, + 0.9920291161315633, 1.607092129619061, -0.7789509309904787, + -0.8098065870783787, 0.2185071569653127, -1.0776572234997361, + 1.0422979672486086, 0.35098947793500807, 1.058321853508688, + 0.21414179532614872, 0.87002060394994, -0.588672020705869, + -0.9012431889469893, -1.1027247239157423, 0.20399290647527346, + -0.22033680012834594, 0.41392188096741706, -0.42930260307085955, + 2.008106278814718, -0.17141366812550005, -1.0826275786645045, + -0.9116258668673404, -0.4909043876322673, 0.5943271959845479, + -1.032232792355313, 0.6916475040075348, -0.2814338568695432, + 0.3019276636231262, 0.30840104248656297, 1.1260293291302985, + 1.0658378320568267, -1.309665630454003, 0.03270078938345398, + -1.042853289185364, -1.1963506272729019, 0.22648827570429167, + -0.27781730274050287, 0.6724032102680387, 1.4810649208771722, + -1.705538843107525, 0.09082361393666324, -0.7042276239280941, + -0.2383161417380752, -0.5754942139316102, 0.2034652918512655, + 1.0314063302051917, -0.5483340133806348, 0.7261075561744313, + 0.24325632249018914, 1.2040307377783537, 1.8952069586290123, + 0.07195894063173909, 0.41620952444354886, -0.38792744247312216, + 0.43271658564463056, -0.7152907230181043, -0.27441611835118457, + -1.2767143227797635, -0.7237480311094019, -0.7801386726592521, + 0.5873572672607883, -1.5638814718009917, 1.0026700985921706, + -0.20658267805579636, 1.1147082449222048, -1.8735264640919256, + -0.010118223620103015, 1.3128640032531393, -1.2394667444809362, + -0.058071070610180346, 0.3326917440450766, -1.3418569139214052, + -0.35250711745478874, 1.062335579748586, 0.20356887701465726, + -1.5085222292073164, -0.20122570212640017, -1.2154057454628897, + 0.5158621290601251, 0.9695271692142623, 0.3441306717260009, + -2.1992152335223514, -1.3802722217172205, -0.6034656461417384, + -0.4801083441565978, 0.8538691740175305, 1.251004287596872, + -0.09542742482466746, 0.40740998722283345, -0.46840541134330865, + 0.6471911034482357, 0.35532009889140853, 0.7653967450899795, + 0.9524656674056426, -1.6215943351797741, -0.2686500917542327, + 0.9449563832937318, -0.20293909969523755, 0.020177369737896966, + 1.8868326165910845, 0.4576448036103095, -0.2498818144309833, + -0.10142946285532765, -1.449579663145317, -0.8489450230349159, + -0.6568950465417366, -1.67036939630407, -1.7958306634788441, + -1.1021273970619352, -0.21287356137371105, 0.4835462118207064, + -0.706131682059633, -0.0005784215469045945, 0.6574250653163278, + 0.17766778608163517, -1.8727680007027385, -1.5710173931120528, + 1.7986529290207192, -0.18797275721228432, -1.3910123695349608, + 0.4306425799188508, -1.219748011178242, 1.0949707620919027, + 0.1513762139476246, 1.9338021854764944, -1.7210422812237611, + 0.9885068182490291, -0.9803371411601391, 0.29682676074294506, + 0.5079171532797483, -1.0067592408859265, -1.1852909158053921, + -0.24870697467690292, 1.5263388569653553, 0.3621209495718994, + -0.10875592605323897, 1.5707754718355267, -0.058214043298022156, + 0.11649757853760016, 2.20745259723818, 0.22508102515092662, + 0.30413440003257725, 0.3361637150433332, -0.29948851492748413, + -1.4644211330145278, -1.1645688132881276, 1.7112956696610628, + 0.3665551294097223, -0.892280722293537, 0.23500589115883444, + -0.006491959097523364, 0.6091191876188028, -0.4461691518402758, + 0.9121131054406446, 0.6355326129684161, -1.268683781896227, + -0.21309922823334831, -0.4526268909737412, -1.4960032394689278, + 0.5540823200822727, 0.2560919649556906, 0.6958730281917784, + -0.5196649709771612, -1.3359468501779264, -0.9612977596469916, + 0.3684109792157164, 0.46874289915027023, -0.23500821987366438, + -1.2492858128054651, -0.9712261431242842, -0.11106638365989584, + 0.9412519070406014, 0.49297323422258654, -0.8131389146040623, + 1.6400307701149688, 1.0589667993101595, -0.4626925507420147, + -1.4812253208994315, -0.44695524379636, -0.5088098786201557, + 0.7417386987297616, 1.9120910039247294, -0.5568304246735866, + 1.082342797278427, -1.7235037406979286, 0.803163868309887, + -0.9769340341766338, -0.35112463351229073, 1.089671633947238, + 1.4945995510345567, -0.9605994188901047, 1.8558602683726249, + 1.2656905677375838, 0.42254046476492185, 1.6858550771091214, + 1.157878804816697, 0.4573643259259206, 0.024994765804824147, + 0.6922554384196643, -1.0810666579003045, -0.993616522481608, + 2.5847749332602, -0.5049684014655186, -1.1395828435290725, + 0.7605771798197924, 0.4408163359631587, -0.0840611891215317, + -0.9527439222312267, 0.6926562526915562, -0.0027305349396484877, + -0.17986472316396296, 0.6422610144258437, 1.412615895841031, + -0.8278577538333346, -0.34124077949668935, -1.0204861021625729, + -1.639602822546497, 1.6074096919057093, -1.1584852824016685, + -0.7208155426015784, 0.8392040761097412, 1.4407795793808869, + -1.1752867571353782, 0.13944705380804281, -2.1057408864224376, + 1.8791244019244464, -0.11042132844938202, 0.6020370854831343, + 1.123017096832584, -0.05652868718922079, 0.9625740766310946, + -0.9673606956637038, 0.34492034644528907, -1.5375361503838323, + 0.4990455041789286, -0.9489277592897538, -0.44848662225935687, + 0.20225111438661522, -0.7527660556091446, -1.1152440995018695, + -0.678649964720999, -0.0170582056258441, -0.7846907726938122, + 1.464993202427589, -0.23851486543700182, -0.21705046983702211, + -0.48796761821159795, 0.06955842538462975, 1.354628016983049, + 1.1723362156850679, -0.05921619047971073, 1.837739007328147, + 1.8393226614447074, -0.5268796561342607, -0.009364231583693152, + -0.34684234783223405, -2.176072940640231, -0.09860764477494396, + -1.375924608815696, -0.3811363408541145, -0.25535084881820336, + -0.5151247779921773, -1.9166699100712044, -0.7282751936534643, + -0.770819120513824, 0.09989507970317545, -0.878538580803181, + 0.7867474162185699, -0.6197714222289087, -0.7670250649875356, + -1.1346435642707655, -1.0880912464935015, 1.068458625377813, + -1.3222351936152148, -1.066593964724342, 0.6852370705793731, + -0.7113480780630511, -0.40942559335898576, -0.7483757154858288, + -0.07122776033319436, 1.737408764400146, 0.11841252923863307, + 0.8754522360715343, -0.343031757238289, -0.16416710878946741, + -0.19531408663845634, 0.7754013715005769, 2.1332591207760423, + -0.5052118758709067, 0.7131591899986326, -1.7803264017675031, + 0.09420444683357239, -1.0472700356156177, -1.141024988505546, + 0.09968113439098554, -0.5500313848742133, -0.8741986078561492, + 1.0386438045163713, -0.25198767361062563, 1.6311155422356378, + -0.5489949380720973, 1.4199156443209913, -0.2207014712546088, + -0.4933058762731387, -0.27150483339996007, -0.609287115241384, + 1.8620527369297897, 0.3449111247951254, 0.47062028183460747, + -1.1545294505661057, -1.292810580741897, -0.6289136729611903, + 1.2737042271707677, -1.0511082561993392, 1.426825388255249, + -0.015158507511135831, -1.273327662575822, 0.3566423182164152, + 1.7276268792428473, -0.138705499081124, -0.3306294574129653, + -0.25875806103153426, 0.9880995543293336, -1.8623261901283767, + 0.4777716036036974, 0.7487573413181321, 0.2064510369320226, + -0.6262881610175278, 0.7353602889754229, -0.51667585170615, + 1.219994070236117, 0.08511682154742599, 0.461487533016861, + -1.4324664872243593, -0.2831471438083741, 0.054981156346117374, + -1.3700696100114267, 0.3096752736763023, 1.194241938484396, + 1.8141528512917984, -1.58398942271415, 0.2567713855866453, + 1.1325804441514433, 0.25474731658461836, 0.5102671515154679, + -1.4402773937935691, 1.3631571444107151, -0.8745959707232299, + -0.6709972930186268, 0.2283470744920325, -0.12596887340485374, + 0.8065789677701352, 1.421469323382145, 0.4556508032642018, + -1.0983863507243814, -0.6254964658092993, 1.070974103218303, + 1.0062944399776677, -0.2034198776993104, 0.808780940775045, + 0.5534680689510987, 0.8961184107636236, -0.5842103728027922, + 0.5653085033471172, -2.1257290549864827, -1.5901962373203609, + -1.9012367446206324, -0.6712383697091975, -1.5234460098622955, + -0.5907400058854823, 0.5435115627741249, 0.8494509722996453, + 0.39541460589373995, 0.34454168140199853, -0.5998570139754461, + 1.4125085287986676, 1.6191319296034328, 0.5896315959519233, + 1.6752120980115939, -0.2991192109089548, 0.9223415325858076, + -0.7167872516194996, 0.22778147331011792, -0.7313561090591182, + 0.2921479170003794, -1.625666094056695, -0.6445948416979022, + -0.05395662589269566, -0.32651136607182046, -0.5718694030200041, + -0.6239270633688702, 0.5293884091632937, 0.8538659984117739, + -0.08646896041984872, -0.4591311530517561, 0.530729446677609, + 0.9885369669648936, -0.10094123058942654, 0.7532893387345917, + -0.5660396507329793, -2.0027194859651005, 0.5301317384831784, + 1.7010094716661732, -0.6006505084403668, 0.07178044356560984, + -0.7177231480244217, -1.359337165187181, 1.0326277403651098, + -1.104532973746827, -1.6930804949542624, 0.8948572423285246, + 0.6340160893384413, -1.5423915961168462, 0.011234729330484954, + 0.08870089142026438, 0.3252000063592445, -0.3788953447378539, + -1.6345167208845197, -1.9943938078659595, 0.5933545751971042, + 0.1442610329440957, 0.8612263693463771, 1.0358096108450814, + 0.6111080247478592, 0.3509848535144375, -1.1231152704037288, + -0.1305107898573894, -0.41201313101807663, -0.03594780788378006, + -0.9547182114259212, -0.011845221890036848, 1.12335088041976, + -0.9774107703754668, -0.34076482193730445, -0.4446802970229687, + 1.750328003641402, 0.11174788170294983, -1.565777190842104, + -0.2346242003304713, 2.025590134435565, 0.735919593851651, + -0.3026497563524433, 0.795453306662201, 0.46657766925371513, + 1.3719765295674315, -0.4428217812148648, 0.7438423244369328, + -1.0044446714902608, 1.154104526108482, 0.8839111136542974, + -1.4508885825739297, 3.0611733845656395, 0.07901046926896166, + 0.035058228455775144, -2.529204012749036, 2.2253130444496216, + -0.4836215067602598, 0.16087228538156456, 0.7529292801127621, + 0.3021529756635018, 0.4830310122781418, -0.8075856256378251, + 0.26676009847445914, -0.29717856392002556, 1.2712147826101827, + 1.3176937460170013, -1.4531100825401797, -0.401073196111487, + -1.2871905265662251, 0.23493164012909643, 0.08751016369069563, + -0.4032539921927929, 0.20282323529368904, -1.1162555921139607, + 0.12695806790569364, -1.406093789252919, -1.0433007967333698, + -0.6034955540076896, 0.17102026852126964, 0.7887411128500289, + -0.703456192532379, -1.403341194881998, -1.0180851564689184, + -1.207196105637615, 1.3037843089034824, -0.8651985363612925, + 0.16224668087220992, 1.6395521189037061, -1.463483294540364, + -0.7310087129802972, -1.409361808083387, -1.6742963677191696, + 0.31488414200224113, -1.0807755665828445, 0.11328910546500368, + -0.09407603144337613, -1.4910310277195566, 0.7879699185151358, + -0.22617275756319744, -0.18453310046988597, -0.8088417376829332, + -0.3039969187778905, 0.8286501834765244, 1.746576388943919, + 0.4585966464736884, 0.25857411751629744, -0.7755037047860419, + 1.420943752567541, -0.7945878809532562, -0.46422664555214305, + -0.5870832701281387, 1.3591013677668105, 0.5825126289522653, + 0.6302719139868384, -1.4892296911532181, -0.054354803805188714, + 1.2886090146135347, -1.871894006094185, -0.17706345246737432, + 0.8586917015117914, 0.9881224827101989, 1.7896888081081215, + 1.8466624703615426, -0.652536121488528, 1.3010866809132744, + -0.09621481510992093, 0.4195057830533126, -0.04083288515295536, + 0.6108022121551525, -1.0750510120212, 2.0140943483593357, + 0.4481129685052948, -0.9859321167207238, -0.08362383634635764, + -0.03871848811440984, -0.2859438908875716, 0.5451864270031233, + 1.096287644463553, -2.0123992429307687, 0.5129399194497606, + -0.4096728112440253, -1.0733837614648305, 0.005037630800198677, + -0.21228362057381842, 1.0230324323469668, -0.3656703260246628, + 1.343090275133355, 1.22200570063805, -0.19194700432383366, + 1.6409555329882874, -0.045055182295066304, 0.9609987857589979, + -0.19006125129863014, 0.4532745570836223, -1.2557975528603051, + 1.266664141133199, 0.7341021381288548, 1.0225863410319447, + 1.0410718138994182, 0.7172806738325695, 0.7903692364559284, + -1.2222599875487237, -1.1506465980729734, -0.5931209140159687, + 0.0009066596896233819, 0.8988006272366036, -0.7368561086985402, + -2.060685831545258, 0.5996372458926001, -2.6379391495512574, + -0.15461646907210536, 0.5809320989641804, 1.2787415555120119, + 0.9369918534027788, -0.6875243358298012, 1.4942643445597592, + 0.2701534137189382, -1.1816059491920998, 0.33872966509087593, + -0.24720917613413934, -0.3605679983284582, -0.6613196865194579, + -0.41998189317162704, -1.4697058573054282, 0.8301051921559156, + 0.41312510613488473, -0.3119279752724232, 0.4832898322611189, + 0.07210674722777907, 0.46221378683028386, -0.37907311341065303, + 1.0338668347332045, 1.827883401988348, 1.4366607957461852, + 0.00961089155518196, 1.1215412005788055, -0.9367274619902408, + -0.6322235536233912, -0.4955048405923246, 0.4275765566731029, + -0.4174196455050283, 1.0639045161507725, 0.17385489080177374, + 1.884693292443038, -0.9174412411641567, 0.28332303940663434, + 0.5154356751840908, 0.4527845805518231, -1.0762757525300937, + -1.179877567884639, 0.05121250188699606, -0.8370218706835116, + 0.3936578615259371, 0.4760963910597331, 0.5554786252919994, + 0.623642262045472, 1.1315240293178561, 0.6513772767640275, + 0.9117480009446275, 2.0918988065309074, -0.18111164825082318, + 0.14578447935362185, 0.7752307161020041, -0.7579177299008238, + -1.4643865224645813, 0.03389748036349978, 2.120628606940419, + 0.8014787143841253, -0.20745942068486495, -0.2879768579253691, + -0.44376875474220623, -1.431453126891794, -0.11047101043242392, + 0.24254161271823366, -1.3890767080063884, 0.3551940772843608, + -0.4821841102534756, -1.7404902110705263, -0.40990083463094634, + 1.8406160691146698, 1.1343291794639416, -0.8770360698657584, + -1.308217262167615, -0.06936303775634156, -0.39764667123450276, + 0.5769725286701373, 0.5896270638633384, 0.9362446576484363, + -0.27937299969585233, -0.610273978130261, 0.3618651906707751, + -1.2687776942664193, 1.0626862705466873, 0.1667616956765533, + 0.8138441501785322, 1.6828432679771586, 1.49682253754663, + -1.1863230769603135, -1.5117519393616556, 0.294281094993007, + -0.2266617043180088, -0.41000204751825736, 0.290692491485043, + 0.2610713689915173, -1.4803962625447804, -0.28203213808230204, + -0.31875591594593894, -0.7579009703382211, 2.4195675460926807, + 2.247768381111992, -1.2980855885884446, -0.6529880062202584, + -1.1234187168399243, -0.6956208755464927, 0.18965693411991652, + -0.7362169554932866, 1.7754003059642411, -1.4235677497447479, + 1.2291191037431475, 0.723527014546075, -1.3435315937863141, + -0.17217271634298267, 0.14983346550614027, -0.21891340206561175, + -0.010486184647393863, 1.2886811180355797, 0.10616567929962695, + -0.609164835229734, -2.4211016076172376, 0.9463913483379409, + -1.2980770068731349, -2.686933468264052, -0.03499567459563232, + -0.34422522533382366, -0.0004908173861640336, 0.6734912677572197, + 0.3525723705153651, 0.26758049299320774, 1.0529967718142275, + -1.0999426989251082, 0.607473797642488, -0.4324428804621579, + -0.8747836211413581, -0.7615340045466905, -1.3987613199365359, + 1.4760791332584298, -0.6692014546820036, 0.04206641378767387, + -0.9954780884334878, -0.7367371645074806, -0.21469214077392976, + 0.79863673183808, 0.5075977458329036, -1.1234803559227962, + -0.11931261167544333, -0.9031732659236469, -1.5609889694409194, + 0.027729684273670476, -0.0017713213496273143, -1.7998106503968425, + -1.498807717939337, 0.8169615081274427, -1.225033387547948, + -0.8400996437124898, -0.8235377496257132, -0.4364264295280201, + -0.01520214370946306, -0.15565017655025964, 0.0711312016026537, + 1.1732559505317561, 0.5421847899339702, -1.086805433546504, + 0.08813241769030257, -1.3579610652989789, -0.95942170120491, + 1.459939956281907, 1.0117046306174486, 1.236197607064445, + -1.2847595366907714, 0.47824603981077524, 0.30763463139827374, + 1.1982758403837634, -0.3864008241497015, -0.26343272683881636, + -1.750741728784698, -0.7351692274922426, -1.1349702581587906, + 1.587266678692178, -1.2860170377857756, -0.4801752859875242, + 1.6636658079534445, -1.3553330327978614, -0.9100195679190681, + -1.0672796342182451, 0.5487025003986162, -0.1791076550181655, + -0.08327198475097396, -1.3750289943854572, 0.4208708674265662, + 0.6401350535533352, -0.14063353058666744, 1.3736446383002492, + 0.9976936151350384, 1.1041690429383328, 0.5683312485637652, + -1.3367051291338052, 0.2753721538148257, -1.6017596501358158, + 2.0374743389978627, 1.0455690189454758, -1.938665276478024, + 1.252770550122401, 0.2561807897177513, 0.6323524439681041, + 0.44731860905074394, -1.5602090121872974, 0.16086045997109896, + -0.8663998447283321, -0.15184679830362122, -1.8365049505188262, + -0.6194981237001738, -0.6491132407601561, -1.4279315144128575, + -1.4527159141395913, -1.2860024861530703, 1.945998082166153, + -0.4013256550665814, -0.23659055793172576, 1.6616248255857569, + 0.9472591623961788, 0.22914631673454838, 0.4811708838672695, + -2.4575219310050103, 1.3898278424498873, 0.20730337920079658, + 0.8863788687809607, -0.5916662331186044, -1.4299091422968209, + 0.025064490896124083, 1.8440846679363176, 1.0939727242689221, + 0.7256395410256029, -0.8590688058956931, 0.33189582274019075, + 0.00448664532664562, -0.6480863852455645, -0.19365121140022182, + -0.769665428394861, -0.6311931076898489, -1.3627698357475697, + 0.6622092567614445, 0.24357517704777013, 0.503103320093718, + -0.20595689226841954, -0.13618936070901688, -0.019650584704433195, + 0.7262082426269985, -0.506270084550158, -0.7099417203135552, + 0.45165053042716463, 1.1300405981040555, -0.24719613566322082, + 1.2071293877520475, 0.435400868244206, -0.6142313942856545, + -0.2808055784619822, 1.332735503169351, -1.1560021403810814, + -0.6195875521757297, 0.25810834246088477, -1.4065218105605355, + -1.3610928866213383, -1.1598317103172542, -0.3269341470162602, + 0.08570043587182144, -1.9223819765041372, -1.0843685493072819, + -1.6036518992044688, -1.0540791458678187, 0.5783162278332646, + -0.3724907451950873, 0.7280800945640448, -0.08142618606573834, + -0.8401997607017293, 0.4112577930821558, 1.5228201136451585, + 0.127297463548603, -1.2407599011227048, -0.8552188536617934, + -1.4741717842067263, 1.2671552063447231, 1.2337003308820302, + 0.2110414345000711, -0.49591180781239114, -0.7461512339849881, + 0.46865565860373054, -0.29715235983531224, -0.12386177897129297, + 0.505578016119112, -0.759425281130206, 1.1922469683938692, + 0.7741861134374209, 0.05774506261158576, 2.127957081016315, + -1.5401055327147126, -0.9942873953265658, 0.7559867086719737, + -1.1410350461719765, -0.9659194892052072, 1.6982344632787765, + -0.20931069081798342, 0.17013249407359873, 0.7270923030390775, + 0.7204891484463551, -0.39207799039317925, -0.7155255221813551, + 1.5011465291329578, 0.5459497541973576, 0.07243706212858651, + -0.4803076283069569, -1.0054943042359705, -0.5237739778480014, + -0.09835515549724476, 0.5775290716411025, 0.9348827174613787, + -1.1210113987995936, -0.7552071013929652, -1.0007141329301783, + 1.130624877307917, 0.2722502138472599, -1.7108387910528222, + -1.1062867754981813, 0.5689569196095314, 1.398762352581004, + -0.33899470403862797, -2.076656356422838, -1.0004947044013306, + -0.06246586753421959, 0.3367745011191109, 1.202712320404443, + 0.12986086111190515, 0.47863453049805044, -0.5301057190296372, + 1.1951555259879219, 1.0407276314629512, -0.6060289812671181, + -0.45188168827767916, 1.1672764414566084, -0.7601267361673396, + -0.16562850009431018, -0.43860049222365943, 0.19265871886562935, + 0.3369896727544974, 1.0727046962527615, 0.35280285161085073, + -0.7944425795053791, 0.4195206213331096, -1.2168293697790002, + -0.6443114053235841, -0.525365919337175, -0.9060734662625927, + 1.1385254001814025, -0.889916275322328, 0.5268352654420474, + -0.009977679759738923, -0.7448851196209746, -0.44666312777814293, + -0.11724072209427554, -0.9165098978210413, 0.40637929060102135, + -0.6093457976035641, -0.20545838480263884, -0.8249002512298813, + -0.8187706458007767, 0.4689683976066863, 0.465846208938873, + -0.5387718100480267, 0.29854415380834715, -1.3665663590081276, + 0.6177965287355739, -0.21396707680556573, -1.7406726509793795, + -0.9472077744730275, 1.2519402070664514, -1.500777460440331, + 1.8997820918004282, -0.9743457775230356, 0.3295729377044873, + 0.7301012356968105, -1.2391980530651758, 0.9236351835845457, + 0.6089290100942146, -0.12102325767564293, 1.3403384783597367, + -0.10824453003093894, -0.7827461172580052, 0.8781962552006474, + 0.034791693460034315, 1.4473751097143777, 1.203987441260602, + -0.6198007001117833, 1.301362501195787, 0.30216625220261106, + -0.39889697987982026, 1.4638160519035035, 1.4441827711806823, + 0.5084134433716269, -0.6532108007553509, 0.1035243161974872, + 0.3054072741705922, -0.34435155003796397, -1.0278570477914484, + -0.12173258785663424, 0.5950528675438397, -0.9207821659942775, + 0.7261815748689618, 0.7245355697839364, 0.7604354547177733, + -0.5960613431486281, -0.12501859797022763, 0.4557109402631586, + -0.4506714771692287, 0.11847291756872175, 0.39464486011730787, + 1.0377336775259156, -0.7663128158804938, 1.222002486711219, + -2.508898843182651, -0.5222022711446821, 1.5139575345025822, + -0.36009115973957706, -0.49699571473838994, -0.7320998923855627, + 0.001340784350614637, 2.287441638998896, 2.6831380407821084, + 0.9455827325947566, -0.6608925110148092, -0.5298256491030603, + 0.45598613407332417, 0.9056367098865701, 0.3468095182692027, + -0.41128275516824825, -1.9946284216093966, 1.3045604895745035, + -0.31854406317287715, 0.5219610405531087, -0.6641421031054549, + -0.8688348040549531, -1.4043267718460093, 0.30435888123608246, + 1.7846564254581045, -0.9673767387337057, -0.2252780643800041, + -0.05837566001580252, 0.4291753233203228, 0.5442117526259592, + 1.694634248553822, 1.2354760527115538, 0.7959395609646354, + -0.8911113251956342, 0.3981107862143589, -0.6038191850464151, + 1.410835808709077, -2.11493035968152, 0.06393518361722653, + -0.029139117833403446, -1.0055963360448883, -0.7926601642106428, + -0.9735425062205508, 0.4554630839524932, -1.2992896271871042, + 0.17829226436911383, 1.5977020899206693, 0.5447850111120647, + 0.17559902453769902, -1.4737831888237733, -1.0419185868083787, + -0.6982628146742288, 0.2928989175106737, -0.8214315460621029, + 1.0127275799116227, 2.540754369404317, 0.12669952550269392, + -1.1844739993372275, 0.04189705377801499, 0.19439551671935018, + 1.4521501913227826, 0.9787682718988012, -0.10502618788525488, + -1.545636873356207, 0.41955502862273386, 1.6344397845287502, + -0.6996137533248805, 0.7734222385388448, 0.7646349717820928, + 0.36213834223499025, -1.2242281615824748, 0.2849485575478564, + 0.34587641407530284, -0.7695467082668787, -1.878968801793851, + 0.6439945266787103, 0.39401855978146333, -1.846270591936921, + 0.8119840231832707, 0.4632560672239587, 0.8872512984658244, + -0.6531242638897106, 0.8234509000335084, -0.8470430861883507, + 0.7043960474728573, 0.16029656369225695, -0.9199716837319385, + 1.7516428594841185, 1.53571695111567, -0.5923963974647823, + -0.09421724289639898, 0.6951583529670979, -0.9029293377217025, + -0.5403629622028528, 0.6026873450172656, -0.8904457098799401, + -0.18153071461918635, -0.7683616776084702, -0.7723477433968918, + -1.1385745044486548, 1.2990481267032234, 0.6920712069054653, + 0.13819751107759315, -1.6994515863979083, -1.6867607272487752, + 0.11386912747556614, -1.4741086101976333, -0.4084554473716878, + 1.2611098853442282, -0.29302661250863893, -2.0886778227205594, + 1.461016480023341, 0.42560541758942194, 0.6191588554531684, + -0.5985193479741547, -0.47737501108118235, -1.34361075336494, + 0.44109611654147907, -1.1504741483205345, 0.12452161850318348, + -0.26145501283663203, 1.0737929954280732, -0.3919359249696162, + 0.7833381602627896, 0.4920754113025742, 0.7181988996772725, + -1.2868290476443027, -0.5794523266184156, 2.077603848983364, + -0.6799665641060869, 1.189260513704343, 0.20931239869905546, + -2.3009614984683644, -0.4660635928974643, -0.0830634473482318, + -0.6258324519513977, -0.37209211976632794, -1.4939045852147155, + 0.8393277068222, -0.19085594755902638, 0.6591988409228787, + 1.2272709847028767, 0.06978447405544162, -0.12326350295229303, + 0.4001647745043678, 1.8718755909371418, -0.6642196576581617, + -1.177488097714965, -0.2921906301066324, 0.35352988537757307, + 0.6046877389175205, -0.46544921540870143, 1.3311200985616656, + -0.3326058332617738, -0.33093067100049683, 0.8306989177074579, + -1.1200409825086644, 0.8296377545936948, 1.62299765872056, + -0.8169754874480261, -0.24116708825317848, -0.47162079773443777, + -1.8381312799299088, -0.4816987181224384, 1.4153255218561738, + 0.5404300549763246, 1.134165955447205, 0.36168092874820507, + -1.0277579618997654, 0.05064223484110245, 1.2814696296764614, + -1.3027980677359505, -0.7545827594608056, 2.355379772816784, + 2.04718791252273, -1.759834086257933, 0.8184067330416113, + -0.562184039487719, -1.0738447527439543, 1.0973524489753268, + 1.9618314891849296, 0.5705572269774465, 0.046663848882222324, + 0.6489189020968069, 1.0612872544961902, 0.10979465007800482, + -0.08424919865351914, -0.046667928646890046, 0.01001877915514528, + 0.5755430190021412, 0.39333359256220896, -1.3620271852148316, + 0.7432663945852148, 0.8410052507767574, 0.7560345480854492, + -0.6405935855372006, -0.7185790399995472, 0.8929178346215048, + 0.027651783756700472, 1.4242859506295802, 1.3972167882558741, + 0.49132298190860557, 1.2099518385773633, -1.1213635437310359, + 1.7266262581251506, 0.6799784552405994, -0.24016735136695966, + 1.4215773652232737, 0.3292899527453197, 0.13524241974414905, + -0.6033204455513134, 1.2434604281943695, -1.3676515621225143, + -0.29194920862061935, -0.5181588907438721, -0.8497114521365112, + 0.18939885573177215, -1.405921031876885, 0.6278696550297107, + -0.19610956093284193, 0.04397693978192499, 1.27214363752744, + 0.4762447251944673, -1.1370577022172665, 0.3990519149808553, + -0.03191869811931289, 0.11133077808104638, -1.3445513835383933, + -0.6573925555742512, -1.8568976733896805, 0.4153648416666165, + 1.1666478841476853, -0.46112981399687764, 0.9535530862878486, + 0.3473471655658854, -0.4161422881398393, -0.36198900956783775, + -0.6339438086298942, -1.3944739484632676, -0.20387130619003158, + -1.2701487841608123, 0.8796180040454592, 1.788948584745946, + -1.1631704471876354, -1.961477519039208, 0.06590179873448668, + -0.41614806490650597, -0.266000444569746, 0.1643712657991143, + 0.38488576234322136, 0.2840733616903701, -1.0787563446019552, + 1.1302339241072494, 0.7397220744929801, 0.10555634094791072, + 1.5575703663389617, 1.4916593464656478, -0.1350848011563506, + -0.5955564946507164, -0.9779825570939976, 1.4575816264107626, + -0.5635566812842832, -0.13730254477957476, 3.1760359675054914, + 1.5468541517541319, 0.6712301995907592, -0.3010794489170866, + 2.375386241376686, 0.39676442311673654, -1.2083016255148442, + -0.08960307423878197, 0.3356703315379674, -0.298976814312964, + -1.7665651290994233, -1.092767255651449, 1.3975407829596296, + 1.141874801312204, -0.9828236038024252, 3.4474956927651337, + -1.0339825534946439, -0.22625665352238514, -0.5013121080507481, + -1.8800871143889077, -0.8372845710288846, -1.10244612265024, + -0.3821121209536119, 0.08810124426666355, -0.6071774956226643, + -0.15564993281113088, 1.022293595012591, 0.9689358555384477, + -2.5957409768073245, -0.42027115973485385, -0.0461425798346585, + 1.9376580364864786, 1.3588702019634644, 0.3263146874682954, + 1.581370038498723, 0.7910848434880573, -2.460697055036825, + 0.6447035193294413, -0.24547841579497692, -0.07769395725697413, + -1.1061309579704512, 0.49835521087482404, 0.28668491714510613, + -1.2325612333443072, -0.6448462257352514, 0.6067798642374093, + -0.8354277456713564, -0.130333521585836, -0.9088480640459227, + 1.3638181337811686, 1.3142064281473396, 0.2849199073658345, + 0.592125761379138, 0.5012574226736635, 0.5318564513368325, + -1.2555614763203795, -0.2193018045216694, -0.8128170056509231, + 0.2508398220742027, -1.892210580413274, -1.2602630407674884, + 0.0009566262638368953, 0.8443361157461801, 1.0745886240915608, + 0.8806279132304711, 1.3774160713468802, -0.19850197254674795, + 1.2234601520436406, 0.5881989810255106, -0.4965304502203755, + -0.9766777894153844, -0.21817961411038742, 1.419239328081392, + -1.6703766117775312, 0.41191565756029835, 0.5099444391903665, + -1.4309207608869086, -0.015024811232282593, 1.9220050485455538, + 0.8175509219535936, 0.08115843671613096, 0.00670673012745847, + 0.4372668690607546, 0.17009166575934964, 0.9482553703319297, + -0.2773813968150354, -1.6498126033020835, 0.11117370308283465, + 2.0511476913856406, 0.4372657274738833, -0.7946302231549325, + 0.07669974844112153, 1.260664230909938, -1.5213565790072734, + -0.26684094546500337, -1.781805734225342, 1.3731126700876528, + -0.5693906145441722, -0.7467107303747241, 0.30046251963870085, + 0.5421086409579616, 0.8194948647249047, 0.553142239737994, + 2.485647389509429, 2.047571834848655, 1.0547915487532276, + -0.8404839317066655, -0.836914713668649, 1.2478277285342685, + -0.9398734941624577, 1.3858886068530871, 0.6584361564011335, + -0.32532143347778014, 0.1671936246779602, 0.6090123241409612, + -1.0924306659919145, 0.8248616990025323, 0.40239815358228387, + -1.3215398823928493, -0.3695707657351879, -0.4677903230735593, + -1.4563234165763541, 0.2465317823851017, -1.507844840921064, + -0.11213116060164738, 0.8182082579799453, 0.2257379259786798, + 0.5232663992732692, 0.3677500720568211, 0.0890331713821522, + 1.0175234856545008, -0.5316019239972422, 0.008273393570788342, + -0.5142557769956214, 1.3236020557952743, 1.1683267443828442, + -1.326046400550978, -0.877558359633544, -1.2811663730152782, + -0.007179640854720999, -0.1558221865207312, 0.5717555419933172, + 1.400174656314241, 0.5405546279191125, -0.6066094336440838, + 0.3074008062852501, -0.7266655582548127, 1.0200651816876847, + -0.9169096044014198, -0.005352229277594311, 0.9229483990313, + -0.5050805874169455, -0.7830498896948143, -1.201873278369289, + 0.6032417486934556, -1.1946344297396054, 0.2240479886640547, + -1.332033491041734, 0.3621050864222061, -0.7508280591488423, + -0.6990041625840486, -0.3589843137912688, -1.1294768284497914, + 0.08522935573665827, -0.8932238012324163, 1.4598549115209354, + -1.4447712869600169, 1.161056885783272, -1.3625301397704557, + -0.035297958124361, -0.33008069949103136, 0.5239932036193977, + -0.9535748485371196, -1.4160404491189216, -1.2653282493985, + 0.9528088241690057, 1.8950184827415795, 0.536660694982275, + 1.0358009972485072, 0.33684764607473267, -0.03807672876925321, + -1.023646734531218, 0.40397027552612724, -1.3087493812000008, + 0.48272717104738166, -0.9539524744639091, 0.6839967409804478, + 0.6443820369253852, 0.31683998325190177, -0.13585198410986143, + -0.46836797703096, -1.1069337244040973, 1.2699629292559889, + -0.7617963846193975, 1.4541756482189356, 1.4282755674874026, + -0.1861092734243662, -1.6655794153163535, -0.9018831271999473, + -1.037689638483834, 0.8498409192473517, -0.07982833124499089, + -1.2088906569879048, 1.9388046452293908, -0.6512630617583657, + 1.1866504013111483, -0.33869047227217647, -0.4062584258255965, + -0.13047088702582313, -0.2920609026154828, -1.5721710704372442, + -0.7529385991063793, -0.4409489430185798, 0.6573725024011854, + 0.9779867268215527, -1.1338038691333352, -0.03676275814229943, + -1.3700180959347181, 0.4980096428874349, -1.8841567320644628, + -0.36671037716186844, -0.33102623775307954, 0.44082885192374405, + 1.613113523011985, 0.23245328885846092, -1.936031194784913, + -0.6863173758499714, -1.403980406004003, 0.5048363560164861, + 0.2836464927146788, -0.10581740020796536, -0.6422446354858306, + 0.03847861193968079, -1.6367117659354635, 0.7105602568018861, + 1.9161683660322844, 1.1010957888549868, -0.12160407112688297, + 1.4925214870472732, 0.3264326568315127, 0.1233803144398878, + 0.046322463990348964, 0.7961360452240189, 0.2452347016349107, + -0.48943896240142126, -0.9290930154151816, 1.3257611388643007, + -1.2121987546438076, -0.4675832048242394, -1.408413616302921, + 1.681812863852406, -1.4107609501193221, 0.9608162613161545, + 1.3382523033803306, -1.142429334719264, 0.3068199062637968, + -1.373229118623735, 0.7359602107842439, -0.08027367417510534, + 0.5703393562713633, 0.8224893358060019, -1.2675332626508233, + 0.09157528929486593, -0.6239271870188987, -1.333424030987914, + 1.542228511553581, -0.8290994826950859, 1.6002179297200447, + -0.7290687216113811, 0.9827490621042851, -1.016128789591686, + 1.1178052087911723, -0.11201905921608454, 1.545158085939111, + -1.201782983516858, 0.2987368142749938, -0.013881908859372263, + -1.4662280689414051, 1.195364231090116, -1.0207840815730405, + 0.6038293322962383, 0.6920833223124919, 0.48928276635174567, + -0.20719681719458505, 1.0528037049861176, 1.340110048415235, + 1.0572972351619618, -0.7972871839181324, -1.445715944658206, + 0.249550573252273, 1.7425897413780096, -0.6146482994249365, + 0.3414417673370007, 0.5211686346384714, -0.4720635039991762, + -1.6866627876101177, -0.41908164540912235, 0.9350268770492959, + 0.2628866171785153, -1.4272699417780046, -1.5176019318982594, + -0.5045820104317634, 2.3669803699198972, 0.04468306472425897, + -0.8506586820583893, 0.5357032817625664, -0.7504240210817026, + 1.2244644861038698, 0.32030678738297486, 1.9346717432885199, + 1.8091618397708604, 0.7016264290342246, -0.7543230939085693, + 0.3718249353749545, -0.39747629739679413, 0.1755020796040547, + 1.7617259402782062, -0.6484224375517338, 0.5942375319267897, + 0.5412303781268201, 1.3148250600931315, -0.4591000552529005, + -0.5181152695539641, 1.0888867653411374, -0.4218577232399481, + -0.03314875902158776, -0.45525424561822153, 0.6620103621803525, + -0.4828556213675988, 1.0197136724339582, 0.8136601745512939, + -1.7574981376543641, 0.5152733116422641, 1.7275770946339244, + -0.6596098468939191, 0.8691431128119826, -0.5019581461983088, + 0.1369233115111857, 1.2132056318163653, -0.07648699416462335, + 1.6772557940687784, 0.926974844165011, -0.039740256852109336, + -1.6422093576684975, 1.472165824690626, -0.5312294981487146, + 0.5660281554370863, 0.9002601404675714, -0.5193311511183563, + -1.4261107490492029, 0.7193849792885922, -0.8161020873770328, + 1.3926227501034782, -0.10765873957312352, -1.750080716659231, + -1.2315289364819961, 1.5271676147265836, -1.3692385165909204, + -1.2665210758120529, 0.5835547255432384, 1.5267142534760538, + 0.4735793365879849, 0.2713271999760396, 0.8293178842537923, + -0.3678275742008581, -0.5196865213591367, 1.2467715006725173, + 0.36881071704357293, -0.013146295073653665, -0.3910850558251935, + -0.4717852822314755, 1.058925836769312, 1.2611027845782836, + -1.2125355152651964, -1.6680040155978901, 0.11644777354668061, + -0.6098586620173682, 1.4767717300094048, 0.0954623781181105, + 1.107261067809891, 0.5332249726108867, 2.027865524163214, + 0.5776330966220249, -0.1584788333976485, 0.6221202243471828, + 0.822805243465044, 1.875280493218953, 1.0643032788775597, + -0.0032231663149655688, -0.783876097094789, -1.0049561715754778, + -0.09434442862031094, 1.159075456642561, -1.7015354910808584, + 0.43626266846062023, 0.4657480592549505, -2.3595114280610967, + 0.432788235995093, 1.1432761980922856, -1.2312064629781365, + 0.47490063643075286, -0.28730531011989763, -0.26041490757239677, + -2.1502487223253324, 2.002776378754567, -0.6572916671523635, + -0.6468504633660788, 0.22368175843112467, -0.7056222632601199, + -0.10902101632296987, -0.12191577116310535, 0.2333724929750161, + 1.5718955134357182, -0.5232145959705184, 0.6697172441294476, + -0.4925971310656774, -1.1446072903750102, 0.8349991429830456, + 1.0200201403878384, -0.8977027776830132, 0.18977908394646267, + 1.4964190701230657, -2.6540996410436106, 0.32799163478787424, + -0.8074216676664461, 2.066401169980402, 2.509721984172877, + -1.2264705966483058, -0.25822269433889045, -0.4480735859571536, + 1.041820098630538, -0.693824507410013, 0.8791204277882693, + 0.7037151344594822, -1.9977526467992452, 0.2157094268939756, + -0.8146138503383921, -0.5977126284420752, 0.19219664371439094, + -0.9859202287793376, -2.3682295377243645, -1.2913932275907674, + 0.22696508074722685, 1.6407744690151982, 0.0480691978209954, + -0.9966208197342079, 1.11889000511201, 0.055360709785356864, + 2.161209836417307, -1.3704452982024895, 0.1620107139280786, + 1.6935580592037394, -1.81141037991999, 0.4953254858094202, + -0.6200845763863535, -0.4030152273570181, 1.9463103138523798, + -0.48212576394146445, 1.6089090600319198, -1.1366638959357926, + -1.6052774277617399, -0.47813886421591933, -0.8707692499175943, + -0.20229126984501603, 0.17173503092906178, 1.1047377340309825, + 0.5373785703708618, -1.5876796588068274, -1.1350981303051662, + -0.6537352511089607, -0.1835463801348843, 0.7426490550608933, + -0.0467107787449815, 1.248118109915001, 1.5524890878524804, + -2.0084680514191806, -0.8159713739539352, -2.2848088931420065, + -2.372309233730456, 2.2419857626757587, -0.3816077510920729, + 0.7108618513078415, 0.09216683237316162, -0.42433779835516944, + -0.06629069340678465, 1.2462956506064462, 0.11891915476573794, + -0.8074432428697494, 1.0942537068290124, -0.33085780821604055, + -1.1030272605184115, -0.04597990324972495, -1.461390865704153, + -0.6649026362109189, 0.17729372155344567, 0.7571894944422922, + 0.17210568890449163, 0.42634767130989204, -0.21152758583251302, + 0.8842025248865851, 0.707894179465638, 1.181293809817535, + -0.5576196967532386, -0.39767440147104705, 0.6261136824601904, + 0.09416680314491302, -0.9432999224955897, -0.4798733122332927, + 0.4698413593912798, -0.5301112335696907, -0.6225115798235682, + -0.010179517498452952, -2.4149736340373655, 1.1241415524841798, + -0.7384881145759171, 1.9364675418998223, -0.959887551414178, + 0.28676342719419945, 1.733477852496386, 0.47070117017904045, + -0.8415052898911937, 1.48342039099686, 0.1593815740133984, + -1.0466970244656812, 0.35428426550521314, -0.8714460344191897, + -1.772284863316179, 0.8553434412271401, 0.6431899649395725, + 2.063848597546665, 1.2107520352104826, 2.068182515581034, + -0.949826787922004, 1.55283475817559, 0.18702699770560685, + -0.3142644472236707, 0.18807094004824762, 0.20872088585274678, + 1.4946073381353722, -0.7270727909976298, -1.4616528319169775, + 0.8902512659612491, 0.8397967248644236, -0.8310381295604786, + -0.8630891545947001, 0.29222682765828795, 1.4445890756559074, + -1.408345197598874, 0.7729936640614463, -0.5556592512747162, + 1.0996078153848807, 1.4534847934773354, -0.8589893343576649, + 1.0662489588346322, -0.8131357663444699, 1.8906549668204278, + -0.221189396941947, -1.0066499489098275, 0.14833291807982577, + -1.6944446869650207, 1.632367328013707, 0.4020635808682617, + -1.869102265647399, 0.7511051409587467, 1.42836604641047, + -0.6689545864836354, 0.7132732615745503, -0.037356754428425336, + -1.4955905073070523, 0.6229077094186778, 0.3002815391057095, + 0.40063712375861044, 0.7079213520824291, 0.39150882760380246, + -0.665277265086938, -1.4631874840764194, 1.5154278721952714, + -0.39079861469985133, -0.5171161188288925, 0.47240320094667826, + -0.5680617901151106, -1.0849457635502189, 0.4598612881320188, + 3.1976163385397074, 1.0060936340045976, -1.4829678245607811, + 0.9298775421247323, -2.348820269680322, 1.4875415958593063, + -0.3178590722956541, 0.1356924010752182, 0.21621700648737333, + -0.23872149766619224, -0.38611367554412396, 0.7079229883060726, + -0.2936924251847691, 0.17216377194136315, -0.6251678518688363, + -0.6190596403307621, 1.0103278730986882, -0.42216692790377014, + -0.6083934186789268, 0.48484746551641333, 1.0506326108080541, + 0.18574134153247543, 1.674110486119981, 1.6908321897138245, + 1.584396674715407, -0.6716403178792367, -2.1165124622742204, + -0.7575386400758898, 0.42207025179163454, 0.34281900309511515, + -0.17330930073486658, -0.5185221739427627, -0.6520860152162103, + 0.02880708722030125, -0.7236136907093336, -0.7012590434919239, + 0.9421047560257181, -0.6079997861419684, 0.30874446046730514, + -0.5762449399777807, -0.41610271882814304, 0.15862039487955654, + -0.1452834786642244, 0.03226987415993391, 0.84229162019877, + -0.6933696474669173, 0.33663422390191694, -1.2150580083595408, + 1.0076307089633902, 2.70409271869755, 0.30995661293173044, + 0.6247436756056247, 0.08195954117181646, -1.4719055966627554, + 0.803042507106028, 1.3021608863661167, 0.43434043468018996, + 0.7974627211294567, -0.3682221393582528, -0.06403923371006702, + 0.4170350364772233, 0.9541157159307389, 0.3239859963424095, + -0.2949519680069482, 0.2619100970459515, -1.6511900176435539, + 0.24934133729286487, -0.4154891414125775, 0.7849763826831557, + -0.7841888048100197, -1.0286045457899349, 0.6553645303577179, + 0.2653791661210467, -0.028721712652565425, -0.5496375596740606, + -1.3471754095333917, -1.388799522496814, 0.29599312680859097, + 2.140988791886186, -1.7758304801107512, -0.8660143027878295, + -0.13855549523146243, 0.7423053567212846, 0.44908973109546657, + 0.5684322570795058, 0.7170502881582332, -0.972793451864786, + 1.0213495345802792, 0.3588891143774135, 1.4677584224643059, + -1.8483066026640207, -1.0267595764809776, 0.8461892348632205, + -1.1555368611628043, 0.6290502769928877, 0.6938132809945982, + -0.6257637502682993, 0.07541789139329211, -0.2366005418237537, + -0.35370856166896436, -0.807010114883981, 0.2605821179006874, + 0.2423808558861513, -0.20913684813592306, 1.445612205825981, + -0.16339120814322525, -0.28685192204171245, 1.6172348405102026, + -0.24636947592105027, 1.6507389021911445, -0.9150073073042401, + -1.4463083092451903, 1.8450467799321841, 1.6902670347280917, + -1.8878093325127658, -0.28001777607518696, 2.0152721910595703, + -0.3554080437826893, 0.3410600781005436, 0.3080846247560111, + 0.4956327203352371, 0.23813604752289289, -2.862730990973833, + 0.12978190732109626, -1.5902014047218211, 1.12682412380246, + -1.5041496090466209, -0.10651038985747713, -1.335463053243616, + 1.4022116059874739, -0.18269475995297718, -1.3404214162908434, + -0.2438165410162293, 2.336027669010424, -0.8025341000321401, + -0.07983117172640133, 0.9264513733160266, -1.4369204429877465, + 0.658716342473419, -0.7939169687464911, -0.408484607372628, + 1.081321363447789, -0.8278147672247551, 1.508807177607114, + 0.5697618899554041, -0.5433190954101608, -0.34444959772498385, + 1.4917081663181815, -1.6364404568511535, 1.088677730777631, + -0.07743011620298457, 0.12679064943416948, -0.8422775912109417, + 0.5204410421666292, 0.07816241030036447, -0.743203277087611, + -0.2490679239134021, 0.296537366216279, -0.5802577510870809, + -0.9727316982881665, -0.35347806043290736, -0.8964204184288705, + 0.3118694011837782, 0.4272160752827559, -1.119951155966275, + 0.8907214317482947, -0.6475131446929849, -0.8840313111682832, + -0.7344446459241352, 0.23897405779048442, 1.5813119435145027, + 0.571609333114801, 0.5054648516804614, -1.8867586637765072, + -0.46210018982909373, 0.9548065220526738, -0.4770321781666495, + 0.4675422030146951, -0.4463001426607724, -0.268935060413408, + -0.4021684274370984, 2.1224401502693415, -0.5308353724645087, + 0.2305268915721791, 0.1608750017124351, -0.900197705620758, + 0.3127318821569574, 2.4681068345281907, -0.8490049971049308, + 0.43895749888939467, 0.5864069300955381, 1.478184862839466, + 0.6057649340496221, 0.866511884032407, 0.3839558739092927, + 0.09528931157394888, -0.4023438236960017, -0.4953367269783747, + -0.9411870219959466, 0.1449619784129578, -1.1659336494666324, + -0.7043483767241477, 1.2177044932260268, -0.8968784595700237, + -2.0180274699762313, 0.5569746847793453, 0.38572633069031625, + -0.24109338697797905, 0.4264092604031469, -0.9226064296533822, + -0.9777483292652849, -1.8614061954392773, -0.07181480501491022, + -0.33916355744140897, -0.4913319447167086, 0.7409940265311785, + 0.8195938255125932, 1.8760662842613385, -0.08022928270577098, + -0.3617902098106558, 0.8773618510991119, -0.3026417513931259, + 1.0746072114312424, 0.8949816226916981, -0.6064010457787304, + 0.6104271933326174, -0.29251836991064384, -1.235928055595834, + 1.1821055005631875, -0.2897775819027704, 0.6479427567431872, + -1.7256511687931952, 0.2379834287461269, -0.6421838621896824, + -0.3313666238103324, 0.11015187322020059, -1.1738282480311948, + -0.6801063289945823, 1.0727263376369174, -0.12789818738063033, + 1.1781691723419236, -0.7686061607983937, -0.6393035105594692, + 0.9243691012328462, -0.7504431079196243, 0.8671446299467845, + -0.698898758742007, -1.4195690799131522, 0.21204181061562222, + 0.4516990863796165, -0.5488202376298091, 1.1769716081503954, + -0.47339514182184983, -0.6706243964684786, -0.9391275890746287, + -1.66916461604128, -0.32069248128125416, -0.9339415936059193, + 1.6891904534141162, 0.448704117525186, -0.6576455996483718, + -0.8787818682467556, 1.7783275330439052, 0.9849951430194023, + -0.948815962845082, 0.04360439333359939, 1.1754643008394154, + 0.4176607904866504, -0.032791860424978336, 1.6637836123504004, + -0.6318610716818912, 0.4631965911323548, 0.7240844437060513, + 0.42507353110252416, 2.223789705043405, -0.624587572177733, + -1.3259578694687586, 1.821890903560027, 0.18282418791198085, + 1.0718527529100068, -1.390080439023078, -0.7032982984900227, + 0.606806535748979, 0.9807379610674246, -1.301799608995058, + -1.2210833218836539, 0.8485594404128306, 0.9129734868959687, + -1.609303253469617, -1.8896306217640972, -1.2745280345294823, + -1.4589951124432525, 0.17397451011234072, -0.09849861993514802, + 0.5213927711113006, 0.4464567604000436, 1.7658010428921032, + -0.17334884721929977, -1.630863443675375, 0.10883356045207511, + 0.9209592920512764, 2.506643391838216, 0.25920697127003867, + -1.000610995686859, 1.2069309607629284, -0.8420265795888455, + -0.5219090322847073, 1.0528496388391924, 3.4052517316861657, + 0.3939521074267198, -1.2280870462459705, 0.7021465907786252, + -0.848269051241505, 1.8523087243586671, 1.8942511988856663, + -0.7324609521575315, -0.7405519451390545, 0.7825799663791051, + -1.0570473532938447, 1.0071272154577544, 0.008367224499531539, + -0.9832761022039055, 0.4619748421824861, 0.6054527978627932, + -0.8069427471635754, 0.7695845202396114, 0.7255817354960545, + -2.076356254004693, -1.866170928563386, 2.4960999423984482, + 1.7821255702296483, 0.3249685672047233, 1.0516193586445621, + 1.6029894061563263, 0.7111190742818572, -0.7186297277267051, + 0.8266707092330077, -0.8172819525228391, 0.6694591532307673, + 0.3170694850496892, -0.9984287239140569, -0.6246604296669839, + 2.2772797990691647, 0.7458811584103926, -0.26479485589503565, + 0.8890929266772621, 2.605058213283425, -0.4494919815199539, + 0.2625572138302102, -1.4742411434507334, 0.6119113473927877, + 1.3070889916855144, -0.44956874651117795, -0.5715779960963441, + -0.8602100327750805, 0.10606974809893534, 1.6568916173993327, + 0.6885256728955403, -0.2948202171449642, 1.5696072864217565, + 0.899476846965225, -1.1070943362639738, 1.8975968381884851, + -1.1062908985717914, 0.09202643450386803, 0.5179032468570114, + 0.19738682741687985, 0.7832918030824878, -0.4175503084970734, + 0.04748961117866384, -1.1431032202175238, -0.7876280793719912, + -0.1670293961990677, -1.042531579871164, 1.4250241437929307, + -0.5065603208361397, -0.05190576930487508, -0.9440633915033274, + 0.5697559112545517, -0.19152297948200578, 0.014168618743096923, + -0.7723577262137622, 1.0555673924267797, -0.3191246615023448, + 0.10177303682522976, 0.2576454260927928, 0.09993013315995518, + 2.4408592434196965, -0.1674045631751715, -2.5321239122945287, + 0.5150701229891861, 0.8728012372431501, 0.1605968107424527, + -0.13722954472953605, -0.13443581273542884, 0.24838805492190696, + 0.9494869845586946, -0.8053048546223888, -0.4416437044439307, + -0.5932230289976798, -2.0643157683856, -0.7809729727827792, + 0.28847229101563315, 1.2875393651128213, 0.030979117600469074, + -0.16633856709516748, 1.5324980852375782, -0.6468105502000671, + 0.0373559919191076, 0.769892531358705, 0.42397577027479655, + -0.139645087546484, -0.9427058228766325, -0.14560303293072532, + 0.15531221334147638, 0.7867393096524915, -0.5932212618722055, + 0.4862407608854612, -0.07780553709972224, 1.0490144034143574, + -2.161361822163266, -0.2791053970836441, 0.2634627733105601, + -1.5107411614291475, -0.5446415556288037, -1.2216533790784645, + 1.497988454976838, -1.1092367045073637, -1.618664478117834, + 0.9157906679850603, -0.2176025539922073, -1.8489698667637202, + 0.3129035109422391, -1.5506214471694328, 0.23996231659805162, + 0.43382470243213683, -1.2975465623015716, 0.3447086045230242, + -0.5029629441562755, -1.0515292011570208, 0.4342286760696506, + -0.13944564531024706, -0.3016669085440337, 0.2091053252025545, + -0.2220062149826033, 2.2529183253773697, 0.09380606672705916, + -1.3762881219090572, -1.0798033214501017, -0.030459679752091188, + 1.0462656041957057, -0.5166066202685516, 1.099907646476609, + -0.44810406970440003, -0.11226405829821795, 0.03079777593049583, + -0.5730941391354524, -1.5304535066575236, -1.6366657813941712, + -0.3672873484804794, 0.995515961126187, 0.09560804918091349, + 0.367469145902725, 0.1649134830430658, 1.9434979202863867, + 1.6446573868197591, 0.11229000519845835, 0.1176439522089831, + -0.08402038714892086, 0.7274091035559674, -0.1815847476714992, + -0.869284801742413, -0.8618126688825368, -0.9255303897325509, + 0.675291066744399, -0.45590558967109956, -1.3881643437611735, + 0.046983698579071434, -2.2593684559557246, -1.0714842437075964, + -0.7980109810319539, 0.9376060820449048, 1.5088601684612821, + 1.1401676515714214, -0.10893182605495363, -0.6793666542903476, + 1.9224975768533579, -1.919045525488347, 0.5940059593484025, + -0.07491402130843892, -1.2833894894614397, -0.012251254567757242, + 1.0424262856623745, -1.4615127877407137, 1.5618547104206084, + 1.3870856731187504, 0.6794906080144418, 0.6597456051505508, + 1.1809752738189252, 0.6289022860101765, -0.6311541134061391, + 1.2430525196600999, -0.1258884709654688, 0.03676529016321239, + -0.15638601277079034, -1.9962862794970841, -1.0631859015069938, + 0.3954333505187698, 1.305130180708799, -0.6198793866416389, + -0.3671423775673435, -0.05091349499804217, 0.19572546628132184, + 0.481387386454465, 0.18766811525805024, 0.4204577595863723, + 0.31278547680895696, 2.260226631338183, -0.44163717594473184, + 1.7281834262032811, 1.6610908786986758, -1.2346970008334854, + 1.7791989418010552, -0.6921188907852247, 0.41412723052308587, + 0.013963859727831377, 1.2495146354884694, 0.9217529559230451, + -0.6408643293198005, -0.3656165913939135, 1.6408969472159909, + 0.46769590500613, 1.2942189441837226, -2.4715771243751226, + 0.4617271801485095, -1.3054611274711465, -0.6148341510806443, + 0.5230236705061742, 0.1948581130574186, -0.8314871492327359, + -0.23483236113230144, -1.3665590045394855, -0.14329578244546745, + -1.807462368498706, 0.23801683948070443, -0.28981493648460016, + -1.4362173161200273, 1.5602518232258726, 0.08045279279873387, + 1.249783890153001, 0.026976636733625492, -0.39284231136024667, + -0.20541102682291998, 0.39581632483835966, -0.4271835840370606, + 0.8371704017648944, 0.2635251007081735, -0.7014811604960124, + 0.0874164574098187, -0.6090513936305421, 0.24235117892116984, + 0.9810895192151013, 0.8051030956141957, -0.033711366761932496, + -0.1405561945796084, 0.8932360765812469, -0.2781538960944018, + 0.19083714569711607, 1.1680467944309245, -0.876802883170169, + -2.5359882587942857, 0.15717459862331037, 0.22749278757750177, + 0.04618501623459061, -0.35514842522056567, 0.8668706188030013, + -0.9972708114342066, -1.9786433296694181, 0.5447603805656711, + -1.29987773563286, 0.24422468441969067, -0.8780654507613918, + -0.1375102757192428, 2.362709945312936, -0.5102994863283247, + -2.266949913807307, 0.47287943204761507, -0.4958325728592973, + 1.6089495844965989, -0.4037770686515219, 0.9353787074591674, + -2.113107054187719, 1.6432896343445524, 0.6023089914246612, + 0.6625981775877482, -1.1477561641710432, 1.5082843130642087, + 1.2879637708344551, 0.9632684685006433, 0.276232984051142, + 1.3144782369860601, 1.3209816351528552, 0.053796140071209864, + -0.4016237646146306, 1.0207985074811297, 1.471863012837933, + 0.8696374882353123, 1.2014866344567057, -1.8078078993421411, + 1.0601815230005722, 0.2828495091475873, -0.1316931030152692, + 1.9409424148662304, 0.4796806532708648, 0.30952752417150853, + 0.642261212971914, 1.2972810373469248, -0.5710516304874607, + 1.296428671679604, 0.1882536400549766, 0.12024192413580576, + 0.7482144125451611, -0.18022449922123449, 0.5193597474251914, + -0.00015134736402941756, 1.2060122914372473, 0.400987603269216, + 0.5805204623048469, -1.052764847449791, -1.0899041626739954, + -0.26209920904526157, -0.45158221578290686, 0.23523486252012651, + -0.45909954643471435, 1.0391700460549405, -1.1768146617436632, + 0.6791469709199983, 1.011174817648215, 0.411199894209508, + -0.7152198360224954, -1.1980320139463696, 0.4839032883340431, + -1.5745057434452947, -0.41956356832710956, 0.9839964884211916, + 0.015979923325116736, 0.2762049181371265, 0.6098483704805613, + 0.4862291698694014, -0.4624922500096108, 0.2846677372677902, + 1.367317839020472, -0.9474871099590387, -1.756106996546998, + 0.2988197956163671, 1.495739110209002, 0.9277333393877758, + -0.5643132881556219, -0.1558226529617167, -0.4888512541791814, + 0.3410030049413046, 0.8125696535679003, -0.14506424114808303, + -0.5563759421336263, -1.413259141058041, 0.4721963640474325, + -1.336800515204708, 0.15802207902328172, 0.7713401976605815, + -0.8451617487867245, 0.34178117698250476, 0.6229076512220945, + 1.6110932188650129, -0.7181795974169856, 0.009266781617777662, + -0.5588298639233481, -0.1767614344743045, -0.9226697694236917, + 0.7076376663118469, -1.5566853652081156, -0.8619329742338163, + 2.051139469309425, 1.0147636236527358, 0.4182684075319435, + 1.8816350118726597, -0.45231597591557254, -2.177291625468745, + 0.2818036067134789, 0.3528969484018996, 0.5094505048346659, + 0.9557302887303304, -0.6754668943387816, -0.02729241829228328, + -0.10185537856378798, -0.4591265210119423, 1.430262537673349, + 0.2931013470203736, -0.42349373411850877, 1.2895062553420336, + -1.254123931164029, 0.007274426609199737, -0.6746114093338123, + 0.9946171745115864, 0.2864085373632313, -1.2280764417902754, + -0.52661829084419, 1.5827795236366957, 0.15024675730990028, + -0.4248525421861309, -0.5691386244762248, -1.2497033166837888, + 0.7243884070840325, -0.8880262098400197, 0.022565602731663952, + 2.813014693165735, 0.2524261198492061, -0.5815627560037311, + 0.065952148847621, -1.5839049003439432, -0.32991814907198524, + 1.3189945049352763, -0.9633738886349973, -0.7205611597593764, + 0.29087939445256583, 0.0057889375667351094, 0.02150375939915354, + 0.5103962896847007, -0.7791629303501022, -0.1566257320081451, + -0.12533254753908293, 0.3677730246474584, 0.6808297404105077, + -0.006814522630420675, -1.6332734431577842, -0.31084462878259445, + -0.2816212687484363, 0.8306217769227588, -1.4223291833641392, + -1.1328914140136568, -1.1798315543869777, 0.25880349272739006, + -1.176722232598049, -0.9138103973636641, -1.4195908701604916, + -0.9995107551919223, -1.82773175657593, 0.008499718134879552, + -0.3447023347644645, 1.296344926519369, -0.43328033036609237, + -0.6691715014457149, 0.5815463164249131, -1.351170406870033, + 0.948354175015636, -1.7460166934842984, -0.394637468929365, + -0.7854270758121915, -1.7802874942339497, 1.2686458890561711, + 0.8564108501854661, 0.05383532865352654, 0.6253901471648027, + -2.202145401537113, -0.041531422478273954, 0.29066318209770114, + -0.5115801644049819, -0.2316865971443836, 0.04820236445222125, + 2.043254030499081, 0.5378888526826829, -0.6502743062505872, + 0.826238085727147, -0.9541804382014959, 0.6060754235439968, + -0.27474418761709474, 0.8956610419016614, -1.0996407788536786, + -0.257368300223374, -1.018696411251144, 0.6579800168488112, + -1.7964528440425043, -0.8570639935152126, 0.42330444919804316, + -1.1285000187041665, -0.25650286505666625, 0.24632151425551105, + 0.24962408033917283, -1.156431660359815, -0.2432666473105903, + 1.822498098193285, 0.3177090775637023, 1.3319015834176797, + 0.4571443687995678, -0.15115069978271048, -0.9271093020874797, + -0.4004107535270797, 0.18837621181964065, 0.2361034586065518, + -0.049667590380486994, -0.7731735216366021, 1.5079696883540965, + 0.2547235818307659, 1.710880865859913, 0.25423148693344516, + -0.12417094682887361, 0.14355110585703812, -0.30889227644936884, + -0.19518744408626176, -0.38657348236703737, 0.5747008941265317, + 0.7763218624280281, -0.7932199304382765, -0.38004377705918146, + 0.5546620950055203, 0.26238802318984583, -0.567803366150921, + 1.2155283753301906, 1.1841352702569934, -0.36154499394302375, + 0.48355518941861697, 0.028516722473608622, -0.5872424427404682, + 1.3501269652114032, -0.4684289952147731, -0.3722041294537168, + 0.2884795399986682, 0.06557171746910258, 0.04187102672842283, + -1.2970923134475996, -0.01629195036762023, -0.9112994229878664, + 2.0590829933787136, 0.39400030768000005, -0.7975908049246164, + 0.24046578837235552, 1.504682832366687, -0.8911225638653535, + -0.3936854489607823, -0.6384138322177773, 0.29369615979985814, + -1.1026872898279598, 0.4356763930115034, -1.4259861740067266, + 1.4839827513865715, 0.16538982992587942, -1.2275565773734964, + -0.6469351862385775, 0.7977508692229875, 1.965560992268791, + 0.8204484828263375, -0.09569261310086963, 1.0444105776920733, + 0.3981939687558286, -0.17001990885000728, 0.03191303725869083, + -0.22703800554331624, 1.8139801219827336, 0.918270672574204, + -1.4990654058428237, 1.2013287338621885, -0.6573210575280002, + -0.3475342578604577, 0.001024958794340004, -1.3091664900629916, + 1.7052265295882478, 0.4253120949833701, 1.0311326194819417, + -2.329708589685058, -1.5666613380497623, -0.20129982865454085, + 1.4540261677025847, -0.062796460600534, -2.3750929169938804, + -0.22853438210232366, -0.9911165491373074, -0.9849697798584544, + 1.0908056348553017, -0.5335895092359707, 0.7114854381779321, + -1.2006864703832458, -1.402537825666173, -1.6107945297750212, + -0.06522295552167409, -0.22244804258316303, -0.6353277757640107, + 1.1342357318491285, 1.1802856827413442, 0.7358095889904793, + 0.4322781449509412, 0.1993641699969819, 0.04402596162369398, + -0.618389217305553, -0.19855173166745999, -0.5969933305425132, + 1.2023959036495757, 0.10533466463098612, -1.4071046643902017, + -0.30217127261876753, -0.04403547820029734, -0.2335959164195668, + -1.1388382692559194, 0.7969342297703721, 0.0025006347911576314, + 0.4618061956689532, 0.9316220945417517, -0.586857161879394, + -0.8038099773962392, -0.561632309015, -0.7319527488671081, + -2.215500214281302, 1.2095052233589756, -0.6324676669003331, + 1.8213621585713746, -0.16201666001698542, 0.9771306394522535, + 0.08884650272073365, 0.17119383734576185, -0.052205598859868016, + 0.6308204756962924, 1.2742399221121468, -0.8729416492214658, + -0.41451142025139015, 1.0896473253676273, -0.11531924092553854, + -1.0449722114717626, -1.3905060397760676, 0.01745826015650065, + -1.1196034509026367, 0.16835781469295008, -1.1337994252104073, + 0.6707102828626799, -0.1611008305495774, 1.8891773441773552, + 0.22194994994725567, -0.8221389943598081, 0.14773366666584706, + 0.7482169422869621, 0.8634619143586166, -0.28955079825767266, + 0.7168358822007905, -2.0710700397722674, -0.5577499923860028, + 1.3594786178950642, -0.06290120845238856, -0.6203795676764393, + 0.37363430210542137, -0.6009801257039329, 1.685628214162959, + -2.036958121665058, -2.2425671656367667, -1.9918630409006053, + -1.376958147267138, -1.8638660542434666, -0.9750244314786808, + 0.9080815115907477, 0.018142080648009342, -0.9320767794783268, + 0.26546536698365886, -0.7622509288960355, -1.185039046008763, + 0.3997987346703504, -0.8390830626369119, 0.7664612539005661, + 1.1452390705220412, -0.44118709528048106, 0.26214721724628937, + -0.4951545553209257, -0.11879885987832625, 1.3282328751747563, + 0.06968815002457066, -1.1182821619345513, 0.23652079790675906, + 0.3692795793157511, -1.140728747827738, 0.5263061454716625, + -0.5207546968661813, -1.503533271861299, 1.685912359362119, + 0.034636130743337525, -0.48051165567394033, 1.0460524144567587, + -1.0839349618672527, -2.1211644723131724, -1.0311758922985133, + -1.2021446452680054, 0.06983434930473358, -1.5815367050307532, + 1.0876986546066656, 2.0186122729964926, 1.811073181558942, + 2.061655680618017, 0.8146717603062831, -1.5968498453112046, + -2.0662599115172653, -0.5461790439353942, -1.293954740300037, + -0.04669787176283761, 0.23146865620783758, -0.588038234461568, + 0.5933124208465305, -1.0163085846469417, 0.2521752390452931, + -1.2106468003843902, 1.418999037385018, 1.1108278459257963, + -1.2434580142633445, -0.5105267831106245, 1.962828854249686, + -1.3742391623665489, 0.36301946174407, 1.9887587169725671, + -0.11568422609670699, -0.642928398294438, -0.3803110761017083, + 1.4124073508805255, 0.29869224683807033, 2.0608887843113273, + -1.357435592557576, -0.04818489310611712, 0.9811928870760606, + -0.40967432838228596, -0.3030480871350583, 0.9136149401717509, + -1.0208925536710525, -0.3505675095839659, -1.71190823631273, + 0.20144681297018477, -0.7142725656031783, 0.10941276154357217, + -0.010518057969719493, 0.7986018616075307, 0.4091757607417071, + 1.3254764619646495, 0.37900863212459757, 0.2801496864889041, + -0.4903324954119249, 1.5611921907449, 0.8801581363850509, + 0.23899617476391827, 0.4941237199528515, -0.19580489922245364, + 3.06700252986585, 2.075939890459903, -1.0531656839887626, + -0.5746240339508544, -1.2509817722769654, -0.02930485583633999, + 0.4955890468754583, -0.18287439285074464, 0.4428019418512945, + -0.7067595339381431, -0.5880758813860446, 1.1741037427266254, + -2.2845558148071, -0.20091142427273523, -0.9327486743061679, + 0.05419468096069937, 0.5696294165103171, 0.9711793150927074, + 1.5638669636681488, -1.399980051448174, 1.6694377251663244, + -0.5244820252135467, -1.257281067913892, 0.2808453440838143, + 0.48904471670322064, 0.6563624003164797, -2.403734256558076, + 1.8072200656396853, 0.7479993507037666, 0.8957599457510734, + -1.1333475754839513, 0.6052811339871745, -0.4713654733277363, + -0.7018354826915972, -0.14295613102166807, -0.854329570376376, + 2.600781602195285, 0.15947531968114928, -1.9492123387745222, + 0.4025575201110334, 0.5377569832746467, 0.8230410704104014, + 0.38678827937826166, 1.1036337112977639, 0.3934547673395094, + 0.30962342705126583, 1.139829687497562, -0.6649904581148862, + -1.5139589626882188, 0.5785053189296201, -0.6976263977299514, + -0.48521233846001877, -0.9001322196203593, -1.660622472181582, + -2.2786897073448547, -0.6396523522765016, 0.42857993052128573, + -0.47159666033630393, 0.09912656547054303, -0.8978325685014887, + 0.63667062531427, -0.9285968325105913, -0.41245780364313256, + 0.191616368806377, 0.6617774942176655, 1.3566617676123918, + 0.02766324341023624, -1.0349560837804677, 0.9570579186595424, + -0.13078780011810998, -0.7995854873426, 0.7151367410023329, + -0.12167714338407565, 1.6209549425055911, 0.37634955414789306, + -0.6846815563905236, -0.13340769738466304, 1.62999490749593, + 0.24590379716684088, 2.080737900190375, 0.4807972440746681, + 1.9233090609717092, -0.7457053375145688, 1.2931674090867675, + -0.5389819127967479, 1.3378716219526687, 0.46191592051764446, + -0.12685025114948897, -0.564392245951514, 0.054901669351109676, + 0.9390772175487241, -0.2832080542168339, -0.2454859351558673, + -1.8832700802531435, -0.16505100921916624, -0.6746837003668393, + -0.1357900352713401, -0.2041348043523018, -0.37391290726473403, + -0.4402500408509159, -1.2290888874925296, -0.13562273551657536, + -1.6500691440373887, 0.46665062174560024, -0.24566106658181208, + -0.797744380603796, 0.055547484850162934, -1.7195390885648585, + -0.23801758053719915, -1.3385900681264526, 1.5281883065641328, + -0.7190676510974615, -0.123355719896304, 0.7764022341446827, + -0.30040150524704784, -0.3686167969737519, 0.0943659621832766, + -0.3974661297032506, -0.6247729926926385, -1.3907256888978008, + 0.3787327798855857, -0.1261918572820217, 0.333666129561352, + -0.2268078626149827, 0.35899627766440534, 0.4003040718066842, + 0.04939169628599765, 1.3181095248614239, -1.0040453137475622, + 1.0270565232586033, -0.10527902120387268, 1.0184000283100978, + 0.37032567852749, -1.1038727471781569, 2.06240141354978, + 0.0724635819839709, -0.6749483178493708, 1.3752140381174898, + -0.18527094825241655, -0.49771622437764096, -1.5563678592094914, + 0.30641413633727077, 0.6888572155488026, -0.7813997319688913, + -0.3334732608283706, 1.2077222840020747, -0.6696185160915793, + -1.7441216997483413, -0.1443175790084589, 1.2530385228003316, + 0.48953706269055897, -1.1454774810030333, -0.10072099150740713, + -1.4690725419140442, 0.22773646275302892, 2.1495481922715567, + -1.9763318246520143, 0.3734138241025368, 0.3678799166519874, + 0.24199407601003217, -0.8317998284783682, -0.6175366203935166, + -1.5435990936321167, 0.15257075985667826, 0.24569789929243, + 0.2973109282823203, -1.0464692699857279, 1.4335012256250086, + 0.7760340274462584, 0.030779877800647056, 0.13317012902523476, + -0.6096349652250187, 1.8769504574256326, 1.8165778911592796, + -2.029543137642918, -0.7314038673207472, 0.16788051959333397, + -1.287512490286816, -0.17978414420698238, 0.6413441803591936, + -0.03816736449793848, 0.14195508782466876, -1.3077696693750356, + -0.2788578604231624, -0.7927822730097527, 0.033625917152435035, + 0.22077326511399206, -0.5309962861055292, -0.14874114920579462, + -2.1561599667291262, 0.21857950385145597, -0.39674562813596553, + -0.6172994137123726, 0.7237763615783379, -0.6628173764404989, + -0.09955687084553429, 0.7661708667508003, 2.050182109550436, + -1.1343231763411903, -0.394150602661191, -0.4005731600700831, + -0.6133729043121271, -0.006937209118528061, 0.8746192365726885, + 0.9627065829455164, -0.004195755687396656, -1.431856899763485, + 1.1723324732423348, -0.7907307751741902, -1.2383233071901971, + 0.4450622193871014, 0.6135856643531975, 0.41087999419331056, + -0.9106010889982076, 1.537140159071271, 1.203007531467209, + 0.4522478618181492, 0.06901440689355592, 0.5616178375297155, + -0.913304278073554, -0.617052799856045, 0.8513556242527552, + 1.6492263827929101, 0.28736119321050707, 0.143060129811001, + 0.13159474089261292, -0.556050658038526, -0.6819127080659984, + 0.2854925491407574, -0.17685951799635244, -1.5861004634732518, + 0.7398075993729516, -0.13718006475583142, -1.2360195428922787, + -1.800475631340105, -0.6653270917294025, -0.24529552485016695, + -0.3070462119648475, 0.5209731324914566, 0.8294618413486863, + -0.17019749451831728, -0.23619342552685957, 0.03462283540349657, + 0.2479211831622872, 0.721589399500632, 1.1742488499645927, + -0.7209553934014017, -0.5677211833764197, -0.8920108887781215, + -0.2951205793197307, -0.194041077024394, 0.07201516715432071, + -1.7926897922269955, 0.5269357871669345, 1.0775869197853591, + 0.5356448376759921, 1.6180226180054886, 0.09591731457863975, + -0.3033610094512978, 0.35200443059829245, 0.6372500799705507, + -0.6470129923265721, 0.4563870076575751, 0.3086697829408736, + 0.15795477733282282, -0.28995254504887596, -1.3608513191181555, + -0.5174181206012595, 0.15321158202821022, -1.0735391094616389, + 0.9498709387195441, -1.1791274655949502, 0.3401662792087062, + -1.3746370296756663, -1.820015514626756, 0.5904282098582874, + -0.7640243887629617, 1.899332176169294, 1.8001612651602614, + 0.11754067768731466, 0.3451387680566698, 0.4252773778706197, + 1.2930499113213374, -0.13497558680801955, 0.8295099746093358, + -0.06483231029486143, -0.4626305949889216, 1.7974505990090723, + 0.357954244463521, -0.9446699924851863, 1.0753715521250267, + 0.6468347012501044, 0.7325172508900486, -0.8235967956477911, + -1.8197269407302108, -0.7527397495032649, -1.0471331516010438, + 0.954992325464375, -0.6487949930861694, 0.5412489072541421, + -0.9744135424772613, 1.1668079912055098, 0.5071573516626207, + -1.4971922309648993, 1.6732330041304837, 0.6658466177075605, + 0.004961040538083645, 0.9766610530990674, 1.217004629489626, + 2.15632219900788, 0.2992554016895504, -0.19074076031070328, + -0.08513462495764972, 1.4398343939227665, 0.7531587527492296, + -2.434314852616728, 0.018698508958621483, 1.530666394156561, + 1.4174088220386398, 0.39311606885126577, 0.8429893215764661, + 0.6889143877613391, 1.7048899457191737, 0.8279914080421767, + 0.3841808718708592, 0.4345613421962533, 0.9814598643661121, + 1.1001489018141712, -0.5361865265613242, 0.21775129927781378, + -0.5197236573250131, -0.9476378494963715, 0.8334286814456744, + -1.447030660023786, 1.6027755842182616, 1.522909575863655, + 1.3672741814009857, -1.6085273302015077, -0.6841212925165058, + 0.8714988428569002, -0.7180711780751314, 0.5764950939705556, + -0.09035661359187494, 1.0682344096280718, 0.27136338383972597, + -1.093914555087802, -0.37115833509731555, -1.2339441459427007, + -0.7985138795193706, -0.07775530075881103, 0.9386977073001513, + 0.3186949805078729, -1.0013479121939963, 0.2068538637260416, + 0.46704881675224336, 0.0930693446845866, 0.9087490791207049, + -1.1095909880643675, 0.13620180501268486, -1.2318793580686687, + 2.3698156234871006, -0.41043047284201517, 0.9647930068590418, + 0.7035313262086113, -0.7357611817796008, -0.33944606940905453, + 0.975792856064161, -0.7580109890249522, -0.9388831491865992, + 0.16631539872440593, -0.9686623661641447, 0.11101021374002976, + 1.2833168243970015, 2.3501189146758734, -0.7419808119512225, + 3.3177770321629443, -0.378854974046106, 1.1894959769491664, + 0.5170237486499323, 1.449757482527173, -0.11005429828053218, + -0.7094783265215441, 0.10745076413242229, 1.6224830274878241, + 0.025460594268897623, 0.6425343157670212, -0.31898415130533375, + -1.0798679506403541, 0.5735256411790288, 1.3484671879831278, + 1.1276215638225833, -0.7541391904025803, -0.00765546636667677, + -1.4513065159005456, 0.463408611045455, 0.056782072073773386, + -0.3398650955417231, -0.3278301461019186, -0.5506101111181769, + -1.838129548833068, -0.6528412434007834, -0.22203922522726993, + -0.11557789598708554, -1.9693756516575391, 0.10517217800088413, + -1.034395434153627, -0.08008953380065702, -3.0001454304286095, + -0.7355092140807842, 1.0594616327950752, -0.4189488435377704, + 0.16781086931278816, -1.9669454509751187, -0.731458954443067, + 0.01711080123922268, -1.0063738446337889, 1.1320693665450008, + 0.31382355603718387, 1.0723003552935109, -0.48887663896467776, + 0.16351892393813683, 0.6923423498891493, -1.2674896295636169, + 1.1497258936055144, -0.8608042226343801, -0.9164072583967519, + -1.487718346596927, 1.4350188139062847, -0.21184761253034057, + 1.3710129669800468, -1.2943315365568762, -0.19362259003418086, + 0.7187438609965356, -1.4536544736540666, 1.0156800590204957, + 0.5854427384212253, -0.5260200198486596, -1.1553701278196844, + -0.27349200057360523, -1.2338491844820385, 1.7074643949762172, + 1.8501418087438086, 0.5436111298236262, 0.4744077558142584, + 0.5678560114121703, -0.7181957190268707, 1.9652881178044732, + -0.6639884519602309, 0.3479450777176482, -0.7279578424760957, + -0.46058272586248855, -0.4390700834752314, 1.485071764115552, + 1.4888034597366457, -1.9695365549171249, 0.6506253211085398, + -0.2486297625885688, -0.5519419806661555, 0.1895096241785028, + -0.8790965213306376, -0.6376838625799586, -0.8514356912425605, + 0.44713349005542324, 0.8885460864971125, -0.984898049801574, + 1.9226056756793166, 1.151756816890297, -1.3439533152505785, + -1.3828305275303805, 0.9810008154794896, 0.5550625182987955, + 1.9741629526950777, 0.8414467402239644, 0.9903516449069268, + 0.30384787269295527, -0.5118420624618873, 0.21568313531934488, + -0.1906549073376802, 0.9872047773741, 0.043447057275043346, + -1.0722974377446446, 0.30840240507887645, 1.231529689961776, + 1.289961254197282, -1.415052295757837, 0.3542872190261509, + 0.5064578533223967, -0.7014386812841402, -0.21695269183024965, + -0.8504048338756758, 1.9671268250571596, 1.0909763189822588, + 1.1465910271880095, 0.9300579839066637, 0.19877285881355367, + 0.4033127688590755, -0.5693078627176211, 0.2771445813826407, + -0.5910526566968882, 2.277491279753263, 0.656638231269999, + 0.7966594580004646, 0.5030962029782104, 1.2239112871910003, + -2.135423288869684, 0.956905678821742, -0.29364649759959877, + -0.5416351205869433, 0.4524513169226536, 2.1047567102187923, + 1.2144059061100803, 0.15546139261435685, 2.0078238030698636, + 0.6830117763416009, 0.21062683777699748, 0.3680381824722795, + -1.921358153981379, 0.8720229260359057, -2.4572973110469056, + -0.6789193350439231, -3.616244826516541, 0.5200969859479287, + -0.8348270288277571, -1.5574761449522962, 0.6081958963575117, + 0.19058848286262964, 1.0023339789202066, -0.3112079672420133, + 0.44178370023062646, -0.5048076251130126, -1.3994069725233815, + -0.17955195369335797, -0.06758378480990582, 1.7922435643746273, + -0.6192862077789711, -1.6310903545738005, -1.1690021151149572, + -1.2093145024199112, -3.09516529226863, 0.43169942287551266, + 0.06218865917825329, 0.5839211556095644, -0.7134319737419914, + -0.9162521618284151, -0.3378876880640738, 1.2878146580745333, + -0.15439993951522968, 0.3077351479215355, -1.7206306176358126, + -0.17985102389955504, 1.14519788200572, -0.8522103401341584, + -0.3963647723939556, -0.7056726337225566, -0.37501801123158296, + 1.4130923511612945, 0.11630436842876272, 1.185142796653237, + 0.011204445485047487, -0.20302508970364014, 0.9178670073251192, + 1.129883095823573, 0.42668333759774785, -0.7693262395031812, + 0.5989106795317751, -2.1834227246100535, 0.5078594213457716, + 0.9932110431979975, -0.017934502044962136, 0.014618718399019298, + 0.43615689634540583, 2.2660916638054056, -1.4481002752982226, + 0.6458685948033749, 0.45170197162057635, -0.7387052243324294, + 1.3393361998974052, 0.6185085759613994, -0.36812460265029606, + 0.11464668364155528, -1.791669964880979, -0.7254503276995763, + -1.0220519870845493, 0.7459004970720945, -1.240093138147424, + 0.36284766593900053, 1.1310636505387424, 0.21609065407695296, + 0.9901982501221922, 1.4142801306207733, -0.5075874816754351, + -1.8009636793346049, 2.3589933091709563, -0.043963810041906456, + -0.9225837945409925, -0.6390092243100048, 0.10006348512241166, + -0.9257763652451753, -0.6194490923758899, -1.0763155593061657, + -2.788511038384896, 0.37967646564114543, 1.4376287260090312, + -0.22804268789046647, -0.21979058106116164, -0.18220420821816138, + -0.44937185484417963, 0.5740193687324415, 0.6373983419863073, + 0.5856219393424119, 0.34112426931531764, -0.6084945465256884, + 0.060234739722926374, 0.7847874077044223, -0.31357045824328467, + -0.4526081006714111, 1.3140655172664333, -0.6237624307170951, + 0.34610293084708627, -1.0050719223251598, -0.4541508223849615, + 0.10854220774737425, -0.602040653782272, 1.0547536665950978, + 0.7073102150037632, -0.9555005854035606, -2.0723034039377595, + 0.5893216873540514, 0.1659232479155957, -0.691145872673244, + 1.8692666106818923, -0.7005044755324946, 3.406168768770632, + 0.6178045437029894, 0.209522404413903, 1.11020426427447, + -0.935303827291181, -0.30107511733828557, 0.0005771812107460632, + 0.6289350238005109, 1.4317466616428682, -1.7337209714531534, + 0.33652676986636315, 1.2353463697524734, -0.5758839644664974, + 0.8285985659333751, 0.018064999514862144, -0.8583929015402073, + 1.640939453974592, 0.5647216927706189, 0.019320381958476556, + -1.8626818101777476, 0.35623705928968014, -1.3920535728295902, + -0.04025364308925709, -2.1219812182033895, 2.2492879960896084, + -2.2117506504974447, -0.7015293372430998, -1.3386346301502519, + 0.45434785513478976, 0.7429073598196138, -1.3842131227703087, + -0.730674268674942, 1.8189971647722083, -0.4758820769224347, + 0.4409253327910705, 0.9449444726231594, 0.551630007075062, + 0.5399541172046803, 0.3885563045101157, 1.524994279141021, + -0.7974884472315626, -0.6568938854009293, 0.27947376218479614, + -0.4955153130182802, -0.08942974231790239, 1.3102764929145028, + 1.5444242142322857, 0.476164533281359, -1.5496430190473407, + -1.8678225332641818, -0.05437993080264503, 0.3236472053381355, + -0.36746508462131555, 0.6826304187866886, 0.5736299498569932, + 0.8053111300585767, 1.7107199047271453, 0.5683041332657001, + 0.697952343937172, -0.6541864315768986, 0.364406640125318, + 0.39958220554572854, -0.28761598269501143, 0.6201596788722094, + -0.3666201942589558, -1.4101911998665215, -0.4412538914508458, + -1.6829197968369678, 0.32907480828411917, -0.24881581245959397, + -2.027089220978618, 0.7282873752125394, 0.4579330597709827, + 1.15745181629871, 0.3236159180652725, 0.15743561049159477, + -1.4532306051766954, -0.5917126528319241, 0.754060062389077, + -0.3751247341071256, -0.4967717054593357, -1.1834916327999798, + 1.2936501822037318, -2.0961349093879544, 1.0842624515579264, + 0.004210702344412748, 0.8784821536444274, 1.6211488910349103, + 0.6098625542626688, -2.162347704092384, 0.14557157851798416, + 0.1956419307017713, 0.46311517202542646, 0.2606189680155636, + -0.6442854252008431, 1.2224106966606128, 0.9032792502072324, + -0.5921632526896037, -0.4403250314077104, 0.09900173255653308, + 1.588518953960295, 1.5514984760944803, -0.1988361913928128, + 0.42122454074468846, 0.09171832221402072, -0.05232317203714638, + 0.5107161167447202, 0.6648048184574585, -0.5326903183397282, + -0.40375562127323683, -0.9755898265306233, 1.093816318098742, + 0.8299243008006667, -1.4928026705324111, -0.6150924237870229, + 0.6827457566049314, -0.1250927382677157, -0.5461042938952528, + -1.9785054425068482, 0.6621698769014782, 1.6911825874334077, + -0.4512292838434167, 0.31893183399956626, -0.06938245071569392, + -0.8685919574091027, -1.216755898801281, 0.43218338233503684, + -1.482305424213906, -0.20624326083624842, -0.0987004649563861, + 0.052580690462736515, 0.15082170348420298, 1.815968946976184, + -1.801525657427965, -0.35269438817590215, 0.3165612132575932, + -1.1274985211458544, -1.2081895706309593, 0.8947763791232438, + 0.9256072483796912, 0.1160156247366876, -0.44837495229842944, + -0.2739183590275094, 1.1153679055306462, 1.3928570054101417, + -0.905378910739902, 0.7753045815203952, -0.33105364449783375, + -1.5667536820401184, 1.1950148433456729, 0.354165616551781, + 1.7647325336720354, 0.34842243659368244, -1.1445904695784506, + -0.6488915404249679, -0.154811442924692, 1.647219601375317, + 0.12852481855920034, 0.004310308986859974, -0.876142611650797, + -1.1969960098569172, 2.505246673635534, -0.01839259972989579, + -0.42338324819041095, 1.7006327293948955, -0.23835669566472859, + -1.0830569238314645, -0.5058031215088832, 1.1137754394535067, + -0.37799051437745823, 0.4689867373861166, 0.8846331641907219, + -0.862827297911899, -0.02378812527403701, 0.7260021867969293, + 1.1597883185839557, -0.23469208225352878, 2.113734390813324, + -0.43787079759759806, 0.40094481205354565, -0.440940747042338, + -0.11638255103314456, -0.5976246285724223, 0.10949744083274207, + -1.213522552035225, -0.2801704266168622, -0.23088144999338397, + 0.8531392120125499, -0.5131891025804275, 1.2147647043866772, + 0.2396978620703071, -0.6513123608903771, 1.1189830026785335, + -0.329502482141717, -0.4408963005006592, 1.7621110917013203, + 0.37263249289836775, -0.4859330788946545, -0.6067042421983502, + -0.652281974301976, 0.9767244079433385, 0.6586845642819952, + -0.046623060723555695, -2.1849581690080555, 1.0767435169705282, + 0.12722050362405046, 0.9986033617806298, 0.3243622406515602, + 0.3488571494425995, -0.28194417652034437, -0.5174529713073618, + -1.1589669416210095, -0.6257925557519216, 0.7845203905386896, + -0.34496828558498516, -0.55392401828593, 0.21742125464736634, + 0.1940339202350278, 0.5181013615346238, 0.6838608318277294, + 0.0963437586410137, 0.16605883874954933, -0.8192859105507256, + 0.3425249914970222, 1.206963641510476, 1.2072370620006596, + -0.09132107400635489, -0.4915708710890753, 0.4788544238385019, + -0.8129680193587631, -0.3597416459932602, -0.001935251987053423, + -0.5173249508895911, -0.3901095063695634, -1.8048261251158957, + 1.0191412836502698, -0.15735909472717494, 0.3259968219452401, + 0.2983002122558138, -0.2865809153674455, 1.17563374798573, + 0.9503886873331864, -0.017150838121724413, -1.5498598643101793, + 2.568724923652603, -0.08029464734292162, 0.7019319162248578, + -0.3680243157771866, -1.526918066370356, -1.5059053494163779, + -1.509751062694838, 0.707105319149386, 0.3759576560377138, + 0.6475726058839647, 1.338795258808114, 1.8598847911090388, + -0.05763592033876413, -0.8688135009341061, 0.019960962804798733, + 1.7401095555504877, -0.6280597716378297, 0.3473435634019159, + -0.4462968771961304, 1.5433942416056965, 1.2587933112859289, + -2.78079601104039, -0.47512302722136024, -0.065984099161594, + 0.6888533485394165, 1.2305141892155638, -0.6518789292799052, + 1.6086260544405733, 0.29196792037545233, 1.527761638614743, + 1.6303894518830946, 0.15132243302789938, 0.7682912494990076, + -2.7992162064438526, 0.252765632632188, -0.18536494230320436, + 0.1286412370033291, 0.7444904216395526, 1.1101965867010084, + 0.09583878264956507, 0.20541837056183218, -0.43900022720898685, + 1.8446971502738685, 1.525269777862721, 0.34107287068465036, + 1.370225466799814, 0.8993074950529176, 0.388987193739956, + -0.41615197068085047, 1.6959480854121158, 0.6560019605281613, + -0.059249535360658356, 0.3641096108993, -0.37088956582253585, + -0.7118422460610452, -0.4547337947749852, 1.6833283452032104, + -1.6932063886335549, 0.33007518208148007, -0.9793326842802514, + -0.5685406484500056, -0.6764406676203423, 0.27223581970527805, + 2.6210019152932134, -0.09677977060333055, -0.42338854207086507, + 0.46197386760890474, 0.3011535518111016, 0.3182607957611916, + 1.1190392605031392, 0.10747571439392618, 1.3205623217552738, + -0.869982416258327, -0.3050369611353702, 0.3649867693439435, + 0.7208855533271251, 2.45889669000764, -1.6481274773858574, + -1.624333610347512, 0.5392519410260627, 1.1694640247181916, + -1.4936888563147976, 0.22169790172897152, 2.47683597304532, + 0.8476731372760178, -0.08882181771534245, 1.575370258034113, + -0.4650474770641444, -0.301534039019897, 0.7151072657003036, + -0.5139154643660516, -0.8973214534592038, 1.353278291959696, + -0.785705814458699, -1.424798288107138, 0.8521605677636602, + 1.1173074404160004, 1.1078334261149487, 0.5060403800263849, + -0.7559434902011402, -1.7506912234691885, 1.6010916611258923, + 1.1400621104262982, -0.9490178938632181, 0.08236269987589594, + 1.1360090499605335, -0.6822008865400492, 1.2299082010225988, + 0.5747472954848997, -0.9917405164498511, 0.7860707096819252, + 2.094613031828752, 0.32476024918516005, -1.542485498562725, + 0.19154241112008105, 0.30669357584478807, 0.37562510410149125, + -1.0038556934540235, 0.17700385429720378, 0.3866792602527052, + -0.048846256996197955, 1.0608228443140864, -0.3012251999336654, + 1.2156737659864476, 0.04936433736528017, 0.3300941747271548, + 0.13579425531133751, 2.0300902584395386, -0.3659348731125605, + 0.5084747076597527, -1.214555459415656, 0.23882541455141687, + -0.7048446726313435, -1.1718879290253827, 0.10611992491921178, + 1.474365496672677, -0.7345685181989616, -0.36082108102321997, + 0.9999061228905383, 0.8174526543777195, -0.012197041307958149, + -1.7718376142638643, 0.5003281667388737, -1.4235098831155986, + 1.773715315343277, 1.219914038937146, -2.213860133799711, + -0.14916713468644752, 1.7628714799535847, 0.2339849515986858, + -0.03761268839633734, 2.143907078190805, -1.0015286896665496, + -0.40010337492322895, -0.6566439248016585, 1.4505614500774051, + -0.5810568006549722, -1.6162077232566219, 0.18463910494905925, + 0.7742911410807676, 0.14496376455100546, 0.8838498428601247, + -0.34941054966462454, 2.02035055742048, -0.33887856780628234, + -0.8213769209241042, 0.5669351554200318, -0.42298733389277077, + -0.6005548745768965, 1.6430054310046425, 1.6035130190910534, + -1.0319391121636672, -0.09774507597793355, -0.6520088992578232, + 0.0477880560338064, 0.5747081768308763, 0.4828001936355227, + -0.10582221958284689, -1.4668221584548882, 0.22049638564358517, + 1.149953675035897, 0.5356482043193802, 2.209744990011742, + -0.3608091685311371, 1.4441404573947205, -2.2581574537180726, + -1.13629994945274, 0.7265837346915243, 0.3097883608445818, + -0.8577004158636681, 0.17114666895138375, -0.7043940938451111, + -0.3009786276980547, -0.8165363388123666, -0.9289682655079575, + -0.12244992044143885, 1.542896177144803, -0.8841551589218146, + -0.9208567330224402, -0.6540118144074791, -0.5171796742457738, + -0.6023620659122336, 1.0635672960360585, -1.134330817545791, + 0.7516849917169492, -1.3768346295850198, -0.2887033795344619, + 0.056463263594405004, -0.2319843130014002, -1.5167554485466308, + -0.25185231053466395, 0.9501800034747293, 1.3049896091031608, + -1.2018551498395114, -1.352386595817521, 0.8816491221888422, + -0.5136584805608818, 0.413721469429948, -0.34300581824604537, + 0.6390192112355659, 0.2576064001530712, 0.9782101083250803, + 0.6357892633788328, -2.538589768176732, 0.44695349034542475, + 1.7303935529284833, -0.9684600861287586, 0.10236207599063739, + -0.058130587212581325, -0.6593728867487116, 1.628655977372503, + -0.9761527761546062, 0.9272948375646727, 0.27513668932269936, + -1.8234460501370229, -0.9808233679288441, 0.3505076901816651, + -0.5696532524323059, -0.3208932477679777, -0.7983286790842801, + -0.2857415896451339, -1.1602067061862453, -0.6920493662799277, + -0.7209260326374053, -2.4150876953168714, -1.345197705402757, + 0.5891707013601143, 0.4315664458823607, -0.6577610674094022, + 0.0005062460095738251, 1.2591509479456338, -0.6063765414897068, + -1.7607966379468067, -0.9508899749801195, 1.4880740849985945, + 1.0865988277002356, -1.1046192339132022, 0.6131311512926562, + -0.9873330073605263, 1.3013956438407601, 0.7414214926541779, + -0.8920958466820361, 0.41616978812279903, -1.1208556692016416, + -0.8894703034997085, -0.8309067844131225, -1.8606842678184219, + -0.07194654199784922, -0.07117390174891772, 0.5659822119815847, + 1.916753711583183, -0.6963548682808837, -0.7855412487214021, + 0.8047069590125108, 0.18349468568397984, 0.13587660177551125, + -0.36150957824597807, -0.9508896526834771, -0.9483356430836982, + -0.003902815411469966, 0.6106885504696978, 0.19376914373215087, + 1.1932986357592312, -1.097567907692405, 0.25150655593518184, + 0.4292062014732737, 1.0191286705659799, -0.03253742612676552, + 0.050433113577438515, 0.10814583704412964, -1.05385401691128, + -0.09071516667529367, -0.23849827593955103, 0.23738288144814607, + 1.1169088997424437, 0.5886653092379591, -0.24354050181310793, + 1.117611053039336, -0.2161013013225925, -0.7694711307041686, + -0.2800587010869735, -0.8093412890185301, 0.1259803458217062, + -0.3736394395978573}; + +static double gemm_C_dram[64 * 64] = { + 0.029004260079962152, -0.8006824757561799, 1.1197336711178068, + -0.9896157373454266, 0.4966790956650833, -0.320720861795497, + 0.2404711868912757, 1.7983471339688688, -0.45215688264510606, + 0.896961504429265, -1.1616159798557508, -0.840560393015905, + 0.07480233754961872, 0.17992670342491432, 0.40524411436169705, + -1.6268041045901802, -0.515842081058143, 0.3550333279229013, + -0.7169358889557749, 0.2669144829157952, -0.7584809853254146, + -0.8370380914872608, 0.48072270248825516, -0.40604137567306653, + -1.0335439663756396, -2.069883524764944, 0.6487461014247821, + 0.011710122578667713, 0.7558956908425195, 0.5521614840818139, + -0.25174889683631496, -0.9515208767957234, 0.7906470835496024, + 0.16009301473206583, -0.9156242627130992, -0.8294654016291866, + 0.6405496416929598, -1.1150477048464416, -1.4778148420891877, + -0.6532442833617729, 1.0668677881031745, 0.42505345945888107, + 0.07673387953069587, 1.1717799752861355, 2.372817497973731, + 0.31201596993898206, 0.6638888271489586, -0.8305561220137307, + 0.028066442063465726, 0.5327162396709624, 0.1408772044753154, + 0.7686937307721734, 1.2407913952843508, -1.7571668440478188, + -1.4407261503018678, 0.46966304643082196, 1.067965459457961, + -0.39086059969793585, 0.18266961756344147, -0.09601667538677204, + -1.6541976778103968, 1.7762728362797546, 0.044625271683577473, + -0.05332555492084246, 1.5519660869822542, -0.5164453460006669, + 0.3735110292906932, -0.14055947835504265, -0.4662885370095864, + -1.5754096176009653, -0.5279910388184064, 0.1877355482506709, + -0.33550084881023345, -0.2335582239599356, -2.000574246170347, + -0.5830606097499693, 0.7201314957738653, 0.2767541956493462, + 0.4410172346230466, 0.1496171764974113, 0.25584855399911693, + 0.4231757850905495, 0.819138838244574, -0.21665970285704256, + 0.7993969106462642, -0.0524553739237593, -0.10297969217994243, + 0.10341500732243082, 1.3960023077483688, -0.3532908554905869, + 0.2203147660382962, -0.09582033114984764, -2.2210275614128365, + 0.606197840696221, -0.8083685791528877, -0.5880259036476851, + 1.3096925869345688, 0.14641410716326553, 1.0053476857132149, + 0.7403000763828661, -0.5588102569869894, -1.8250095277930243, + -1.0186046335834653, 0.7832698999328468, 0.3231401688432538, + -0.8047074876514235, 0.22535724026429152, -1.3470992648831748, + 0.4765280552548135, -0.04554836049444112, 1.0856094027781182, + 0.11016455864671677, -0.07169925780054585, 0.0271210087334666, + -1.880645185815656, -0.6627766870787014, -2.8871893512281774, + -0.5590779904078584, -0.2852107316710877, -0.14430057889633358, + -1.3447542589401562, 2.2915669321114898, 0.1728899952093592, + -1.421973566402149, 0.08592097416861628, 1.0123703420638568, + -0.9558110283152651, -0.9027941505852196, 0.5300767150099646, + -1.9419175079586657, -0.2760382915222782, -1.0179287043200682, + -0.1606599622524637, -0.3767181010147598, -1.1725123233730355, + 0.9572648447195339, -0.1936224437544405, 0.42763321723323666, + 0.0597133381305523, -0.9990105347232393, -0.4832753666973765, + 0.6204763319584289, 1.960673372068261, 0.8079703046097372, + -0.3452734166837273, 0.3245617375208927, -0.07491582919001254, + 0.2743378624516145, 0.5983093934031979, -0.25216135518238597, + 0.596753836231434, 2.245459616334286, -0.2948256683719357, + 0.28882168918856443, 1.0813537774504756, 1.8535627999465232, + 1.1961057282238132, 1.318252064967893, -0.3950711849667241, + -1.377281651368375, -1.408790244923528, -0.4636389874147835, + 0.4564524135315159, -1.6380091071491378, 0.9185995000712671, + 0.4692427417861781, 1.276662831833898, -0.9447062381422022, + 1.0877432601911943, -0.22886776336281126, -0.012711978863996708, + -0.030811506691294257, 0.38780634756191124, -0.47366773078962465, + 1.4814958435930687, -1.1828980688637942, -0.19863200267049605, + -1.3001223272185354, -0.4242285448896925, 0.08898755668384477, + -1.694063278944873, -1.6602985696240946, -0.6264097653393359, + 2.1301257422525035, -0.9460005244382601, -0.5374812634338685, + -0.43004926797690446, 0.29036657258875936, -0.8172987007397908, + -0.5094563820595255, -0.6841925657572985, -0.008910378204569518, + -0.7731489284211737, -0.616010025614043, 1.1972052729129066, + 1.1413513407181342, 0.1378551765169379, -1.4064193442890494, + 0.47683432031632644, -1.0476861800204984, -0.06901359480920458, + -1.2496780870132282, 1.6753024031738708, 0.041143324574971704, + -1.4522215930201885, 0.7573346464645373, -0.15931444765366126, + -0.7557308301686515, 0.196471099443403, 0.9564572866814582, + -1.4803875895078311, -0.9249142102969159, -1.0917150382335596, + 1.2585219246267312, -1.2891710566522292, 0.2768772021936127, + -0.11943879225386107, 1.4656182572667367, 0.021005580078823815, + 1.015858071109535, 1.3572500812200858, 0.5985933296458931, + 0.5118443929095804, 1.3341173368810655, 0.25975515970872654, + -1.237917055905442, -1.5278312160468452, 2.1781558314592333, + 0.4138981989747854, 0.9117147230752412, -0.0703340663019803, + -1.0158619558246755, -0.10701579101103097, 1.1466314764426422, + 1.6748325965852073, 0.5314453542027439, 0.22641290320796856, + -0.6327321154028427, -0.3761520310209821, -0.9094876923198735, + 0.5199396339404194, -0.6279140323320965, -0.5316788990880681, + -0.7754230114648885, 1.6645731868153486, -0.25248989955644296, + -0.07000691089126687, -1.4833807861581225, 0.2847398900881516, + -0.4709041665604012, 0.21337597451344031, 0.4752659270130253, + -0.6322357393536067, 0.8609686485998456, 0.6154141944357284, + -0.5912751549232785, -1.3228568966598775, -0.0850817349853954, + -0.8896445451859949, 0.30012988995739986, -2.946119896252344, + 0.036167602681861456, -0.028803490284605167, -0.11461775128822176, + -0.19075498390300027, 0.29202031786639293, -0.3294293306975217, + -1.2138544157908646, -1.0972607879764735, 0.8248759718159153, + -0.8925466032322242, -0.16541550491454302, -3.4465386476151045, + -0.9566298189710206, -1.078687196973154, -0.4891250155546176, + -0.19531569651548852, -0.5990381399213928, -0.7036039565674199, + -0.5527767107100636, 0.16920318370993273, 0.5427235579499587, + 0.5503428910211222, -0.7497767572001619, 0.011571029854715547, + 0.49984033903822517, -1.7283983057101304, 0.8594792530055284, + -0.12824597747986724, 1.130107130041837, -0.4987262662830606, + -0.13416057776817544, 0.5080625985293201, 0.2117295363547809, + -0.8118692986997613, 0.9424962371461574, 0.6300633108154001, + 1.2746895140278918, -0.003615756251429331, -0.05126805599191769, + -1.6138120917239291, 0.7882409923880206, -0.47367442818736116, + -0.43963455311049604, 0.712317456491045, 1.3326960118808617, + 0.5896451874379312, 0.9762107134249405, 0.5626831277485056, + -0.4376044921422135, 1.5861409442199574, -0.3308751028344161, + 0.45942840764057974, -1.7057231513870459, -0.9254725284067791, + -0.11018949372955511, -0.7616338202748348, -1.0857700920096018, + -0.4372008083571365, -0.40109369588497923, -0.644818536292368, + 0.25281756977441044, 2.4197071280480786, -0.22106488208438388, + -1.095650643379566, 1.894125695645947, -1.2761684375038809, + 0.02036098869546291, 0.7947496785408548, 0.3421126605593487, + 0.7949003661056283, 1.1747154329748026, -1.165207479384505, + 1.183093398265755, -0.35715333224519835, 0.09841575912600005, + 1.574023689454931, -0.23482068201661857, 1.2386946627395476, + -1.6783552822721601, 0.8611354052037511, -0.03315728672592852, + 1.0193997600753135, 0.8649479142208678, 0.4164604631092424, + -1.7829228532488806, 1.18355749410558, 1.57769088119824, + -1.686257098236667, -1.1607340307397962, 1.0433166175934159, + -0.27772980615804893, -0.6837779231673817, 0.3903294683158698, + -0.3671124601982576, -0.1276413455606181, -1.700409020471655, + 2.268428305186674, 0.2736751307318294, 0.4618308615774054, + -0.14119264307379673, 2.2199837786106715, -1.375939861531243, + -0.7221917522954365, 1.1098492022750432, -1.4505379826083395, + 0.26060143268332325, 0.9771611195144573, 0.3765145109829216, + 2.215882692348702, 0.4047556377415391, 0.17708325001281291, + -1.9644517128168955, 0.3982782935193131, -0.6262164185787708, + 0.15245667799057772, -0.6508467682648665, -0.040947126846172834, + 1.7119976409288793, 0.21779845582679846, -0.04145965880856733, + 0.13225304399295884, 0.1739378890012343, 0.08037751104228624, + -0.9411877899806691, 0.38565902729297424, 1.0958429749681566, + 0.0669055558927883, 0.4361448377834406, -0.5901261511098935, + -0.8885190831394413, -1.4871156416726072, 1.3669107918561987, + 2.3091823854788514, 0.622552717517235, 0.2783143206723023, + -2.1305113526512396, -1.4978709762185878, 0.8018120395351532, + -0.33995160613042685, 0.1777765322633653, -0.2258895695037579, + 0.19586512261588473, 0.45301580114334045, 0.18103013768124301, + -0.5147488863527064, 0.20662933937315553, -0.09581792397706412, + -0.4704069093141071, -0.13483315552265066, -0.5594310075701671, + -1.5755216037255442, -1.5674068340789091, -0.5157357110184205, + -0.10054465770334044, -0.7071565768766122, -0.4099340274741994, + 0.35968200228333286, -0.18585633976713617, 1.5416706566134035, + 1.9286900603543355, -0.5159285075025919, 0.16886996206928914, + -0.9067434891373716, -0.6039824452258518, 0.27720989342858937, + -0.8814432879855706, -0.6919477366657376, -3.300499554594386, + -0.6173928008586741, 0.8153244286523782, -0.35573315997666993, + -0.20534234860472675, 1.9722365498950571, -0.1019166129902459, + 0.08112220912426235, 0.7463452888856003, 1.1314090216181174, + 1.1725026304304351, -1.3737070495742683, 1.734619629252936, + 2.481740839103901, 0.9194703215452048, -0.34821661861545355, + 0.9728026357332336, -0.10658444194926611, 1.3646609952054927, + -0.20423441003137643, -0.06138988353092309, -0.1103302198524375, + -0.3172315867238737, -0.8436575516229253, -0.5086533079781693, + -0.1020901909331111, 0.041548802438476466, -0.9989480071569191, + -0.19084542074059116, -1.012929236908774, 0.37846266910121795, + 1.5569101781200219, 0.03186861709827397, -1.9643672831540329, + -0.9559693601351081, 1.0476398922384702, 0.4753938790634957, + -1.9155181532004628, 2.7851118312057928, -0.4660427767210397, + -0.7434686806220159, -1.8644578336246445, 0.7950519234725988, + -1.5175445270408634, -0.18967795984276006, -0.07354703638985319, + -0.0028940583295309318, 0.05057720453427609, -0.2571010737906899, + 1.841219462891703, -2.1896361652733782, 1.2511986406908666, + 0.5753085882254242, 1.1153018270644537, 0.13982610960157404, + -1.383864413771338, 0.7931811133480174, 2.1309464599529786, + -0.3672255367396895, 1.2349500491253345, -0.2851321814733262, + 0.8721818251187332, -0.2026228852474988, -0.2791938533272248, + 0.08040090821476319, 1.0892882614640076, 0.09768943644705562, + 0.4204417256351771, 1.3114392443815635, 0.04829268265664478, + 1.2850500288988436, -0.2779162535369758, -0.43169391727862744, + -1.5832048871215894, -1.6962198203895802, 1.0729777959132656, + -0.3475301277658165, 0.5554189051412136, -0.3178837805858156, + 0.5327674010524779, 0.6755622625790911, -0.1842302677407756, + 0.43041683511575013, -0.8115483237447811, 1.3968996263534743, + -0.17863606115051833, 1.585212875612633, 1.3280038403293726, + 1.6695928015875903, 0.6109821394084319, 1.1349894473760842, + 0.28476618327344827, 1.4784673864794742, -0.2823155837802257, + -0.9183380787461971, 0.18428479751772892, 0.9836044862804338, + 2.025235066042294, 0.8265404261612499, 2.088855400024876, + 1.2286394369048508, 0.6715801392320037, -1.0498151352816971, + -0.8931372957848912, 0.009361893370829872, 0.9162789715980914, + 0.006157909931788802, -0.4922874423094256, 0.18089602650564962, + -0.9841484655534926, -1.1301889231546511, 1.3001340798635899, + 0.13693015400741945, 1.0390411986454737, 0.09933412649399904, + 1.7158843111310522, 1.904568532616043, -0.48794979349112055, + -0.4338145756826169, -1.0370401983449686, 1.0390032114803736, + 1.1522094113772554, -0.4274833545676901, -0.8753567770565199, + -1.6315994757003491, -1.7385506630534566, 2.532384190967428, + -1.7056567691204445, 0.5413608251407436, -0.7741297263854691, + -0.9447738094748025, 0.6661287246658135, 1.2031380054266403, + 1.10368337423764, -1.2970356849209472, -0.6566436584727551, + -0.14816924917182495, 0.7899980629195169, 1.8273852077888946, + -0.9277938527847925, 1.9598998746936958, -0.27099375424892697, + 0.6313744587208714, 0.40220491996516095, -0.29639672770006376, + -1.8023859026222553, -0.7750540161682024, 0.1947076125945104, + 0.5471135873496065, -0.652969912710415, 0.8404848088284015, + 0.12894499297938444, 0.6032885408701868, 1.2514835286413495, + -2.3974894979687105, -0.9304443816961642, 0.5235805043032368, + 0.9237070587307208, -1.2232371757835139, 0.5076176935522306, + 0.11779678439009704, -0.34612498438387546, -0.7314860546390927, + 1.553910216869756, 0.373159475336515, -0.30618102562662347, + -1.0154187441535123, -1.3683721575144063, -1.6848734071167453, + 0.7057898542723938, 0.7127375808855136, 0.6820908867090917, + 0.14243208748778438, -0.49764571567254134, -0.34993722444753544, + 0.28263895634917763, -0.0811609390230422, -0.8001263943467075, + 1.2016381946021464, 0.6300938668214966, 2.0197124104278883, + -0.39730245577489043, 1.1082615629881487, 0.46812678384907336, + 0.666746788576162, 0.26123698644751225, -0.7024810946461257, + -0.5922965445684787, -0.48103667153342716, -2.24353922047969, + -0.9337194785548774, 1.3686185555811365, 0.3972741496203757, + 0.37354079869199974, -1.1743179438700706, -1.1748244659763896, + 0.1406513465704322, 0.7766944125577693, 0.6468554295128249, + 0.8402029124529626, -0.5495888272912638, 0.2752226876433018, + -1.0617295543596483, 0.45862157925707286, 1.1714768594080485, + 1.1805224647157246, -1.6892820684956078, -2.393405099847649, + -1.6331785264764314, -0.7303247685543807, -0.37576096935444997, + 0.4013478691603241, -1.0157957733816363, 0.14002890339339075, + -1.0252839102787974, -1.0375314340230521, 0.8172730168671789, + 1.062543562593135, 1.2810809804809749, 1.3999493985992992, + -0.1750138803985548, 1.395734920938993, 0.20896311087749608, + -1.3682057826232348, 0.004699216277132869, 0.4764319522852837, + 0.12823174581788757, -0.546109883020964, 0.2523240224674329, + 1.9724181468899409, 0.571137816454056, 0.522392971014453, + 0.06334935501567902, -1.4920451846109672, -1.0225677061413179, + 0.44255002330819526, -0.4682032342920937, 1.0350483070201422, + 0.8200797384116898, -0.3029007829607368, -0.9845615009741489, + 0.7582526902117465, 1.4833592773254187, -1.3989560209509306, + -0.02010565525754588, 1.696186541558, -0.14162189076683343, + -0.6537141574516205, -0.38621139164560747, 0.8184053985461378, + 0.6452934033126237, 0.7403406155596476, 0.5169782497985267, + -0.8189857182537518, -0.3298835390479515, 0.4237001612173338, + 0.7833162409431745, -0.0019372831953367766, 0.2733210830893454, + -0.6400595311632477, 0.6228358338196626, 0.3278665095994055, + 3.081520639298892, -1.4435639267846334, 1.7053027215702756, + -0.9588347501825313, 0.8266484324217002, 0.6242654188330886, + -0.6407113941329479, 0.2772593629992858, 0.24814190447973083, + 0.03363219264335503, 0.04496534388566153, 0.7087040051423135, + -0.9221069417630742, -1.5268364676636788, -1.2896607997985812, + -1.3661213777130599, -1.2075968696301782, -2.389243136958518, + 1.4955588874856782, 1.2032086179453023, -0.14139077396705954, + 0.2105872325884853, -0.5266170806972954, -1.9635764068165913, + -1.2961941687735021, -2.2835960332407423, 0.33843875542096646, + 2.3953920170177923, -1.1837497023332566, 0.496939041745984, + -1.6834236268645497, 0.0947364755311612, 1.3677509022976098, + 1.3010190519580898, -1.7668063834316443, 0.21564869547117013, + -0.44708261946187283, -0.002380181670482115, 0.650945443490256, + 1.4074149358152999, -0.3502584098400984, -2.275975800589525, + -0.713875724177341, 0.5589684491426312, -1.965116029720147, + 0.47575103008133773, 0.1679025472894861, 0.5439197139149357, + 0.18336508565925638, 0.3219885649627636, 1.7554902588109447, + 0.4642725270837393, -0.4390920573164246, 2.2698459891448923, + 1.9524244471530363, -0.14392435570038756, 0.8876434758028264, + -1.6577043260766187, -1.0198707516700816, -0.5961056777066923, + -0.34369290129618396, 2.3123203551692133, 0.9307680048590791, + -0.002081134721685804, -0.4816298626933, 0.5166419734688004, + 0.09544852566577597, 0.738769513030866, -0.5320413954446367, + -0.4940048696009806, -0.6416355699204741, -0.9125056647182483, + -1.1862204740038778, -0.6555000958717663, -0.833470938908399, + -1.1616778894644986, -0.5822364941000208, 1.5789499695762335, + 1.6906076958567484, -0.6682910973489802, -1.5375408783188134, + -1.7035671717673282, 0.5113501775091176, 1.3627201535356952, + 0.34281653314195654, -0.0361566378498718, 1.283526267201893, + -2.2745695742593397, 0.19000854891098337, -0.9356963719873145, + 0.7771715931847443, 1.1747876035023088, -0.6581782060160273, + 2.1514708443588093, -0.36624102952776444, -1.02996208423095, + 0.7217520972507986, -1.3423248117021074, 0.29948769841449313, + -0.9983234204192304, -1.1349975297569361, 0.2390417601230243, + 0.7072204486510455, 0.35832543994067206, 0.8041102924500155, + 0.3028670857744879, 2.7623138131362417, -0.7089157750419613, + 0.22621529706629703, 1.0159042552872546, 0.4778866048560423, + 0.13862524435273077, -0.6817769904192166, 1.2905800338344828, + -0.5617711995631723, -0.937878912770488, 0.036259068904784184, + 0.3074683196641872, 0.02334508317808002, -0.056636545167360136, + -0.6105722560497783, 0.22034125973327826, 1.3981176980080354, + 0.002830930797289729, -0.24195892578863437, 1.3598231207188574, + -0.5983975108140343, 1.509108735185707, -0.3108584778552104, + -1.2228769868033365, 0.5943397739409046, 0.31935177535483583, + -0.036439093781717204, 0.14778839039885514, -0.11651573539454131, + -1.4649049971267012, -0.2683259472901276, -0.1143739595865752, + 1.7635913804869325, -0.16130246501945172, 0.4072876137215747, + -0.31103626857775446, -0.05171663918837877, -0.7274085567918993, + -0.869998251494505, -0.7193321231806105, 1.7505951189711304, + 0.7440630635174471, 0.0016957841800653661, -0.983556012268064, + 0.5131452298233552, -0.21520406798199235, 1.2554935163458343, + -1.0675348115557104, 0.7469420795328888, -0.9963438487998225, + -0.6229174823536682, -0.6770598584016285, 1.2562729341933596, + -0.2712138170575698, -3.068642230593467, -3.0531360276822577, + -0.5584911390555901, 0.7473315149504595, -0.18706483628559678, + 0.14675010155914514, -0.006368544270069353, 1.6844988114574022, + -0.6214979241607808, -0.3355320210713104, -0.09820727272027757, + 0.8687934479912008, -1.2005133663272494, -0.33084789733891284, + 1.1571084045756281, 1.4246451046643682, 1.6962376428779853, + -0.01965764703939021, -0.7773091413938378, 0.7348575748530396, + -0.23216605868100404, -0.8192776375683218, -0.2080446140023382, + -0.44904006003328667, -0.4432456841776011, 0.06399763185741875, + 0.21563610206370648, -0.2508963268128007, -2.5393973783220463, + 0.323376954594191, 0.1384357529412035, 0.021153113599300586, + -1.6410540709354358, 0.3691910055245278, -0.17495885529094257, + 0.554361827175954, 0.20816477209501544, 1.2322688447103174, + 0.2259606292852208, 0.5140029111794593, 0.37718842026130545, + 0.33603722021339, -0.017669087842033065, 0.3990879000210093, + 2.178612539524806, -1.4021972726687062, -0.059858631189209026, + -1.0031183337604832, 1.383398163582628, -1.0611670406818532, + -0.6074540386699645, 0.25468663161832605, 0.13474280254470264, + -0.10885846887714488, -1.3619488838854161, -1.1865743468938024, + 0.8343602196452481, -0.31636758410943266, 0.0822806179687328, + 0.03610500422763477, 0.36975660962214374, -0.37447984002912227, + 0.9006398818186364, 0.4263942528559476, -0.8471405691528062, + 0.6370923472128284, -2.771271846414234, -0.2775641216533752, + -1.9698060876925318, -0.7631948292304876, -0.11501310895829121, + 1.2264502383793572, 0.44510581587390197, 0.7850830340365011, + -0.8972456251148753, 0.6916483637375145, -0.5297453646047573, + -1.901732896640853, -1.007326391309077, 0.2220310453886031, + 1.0724562599385534, 0.40011245153735736, -1.1593565442528044, + 1.5287688772353074, -1.2265309382410865, 0.17812058438692274, + -2.1424196963250663, -0.5365247347682954, -0.175882228830132, + 0.20779436050052882, -1.2395880259585617, 0.04832542895494312, + 0.07093709252503462, -0.056371503668414216, 1.3597592757778154, + 0.3828295662314724, -0.5315492554139866, 0.6360780600344075, + 0.7531154590527323, -0.7824250791522117, 1.0617544257117932, + 0.5489962301017025, 0.6286191631180904, -0.7554812899095874, + 1.3460101201505388, -0.6564959907077351, 0.16698785124367177, + 0.09451925409687266, 0.17705768947811729, 1.0138194440077566, + -0.24231907310256842, -2.546273886239003, -0.05507329609619993, + 0.3576296538398323, 0.27507225100326244, -0.7942125094255036, + 1.0744369972956842, -1.1548545340061322, -0.15997902636302005, + 0.2950954321082824, 0.8845493763065855, -0.8132679790365331, + 0.21153971778686953, 2.2177421007414084, -0.9299613122041496, + -1.6733913807379388, 1.3474760825861976, 0.9816143450439703, + -0.3855895553937516, 0.8502913770246404, -0.016034574759692683, + -1.1339934776440412, -1.7563721581739282, -0.06647491888759757, + -1.8920747028441938, 2.3760043080911335, 1.8177530262775197, + -1.8575847163422115, 0.844553214178571, 1.5954993729399956, + 2.1252863078605264, -0.9089236614521397, -2.0469171775640773, + -0.9384063102943723, -1.5482176543034978, 0.4526740914408505, + 1.4013381381239929, 0.991045705937935, -0.47656146801187094, + -0.27582104974046956, -0.5642658623540668, 0.325163151043837, + -1.544633482053262, 0.15518857788732585, 0.15382265815454396, + -0.6343026666433687, -0.8052290074500515, -0.01691923834054946, + 0.6541683607771073, 0.5338183805463347, -0.9091383582478858, + 0.3968969223456185, -0.17061628431357603, 1.747323697825887, + 0.8012341564226836, -1.255442509886699, -1.2920206203653015, + 0.0749186813352897, 0.2120295206583239, 1.182843648729612, + -1.1122449131709833, 0.6272974182744673, 0.22777924320090764, + -1.6251751647156196, 1.0411757059610847, 0.019367245918048063, + -1.5738996411263415, -0.269270207865917, -0.5708394331822761, + 1.8504054703733777, -0.22094889809967533, 1.1868455374446385, + 0.5717141696167073, 0.8579212808811838, -0.49203515643303497, + 0.42647412290047176, 1.0808047827262008, 0.010157228470302567, + -1.719815859158772, 0.38805715778854427, -0.9969905666150687, + -1.9361769141375387, 0.2474759878876688, -1.4221009001917095, + -0.5918211873235646, -0.8058159270505826, 0.5438653208536682, + 0.19307918373458596, -0.24237795984767208, 2.3297553315723163, + -0.6782771653830929, -2.264267240688485, -1.3620513569200732, + -1.9227157102467343, -0.5474383968696648, 0.24293097804441546, + 0.8929260011447531, 0.049719985269798754, 1.3121549852716419, + -0.7380138820116222, -0.011523274745424477, 0.7707761640355849, + 0.2159962953115613, 0.5540026920594798, 0.09682345285130588, + 0.398898061918644, -0.8325427357082503, -0.8742308162726118, + 0.047733473640843245, 2.054543245821081, -1.3898902807090843, + -0.12538538363326618, -0.09873796128345852, -1.4497902777439649, + -0.4782177466678878, -1.5489795500879526, -0.29518331705238504, + -0.44407598222159483, -0.9106356388426876, -1.550174445411619, + 0.9328231660401188, 0.05594760595703414, 0.07566938845558267, + 0.3298955808621695, -0.0017861668992007044, 0.586486364465265, + -0.4362101979996282, 1.009729735572833, -0.042390290391845505, + -0.2808285449424426, -1.0403468643014806, 1.131390812188699, + -0.773890404524892, -0.22102358669926575, 0.6645483621647768, + 0.7694091180284272, -0.03831164560096324, -0.3150960131582738, + -1.0259652416179839, 0.20049882895150267, 0.03693677780369976, + 1.6551618339165797, -0.22673604901843455, -2.417611359678329, + 1.1106483704352281, -0.715751960430851, 0.5164952578195183, + -0.6996317634146395, -1.897990257489308, -1.8041186305012002, + -1.4690150868698797, -1.3087988024213557, -0.17486927381146705, + -0.45353269534719165, -0.19149104316066032, -1.4266479569878736, + 1.8919903045082074, -0.9473356590670324, 0.5173785755076394, + -0.13818347423848865, -1.086849997656127, 0.36593831570404595, + 0.6194226195093413, 1.4453714190862008, -1.3271158566185721, + 0.60921787209085, -0.4832669384376709, 1.3186433317044879, + 0.9513213947793335, -0.8548751359506115, 0.1071168124112579, + 0.26717848135064914, 0.7030211740414508, -1.0709788797992723, + 0.45569586838966974, 0.2887090154342446, -0.24229609713368583, + 0.49390930613496803, 1.2738314634647165, 0.8139546371116826, + -0.8058423065764165, 0.916823751781412, -0.6678215090538104, + 1.4119852560554031, -1.3924034581122728, -0.48456149875876053, + 1.0643581297073346, 0.3566463977388516, 1.0415975486050486, + 0.028040080194454448, 1.0504197093941925, 0.44965919555783174, + 0.8435496128685037, 1.7026256067041448, 0.14373254549294262, + 0.7291427328749441, 1.2935074397997568, 1.1398931375510761, + -0.18068743577377236, -0.6047067890923773, -0.5346294021251248, + -0.10853463546664842, 2.24413601184453, 0.3297355179043857, + 0.6657531282588651, 0.964251923438201, -0.5628928015239664, + -0.0017106246437996794, -0.19257380601095586, -0.5999594838401076, + 1.3310045638118178, 0.01078134546842449, -0.9551407698862096, + 0.3885729820005979, -0.05434661623637475, 0.3767388172770911, + -0.4898330949543117, -0.713441149440031, 0.42018478215791266, + -0.8439100277112023, -0.19565425401483183, 1.2508445943709827, + -0.598991758922596, 1.8429649718578998, -0.14258798772701783, + -0.18138700905606242, 0.18618696335301746, -0.17087391761424983, + -0.8432760462260274, -0.9939917370091027, 0.4305596597055404, + 1.1091371083897912, 0.0790722776794302, 1.2495242586059518, + -1.521274693280775, -0.7616476824293791, 0.19580408817424708, + -1.3143027744001392, -2.091488061999562, 1.9663088091747154, + 0.229879430005645, 1.4409375453185944, -0.36162055274827665, + -0.27464439642870486, -0.6230996505620815, 0.5751002240784702, + -0.16100067047853925, -0.09962621112274908, -0.4351501356168505, + 1.3351792476960413, -0.5784998697471228, 1.3361458462940539, + 2.3601479775013887, -0.4647589716386651, -0.4548988716102504, + 0.7028762701773292, 0.5914980686358756, -0.6966115762392115, + -0.7696723521588696, 0.03715612980676316, 0.32221017528830087, + -0.4234227574937845, 0.34726424283234486, -0.48116562286295844, + 0.3138392530237178, -3.16017434136752e-05, -0.3914227082899591, + -0.581666722921146, 0.17111964776203006, -0.06008169278035282, + -0.041886584782142536, -0.28699248044931597, 1.462175320301007, + 0.1245846313065406, -0.1123526751684876, 2.092515176950615, + 1.2272760858332872, -0.19552592726578952, 0.49191271925867636, + 0.6144137708252538, -0.6106235763708134, 1.4976844345055038, + 1.1892142848985179, -1.1357119642005757, -0.28436481789594376, + -0.4421830922813949, -0.6328684584245098, -1.7040349067620155, + 1.0820432527761576, -0.9968510182567392, -0.7985198199890275, + -0.2588215482253829, 0.20174302514172218, 0.7287507331021361, + 1.1722852714149967, 0.4322448567665407, -0.771155579801035, + -2.612258680121964, -0.7051447495309736, -0.08301192443248484, + -1.4472391477276658, -0.3526737726608245, 1.1294354483566833, + -1.0899837588692494, -1.1395916553408674, 0.7779937885751342, + 0.5183410812373956, 0.8509697670045957, 0.6208144564226835, + -0.778892715214496, -1.0501461846073583, 0.8552859071722188, + 0.8608448046488019, 0.5497428154557589, 0.04882443454369946, + 1.6651080232070385, -0.32090016182105363, -0.3728486660772143, + 0.8430133361143574, -0.5655459744432224, 0.7215544062511454, + -1.9484490239876828, 0.6423145640402413, 0.014400283567776857, + -0.7898745532400717, -1.586323922234601, -0.8458020923790143, + -3.088311088273429, -0.7711672240651922, 0.9871615977182401, + -0.9045757185197361, 1.1588809667487696, -1.3285096437778892, + 0.5493583705018974, -0.17757552950573202, -1.6167076444272095, + -0.6257691840041929, 0.3674989256823125, 1.5365222795738054, + 0.3527319212488765, 1.0485204480487655, -1.660459836294662, + -0.5794960248043395, -1.2465657293652699, 0.39414956926958317, + -0.22431122185124802, -0.7424297725903407, -2.0183158330852966, + 1.0943683904642862, 1.9180228164677529, 0.33125926943311296, + -1.4098590113169003, -0.3049008568768526, 1.2884791320277762, + -0.8304495335533479, 0.5648082533641575, -0.6324582858362591, + 0.15519145016196245, -0.14331072524661, 0.5955341112172925, + 0.2683604694117294, -0.46158779655753196, 0.07612773147707591, + 0.4518924976580781, 0.4439502747372077, 0.8523538103367174, + 0.6526631303289786, -0.14639057359720992, 0.11541815018151078, + -0.14641912207628505, -0.28858965267185804, -1.1094993394266683, + -0.13666302182060672, 1.1197245750262241, 0.5969030971713879, + 0.7652826186532012, 0.5565420987155717, -0.39973686526861824, + 0.7840343460033151, -1.1888373414791333, -0.38373069667860454, + -0.2549327865564444, -0.831606465136574, -0.8020163962470959, + -0.867149529466562, 0.3741626587437947, 0.009823237085445392, + -1.7368701460461045, 0.9578205180189425, -0.30283019943674705, + 1.1710486547250496, 1.3504432585716344, 2.135913369966061, + -0.37144981581277836, 0.6683173129623053, 0.20836373808769923, + 0.45158986081203556, -1.1459347939795756, -0.819138263097992, + -0.44181173736632695, -2.228038352852804, 1.3450784569893894, + -1.1523580752749787, -0.20464272457508284, -2.6483454695188007, + 1.213210112709636, -1.4004764346361736, 0.09732611023114367, + -0.44728592455565547, 0.10547550295522748, -0.42093313113048986, + -0.5056183426815237, -0.35915275364763544, -1.0946537876925737, + 0.31096146492651894, -1.8148942677707616, -0.3091292910916751, + -0.07769189114014907, 0.8210353689958184, 0.9977559638388211, + -0.9741254410868778, -0.532900582192196, 1.2326485600619295, + -0.556852354708009, 0.5224831305011773, 0.2473387410334785, + 1.1142299086991494, -1.1993099089239656, -2.3844231540204452, + -0.031312298998023125, -0.2578374897963484, 1.3655566629409817, + -1.978772520685182, 0.05702667001523861, -2.7661971160023278, + 1.4379234027888605, -0.7192462186848305, -0.8359204541555126, + -1.97072449798586, 1.2834263121409806, 0.5648994039770748, + -0.10923252179999401, 0.5481965021182704, 0.192406781879664, + 0.48581076499243303, -2.605560426009065, 1.03504983076068, + 1.4042025146049608, -0.6532422029882547, 0.21720993132656635, + 0.44583467031113655, -1.4473969873605004, 0.7442621658759352, + 0.0035577574611439537, -1.5352838320153788, 0.36582337868920506, + -0.43827718248031894, -0.331658585134989, 0.03475743065587794, + 1.695364872590356, 1.558451620009631, -0.20689475301966134, + -0.45129848619848684, -1.523170827436555, -1.694309335523152, + -1.198176658548595, -0.19969177462827617, -0.05282460007952421, + -1.1791283297361472, -1.0067735453064437, 0.17055987486894333, + 1.548598735029748, 0.7208980223949303, 0.4530935835189574, + 0.8089115623004025, 0.3351300125270723, 0.3800443655445466, + 0.3736345544751257, 0.08967024919905225, 0.9223811114430721, + -0.9791572872575997, 0.7490556870861242, 0.04211285779316042, + -0.48675401364389137, 0.7892987384887062, 0.6514935495821761, + -0.7389337564143339, 0.8226734205961588, 0.7249237684279655, + 0.9660211264551801, -0.4532783587481408, -0.8511090310517235, + -1.2152362800727083, -2.2688038747495143, 1.0639266151110012, + -0.11852527671845324, -0.04079710558992621, -1.959172190759805, + 0.634813706645387, -0.024392389160913488, -0.8994503599741844, + 0.02058425261846817, -0.5502771537286061, -0.7627382878672573, + 2.812113990163829, -0.35697622542008045, 0.8954830632884034, + -1.2850622093830648, 0.9048756978263991, 1.295681539205646, + -1.8039444541082827, 0.6289956120674256, -1.2464825605819987, + -2.434105594966877, -0.7368776196463713, 0.07517741459098572, + -0.7212226336631826, 0.6482644881693863, 0.7243697163628927, + -1.015612682453925, -0.20576178987164687, -0.03565973922119395, + 0.46655943398917193, -0.49256995004987253, -0.6208601544556013, + -1.9147957069743964, 0.9111798522207986, -1.050789491681603, + -0.17826554882391007, 0.0034287654351666343, 0.23891042130951867, + -0.2896526657972369, -0.9678605370350775, -0.15606979834697407, + -0.539588519878248, -0.9744762714085187, -0.1158787137991666, + 0.463186013778498, -0.31756023012613327, 0.32352357908448803, + -0.585725835882206, -1.7678336366681864, 1.5889268041950584, + -0.20630705622264997, 1.232645492185463, -1.536865929859409, + -0.9261652386696412, -2.0561143314389776, 0.4779964081018399, + -0.8596011929021515, 1.0843957545428986, -0.9897567668916143, + -2.3232928720337003, -0.03340641205022988, 0.7598708513617404, + 0.6584247271159631, -2.3279582198317708, 0.24768310253870407, + 0.8762008827221577, -0.6729640746468504, 1.2959884053547635, + 0.9381350368383641, -1.1241425977603545, 0.4829581184819777, + 0.44171108339691467, -0.1872572531285367, -1.2571533983758636, + 0.2048074965235173, 1.6143344982484689, -1.3124698136215769, + 0.3635463079780809, 1.3596873368910098, 1.081430863928576, + -1.7061600182770245, 0.2118428338657974, -1.0006407692588688, + -0.3401431816847726, -0.7813320328275092, -1.0011400049098196, + -0.04519821459969004, 1.2603284232288081, -1.0630920047189185, + -0.44789118146525986, 0.5582310695632384, -0.7090682864355446, + -0.5133533644647693, -0.13049594943266846, 0.7311900472570971, + 1.493841327862994, -0.25011186120154755, -0.7748595776465173, + -0.5052909848740618, -0.5033837938274406, 1.0631419148120849, + 2.2478394914416504, 0.7500249601704074, 1.5817576559551234, + 0.8472836111216092, -0.470416237895585, -0.19965720263223283, + 1.0216451463957437, -2.1860339921625407, -0.9948198936152898, + -0.4396019229076382, 0.8734144476777804, -0.2965813670330133, + 2.2470581118653734, -0.3395559758401316, -1.791968271962612, + -1.9257914274985277, 0.3714309214848273, 0.703855673271628, + -0.555710126333215, 1.0220050901401225, 0.20363711487789027, + 0.8516796154742334, 1.5757937650329772, -0.09665836315586222, + -0.776148895209055, -0.8004256779107253, -1.2413561284257886, + -0.12925323644050332, -1.2379066703304404, 0.06651546025851007, + 0.01391190021081403, -0.17367092702089812, -0.3287548140792935, + -0.8711037772397026, -0.13391409347721686, 1.046744495577508, + 0.8549541076563608, -1.14897045533444, -1.9386803001956516, + -0.38823478112772664, -0.913589660602426, 0.2729518941831664, + 0.15071694940790553, -0.10547684574045808, -1.2248164227256482, + -1.351082215307864, -1.331163419569997, -1.3025284037326679, + 1.591100615537101, 1.6839972656851228, -1.5013406493986328, + -0.014560098841445244, 0.8758316571675913, -0.8616058158966454, + 0.5237127012367585, -1.196778610697725, -0.35407288196013637, + 0.6942107386263077, -1.8315746797885266, 1.4846155028429848, + 0.43076769047114793, 0.384367439106405, -0.23394885184834452, + 1.2198064491495224, -0.5383323547980174, 0.8160510810336509, + -0.4573571329857449, -1.7335152974789638, -0.4636249816670279, + -0.15318904243505294, -0.42412709535096155, -1.2846318534528511, + 1.325417287661619, -0.24420837398318634, 1.7225099174527827, + -1.3858598478981758, -0.350222801326749, 0.22885965098157468, + 1.4051554822746368, 0.3335772936910085, -0.6286767607540873, + -0.07004282442105106, 0.04489437050367313, -0.4059451088431407, + -0.8094857079707901, 1.7505330159261117, -0.583610420693528, + -0.7366008689555579, 0.3984745730971409, -0.06377005585758136, + -0.8206644772162646, -0.6843563782443158, 0.413445320652666, + -0.4554691818585017, -0.6229184879111299, -0.2413741831461815, + 0.5506155379147128, -1.3103237870729614, 0.551465002061796, + -0.5526669452272004, -1.432939322764634, 1.783677814895783, + -0.2619175408084894, -1.7366570861134099, -0.35564945315684077, + 0.10137133388748105, 0.7235998519780015, 0.09403042929115289, + 0.15425730783069394, -1.8572780611255473, 0.5058501044761556, + -0.7574907452490733, 0.17607281289803361, -0.8396945461067945, + -0.7292802178089858, -0.7002824669050794, 0.5503576214615272, + -1.5890603582592648, 1.793036043038875, 2.7878235846616866, + 0.38956928497568377, 0.26174869373444265, 1.711065590611669, + -0.21780984024318578, -0.7476219519355383, 0.18354455463527203, + 0.9102969356546101, -0.9733253628488144, -2.344766204767146, + 0.07301118913271507, -0.4917986474536467, 0.7416391329516281, + -1.2880000713234445, -0.46197477360345757, 0.30212819705891386, + -1.5167184180382485, 0.8501535296247528, 0.5175168374586809, + 0.1763279409946514, 0.5808980947903934, 1.8472712753780864, + 0.5887473330756161, 2.1954184977584354, -0.03769822240764868, + -0.15613316317636414, 0.5004769377495568, -0.7455652599230427, + 0.7677830295108011, -0.1441337502428087, -0.7523387828605589, + -0.36755553576567623, 0.34105345138077786, -1.1914248220126447, + 1.2303531748948233, 1.3432678076153106, -0.4313094961431832, + -0.716554553207416, -0.36217498101423934, -1.5133659288612389, + 1.4950695017357467, -0.5715269477785132, 1.1593421463571147, + 0.43789720927678055, 0.09116342195238117, -0.3049393765588991, + -0.837272212664342, -0.5766435716140458, -0.7356401726215391, + -0.9485280265926767, -0.1250772778287353, -0.24361064177838979, + 0.8522508371598432, -0.0037377039062253593, -2.5439058613954306, + -0.0569000266151025, 0.4320024316685166, 2.194478575759713, + 1.4396842305532822, 0.36543499574809074, -0.3770338147135057, + -0.8552418236779827, -2.641615137447347, -0.01832206949724758, + -1.220279075748726, -0.4532959432254292, 0.2687666926125023, + -0.8588555314205266, 0.2995859931505431, -0.5333350265572113, + 1.2847615357173254, -0.6750734120371739, 0.8097130403145714, + -1.6270630113161542, -0.9700686987748345, -0.626750470435254, + -0.873880059260819, -2.302124621855377, -0.2119446632235012, + -0.45104357068515205, 1.474647321380819, -2.452150203161443, + -0.26422200819131053, 0.3355570393620066, 0.4521192920529254, + 0.6898023906005871, -1.0228088805014108, -1.5620067151329697, + 0.2114421450103242, 0.16571047265242836, -0.9976369476833716, + 0.2707035595461758, 1.527376877291636, -1.1501231170867043, + -0.8215138548193065, 1.1255100205347468, -1.4908295737477542, + -0.9614784827261649, 1.253875753998538, 0.6502131896760401, + 0.5459866901410766, 1.4600197648017388, -0.0961460203532497, + 0.7266795346872365, 0.24327467641293096, 0.6629927940460294, + 0.1425139446241705, 0.6769287783907216, -1.3236927946900179, + 1.7325000099103491, -0.44398667144970083, -0.06250247294850679, + 0.7996605229107876, -0.8781887569136042, -0.04685771081608833, + -2.1381243641968757, -1.1057101272330927, -0.2334652569852083, + 0.9622037237887306, 0.6635341672421278, 0.12296392422848872, + 0.16098800191091994, -1.9738778562669794, 0.878801521788013, + 1.1264406225655363, 0.9266111456784218, -0.5837955300185679, + -1.1381689631937657, -0.7637975260788618, 0.6253414266910773, + 0.2560476374285288, 0.6225515550412877, -1.4003990017303332, + 0.33627768607969516, -1.9427666341170824, -0.6932243069544903, + -1.6260875697896702, -0.7277319111014768, 1.4038229847386294, + 0.2920548422295979, -0.4789539104472966, -1.5162957655731588, + 0.7303018926046246, -0.08451244525442732, 0.784113042439586, + -1.5334585479514933, 0.5670458287729787, 0.42975930410924124, + 2.449800593141972, -0.747332434740572, -1.2322385206168842, + -0.7568040112448173, -1.4135743704317814, 0.02577746009056378, + -2.0837637677880294, 0.49143275227877103, -0.09302281017834362, + 0.7031745485857588, 1.9067771128764397, 0.017922750249444862, + -1.0118512011569816, 1.098381595132738, 0.7341755899609803, + 1.2311978717249155, -1.0213846091416032, -0.30656617450535995, + 0.2039715668363261, 0.9137009208505903, -0.1853547296025253, + -0.4531226067380201, 0.4791486178122148, 0.4244894303034229, + -0.21125213591144995, -0.9006724834631074, 0.687500015940671, + 1.5478498713739013, 0.5971262704659354, -0.28221603850355226, + 0.1853982344045198, -0.4972609839585217, 0.09701023695712938, + 0.5695911267833031, -0.3164094642230819, -0.14706947612684826, + -1.3149133497939054, 0.6864680014836566, -0.772852350625843, + -0.5806236044379457, -0.3330938726043226, -0.2730406772068024, + 0.5762813326703923, -1.4304622484096188, -0.8424942170683648, + -1.3966094397492712, -0.895345937295373, -2.1450526226610602, + 0.8982603474010731, 0.2447347737164159, -0.14421939866277614, + -0.32759685565611457, 0.296699608032958, 0.4488491381463045, + -0.9366906772433812, 0.8575927698912629, -0.21528850062417895, + -1.1881007189482282, 1.126951428099562, -0.9182517838371076, + 0.03845610449911805, 0.21538710321609011, 0.4345124212863915, + 0.22806905558766796, -0.0433565930969285, 0.7593857162181715, + -0.31477607928734513, 0.45451779677564275, 1.1460305154279424, + 0.17511551763090402, -1.8856875430269369, 0.8346203714049741, + -0.0696682533840345, -1.477209694338219, 1.167580661482926, + -0.17554887202590774, -0.8474837486432465, 0.34080524465178785, + -1.067656844368498, -1.2235746072702904, -0.1496059091339221, + -0.6271075452205968, 0.17720185109195266, 0.4353918232872083, + 0.5660926079329978, 2.8554574415424483, -0.6620166583187813, + -1.7269876019682948, -0.4078387228577495, -1.7228178107762542, + 0.3726054112499986, -1.1217641084697834, -0.4549722253573668, + -1.1732831794353027, 0.6575544136481785, -0.9201334492342766, + 1.6328222950437552, 1.6244241347609476, 1.5613555902002136, + 1.4668846483103386, -0.3487215605525855, 0.12066051762324873, + -1.3338304508691319, -2.838826297994906, -0.6706495059056897, + -0.2112553589247857, 0.4093088155814143, 0.0586543436679839, + -1.9337244019029907, 0.07171251023300006, -0.453400009742923, + 1.1415999381407176, -1.1548675809496596, -2.382993633047374, + 1.665455784920222, 0.36977079711240063, -0.535727132830006, + -1.4579294636750366, -1.6520070983625739, 0.08837369320935094, + 1.1015994425060465, -1.2436747485612611, -0.16173195775871396, + 0.7874586254788326, 0.8455365274680086, -0.47385229544186175, + 0.8581794726994194, 1.9141693890868874, 1.2111468774347625, + -1.283834409703804, 1.4122001960991903, 1.4246122083213058, + 0.09617143246488447, -0.680416520345397, 0.7939074419436761, + 0.05082061802593895, -0.3375681951224267, 0.2728075634559421, + 1.8677062690963786, -1.2849446512608989, -0.3646522458534046, + 0.917024620691813, 0.836213051287984, 0.4199460834454394, + -1.2038519270531134, 0.12232264627089835, -2.2232529926712767, + 0.32822411605932045, 0.2221878465543045, -0.40914638546335264, + -0.5038836046014628, 1.8256305544491191, -0.7565556539701808, + -2.7739792692396126, 0.28066845231027215, 1.3738789070045716, + 1.7661381760831198, -0.9580232806819591, -0.1780922624537117, + -1.0984645221049045, 0.12603798766445923, -0.1849675475219486, + -1.4475049162679143, 0.9388707018063479, -0.5362768656635394, + 0.9452817076530887, -0.37341197131483667, -0.2629170752516286, + 1.325991973487167, 0.9619471376599076, 2.1975015359014103, + -1.9973341541819725, 0.8588312686492864, 0.13666135012685632, + 0.3102389236196128, 0.6936509306420062, 0.05434653570011313, + 0.3886040413097377, -1.3881648803578328, -0.24232672717865358, + -2.3006844443180974, -1.518751357394444, -0.3706901669875656, + 0.7539809084190491, 0.4912794553641408, 1.285898467547851, + -1.2234469904502512, -0.08958864363508236, 0.583078020131131, + -0.23178079681176902, 0.4769446061135408, -0.4016965792806681, + 2.1618387681417497, -0.3808916318031749, 0.7019003947692466, + 0.6921832736273762, 0.2010723299967834, 0.23634082843208823, + 0.6056544806575411, -0.11651743275509928, 0.5766313042860137, + -0.5190655005970012, -0.4579416002427724, -0.424209530527786, + 2.232559210366838, -1.8171412233712165, -0.6495312007257151, + 0.01454464350825512, -0.012160378768442833, 0.45900058613553946, + 1.622427208224704, -0.8381648037082366, -0.06922690164521429, + -1.1571533446018838, 1.2962530073258305, -0.4164012434169487, + -0.14957792428793357, -0.0966188865041463, -0.17162818417291137, + 1.5823601195567514, 1.0185460546773435, -0.27435903244422055, + 1.0624307534321238, 1.6824917464322542, 0.3499999101405133, + -1.7539284490002658, 0.3415515608898923, -0.9304971196835875, + 0.04252683790482448, -1.5965834974215565, 1.3596129553980816, + 0.5975052601318105, 0.7282491018628274, -0.8685422050617817, + 0.8955457613350786, -0.43664776638074715, -0.8206970291571989, + -1.2898007224720796, -0.3186171612571654, -0.3330818341118064, + 0.6655752973348447, 1.6764347205970604, 0.6078743574830635, + -1.2342507922222805, 1.9210718505914963, 0.26510984025007406, + 0.2685882654026507, 0.7102430456245953, -1.0462145584529572, + 0.3857191152427833, -1.8835805633826779, -2.768761193953574, + -0.4915726819365157, -1.5089924717034593, 0.013278831567490521, + 1.5474176875871273, 1.7045030442907954, -0.7048211460588357, + 1.0382872389284454, -0.4236141117291399, -1.1507654519546344, + -1.6074537360491772, -0.7267874141115397, 0.11876040295645178, + -0.6408806028454356, -0.12049820175789154, 1.1256684566373316, + -1.1503658259476168, 0.3808406082354331, 0.16166298056768014, + -0.9796873977838907, 1.0438547113586458, 0.2695904409689415, + 0.7097366282641338, 0.36812978605144314, 1.1038117080137047, + -0.5807051449206111, 1.027731721586947, 0.9661580338116212, + 0.2598371929157506, -1.2798102496315147, 0.8352067419464927, + -0.1452621149892954, 1.8549267889124994, 0.5665323669164135, + 1.5421593189692089, -1.4677264718771512, 0.9585639718948312, + -1.6479655417171202, 0.22271257385409565, -1.161398773427602, + -0.861813501728504, -0.33065924746715947, -1.2370435572165541, + 0.13012798200740622, -0.17426050640126142, -0.38744989631009263, + 1.4307827967619229, 0.03543562533000589, -0.9972687727886126, + -0.5170550450401604, -0.7750247609617125, -1.5190613124777796, + -0.45895251295378553, -1.8056739512190008, 0.568360571435928, + -0.2004869809428556, -0.14483685708825503, 0.5258043449164731, + -0.16813587996429707, 0.10846389250099084, -0.05315797521827668, + -0.21651365686613308, 0.06006145597959008, -1.4024064633139812, + 0.689880904910238, -1.3428757039530983, 0.4589303661569864, + -1.4188669947772765, 0.29352168212647334, 0.7308608932842507, + -0.1353758679174761, 0.17358923934048226, -0.40216684119518126, + 0.43993814071860016, -1.2871086596268482, -1.2622185432193231, + 0.5955345200199184, -0.8657767655249429, -2.0777147735575694, + -1.0097475327974674, -0.29221483234147594, 0.2292766310482291, + -1.1056969652514455, 1.4876657299426514, -0.036104835108870456, + -0.6423673306131062, 1.17645837315232, -0.27627899423171265, + -2.1294237281854707, 1.0389397167884664, -0.6156099069368945, + 0.5660062401217804, -0.34735225445425977, -0.32061267845758085, + -0.898048854923999, 2.3890802889591454, -0.1207700865946951, + 0.9658162458846846, 2.1295380289836494, 0.22730977326083576, + 0.307795221689862, -3.159470294922449, 0.8956823805247126, + 1.4364518339011614, -1.6940979672180807, 0.165976015208281, + 1.0227277830757575, 0.9471964236813554, 1.3689187788341273, + 2.0082590219654723, -1.4127390079463908, -1.4582830839548455, + 2.057655232622654, -1.6262107983377108, 0.8065089603585295, + 0.059317700347295395, 0.13330649608758663, 0.41871631403681064, + -1.6670993078179417, -0.4557222192488648, 0.8358412168608853, + 1.1485241583907668, 0.42382769612443416, 0.07067530896807704, + 0.7805845452452761, -0.9230705042306333, -0.7008265657860365, + 0.1238579585529523, -1.5033879105374937, -0.8006324477609928, + -0.44793642959253405, -0.27299529722657506, -0.42911609794809474, + -0.04754182561350199, 0.4678169668023181, 0.9609426463686324, + -1.135854381028605, -0.9604027706620838, -0.8759778130611081, + 1.3255392992467154, 1.4437271577682296, 0.4932168845856174, + 1.1198442202865473, 1.2097953377572856, -1.4782787622655886, + 1.534331937472566, -0.18592464788213361, 0.9065510875978713, + 0.2441526620364802, 1.2142409950847504, -0.005934606839626211, + -0.19071981471485608, -0.3040583507442866, 0.060081676730458174, + 0.018762337319815515, -0.9902130995818926, 1.3074986871427252, + -1.2758677347357341, 1.0698936415205338, 0.5702156020946687, + 0.3041015469962475, 1.0315316803895331, -1.3625531333588328, + -0.4647788936504099, 1.3043793230085174, -2.2931238782528447, + -1.8655685521053629, -0.9669629869645776, 0.1883663353758491, + -1.0634824082910936, 0.8013306975599391, -1.5443624045591937, + 0.32715347959892516, -1.1042425552504813, -1.6161041406680392, + -0.5109993363057571, -0.9190886093343267, -0.6077428272848499, + -0.5002569071129503, 0.9756689510277916, 0.2772218606494787, + -0.43287852998208237, 0.6296681915983172, -0.8502843261320427, + -0.9505069068832771, -0.650584341206366, -1.661723761397373, + 1.007089074815852, -0.11873490106540271, -0.1272993611104505, + 0.9298614676390998, -0.5153289230941936, -1.556702035787103, + 0.3807701443952423, 0.6123807492207072, 1.1867467887368908, + 0.14654907176430795, -0.5370416367498603, -2.1139883997425315, + -0.7876830210703504, -0.6237996086335619, 0.13592084587607914, + 0.6393276776955494, 0.13991569771729745, -0.81809230737367, + -0.6683486553698732, 1.115178173122076, 2.446771414213701, + -0.1637585890568815, -1.1209704564711065, 0.4467511515071406, + -0.9534092482312004, 0.3182330919933401, 0.271683759433474, + -0.9573363828477164, -1.0712413179694105, -0.30255813778652974, + 0.958247674089883, 0.4979415521551006, -0.8376872519699228, + 0.022535961046091832, 0.6840510626836408, -0.21077828406318735, + 0.584447240190305, 0.3410263701239205, 1.187176771555195, + -2.1172358171100973, 0.30995019232039317, 0.7901976578611829, + 0.30913468523891424, -0.9844146654250953, 0.3474506697688135, + 0.6259418281233743, 0.4794626029480261, -0.06173762343825315, + -1.3627102955192472, -0.20031835021540442, 1.6870429458740388, + 1.6083459881399655, 0.2789050227337342, -1.2719884064904396, + 1.1853106830638485, -0.9913580737072663, 1.2233104543278213, + 0.8134432318899081, 1.886557959191833, 0.11022533467624505, + -0.7681413266984113, 1.436892344457456, -0.5556957709754798, + 2.3038212660346935, -0.682772274731363, -0.4746168209407287, + 0.5511129315383609, 0.4215246673091607, -1.4860625654820405, + 0.1897176503580621, 0.44020540443738876, 0.7496215071681255, + 2.552398472469107, 0.7607506386602476, 1.0820709259858656, + 0.19917231987970416, 0.7942499355919473, 0.19973021075409347, + 0.29481380935757473, -0.6357637486064631, 0.12863791178542627, + 1.8561515112410554, -1.4521073859968245, -0.44690133813439353, + -0.5281516778029656, 0.23031228507637702, -0.05163289925469105, + 1.4531091939178806, 0.06594794127602743, 1.9158929778743325, + 1.3893544881471012, 0.8377158542991587, 0.4599670791005717, + 0.6058828013346426, 0.21069233748771843, 2.0847766207434564, + -0.029268516047371095, -0.3252030660188709, 0.13202105483543372, + -1.2051521919108732, 0.08810029046160057, 0.2998899394140385, + -1.329901911797941, -0.35244571721201917, 1.0093949421205954, + -0.6561924048355037, -0.6769220785633787, 0.9004707724740563, + 0.4215313341559502, -0.7375271922065233, 1.0706249247137103, + -0.028892244945197036, -0.5183281825357204, 0.5736153002965058, + -0.3758685831678415, -0.7918995871067815, 1.2782634446781616, + -0.6356995421752419, -0.4833863369287177, 0.9974534142023732, + 0.29124328932605514, -0.8236355220229586, -0.08699050597488259, + 0.6590141733829847, 2.441583292882557, 1.8873452628569025, + 2.2474275746061965, -1.2084812281924566, -0.8018851520041654, + 0.6759181159646618, 0.00313769957548172, 0.31474207170695445, + -0.07736951126774436, -0.25018161293926583, -1.2830507962514812, + -1.5628441907653305, 2.8453969247062276, -0.6342184442111992, + -0.592854552706071, -0.653723999513639, -0.76565949917059, + -0.730526998162015, 0.09075307806432394, -0.9481548645415303, + -0.04755585978648472, 1.3476101538895733, -0.9875559107864285, + -0.7896939152505444, 0.4816267344514175, -2.1648165937072137, + -0.7268788889746165, 1.2960347147856455, 2.9109429440400323, + -1.065376273609101, 0.18513796404565092, -0.8814138828253623, + 1.2409135508501319, -0.012877656665903105, -0.6476617613042353, + -1.994768600369764, 1.3443028214739667, -1.8514533014456531, + -0.7379582086548833, 1.694396228823381, 0.4026562338082194, + -1.2758466479856054, -0.25334115795781886, -0.10298131523967101, + -1.3748667924232236, 0.6293890561733958, 0.2738888278899806, + 0.5612373487486728, -0.35340678348969806, -0.736843748234479, + -0.40367835808832514, -1.2439466232262497, 1.2570138663363715, + 0.45632423807954914, -1.170707965548015, -0.9587623429264018, + 0.6425982154718701, 1.5567146540543542, 1.2516374448322218, + -0.22322323181634318, -0.5695167025136576, 1.3827725588378879, + 0.529065899193698, -1.5470827592965664, -1.0944906269170949, + 0.2905472841355263, -0.987585623182969, -0.3515621243107407, + -1.1366040859833553, -0.5160321145422849, -1.6442173347711861, + 1.3423907595439113, 0.31986604002016844, -0.5786595172834021, + 0.73801532386848, 0.5788365796442495, -0.7375548663739422, + 0.45423130001442397, -1.225358779977498, 0.7678067565519512, + -0.05078757448886205, 1.512293872317004, 1.106989348588503, + 1.3272064524680798, -1.0102290516604413, 1.3418085812620126, + 0.4314053354881663, -0.8698836928173348, -0.33508116195249105, + 2.273858285763485, 0.41127055898865217, -0.5417916233776102, + 1.3173262896619646, -0.06588492371272986, 0.5969382095462551, + 0.6197204718248582, 0.3742348312569251, -0.04007772711014461, + -1.6143631344300409, -1.2617480510616137, -1.2401273803885422, + 0.3822358970465057, 1.8061346386866513, -0.22702264172388117, + 0.37048462734622856, -0.11799395539242921, -0.005235059103559137, + -0.6489984366966667, 0.7782101694572308, -0.024126859434724878, + -0.09798935833649829, -1.0417284651310414, -0.6605483359597034, + 0.6972000521784677, -0.15225780204879624, -0.36034171752445354, + 0.5934576132973614, -0.25056255516564263, -0.7310153609877714, + -1.8861910032233697, 0.254480151361828, 1.4148114593503607, + -0.8002251737459469, -1.3914075562421209, 2.6894920671041236, + -0.1506644941293263, 0.4047667831579401, 0.5611273432518382, + 1.779203788992058, -0.48565136522391056, -0.26653744823132164, + -0.8829510316719237, 2.532755174768609, 0.5582799591535964, + 0.3625488756486719, 0.8429610656748877, -0.1422677046514221, + 0.059560937411363916, -1.54096863376706, -3.409308449483486, + -1.501482227036858, -0.17084770021492382, 2.3317238025849716, + -1.2471763217303788, 0.6742533376141315, -0.4671654422272103, + -0.7254154200533441, 0.23441703660981258, -0.4694323705405022, + -1.612196166706617, -0.32563743615759183, 1.3898422646804982, + 0.859146411700291, -0.2601661523404493, 0.3217117418244543, + -1.0494347817905338, -0.5991667659706216, 0.8881794866760082, + 0.5840210011255069, -1.2075635705473267, -0.3377101947699321, + 0.13603306699179857, 0.5802301275309478, -0.704852221496425, + 0.9615592481981307, 0.5450775566697076, -1.3780611142397772, + -1.6167118554509825, -1.2811556928029282, -1.2724034602241299, + 0.16120409249117293, 0.42750602102457846, 1.2666174612779004, + -1.5508664421057543, 0.2620798945065646, 2.0332984208088303, + 0.1261854523088127, 0.8345628189160572, -0.687707400490003, + 1.0656169293117534, -0.31887838781706285, -0.005112174834790412, + 0.2023207919468502, -0.5067392202386992, 1.823953396894383, + 0.1523428263375545, 2.2440789764565605, -0.6697609733471732, + -0.34309395149284333, -0.3824068477398153, -0.33303131558596377, + 0.9716664193169441, 0.8311581421420695, -0.22780854741625758, + 0.20032616901737238, -1.2785511330679982, -0.3197180135822623, + 0.4959834053798831, 0.6752515974385053, 0.5334780166422973, + -2.002795187816773, 0.27050605525523075, -0.9424869426824867, + 0.458248932225858, -0.46118697878329784, 0.47832198627914324, + -0.3661079341479641, -0.09319576406942727, 0.577819340020893, + 1.2520997452677414, -0.2933921906178384, 1.136343377990995, + 0.2468127074537116, -1.2252940887079373, 0.6375579341674809, + 0.3462788965739153, -0.5177836733288577, -0.035284483529249705, + -0.5338255181822806, 0.5193809161508848, 0.21798950092913766, + -0.6956597590579882, 0.8046664677176151, -0.11463713804889088, + -0.19176077914163675, 0.791885645189318, -1.4328882682847868, + -0.9528659659051965, -1.637558975422558, -1.989264868496837, + -0.8459538105074142, 0.944828292676069, -1.1921028346027158, + 0.2546472038919744, 0.3861916389251654, -1.521512495954636, + 1.535375205330882, -1.8914196543962882, 0.5149418901648063, + 0.7752013519581096, 0.9145512827088738, -0.5080387911664219, + 0.05031436015329658, -0.41216922303342934, 0.37227191099516266, + -1.6600720014787667, -0.17968185610490092, 0.31830407850338693, + 0.7686158224111359, 0.3658407552939923, -0.7165726159358554, + 0.013357030158994452, -0.3372894061190394, -0.6789238357123408, + -0.3832898769073804, -0.3227036184382978, 0.4460521819485986, + 0.061892643502349666, -0.32267506934792967, 1.484633534363464, + 0.4021774493619681, 0.4307762865129178, -0.5296069271797403, + 4.151195369087241, 0.5487000909862146, 0.7163468748574175, + 0.3808084179332832, -0.4772621640085183, 0.5479157515300286, + -1.1044576899329694, -1.2036713335057232, 0.6909028182382742, + -0.6529263174772725, -1.4725628267518027, -0.7473406606454858, + 0.7387557364279378, -0.8760308731605688, -0.967180804004829, + -0.49221734292555436, -1.4382474439405089, -0.3481040054911766, + 0.22254446316102353, 1.731032969663649, 2.8055652681876384, + 2.1160837251189757, -1.379194059803083, 0.6326539345516785, + 0.15520482328940885, 0.8119547790137315, -1.610952801893542, + 0.008918798158614715, 0.477564041851444, 0.25533528319659754, + 0.998197782393884, -1.6484421505039013, -0.3004410869764593, + 0.6057050457224126, -0.32020257217470566, 1.3359336989858763, + 0.535133451920879, -0.5673962878727761, 0.24055606737735033, + -1.6590194676777759, 1.9066265876591473, 0.2721183739248777, + 0.06834872118107038, -0.7693837262978656, 0.6000193521872865, + 0.20157135480173424, 2.472674269826056, 0.8258740084136792, + 0.47137911495882484, 1.244572899040009, -0.3130562609295631, + -0.7435497606216963, 0.13509423548484906, 0.6656236185332783, + -0.5980179153119386, -0.6435416164377876, -1.3312882258359282, + 1.0671430529417514, -0.09759042594372078, -0.35648374184511217, + -1.2269456519162936, 1.6814992783555787, 0.04184788447848968, + 1.68139083696507, -0.3030041682277847, 2.2849057798957273, + -1.196531329787736, 0.6523992375423346, 1.4893905469952924, + -0.6823297566186022, -1.1041446305707252, 0.4421841974696293, + -1.4167436314301174, -1.5920898580925384, 1.4343243359414184, + -1.9045005981467849, 0.057069471507391965, 0.5278224067845345, + -0.7362602350911139, 0.19448161568570255, 1.5261487666748228, + 0.004388839910851893, 0.015470814085829732, 1.615975884645819, + 0.8879261649672402, -0.1326774466682177, 1.9382951563961202, + -0.44547041979800195, 0.021230799239171535, -0.1571038497582797, + -0.16148117044663435, -0.36447608885124355, 0.9360978659212479, + -1.9835447885628907, -1.8064899970710941, 0.9036470769919311, + 2.425086908712557, -0.6272015905517969, 1.957160646153106, + -1.7538826809290353, -1.2373863108002687, -0.42249715021397544, + -0.02100757430425144, 0.7526038212912296, 0.2047007870068672, + 0.570705167349308, -0.7783611682766279, -2.3095477705978107, + 0.22606718794222244, -0.32290132655615966, -1.597852946819715, + -0.8952260637834641, 0.5568680007496093, 0.31733948888023006, + -0.24697424901807427, -1.1633182632185708, -0.261549901914151, + -1.855510767468883, -0.12245837196266503, -0.041080160924985655, + -0.585409894265932, -0.4138566348289641, -0.6980329178942006, + -1.0029216664042124, 0.10979946351080472, -1.6542257294131706, + 1.393533502384212, 0.5174318732191945, 0.30147088153612134, + 0.13176508644926532, -0.21802556521053773, -0.55329143084434, + 0.2739291983626038, -0.6883020380352294, 0.6825537252923997, + -1.5046508987238285, -0.5828333121318955, -1.1884290907589348, + 0.1665509776472768, 1.3971140199197725, -1.3673567412727532, + 3.0130147873449924, 0.7896539284272303, -1.055832543621147, + 0.16658265730062774, 0.5232158049212052, 0.28570121739370363, + -0.5325889850018535, 1.2918469178499534, 1.9819733294664026, + -0.8093143209894869, 1.469595195954295, -1.2932943712519451, + -2.1208284016640415, -0.4050898165492931, -1.1517011911443218, + 0.8998956145443444, -0.23384644657433187, 0.526560658434697, + 1.1222026129349756, 0.2160342440751586, 0.6797496626133915, + -0.5331175042591417, 0.6637291624241468, -1.0147033164625645, + -0.5049005083720637, 2.0659370602844436, -1.5900216896103532, + -1.5339789892006166, -0.3200566858112642, 1.2830977533887504, + 0.04654283897838462, 1.7838815763897529, 0.3904401499994594, + -0.4111612807908421, 1.1847627666014435, -0.3955642857036182, + 0.3675601425931492, 0.088662611923031, 0.46299757634197497, + -2.2893235368562155, -2.268927460602336, 1.283516393286584, + 0.20920007589000394, 2.4411204448502586, 1.1389069409067243, + -1.1898031767179975, -0.43341406963651063, 1.7741298995608883, + -0.016709317081657786, 0.11517899718492178, -1.5511855060356194, + -1.3117417253404795, 0.13351391911792548, 1.1637653113813886, + -0.27570074398670863, -1.5697680634730649, -1.954956462100421, + 0.5552656916393576, 0.2373994429321212, -1.9303747103380289, + -0.1921132978172397, 0.6250698172881495, -0.5949372282094622, + -0.7826608913130164, 1.4562229269964548, -0.5416543116490529, + 0.6936768940278385, 0.6261775893704643, -0.5859171652539004, + 0.8555032381807751, -1.3676477362552337, 4.238533804853162, + 2.4545185017647904, -0.913404759221193, 0.4250981319720471, + -0.9763799065871701, 0.7808586039540816, -1.0328656450097617, + -0.7721604644533069, -0.3530813727528884, -1.5411637128692925, + 0.6539840707892913, 0.008229110336607592, 0.7966890453416182, + 0.7037436956153061, 0.6614113279704881, -0.202848267721112, + -0.29922308805427594, -0.5522097500427048, 0.09875065962242098, + 0.7083328933399845, 1.7362802880024957, -0.2266535118741716, + 0.5299005404626365, 0.6719364752934611, -1.8615906591576734, + -0.09068813508526216, -0.1888891414579059, 1.3423077781666952, + -0.6924470819765697, 1.1041424493388294, 0.4134851965057971, + -0.4735791706069265, -0.7356651547484112, -1.575469178834194, + 0.2059058482018911, -1.317543434131728, 2.347983690185328, + -0.9350302948592141, 1.0039027596124084, 0.30969112449845376, + 0.2541035100649089, 0.4211688015877788, 1.0647819562744412, + 1.2886070484626828, 1.4453593413552184, -0.026423761925036916, + -0.10046863824315762, 0.9375145304857443, -0.8794152043439424, + 0.6161524124555712, 2.1765363841706007, -0.17519057418498793, + 0.40239774219958097, -0.5314020562312248, -0.028260581879397745, + 0.5266158478069836, -0.8130604924415793, -0.1620471073410965, + 1.368895928096441, 0.2544222901453687, 0.0682140981898076, + -0.08305873685961358, 1.1551649925205691, 0.20488815881813946, + 0.9788412565833704, 0.6730413277634831, -0.10343628631794778, + -0.011056773466636922, -0.26893242071811874, -0.22234819963659333, + -2.063667484853198, -0.9528556130697672, -2.298918544448265, + 1.4641851715761252, -0.6443216828282126, -0.7448597363782805, + -0.5637254977251447, 0.026036289664867818, 1.7947458799857385, + 0.47823466572724166, -0.6009031631006543, 1.5622161381793802, + -0.012361922782423504, 1.1320815868058798, 0.2666111797781486, + 1.0800481352272358, -1.3534368975569377, -0.12565159569358056, + 0.8269760280151415, 0.4101805250340873, 0.5459250834776258, + -0.578841318268924, -0.7708632540651004, -0.004711348442621566, + 0.9139140784227678, -0.5887863731031122, 0.5255711160933076, + 0.6899347371240381, 1.8406881042526044, -0.1494953868420972, + -1.487372075437836, 0.04531226841225139, -0.8785887917514404, + 0.6773321050874577, -0.0983506278141217, 0.5597628029545394, + 0.9487620637619515, -2.0252012328413445, -0.3325641975286207, + -1.1258330017788327, 0.023802932989263906, 0.42532764883918267, + -0.1719694477750812, 1.1366386876717014, -0.06950662371831764, + -0.5610077364219385, 0.6924775343736279, -0.08202929488370111, + 0.03632839803067284, 0.2035677562126695, 0.48902609842042033, + 1.0804149661369027, -0.7425106537204975, -0.5702977393123885, + -1.3826240552189546, -0.5228635824639636, 2.541990031610674, + -0.3358484399232096, 0.2708627260856431, 0.3577767439219406, + 1.0481739531875494, 0.41502512979161693, 1.945039667472124, + -1.333971998047096, -1.6319888693166744, 1.8081668907285702, + -1.126545357015281, 1.017481115516176, -0.8746343950821853, + 1.613464623094451, -0.987275067228173, -0.7782780233402289, + 0.9358137937887636, 1.2685709811916313, -0.9922941446951046, + 0.6495420807278994, -0.5015976512021791, -1.4515930568861974, + -0.3017145427194569, 0.22396206990737433, 0.2449168875921067, + 2.4353212694888504, 0.17708064085180888, 1.6379030780705819, + 1.3277860775740942, 1.9763199313325732, -0.7129095818443579, + -1.2469376388413769, -0.6242116235182271, -0.48041188552500946, + -0.14268548581723478, -1.6604837693733687, -0.03806802185256857, + 0.6963957195724964, 1.0623750746697818, 0.6233441558858677, + 0.36657697739573364, -2.295074935487194, 1.0845561474708743, + 0.4905268784109729, 0.9510955040687479, -0.5026253874469225, + 0.5855406556971665, -0.4674907407543193, -0.5608509773657036, + -0.054561000082436986, -0.13488620479039842, -1.6100667806518532, + -0.3709803597469035, 0.29582203102054655, 0.8410085106517383, + -0.6645326878187746, 1.1367845966619665, -1.3201243250510812, + 0.13674546078719402, 0.9775512964502551, -0.6593867653205457, + -0.16315112660697673, -0.6429666213286755, 0.5269463017070531, + 0.13689944560905168, 0.2704736580667669, 1.0956057892301136, + 2.0377599847068084, 1.1896914387079371, -1.1056334740369136, + -0.061419064162327903, 0.6558988396743295, 1.1616563231258492, + 0.05233437675572931, -0.43279599457514883, -0.6310196056008639, + -0.07017445588897313, 0.21859133324465385, 1.7464304327601714, + -0.38374464463022673, -0.4116300533373271, -0.9012559637626759, + -0.29838378562277373, 0.1776181377502974, 0.5337179529206251, + -1.6927309440114802, 0.19627841167268098, -1.3375053577369045, + 0.34292489957433187, 1.7252380623451755, 0.3893308049876548, + -1.6138835583138924, 0.24320533391068808, -1.503402740971457, + -0.9820815913055403, 0.02826537327258336, -0.8677808012629867, + -0.15732458310810252, 1.6448055242437023, 0.3882793537178024, + -0.4745596075074129, 0.1657838803136746, -2.6918015152661914, + 0.7632486195032542, 0.6973513947209198, 0.4101471209696532, + -2.2799074841609177, 1.284770153684539, 0.03995086580146711, + -0.2991581182473426, -0.08304172354784842, 0.28042933971050626, + -1.0923071947444258, 0.9164084413681113, -0.6812760370027394, + 1.5480579290916134, 1.4837613730950547, 0.023182419970626405, + -0.2668022486973583, -0.1188765567232481, -0.22450605274030175, + -0.01068777580695019, -0.5681288373513323, -0.798016193089919, + 1.112093456749927, 1.4289069908566108, -0.8325323358283204, + 0.6527204397669472, 0.45576965736433434, -0.05177234665505003, + 1.1825820243015825, 0.5633724078799881, -0.2598338582029702, + 1.2260636343236992, -0.06502314120499497, 1.3554177601202826, + 0.015378075446720483, 1.771795744777381, 0.19716116753361734, + -0.9289545353666014, -0.01120548540552129, -1.6568561810835647, + -0.9711632993719995, 0.2888457566302567, -0.33812030790826947, + -0.6944997091883152, -0.08753361436324024, -1.0825962267681306, + -0.4698117598324523, -0.31391779051735585, 0.5155485258897468, + -1.3906426323765313, -0.08794713693189429, 1.323299166667676, + -0.1281180737897692, -0.7313549630276092, 0.30727046798040325, + 1.1752251844693715, -0.7441249207177553, 1.6052690350217986, + 0.18649308224250258, 0.17892852927651728, -0.0995691575256924, + 0.4348534499771249, 1.484991734895783, -0.5720258392859724, + -0.08690696328546704, 0.7713939696120472, 1.1722789472312292, + 1.9496467641354467, 0.22942775691626238, 0.7124499254350729, + -0.40961823346856296, -1.5841557574786587, -0.5783735657948544, + 1.7072885072301731, -0.9760682458530513, -0.7133260677207641, + -0.17406636751269225, 1.5115376392568705, 0.3444982802650086, + 0.5618620561647593, 0.7768151831330067, -1.8495980414473379, + -0.022772431183660354, -0.2688258642531703, -0.2316501235768239, + -0.4349049986098626, 0.09524082099485014, 0.18287945969711975, + 0.9756566821517488, 1.2112951490716906, -0.8350588047652798, + -0.7894781658614808, -0.8425885522378407, 1.0078366331542066, + -2.170943513352494, -0.07697039348999336, 0.624710432231761, + -1.5714538060400307, 0.25497055299290833, 0.9193656642088831, + 1.0914383490187152, -0.2746559451582547, -0.24795001040712014, + -0.1821963308600328, -0.6151863420266909, -0.07974289047525698, + 0.864835252508244, -0.11852133979339911, -0.5867385141837459, + 0.7425778869302543, 0.7772435416319093, 0.7418518577569089, + 0.18477538422252776, -0.862469199675159, -0.7201960090993764, + 0.7441788487719844, -0.44740979333359115, -2.011406066578824, + -2.0397719472330946, 1.6317617740438857, 0.501298361621573, + 0.46480805036189093, -0.6492071444203512, -0.9962577891956758, + -1.176143672100762, -1.460358133281756, 0.91939184535992, + -2.6115193413417344, -0.11701441464426601, 0.36330899947821516, + -0.7619851206952822, -0.9791836397007687, 0.06605184536205168, + 0.9852736131214399, 0.18316974821162169, -0.16385983370688456, + 1.769889718870536, -0.7568083172666948, -0.07093554823462433, + 0.34915804932546474, 0.04394955212420144, -0.3412151969411125, + -0.037998909530440356, -0.7920940693112494, 0.23924283654785033, + -0.7218726802077204, 0.756794397487571, 1.129998141517764, + 0.06199671202439378, 1.5818825635871332, -2.0927309142911965, + -1.009720388820037, -1.161041154747722, -0.8447671692136892, + -1.0157929981350513, 0.7904271516718387, 0.7254384385818724, + -0.603295486359894, 0.25924412778603606, -0.04640660866056171, + -1.6000423263326133, 1.8143254523998487, -0.08862538404196012, + 0.5332621638876169, 1.1045997215315637, -0.41584450160976266, + 0.9441745490519653, 0.24798697093505728, 0.007684578291883661, + 0.10198392659226542, 1.6199201784700468, -0.32528736620138143, + -0.5826981266958557, -0.36325256797247957, 1.1471577477638135, + 0.6178987140946427, 0.36972297251343633, 0.5437284650592201, + -1.4459624565283546, 0.05792287061159475, 0.41648235426252744, + -0.3752827187450667, 1.6652887251405053, -0.42564437336001554, + 0.9761973006448895, -0.7275241033025399, 0.6934458083833381, + -0.29112188437100084, 1.3282243166189927, -0.9536927875603478, + -0.719434212611784, 0.6748136465043926, -0.03597354593983007, + 1.94009058703115, 0.09882655123973512, 2.1053876175385304, + 1.4185342675315131, 0.1206620765251783, 0.14903745714080963, + 0.10442318495551679, -0.17795681161591564, 1.2580662909953826, + -0.309432614193383, -1.0905944849250224, 0.4769931537784153, + 0.42744787996997274, 0.015299040637353436, -0.35211140544489866, + 0.2588719668529644, 0.39806242670614195, 0.0982957694556772, + -0.3643039151707563, -1.661352851241187, -0.7050125329026734, + -0.943960952206926, -1.4473953121799084, 0.6926023466644213, + 0.284659435800313, 1.6730413075943111, 0.6423676343810131, + 0.3968310937206259, -0.8342984203305135, -0.06635863092332817, + 0.48133940282415283, -0.34365908316039695, 0.8195486752084361, + -0.2781857864218842, -1.0136587780355568, -0.4538474341770635, + -1.1337344789342048, -0.5150244531135606, 0.958566232938252, + -0.16105129432877321, 0.38436738614303156, -0.5172439276028532, + 0.23093709347387772, -0.30272270953081704, -0.21962749662435752, + 0.9566459591875526, -0.788349928603636, -0.44952615913370747, + 0.525332205545319, -0.5812548660484521, 1.2956320514491553, + -1.752164482642109, -0.6047121066028011, -0.15329007945272555, + -0.04110361189064399, 0.2075100652227872, -0.04955642332135181, + -1.2847570979710345, 0.4806820630644186, 0.8112350665109486, + 0.577438605043487, -0.5506815219471743, 0.7858766373478445, + -1.101050840231404, -2.2244251571050273, 0.09434075969634925, + 0.19198836106624168, 1.0670984516256519, -0.7989553140491875, + -0.20794218769948203, 1.5326125420890269, 0.020895643272767377, + 1.429434237396836, -0.09226519337744446, 0.2530160966559398, + -1.2052909073582596, 0.18629835668130743, -1.1412717735009497, + 1.2293983703310951, 0.20963090073800605, 0.2771037033747804, + 1.1176243523307434, -1.7749390137644867, -0.6160566595276167, + 0.37431077650255806, -0.628817850166509, -1.5457989014436102, + 1.0413567521072367, -0.6687052895376355, 0.08823501338384936, + -0.8504561089335623, 2.674041129993747, -1.5899356389768722, + -0.12358228035838018, 0.4957660906211637, 0.31851942141963985, + -2.077120767009975, -0.5844799194788266, 1.9510391355162264, + -0.347560684365186, 1.3086755801775074, 0.34475766053720236, + -0.4033872470813162, 1.1582973308383313, -1.0684599760113471, + 0.529968393960725, -1.6526921510620116, 0.9524384542696674, + -0.22909069471152455, 0.6652418786019982, 0.0030589233668147898, + 0.11365610389048802, -0.2480098634476716, -1.739708416005498, + 0.13128969246670458, -0.8124775515041727, 0.09211054412374194, + -0.5372875032406812, -0.0032089521665293573, -0.8316736236057737, + 1.5059153046848375, 0.5055489101297763, -0.9926899954404349, + 0.06717218616117565, 0.7564225434228204, -1.1172446398752929, + -0.0971278427942958, 0.1783634876571702, -0.43831740139818265, + -0.9897246258630265, 0.42789947696918956, -1.1881782474146696, + -2.2595621851300622, 0.6418731773450146, 0.2534262764606806, + 0.4316556467189196, -0.1404488018967209, 0.8263074484867586, + -0.14552757065621125, 0.0789242186302759, 0.8209702417714765, + -0.25903816299191046, 0.6767653743426741, 1.6145117461589933, + 0.6926264703024766, -0.32214772217430293, 0.9292349516554164, + -1.0508805938355477, -2.749764645898245, 0.013188601563584493, + 0.33055296889149677, -1.1958215283600067, 0.1405450269372766, + -0.508425415799171, 1.4570136536517577, -1.0251431195020073, + 1.0969073653806085, 0.2995765466625078, -0.7079203015696985, + 0.1288388731533383, 0.7296772632654821, -0.5084827629757859, + -0.9959874907849151, 0.7608364139386558, -1.1970996777698375, + 1.9127937929371042, 0.38743478707694207, 0.21795474706617954, + -0.29993899538603785, -1.4785086866034736, -1.5956467908439216, + -1.2082094773229581, 0.03773293580577447, 0.790311941516555, + 0.5111896121176778, -1.1940258469292004, 1.2227006637979814, + 0.836882842830787, -1.4311686461788606, -1.2744460342013122, + 1.4644637457684015, 0.9728193611804964, 0.555860074890682, + -0.4409659816734968, -1.268835784551248, 1.830337701005201, + 0.5659326920677746, -0.5949593269450844, -0.48933591057504616, + -0.5902894454298842, 0.8313257587194035, -0.014541865211528828, + 0.42819120074867917, 0.12344083343107326, -1.5259370836437376, + -0.4422937354316872, 0.2663102136658507, 0.7711270876630171, + -0.6631414912664546, 0.7010024223490354, 2.074527616332793, + 0.1267033512168494, 0.5771332153363341, -0.1669943788998164, + 0.37570932219774306, -0.009486467375681047, 0.6339720925542973, + -1.100679804820569, 0.208089727845949, -0.9425617416684303, + -1.4440593374039066, -0.4882367066101957, 0.7163657255326146, + -1.0357588950466872, -3.0737220356886374, 0.2470950795522819, + 0.2864288554119523, 0.1483978221958065, 2.1154989451643167, + -0.4001965762118845, -0.6462203956080385, 1.1265359562700552, + -1.2596675882237476, -1.0043123290637297, -1.2085727111478823, + 1.4452610642730932, -1.5066630796353353, -0.26195290731609777, + -0.14271399927968614, -0.6530276111308737, 0.31402361422899266, + -0.615575261840529, -1.5382467581744872, -1.146638529472436, + -1.2566936090246918, -0.11659270837613013, 0.35542964402643873, + 0.02526277564568483, -1.7743572584114875, -0.7085383632824588, + -0.63517949386522, 0.7100322417458258, 0.37725139473966673, + -0.5759538564824571, 0.08180511402950946, 0.41407533287471754, + -0.24200104577387313, -0.4385693241008144, 1.6526863394676001, + -0.11474769466518762, -0.7778772946580198, -0.28839425476706665, + -1.9107601252457116, 1.2251863883694925, -0.6102167805929645, + 1.314166180001923, 0.33549111757526723, 0.1642165334041994, + -0.2711391207536865, -0.7227241249586495, -0.20242746834599726, + 0.511635243911443, 0.7803547739974653, -0.327423000785996, + 0.3502846670812043, -0.6690281009028096, -1.603564129628161, + 0.651294169982652, 1.5346475986331407, 0.6076831921328979, + 0.09553225219459871, -0.7254748961580175, 0.5000694612537876, + 0.41285641663749495, -0.6307563086891868, 0.10304359933774031, + 0.6906693939179498, -0.6117088277209861, -0.37359085726781716, + 0.6415372041475905, 0.5667199392606257, -0.471612466163586, + -0.28409429557130345, -1.1000185275940002, 1.2078426552444212, + 1.820822882585083, -0.049716516450738324, 0.48541676042055915, + -0.24833733761952417, 1.9706194085315605, -1.9357972478544503, + 1.2746428725319756, 0.8787450667483632, -0.5743399181816461, + 1.146477625622449, 0.82904607165605, -0.6240307749078965, + -0.5201093385684066, 1.7563590799610034, 0.9291759054010359, + 0.03949431623274768, 0.09878351123218292, 0.4678794507416003, + -0.21611204185496907, -1.9415038866503043, 2.2711411739440632, + -0.7573422816803704, 0.4462925903632097, -0.7789087537529676, + -0.5503182367952988, 0.5971424930574555, -0.07203878009168195, + -0.5217028851935946, 1.082108216219426, 0.41790242250612963, + -0.0679066357661384, -1.263509598957737, 0.8004808096290376, + -0.2541222406082443, -0.2133433497515408, -0.26792364723437295, + 0.20112906676382966, -0.32435552792181394, 0.23282205608740192, + 2.2221675354748855, -1.4830106452698057, 0.9891247273398209, + 0.2603986195227453, 0.4910300720533456, -1.357238648432873, + -1.2514963996484836, -0.30125845912815724, 0.1928097450048526, + 1.4448018223442105, 0.5625834185014028, -1.1979257187589254, + -0.07857776228971138, 0.06045821558284647, 0.7133596907037718, + -0.8010426610921747, 2.0440257915732163, -0.5915625781476785, + 0.4614571279264127, -0.8323915586162163, -0.12281522077241769, + -1.891751987785829, -1.436820011323204, -0.3375407922826853, + -0.4583639388670451, -0.09352467965350812, -0.09376078246251955, + -1.104789843452201, -1.9113071146131402, -0.3080107984257694, + 0.6890879947469407, 1.6298325324990017, 1.7332383276272256, + -0.6570721931348752, 0.5011093119580866, 1.4256340832824121, + -1.6409542816000537, 0.3031292239641022, 2.064237216045931, + -0.051705902095611905, -0.7832897005596622, -0.7454241686325258, + 0.7295020332844333, 1.6375808311567626, -1.2299275543889183, + -0.5600159935032863, 0.36276227989135124, -0.0841421034314566, + -0.34511214955582953, 0.1013965878283084, -0.18098461747365058, + 0.9191251794719164, 0.06765779742714738, -0.24919806799835556, + -1.7584641099826481, -0.2408943706631287, 1.1586506587846426, + -0.6941027599159496, -0.40284176463802435, -0.07218934233754541, + -0.6866794606674014, -1.136814985867382, -1.0286542111302972, + -1.0753215203338025, -0.523524292626774, -1.1218134808250722, + -0.874089313385567, 0.09331272041243248, 0.9386738047553144, + 0.09076349142987619, -1.2160470369625689, 0.27900325888755534, + -1.3482125481314258, -2.0470437247953943, -0.40859660863279956, + 0.2828811548709021, 2.4800984064132803, 0.19294989666278736, + 0.28212861056292143, -1.610912083835489, -0.5315801864225906, + 1.706608368850939, -1.8501729731293364, -0.630002988972623, + 1.4757143328892797, -1.6396479208187233, -1.8371716642350544, + -1.0742314481301545, 1.0754611432095824, -0.5378007226773498, + -0.3178784375535398, 0.5735335996600629, 0.4868994275345122, + -0.21549627729467807, -0.16640172916066487, 0.908080649370133, + 2.173437328284729, 0.4190344084566232, -0.9569146506578511, + 0.45263575951706014, 1.778059009562198, 1.4488553145210796, + 0.07467679612778716, -1.3459068501008828, 1.0900502612985628, + 1.8272758673855272, -0.23894381261705294, 0.12043314967623445, + -0.5773200285051094, 0.5216921180645022, -1.5092635778866117, + 0.18102168205190566, 0.8965052639560143, 0.9201255573471795, + -1.2903912922821366, 0.9873211691804024, 1.172724388329733, + 0.20376377055663986, 2.138854170658406, -0.9316113182700534, + -1.2475280594655904, 0.417911924644604, 0.3104385253889033, + 0.8962967028920321, -0.5778036698087538, 1.0180641994003492, + 1.978139527067393, 0.37723162368545265, -0.3153731448300482, + -0.28043983006620493, 1.2268346250368896, -0.17227523540812437, + 0.2580612644636763, 0.7839164309552376, -1.6857109421253955, + -1.3003167935540005, 1.933409068497346, -0.720369637396077, + 0.5104055429987321, -1.08388129713197, 0.23369005993420508, + -0.8857461821887489, 0.21884110679487903, 0.3399839311138383, + 2.2927612097100596, -0.1302670929713838, -0.2227227695346543, + -1.4346253879586792, -0.8344086694038684, -0.7002516953857244, + 0.43509420272323845, 0.8609631356011878, -0.43270705045183616, + -0.24001073577599197, 0.28609176501217787, 0.7031717689478829, + 0.23204270200931182, 2.1505272334979897, 0.2861763181933207, + -0.7584547841123832, 0.5168757252968688, -1.1092933224722437, + 0.28264197275089215, -0.7359352757039123, 0.7696916736749783, + 1.1693904145377578, -0.03894762164617204, 0.6641135169499479, + -0.7147964181583462, -0.3596311141562558, -1.8435871360153697, + -1.0008815336080084, -0.8745896149619665, -1.7854772192044157, + 1.4101601051693955, 0.3989081511969654, -0.46138352582140285, + -2.070033977081843, -0.18644561980439622, 1.2400855648899223, + -1.164136732605302, -0.7927090251554685, 0.5630168884076489, + 1.1671379510254194, 2.231868835700232, 0.4565350508345933, + -0.3389202312449233, -1.5275179745183336, 0.3230936836149417, + 0.6082923125809354, -1.385778896370543, 0.4933263314478739, + -1.9751095768562033, -0.2065779574546836, -0.19565497391904002, + 0.19507228882058708, 1.1491676003071556, 0.47753659551701444, + 1.267566892973097, 1.2699972267061581, -0.14783471801597317, + 1.3947086641636515, 0.13849276493060986, 1.543713937406089, + 0.8793567120723491, -0.19166319681661234, -2.178011595451856, + -0.047935435051166216, 1.0519017754831546, -1.1503195176998693, + 0.9590735535318957, -0.4101942648351055, -0.9291595233845755, + 0.04827969552760872, -0.006591472103865717, -0.8287084685787525, + 0.510991782645471, 1.1993354234468527, -0.6249200800653011, + 0.06906024810652203, -0.2810131831119284, 1.7132565332176783, + 0.3715878450725023, 0.4232188686511501, -0.23751681917622205, + -0.284138784599415, -0.9181240192735334, 1.7200351673814782, + -0.5646085076036653, 0.9511857419563984, -1.2703881921689144, + 1.044280055990386, 0.03786689772227966, 1.4182728427165774, + 0.8337325218228854, -1.0587247347181652, -0.5031113248889103, + 0.8873021806079839, -1.6837264548806383, -0.963353987660909, + -0.3925379775035674, 0.030351645171583227, -0.1480784901933993, + 0.5971587614103617, -0.5966536682782796, -0.32585054539846936, + -1.2881189235714545, 1.4626168790196996, 0.4876451579697916, + -2.5512587798294053, -0.22746942805830464, 0.22714076786745147, + -1.2367287849167479, -1.4958341332392378, 0.8404569974160938, + -0.5250803172042454, 1.1030214409483563, -0.9430810970721388, + 0.8419017021480036, 0.10747778668821155, -0.3872490592960608, + -0.5972525446631549, 0.9643730616194118, -1.9150859939615104, + -0.16132999883201363, 2.247013458758037, 0.2793924489497806, + 0.22445447609820876, -0.5935321078971101, -1.021619853538392, + -0.5669336330928147, 1.51072676166332, -0.4577459477554841, + 0.2856756020469671, 1.3003683403048245, 1.6681883000570241, + 0.29140173625397836, 1.4448227513845624, -0.49337735263206095, + 0.3063926208053877, -0.8839906748898476, -0.8508338033152001, + 0.32884664967404276, 0.8225807552240499, 0.28615338220135916, + -0.6459677898912536, 0.456084692916367, 1.1816323117108978, + 0.005750129390048088, -0.23080308943910496, 1.2329424071409298, + -3.103298270774514, 1.2457064642869893, -1.438732143788353, + -0.5069669088042135, 1.9410370006144513, -0.680135288988108, + -0.684441394790031, -0.9299498749943689, -1.0023257557431406, + -0.20085573890294844, 2.1892107786913413, 1.0539082768590986, + -0.12946159481571648, -0.9603859816501762, -0.6759566438229674, + 0.6063321523892387, -2.04080451980182, 0.3448387208567922, + 0.6188680405937481, -2.53483233750232, 0.4718381152261103, + 0.5204602861759604, -0.37294274011868744, -1.0608122326322948, + 0.876995543974861, 1.6208103493973607, -0.10501804755065293, + -1.144605534391477, -0.11545809967020526, -1.5254381527091445, + 0.704971452166678, -1.1385423962074352, -1.0702260829994228, + -0.8042670395297246, -1.9958053298936345, 0.06149218869846654, + 0.0034778293679331336, -1.6309611881902848, -1.579450043003391, + -0.812854397163873, -1.3440391096930395, -0.7992158635130223, + -0.7307305666236779, 0.563033821782763, 0.5929740847991084, + -0.4072124328227139, -0.9597031772508735, 0.6326426393413165, + -1.26743591058185, 0.012961789096372823, 1.3690236683244486, + 0.5626351995527971, 0.3930969343026333, 0.3804639938085295, + -0.7055289460485151, -1.1137071825718237, -0.32401279261679405, + -0.25360651639701537, -0.3629288727538312, 0.40309857005433064, + 1.6124254520554622, 1.145346015655076, 0.18482864793147852, + 1.0146132489781052, 0.5762713361888263, -0.4302922143454036, + -0.7781673008888688, 0.3165266777932903, -1.3210033528584464, + 0.47419403592709836, -0.02875008939599337, 0.14714621419460175, + 1.4797797158907586, 0.6830428568029596, -1.051712101999051, + 1.194440018218743, -1.1642432883696971, 1.04395640790416, + -0.3903019504585278, -0.9469832104094259, -0.15920476878484313, + 1.2958603176641055, 1.2195200287127348, -0.18102374320360753, + -1.1645019636692635, 0.31512163398607973, 0.4112140952226413, + 0.799068132489134, -0.194553356476797, -0.24713828227948162, + 1.1162744704218956, -0.5100587555940508, -1.7306779449877614, + -1.3161139044492312, 0.6341932724742192, -0.7347849903121613, + 0.9645835907250738, 1.5026031951659682, -1.4760744795962333, + -0.06731259930616487, 0.7042872721353796, -0.5335137254930029, + 0.0716602316769604, 0.6043539708627061, 0.11692324897196178, + -0.05768277951806856, 1.1162713764449659, 1.8796989655172829, + 0.43088724829364505, 2.38688392018114, 0.29310955804355704, + 0.7462035664728303, -1.4923332297842067, -1.2280466714373701, + 1.0734872965346725, 0.5262032697307816, 0.7693518738655505, + -0.28211783832137927, -0.0290036682453748, -2.931607725174539, + -0.61001449056912, -0.7025484586715276, 0.7759827155138221, + -0.19166960568471056, 0.9694902932312826, -1.04530914742025, + 0.9727250463770896, 0.06310226379325519, 1.0818373134406507, + 1.1047859736064884, -0.9784634968885791, -0.9146592081968249, + 0.15142025533299056, 0.23328387697346153, 1.482068026300734, + 1.4017194403233817, 0.5839385941999119, -3.499091269336771, + 0.6898991159514024, -0.76367161011779, 0.271889761583164, + -0.2648955270675521, -0.05132512877225392, -1.1445243383154795, + -0.9341941596618715, -0.2758301417114395, -0.12386224872925095, + 0.3429318698923175, -0.20380183235337243, -1.442620516648269, + -0.08857891832728218, -0.5685844707827721, 0.31653125437081814, + -0.7630932541957661, 1.0549727437086984, -0.23903901917404402, + 0.13881369002402355, -0.277058267581059, -1.1828348650720584, + 0.41122688905564325, -0.11093465300197233, 0.05700186250342231, + -0.8530057143017865, -1.1330141754733023, -0.788433518694048, + 0.0410432386990952, -0.2526837758051426, -0.7365204396871289, + 2.374275605228078, 0.24647701310468878, 0.6189709904599635, + -0.3036782549769593, -0.6671553020762782, 0.9568820989023366, + -1.079178482400065, 0.29500583173695416, -0.9289020636769935, + 0.7791599475788574, -0.1983372320556875, -0.49097598732772324, + -1.2327667862306246, -0.463786196952311, -0.7468162049628737, + 1.8137576226948215, 0.4907226689424396, 0.3853672976926061, + 1.405986757744362, 0.006148904928010884, 0.5727386445488017, + 0.09397490448508446, -0.35506525618267476, 1.7351653184984497, + -0.39253263749716394, 0.12196757373920339, 0.38004382713166907, + 0.7006111800175882, 0.4987705634227367, -0.7645303868257485, + -0.5146892069655717, -0.5835515156473441, -1.1547773890712476, + -0.05898296492235115}; + +static double gemm_checksum[64] = { + -45.1525872455864, -53.56382313501859, 75.37190918194668, + 81.51135315789973, -15.61415231827229, -60.60307561986312, + 47.96036541651724, 65.73237574275608, -4.4727051387073935, + -33.991042035520486, -26.416772446199882, 1.7860331769884112, + 63.625439870165444, 11.62205632780551, -15.064831482590407, + -47.33578990077392, 31.789427261811298, 45.60325302655279, + 46.39784351481784, -41.63175282633895, -37.58415419207174, + 52.811751728757756, 17.491718577483027, 95.99796882635259, + -31.290609142980582, 56.18913870959351, -9.784406747318776, + -47.798468293167936, -68.85425504150908, 14.518540879027748, + 12.444849316598145, 27.044449299453333, 34.41753472048874, + 37.24202029503455, 0.0015372059941842764, 56.49727200521621, + 42.08187683985865, -60.80036174635206, -41.51354371054238, + 25.39617622130028, 64.16199934240205, -49.723260643988866, + -67.73199521937849, 14.061632619059395, -46.723037598164815, + -1.4946901268404673, -19.516162199239137, 13.487866069963179, + -23.19623129877386, 56.32942826668456, 67.64491765822369, + 25.427295331888367, -3.9993280938311173, 70.5746407371274, + 68.98981144920677, 11.672168486094769, 10.78240530670366, + 31.25611590676771, 34.98838254510045, -129.95599475048968, + 14.933419865189286, 35.74263691521163, 85.87277962177788, + 93.68226272318962}; diff --git a/sw/spatzBenchmarks/dp-mxfmatmul/data/layer.h b/sw/spatzBenchmarks/dp-mxfmatmul/data/layer.h new file mode 100644 index 00000000..ba49ef72 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul/data/layer.h @@ -0,0 +1,134 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +#include + +typedef enum { FP64 = 8, FP32 = 4, FP16 = 2, FP8 = 1 } precision_t; + +/** + * @struct gemm_layer_struct + * @brief This structure contains all parameters necessary for GEMM. + * @var gemm_layer_struct::M + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::M_p + * M divided by number of compute cores + * @var gemm_layer_struct::N + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::K + * Dimension of matrix product MxK * KxN + * @var gemm_layer_struct::TA + * Transpose matrix A + * @var gemm_layer_struct::TB + * Transpose matrix B + * @var gemm_layer_struct::TILE_M + * Tile factor across M dimension + * @var gemm_layer_struct::TILE_N + * Tile factor across N dimension + * @var gemm_layer_struct::TILE_K + * Tile factor across K dimension + * @var gemm_layer_struct::A + * Pointer to matrix A + * @var gemm_layer_struct::B + * Pointer to matrix B + * @var gemm_layer_struct::C + * Pointer to matrix C + * @var gemm_layer_struct::ALPHA + * constant factor: A * B + ALPHA * C + * @var gemm_layer_struct::dtype + * Precision of GEMM + * @var gemm_layer_struct::expand + * Use expanding DOTP instructions + */ +typedef struct gemm_layer_struct { + uint32_t M; + uint32_t M_p; + uint32_t N; + uint32_t K; + + uint32_t TA; + uint32_t TB; + + uint32_t TILE_M; + uint32_t TILE_N; + uint32_t TILE_K; + + double *A; + double *B; + double *C; + + uint32_t ALPHA; + + precision_t dtype; + uint32_t expand; +} gemm_layer; + +/** + * @struct conv_layer_struct + * @brief This structure contains all parameters necessary for Convolutional + * layers + * @var conv_layer_struct::CO + * Number of output channels + * @var conv_layer_struct::CI + * Number of input channels + * @var conv_layer_struct::IH + * Height of input feature map + * @var conv_layer_struct::IW + * Width of input feature map + * @var conv_layer_struct::OH + * Height of output feature map + * @var conv_layer_struct::OW + * Width of output feature map + * @var conv_layer_struct::FH + * Height of filter + * @var conv_layer_struct::FW + * Width of filter + * @var conv_layer_struct::pad + * Padding on all sides + * @var conv_layer_struct::ifmap + * Pointer to input feature map + * @var conv_layer_struct::weights + * Pointer to weights + * @var conv_layer_struct::ofmap + * Pointer to output feature map + * @var conv_layer_struct::TILE_CI + * Tiling factor of input channel + * @var conv_layer_struct::cluster2cluster + * Flag for enabling cluster 2 cluster communication + * @var conv_layer_struct::im2col + * Flag for enabling im2col + GEMM + * @var conv_layer_struct::gamma + * Pointer to gamma for BatchNorm + * @var conv_layer_struct::beta + * Pointer to beta for BatchNorm + * @var gemm_layer_struct::dtype + * Precision of Convolution layer + */ +typedef struct conv_layer_struct { + // CONV2D + uint32_t CO; + uint32_t CI; + uint32_t IH; + uint32_t IW; + uint32_t OH; + uint32_t OW; + uint32_t FH; + uint32_t FW; + uint32_t pad; + + double *ifmap; + double *weights; + double *ofmap; + + uint32_t TILE_CI; + uint32_t cluster2cluster; + uint32_t im2col; + + // BATCHNORM + double *gamma; + double *beta; + + precision_t dtype; +} conv_layer; diff --git a/sw/spatzBenchmarks/dp-mxfmatmul/data/result_check.h b/sw/spatzBenchmarks/dp-mxfmatmul/data/result_check.h new file mode 100644 index 00000000..bc288519 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul/data/result_check.h @@ -0,0 +1,1157 @@ +// Copyright 2022 ETH Zurich and University of Bologna. +// Licensed under the Apache License, Version 2.0, see LICENSE for details. +// SPDX-License-Identifier: Apache-2.0 + +// Results Print: +// 2.8806254863739014 -8.701830863952637 -13.985821723937988 4.661405086517334 +// -16.365989685058594 5.6337456703186035 11.45486068725586 5.885985851287842 4.106761932373047 +// -6.859222888946533 5.610514163970947 -4.660312652587891 5.037506103515625 +// 0.10009279102087021 -11.196043968200684 7.545069217681885 +// -0.12313352525234222 0.942384660243988 1.3871304988861084 +// -16.467350006103516 4.978546619415283 2.745110273361206 -4.928203105926514 +// -15.15294361114502 -5.986259937286377 -0.031089577823877335 +// -12.166695594787598 -19.836206436157227 -3.2775802612304688 +// -4.889615058898926 7.344486713409424 -7.4342875480651855 10.956560134887695 +// -3.304600954055786 +// -17.856266021728516 7.307825565338135 4.092088222503662 8.08332347869873 5.702564716339111 +// -15.433448791503906 -6.986871719360352 1.7059115171432495 3.121013879776001 +// 0.582251250743866 -1.0863933563232422 17.67479133605957 -3.863203287124634 +// 0.37700000405311584 1.109438419342041 1.0836236476898193 1.1102153062820435 2.524942398071289 +// -1.5135890245437622 +// 0.656607985496521 10.170778274536133 10.028070449829102 8.330126762390137 +// -11.701726913452148 -4.407893657684326 7.758228778839111 -2.7099220752716064 +// 0.9044570326805115 1.1141778230667114 1.0656932592391968 -4.530503749847412 +// 0.47244516015052795 -12.499343872070312 2.287161111831665 3.2635436058044434 +// -13.663341522216797 -17.193328857421875 -1.0010809898376465 +// -9.479246139526367 4.868502616882324 11.145208358764648 2.2750139236450195 +// -2.298515796661377 -3.2841763496398926 15.90522575378418 0.2569486200809479 +// -12.70667552947998 6.707425117492676 +// -5.087635517120361 10.774757385253906 7.469571113586426 2.32682728767395 +// -1.6506938934326172 4.330862998962402 -1.860941767692566 -4.019490718841553 +// -6.300644874572754 6.4793806076049805 -12.077376365661621 9.295028686523438 +// -0.5875325202941895 -14.077406883239746 10.067597389221191 +// -4.0844244956970215 -2.1840596199035645 1.3170448541641235 +// -6.122172832489014 2.7294840812683105 1.7599126100540161 -10.927498817443848 +// -13.841184616088867 -10.101778984069824 -4.685980319976807 +// -5.640035152435303 3.2952229976654053 -18.900819778442383 9.235246658325195 +// -11.100334167480469 10.558769226074219 4.199683666229248 1.3712619543075562 +// -3.046215295791626 9.072247505187988 -12.05625057220459 19.12310028076172 +// -1.3870670795440674 2.8410778045654297 8.381617546081543 -7.707216739654541 +// 0.8881632089614868 +// -2.179950475692749 2.2573320865631104 1.77576744556427 5.987672805786133 +// 2.023634433746338 -9.114627838134766 +// -5.112705707550049 15.80331039428711 13.57304859161377 6.315597057342529 +// 0.10645893961191177 -1.5000672340393066 6.725678443908691 -2.4270832538604736 +// -2.3349528312683105 2.347616195678711 4.615188121795654 -9.177841186523438 +// -3.089085817337036 9.93418025970459 11.867742538452148 -13.662431716918945 +// -0.3020208477973938 -7.61653995513916 1.9582147598266602 -3.399796724319458 +// -9.097684860229492 -10.058938980102539 5.533229827880859 +// -8.816774368286133 2.3448615074157715 -6.784222602844238 3.4473557472229004 +// 0.8386952877044678 3.1266486644744873 -8.434008598327637 +// -9.441191673278809 4.645439624786377 +// -3.611762762069702 5.28008508682251 4.530930519104004 +// -2.3615126609802246 13.158353805541992 2.4176104068756104 +// -0.6465420722961426 7.212995529174805 11.107779502868652 -3.776315927505493 +// 0.6902714371681213 10.603672981262207 3.5780997276306152 1.1810908317565918 10.19426441192627 +// -2.916224718093872 +// -3.568861961364746 4.225578308105469 5.938803195953369 9.86301040649414 3.592435598373413 +// -9.065779685974121 1.2837753295898438 10.126516342163086 -6.420638561248779 +// -1.7892123460769653 -2.8451123237609863 19.682052612304688 6.55640983581543 +// -3.6867892742156982 -1.8386977910995483 -11.524961471557617 17.23748207092285 +// -5.344569206237793 +// -0.0024692160077393055 17.894685745239258 6.870394706726074 +// -8.054535865783691 0.035066377371549606 1.2641758918762207 +// -9.81753921508789 4.304590225219727 2.058621644973755 10.629647254943848 3.9165399074554443 +// -13.468846321105957 -2.592216730117798 6.461759090423584 +// -4.905287742614746 1.3543055057525635 -0.474759042263031 8.39169979095459 +// -0.2162700891494751 8.143768310546875 5.875127792358398 0.49204394221305847 +// -5.398499011993408 3.885388135910034 -6.610076904296875 +// -10.892267227172852 10.85425853729248 10.500268936157227 -16.093162536621094 +// -6.481370449066162 +// -20.65450668334961 5.4274582862854 5.681708335876465 9.984310150146484 1.644524097442627 +// 9.840585708618164 -4.75764799118042 -1.1609230041503906 1.4974828958511353 +// -10.27991771697998 9.97791576385498 17.08061981201172 -6.503290176391602 +// -1.8807722330093384 -5.603089809417725 8.98924446105957 -3.3639402389526367 +// -9.368432998657227 14.818509101867676 2.1773767471313477 9.729779243469238 8.427007675170898 +// 2.9355156421661377 6.410983562469482 9.653772354125977 +// -6.272059917449951 12.012269020080566 9.2678804397583 4.558263301849365 +// -15.213569641113281 2.3213107585906982 6.51602840423584 10.64917278289795 +// -5.551946640014648 4.472320079803467 +// -10.33375358581543 10.800912857055664 5.963070392608643 -4.978922367095947 +// 0.49283090233802795 -1.6278334856033325 -7.824270248413086 5.560781955718994 +// -6.629968166351318 -2.581714153289795 -0.17600899934768677 8.085311889648438 +// -0.47165390849113464 4.902296543121338 -6.04342794418335 +// -0.5224165320396423 6.845353126525879 0.1504126638174057 +// -10.96032428741455 2.276571750640869 -0.6383455991744995 9.7783784866333 +// -0.6236666440963745 6.840326309204102 -13.352001190185547 -0.4165743291378021 +// -4.6185503005981445 +// -19.409183502197266 9.48813247680664 16.377769470214844 4.300019264221191 6.119117736816406 +// -16.187744140625 -6.959103584289551 -9.455612182617188 0.07956820726394653 +// -12.01416015625 -4.585057258605957 -0.48588335514068604 +// -3.2953243255615234 4.414947509765625 6.48346471786499 1.6056095361709595 +// -3.0262792110443115 -9.425549507141113 +// -9.380839347839355 2.1509695053100586 4.346765995025635 +// 0.45250755548477173 2.021623134613037 4.413746356964111 -10.16433048248291 +// -10.057226181030273 10.543536186218262 19.983673095703125 14.884520530700684 +// 0.3309839963912964 -7.351935863494873 -10.11658000946045 -9.108613967895508 +// -3.006744623184204 2.870037317276001 2.9900503158569336 +// -15.213146209716797 12.569416046142578 -5.731128692626953 -11.151590347290039 +// -3.46170711517334 13.269410133361816 8.161849975585938 -5.742421627044678 +// -1.6719238758087158 2.0491671562194824 -1.7709934711456299 -8.2142915725708 +// -15.24860954284668 8.236321449279785 -11.106377601623535 +// -5.241451263427734 4.563608169555664 9.159205436706543 +// -5.8733906745910645 7.328134059906006 0.02957635000348091 2.6338839530944824 +// -4.133057117462158 -16.563594818115234 +// -14.5635986328125 2.6866462230682373 3.143376588821411 +// -7.093965530395508 3.7135770320892334 -5.359997272491455 -5.150090217590332 +// -13.001227378845215 6.174983501434326 2.688217878341675 5.897258281707764 +// -6.2915191650390625 -16.804967880249023 5.786776065826416 -8.819146156311035 +// -2.976647138595581 -2.805063486099243 14.984406471252441 6.193500995635986 +// -3.4393887519836426 12.09927749633789 -3.9989209175109863 -9.27756404876709 +// -1.6458874940872192 4.988702297210693 -13.166611671447754 +// -4.445652008056641 7.273813247680664 4.157344341278076 0.595571756362915 +// -2.1030819416046143 8.591848373413086 11.450434684753418 7.181336879730225 3.8130135536193848 +// -1.7014511823654175 1.4387729167938232 -11.1236572265625 +// -3.3265669345855713 14.22244644165039 4.340811729431152 +// -11.756305694580078 5.507383346557617 -3.56463623046875 -2.3553614616394043 +// -1.2815908193588257 0.7300329804420471 +// -1.6082764863967896 8.76028060913086 2.500237226486206 5.023299694061279 +// -1.8848148584365845 11.350154876708984 1.029537558555603 8.620311737060547 4.737729549407959 +// -4.1638875007629395 1.5669277906417847 6.675434112548828 -2.213671922683716 +// -8.395586013793945 5.868319034576416 +// -10.113080024719238 1.9061033725738525 7.065576553344727 8.261222839355469 +// -1.8278027772903442 9.0042142868042 0.5831409692764282 +// -4.0869598388671875 5.342925548553467 -4.126453876495361 -0.04137640818953514 +// 0.13283340632915497 -1.0996252298355103 +// 0.2729988396167755 3.3108017444610596 7.212845802307129 8.442402839660645 8.30514907836914 +// -15.618705749511719 -7.566464900970459 7.341054439544678 +// 0.39463403820991516 3.1500918865203857 8.280325889587402 8.988618850708008 +// -6.774874687194824 2.877607583999634 -4.521361351013184 -4.7260894775390625 +// -11.574152946472168 9.776679992675781 6.666217803955078 1.9853699207305908 +// -5.768065452575684 2.6799449920654297 -4.037202835083008 -6.20740270614624 +// -6.6280999183654785 -1.6683540344238281 -0.4388960599899292 +// -12.516106605529785 11.69995403289795 +// -6.8697829246521 9.07051944732666 5.064570426940918 2.8049960136413574 5.848822116851807 +// -9.073539733886719 2.3836989402770996 +// -8.906411170959473 3.698399543762207 8.219569206237793 -8.81479263305664 +// -5.92777156829834 2.2131471633911133 19.035114288330078 4.0993876457214355 +// -5.883368015289307 -15.006559371948242 -4.391226768493652 -2.8505802154541016 +// -9.151665687561035 3.141947031021118 -4.532556056976318 +// -4.392071723937988 1.8333590030670166 2.065217971801758 -2.9567296504974365 +// -13.584236145019531 10.345752716064453 2.6830894947052 4.1824445724487305 15.675909996032715 +// 7.943312168121338 -2.549464464187622 2.521782159805298 +// -0.982742428779602 2.1227290630340576 1.8956254720687866 -2.389723300933838 +// -0.13222883641719818 13.389007568359375 -12.937386512756348 6.778970718383789 +// -5.663548469543457 4.516132831573486 +// 0.5555030107498169 6.795156478881836 7.391808986663818 7.251341342926025 15.823704719543457 +// -21.008649826049805 4.760257720947266 21.24192237854004 -1.532794713973999 +// 0.6009976267814636 13.327075958251953 -2.2663497924804688 -5.092324733734131 +// -19.692846298217773 15.467951774597168 10.495904922485352 +// 14.427215576171875 11.811256408691406 5.888064384460449 6.746593475341797 +// -3.7392373085021973 9.08282470703125 8.118816375732422 29.121450424194336 14.404788970947266 +// -22.417760848999023 2.3038158416748047 +// -8.025578498840332 8.007214546203613 3.9771463871002197 7.035442352294922 1.4011547565460205 +// -0.2722735106945038 -7.634922504425049 3.883608818054199 +// -19.790550231933594 10.238710403442383 2.704582929611206 -3.118380308151245 +// -8.319427490234375 -8.369158744812012 -10.81025218963623 8.425626754760742 +// -3.017096757888794 3.5093302726745605 +// -0.40117940306663513 11.254096031188965 9.517434120178223 2.8444201946258545 +// -15.045680046081543 -11.05809211730957 4.869935512542725 -10.315857887268066 +// -6.785337448120117 -10.734265327453613 13.691473960876465 +// -0.8934913277626038 21.82863426208496 9.816410064697266 1.3493626117706299 1.8975858688354492 +// -14.001862525939941 6.26967191696167 7.7532057762146 -3.647683620452881 +// -4.174703598022461 -2.4310457706451416 -6.2988200187683105 5.80596399307251 +// -23.31492805480957 1.886654019355774 -18.42588233947754 -5.13766622543335 +// -3.00419545173645 -0.5820739269256592 -9.741905212402344 -11.100954055786133 +// -4.690460205078125 -8.306869506835938 11.262397766113281 +// 11.366764068603516 9.733184814453125 8.322413444519043 -3.722198486328125 +// -0.37259307503700256 -7.22667121887207 -1.4027947187423706 1.0039114952087402 +// -7.19062614440918 -7.976106643676758 +// -3.874436378479004 19.718515396118164 27.903566360473633 5.542191982269287 +// -21.032302856445312 5.542274475097656 -4.252486228942871 0.17721764743328094 +// -19.546451568603516 -3.8084518909454346 +// -14.529322624206543 9.719813346862793 5.233489513397217 17.00493621826172 +// -7.34080171585083 -1.7496540546417236 2.58921480178833 -11.884955406188965 +// -26.670612335205078 +// 0.09223438799381256 20.362903594970703 9.248385429382324 3.8144211769104004 17.878496170043945 +// 2.1793277263641357 -24.51080322265625 9.89456844329834 +// -7.904792785644531 4.278400897979736 -8.892155647277832 -13.135971069335938 +// -9.576301574707031 -11.496162414550781 -10.502490997314453 8.28445053100586 +// -9.114089965820312 -1.3077733516693115 -9.577717781066895 9.845220565795898 +// -0.39452266693115234 6.052164554595947 -3.697483539581299 +// -13.374067306518555 1.679503321647644 -0.3790697753429413 4.748705863952637 +// -4.040435314178467 +// -0.8645550012588501 2.6623117923736572 4.882899284362793 7.498988628387451 8.280974388122559 +// 0.5689472556114197 -8.752588272094727 -4.111666679382324 5.894039630889893 +// -9.514673233032227 1.7302145957946777 -11.940650939941406 -1.0697846412658691 +// -3.0827219486236572 2.6907715797424316 +// -1.1635912656784058 4.3441925048828125 12.290740966796875 6.063971042633057 2.831536054611206 +// -21.489280700683594 9.312154769897461 9.714049339294434 -12.441829681396484 +// -10.373546600341797 8.930006980895996 -0.6511299014091492 -2.9852776527404785 +// -5.871557712554932 -12.967126846313477 2.347832202911377 +// 0.9948010444641113 16.14263153076172 +// -14.471957206726074 13.358586311340332 4.881545066833496 5.526705265045166 +// -1.2447891235351562 1.2857519388198853 2.502610921859741 2.8898401260375977 9.628443717956543 +// 3.519803524017334 -13.037863731384277 0.4704643487930298 0.3708680272102356 +// -10.118958473205566 -14.741499900817871 6.495366096496582 -5.89380407333374 +// -12.838411331176758 8.199052810668945 -11.428468704223633 8.505620002746582 +// -6.432051181793213 -1.1680042743682861 8.878164291381836 6.205733776092529 +// -0.6055299639701843 6.793095588684082 -3.596259593963623 6.796569347381592 +// -12.018437385559082 3.29687762260437 2.563215732574463 -8.630154609680176 +// -7.315617561340332 9.329917907714844 -6.388575553894043 +// -5.198280334472656 11.589553833007812 -2.2638959884643555 +// -0.13519462943077087 0.4917530119419098 4.705538272857666 4.124689102172852 +// -3.5990002155303955 -8.977834701538086 3.5237300395965576 4.588141441345215 +// -2.9298670291900635 0.18537399172782898 3.5815963745117188 -2.917590856552124 +// -9.410831451416016 -1.814931035041809 11.170940399169922 9.822408676147461 +// 0.026451334357261658 13.600886344909668 -6.857945919036865 29.06580924987793 +// -13.482257843017578 -5.515099048614502 -4.768826484680176 -2.7347772121429443 +// -14.32386589050293 -10.726480484008789 0.019992081448435783 +// -0.32458075881004333 8.524262428283691 1.1270368099212646 4.144115447998047 +// 0.5654461979866028 -8.385602951049805 11.560572624206543 14.845975875854492 +// -3.1377129554748535 -20.702428817749023 -6.979794979095459 +// -0.12731051445007324 14.903939247131348 2.9769062995910645 16.93211555480957 3.7082226276397705 +// -6.953290939331055 -10.212549209594727 -6.312258720397949 9.80911922454834 +// -4.486555576324463 2.440397024154663 -2.4736859798431396 5.25339937210083 +// -2.007469415664673 -5.7202253341674805 3.7105507850646973 1.9995365142822266 +// -11.204795837402344 -1.0827553272247314 1.668624758720398 26.446331024169922 +// -12.43915843963623 -8.000619888305664 -8.8482084274292 -3.880427598953247 +// 3.966559410095215 -3.2312159538269043 -8.304154396057129 +// 0.5834704637527466 12.188385963439941 8.123699188232422 +// -3.209493398666382 4.098244667053223 -3.494534730911255 -6.159266948699951 +// 0.47440198063850403 -5.409665584564209 +// -7.461204528808594 3.7848100662231445 9.639272689819336 2.7310290336608887 2.366919994354248 +// 3.896744728088379 -0.3327174484729767 0.04279973357915878 16.40400505065918 +// -0.19327910244464874 14.012008666992188 -8.237069129943848 4.360781192779541 +// -4.030467987060547 -4.47556209564209 -5.2389068603515625 +// -1.8271082639694214 1.9600852727890015 7.16826057434082 11.64030933380127 +// -1.3774770498275757 1.720563292503357 1.1710096597671509 3.6583330631256104 +// -1.2431812286376953 3.226578712463379 1.7068126201629639 4.459765434265137 +// -8.593925476074219 6.620105743408203 8.165875434875488 8.091726303100586 +// -7.879167079925537 2.095405101776123 -2.5593912601470947 1.74199378490448 +// 0.6477890610694885 11.890462875366211 +// -7.787022113800049 13.78384017944336 6.896214962005615 -8.638884544372559 +// -2.9867420196533203 0.10796332359313965 -5.2909626960754395 +// -2.7282814979553223 4.953437328338623 13.800337791442871 -1.4193826913833618 +// -8.235014915466309 -9.081402778625488 -9.129081726074219 -0.7751436829566956 +// -0.9124259352684021 -14.525330543518066 3.64284610748291 8.13100814819336 +// -1.478977084159851 2.0899136066436768 -6.227657318115234 2.096949577331543 +// -4.674625396728516 3.520704984664917 +// -3.14204740524292 1.369882345199585 14.394343376159668 2.613807439804077 8.315918922424316 +// 2.2847604751586914 8.714890480041504 6.903176784515381 9.431775093078613 +// -1.7965455055236816 4.2572503089904785 4.719305992126465 2.357719659805298 +// -3.2325243949890137 -4.558008670806885 -3.819528818130493 -3.5797462463378906 +// -4.519348621368408 -15.640982627868652 -0.14609785377979279 +// -0.26557856798171997 9.29041576385498 7.244541168212891 14.472688674926758 +// -2.5625834465026855 -0.3328850269317627 -7.811753273010254 +// -8.612120628356934 5.642822265625 2.306018590927124 -14.586967468261719 +// -7.826836109161377 7.239302635192871 0.31110820174217224 +// -9.642389297485352 8.76411247253418 2.8557333946228027 10.9644193649292 5.007740497589111 +// -1.169277310371399 -11.212552070617676 13.47696304321289 -22.674802780151367 +// -7.810286998748779 8.453489303588867 +// -8.40573787689209 8.440719604492188 3.351811647415161 0.020530667155981064 +// -5.718313217163086 -12.06514835357666 5.983323574066162 2.678283929824829 +// 0.5465312004089355 6.521476745605469 2.3419981002807617 3.389577627182007 1.67629873752594 +// 6.307833194732666 4.089428424835205 -12.806499481201172 +// -17.14510726928711 9.530257225036621 2.2950291633605957 -5.669565677642822 +// -4.100186824798584 -9.799355506896973 1.045391321182251 -9.322200775146484 +// -5.322117328643799 3.5783534049987793 -0.8970090746879578 -3.330281972885132 +// 0.8901612758636475 8.616279602050781 3.2808902263641357 +// -15.624797821044922 12.330937385559082 9.205424308776855 -5.961795806884766 +// 0.5266350507736206 5.588174343109131 1.4776557683944702 +// -5.908840179443359 9.976448059082031 +// -14.82469654083252 4.01316499710083 6.462050914764404 16.562734603881836 +// -9.423491477966309 -1.2891223430633545 -6.169407367706299 -2.8728716373443604 +// 0.34143537282943726 0.4048919081687927 14.981903076171875 +// -7.492609977722168 3.461496353149414 11.511329650878906 -10.83496379852295 +// -0.49451112747192383 -8.32025146484375 -4.542418956756592 +// -11.60827350616455 29.825586318969727 +// -13.03898811340332 3.538546323776245 16.427593231201172 4.065929889678955 +// 0.03432084247469902 3.563678026199341 -1.2615430355072021 -7.012905597686768 +// -0.546218991279602 -12.866534233093262 -10.911601066589355 -4.076109409332275 +// 6.962949275970459 -4.894615650177002 15.6614351272583 +// -17.402206420898438 1.3148431777954102 +// -4.436232089996338 6.597280025482178 7.359386920928955 -4.872745037078857 +// 0.815402626991272 -11.17220687866211 5.006476879119873 1.5095590353012085 +// -1.6819512844085693 17.624170303344727 -4.889145374298096 7.199965953826904 +// -6.257529258728027 -3.1437649726867676 3.8935115337371826 +// -0.3930585980415344 3.328591823577881 -2.139366388320923 -8.160757064819336 +// -4.974475383758545 4.766386985778809 9.12169361114502 7.9152421951293945 +// -3.7495193481445312 0.9875780344009399 3.6475799083709717 -0.8882042765617371 +// -3.4233486652374268 -9.604687690734863 1.4180082082748413 -5.170477867126465 +// -2.6809184551239014 -5.005073070526123 -9.168031692504883 3.770643949508667 +// -10.097538948059082 2.2220709323883057 +// -7.488456726074219 6.593824863433838 8.099786758422852 +// -11.27900218963623 7.323569297790527 -2.668628692626953 +// -7.371681213378906 1.4247418642044067 4.110382080078125 +// -2.950706720352173 1.4087167978286743 9.06683349609375 2.8034613132476807 +// -14.35193920135498 -8.111190795898438 -11.019200325012207 1.0682590007781982 +// -7.627046585083008 -6.897031307220459 4.0545654296875 +// -5.44027042388916 4.998301029205322 +// -1.1910223960876465 9.214734077453613 10.603732109069824 4.831445693969727 3.129815101623535 +// -6.2300238609313965 -9.759594917297363 -6.55752420425415 +// -10.134115219116211 1.6769403219223022 4.718611240386963 -1.4850126504898071 +// -2.11443829536438 1.8292793035507202 -2.3425302505493164 1.65835440158844 +// -14.041085243225098 6.497512340545654 6.539832592010498 +// -1.799275517463684 12.96562671661377 8.304813385009766 8.156437873840332 6.186403274536133 +// 6.220439434051514 -0.21809260547161102 -11.385836601257324 -9.018274307250977 +// -2.9831900596618652 -4.38797664642334 5.0754218101501465 15.695028305053711 +// -13.229968070983887 5.14501428604126 24.577367782592773 +// -2.7746188640594482 3.067992925643921 +// -0.482361763715744 4.502765655517578 4.618757247924805 -7.708784103393555 +// -20.58025550842285 -2.0841658115386963 -6.496197700500488 9.377175331115723 +// -8.710556983947754 11.195198059082031 -5.696078777313232 +// -3.366642475128174 6.774875640869141 -4.893496036529541 +// -1.8892666101455688 1.0953658819198608 +// -20.2763614654541 7.728382110595703 2.551086187362671 +// -17.86978530883789 15.376132011413574 15.350708961486816 18.061677932739258 11.49657917022705 +// -5.474594593048096 1.3986952304840088 -18.651647567749023 +// 11.563226699829102 2.30489182472229 -2.318751811981201 0.1124105453491211 +// -0.5803577303886414 8.864012718200684 -12.73751449584961 -8.464686393737793 +// 0.9744372963905334 9.814682006835938 -0.057952895760536194 6.109059810638428 +// -7.045568466186523 -1.55613112449646 -1.3735560178756714 -2.649799346923828 +// -1.5412887334823608 -0.966008722782135 -13.083745002746582 +// -1.6047980785369873 -22.520427703857422 1.9360462427139282 -9.584795951843262 +// -5.806272506713867 1.1794782876968384 16.603906631469727 +// -8.881917953491211 11.301397323608398 3.575606107711792 4.401881694793701 3.1247918605804443 +// -5.850500583648682 -10.339035987854004 7.740407943725586 +// -0.8059835433959961 3.528770923614502 4.995475769042969 5.272424221038818 16.014734268188477 +// -16.83332061767578 -14.500751495361328 9.020526885986328 -0.6715865135192871 +// -11.310206413269043 12.361174583435059 7.348455429077148 -6.098852157592773 +// -3.4101438522338867 -6.7571210861206055 8.30488395690918 -2.9930591583251953 +// 0.2199222296476364 5.502073287963867 15.421149253845215 17.89006233215332 15.0814847946167 +// 7.737865924835205 3.33748197555542 -1.4383617639541626 -3.778151512145996 +// -2.8183484077453613 5.973786354064941 2.2987287044525146 4.067012310028076 +// -12.177814483642578 4.076381206512451 -1.4983707666397095 -20.025453567504883 +// -8.93197250366211 -1.6407101154327393 10.674955368041992 16.15059471130371 +// 0.22928684949874878 +// -6.0550384521484375 8.605299949645996 1.6718274354934692 4.798009872436523 +// -8.781848907470703 8.475062370300293 +// -5.2303571701049805 3.1608049869537354 10.61634635925293 +// -5.724330902099609 6.347158908843994 8.684712409973145 4.767080307006836 +// -5.358149528503418 2.935220241546631 -4.735471248626709 +// -9.31298828125 9.907757759094238 20.85792350769043 -6.842673301696777 +// -12.840770721435547 2.305582046508789 +// -11.447257041931152 4.642004489898682 16.48782730102539 4.261623859405518 +// -15.74544906616211 9.296391487121582 -6.820723056793213 +// -6.609175205230713 7.015484809875488 2.4687094688415527 -5.603578090667725 +// -8.050561904907227 12.855782508850098 -0.6048776507377625 +// -5.206228733062744 9.922736167907715 -6.772719860076904 0.07477419823408127 +// -10.960517883300781 1.946070909500122 8.73487377166748 +// -3.797530174255371 5.5231428146362305 2.025743007659912 14.014546394348145 3.0063321590423584 +// -5.225182056427002 0.6066656112670898 -4.3881120681762695 18.1513671875 +// -11.350909233093262 7.826422691345215 5.012114524841309 +// 3.395026922225952 12.305563926696777 8.454058647155762 -5.987898826599121 +// 0.1720818430185318 +// -16.174762725830078 2.3018977642059326 9.86143684387207 2.361088752746582 +// -10.687219619750977 3.2927355766296387 11.819869041442871 -9.765762329101562 +// -7.948986053466797 3.9750163555145264 2.2520906925201416 5.391153335571289 +// -10.774320602416992 8.031625747680664 +// -2.6851391792297363 14.666378021240234 9.000234603881836 +// -4.840511798858643 6.080521106719971 -8.912615776062012 0.29889193177223206 +// -3.5655734539031982 7.586162090301514 -1.438048005104065 +// -1.0716217756271362 4.557921886444092 -6.079180717468262 10.860587120056152 +// -13.195854187011719 7.680472373962402 -6.234539031982422 -14.59615421295166 +// -5.9938554763793945 -9.777910232543945 -10.738714218139648 +// -4.130874156951904 3.608691453933716 2.2879841327667236 +// -2.6706252098083496 20.11944580078125 -7.989423751831055 +// -0.6135365962982178 1.690326452255249 -9.35437297821045 -3.358675718307495 +// -6.234569549560547 1.0173258781433105 +// -22.158241271972656 14.553403854370117 3.57594633102417 +// -16.217132568359375 4.464096546173096 -3.7437655925750732 -10.44056510925293 +// -0.6619186401367188 +// -4.439096927642822 6.522528171539307 2.9098401069641113 5.755309581756592 +// 0.6044623255729675 10.28637981414795 3.503934144973755 -2.721113443374634 +// -8.87300968170166 -3.8901140689849854 -4.997933864593506 -4.470974445343018 +// -7.2496018409729 -8.671518325805664 9.664068222045898 +// -7.107723712921143 5.010807514190674 -0.46650785207748413 -5.5771002769470215 +// -1.1991193294525146 +// -10.662479400634766 3.578968048095703 9.807733535766602 2.073230743408203 4.04019021987915 +// 3.7995240688323975 -6.024919509887695 -10.383312225341797 +// -19.76038932800293 8.920632362365723 2.308852434158325 7.683146953582764 +// -3.321258783340454 19.51963233947754 0.3359520435333252 0.07537715137004852 +// -6.655508995056152 0.8353700637817383 12.935260772705078 0.625148594379425 +// -4.1152215003967285 -10.16801643371582 +// -13.478320121765137 2.840622663497925 6.171706199645996 2.5038645267486572 7.580059051513672 +// -13.016983985900879 9.245603561401367 +// -9.15064811706543 5.614873886108398 7.083525657653809 +// -10.389888763427734 1.5701375007629395 -8.768892288208008 -3.5208001136779785 +// -19.116146087646484 -11.762988090515137 8.730777740478516 +// -1.7016799449920654 2.7328474521636963 22.629789352416992 +// -0.22552919387817383 -12.157068252563477 7.163400650024414 7.539778232574463 +// -2.353710651397705 -2.6413357257843018 6.0104570388793945 6.134922027587891 +// -1.5039126873016357 8.641364097595215 -6.009774208068848 -2.0050723552703857 +// -0.4049946963787079 7.090786933898926 5.719460487365723 -0.4870227575302124 +// -3.0628907680511475 -0.3542864918708801 +// -3.983844518661499 2.9547619819641113 2.1698203086853027 6.08561372756958 +// -8.38715648651123 -3.2767508029937744 9.600105285644531 -6.093389987945557 +// -14.05119800567627 0.12736466526985168 +// -5.386519908905029 7.8542280197143555 5.2916646003723145 6.346393585205078 12.453329086303711 +// -11.573314666748047 4.14835786819458 -4.756081581115723 +// -13.120094299316406 10.361706733703613 1.5373069047927856 12.872706413269043 17.624162673950195 +// -5.022162914276123 14.990571975708008 1.2706282138824463 9.486953735351562 +// -4.724221229553223 -6.023561954498291 -5.538245677947998 -7.370660305023193 +// -5.8759989738464355 -6.445876598358154 4.114414215087891 1.8467150926589966 +// -2.3479714393615723 -5.372184753417969 -6.955708026885986 5.637592315673828 +// -8.441304206848145 12.325304985046387 3.7531440258026123 -12.04560661315918 +// -4.153280258178711 +// -5.367144584655762 5.861128330230713 1.9276247024536133 12.862776756286621 6.218588829040527 +// -5.271852493286133 6.584217071533203 8.319662094116211 10.702532768249512 +// -7.090851783752441 1.8680071830749512 10.555582046508789 -0.6182754039764404 +// -3.039781332015991 -7.078604698181152 +// -6.946985721588135 7.838144779205322 10.132203102111816 4.764463901519775 4.2052202224731445 +// 1.2700722217559814 -4.595433235168457 0.8991386294364929 1.1939144134521484 +// -11.851289749145508 10.802817344665527 4.627893924713135 10.155669212341309 8.157639503479004 +// -18.08329200744629 12.677201271057129 13.7100830078125 14.874162673950195 +// -5.676821231842041 -12.397866249084473 +// -0.5233349204063416 5.0233354568481445 1.610676646232605 1.230608582496643 7.465721607208252 +// -1.666748285293579 -2.0967001914978027 -5.050553798675537 -5.021032810211182 +// -11.92582893371582 9.742949485778809 13.299778938293457 -2.8214869499206543 +// -1.5716146230697632 -2.2011642456054688 -6.723100185394287 +// -0.011796188540756702 1.5096359252929688 0.3036114275455475 +// -15.73005199432373 -2.3528501987457275 8.67321491241455 1.126125693321228 +// -17.38249969482422 16.677989959716797 4.752905368804932 +// -1.0955493450164795 8.036911964416504 -1.59903085231781 -3.8921663761138916 +// -0.5295331478118896 -6.179232120513916 15.206435203552246 -12.002275466918945 +// -15.062652587890625 -13.509542465209961 0.725020170211792 +// -6.4937310218811035 10.748933792114258 -4.354569911956787 -9.625999450683594 +// -3.408710241317749 11.731677055358887 15.278752326965332 12.262007713317871 11.335495948791504 +// 2.8955776691436768 8.644278526306152 -7.891582489013672 +// -6.829174995422363 9.23934555053711 -15.104125022888184 +// -6.036792278289795 9.741040229797363 3.179896831512451 2.59596848487854 +// -14.320379257202148 5.129148960113525 10.625213623046875 5.0533037185668945 10.051292419433594 +// 7.131657123565674 6.973649024963379 10.508575439453125 -3.1258344650268555 +// -5.421384811401367 -8.533876419067383 -7.030867576599121 +// 0.9462775588035583 5.997912883758545 +// -2.5124471187591553 4.456842422485352 14.075057983398438 +// -9.27157974243164 6.524726390838623 -11.133328437805176 -0.7158725261688232 +// -6.628809928894043 4.157626152038574 -12.861698150634766 -11.109046936035156 +// -21.715164184570312 23.785781860351562 4.666400909423828 +// -14.252949714660645 7.452017784118652 3.2636547088623047 3.675408363342285 5.245914459228516 +// 7.985970973968506 19.014795303344727 +// -10.844380378723145 3.389469861984253 4.158029556274414 +// -1.7536760568618774 12.480230331420898 +// -2.116142988204956 1.8113969564437866 7.686175346374512 +// -1.5222735404968262 6.712859630584717 -3.866057872772217 0.1345645636320114 +// -14.723422050476074 4.181473255157471 +// -13.684523582458496 2.3988053798675537 5.0829362869262695 +// -6.965360164642334 2.6714260578155518 -4.498085975646973 7.006965637207031 +// 0.020953359082341194 3.414700984954834 +// -2.0696823596954346 4.2802228927612305 4.676353931427002 -9.398832321166992 +// -8.970643043518066 -6.9869914054870605 -12.671897888183594 -12.67465877532959 +// -10.703779220581055 3.143209457397461 5.309350967407227 +// -0.008368137292563915 4.63170862197876 16.131406784057617 -6.067134857177734 +// -5.472538948059082 6.247232913970947 -1.3951252698898315 5.402195930480957 +// -2.2609546184539795 7.960586071014404 +// -13.502350807189941 1.0434510707855225 8.630492210388184 +// -16.5361270904541 5.940912246704102 -0.7655337452888489 +// -9.181610107421875 9.435822486877441 6.886026382446289 2.364842653274536 3.731212854385376 +// -15.030670166015625 6.781324863433838 +// -0.27127355337142944 7.998153209686279 8.569647789001465 0.4732140600681305 +// -7.237933158874512 -9.586551666259766 -1.741436243057251 -7.1558308601379395 +// -4.573575973510742 11.92184829711914 -8.333047866821289 +// -1.9854328632354736 2.6165518760681152 3.2873148918151855 12.89245891571045 1.6466360092163086 +// 10.114819526672363 7.183221817016602 1.6711069345474243 +// 0.12802225351333618 4.668798446655273 14.350990295410156 -3.401054620742798 +// -6.284412384033203 -0.0983860045671463 15.254589080810547 +// -2.6823666095733643 4.455214977264404 11.945878028869629 +// -12.661056518554688 9.421239852905273 0.5431851744651794 +// -1.7557921409606934 3.678004026412964 16.441884994506836 1.2895443439483643 9.745079040527344 +// 16.206523895263672 10.188202857971191 -6.639554023742676 6.37754487991333 +// -6.307397842407227 -4.736538887023926 4.595016002655029 -1.3360352516174316 +// -6.993485450744629 -10.851640701293945 +// -4.425931930541992 8.564926147460938 1.9736558198928833 -18.41973114013672 +// -2.183619737625122 -2.539626121520996 4.3802313804626465 6.488394737243652 +// -8.347203254699707 5.369069576263428 -7.9251909255981445 -0.9496180415153503 +// -8.18278694152832 0.6408026218414307 -10.516518592834473 -0.5197873711585999 +// -6.558237075805664 -12.032569885253906 15.42269515991211 +// -10.733139038085938 6.438687324523926 2.0326430797576904 5.4078521728515625 16.15839958190918 +// 7.197690010070801 -4.612906455993652 2.7255663871765137 10.557184219360352 +// -4.771166801452637 4.995174407958984 -11.582770347595215 +// -6.076571464538574 6.949567794799805 -3.132355213165283 +// 3.8218061923980713 9.027634620666504 9.155591011047363 -2.3799777030944824 +// -2.106649875640869 -6.675368785858154 -1.8293126821517944 +// -9.89560604095459 3.060460090637207 1.7741539478302002 1.4649964570999146 +// -6.0612993240356445 1.6843760013580322 3.4732134342193604 +// -17.649280548095703 7.109152317047119 -7.247694969177246 +// -7.791540622711182 13.707841873168945 -2.6899144649505615 +// -2.5819690227508545 3.074244737625122 2.963514566421509 9.385930061340332 +// -1.8090746402740479 -8.342344284057617 2.8078320026397705 -15.442839622497559 +// -2.181579113006592 2.14520525932312 8.300647735595703 6.764115333557129 +// -4.462652683258057 7.836824893951416 -0.8160096406936646 -0.5796138048171997 +// -10.572044372558594 -4.947361946105957 -4.6620588302612305 +// -3.286424160003662 12.49542236328125 3.416508197784424 4.936712265014648 +// -8.697412490844727 -0.4751603901386261 6.419492244720459 +// -3.6244287490844727 5.933838367462158 -2.2406837940216064 -9.366111755371094 +// -6.494039535522461 5.864174842834473 -10.87582778930664 -9.42586612701416 +// -11.775144577026367 +// -0.3268789052963257 10.846882820129395 9.25810432434082 6.529956340789795 9.743593215942383 +// 0.24155648052692413 6.928826808929443 -1.7390228509902954 -0.9058242440223694 +// -25.975543975830078 -1.7801270484924316 -8.691357612609863 -4.620146751403809 +// -3.5231642723083496 5.051545143127441 14.275057792663574 -6.061981678009033 +// -3.2234294414520264 4.160076141357422 -8.66686725616455 +// -2.345179557800293 1.0171767473220825 6.630860805511475 -7.483597755432129 +// -1.8481358289718628 4.063186168670654 -5.281111240386963 +// -2.060821056365967 1.3475964069366455 -10.920376777648926 +// -5.900390148162842 3.494112491607666 +// -5.1699442863464355 5.544863700866699 2.146766424179077 -17.052505493164062 +// -13.706707954406738 9.016765594482422 -15.352935791015625 -3.291585922241211 +// 0.5796782374382019 3.8924849033355713 8.152175903320312 -7.572707653045654 +// -3.0087053775787354 11.856781005859375 4.122622489929199 +// -7.327236652374268 11.14694595336914 20.925643920898438 -18.643590927124023 +// -5.274773597717285 -12.947684288024902 14.624832153320312 11.093505859375 +// -11.159135818481445 11.723443984985352 -1.8221526145935059 1.5339633226394653 +// -1.3503460884094238 -9.10948657989502 5.548985958099365 11.169047355651855 +// -2.9415040016174316 13.190459251403809 -1.8232722282409668 -7.416805267333984 +// -6.379117965698242 +// -1.2455757856369019 12.07164478302002 1.498626947402954 1.368583083152771 1.932105302810669 +// -2.122168779373169 9.332647323608398 -3.1613166332244873 16.324199676513672 +// -6.020806789398193 -4.912302494049072 -1.608008861541748 +// -8.192185401916504 2.7495079040527344 -1.813119649887085 -8.030272483825684 +// -6.4356231689453125 -1.8509774208068848 10.895407676696777 -11.20695972442627 +// -8.413552284240723 5.406784534454346 -6.547200679779053 -17.72745704650879 +// -3.3051979541778564 4.961491107940674 15.990411758422852 7.668653964996338 4.713759422302246 +// -18.73881721496582 14.568592071533203 5.190298557281494 -10.406686782836914 +// -11.706107139587402 6.886292457580566 12.919108390808105 -1.0910754203796387 +// -5.444389343261719 -21.162586212158203 -10.815556526184082 3.648247480392456 +// -0.44721367955207825 12.694448471069336 -6.941102027893066 -5.212576866149902 +// -11.909544944763184 9.900463104248047 -8.724736213684082 2.8482906818389893 +// -10.969935417175293 11.83903694152832 -14.662121772766113 +// -8.491161346435547 10.101635932922363 -11.935595512390137 -7.391687393188477 +// -3.478355646133423 -8.35798168182373 -14.57799243927002 +// -9.226703643798828 11.865918159484863 7.719313621520996 +// -1.8909980058670044 4.039872646331787 5.785806179046631 5.501552104949951 21.34307861328125 +// 3.361323833465576 -2.180321455001831 1.0895512104034424 8.096814155578613 +// -6.216460704803467 -4.986133098602295 +// -4.69838809967041 8.625194549560547 4.310838222503662 1.228373408317566 +// -0.9411949515342712 -9.320016860961914 4.325502872467041 -2.5022997856140137 +// -18.400266647338867 7.6016035079956055 -5.6101975440979 -2.2557833194732666 +// -2.7394423484802246 -2.149526834487915 12.957132339477539 -3.6358494758605957 +// -17.692811965942383 2.48640513420105 -4.9123945236206055 10.98973274230957 +// -8.070551872253418 -9.17950439453125 -6.728586196899414 2.453434705734253 +// -0.14319396018981934 3.9036431312561035 1.6729609966278076 +// -15.789868354797363 8.274964332580566 -9.210559844970703 +// -9.639187812805176 3.426530122756958 6.006391525268555 2.828077793121338 15.247836112976074 +// 6.873055934906006 3.525905132293701 9.101799964904785 12.080410957336426 +// -7.841492176055908 3.8204357624053955 7.365913391113281 -11.53715991973877 +// -1.5757664442062378 -8.465827941894531 4.947660446166992 -7.921116828918457 +// -6.264918327331543 3.3712871074676514 10.484766960144043 11.089223861694336 6.86338472366333 +// -1.037876844406128 4.010471820831299 -1.9496623277664185 -3.597424030303955 +// -2.7158336639404297 4.666374683380127 9.84481430053711 8.677343368530273 +// -5.792669296264648 0.00746576301753521 -5.607421875 -4.201071739196777 +// -4.256827354431152 10.503602981567383 -7.080613136291504 -7.973949432373047 +// -16.187528610229492 2.5988993644714355 8.495391845703125 4.425718784332275 +// -9.948502540588379 -2.5914669036865234 1.0875486135482788 +// 0.4859829843044281 1.2760975360870361 5.750171184539795 -5.025991439819336 +// -0.6547810435295105 12.940160751342773 7.383604049682617 1.074874758720398 16.45226287841797 +// -4.783065319061279 14.44487476348877 -10.016350746154785 3.242748975753784 +// -15.197258949279785 10.43803596496582 2.280905246734619 +// 0.9416308403015137 5.087991237640381 7.328230857849121 -6.097739219665527 +// -15.229413032531738 -3.0775437355041504 1.5076615810394287 +// -2.496103048324585 2.8031530380249023 -13.457756042480469 +// 0.04225732386112213 2.398613929748535 -10.114145278930664 11.421232223510742 +// -2.4390151500701904 2.530880928039551 +// -3.5522358417510986 15.002342224121094 16.86672019958496 0.43392929434776306 +// 0.8950067758560181 1.216833472251892 -15.229450225830078 +// -7.837189674377441 15.567963600158691 -7.042642116546631 8.235724449157715 +// -3.7194323539733887 -3.400454521179199 22.97948455810547 +// -4.9724273681640625 4.7879638671875 -12.50806999206543 +// 6.421819686889648 12.505922317504883 1.9669877290725708 +// -4.934900283813477 12.131202697753906 16.003393173217773 3.2924368381500244 +// -8.114803314208984 -9.474943161010742 -3.9830374717712402 +// -4.033327102661133 7.549872398376465 -6.790332317352295 +// -0.6482192277908325 11.997836112976074 -2.01418399810791 15.516609191894531 +// -4.456772327423096 10.661839485168457 +// -16.817420959472656 7.384524822235107 13.864009857177734 1.5368496179580688 3.039639949798584 +// 1.4375571012496948 -5.018438339233398 -6.346494674682617 -4.2593994140625 +// -5.7628889083862305 -16.08426856994629 13.372862815856934 -2.785898208618164 +// -4.095130920410156 -6.284553527832031 3.4413232803344727 9.021126747131348 +// -3.4004931449890137 -7.801784515380859 -8.156192779541016 9.178506851196289 +// -0.2100714147090912 -1.726369857788086 3.3228139877319336 +// -9.554570198059082 8.059290885925293 0.9207153916358948 1.3794050216674805 +// -0.8304046988487244 0.6847634315490723 5.957700252532959 -3.086256980895996 +// -6.819620609283447 11.661745071411133 7.283907890319824 -8.7205810546875 +// 0.7068771719932556 +// -9.385627746582031 8.348342895507812 2.5223963260650635 1.2641245126724243 +// -4.337778568267822 7.813403129577637 -2.1310884952545166 -15.139503479003906 +// -8.564021110534668 -7.651559352874756 +// -11.330644607543945 16.44891929626465 6.93631649017334 8.354147911071777 2.614607572555542 +// -13.875229835510254 4.115906238555908 3.9991238117218018 -1.1753253936767578 +// -10.625080108642578 0.5368465185165405 18.755443572998047 -6.194941520690918 +// -5.385499000549316 -5.1432785987854 13.470488548278809 +// -6.247763633728027 6.127957820892334 +// -2.475963830947876 1.485863208770752 5.158871650695801 -3.3300373554229736 +// -7.378890037536621 -1.5466831922531128 +// -1.9510549306869507 5.550150394439697 7.233634948730469 3.5681841373443604 +// 0.2048836648464203 1.8506789207458496 -2.707564115524292 -11.975400924682617 +// -5.291383743286133 13.417778968811035 -8.195241928100586 7.081418037414551 +// -4.085082054138184 3.5349621772766113 7.815924167633057 11.993806838989258 6.421626091003418 +// 1.59209144115448 -9.558927536010742 0.5461710691452026 -9.301987648010254 +// -3.4933884143829346 -0.5433138608932495 -1.3287410736083984 +// -6.90985107421875 5.229005336761475 -0.10771209001541138 +// -4.94932222366333 8.23998737335205 8.405969619750977 5.2770609855651855 11.46510124206543 +// -0.2095733880996704 -3.0175974369049072 -10.174503326416016 8.074714660644531 +// -7.668879508972168 11.304335594177246 +// 3.2514309883117676 4.8319501876831055 5.243115425109863 +// -10.395596504211426 7.302752494812012 -3.2699413299560547 +// -9.126737594604492 2.82184100151062 3.225820302963257 -14.462604522705078 +// -3.583807945251465 12.007037162780762 6.490351676940918 -5.178691387176514 +// -0.3453766107559204 11.096542358398438 +// -6.374006748199463 10.20419692993164 3.506849527359009 4.168046474456787 +// -8.27763557434082 +// -10.00698471069336 6.722926616668701 12.194268226623535 10.558557510375977 +// -7.7866973876953125 5.128302097320557 14.400273323059082 +// -7.650332450866699 2.8274004459381104 -9.098483085632324 5.282878875732422 +// -9.07206916809082 10.141942024230957 -3.9052350521087646 +// -10.28547191619873 9.558453559875488 -23.665292739868164 +// -6.744711399078369 6.339722156524658 6.838140964508057 -5.517945289611816 +// 0.18433989584445953 -2.054042100906372 4.26969051361084 +// -11.86415958404541 9.65621280670166 12.280448913574219 4.698598384857178 3.6758153438568115 +// 7.38823938369751 8.64637565612793 8.479456901550293 -16.583459854125977 +// 0.30069464445114136 -0.010453577153384686 +// -12.040374755859375 1.2230013608932495 9.767621040344238 3.0047922134399414 +// -7.073182106018066 -8.442606925964355 12.501042366027832 -0.16120493412017822 +// -0.03959782049059868 13.475613594055176 8.915536880493164 0.5750505328178406 +// -5.05373477935791 7.187431812286377 7.906002044677734 -12.739147186279297 +// -14.236163139343262 -5.783409595489502 +// 0.8744478821754456 8.253998756408691 6.520270347595215 -1.1138715744018555 +// -3.7879719734191895 -6.791111469268799 -1.8592286109924316 +// -4.4538469314575195 -4.287967681884766 1.4713613986968994 +// -0.17342859506607056 -6.563363552093506 5.753604412078857 -6.399802207946777 +// -12.680143356323242 -6.361049652099609 -1.3309029340744019 +// -2.2329418659210205 -2.5207722187042236 +// -4.877894401550293 6.84808349609375 9.32288646697998 2.679044485092163 +// -5.703639030456543 -2.3966503143310547 -0.4201260507106781 +// -7.443888187408447 12.25471305847168 +// -9.547002792358398 1.1076059341430664 12.445928573608398 2.0523431301116943 2.487851858139038 +// -10.55505084991455 11.827630043029785 10.926271438598633 -15.818343162536621 +// -5.029910087585449 -11.721412658691406 -14.439878463745117 +// -7.0235819816589355 2.9750704765319824 +// -0.5946527123451233 6.0948567390441895 5.451202869415283 24.833511352539062 +// 0.2415645867586136 -1.684464931488037 1.9463902711868286 +// -8.972929000854492 3.8305983543395996 +// -5.05798864364624 17.176837921142578 14.261697769165039 +// 3.9295437335968018 9.56494140625 -5.44002103805542 +// -0.3872394561767578 12.506522178649902 -11.715208053588867 +// -1.8559895753860474 4.851293563842773 11.033207893371582 2.23293137550354 15.01909065246582 +// 0.3567616641521454 8.392257690429688 0.9070420265197754 +// -14.431743621826172 2.9216911792755127 12.332075119018555 5.235459804534912 +// -7.435092449188232 8.380156517028809 -11.100133895874023 -2.0538828372955322 +// -4.249102592468262 5.23807954788208 -2.8334412574768066 1.4217077493667603 +// -4.125896453857422 3.635354995727539 4.872008800506592 2.7683303356170654 +// -0.29260754585266113 -5.847736835479736 +// -5.525772571563721 6.310996055603027 29.231698989868164 -11.3795166015625 +// -13.006054878234863 6.014938831329346 -13.164939880371094 +// -8.1771879196167 7.754204273223877 -5.8624982833862305 -8.22607421875 +// -4.720262050628662 -4.577225208282471 -3.3452365398406982 6.76840877532959 +// -5.38926887512207 7.592311382293701 -5.4323883056640625 14.54203987121582 +// 0.252343088388443 -0.9176049828529358 25.29826545715332 -1.3418174982070923 +// -6.233880996704102 6.874573707580566 -5.8100056648254395 2.1060140132904053 +// -4.742789268493652 -8.151658058166504 20.670028686523438 +// -13.54651165008545 8.801780700683594 -3.0429370403289795 +// -14.204530715942383 1.487403154373169 1.1701698303222656 1.92051100730896 16.015642166137695 +// 8.371450424194336 +// -6.149077892303467 1.1720877885818481 9.704392433166504 10.066532135009766 2.0872232913970947 +// 15.437984466552734 -2.5003738403320312 +// -8.085640907287598 7.25673770904541 5.675843715667725 13.495590209960938 +// -3.4561779499053955 5.276638507843018 -9.182830810546875 -12.357865333557129 +// -4.155731678009033 7.344022750854492 12.921085357666016 0.9496042728424072 +// -12.489969253540039 -0.006852039135992527 4.6418962478637695 +// -2.446458101272583 -4.577661991119385 3.812188148498535 +// -9.048859596252441 4.043529033660889 7.295025825500488 +// -9.088105201721191 4.951049327850342 4.207963466644287 2.774703025817871 +// -4.764991760253906 -1.7700005769729614 -4.930165767669678 -14.598057746887207 +// -4.6182684898376465 -2.260498285293579 11.41168212890625 -8.498905181884766 +// -8.816277503967285 13.234560012817383 6.8632493019104 1.9775875806808472 +// -6.565841197967529 15.619611740112305 11.603498458862305 2.6188440322875977 4.248415946960449 +// -4.170261383056641 -7.5559163093566895 4.481066703796387 0.7486897706985474 +// -3.9458577632904053 -6.43281888961792 -7.980207443237305 4.8965373039245605 +// -7.0480241775512695 12.797873497009277 -0.969802975654602 -1.0971380472183228 +// 0.1831132024526596 -2.684903383255005 -2.9482171535491943 +// -0.6031721830368042 3.7947239875793457 -5.228108882904053 3.9764907360076904 +// -8.132481575012207 -3.290804624557495 10.4909086227417 +// -15.093242645263672 11.213850021362305 -9.042194366455078 -3.190654993057251 +// -3.720895528793335 6.957793235778809 17.499116897583008 -3.539341688156128 +// -1.4187779426574707 -12.314237594604492 -7.355952739715576 1.9640846252441406 +// -16.634761810302734 1.925777554512024 7.297072887420654 -20.092090606689453 +// -1.8554311990737915 2.1833879947662354 7.820533275604248 +// -3.1316030025482178 3.516308069229126 3.240204095840454 4.562626838684082 8.406534194946289 +// 3.150934934616089 0.40784940123558044 15.71565055847168 -22.562786102294922 +// -3.2298953533172607 8.638886451721191 -2.210353374481201 7.080789566040039 +// -3.116635799407959 -3.2460219860076904 -7.412483215332031 -8.069918632507324 +// -2.1299688816070557 19.275617599487305 -24.11919403076172 +// -1.8547638654708862 1.7403779029846191 9.028647422790527 5.708385944366455 +// -6.107140064239502 -6.763624668121338 11.677633285522461 -11.910735130310059 +// -12.474685668945312 -3.14786696434021 -3.3076257705688477 3.795628309249878 +// -1.8976118564605713 3.8771886825561523 -0.5655785799026489 +// -0.2415671944618225 0.8396178483963013 0.6364314556121826 +// -6.226860046386719 3.054273843765259 3.6714773178100586 -3.2890572547912598 +// -6.841251373291016 13.206127166748047 1.8256173133850098 -6.78111457824707 +// -10.350996971130371 2.2876498699188232 5.074573040008545 -12.904367446899414 +// -0.20265808701515198 +// -9.009697914123535 3.6769356727600098 19.543821334838867 4.798102855682373 10.001640319824219 +// -4.974094390869141 9.583742141723633 -8.318145751953125 -4.237617015838623 +// -6.202766418457031 12.187217712402344 0.4304458796977997 +// -0.8950770497322083 5.969429969787598 -2.462599515914917 +// -6.095291614532471 3.3571200370788574 -0.19386933743953705 +// 0.524811863899231 2.883336067199707 -0.629826009273529 5.281801700592041 +// -7.86660099029541 3.7503037452697754 -3.0548369884490967 4.302072525024414 +// -5.875741004943848 7.558228015899658 -5.130014896392822 -5.062400817871094 +// -7.311432838439941 -11.369865417480469 -0.44250547885894775 +// -5.681039810180664 -10.988826751708984 2.8380208015441895 2.811110019683838 +// -12.523362159729004 8.818718910217285 -3.656043529510498 -5.0566325187683105 +// -1.4624749422073364 -3.4477391242980957 -6.849424839019775 +// -2.3433144092559814 2.8525023460388184 1.868377447128296 -3.3732688426971436 +// -4.030981540679932 0.76134192943573 2.755608558654785 0.5854510068893433 +// -3.1924326419830322 11.397082328796387 -0.3781287670135498 +// -10.43578052520752 6.914683818817139 -2.2923643589019775 -2.522987127304077 +// -7.492007255554199 +// -7.190283298492432 1.8267866373062134 8.604925155639648 2.451082706451416 +// -8.268452644348145 11.878578186035156 8.507928848266602 2.9235475063323975 11.089496612548828 +// 1.8813605308532715 -4.4012298583984375 0.12186680734157562 9.822265625 +// -7.640928745269775 -7.940186023712158 -16.155580520629883 +// -6.969775676727295 12.468865394592285 -11.998769760131836 -12.241328239440918 +// 0.5582777261734009 9.760851860046387 +// -2.0936484336853027 13.339388847351074 2.1309409141540527 -3.6466453075408936 +// -10.743863105773926 6.6333394050598145 9.334295272827148 10.308578491210938 3.9716577529907227 +// 2.136188507080078 3.3648974895477295 3.7648141384124756 +// 0.833246648311615 2.040220260620117 1.495391607284546 1.0468521118164062 +// -0.8881703019142151 -4.233034133911133 7.047618389129639 +// -1.3731310367584229 2.9017655849456787 -15.160808563232422 9.369868278503418 +// -4.5686163902282715 4.379910469055176 -6.157962322235107 +// 18.150188446044922 13.93539047241211 -1.3629990816116333 +// -2.52986216545105 7.505515098571777 13.540328025817871 1.6044933795928955 +// -4.215091705322266 -9.568243026733398 +// -8.914321899414062 3.9605798721313477 3.861421823501587 -2.6987383365631104 +// -5.077635288238525 7.145355701446533 10.470534324645996 +// -8.687972068786621 11.045283317565918 5.442275524139404 +// -11.817740440368652 1.3127355575561523 -10.554985046386719 8.827346801757812 +// -2.311659812927246 15.32313060760498 -7.3155517578125 -19.16728401184082 +// -4.065334320068359 7.353207111358643 9.292253494262695 13.046239852905273 4.510315895080566 +// 11.683018684387207 9.003459930419922 4.414180755615234 11.446061134338379 +// -9.255038261413574 -9.073189735412598 7.727671146392822 +// -3.0461513996124268 8.562813758850098 0.9280878901481628 15.36649227142334 +// -13.473950386047363 10.594353675842285 +// -14.142793655395508 5.4848175048828125 11.466851234436035 +// -15.953058242797852 6.607438564300537 -0.24182461202144623 10.706282615661621 +// -0.7206866145133972 -6.729190826416016 2.836477756500244 10.654126167297363 +// -9.736066818237305 5.453742027282715 -3.635852813720703 -12.478023529052734 +// -8.984708786010742 -17.342334747314453 1.593456745147705 -3.5936405658721924 +// -3.070629835128784 8.23400592803955 -6.301884651184082 -5.82129430770874 +// -13.882022857666016 -6.10216760635376 -3.403620481491089 -0.11052204668521881 +// -0.2819080948829651 -4.333906173706055 7.169161319732666 19.11515998840332 +// -2.234471559524536 0.18495315313339233 7.068133354187012 -8.398941040039062 +// -1.4529622793197632 5.502409934997559 -14.978933334350586 -3.038045644760132 +// -12.67868423461914 -4.6673407554626465 10.082456588745117 13.258808135986328 +// -1.744289755821228 2.5031166076660156 -9.273439407348633 9.776482582092285 +// -9.22152328491211 -2.7785122394561768 0.5773265957832336 +// -1.1979445219039917 5.743747234344482 7.546781539916992 17.5825252532959 +// -6.42553186416626 -7.14866828918457 1.4230400323867798 2.158400058746338 +// -9.241786003112793 -12.066926956176758 -7.334547996520996 -7.086909770965576 +// -10.678960800170898 20.246524810791016 -10.017257690429688 -8.884111404418945 +// -1.7560193538665771 -6.855559349060059 1.7306678295135498 -0.957862377166748 +// -3.5647382736206055 +// -23.248916625976562 24.50995445251465 6.4337968826293945 4.039091110229492 8.388631820678711 +// -5.883612155914307 0.7869905829429626 -7.474995136260986 2.386763334274292 +// 0.38238635659217834 0.5337626934051514 6.511108875274658 5.9346723556518555 +// -0.10533059388399124 -5.762296199798584 7.248239040374756 +// -3.437248945236206 1.1720703840255737 -16.023622512817383 +// -14.185206413269043 1.9852015972137451 11.11593246459961 9.447086334228516 +// -3.854133367538452 -23.347806930541992 0.8875041604042053 +// -15.257339477539062 9.016514778137207 3.4395720958709717 11.578267097473145 11.516121864318848 +// 2.8688809871673584 -2.2439260482788086 -4.82510232925415 0.4239509403705597 +// -2.3703620433807373 -3.830202579498291 2.066426992416382 -5.493617534637451 +// -2.222282648086548 -9.588946342468262 12.796552658081055 +// -11.913300514221191 3.200721263885498 6.626509666442871 +// -7.327229022979736 1.0506752729415894 2.4234490394592285 +// -8.872349739074707 7.05856990814209 -4.632901191711426 +// -7.531038761138916 1.8162485361099243 0.3432215452194214 0.5241618752479553 +// -20.92064094543457 -2.8139431476593018 -5.635883808135986 -10.979031562805176 +// -5.463609218597412 14.641890525817871 2.8333029747009277 -0.9865411520004272 +// -1.9517055749893188 6.839008331298828 -7.109766960144043 +// -6.902914524078369 4.103200435638428 2.558763265609741 12.899953842163086 +// -6.3330464363098145 -0.47271859645843506 -8.246602058410645 +// -7.36428689956665 12.45605182647705 -0.5997825860977173 +// 1.8196682929992676 8.547101974487305 13.515494346618652 4.727377891540527 +// -10.716249465942383 10.11011028289795 1.4235775470733643 -4.22691011428833 +// -0.18380549550056458 -3.565528392791748 3.9639298915863037 +// -12.44796085357666 4.815887928009033 7.466186046600342 5.223403453826904 +// -0.8878042101860046 -5.284423828125 7.895025730133057 -3.586927890777588 +// -10.816706657409668 12.775735855102539 2.054621934890747 17.10491943359375 1.2622897624969482 +// 2.441819429397583 -2.5340256690979004 -4.046130657196045 -11.54149055480957 +// -0.9477673172950745 -3.4241700172424316 4.2034149169921875 4.337334156036377 +// -13.421205520629883 -0.7256271243095398 -12.905407905578613 +// -7.187836170196533 -0.8669313192367554 1.0197654962539673 +// -5.611588001251221 19.08698844909668 +// -8.227832794189453 1.3191848993301392 8.205300331115723 +// -1.4332208633422852 14.896708488464355 -6.731498718261719 5.701261043548584 +// -6.296502113342285 1.7724000215530396 5.209485054016113 +// -11.763445854187012 2.7808640003204346 2.922585964202881 +// -19.246686935424805 3.618222713470459 7.3486247062683105 -6.334510803222656 +// -0.09910188615322113 5.189221382141113 4.986514568328857 7.78345251083374 +// -8.602157592773438 -0.42735937237739563 -7.376029968261719 +// -3.4503841400146484 -1.7720720767974854 -0.11816679686307907 +// -16.65266990661621 8.40417194366455 3.7932443618774414 -1.6224477291107178 +// -2.0308985710144043 -6.804622173309326 -20.6029052734375 +// -3.382417917251587 6.400213718414307 -15.561468124389648 +// 0.7179002165794373 6.73024320602417 -1.9692260026931763 10.754435539245605 +// -1.5031601190567017 -0.15711842477321625 3.4260435104370117 +// -11.16606330871582 7.8366570472717285 -3.82907772064209 -1.0019458532333374 +// 0.6916351318359375 -9.262223243713379 -8.084692001342773 4.264376640319824 +// -4.825498104095459 +// -8.789210319519043 2.7169077396392822 5.633581161499023 7.987663269042969 +// -7.046868324279785 -5.191474914550781 0.697856068611145 1.326890468597412 +// -5.87001895904541 14.232640266418457 8.025636672973633 1.0392584800720215 +// -3.92743182182312 2.627471446990967 -16.90629768371582 18.495609283447266 +// -4.824196815490723 -5.806795120239258 7.502516269683838 +// -4.812863826751709 11.008584022521973 -9.30749225616455 +// -3.247103452682495 8.527482032775879 +// -0.3710329532623291 9.001768112182617 11.82829761505127 +// -15.781774520874023 2.8828115463256836 -3.2238316535949707 2.3725366592407227 +// -0.7762150168418884 -9.999438285827637 7.65447998046875 -3.624845504760742 +// -7.571025371551514 -2.8203043937683105 -3.9021244049072266 +// -2.3330581188201904 9.463156700134277 -13.850497245788574 1.8480584621429443 +// -2.6588709354400635 7.353296279907227 -11.52904224395752 +// -1.28861665725708 1.9597991704940796 -10.367827415466309 +// -11.736550331115723 8.411983489990234 5.355062961578369 12.082575798034668 +// -6.341071128845215 8.872986793518066 4.765933036804199 3.0875344276428223 +// 0.5458757877349854 3.428818464279175 -10.02891731262207 -3.1918113231658936 +// -7.286858081817627 +// 0.19830237329006195 12.184406280517578 7.484373092651367 11.465624809265137 +// -11.337983131408691 8.905065536499023 -4.220176696777344 -6.501051902770996 +// -0.6029396057128906 -13.641610145568848 -2.344236373901367 -6.559938430786133 +// -8.627727508544922 8.0112886428833 1.5779407024383545 6.814976215362549 3.141225576400757 +// 5.968420028686523 -2.758974313735962 +// -17.899065017700195 4.868821144104004 9.440953254699707 6.909989833831787 6.274573802947998 +// -3.722294569015503 4.69602108001709 6.336430549621582 3.2792820930480957 +// -4.917972564697266 -1.4332855939865112 2.5935065746307373 0.8732436895370483 +// -13.96145248413086 10.375673294067383 4.548671245574951 -1.3613914251327515 +// -7.283562183380127 7.461674690246582 0.6830768585205078 -0.28632688522338867 +// -0.7297337651252747 +// -6.361906051635742 4.618370056152344 2.475633382797241 9.652467727661133 +// -7.052973747253418 -2.85071063041687 -5.165806293487549 1.917454481124878 +// -3.0948240756988525 -3.0036780834198 -1.0959408283233643 +// -4.438119411468506 7.263021945953369 +// -0.4816599190235138 4.384136199951172 11.478008270263672 5.425712585449219 +// -11.87685489654541 -8.68525218963623 -1.8835606575012207 5.575925827026367 +// -0.23674854636192322 -6.39525842666626 +// -2.675053119659424 15.338184356689453 2.009129524230957 -1.9353147745132446 +// -3.6440906524658203 7.965552806854248 13.54395866394043 12.004938125610352 9.13764476776123 +// 5.358478546142578 -9.881348609924316 -8.653066635131836 1.7504223585128784 +// -4.100458145141602 23.0673828125 -3.189958333969116 -3.4692347049713135 +// -11.820446968078613 -7.90066385269165 -7.175755977630615 +// -9.568723678588867 2.8729896545410156 -9.370196342468262 +// -7.4469685554504395 8.100606918334961 3.009145498275757 -0.7810574173927307 +// 0.7283774018287659 -4.4417314529418945 1.020020604133606 +// -2.2578086853027344 3.0401506423950195 1.3524210453033447 -8.31298542022705 +// -4.062037467956543 -9.745250701904297 -5.082300662994385 5.864436149597168 +// 7.780561447143555 +// -1.0588926076889038 10.62216854095459 6.5995612144470215 1.323911428451538 4.204577922821045 +// -1.8007687330245972 -14.432525634765625 -9.037408828735352 4.4921956062316895 +// -0.932478666305542 10.668476104736328 7.455997943878174 -3.9845192432403564 +// -13.772850036621094 8.796215057373047 -0.27803879976272583 4.719496726989746 +// -1.3817152976989746 1.3702062368392944 +// -0.028049038723111153 1.301648736000061 +// -5.539006233215332 9.352189064025879 2.2860536575317383 -5.9595537185668945 +// -19.394433975219727 -4.854082107543945 +// -4.604586124420166 12.049308776855469 8.426538467407227 -0.4998010993003845 +// -6.2866950035095215 +// -2.910107135772705 5.850177764892578 9.966997146606445 6.345532417297363 +// -14.177242279052734 5.147502899169922 -4.908006191253662 -0.2691008746623993 +// -2.0590155124664307 8.188939094543457 -10.636098861694336 1.9076839685440063 +// -8.019670486450195 -3.8671553134918213 +// -5.955855846405029 4.0803961753845215 1.8214788436889648 -3.389145851135254 +// 0.4557308852672577 -0.7095799446105957 +// -10.601147651672363 8.798892974853516 3.7844398021698 +// -0.12287909537553787 2.1983675956726074 6.6276750564575195 20.000818252563477 2.171753168106079 +// -1.8753658533096313 -2.2653861045837402 -9.696464538574219 -4.121651649475098 +// -5.87276554107666 -5.291242599487305 -7.332991600036621 +// -9.181852340698242 13.110488891601562 5.879213809967041 3.8337759971618652 +// -0.40495607256889343 -11.34218692779541 +// -1.8024506568908691 3.822509288787842 5.621672630310059 +// -2.0247437953948975 2.250103712081909 1.2956531047821045 -6.145402431488037 +// -2.9969592094421387 -5.389257907867432 -10.36392593383789 -4.750583171844482 +// -6.534185886383057 1.9693955183029175 -0.6355608105659485 1.8874112367630005 +// -8.802966117858887 -8.335650444030762 -13.746919631958008 +// -15.732301712036133 5.647625923156738 14.631180763244629 +// -8.050870895385742 12.687464714050293 -1.1253490447998047 -25.660572052001953 +// -6.8936262130737305 12.432500839233398 5.162167072296143 22.897729873657227 10.628743171691895 +// -8.241415023803711 10.01978588104248 0.0701526626944542 7.649350166320801 +// 0.9181718230247498 11.863492012023926 +// -8.078108787536621 10.698526382446289 3.0518805980682373 20.82491683959961 +// -8.087003707885742 -8.863120079040527 9.158286094665527 -2.5143635272979736 +// -4.687466621398926 10.040338516235352 -6.26655387878418 -16.67179298400879 +// -5.252758979797363 -0.5831647515296936 7.679708003997803 +// -0.30677059292793274 6.701901435852051 -3.5388858318328857 +// -3.4139108657836914 -0.9948858022689819 -5.274704933166504 1.7261160612106323 +// -4.2385029792785645 4.861183166503906 +// -9.256121635437012 5.824549674987793 3.9460480213165283 -16.97924041748047 +// -0.6431164145469666 10.666977882385254 9.151876449584961 +// -4.663884162902832 5.5509114265441895 6.599918842315674 -4.71451473236084 +// -3.5487942695617676 4.414534091949463 -8.473835945129395 16.203866958618164 +// -9.725753784179688 -10.028179168701172 -3.4355335235595703 -5.213078498840332 +// -21.968952178955078 -9.977697372436523 -4.580126762390137 -12.274202346801758 +// -1.193282127380371 8.27807903289795 10.870339393615723 4.34432315826416 6.329595565795898 +// -2.7159671783447266 -5.348599910736084 13.2999906539917 +// -5.3259735107421875 1.727891206741333 12.039974212646484 1.3164054155349731 +// 0.22557269036769867 0.4178072214126587 8.985843658447266 9.280284881591797 +// -4.213957786560059 3.1435279846191406 20.529634475708008 +// 0.9095498919487 6.648403167724609 11.68776798248291 +// -3.5130913257598877 3.477815628051758 -10.89614486694336 +// -9.226548194885254 9.194210052490234 2.313541889190674 0.3745482861995697 +// -1.3557078838348389 6.5536274909973145 7.202000141143799 4.491315841674805 16.733455657958984 +// 0.20224910974502563 -4.6549391746521 -12.825590133666992 7.925690174102783 +// -8.201981544494629 9.358227729797363 2.3244009017944336 3.38127064704895 8.617551803588867 +// 8.331400871276855 -3.980027198791504 -10.166132926940918 20.359203338623047 +// -3.9752848148345947 10.908587455749512 +// 0.2759438455104828 1.463304042816162 15.659064292907715 -3.2458386421203613 +// -7.028007507324219 3.687775135040283 12.365503311157227 -11.261823654174805 +// -2.14872145652771 20.21721649169922 1.938011646270752 +// -7.207204341888428 1.954809308052063 12.584915161132812 -4.394972324371338 +// -3.295171022415161 -7.474578380584717 4.962436199188232 1.7996187210083008 +// 0.5462030172348022 -6.186883449554443 -6.499578475952148 4.062926292419434 +// -3.6032495498657227 -6.94567346572876 2.652596950531006 5.8125200271606445 +// -0.8051081299781799 7.846816062927246 3.0302579402923584 2.8866512775421143 9.70941162109375 +// -0.37488555908203125 -2.030129909515381 8.886775970458984 -1.7387341260910034 +// -3.614166736602783 2.506347894668579 8.728171348571777 6.069179534912109 +// -5.573176860809326 0.004819885827600956 -8.543901443481445 +// -1.8188987970352173 -0.29662221670150757 3.1428961753845215 +// -13.846540451049805 -4.738394260406494 5.495796203613281 4.6248321533203125 +// 9.879804611206055 -9.923136711120605 5.20793342590332 +// -6.200234889984131 7.432347774505615 -5.178496360778809 18.568666458129883 +// -4.289830684661865 -5.085885047912598 -1.7847669124603271 +// -10.987958908081055 7.181829929351807 3.1066722869873047 8.264097213745117 4.1563520431518555 +// -8.88894271850586 9.487107276916504 -12.363744735717773 +// -9.403717041015625 12.298922538757324 -8.241961479187012 +// -2.074490785598755 9.617887496948242 0.9709277749061584 -12.54137134552002 +// -8.044050216674805 -10.045449256896973 -0.10136229544878006 9.126379013061523 +// -4.738892555236816 3.747119665145874 +// -3.243659019470215 8.009885787963867 5.081646919250488 -9.626312255859375 +// -2.407607316970825 -2.133605480194092 11.315247535705566 4.960020065307617 +// -3.231642246246338 -0.4801168739795685 -9.191995620727539 8.573578834533691 +// -1.5581175088882446 13.767814636230469 -2.6648948192596436 -8.237244606018066 +// -5.448294162750244 -9.167434692382812 -2.367441177368164 2.9338552951812744 +// -13.025652885437012 +// -9.047093391418457 23.38825798034668 17.154373168945312 14.106138229370117 8.140214920043945 +// 3.6358368396759033 -4.904660701751709 -4.110160827636719 +// -0.2292480319738388 2.891404628753662 5.812313079833984 -2.419865608215332 +// -0.9655434489250183 -6.322963237762451 11.244514465332031 +// -10.143575668334961 1.1128603219985962 +// 0.5301532745361328 3.647322177886963 2.751588821411133 -10.7061185836792 +// -1.6105941534042358 -1.8899779319763184 12.537789344787598 19.327959060668945 +// -3.4154911041259766 5.419819355010986 7.17738676071167 3.0071616172790527 +// -8.707548141479492 2.657510995864868 9.422308921813965 -1.3367880582809448 +// -4.232869625091553 +// 0.20196641981601715 9.707727432250977 8.895624160766602 7.336949825286865 +// -23.09917449951172 5.228194236755371 6.015385150909424 0.191544771194458 +// -7.915549278259277 5.516988754272461 12.263221740722656 6.458919525146484 +// -8.576176643371582 -12.236899375915527 1.5182565450668335 +// -0.25027191638946533 -3.8086633682250977 +// -3.1595375537872314 2.559634208679199 -6.476985454559326 10.665450096130371 +// -14.737947463989258 13.288687705993652 -3.319582939147949 9.848453521728516 +// -3.690335750579834 +// -5.268126487731934 9.959233283996582 13.046125411987305 1.763211727142334 +// -5.886866569519043 4.054373264312744 1.1734262704849243 -18.314285278320312 +// -2.391918182373047 -2.6230368614196777 -3.6520261764526367 +// -11.737255096435547 8.270920753479004 -11.94225788116455 -10.188922882080078 +// -12.19271183013916 3.2088067531585693 -4.478189468383789 -1.9476959705352783 +// -5.35082483291626 18.256616592407227 -13.177756309509277 +// -1.1583582162857056 4.863557815551758 2.4299416542053223 5.458502292633057 +// -4.495213508605957 10.116117477416992 +// -2.820772647857666 5.177433490753174 11.226078987121582 3.6039912700653076 11.529020309448242 +// -7.9419379234313965 -6.502745628356934 2.2968499660491943 10.811572074890137 +// -1.663040041923523 1.0677443742752075 1.895862102508545 +// -7.1194987297058105 1.918014407157898 12.47640323638916 13.214052200317383 +// -3.692944288253784 -7.148772239685059 4.381938457489014 -10.93932056427002 +// -4.778116703033447 -1.114213228225708 -2.6071372032165527 4.614187240600586 +// -1.4128257036209106 -1.599320888519287 -6.712315082550049 +// -2.657508373260498 1.891193151473999 +// -4.574458599090576 10.313023567199707 1.1424826383590698 0.7789655327796936 +// -2.5761990547180176 4.363525390625 3.1957080364227295 -4.880058288574219 +// -1.596690058708191 8.854666709899902 +// -1.8424952030181885 2.2160143852233887 25.138662338256836 +// -0.3389955461025238 2.5860276222229004 -2.6275060176849365 +// -1.7983216047286987 -3.266822576522827 -1.5347706079483032 +// -6.804663181304932 17.03524398803711 -3.8041183948516846 -0.5239560604095459 +// 11.850882530212402 -2.4911258220672607 5.032665252685547 -12.899781227111816 +// -6.069310188293457 13.983381271362305 15.899539947509766 5.741422653198242 10.37678050994873 +// -16.191015243530273 -6.53175163269043 +// -3.038961410522461 14.487902641296387 6.821549415588379 12.949992179870605 +// -7.6692962646484375 4.838634490966797 8.217008590698242 4.4833903312683105 +// -10.353849411010742 +// -5.226804256439209 3.8438308238983154 10.148483276367188 2.6187496185302734 +// 0.6254196763038635 -10.637104034423828 +// -6.679865837097168 12.489063262939453 1.3376452922821045 +// -13.191515922546387 13.744781494140625 +// -9.843047142028809 16.315446853637695 14.955215454101562 -15.599187850952148 +// -2.391026496887207 -11.863288879394531 0.31975269317626953 +// -0.7318804264068604 +// -5.285858631134033 5.039174556732178 6.863278388977051 16.178903579711914 +// -1.0704036951065063 10.081835746765137 4.701452732086182 11.367799758911133 2.630444288253784 +// -10.438043594360352 -0.5800775289535522 -12.069836616516113 +// -15.306829452514648 7.198263645172119 -6.119527816772461 +// 0.4589897692203522 2.017300844192505 6.902678489685059 4.531997203826904 +// 0.4488474428653717 -11.803121566772461 3.5113272666931152 4.2995405197143555 +// -1.4759697914123535 -2.765079975128174 +// 0.9754258990287781 4.950209140777588 9.266831398010254 -0.7190718054771423 +// -0.448976993560791 -4.882719039916992 -6.382411003112793 -11.856904983520508 +// -1.920188307762146 5.945835113525391 3.2882068157196045 11.141663551330566 +// 0.5111099481582642 4.921767234802246 -7.382075309753418 10.613283157348633 +// -12.826568603515625 1.885746717453003 4.243870258331299 +// -2.866682291030884 12.462968826293945 -12.72567367553711 +// -8.653656005859375 9.841111183166504 -6.182761192321777 -9.374828338623047 +// 0.6372548341751099 -2.825864315032959 -3.2741336822509766 3.7717740535736084 +// -0.21144071221351624 -10.23952865600586 +// -1.3356237411499023 2.6293327808380127 +// 0.17124587297439575 6.758614540100098 7.409319877624512 -6.904872894287109 +// -10.98726749420166 5.157167911529541 1.5962470769882202 +// -6.986694812774658 10.482176780700684 -8.4398775100708 10.032970428466797 +// -11.02224063873291 5.15122127532959 -3.841508150100708 -8.669261932373047 +// -4.753579139709473 16.69766616821289 2.8439173698425293 +// -9.145085334777832 13.735478401184082 -1.4757449626922607 +// -6.135249137878418 1.5229171514511108 -3.6177546977996826 5.194564342498779 +// -0.11562760919332504 +// -2.646937608718872 16.572668075561523 6.69830846786499 3.412102222442627 +// -1.287665605545044 -1.3852044343948364 +// -10.077447891235352 6.832030773162842 4.077663898468018 8.5325288772583 +// -0.2267126441001892 -6.3426666259765625 -1.11387038230896 +// -9.655983924865723 7.414362907409668 1.8839454650878906 -10.188446044921875 +// -4.899777412414551 -7.656599998474121 0.8837410807609558 4.7040839195251465 +// -5.991117477416992 7.495084285736084 2.6794207096099854 -6.31851863861084 +// -1.3052153587341309 -6.691005229949951 7.669943809509277 -5.270277500152588 +// -6.600780963897705 8.86999225616455 -5.215329170227051 +// -5.053679943084717 9.043868064880371 -2.893442153930664 +// -5.634239673614502 8.093672752380371 +// -7.485183238983154 1.7093801498413086 4.546355724334717 2.675110340118408 +// -5.844327449798584 2.6812918186187744 0.4783479869365692 +// -5.462131977081299 14.1092529296875 6.808232307434082 -5.433642864227295 +// -13.209732055664062 6.654004096984863 -2.77199649810791 3.5959231853485107 +// 0.1678897887468338 -0.5596638321876526 -0.11048866808414459 +// 0.21587109565734863 12.287589073181152 -6.089903354644775 -8.175605773925781 +// -1.094179391860962 -1.2292571067810059 4.529630184173584 +// 0.9905721545219421 1.0543091297149658 4.455852031707764 7.340718746185303 9.347326278686523 +// 10.22850227355957 -5.23296594619751 8.925241470336914 +// -8.549726486206055 5.763721942901611 0.22773006558418274 0.20697130262851715 +// -6.407068252563477 -0.7760544419288635 +// 0.7254140973091125 7.760751724243164 15.548218727111816 2.0512442588806152 +// -1.8480020761489868 -19.597917556762695 0.34409210085868835 +// -4.246461868286133 3.4835503101348877 5.286425590515137 -6.457859992980957 +// -23.862749099731445 4.508174896240234 -4.224669933319092 -1.6178029775619507 +// -1.5407129526138306 13.912481307983398 -4.771246910095215 -1.874523639678955 +// -14.07822036743164 +// -10.573553085327148 2.845412254333496 6.170131206512451 4.833895206451416 +// -9.131399154663086 5.7508344650268555 9.710697174072266 6.468888759613037 18.869403839111328 +// -4.076042652130127 1.4915108680725098 1.6433697938919067 +// -15.112771034240723 4.061419486999512 4.04539680480957 -1.7963800430297852 +// -7.332672595977783 +// -6.609351634979248 17.518644332885742 11.711606979370117 5.580909729003906 4.922968864440918 +// 1.945109486579895 5.960619926452637 6.936633586883545 2.268860101699829 +// -10.23888874053955 4.078439235687256 -4.377187728881836 -11.000795364379883 +// -0.8909801244735718 2.1776301860809326 16.61469841003418 +// 0.15989501774311066 10.516542434692383 -7.545412063598633 +// 0.7649897336959839 1.9441676139831543 -11.517266273498535 9.217242240905762 +// -7.345047473907471 12.729928016662598 5.4985785484313965 3.84938907623291 +// -0.7156795263290405 -3.0865297317504883 1.123702883720398 -13.780060768127441 +// -4.238708972930908 11.424797058105469 -1.7634363174438477 -8.350053787231445 +// -4.149166584014893 3.4120728969573975 1.8259265422821045 -14.183268547058105 +// -1.9357012510299683 -1.2415961027145386 +// -1.0651617050170898 18.411596298217773 7.796675682067871 12.016172409057617 15.620648384094238 +// -5.249574184417725 7.379034042358398 1.810190200805664 -6.003079414367676 +// 0.196068674325943 -0.9181224703788757 -0.6369103789329529 +// -3.357053518295288 4.638859272003174 -4.73886775970459 1.7688226699829102 +// 0.07228894531726837 -1.851089596748352 -3.63126277923584 7.946031093597412 +// -6.9755682945251465 6.473079204559326 -25.751028060913086 4.255188941955566 +// -2.000518798828125 1.057759404182434 +// -2.5817880630493164 3.7374465465545654 9.867813110351562 +// -1.4896728992462158 12.308470726013184 -14.92315673828125 -18.54299545288086 +// 0.7734993696212769 10.596458435058594 6.044304370880127 7.928940773010254 +// -3.3555309772491455 6.743198871612549 2.6000382900238037 12.307234764099121 +// -3.7743377685546875 -4.58875036239624 0.6012269854545593 +// -9.787330627441406 11.490546226501465 6.341020584106445 1.6600050926208496 +// -9.394003868103027 -0.3624899089336395 -13.805734634399414 8.430383682250977 +// -2.5092999935150146 -4.289479732513428 -3.887340784072876 +// 0.30773892998695374 9.26716136932373 11.184671401977539 -7.377863883972168 +// -3.8652093410491943 +// -4.63386869430542 2.2284128665924072 14.570455551147461 3.3786520957946777 +// 0.04394157975912094 -15.710735321044922 3.9338181018829346 5.8149189949035645 +// -3.2896933555603027 -5.963229179382324 -1.946426510810852 +// -11.350264549255371 7.76223611831665 0.2798842489719391 -0.5309274196624756 +// -10.283991813659668 -3.1482162475585938 0.757891058921814 -8.134580612182617 +// -0.4606318175792694 -5.886247634887695 -0.19316142797470093 4.715024948120117 +// -7.331546306610107 1.6181681156158447 -1.1780378818511963 8.42850399017334 +// -13.506633758544922 -0.4273544251918793 +// 0.17367249727249146 12.845029830932617 -4.461689472198486 -5.252188205718994 +// -10.068904876708984 0.3746839463710785 -20.479724884033203 +// -0.8293958306312561 -9.793843269348145 -5.633672714233398 5.317511081695557 +// -15.967042922973633 1.31990385055542 -9.30476188659668 -2.349443197250366 +// -9.845148086547852 -4.972594261169434 8.42866039276123 +// -1.3562607765197754 13.73137092590332 5.006362438201904 -3.7937188148498535 +// -3.0700488090515137 15.957940101623535 3.078449249267578 -5.2570648193359375 +// -5.9926323890686035 3.0025534629821777 +// -2.059070110321045 9.259581565856934 6.671379566192627 -11.709877014160156 +// -8.119973182678223 -8.481023788452148 -4.076221466064453 -11.220934867858887 +// 0.7137522101402283 2.7820346355438232 5.655328273773193 25.301918029785156 +// 0.27089470624923706 -0.5495712757110596 2.9769647121429443 15.16096305847168 +// -12.064855575561523 6.879045486450195 4.699486255645752 4.294930934906006 10.4647855758667 +// -4.415299892425537 -18.608070373535156 -15.00971508026123 4.087649822235107 +// -3.5303049087524414 1.1820980310440063 4.0287909507751465 -0.353314071893692 +// -6.415250301361084 7.362584114074707 -3.1697845458984375 -5.5097737312316895 +// -2.443510055541992 13.09886360168457 -9.444171905517578 -8.669440269470215 +// -1.1253093481063843 -11.416253089904785 -17.34229850769043 +// -0.19151946902275085 -4.2617082595825195 +// -0.5909861922264099 14.581488609313965 9.011682510375977 -8.739297866821289 +// -2.044511079788208 6.387242317199707 10.242464065551758 3.784036159515381 1.9479211568832397 +// -4.151474475860596 0.06544318050146103 5.514820098876953 4.308298110961914 +// 0.9737090468406677 +// -8.420472145080566 4.154537677764893 16.358585357666016 6.0191521644592285 +// -2.901869297027588 -3.8358991146087646 +// -2.4706921577453613 1.9420102834701538 1.1675642728805542 11.755084991455078 +// -4.090183734893799 -11.8739652633667 +// -6.280357360839844 4.67473030090332 2.3639631271362305 -2.3334832191467285 +// -10.163830757141113 -14.48408317565918 -0.3068848252296448 4.144982814788818 +// -8.485284805297852 16.012828826904297 2.3688273429870605 -11.192424774169922 +// -17.821516036987305 10.915335655212402 5.09955358505249 +// -7.93101692199707 3.9178175926208496 -3.5450496673583984 9.352275848388672 +// -0.86722332239151 +// -6.307165145874023 13.101326942443848 4.266430854797363 1.3428547382354736 1.758192777633667 +// -2.78411865234375 -5.102444171905518 0.8047392964363098 +// -6.704196929931641 5.370609283447266 13.818143844604492 +// -4.159389495849609 10.0069580078125 -6.67096471786499 11.222105979919434 +// 0.9269081950187683 8.10201644897461 +// -8.815138816833496 14.304753303527832 3.443629741668701 9.657418251037598 +// -1.8571064472198486 -7.6694512367248535 3.0671730041503906 5.80114221572876 +// -0.10046756267547607 -4.095688819885254 -1.303561806678772 -9.72191333770752 +// 8.454577445983887 9.439372062683105 -0.9809349775314331 +// -6.689424991607666 7.58773136138916 2.8856992721557617 3.399273633956909 27.067943572998047 +// 11.430402755737305 2.7261741161346436 10.747293472290039 4.526947975158691 +// -2.8837172985076904 1.5364248752593994 2.65265154838562 6.187331199645996 +// -6.53118371963501 -4.311094284057617 16.691659927368164 +// -3.758755683898926 8.98793888092041 -17.963335037231445 -9.890002250671387 +// -6.646529197692871 3.6304433345794678 1.8023927211761475 -1.9498318433761597 +// -5.223814010620117 8.28713321685791 -4.8200201988220215 +// -1.7874267101287842 2.992581367492676 +// -1.7981005907058716 4.324663162231445 9.45871639251709 +// -7.080864429473877 3.6792304515838623 12.489150047302246 1.2159242630004883 6.6084489822387695 +// -0.7969993352890015 -14.786823272705078 -10.30754566192627 2.2688217163085938 +// -5.89975643157959 16.048303604125977 +// -0.017910439521074295 5.939474105834961 4.013255596160889 4.0673065185546875 7.473531246185303 +// 2.5494580268859863 11.780263900756836 17.643869400024414 1.3239855766296387 +// -8.322027206420898 -6.6887054443359375 -6.6891021728515625 +// -10.517285346984863 1.3117756843566895 1.9329060316085815 -5.509559154510498 +// -14.802009582519531 -2.637519598007202 -3.593312978744507 +// -1.803350806236267 2.4541335105895996 3.5905494689941406 9.192246437072754 2.4018282890319824 +// -5.515092849731445 10.839174270629883 17.832483291625977 1.2487868070602417 1.3516029119491577 +// 6.645789623260498 -4.975759506225586 -6.945214748382568 +// -9.671815872192383 7.538064479827881 12.814813613891602 2.940061330795288 +// -6.419429779052734 -1.2491397857666016 17.879478454589844 -0.9284393191337585 +// 0.26421093940734863 5.423524856567383 7.839715957641602 -2.1073598861694336 +// -6.18091344833374 3.509164571762085 -9.185978889465332 -8.333582878112793 +// -8.796097755432129 5.447552680969238 +// -3.7462759017944336 2.1485278606414795 6.214938640594482 5.174936771392822 14.142641067504883 +// -0.5181484222412109 -5.987493991851807 9.91930103302002 -7.475680828094482 +// -4.374823093414307 -4.342462539672852 -13.235847473144531 +// -3.8871991634368896 6.439979553222656 10.372217178344727 +// -4.155850410461426 17.344892501831055 2.1842615604400635 3.945680856704712 1.0770280361175537 +// 10.178449630737305 10.0678129196167 -0.903171718120575 -0.3412386476993561 +// -15.389429092407227 6.9022908210754395 7.67825174331665 7.3817338943481445 +// -0.4724624752998352 2.4415321350097656 1.8504029512405396 -10.460223197937012 diff --git a/sw/spatzBenchmarks/dp-mxfmatmul/kernel/mxfmatmul.c b/sw/spatzBenchmarks/dp-mxfmatmul/kernel/mxfmatmul.c new file mode 100644 index 00000000..471bbc50 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul/kernel/mxfmatmul.c @@ -0,0 +1,429 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#include "mxfmatmul.h" + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 2*kernel_n, respectively +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 1)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v24, 0"); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mxfmacc.vv v24, v0, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mxfmacc.vv v24, v12, v8"); + + b_ += kernel_k; + a_ += kernel_k; + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mxfmacc.vv v24, v12, v8"); + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; // Question: If give the abs value 4 to here, then the + // performance is better. Why? + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 4*kernel_n, respectively +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 2)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v28, 0"); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v28, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v8"); + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} + +// This first implementation works only with perfect tiling, i.e., with M and N +// that perfectly divide kernel_m and 8*kernel_n, respectively +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) { + + // Setup pointers + const double *a_; + double *c_; + + // Iterate over the output rows + for (unsigned int m = m_start; m < m_end; m += kernel_m) { + // Update the C Mtx pointer + c_ = c + m * N; + // Iterate over the output columns + // We need 2* on the n dimension since this is a Bx2 kernel + for (unsigned int n = 0; n < n_end; n += (kernel_n << 3)) { + // Update the A Mtx pointer + a_ = a + m * K; + // Update B Mtx pointers + const double *b_ = b + n * K; + const double *b__ = b_ + nrelem_b; + + asm volatile("msettilem t1, %0" ::"r"(kernel_m) : "t1"); + asm volatile("msettilen t2, %0" ::"r"(kernel_n) : "t2"); + asm volatile("msettilek t3, %0" ::"r"(kernel_k) : "t3"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Reset the result registers + asm volatile("vmv.v.i v16, 0"); + asm volatile("vmv.v.i v18, 0"); + asm volatile("vmv.v.i v20, 0"); + asm volatile("vmv.v.i v22, 0"); + asm volatile("vmv.v.i v24, 0"); + asm volatile("vmv.v.i v26, 0"); + asm volatile("vmv.v.i v28, 0"); + asm volatile("vmv.v.i v30, 0"); + asm volatile("vsetvli zero, %0, e64, m4, ta, ma" ::"r"(vl)); + + // Load Matrix A and B with shifting for avoiding the conflicts. + // Double-buffering on matrix B. + // Set the store C address + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + + // Reset the loop control variable. + unsigned int k = 0; + + while (k < inner_loops - 1) { + // ------------------------------------------// + // ------------Loop Unrolling 1 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v0, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v0, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v0, v8"); + k++; + + asm volatile("mle64.v.a v12, (%0), %1;" ::"r"(a_), "r"(K)); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + b__ = b_ + nrelem_b; + + if (k == inner_loops - 1) + break; // Kernel must be broken at here + + // ------------------------------------------// + // ------------Loop Unrolling 2 ------------ // + // ------------------------------------------// + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + + b_ += kernel_k; + a_ += kernel_k; + asm volatile("mxfmacc.vv v30, v12, v8"); + k++; + + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b_), "r"(K)); + asm volatile("mle64.v.a v0, (%0), %1;" ::"r"(a_), + "r"(K)); // Question: Move this one line upper, then does + // not work. Why? + b__ = b_ + nrelem_b; + } + + asm volatile("mxfmacc.vv v16, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + + asm volatile("mxfmacc.vv v18, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v16, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v20, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v18, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v22, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v20, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v24, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v22, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v26, v12, v8"); + asm volatile("mle64.v.b v4, (%0), %1;" ::"r"(b__), "r"(K)); + b__ += nrelem_b; + asm volatile("mse64.v.c v24, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v28, v12, v4"); + asm volatile("mle64.v.b v8, (%0), %1;" ::"r"(b__), "r"(K)); + asm volatile("mse64.v.c v26, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mxfmacc.vv v30, v12, v8"); + asm volatile("mse64.v.c v28, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + + asm volatile("mse64.v.c v30, (%0), %1;" ::"r"(c_), "r"(N)); + c_ += kernel_n; + } + } +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul/kernel/mxfmatmul.h b/sw/spatzBenchmarks/dp-mxfmatmul/kernel/mxfmatmul.h new file mode 100644 index 00000000..a6b7979e --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul/kernel/mxfmatmul.h @@ -0,0 +1,55 @@ +// Copyright 2021 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Yichao Zhang, ETH Zurich +// Author: Enis Mustafa, ETH Zurich + +#ifndef MXMATMUL_H +#define MXMATMUL_H + +#include + +void matmul_tiled_Bx2(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx4(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +void matmul_tiled_Bx8(double *c, const double *a, const double *b, + const unsigned int kernel_m, const unsigned int kernel_n, + const unsigned int kernel_k, const unsigned int N, + const unsigned int K, const unsigned int inner_loops, + const unsigned int m_start, const unsigned int m_end, + const unsigned int n_end, const unsigned int vl, + const unsigned int nrelem_a, const unsigned int nrelem_b, + const unsigned int nrelem_c) + __attribute__((always_inline)); + +#endif diff --git a/sw/spatzBenchmarks/dp-mxfmatmul/main.c b/sw/spatzBenchmarks/dp-mxfmatmul/main.c new file mode 100644 index 00000000..b62ec242 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul/main.c @@ -0,0 +1,238 @@ +// Copyright 2023 ETH Zurich and University of Bologna. +// +// SPDX-License-Identifier: Apache-2.0 +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Enis Mustafa, ETH Zurich + +#include +#include +#include + +// ------------------- IMPORT --------------------// +// Size of Marices import from `data/data_gemm.h`; +// The matrices generation scripts under `script/` +// Usage: `python3 gen_data.python -c matmul.json`; +// -------------------------------------------------// +#include "data/data_gemm.h" +#include "kernel/mxfmatmul.c" + +// -------------- DEFINE TILE SIZE ---------------// +// Define Tile (Kernel) Dimensions: +// C = AB with A=[MxK], B=[KxN], C=[MxN]; +// Martix B is transposed in the memory: B_Trans=[NxK] +// Note: Accumulator size = (KERNEL_M x KERNEL_N)/4; +// We enforce KERNEL_M * KERNEL_K == vl +// We enforce KERNEL_N * KERNEL_K <= vl, i.e., KERNEL_N <= KERNEL_M +// We enforce KERNEL_M * KERNEL_N <= vl, i.e., KERNEL_N <= KERNEL_K +// We enforce KERNEL_M, KERNEL_N, and KERNEL_K to be either 4 or 8 +// Mind that KERNEL_M * KERNEL_K <= maxvl for the used LMUL +// -------------------------------------------------// +#ifndef KERNEL_M +#define KERNEL_M 8 +#endif +#ifndef KERNEL_N +#define KERNEL_N 4 +#endif +#ifndef KERNEL_K +#define KERNEL_K 4 +#endif + +#if (KERNEL_N > KERNEL_K) || (KERNEL_N > KERNEL_M) +#error "KERNEL_N should be lower than KERNEL_K and KERNEL_M" +#endif + +// -------------- RUNTIME PARAMETERS -------------// +// For MemPool_Spatz4: 4 Groups with 64 Cores in total; +// For MemPool_Spatz2: 4 Groups with 128 Cores in total; +// -------------------------------------------------// +#define ACTIVE_GROUPS NUM_GROUPS + +// ----------------- FUNCTIONS -------------------// +// `init_matrix` : Import matrix from L2 to L1 +// `verify_matrix`: Compare the sum of the row elements. +// `print_matrix` : Matrices printing by HEX +// -------------------------------------------------// +void init_matrix(double *matrix, const double *src, + const unsigned int rows_start, const unsigned int rows_end, + const unsigned int num_columns) { + for (unsigned int i = rows_start; i < rows_end; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + matrix[i * num_columns + j] = src[i * num_columns + j]; + } + } +} + +void print_matrix(double const *matrix, unsigned int num_rows, + unsigned int num_columns) { + printf("0x%8X\n", (unsigned int)matrix); + for (unsigned int i = 0; i < num_rows; ++i) { + for (unsigned int j = 0; j < num_columns; ++j) { + printf("%5u ", (unsigned int)matrix[i * num_columns + j]); + } + printf("\n"); + } +} + +double *a; +double *b; +double *c; + +// ---------------- Main Program ------------------// +// Row-based parallelization by M dimension of Matrix A; +// First, determine how many cores parallelized per +// tile on Matrix A, based on M/KERNEL_M; +// Second, determine how many tiles need to be done per +// core on Matrix B, based on `tiles_per_core`= +// (N/(M/KERNEL_M))/KERNEL_N; +// Double buffering require `tiles_per_core` % 2 = 0; +// -------------------------------------------------// + +#define CHECK +//#define PRINT_RESULT + +int main() { + const unsigned int num_cores = snrt_cluster_core_num(); + const unsigned int cid = snrt_cluster_core_idx(); + + const unsigned int measure_iterations = 1; + + unsigned int timer_start, timer_end, timer; + + unsigned int m_start, m_end; + unsigned int p_start, p_end; + unsigned int kernel_size; + + // Todo: we need to clarify the vl + // It can be M*K, K*N, or M*N + unsigned int vl = KERNEL_M * KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Allocate the matrices in the local tile + if (cid == 0) { + a = (double *)snrt_l1alloc(gemm_l.M * gemm_l.K * sizeof(double)); + b = (double *)snrt_l1alloc(gemm_l.K * gemm_l.N * sizeof(double)); + c = (double *)snrt_l1alloc(gemm_l.M * gemm_l.N * sizeof(double)); + } + + // Reset timer + timer = (unsigned int)-1; + + // Work over complete P dimension with one core only + p_start = 0; + p_end = gemm_l.N; + m_start = (gemm_l.M / num_cores) * cid; + m_end = (gemm_l.M / num_cores) * (cid + 1); + + // Parallelization partition control + uint32_t nrelem_a = KERNEL_M * gemm_l.K; + uint32_t nrelem_b = KERNEL_N * gemm_l.K; + uint32_t nrelem_c = KERNEL_M * gemm_l.N; + + // Work over complete K dimension + unsigned int inner_loops = gemm_l.K / KERNEL_K; + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Initialize matrices + if (cid == 0) { + snrt_dma_start_1d(a, gemm_A_dram, gemm_l.M * gemm_l.K * sizeof(double)); + snrt_dma_start_1d(b, gemm_B_dram, gemm_l.K * gemm_l.N * sizeof(double)); + snrt_dma_start_1d(c, gemm_C_dram, gemm_l.M * gemm_l.N * sizeof(double)); + snrt_dma_wait_all(); + } + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // Calculate matmul + for (unsigned int i = 0; i < measure_iterations; ++i) { + // Start timer + timer_start = benchmark_get_cycle(); + + // Start dump + if (cid == 0) + start_kernel(); + + matmul_tiled_Bx4(c, a, b, KERNEL_M, KERNEL_N, KERNEL_K, gemm_l.N, gemm_l.K, + inner_loops, m_start, m_end, p_end, vl, nrelem_a, nrelem_b, + nrelem_c); + + // Wait for all cores to finish + snrt_cluster_hw_barrier(); + + // End dump + if (cid == 0) + stop_kernel(); + + // End timer and check if new best runtime + timer_end = benchmark_get_cycle(); + unsigned int timer_temp = timer_end - timer_start; + if (cid == 0) { + if (timer_temp < timer) { + timer = timer_temp; + } + } + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + // Check and display results + if (cid == 0) { + long unsigned int performance = + 1000 * 2 * gemm_l.M * gemm_l.N * gemm_l.K / timer; + long unsigned int utilization = performance / (2 * 2 * 4); + + printf("\n----- (%dx%d) dp fmatmul -----\n", gemm_l.M, gemm_l.N); + printf("The execution took %u cycles.\n", timer); + printf("The performance is %ld OP/1000cycle (%ld%%o utilization).\n", + performance, utilization); + } + + if (cid == 0) { +#ifdef PRINT_RESULT + // Print results one by one. + for (unsigned int i = 0; i < gemm_l.M; ++i) { + for (unsigned int j = 0; j < gemm_l.N; ++j) { + printf("C[%d][%d] = %f\n", i, j, c[i * gemm_l.N + j]); + } + } +#endif +#ifdef CHECK + // Calculate and print checksums + for (unsigned int i = 0; i < gemm_l.M; i++) { + double checksum = 0; + for (unsigned int j = 0; j < gemm_l.N; j++) { + checksum += c[i * gemm_l.N + j]; + } + printf("Checksum[%d]=%f\n", i, checksum); + double diff = checksum - (double)gemm_checksum[i]; + if (diff < 0) + diff = -diff; + if (diff > 0.001) { + return i == 0 ? -1 : (int)i; + } + } +#endif + } + + // Wait for all cores finish + snrt_cluster_hw_barrier(); + + return 0; +} diff --git a/sw/spatzBenchmarks/dp-mxfmatmul/script/gen_data.py b/sw/spatzBenchmarks/dp-mxfmatmul/script/gen_data.py new file mode 100644 index 00000000..d396749c --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul/script/gen_data.py @@ -0,0 +1,592 @@ +#!/usr/bin/env python3 +# Copyright 2022 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Author: Tim Fischer + +import numpy as np +import torch +import torch.nn as nn +import argparse +import pathlib +import hjson +import struct + +np.random.seed(42) +torch.manual_seed(42) + +global verbose + + +def array_to_cstr(a, fmt=float): + out = '{' + if fmt == float: + if isinstance(a, np.ndarray): + a = a.flat + if isinstance(a, torch.Tensor): + a = a.numpy().flat + for el in a: + out += '{}, '.format(el) + else: + for sign, exp, mant in zip(a['sign'].numpy().flat, a['exponent'].numpy().flat, a['mantissa'].numpy().flat): + value = sign * 2**7 + exp * 2**2 + mant + out += "0x{:02x}, ".format(value) + out = out[:-2] + '}' + return out + + +def emit_header_file(layer_type: str, **kwargs): + + file_path = pathlib.Path(__file__).parent.parent / 'data' + emit_str = "// Copyright 2022 ETH Zurich and University of Bologna.\n" + \ + "// Licensed under the Apache License, Version 2.0, see LICENSE for details.\n" + \ + "// SPDX-License-Identifier: Apache-2.0\n\n" + + if layer_type == 'Conv2d': + file = file_path / 'data_conv2d.h' + emit_str += emit_conv2d_layer(**kwargs) + elif layer_type == 'GEMM': + file = file_path / 'data_gemm.h' + emit_str += emit_GEMM_layer(**kwargs) + elif layer_type == 'Print': + file = file_path / 'result_check.h' + emit_str += emit_Print_layer(**kwargs) + elif layer_type == 'BatchNorm': + file = file_path / 'data_batchnorm.h' + emit_str += emit_batchnorm_layer(**kwargs) + elif layer_type == 'MaxPool': + file = file_path / 'data_maxpool.h' + emit_str += emit_maxpool_layer(**kwargs) + elif layer_type == 'FusedConv': + file = file_path / 'data_fusedconv.h' + emit_str += emit_fusedconv(**kwargs) + with file.open('w') as f: + f.write(emit_str) + + +def emit_conv2d_layer(name='conv2d', **kwargs): + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + weights = kwargs['weights'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + _, fh, fw, _ = weights.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {fh},\n' + layer_str += f'\t.FW = {fw}\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_weights_dram[{co}][{ci}][{fh}][{fw}] = ' + array_to_cstr(weights) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_linear_layer(input, weights, ofmap): + + layer_str = '' + return layer_str + + +def emit_GEMM_layer(name='gemm', **kwargs): + mat_A = kwargs['A'] + mat_B = kwargs['B'] + mat_C = kwargs['C'] + result = kwargs['result'] + + m = kwargs['M'] + n = kwargs['N'] + k = kwargs['K'] + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'const gemm_layer {name}_l = {{\n' + layer_str += f'\t.M = {m},\n' + layer_str += f'\t.N = {n},\n' + layer_str += f'\t.K = {k},\n' + layer_str += f'\t.TA = {int(kwargs["ta"])},\n' + layer_str += f'\t.TB = {int(kwargs["tb"])},\n' + layer_str += f'\t.ALPHA = {kwargs["alpha"]},\n' + layer_str += f'\t.dtype = FP{kwargs["prec"]},\n' + layer_str += f'\t.expand = {kwargs["expand"]}\n' + layer_str += '};\n\n\n' + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str += f'{dtype} r[{m}] __attribute__((section(".l1")));\n\n' + + if dtype != 'char': + layer_str += f'static {dtype} {name}_A_dram [{m}*{k}] = ' + array_to_cstr(mat_A) + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}*{n}] = ' + array_to_cstr(mat_B) + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}*{n}] = ' + array_to_cstr(mat_C) + ';\n\n\n' + layer_str += f'static {dtype} {name}_checksum[{m}] = ' + array_to_cstr(torch.sum(result, dim=-1)) + ';\n\n\n' + else: + layer_str += f'static {dtype} {name}_A_dram [{m}][{k}] = ' + \ + array_to_cstr(kwargs['bits_A'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_B_dram [{k}][{n}] = ' + \ + array_to_cstr(kwargs['bits_B'], fmt='char') + ';\n\n\n' + layer_str += f'static {dtype} {name}_C_dram [{m}][{n}] = ' + \ + array_to_cstr(kwargs['bits_C'], fmt='char') + ';\n\n\n' + + return layer_str + + +def emit_Print_layer(mat): + result_str = "// Results Print:\n" + for row in mat: + line = " ".join(str(struct.unpack('f', struct.pack('f', x))[0]) for x in row) + result_str += "// " + line + "\n" + return result_str + + +def emit_batchnorm_layer(name='batchnorm', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + beta = kwargs['beta'] + gamma = kwargs['gamma'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_beta_dram[{ci}] = ' + array_to_cstr(beta) + ';\n\n\n' + layer_str += f'static double {name}_gamma_dram[{ci}] = ' + array_to_cstr(gamma) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_maxpool_layer(name='maxpool', **kwargs): + + ifmap = kwargs['ifmap'] + ofmap = kwargs['ofmap'] + k = kwargs['kernel_size'] + + n, ih, iw, ci = ifmap.shape + _, oh, ow, co = ofmap.shape + + layer_str = '' + layer_str += '#include "layer.h"\n\n' + layer_str += f'conv_layer {name}_l = {{\n' + layer_str += f'\t.CO = {co},\n' + layer_str += f'\t.CI = {ci},\n' + layer_str += f'\t.IH = {ih},\n' + layer_str += f'\t.IW = {iw},\n' + layer_str += f'\t.OH = {oh},\n' + layer_str += f'\t.OW = {ow},\n' + layer_str += f'\t.FH = {k},\n' + layer_str += f'\t.FW = {k},\n' + layer_str += '};\n\n\n' + + layer_str += f'static double {name}_result[{oh}][{ow}][{co}] __attribute__((section(".data")));\n\n' + layer_str += f'static double {name}_checksum[{oh}][{ow}] = ' + array_to_cstr(torch.sum(ofmap, dim=-1)) + ';\n\n\n' + layer_str += f'static double {name}_ifmap_dram[{ih}][{iw}][{ci}] = ' + array_to_cstr(ifmap) + ';\n\n\n' + layer_str += f'static double {name}_ofmap_dram[{oh}][{ow}][{co}] = ' + array_to_cstr(ofmap) + ';\n\n\n' + + return layer_str + + +def emit_fusedconv(name='fusedconv', **kwargs): + + ifmap = kwargs['ifmap'] + kernel = kwargs['kernel'] + bn_k = kwargs['bn_k'] + bn_l = kwargs['bn_l'] + ofmap = kwargs['ofmap'] + ofmap_before = kwargs['ofmap_before'] + ifmap_padded = kwargs['ifmap_padded'] + + padding = kwargs['padding'] + + if kwargs['depthwise']: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + fh, fw, co = kernel.shape + ci = co + ih_pad, iw_pad, _ = ifmap_padded.shape + elif kwargs['chw_layer']: + ci, ih, iw = ifmap.shape + oh, ow, co = ofmap.shape + co, ci, fh, fw = kernel.shape + _, ih_pad, iw_pad = ifmap_padded.shape + else: + ih, iw, ci = ifmap.shape + oh, ow, co = ofmap.shape + _, fh, fw, _ = kernel.shape + ih_pad, iw_pad, _ = ifmap_padded.shape + + ctypes = { + '64': 'double', + '32': 'float', + '16': '__fp16', + '8': 'char' + } + + dtype = ctypes[str(kwargs['prec'])] + + layer_str = '#include \n' + layer_str += '#include "conv2d.h"\n\n' + layer_str += 'kernel_fp32 k = {\n' + layer_str += f'\t.ch_in = {ci},\n' + layer_str += f'\t.ch_out = {co},\n' + layer_str += f'\t.dim_in_x = {iw},\n' + layer_str += f'\t.dim_in_y = {ih},\n' + layer_str += f'\t.dim_kernel_x = {fw},\n' + layer_str += f'\t.dim_kernel_y = {fh},\n' + layer_str += f'\t.dim_out_x = {ow},\n' + layer_str += f'\t.dim_out_y = {oh},\n' + layer_str += f'\t.padding_y_top = {padding["padding_y_top"]},\n' + layer_str += f'\t.padding_y_bottom = {padding["padding_y_bottom"]},\n' + layer_str += f'\t.padding_x_left = {padding["padding_x_left"]},\n' + layer_str += f'\t.padding_x_right = {padding["padding_x_right"]},\n' + layer_str += f'\t.stride_x = {kwargs["stride"]["stride_x"]},\n' + layer_str += f'\t.stride_y = {kwargs["stride"]["stride_y"]},\n' + layer_str += f'\t.flag_relu = {kwargs["flags"]["flag_relu"]},\n' + layer_str += f'\t.flag_batch_norm = {kwargs["flags"]["flag_batch_norm"]},\n' + layer_str += f'\t.flag_y_accumulate_start = {kwargs["flags"]["flag_y_accumulate_start"]},\n' + layer_str += f'\t.flag_y_accumulate_end = {kwargs["flags"]["flag_y_accumulate_end"]},\n' + layer_str += '};\n\n' + layer_str += f'uint32_t dw = {kwargs["depthwise"]};\n' + layer_str += f'uint32_t chw_layer = {kwargs["chw_layer"]};\n' + + layer_str += f'static {dtype} {name}_pInBuffer_dram[{ih_pad}][{iw_pad}][{ci}] = ' + \ + array_to_cstr(ifmap_padded) + ';\n\n' + layer_str += f'static {dtype} {name}_pWeight_dram[{co}][{fh}][{fw}][{ci}] = {array_to_cstr(kernel)};\n\n' + layer_str += f'static {dtype} {name}_lambda_dram[{ci}] = {array_to_cstr(bn_l)};\n\n' + layer_str += f'static {dtype} {name}_kappa_dram[{ci}] = {array_to_cstr(bn_k)};\n\n' + layer_str += f'static {dtype} {name}_pOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap_before)};\n\n' + layer_str += f'static {dtype} {name}_pCheckOutBuffer_dram[{oh}][{ow}][{co}] = {array_to_cstr(ofmap)};\n\n' + + return layer_str + + +def rand_data_generator(shape, prec, alt=False): + if prec == 64: + return torch.randn(shape, requires_grad=False, dtype=torch.float64), {} + elif prec == 32: + return torch.randn(shape, requires_grad=False, dtype=torch.float32), {} + elif prec == 16: + if alt: + return torch.randn(shape, requires_grad=False, dtype=torch.bfloat16), {} + else: + return torch.randn(shape, requires_grad=False, dtype=torch.float16), {} + elif prec == 8: + sign = torch.randint(0, 2, shape, requires_grad=False, dtype=torch.uint8) # -1 or 1 + exponent = torch.randint(0, 16, shape, requires_grad=False, dtype=torch.uint8) # < 0b01111 + mantissa = torch.randint(0, 4, shape, requires_grad=False, dtype=torch.uint8) # can be arbitrary + bits = {'sign': sign, 'exponent': exponent, 'mantissa': mantissa} + # TODO: not actually correct + return ((-1.0)**sign.double()) * (2.0**(exponent.double() - 15.0)) * (1.0 + mantissa.double() / (2**2)), bits + + +def conv2d(ifmap, weights, padding=1, stride=1): + n, ci, ih, iw = ifmap.shape + co, _, fh, fw = weights.shape + + conv2d = nn.Conv2d(ci, co, (fh, fw), padding=((fh - 1) // 2, (fw - 1) // 2)) + conv2d.weight = nn.Parameter(weights, requires_grad=False) + conv2d.bias = nn.Parameter(torch.zeros_like(conv2d.bias, dtype=weights.dtype), requires_grad=False) + ofmap = conv2d(ifmap) + + return ofmap + + +def max_pooling(ifmap, kernel): + n, ci, ih, iw = ifmap.shape + max_pool = nn.MaxPool2d(kernel_size=kernel) + ofmap = max_pool(ifmap) + + return ofmap + + +def batchnorm(ifmap): + n, ci, ih, iw = ifmap.shape + bn = torch.nn.BatchNorm2d(ci) + bn.weight.requires_grad = False + bn.bias.requires_grad = False + running_mean = torch.randn_like(bn.running_mean, requires_grad=False) + running_var = torch.rand_like(bn.running_var, requires_grad=False) + gamma = bn.weight / torch.sqrt(running_var + bn.eps) + beta = bn.bias - running_mean * bn.weight / torch.sqrt(running_var + bn.eps) + ofmap = ifmap * gamma.unsqueeze(-1).unsqueeze(-1) + beta.unsqueeze(-1).unsqueeze(-1) + + return ofmap, gamma, beta + + +def fused_conv(ifmap, weights, bn_k, bn_l, padding, stride, bn, relu, accumulate, depthwise): + + ih, iw, ci = ifmap.shape + if not depthwise: + co, fh, fw, _ = weights.shape + else: + fh, fw, co = weights.shape + ci = co + + ifmap_padded = torch.zeros(ih + padding['padding_y_top'] + padding['padding_y_bottom'], + iw + padding['padding_x_left'] + padding['padding_x_right'], + ci, + requires_grad=False, dtype=ifmap.dtype) + ifmap_padded[padding['padding_y_top']:ih + padding['padding_y_top'], + padding['padding_x_left']:iw + padding['padding_x_left']] = ifmap + + # Don't cover undefined behaviour when there are steps without a complete kernel window + if (ifmap_padded.shape[0] - (fh - 1) - 1) % stride['stride_y'] != 0: + print("Warning: rounding h output dimension") + if (ifmap_padded.shape[1] - (fw - 1) - 1) % stride['stride_x'] != 0: + print("Warning: rounding w output dimension") + + ofmap = torch.zeros((ifmap_padded.shape[0] - (fh - 1) - 1) // stride['stride_y'] + 1, + (ifmap_padded.shape[1] - (fw - 1) - 1) // stride['stride_x'] + 1, co) + if accumulate: + ofmap_before = torch.randn_like(ofmap, requires_grad=False) + else: + ofmap_before = torch.zeros_like(ofmap, requires_grad=False) + + if verbose: + print(ifmap.shape, ifmap_padded.shape, ofmap.shape) + + if (depthwise): + # depthwise Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw, c].flatten(), weights[:, :, c].flatten()) + else: + # Conv2d + for h in range(0, ifmap_padded.shape[0] - (fh - 1), stride['stride_y']): + for w in range(0, ifmap_padded.shape[1] - (fw - 1), stride['stride_x']): + for c in range(co): + ofmap[h // stride['stride_y'], w // stride['stride_x'], + c] = torch.dot(ifmap_padded[h:h + fh, w:w + fw].flatten(), weights[c].flatten()) + + ofmap += ofmap_before + + # BatchNorm + if bn: + ofmap = ofmap * bn_k + bn_l + + # ReLU + if relu: + ofmap = torch.nn.functional.relu(ofmap) + + return ofmap, ofmap_before, ifmap_padded + + +def main(): + + parser = argparse.ArgumentParser(description='Generate data for kernels') + parser.add_argument( + "-c", + "--cfg", + type=pathlib.Path, + required=True, + help='Select param config file kernel' + ) + parser.add_argument( + "-v", + "--verbose", + action='store_true', + help='Set verbose' + ) + + args = parser.parse_args() + + global verbose + verbose = args.verbose + + with args.cfg.open() as f: + param = hjson.loads(f.read()) + + if param['prec'] == 64: + dtype = torch.float64 + elif param['prec'] == 16: + dtype = torch.float16 + elif param['prec'] == 8: + dtype = None + else: + dtype = torch.float32 + + if param['kernel'] == 'Conv2d': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + weights = torch.randn(param['channels']['out'], + param['channels']['in'], + param['filter']['height'], + param['filter']['width'], requires_grad=False, dtype=dtype) + + ofmap = conv2d(ifmap, weights, + padding=param['filter']['padding'], + stride=param['filter']['stride']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + weights = weights.permute(0, 2, 3, 1) + kwargs = {'ifmap': ifmap, 'weights': weights, 'ofmap': ofmap} + emit_header_file('Conv2d', **kwargs) + + elif param['kernel'] == 'GEMM': + mat_A, bits_A = rand_data_generator((param['M'], param['K']), param['prec']) + mat_B, bits_B = rand_data_generator((param['K'], param['N']), param['prec']) + mat_C, bits_C = rand_data_generator((param['M'], param['N']), param['prec']) + + print("Mat_A Original:") + for row in mat_A: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + print("Mat_B Original:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + result = param['alpha'] * mat_C + torch.matmul(mat_A, mat_B) + + print("Result:") + for row in result: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + if param['transpose_A']: + mat_A = mat_A.T + if param['transpose_B']: + mat_B = mat_B.T + + print("Mat_B Transposed:") + for row in mat_B: + print(" ".join(str(struct.unpack('i', struct.pack('f', x))[0]) for x in row)) + + kwargs = { + 'A': mat_A, + 'B': mat_B, + 'C': mat_C, + 'result': result, + 'M': param['M'], + 'N': param['N'], + 'K': param['K'], + 'ta': param['transpose_A'], + 'tb': param['transpose_B'], + 'alpha': param['alpha'], + 'prec': param['prec'], + 'expand': param['expand'], + 'bits_A': bits_A, + 'bits_B': bits_B, + 'bits_C': bits_C + } + + emit_header_file('GEMM', **kwargs) + emit_header_file('Print', mat=result) + + elif param['kernel'] == 'BatchNorm': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap, gamma, beta = batchnorm(ifmap) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'beta': beta, 'gamma': gamma, 'ofmap': ofmap} + emit_header_file('BatchNorm', **kwargs) + + elif param['kernel'] == 'MaxPool': + ifmap = torch.randn(1, param['channels']['in'], + param['input_dim']['height'], + param['input_dim']['width'], requires_grad=False, dtype=dtype) + + ofmap = max_pooling(ifmap, param['kernel_size']) + + # convert from CHW to HWC format + ifmap = ifmap.permute(0, 2, 3, 1) + ofmap = ofmap.permute(0, 2, 3, 1) + + kwargs = {'ifmap': ifmap, 'ofmap': ofmap, 'kernel_size': param['kernel_size']} + emit_header_file('MaxPool', **kwargs) + + elif param['kernel'] == 'FusedConv': + ifmap = torch.randn(param['dim_in_y'], param['dim_in_x'], param['ch_in'], requires_grad=False, dtype=dtype) + if not param['depthwise']: + kernel = torch.randn(param['ch_out'], param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + else: + kernel = torch.randn(param['dim_kernel_y'], param['dim_kernel_x'], + param['ch_in'], requires_grad=False, dtype=dtype) + + bn_k = torch.randn(param['ch_out'], requires_grad=False) + bn_l = torch.randn(param['ch_out'], requires_grad=False) + + ofmap, ofmap_before, ifmap_padded = fused_conv(ifmap, + kernel, + bn_k, + bn_l, + param['padding'], + param['stride'], + param['flags']['flag_batch_norm'], + param['flags']['flag_relu'], + not param['flags']['flag_y_accumulate_start'], + param['depthwise']) + + if param['chw_layer']: + ifmap = ifmap.permute(2, 0, 1) + ifmap_padded = ifmap_padded.permute(2, 0, 1) + kernel = kernel.permute(0, 3, 1, 2) + + kwargs = { + 'ifmap': ifmap, + 'ifmap_padded': ifmap_padded, + 'ofmap': ofmap, + 'ofmap_before': ofmap_before, + 'kernel': kernel, + 'bn_k': bn_k, + 'bn_l': bn_l, + 'padding': param['padding'], + 'stride': param['stride'], + 'prec': param['prec'], + 'flags': param['flags'], + 'depthwise': param['depthwise'], + 'chw_layer': param['chw_layer'] + } + emit_header_file('FusedConv', **kwargs) + + else: + print("No valid kernel selected") + + +if __name__ == '__main__': + main() diff --git a/sw/spatzBenchmarks/dp-mxfmatmul/script/matmul.json b/sw/spatzBenchmarks/dp-mxfmatmul/script/matmul.json new file mode 100644 index 00000000..3eb11985 --- /dev/null +++ b/sw/spatzBenchmarks/dp-mxfmatmul/script/matmul.json @@ -0,0 +1,17 @@ +// Copyright 2020 ETH Zurich and University of Bologna. +// Solderpad Hardware License, Version 0.51, see LICENSE for details. +// SPDX-License-Identifier: SHL-0.51 + +// Parameters for a GEMM + +{ + kernel: "GEMM" + M: 64, + N: 64, + K: 64, + alpha: 0, + transpose_A: false, + transpose_B: true, + prec: 64, + expand: 0 +} diff --git a/sw/toolchain/llvm-project.version b/sw/toolchain/llvm-project.version index ab638f62..798955e8 100644 --- a/sw/toolchain/llvm-project.version +++ b/sw/toolchain/llvm-project.version @@ -1 +1 @@ -b494f2d8dde88723026db8ec16ac6c7ee1e140ca +91be672f4ebdc4fcc3a9e57b342eb85bddb2d642 \ No newline at end of file diff --git a/sw/toolchain/riscv-opcodes.version b/sw/toolchain/riscv-opcodes.version index d1be7081..b804a2f5 100644 --- a/sw/toolchain/riscv-opcodes.version +++ b/sw/toolchain/riscv-opcodes.version @@ -1 +1 @@ -e46a55a13117db225749a6064f9308eae9ae541d +f8e0f329ad7f7dee6ab944929f8375c550922f8e \ No newline at end of file