blob: fb83393ba7dd96c31015875561cccbd60653c363 [file] [log] [blame]
// 1D FFT.
func.func @fft_1d() {
%input = util.unfoldable_constant dense<[(0.21740782,0.059113156), (0.778621,0.6152795), (0.6581351,0.72274965), (0.85420084,0.5449456), (0.8268271,0.059995476), (0.1314825,0.99552083), (0.07452258,0.97213143), (0.72783166,0.64232296), (0.21783765,0.077186435), (0.2372208,0.9866753), (0.76789004,0.7888627), (0.7672063,0.11202169), (0.20171618,0.71090525), (0.5671336,0.5172962), (0.5653311,0.13171488), (0.6019718,0.22600187), (0.7669061,0.99419916), (0.7296996,0.19616151), (0.49405196,0.23033695), (0.91676044,0.14108129), (0.25893882,0.5168747), (0.0022013448,0.45859325), (0.6937525,0.12294605), (0.14645115,0.8247891), (0.6886818,0.58247185), (0.15621811,0.4682121), (0.7700238,0.4526145), (0.8244305,0.7325929), (0.004420892,0.5293484), (0.0894202,0.36284673), (0.297367,0.76520026), (0.7746221,0.8835885)]> : tensor<32xcomplex<f32>>
%0 = stablehlo.fft %input, type = FFT, length = [32] : (tensor<32xcomplex<f32>>) -> tensor<32xcomplex<f32>>
%1 = stablehlo.real %0 : (tensor<32xcomplex<f32>>) -> tensor<32xf32>
%2 = stablehlo.imag %0 : (tensor<32xcomplex<f32>>) -> tensor<32xf32>
check.expect_almost_eq_const(%1, dense<[15.809282, 0.21465153, 1.181782, -0.60642904, 0.013650537, -0.9517257, 0.43036938, 0.98342496, -0.6450963, -2.5143266, -0.7090554, -1.3734092, -0.39120948, 0.28289393, -0.8894674, -0.40649498, -0.801661, -0.7713141, -2.8925278, -0.5026806, 1.5893525, -3.5212724, 1.3363503, 2.5882864, -1.6315789, -0.8786793, 0.077445, 0.4787432, 1.1839279, -0.29849604, 2.0874598, -1.5151438]> : tensor<32xf32>) : tensor<32xf32>
check.expect_almost_eq_const(%2, dense<[16.424582, 1.0421104, -1.6126406, -1.8765254, -2.0437074, -0.34451416, 1.5531765, 0.13303947, 2.2650156, -4.2676077, -1.4725999, -1.0876011, -1.3087398, 1.2196933, 1.8778068, -3.174349, -0.9912782, -0.66518277, 0.6316352, -2.4745326, -0.28285468, 0.21321717, 2.3605132, -4.4211693, -3.57794, -1.9363232, 0.5097058, -0.54355776, 3.218689, 1.0246719, -0.6983651, 2.1972544]> : tensor<32xf32>) : tensor<32xf32>
return
}
// 1D IFFT. This is the inverse of the @fft_1d() so should give back the original inputs (within floating point error).
func.func @ifft_1d() {
%input = util.unfoldable_constant dense<[(15.809282,16.424582), (0.21465153,1.0421104), (1.181782,-1.6126406), (-0.60642904,-1.8765254), (0.013650537,-2.0437074), (-0.9517257,-0.34451416), (0.43036938,1.5531765), (0.98342496,0.13303947), (-0.6450963,2.2650156), (-2.5143266,-4.2676077), (-0.7090554,-1.4725999), (-1.3734092,-1.0876011), (-0.39120948,-1.3087398), (0.28289393,1.2196933), (-0.8894674,1.8778068), (-0.40649498,-3.174349), (-0.801661,-0.9912782), (-0.7713141,-0.66518277), (-2.8925278,0.6316352), (-0.5026806,-2.4745326), (1.5893525,-0.28285468), (-3.5212724,0.21321717), (1.3363503,2.3605132), (2.5882864,-4.4211693), (-1.6315789,-3.57794), (-0.8786793,-1.9363232), (0.077445,0.5097058), (0.4787432,-0.54355776), (1.1839279,3.218689), (-0.29849604,1.0246719), (2.0874598,-0.6983651), (-1.5151438,2.1972544)]> : tensor<32xcomplex<f32>>
%0 = stablehlo.fft %input, type = IFFT, length = [32] : (tensor<32xcomplex<f32>>) -> tensor<32xcomplex<f32>>
%1 = stablehlo.real %0 : (tensor<32xcomplex<f32>>) -> tensor<32xf32>
%2 = stablehlo.imag %0 : (tensor<32xcomplex<f32>>) -> tensor<32xf32>
check.expect_almost_eq_const(%1, dense<[0.21740788, 0.77862084, 0.65813524, 0.8542007, 0.8268271, 0.13148248, 0.074522644, 0.72783166, 0.21783769, 0.23722076, 0.7678901, 0.7672063, 0.20171624, 0.56713355, 0.5653311, 0.60197186, 0.7669061, 0.7296995, 0.49405202, 0.91676044, 0.25893885, 0.0022013485, 0.6937525, 0.1464513, 0.68868184, 0.15621811, 0.7700238, 0.82443047, 0.0044209138, 0.08942017, 0.29736707, 0.7746221]> : tensor<32xf32>) : tensor<32xf32>
check.expect_almost_eq_const(%2, dense<[0.059113204, 0.61527944, 0.72274965, 0.54494566, 0.059995517, 0.99552083, 0.9721315, 0.642323, 0.077186525, 0.98667526, 0.7888627, 0.112021744, 0.7109053, 0.51729625, 0.13171494, 0.22600201, 0.9941992, 0.19616154, 0.23033696, 0.14108133, 0.5168747, 0.45859325, 0.12294614, 0.82478905, 0.5824719, 0.4682121, 0.45261455, 0.7325928, 0.5293485, 0.3628468, 0.7652003, 0.88358855]> : tensor<32xf32>) : tensor<32xf32>
return
}
// 1D RFFT.
func.func @rfft_1d() {
%input = util.unfoldable_constant dense<[0.7555577, 0.66894025, 0.36586154, 0.24478266, 0.7804641, 0.9256327, 0.42047995, 0.44436365, 0.9899847, 0.97323716, 0.21359204, 0.23445652, 0.38268244, 0.9832261, 0.81922436, 0.033826284, 0.87232935, 0.9702218, 0.795888, 0.05799015, 0.22904389, 0.42274877, 0.70018625, 0.46720484, 0.04191081, 0.26426974, 0.123912655, 0.6813819, 0.78704375, 0.16205642, 0.33862734, 0.43718913]> : tensor<32xf32>
%0 = stablehlo.fft %input, type = RFFT, length = [32] : (tensor<32xf32>) -> tensor<17xcomplex<f32>>
%1 = stablehlo.real %0 : (tensor<17xcomplex<f32>>) -> tensor<17xf32>
%2 = stablehlo.imag %0 : (tensor<17xcomplex<f32>>) -> tensor<17xf32>
check.expect_almost_eq_const(%1, dense<[16.588318, -0.46602482, 0.8568451, -1.1161734, 0.86731994, -0.5296755, 0.7260204, 3.421573, 1.0612442, -0.33810878, -0.7522839, -1.0411217, 0.09377679, -0.48347437, 1.5533843, -0.38116747, 0.6452608]> : tensor<17xf32>) : tensor<17xf32>
check.expect_almost_eq_const(%2, dense<[0.0, -2.0378456, -0.33985636, 0.6871074, 0.62438464, -0.90058994, -1.6517396, 2.8402321, -2.7691374, 0.4236927, -0.21823317, 1.0264674, -0.9341428, -0.76218516, 0.45277753, -0.24614418, 0.0]> : tensor<17xf32>) : tensor<17xf32>
return
}
// 1D IRFFT. This is the inverse of the @rfft_1d() so should give back the original inputs (within floating point error).
func.func @irfft_1d() {
%input = util.unfoldable_constant dense<[(16.588318,0.0), (-0.46602482,-2.0378456), (0.8568451,-0.33985636), (-1.1161734,0.6871074), (0.86731994,0.62438464), (-0.5296755,-0.90058994), (0.7260204,-1.6517396), (3.421573,2.8402321), (1.0612442,-2.7691374), (-0.33810878,0.4236927), (-0.7522839,-0.21823317), (-1.0411217,1.0264674), (0.09377679,-0.9341428), (-0.48347437,-0.76218516), (1.5533843,0.45277753), (-0.38116747,-0.24614418), (0.6452608,0.0)]> : tensor<17xcomplex<f32>>
%0 = stablehlo.fft %input, type = IRFFT, length = [32] : (tensor<17xcomplex<f32>>) -> tensor<32xf32>
check.expect_almost_eq_const(%0, dense<[0.75555766, 0.6689402, 0.3658616, 0.24478275, 0.78046405, 0.9256327, 0.42048004, 0.4443637, 0.98998463, 0.97323704, 0.21359204, 0.2344566, 0.38268244, 0.9832261, 0.81922436, 0.033826366, 0.87232935, 0.97022176, 0.795888, 0.05799026, 0.22904384, 0.42274877, 0.7001864, 0.46720487, 0.041910768, 0.26426968, 0.12391268, 0.6813819, 0.7870437, 0.16205639, 0.33862743, 0.43718916]> : tensor<32xf32>) : tensor<32xf32>
return
}
// 1D FFT on the innermost dimension of a 2D tensor.
func.func @fft_2d() {
%input = util.unfoldable_constant dense<[
[(0.42454708,0.7497621), (0.041191377,0.24758165), (0.9155005,0.30770782), (0.69764674,0.47274446), (0.27280706,0.09685069), (0.27244803,0.6469661), (0.45826593,0.06985904), (0.17154603,0.5261565), (0.6523637,0.820176), (0.32919556,0.4717106), (0.8333855,0.95131546), (0.89933527,0.8346497), (0.3267901,0.9024905), (0.47070992,0.43240488), (0.16493955,0.4907118), (0.8751768,0.30994684)],
[(0.072277926,0.5039501), (0.61777425,0.6453685), (0.41861197,0.08201122), (0.30265653,0.91535634), (0.7986402,0.9821573), (0.3239637,0.003923847), (0.75269574,0.21496418), (0.17242455,0.61933064), (0.01895543,0.80924535), (0.5124663,0.7291264), (0.59209484,0.5294732), (0.33796164,0.42183158), (0.7656568,0.73263705), (0.35979486,0.37526408), (0.164532,0.8300676), (0.85192627,0.24418339)],
[(0.33077067,0.4551394), (0.3496145,0.45954412), (0.79393107,0.29244488), (0.34820843,0.94946045), (0.08508753,0.024036057), (0.47641373,0.53241944), (0.23593518,0.4791656), (0.79054934,0.093083896), (0.73827904,0.6110654), (0.7532118,0.99266475), (0.22236909,0.5867702), (0.78232795,0.8468902), (0.5382191,0.3066704), (0.15715897,0.5654445), (0.55649596,0.6326622), (0.12317861,0.5280109)],
[(0.21837069,0.71890926), (0.7455676,0.44287434), (0.07003461,0.06407995), (0.6162736,0.9908965), (0.61905116,0.6671045), (0.042929675,0.7973596), (0.98639303,0.54450244), (0.6618752,0.43036643), (0.836061,0.317677), (0.73150545,0.007642518), (0.74348444,0.84124154), (0.075450204,0.2211669), (0.00040107843,0.36333412), (0.583956,0.46722978), (0.7215287,0.21090023), (0.27178788,0.6077055)]
]> : tensor<4x16xcomplex<f32>>
%0 = stablehlo.fft %input, type = FFT, length = [16] : (tensor<4x16xcomplex<f32>>) -> tensor<4x16xcomplex<f32>>
%1 = stablehlo.real %0 : (tensor<4x16xcomplex<f32>>) -> tensor<4x16xf32>
%2 = stablehlo.imag %0 : (tensor<4x16xcomplex<f32>>) -> tensor<4x16xf32>
check.expect_almost_eq_const(%1, dense<[
[7.805849, -1.6919737, 0.60172385, 0.18577386, -1.0404179, -0.24456988, 0.51018083, 0.6593251, 0.2913494, -2.1790113, 1.7498081, -0.2368039, -0.35074925, -0.018270746, -0.9524586, 1.7029977],
[7.0624332, -0.03740543, -0.28083432, 0.11331892, -0.7194233, 1.5153583, -0.5878404, -0.48429328, 0.10449672, -1.9367342, -3.5323877, -0.93127775, 0.1746149, 1.6701523, -1.4911921, 0.5174611],
[7.281751, -1.9599283, 1.4732273, -1.7071457, 0.01625204, -2.2114697, 1.5814412, 1.7941546, -0.27957582, 1.2079792, -1.0469666, -0.43757004, -0.24900198, 0.2028476, -0.22472948, -0.1489349],
[7.92467, -0.10961914, 0.90454286, -1.8976498, -1.3825861, 1.6239735, -0.93979514, -0.22308028, 0.46597958, -2.472485, 0.2652536, 0.7544172, -0.31252754, -0.29754913, 1.5099164, -2.31953]
]> : tensor<4x16xf32>) : tensor<4x16xf32>
check.expect_almost_eq_const(%2, dense<[
[8.331034, -0.31785518, -1.2684538, 0.89480937, 2.2798452, 0.8055793, 2.1586416, 1.359981, 0.44671297, -0.5609837, 0.15828645, -1.3595346, -0.78047466, 0.007536173, 1.2339137, -1.3928434],
[8.638891, -0.32050958, -0.17059809, -1.1554592, 1.2224436, 1.3143142, -0.7213407, 0.5179115, 0.73012114, -0.7054142, -0.81955785, -0.21269265, 1.5205038, -1.6415049, 0.10510093, -0.23900717],
[8.355473, -0.0135094635, -0.5539615, -1.1374638, -0.28626633, 0.44947028, 1.0547199, -0.48714536, -1.5795641, 0.05378939, 1.57722, -0.23645878, -0.90199685, 0.6990721, 0.8640148, -0.57516223],
[7.6929903, -0.13423741, -0.2282129, 1.5490448, -0.07227099, 0.07735066, -0.61968464, -0.9431027, -0.23749232, -1.2936282, 2.0293136, 2.639404, 0.88487256, 0.48084372, -1.1568255, 0.8341831]
]> : tensor<4x16xf32>) : tensor<4x16xf32>
return
}
// 1D IFFT on the innermost dimension of a 2D tensor. This is the inverse of the @fft_2d() so should give back the original inputs (within floating point error).
func.func @ifft_2d() {
%input = util.unfoldable_constant dense<[
[(7.805849,8.331034), (-1.6919737,-0.31785518), (0.60172385,-1.2684538), (0.18577386,0.89480937), (-1.0404179,2.2798452), (-0.24456988,0.8055793), (0.51018083,2.1586416), (0.6593251,1.359981), (0.2913494,0.44671297), (-2.1790113,-0.5609837), (1.7498081,0.15828645), (-0.2368039,-1.3595346), (-0.35074925,-0.78047466), (-0.018270746,0.007536173), (-0.9524586,1.2339137), (1.7029977,-1.3928434)],
[(7.0624332,8.638891), (-0.03740543,-0.32050958), (-0.28083432,-0.17059809), (0.11331892,-1.1554592), (-0.7194233,1.2224436), (1.5153583,1.3143142), (-0.5878404,-0.7213407), (-0.48429328,0.5179115), (0.10449672,0.73012114), (-1.9367342,-0.7054142), (-3.5323877,-0.81955785), (-0.93127775,-0.21269265), (0.1746149,1.5205038), (1.6701523,-1.6415049), (-1.4911921,0.10510093), (0.5174611,-0.23900717)],
[(7.281751,8.355473), (-1.9599283,-0.0135094635), (1.4732273,-0.5539615), (-1.7071457,-1.1374638), (0.01625204,-0.28626633), (-2.2114697,0.44947028), (1.5814412,1.0547199), (1.7941546,-0.48714536), (-0.27957582,-1.5795641), (1.2079792,0.05378939), (-1.0469666,1.57722), (-0.43757004,-0.23645878), (-0.24900198,-0.90199685), (0.2028476,0.6990721), (-0.22472948,0.8640148), (-0.1489349,-0.57516223)],
[(7.92467,7.6929903), (-0.10961914,-0.13423741), (0.90454286,-0.2282129), (-1.8976498,1.5490448), (-1.3825861,-0.07227099), (1.6239735,0.07735066), (-0.93979514,-0.61968464), (-0.22308028,-0.9431027), (0.46597958,-0.23749232), (-2.472485,-1.2936282), (0.2652536,2.0293136), (0.7544172,2.639404), (-0.31252754,0.88487256), (-0.29754913,0.48084372), (1.5099164,-1.1568255), (-2.31953,0.8341831)]
]> : tensor<4x16xcomplex<f32>>
%0 = stablehlo.fft %input, type = IFFT, length = [16] : (tensor<4x16xcomplex<f32>>) -> tensor<4x16xcomplex<f32>>
%1 = stablehlo.real %0 : (tensor<4x16xcomplex<f32>>) -> tensor<4x16xf32>
%2 = stablehlo.imag %0 : (tensor<4x16xcomplex<f32>>) -> tensor<4x16xf32>
check.expect_almost_eq_const(%1, dense<[
[0.42454705, 0.0411914, 0.9155005, 0.69764674, 0.27280706, 0.27244806, 0.4582658, 0.17154607, 0.65236366, 0.32919556, 0.83338547, 0.89933527, 0.3267901, 0.47070992, 0.1649395, 0.8751768],
[0.07227796, 0.61777425, 0.418612, 0.3026565, 0.79864013, 0.3239637, 0.7526958, 0.17242464, 0.01895547, 0.5124663, 0.5920949, 0.33796164, 0.7656568, 0.35979486, 0.16453204, 0.8519262],
[0.33077067, 0.34961456, 0.7939311, 0.34820837, 0.08508754, 0.47641376, 0.23593518, 0.79054934, 0.73827904, 0.7532118, 0.22236907, 0.78232795, 0.5382191, 0.157159, 0.5564959, 0.12317866],
[0.21837068, 0.7455676, 0.07003465, 0.6162735, 0.6190512, 0.04292959, 0.9863931, 0.6618751, 0.836061, 0.73150545, 0.7434845, 0.07545018, 0.00040110946, 0.58395594, 0.72152877, 0.27178788]
]> : tensor<4x16xf32>) : tensor<4x16xf32>
check.expect_almost_eq_const(%2, dense<[
[0.74976206, 0.24758163, 0.3077078, 0.47274446, 0.09685066, 0.646966, 0.06985897, 0.5261565, 0.820176, 0.47171053, 0.9513154, 0.8346497, 0.9024905, 0.43240485, 0.49071175, 0.30994684],
[0.5039502, 0.6453686, 0.08201127, 0.91535634, 0.98215735, 0.003923863, 0.21496421, 0.61933064, 0.8092454, 0.72912645, 0.5294732, 0.42183167, 0.73263717, 0.3752641, 0.8300676, 0.24418351],
[0.4551394, 0.45954415, 0.29244488, 0.94946045, 0.024036065, 0.5324193, 0.47916567, 0.09308392, 0.6110654, 0.9926647, 0.5867702, 0.8468903, 0.3066705, 0.56544447, 0.6326622, 0.52801096],
[0.7189092, 0.44287425, 0.06407991, 0.9908966, 0.6671045, 0.7973596, 0.5445024, 0.43036646, 0.31767696, 0.007642463, 0.8412415, 0.221167, 0.3633341, 0.46722975, 0.21090023, 0.6077054]
]> : tensor<4x16xf32>) : tensor<4x16xf32>
return
}
// 1D RFFT on the innermost dimension of a 2D tensor.
func.func @rfft_2d() {
%input = util.unfoldable_constant dense<[
[0.42454708, 0.041191377, 0.9155005, 0.69764674, 0.27280706, 0.27244803, 0.45826593, 0.17154603, 0.6523637, 0.32919556, 0.8333855, 0.89933527, 0.3267901, 0.47070992, 0.16493955, 0.8751768],
[0.072277926, 0.61777425, 0.41861197, 0.30265653, 0.7986402, 0.3239637, 0.75269574, 0.17242455, 0.01895543, 0.5124663, 0.59209484, 0.33796164, 0.7656568, 0.35979486, 0.164532, 0.85192627],
[0.33077067, 0.3496145, 0.79393107, 0.34820843, 0.08508753, 0.47641373, 0.23593518, 0.79054934, 0.73827904, 0.7532118, 0.22236909, 0.78232795, 0.5382191, 0.15715897, 0.55649596, 0.12317861],
[0.21837069, 0.7455676, 0.07003461, 0.6162736, 0.61905116, 0.042929675, 0.98639303, 0.6618752, 0.836061, 0.73150545, 0.74348444, 0.075450204, 0.00040107843, 0.583956, 0.7215287, 0.27178788]
]> : tensor<4x16xf32>
%0 = stablehlo.fft %input, type = RFFT, length = [16] : (tensor<4x16xf32>) -> tensor<4x9xcomplex<f32>>
%1 = stablehlo.real %0 : (tensor<4x9xcomplex<f32>>) -> tensor<4x9xf32>
%2 = stablehlo.imag %0 : (tensor<4x9xcomplex<f32>>) -> tensor<4x9xf32>
check.expect_almost_eq_const(%1, dense<[
[7.805849, 0.0055119395, -0.17536741, 0.083751544, -0.6955836, -0.24068685, 1.1299946, -0.7598432, 0.2913494],
[7.0624332, 0.24002784, -0.88601315, 0.89173555, -0.2724042, 0.29204032, -2.060114, -1.2105138, 0.10449672],
[7.281751, -1.0544317, 0.62424886, -0.752149, -0.11637497, -1.3245198, 0.2672373, 1.5010669, -0.27957582],
[7.92467, -1.2145746, 1.2072296, -1.0975994, -0.8475568, 1.1891953, -0.33727074, -1.3477826, 0.46597958]
]> : tensor<4x9xf32>) : tensor<4x9xf32>
check.expect_almost_eq_const(%2, dense<[
[0.0, 0.5374942, -1.2511837, 0.44363666, 1.53016, 1.082557, 1.0001776, 0.96048236, 0.0],
[0.0, -0.04075122, -0.13784951, 0.24302289, -0.14903009, 0.76350343, 0.049108572, 0.6116628, 0.0],
[0.0, 0.2808264, -0.7089882, -0.9182679, 0.30786526, 0.34296447, -0.26125002, -0.2704674, 0.0],
[0.0, -0.4842103, 0.46430632, 0.53410053, -0.47857177, -1.2810267, -1.324499, 0.17526275, 0.0]
]> : tensor<4x9xf32>) : tensor<4x9xf32>
return
}
// 1D IRFFT on the innermost dimension of a 2D tensor. This is the inverse of the @rfft_2d() so should give back the original inputs (within floating point error).
func.func @irfft_2d() {
%input = util.unfoldable_constant dense<[
[(7.805849,0.0), (0.0055119395,0.5374942), (-0.17536741,-1.2511837), (0.083751544,0.44363666), (-0.6955836,1.53016), (-0.24068685,1.082557), (1.1299946,1.0001776), (-0.7598432,0.96048236), (0.2913494,0.0)],
[(7.0624332,0.0), (0.24002784,-0.04075122), (-0.88601315,-0.13784951), (0.89173555,0.24302289), (-0.2724042,-0.14903009), (0.29204032,0.76350343), (-2.060114,0.049108572), (-1.2105138,0.6116628), (0.10449672,0.0)],
[(7.281751,0.0), (-1.0544317,0.2808264), (0.62424886,-0.7089882), (-0.752149,-0.9182679), (-0.11637497,0.30786526), (-1.3245198,0.34296447), (0.2672373,-0.26125002), (1.5010669,-0.2704674), (-0.27957582,0.0)],
[(7.92467,0.0), (-1.2145746,-0.4842103), (1.2072296,0.46430632), (-1.0975994,0.53410053), (-0.8475568,-0.47857177), (1.1891953,-1.2810267), (-0.33727074,-1.324499), (-1.3477826,0.17526275), (0.46597958,0.0)]
]> : tensor<4x9xcomplex<f32>>
%0 = stablehlo.fft %input, type = IRFFT, length = [16] : (tensor<4x9xcomplex<f32>>) -> tensor<4x16xf32>
check.expect_almost_eq_const(%0, dense<[
[0.42454705, 0.041191384, 0.9155005, 0.69764674, 0.27280703, 0.27244806, 0.45826584, 0.17154607, 0.65236366, 0.32919556, 0.83338547, 0.89933527, 0.32679006, 0.47070992, 0.16493948, 0.8751768],
[0.072277986, 0.61777425, 0.418612, 0.3026565, 0.7986402, 0.3239637, 0.75269574, 0.17242455, 0.018955506, 0.5124663, 0.5920949, 0.33796164, 0.76565677, 0.3597949, 0.16453207, 0.8519262],
[0.33077067, 0.34961456, 0.79393107, 0.3482084, 0.08508754, 0.47641373, 0.23593518, 0.7905494, 0.73827904, 0.7532118, 0.22236913, 0.7823279, 0.5382191, 0.15715902, 0.5564959, 0.12317863],
[0.21837068, 0.74556756, 0.07003468, 0.6162735, 0.6190512, 0.04292965, 0.9863931, 0.6618751, 0.836061, 0.7315054, 0.74348444, 0.07545018, 0.00040110946, 0.58395594, 0.72152877, 0.27178788]
]> : tensor<4x16xf32>) : tensor<4x16xf32>
return
}