From 1afa9085343c6dd10602e738c6e98ce66079e3cc Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Fri, 16 Jan 2026 18:11:40 +0100 Subject: [PATCH 01/15] basic support for jax jit --- src/gt4py/next/embedded/nd_array_field.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/gt4py/next/embedded/nd_array_field.py b/src/gt4py/next/embedded/nd_array_field.py index fa99f5fabd..cacf253f83 100644 --- a/src/gt4py/next/embedded/nd_array_field.py +++ b/src/gt4py/next/embedded/nd_array_field.py @@ -1126,6 +1126,14 @@ class JaxArrayConnectivityField(NdArrayConnectivityField): common._field.register(jnp.ndarray, JaxArrayField.from_array) common._connectivity.register(jnp.ndarray, JaxArrayConnectivityField.from_array) + def _flatten(v: JaxArrayField): + return (v.ndarray,), v.domain + + def _unflatten(aux_data, children): + return JaxArrayField(aux_data, children[0]) + + jax.tree_util.register_pytree_node(JaxArrayField, _flatten, _unflatten) + def _broadcast(field: common.Field, new_dimensions: Sequence[common.Dimension]) -> common.Field: if field.domain.dims == new_dimensions: From a1cb220ae2325d682bca499ecae096f794b41de9 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Mon, 2 Mar 2026 11:55:23 +0100 Subject: [PATCH 02/15] add swm --- examples/next/swm/config.py | 42 ++ examples/next/swm/initial_conditions.py | 54 ++ examples/next/swm/ref/16x16/cu.step0.t100.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/cu.step1.t100.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/cv.step0.t100.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/cv.step1.t100.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/h.step0.t100.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/h.step1.t100.bin | 5 + examples/next/swm/ref/16x16/p.step0.init.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/p.step0.t200.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/p.step1.init.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/p.step1.t200.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/p.step2.init.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/p.step3.init.bin | Bin 0 -> 2312 bytes .../next/swm/ref/16x16/p.step4000.final.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/p.txt | 17 + examples/next/swm/ref/16x16/u.step0.init.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/u.step0.t200.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/u.step1.init.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/u.step1.t200.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/u.step2.init.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/u.step3.init.bin | Bin 0 -> 2312 bytes .../next/swm/ref/16x16/u.step4000.final.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/u.txt | 17 + examples/next/swm/ref/16x16/v.step0.init.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/v.step0.t200.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/v.step1.init.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/v.step1.t200.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/v.step2.init.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/v.step3.init.bin | Bin 0 -> 2312 bytes .../next/swm/ref/16x16/v.step4000.final.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/16x16/v.txt | 17 + examples/next/swm/ref/16x16/z.step0.t100.bin | 1 + examples/next/swm/ref/16x16/z.step1.t100.bin | Bin 0 -> 2312 bytes examples/next/swm/ref/64x64/cu.step0.t100.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/cu.step1.t100.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/cv.step0.t100.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/cv.step1.t100.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/h.step0.t100.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/h.step1.t100.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/p.step0.init.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/p.step0.t200.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/p.step1.init.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/p.step1.t200.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/p.step2.init.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/p.step3.init.bin | Bin 0 -> 33800 bytes .../next/swm/ref/64x64/p.step4000.final.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/p.txt | 65 +++ examples/next/swm/ref/64x64/u.step0.init.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/u.step0.t200.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/u.step1.init.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/u.step1.t200.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/u.step2.init.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/u.step3.init.bin | Bin 0 -> 33800 bytes .../next/swm/ref/64x64/u.step4000.final.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/u.txt | 65 +++ examples/next/swm/ref/64x64/v.step0.init.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/v.step0.t200.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/v.step1.init.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/v.step1.t200.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/v.step2.init.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/v.step3.init.bin | Bin 0 -> 33800 bytes .../next/swm/ref/64x64/v.step4000.final.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/v.txt | 65 +++ examples/next/swm/ref/64x64/z.step0.t100.bin | Bin 0 -> 33800 bytes examples/next/swm/ref/64x64/z.step1.t100.bin | Bin 0 -> 33800 bytes examples/next/swm/swm.py | 273 +++++++++ examples/next/swm/swm_array_api.py | 539 ++++++++++++++++++ examples/next/swm/utils.py | 121 ++++ 69 files changed, 1281 insertions(+) create mode 100644 examples/next/swm/config.py create mode 100644 examples/next/swm/initial_conditions.py create mode 100644 examples/next/swm/ref/16x16/cu.step0.t100.bin create mode 100644 examples/next/swm/ref/16x16/cu.step1.t100.bin create mode 100644 examples/next/swm/ref/16x16/cv.step0.t100.bin create mode 100644 examples/next/swm/ref/16x16/cv.step1.t100.bin create mode 100644 examples/next/swm/ref/16x16/h.step0.t100.bin create mode 100644 examples/next/swm/ref/16x16/h.step1.t100.bin create mode 100644 examples/next/swm/ref/16x16/p.step0.init.bin create mode 100644 examples/next/swm/ref/16x16/p.step0.t200.bin create mode 100644 examples/next/swm/ref/16x16/p.step1.init.bin create mode 100644 examples/next/swm/ref/16x16/p.step1.t200.bin create mode 100644 examples/next/swm/ref/16x16/p.step2.init.bin create mode 100644 examples/next/swm/ref/16x16/p.step3.init.bin create mode 100644 examples/next/swm/ref/16x16/p.step4000.final.bin create mode 100644 examples/next/swm/ref/16x16/p.txt create mode 100644 examples/next/swm/ref/16x16/u.step0.init.bin create mode 100644 examples/next/swm/ref/16x16/u.step0.t200.bin create mode 100644 examples/next/swm/ref/16x16/u.step1.init.bin create mode 100644 examples/next/swm/ref/16x16/u.step1.t200.bin create mode 100644 examples/next/swm/ref/16x16/u.step2.init.bin create mode 100644 examples/next/swm/ref/16x16/u.step3.init.bin create mode 100644 examples/next/swm/ref/16x16/u.step4000.final.bin create mode 100644 examples/next/swm/ref/16x16/u.txt create mode 100644 examples/next/swm/ref/16x16/v.step0.init.bin create mode 100644 examples/next/swm/ref/16x16/v.step0.t200.bin create mode 100644 examples/next/swm/ref/16x16/v.step1.init.bin create mode 100644 examples/next/swm/ref/16x16/v.step1.t200.bin create mode 100644 examples/next/swm/ref/16x16/v.step2.init.bin create mode 100644 examples/next/swm/ref/16x16/v.step3.init.bin create mode 100644 examples/next/swm/ref/16x16/v.step4000.final.bin create mode 100644 examples/next/swm/ref/16x16/v.txt create mode 100644 examples/next/swm/ref/16x16/z.step0.t100.bin create mode 100644 examples/next/swm/ref/16x16/z.step1.t100.bin create mode 100644 examples/next/swm/ref/64x64/cu.step0.t100.bin create mode 100644 examples/next/swm/ref/64x64/cu.step1.t100.bin create mode 100644 examples/next/swm/ref/64x64/cv.step0.t100.bin create mode 100644 examples/next/swm/ref/64x64/cv.step1.t100.bin create mode 100644 examples/next/swm/ref/64x64/h.step0.t100.bin create mode 100644 examples/next/swm/ref/64x64/h.step1.t100.bin create mode 100644 examples/next/swm/ref/64x64/p.step0.init.bin create mode 100644 examples/next/swm/ref/64x64/p.step0.t200.bin create mode 100644 examples/next/swm/ref/64x64/p.step1.init.bin create mode 100644 examples/next/swm/ref/64x64/p.step1.t200.bin create mode 100644 examples/next/swm/ref/64x64/p.step2.init.bin create mode 100644 examples/next/swm/ref/64x64/p.step3.init.bin create mode 100644 examples/next/swm/ref/64x64/p.step4000.final.bin create mode 100644 examples/next/swm/ref/64x64/p.txt create mode 100644 examples/next/swm/ref/64x64/u.step0.init.bin create mode 100644 examples/next/swm/ref/64x64/u.step0.t200.bin create mode 100644 examples/next/swm/ref/64x64/u.step1.init.bin create mode 100644 examples/next/swm/ref/64x64/u.step1.t200.bin create mode 100644 examples/next/swm/ref/64x64/u.step2.init.bin create mode 100644 examples/next/swm/ref/64x64/u.step3.init.bin create mode 100644 examples/next/swm/ref/64x64/u.step4000.final.bin create mode 100644 examples/next/swm/ref/64x64/u.txt create mode 100644 examples/next/swm/ref/64x64/v.step0.init.bin create mode 100644 examples/next/swm/ref/64x64/v.step0.t200.bin create mode 100644 examples/next/swm/ref/64x64/v.step1.init.bin create mode 100644 examples/next/swm/ref/64x64/v.step1.t200.bin create mode 100644 examples/next/swm/ref/64x64/v.step2.init.bin create mode 100644 examples/next/swm/ref/64x64/v.step3.init.bin create mode 100644 examples/next/swm/ref/64x64/v.step4000.final.bin create mode 100644 examples/next/swm/ref/64x64/v.txt create mode 100644 examples/next/swm/ref/64x64/z.step0.t100.bin create mode 100644 examples/next/swm/ref/64x64/z.step1.t100.bin create mode 100644 examples/next/swm/swm.py create mode 100644 examples/next/swm/swm_array_api.py create mode 100644 examples/next/swm/utils.py diff --git a/examples/next/swm/config.py b/examples/next/swm/config.py new file mode 100644 index 0000000000..b012c53f71 --- /dev/null +++ b/examples/next/swm/config.py @@ -0,0 +1,42 @@ +# GT4Py - GridTools Framework +# +# Copyright (c) 2014-2024, ETH Zurich +# All rights reserved. +# +# Please, refer to the LICENSE file in the root directory. +# SPDX-License-Identifier: BSD-3-Clause + +import argparse + +parser = argparse.ArgumentParser(description="Shallow Water Model") +parser.add_argument("--M", type=int, default=16, help="Number of points in the x direction") +parser.add_argument("--N", type=int, default=16, help="Number of points in the y direction") +parser.add_argument("--L_OUT", type=bool, default=True, help="a boolean for L_OUT") +parser.add_argument("--ITMAX", type=int, default=4000, help="Number of iterations") +parser.add_argument("--VAL_DEEP", type=bool, default=True, help="Do deep validation") +# parser.add_argument('--backend', type=str, default='gt:cpu_ifirst', help='Backend to use: gt:cpu_ifirst, gt:cpu_kfirst, numpy, cuda, gt:gpu') + + +args = parser.parse_args() + +# Initialize model parameters +backend = args.backend +M = args.M +N = args.N +M_LEN = M + 1 +N_LEN = N + 1 +L_OUT = args.L_OUT +VAL = True +VAL_DEEP = False # args.VAL_DEEP +VIS = False +VIS_DT = 100 + +ITMAX = args.ITMAX +dt = 90.0 +dt = dt +dx = 100000.0 +dy = 100000.0 +fsdx = 4.0 / (dx) +fsdy = 4.0 / (dy) +a = 1000000.0 +alpha = 0.001 diff --git a/examples/next/swm/initial_conditions.py b/examples/next/swm/initial_conditions.py new file mode 100644 index 0000000000..6279ca4381 --- /dev/null +++ b/examples/next/swm/initial_conditions.py @@ -0,0 +1,54 @@ +# GT4Py - GridTools Framework +# +# Copyright (c) 2014-2024, ETH Zurich +# All rights reserved. +# +# Please, refer to the LICENSE file in the root directory. +# SPDX-License-Identifier: BSD-3-Clause + +import numpy as np + + +def initialize_interior(M, N, dx, dy, a): + pi = 4.0 * np.arctan(1.0) + tpi = 2.0 * pi + d_i = tpi / M + d_j = tpi / N + el = N * dx + pcf = (pi * pi * a * a) / (el * el) + + psi = ( + a + * np.sin((np.arange(0, M + 1)[:, np.newaxis] + 0.5) * d_i) + * np.sin((np.arange(0, N + 1) + 0.5) * d_j) + ) + p = ( + pcf + * (np.cos(2.0 * np.arange(0, M)[:, np.newaxis] * d_i) + np.cos(2.0 * np.arange(0, N) * d_j)) + + 50000.0 + ) + + u = -(psi[1:, 1:] - psi[1:, :-1]) / dy + v = (psi[1:, 1:] - psi[:-1, 1:]) / dx + + return u, v, p + + +def initialize(M, N, dx, dy, a): + u, v, p = initialize_interior(M, N, dx, dy, a) + + return ( + np.pad(u, ((1, 0), (0, 1)), mode="wrap"), + np.pad(v, ((0, 1), (1, 0)), mode="wrap"), + np.pad(p, ((0, 1), (0, 1)), mode="wrap"), + ) + + +def initialize_2halo(M, N, dx, dy, a): + u, v, p = initialize_interior(M, N, dx, dy, a) + + return ( + np.pad(u, ((1, 1), (1, 1)), mode="wrap"), + np.pad(v, ((1, 1), (1, 1)), mode="wrap"), + np.pad(p, ((1, 1), (1, 1)), mode="wrap"), + ) diff --git a/examples/next/swm/ref/16x16/cu.step0.t100.bin b/examples/next/swm/ref/16x16/cu.step0.t100.bin new file mode 100644 index 0000000000000000000000000000000000000000..7e3583df3255cc97fa5dac496668f5dce7249d94 GIT binary patch literal 2312 zcmc(heMpsO7{*UWEOHr*N|!Mf+uZ1rvB=iQx}O@%)>cYcgeRi4wXdvs(!>6c6l!YF zKh{aNvs@6Y0u!V15Xq_gi9U>yldTUrZTK-OhobY;hEt=xa9__;yb%7m^Z)N$7w>yt zzjGqF-=rkWYUhn<3vUi&#WmV@CqXZuT<$Ei*>-?O%> zx9Bi+(v8&UsVU(&ZS9#7?(z@N8>2rs@lRloCJ0Z3!V`Gg13ZK0eBl{9oBYt`x*d__ zUVVMvf#aW#8s?Js;&ba(_Szn|ek&V0X=N{cb>~cFjc1sezJDco<8rU641HHt-khMS zgjctPr-1M@6kT%j($i=rcm~gxgx7n8*CxN_eoOM6V4@DzyxA~smq(YUxAd)U>$g45 zXWajBu(hAEL$!71c6!vU$3E|C!9+DHr>v+tZ;YxIUi~1v+9f>wwXLamwbKJUgV*3S zcy01C^HVEwogM`lzQLEA9@FRCyYTjNJvJ@w+uH2(m^1f}_EBB6_93 z=k%B_yb1`f(uJqi?$d`7oF3pAye<@8mkX~=zAx?S!%v*|qJPS1JL4JV&OlT4;}y@| z%llK;zm>P5mwc_;bo}WMRV>H|^nc`42VQ;<8SlK8HNvaQ!qYwBZ4dAap38*S;I+yB z_sYC!QU3tf_p~jW?c8boreBv<(z81a-(Au(!@1K5-(h#Sd#@$t`oI8yd<}S;1 z?(~uHbW(T%Z|@X5gXe7F89bZ(-!K1t>dwq|{w3D9CG70>@Xkdg4bSa%T;7wj>CSG~ zt?dX6ei)-M$CBcu&TfyiOitodVKcm~f$g=dq`BkVs*{K2W> z5AGI!a6tUQjo5$w3;Y9~z|)`b4|p>96S05zgFY62*yn2Ye_i~+Ut|BTi$6FS{((Oj zyxp7e4|w_#{+R~5B#Cv4`uR0*gyQC z;1Ap5Mf;y2{?I}A2ma9T2g4r`w|{Q9{A2R5Uj=_C_`~*a?;rlq@P~#!H2k6A4~9P? zZvVg^3jRcaKWr-uf;Y6@li71N;QG{UB!Pb;yYz-kaJ;;AwG8td{cyiDGf0?=SeMz|Q z)?FiBN_>_|RImR^fpbJWiLXeGZQ>TUr!+@kX{P4zVoHwItvmdS)?Ij?N%wB6Lxj)~3+&821OLX4is#9{D;t>~{6QjWS zuG+nogy+QhH$SM5V%qQ1{Zu$;U)js9oxwQS7I&3- ztI))8eu7QaT2z;scZ|DRhj=(-&F(}!8p-#X*Fw(G#$C2;7R-@F1-+tt8VL(qE<8s=$Ose%Sc^|XQl1i68VlCw{DfX*{ zUrb>dQ1+UcZ_3I2AglY=M(1PW_%r5`eX=3z7lX!O?8#{^9Q0?(INRngwz+L7qxnMo z@z-+-*|I|F;+u|4hD^mb@J>I{;7Ognew#}}P&$fs7ppXgA2qnyC7VI5X{j#DEn-vW zx%m~=(N@&CaQ>Aca_+P{l~6*SKkhwO$a*rQ7ny>sr@H&iq9v8q9G0DBGwWVTXw+1`Ki<|SBB2Zh#-7o(pdlRT+ z4L>$YhM-*Y*gcO zS01+qQ(C#jn`*VDjZ^LzAmnHz>|G0jpz8P(4uw@Yq(a64rr3P628+Rw@(x9MknhL z^FsVaH93nVxIUv!i-PP{96CBd7TG71HaUfo{U#f&aa%dvE>UVdB3R_`e$bPlNvWK!19mKinO+-}a~8q(4gN zj~x0#^Dlt^cfkKX@ZWR)yZ!G6|BInNMbMu<=#PDq`TlsD^oQoRf&a(Ae?~I+f5yE3 zeDHq?_^*KeBtm~Opg(hB%=d=@{b_*y(0nQQpAG)61plWUH1EHyiT^_Aj}ZE^0s3>| zjQRegne>O|j|cxNP5eLJYu^7;CjKWte?m<9vypMbY=3f0`a|=J!2j9cKihuHe|v{9 y|Lej3KJecQ{J#bM7ejxNpg%s)AK}xn{#=FrltX{MhyLt={?L5-_y7O?|M4H7GM2Fb literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/cv.step0.t100.bin b/examples/next/swm/ref/16x16/cv.step0.t100.bin new file mode 100644 index 0000000000000000000000000000000000000000..6dc503b5bfadd076cc66ebb1d219de203953acd2 GIT binary patch literal 2312 zcmd7Ue@N7K9LMq7iIc4M15(Q|Hpbk@YK?_bYq#E?HkhqdO1cPdNk0k8ew=mnhh$LG z2K`fAwr)ibRAY9mRo)`GdVj|Hom^UBT|fMhmZ6+^xM6Cv54>NWV{G_Ge{KHrhA*E7 z@4w#9v$kMGYQp#yN*y>iZAob#?Ohhw6q@N&{`UHj+kJ^@YDwC*0yEv|S02qW-=AK} zdOPgtqk9+rIN3O^h0coS6!8qN;WfO5*YJE_JlA6XqV!L0^yNgT)c4`a1Hl+I?Amv1 z=}UuDwg26ktgQ}Jn(gi%Zl?YrulclNkbdcEo-x6^I~1v188mK*cwQ@>;n^o%!)thk z=YV*&`y**ZMbA7}Dc@6GH$t^h`Q+H7z?>*mX4H4*H}}xk5AOW_zL{;_i@CkCqjY@n z_0M)t8wIv}T3%z^1M!?Ip5Ymu;TfLc`LKAl`yKz2Kh^!_ffCPEF6xM`KTK_W^KQkk zQFEgFTXy^2{-z#YJgs|GotYoM@y&aMv!i_G_Vlhy^Dd?E*_jOEa>P@ic!DQ*f+u)_ zCwQ{^)AlTKx^g1ikQP2UCK%)5#?w3YI|ez=UmZBR#i1uodJx-frn_mijy)gX*VdHp zJW>C}0(-&M^u?~;xt$2J?+DV|n{CwK*~;1#@r zr)2SD_m_UOJvqIql`~%c{P>^Ve%|TdSW#J*pvUJ`tlv|Zq$|Uh*1FBy_xi)oE9QIe zx`G)6=G~9=DXE>iTiGj~-VsmmDpS0ISMUm+s>PGtAH@B?iu?CTKeSK!p|hkP`fKTj zj!8eb@gMg;0{wwk@CshRD|m{aKX(6e-2X=0|1IeU`*Hspq#ydS^n-tuesDGJzZm`5 zfd0VK_vjD2f+u)7f&SS2xL^JX_wSW{@K)&uXGlNzj`V|nl79T_{&UbDc!DQ*f+u)F zKgjO4`AEtf+c?~DEi@3Ge&hV}aOlbEi)Hy{Hg%plnDDo0zstLyL*kCP;9c-8ymP_F zr~PjC+KKxm^y7u^AN^qTp&#@Z{V7I&;5EF4*YFyihoL`qKkk>%kNEwgA4A?h c`a$RiqaX49pdUl_2mN5X-~Rsp*Z+U~1@s7D?f?J) literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/cv.step1.t100.bin b/examples/next/swm/ref/16x16/cv.step1.t100.bin new file mode 100644 index 0000000000000000000000000000000000000000..a31fa42779b589eb543b40ee7f083596cd2913a2 GIT binary patch literal 2312 zcmc)MYfO_@7{KvbT9A3c%R~^i0m7!J;20v-DW}R*C?H;f3gXrA{DCS#`Ue-qQXvD`dflp9rj)@gS&iH)JSCPQ1*9uth^77woXSKA=>gIkw`6|G0B&op)9G=!oFN3L!N ziU~#`ok#2|uh?Kmn;`!`iq>Pd*!iu)>)q1DuZP#~-PvLoUO)Z5kKgcm2SG*S@cNV2 z9?ctGA2HZ?qk^n2dzNdwN!HWz7wEk!s>+l&Gs$}9U<@&<>E7`zpGc||E_aaAxm?= zq&4Jy2_NtJ+JBr0@x%MWoXGo%<0g2NkZ)Vs{;mcy6LM|kum-N^(8;sr@)w>eM9&ww z=#tCHduP3uv>i;;V=qo)UcWz6(SCR;|1x>!(f7W1+ndW)ScTty=S1FnnYK98le~A& z%yUdk-rbd_d=lsSa-g@j~vs!sf?$RcyIGcE57@gU#$T!ui^ld$Hct{)H zzK?hlR==Fn?5IZcd(+{B* ziYxW@(|FBhiYZSyH+V@#+=K=U(vlurz0vmkmq&UK53gUkC(ekJe=ED0EoR(vyxd~T z2n%jq<%?fJ$oFpe1%4a(`+{}*?nNXRkuZbfF*~~l(eu}V|90^I6ZkIx|Bu0c3HTR) z|NK$@4Y^c*lA%B4(4U*o9~tzA0sRp{f9Uy_z`rZ_Uk?5Y!GApXF9rW0;6E1pn{B50 zvjzHN0sXlT{V9R|EO)~|7V_4{&}mY z{_KdS`r~T;aHKzrk5m2ey+-xNtcdDQZP($E{@6i(==pN+pZp*FdqIEFp+7r6us`&C zU+_O+l>eA9{ENZA5c>1;sQ%cD(VyqgA9{Wi_^$^4-QeFF{0|x^|0&=<3;ZX7|9t4r zkcsM#C-kQk`m-JSGZFf83i`7M`a{pZ1pb3Y`L7(qe-ik2g8oE~>QB!Y{kaYOq36@T K|Nr;@AO8Y=Qkh`@ literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/h.step0.t100.bin b/examples/next/swm/ref/16x16/h.step0.t100.bin new file mode 100644 index 0000000000000000000000000000000000000000..31892ff9a7e91a029b2b88951600ea65f863564c GIT binary patch literal 2312 zcmeCozk1m&`-Q{IWom2vf%N|M6*;;N=^c|LvkR&Kf{-qY8}=oCVr*>YuYlDUdF0DNhUn(h40PPgMfx%{#OF zt^jElov3FzK=m;9Q>q{4f0+IJtnYtX0qxN(&=NVF`NBa!V{)gFb{M4mA5NN-9bKX{eApQ4o$NFPHdREb*!v#S1O#a&*@Cry% zOFztiu<(cZA7;O+cDaoU(Eb&fdtNLC(qFGKtTzMNe=Y0ilx0ZaL#cjP`h&$kEc{{q zhuI&TYZe5Gr|0w5UsVO#UoJR5w+={COFu0A!_prtd|=@Z^FPe~{ZnJbJb?E9e_Ec< z38bl|AC~`M=^vKs4G9LuGgIfBjo&RC^2bO+e;R}mDSop!*k8VGu j`JYn#F!zs^AE@;QrTL#y{jl^iT7IC`-=pORr2PW`!=$ki literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/h.step1.t100.bin b/examples/next/swm/ref/16x16/h.step1.t100.bin new file mode 100644 index 0000000000..69893441e4 --- /dev/null +++ b/examples/next/swm/ref/16x16/h.step1.t100.bin @@ -0,0 +1,5 @@ +>k@d;fOk@-k@_j@Ndv5j@Ԫj@ګIj@̀k@>k@Ok@;h -k@j@P0j@nPj@7j@ nk@>k@Ok@?C(k@ j@`2uuj@ψRj@wyj@PUj@-k@d;fOk@?C(k@8vVj@]tj@ځm2Rj@yj@[Gj@t,k@Ok@;h -k@8vVj@f:j@&=i@uӿi@ >3j@ [j@ V"k@-k@ j@f:j@~i@bi@ j@u{j@!k@;h -k@j@]tj@~i@UKQi@XOi@gwi@%(qj@Tj@_j@`2uuj@&=i@UKQi@\ԋOi@뚢bi@'_pj@)j@j@P0j@ځm2Rj@bi@\ԋOi@|3j@gwi@ i@W +8Ri@lE%j@Eg~j@nPj@7j@[Gj@u{j@'_pj@Du6j@lE%j@2`Hj@۾>j@ګIj@PUj@ [j@%(qj@6j@%j@2`Hj@ipj@7j@ nk@t,k@!k@)j@|(Ydj@Eg~j@ipj@wj@̀k@-k@ V"k@Tj@P?=Ŧj@ϴX~j@۾>j@wj@ nk@>k@Ok@;h -k@j@P0j@nPj@7j@ nk@>k@d;fOk@-k@_j@Ndv5j@Ԫj@ګIj@̀k@>k@d;fOk@?C(k@8vVj@]tj@ځm2Rj@yj@[Gj@t,k@Ok@?C(k@ j@`2uuj@ψRj@wyj@PUj@-k@d;fOk@-k@ j@f:j@~i@bi@ j@u{j@!k@;h -k@8vVj@f:j@&=i@uӿi@ >3j@ [j@ V"k@-k@_j@`2uuj@&=i@UKQi@\ԋOi@뚢bi@'_pj@)j@j@]tj@~i@UKQi@XOi@gwi@%(qj@Tj@_j@Ndv5j@ψRj@uӿi@XOi@|3j@gwi@ i@W +8Ri@lE%j@Eg~j@nPj@yj@ j@뚢bi@i@W +8Ri@%j@ϴX~j@Ԫj@ګIj@PUj@ [j@%(qj@6j@%j@2`Hj@ipj@7j@[Gj@u{j@'_pj@Du6j@lE%j@2`Hj@۾>j@ګIj@̀k@-k@ V"k@Tj@P?=Ŧj@ϴX~j@۾>j@wj@ nk@t,k@!k@)j@|(Ydj@Eg~j@ipj@wj@̀k@>k@d;fOk@-k@_j@Ndv5j@Ԫj@ګIj@̀k@>k@Ok@;h -k@j@P0j@nPj@7j@ nk@>k@ \ No newline at end of file diff --git a/examples/next/swm/ref/16x16/p.step0.init.bin b/examples/next/swm/ref/16x16/p.step0.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..16722ec311e2dbb977c62c08d9e33e0aeceb4b40 GIT binary patch literal 2312 zcmd6muMYuX7{^svLNn7On!yTDvq0WCaYrX`vr1v>OEopIpq%a zO0T_alR79RFeY^r!Pzz3pkI^wSB;nW{+6|EZVa>+?si;9K*W z(m%`|t-Oll;P{c|Ge7!AznEK8;sHP4)Z>R7{9nFwKg^5y;fEX?|L9BYmwVy==rJF1 zaO%;Qx_8s}BK`j9k9pHSIXM06`lkJu^6|&M@XtQO?$?yhymWo;JM6tn@lD^qDL*Rn Zh{}ENeoXJ(l&`;E=A-Y6931~r{10um1hfDE literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/p.step0.t200.bin b/examples/next/swm/ref/16x16/p.step0.t200.bin new file mode 100644 index 0000000000000000000000000000000000000000..379ce74aae7f6c135b885ea4bcbdea7f9a79f7b5 GIT binary patch literal 2312 zcmb`HPe_w-9L6>5AaoFkf*od|6H21ckPbtJSVRY_nH2~jjf!NanB*E2+C=e`1V*v! zV8IG{4^b-C2m<@FDCZx@=|Nt#T8FX-?NCs^2l~Kx5!|6&e*E~p&%V$5{CSh<^NE#~ zjIU_EB{5;nwAa%gG3Sfats`aTyju||$TMeX{L^~f?-l;ouemFdis|{}KYVxbt2W)g z$NVLl@A>NfR%*_sspzjiXEVN@FH<$bZ%su*nqLZ^ys;Yot?NmfW#-$KtrN%0Y57{q zwSV&dzNK07Kkym8zOG*LNYk#{dLI7Z2Rs{Gn){#iq_ux%-|siV!)N1_;q982%lA*Z za5#>pEL# z4{kaneCM69X5kz11HIXNoc^I7{J~e3ch?pg{O2KeNdMPSH)`qqg5gm++b{e>Klp>c z++Z~d|HyuRP58c-7t`5(kstg+Klp>^{qk$4hx9(DH`{a4m;90+{6jzZgRdG0jtPG= ztzxaiJ^dJ7<=`Z~uzxaiJ>_Oc9# zFZ|2(`$K=oFZqEF`mNP}`a^!5AaoFkf*od|6H21ckPbtJSVRY_nH2~jjf!NanB*E2+C=e`1V*v! zV8IG{4^b-C2m<@FDCZx@=|Nt#T8FX-?NCs^2l~Kx5!|6&e*E~p&%V$5{CSh<^NE#~ zjIU_EB{5;nwAa%gG3Sfats`aTyju||$TMeX{L^~f?-l;ouemFdis|{}KYVxbt2W)g z$NVLl@A>NfR%*_sspzjiXEVN@FH<$bZ%su*nqLZ^ys;Yot?NmfW#-$KtrN%0Y57{q zwSV&dzNK07Kkym8zOG*LNYk#{dLI7Z2Rs{Gn){#iq_ux%-|siV!)N1_;q982%lA*Z za5#>pEL# z4{kaneCM69X5kz11HIXNoc^I7{J~e3ch?pg{O2KeNdMPSH)`qqg5gm++b{e>Klp>c z++Z~d|HyuRP58c-7t`5(kstg+Klp>^{qk$4hx9(DH`{a4m;90+{6jzZgRdG0jtPG= ztzxaiJ^dJ7<=`Z~uzxaiJ>_Oc9# zFZ|2(`$K=oFZqEF`mNP}`a^!euyes3 zD-Qba^^c2Aoy)Ub68&1&dTW=czuQ}qCOW@6c-U{#Z(g z`pZXNIOMstCEKR>WdHEn14Bj2^8Tj}<_7`MJ>O=(`$YBoZSFzQ4QDn#RDPnpwO6Y} znIHb)V}?1q;`0-(cExvEN~Z=y$8vqIl^>5O-dH7k^8D}*?-=%kPs;nNq3F&$(O7e6 zv`TcLwq)aDQIqA_XXS_eF+cpnn>S( z%~|$*qi~k8#o+?c^!lT3Z-`b@Z1c>Dk{|ZR{O}K7-;~*|_}<$^e#L*BxYnR}&L={KIqp|LQ;er9b4C{IEafhkwq8*V=!0`b&SvFZp4A%#ZW&51(rPwcbC> z5C5t5U+ewD{+M5?{nvW`kRSG!YX7y~KjfGEq}qS2_YeIczp3_L>;045U;0CS$q)Nu Re)xw^{{80n>tFwW`~m5kcs&3B literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/p.step2.init.bin b/examples/next/swm/ref/16x16/p.step2.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..61cd813164b4f34322172da455d5fcf838f73435 GIT binary patch literal 2312 zcmb`JPe{{o7{+DHmetllDnzPPl(f)=LV}}GGm#FtgUeuyes3 zD-Qba^^c2Aoy)Ub68&1&dTW=czuQ}qCOW@6c-U{#Z(g z`pZXNIOMstCEKR>WdHEn14Bj2^8Tj}<_7`MJ>O=(`$YBoZSFzQ4QDn#RDPnpwO6Y} znIHb)V}?1q;`0-(cExvEN~Z=y$8vqIl^>5O-dH7k^8D}*?-=%kPs;nNq3F&$(O7e6 zv`TcLwq)aDQIqA_XXS_eF+cpnn>S( z%~|$*qi~k8#o+?c^!lT3Z-`b@Z1c>Dk{|ZR{O}K7-;~*|_}<$^e#L*BxYnR}&L={KIqp|LQ;er9b4C{IEafhkwq8*V=!0`b&SvFZp4A%#ZW&51(rPwcbC> z5C5t5U+ewD{+M5?{nvW`kRSG!YX7y~KjfGEq}qS2_YeIczp3_L>;045U;0CS$q)Nu Re)xw^{{80n>tFwW`~m5kcs&3B literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/p.step3.init.bin b/examples/next/swm/ref/16x16/p.step3.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..5ae4d1f928152287d431b32429352c9805d64268 GIT binary patch literal 2312 zcmbuAT}abm7{#+i%m#shs|ZIiODU^C8QB*ij-U{epwzO&wB{(5nrj8kil}DDb~7Vm zlRjn*ZAL;2Da+6mp-qiG?kWURQJ7|lV%B-VbMsOc`oB7i{eRop^PKan!uw`&*xaA$ zUg)a~K~pT!zrJqA>vb7M zvjtkyXReQfI(mAJ30~*CbuAH^_bzx@@cTw4lK#b?I-c;|gZIxre*0=S)SLD#__Me_ z)t2@s@(HR6>te;{bynSMIRI_E>WKD3>7V=_SCd-sML9JCW8kuX)ZP$$wc+gGAE@C= zb-LhdlV zmg!@_P={y0DSC+|Pf5)k~Fk+uhdKUvzK61>s-*?s);87Ig3!Cu`MHbmdzfG5hx_CF=%2jRIMgiovJBM%4R|@f%n$d+`O!c5 zXLa%Qi@_f)Z_CPuvOml(^TYjde)La1;tF&NUhWU`%lvSEoFDy@w@h~yKEda(zw8h5 z%lznO_Q(0rKl%UlSI)1zKiNO;2m8zZFu%+X_s99szsxJ`KY8}oGt2u!|K#V|f2H?_ z^P~T{_Fw7!;r^8Nf429B`Q`UBKT7+r^!_lvO8c+${;)qv`>*u=$o*x1m|uB+oFDy@ Pm;b-z|1bG|%lGRqQ0kRB literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/p.step4000.final.bin b/examples/next/swm/ref/16x16/p.step4000.final.bin new file mode 100644 index 0000000000000000000000000000000000000000..1725ce350b2b0fff4e44364007ed8e7d592eb7b0 GIT binary patch literal 2312 zcmc(h*-MmR7{#+(vP?@SlQKuGrkNo#Xfd*KvPH+yFp9RDXoEH@REkpCSJSD`tS&+; ztgw9(t<<1h6IwJwS}&}bEG(HCno4>Ge{UE516>_H<~`qYIL|rnH-4+0uC=VNnHruu zn;MtfOm)#Mq4|Q>oW>C)f`|0)Pj-{vYwzp#t{05n9vM_A=s)CE&{;RaZw&~4+aTvB zJ-D)ZzhLCf_t%dL4tuww)kDq=TzDhZ%`dz;?$a$nuc@hPO9lPl`}FSMn^)E3ED)Z4 zXhB?vVA}>~g+XwAnYmkz;J6}Bo%?;KhWi{e3)aV1my8u`MSlwXbr0u61j~8P#LDwJ z!GY-&mfeE=HGMy|3tFsi4GHe~uBYEd3#$3^(Z3A-obvtwkC)j@quMeXUJ1@^*8Z9( z{B%cPT7_UzTi_i};UClFIvn!+0{;x?PlDf+9@ayX%?H7c< z#kKXSL3sV42lp*^$paz5q2y2BZQ#rlYv#e!;n z82K@>ziRwTME_Fw-A_m56bmmduCUQ2_(5Bg-zZo|epAR#7W*s3zfI`>eX4_B65Q@< z7oN+@I_9OIn!k(u&Lls5+239Kv!H(;{DMa=>+qE}Q()|E&rm@<{V6BE3FN1N{dwcx z2=wQ|U+9%~#?4prT~j*xV<5lh$d7~l<>8+b{Tc8}%;iPC@*Z#c`;7ivQu!r6KiS_8 z{4=8e0(>>!m;Uf1Bt}1^L}ier~frE&gfHujaSF zA4~t!>96XKj{Js@pK0vR8~^;!Z-F00e{J+9i~O3%PZ|5G!9O+sF8Yn|r_lde`n!Vu zRFPi|`LVLU6#UCYe?0s^`m6f0k^IJxpM3VG=3l`-JNk|A)%{_mzh?SVO@5onkJ_IH z_s>1_&*uJ^MSqXdpV#EKmi(ysR`$0B|B~sy3I1dHzl8qIpg+6F?_lyXhW%yW-){7) z`(s0=`^QOs)%<_oFZP#>f9n3sgYVD%v4{SCr9VT+ua5kbvcF;YHyi!I@Kt|p^heFt zb?SdS`+J0c;q>1~|JD7GMt}FwpJehofc#Xlzf}CoNB;rtk3sZT%@3eI)#Udy`FY9y te&L@B{Slq|@4@%mpZ?^L->$Zf@5eUw_XYo!qW>KChnlax|Nr~{$6t8|gjE0l literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/p.txt b/examples/next/swm/ref/16x16/p.txt new file mode 100644 index 0000000000..97cd5d9e5f --- /dev/null +++ b/examples/next/swm/ref/16x16/p.txt @@ -0,0 +1,17 @@ +50002.357522 49998.745480 49996.597280 49997.162130 50000.113755 50003.735493 50005.908586 50005.346159 50002.357522 49998.683487 49996.482263 49997.053452 50000.060488 50003.728604 50005.903592 50005.326210 50002.357522 +49998.683487 49994.985692 49992.757761 49993.303951 49996.312901 50000.035891 50002.298954 50001.770233 49998.745480 49994.985692 49992.691570 49993.208708 49996.227994 49999.966075 50002.223861 50001.685769 49998.683487 +49996.482263 49992.691570 49990.376844 49990.901057 49993.968155 49997.794565 50000.148813 49999.654852 49996.597280 49992.757761 49990.376844 49990.843012 49993.874351 49997.681336 50000.021666 49999.522066 49996.482263 +49997.053452 49993.208708 49990.843012 49991.351964 49994.445059 49998.316657 50000.707182 50000.226663 49997.162130 49993.303951 49990.901057 49991.351964 49994.386968 49998.221298 50000.598401 50000.116058 49997.053452 +50000.060488 49996.227994 49993.874351 49994.386968 49997.465959 50001.303163 50003.653533 50003.154790 50000.113755 49996.312901 49993.968155 49994.445059 49997.465959 50001.265142 50003.612239 50003.118424 50000.060488 +50003.728604 49999.966075 49997.681336 49998.221298 50001.265142 50005.016867 50007.276317 50006.736770 50003.735493 50000.035891 49997.794565 49998.316657 50001.303163 50005.016867 50007.282470 50006.756660 50003.728604 +50005.903592 50002.223861 50000.021666 50000.598401 50003.612239 50007.282470 50009.454954 50008.875580 50005.908586 50002.298954 50000.148813 50000.707182 50003.653533 50007.276317 50009.454954 50008.895560 50005.903592 +50005.326210 50001.685769 49999.522066 50000.116058 50003.118424 50006.756660 50008.895560 50008.300747 50005.346159 50001.770233 49999.654852 50000.226663 50003.154790 50006.736770 50008.875580 50008.300747 50005.326210 +50002.357522 49998.683487 49996.482263 49997.053452 50000.060488 50003.728604 50005.903592 50005.326210 50002.357522 49998.745480 49996.597280 49997.162130 50000.113755 50003.735493 50005.908586 50005.346159 50002.357522 +49998.745480 49994.985692 49992.691570 49993.208708 49996.227994 49999.966075 50002.223861 50001.685769 49998.683487 49994.985692 49992.757761 49993.303951 49996.312901 50000.035891 50002.298954 50001.770233 49998.745480 +49996.597280 49992.757761 49990.376844 49990.843012 49993.874351 49997.681336 50000.021666 49999.522066 49996.482263 49992.691570 49990.376844 49990.901057 49993.968155 49997.794565 50000.148813 49999.654852 49996.597280 +49997.162130 49993.303951 49990.901057 49991.351964 49994.386968 49998.221298 50000.598401 50000.116058 49997.053452 49993.208708 49990.843012 49991.351964 49994.445059 49998.316657 50000.707182 50000.226663 49997.162130 +50000.113755 49996.312901 49993.968155 49994.445059 49997.465959 50001.265142 50003.612239 50003.118424 50000.060488 49996.227994 49993.874351 49994.386968 49997.465959 50001.303163 50003.653533 50003.154790 50000.113755 +50003.735493 50000.035891 49997.794565 49998.316657 50001.303163 50005.016867 50007.282470 50006.756660 50003.728604 49999.966075 49997.681336 49998.221298 50001.265142 50005.016867 50007.276317 50006.736770 50003.735493 +50005.908586 50002.298954 50000.148813 50000.707182 50003.653533 50007.276317 50009.454954 50008.895560 50005.903592 50002.223861 50000.021666 50000.598401 50003.612239 50007.282470 50009.454954 50008.875580 50005.908586 +50005.346159 50001.770233 49999.654852 50000.226663 50003.154790 50006.736770 50008.875580 50008.300747 50005.326210 50001.685769 49999.522066 50000.116058 50003.118424 50006.756660 50008.895560 50008.300747 50005.346159 +50002.357522 49998.745480 49996.597280 49997.162130 50000.113755 50003.735493 50005.908586 50005.346159 50002.357522 49998.683487 49996.482263 49997.053452 50000.060488 50003.728604 50005.903592 50005.326210 50002.357522 diff --git a/examples/next/swm/ref/16x16/u.step0.init.bin b/examples/next/swm/ref/16x16/u.step0.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..fdfafa07863d6b14e5dc7a8f95b78e46564d002c GIT binary patch literal 2312 zcmc(hJ7|u0^b|34g}I@rHF2!2v&lYcG`%N zU|vST&RsPNLDNJL6;kM;tWm_MXtdE{zVjD9ESqk(SuS_ZoXgIfZ#H-8!m2gdk72`? z)}yDJ--YS6x7oY5r$SBqTzU~}*AV+|IIedc=j%!nT_yLBdLw=GE~O9X!w`PxLymf1 z|Mwf$YisP&;K^6rSLVXX6*o~E?ym)d)b0MptpPYJ&$^me}3uOnnL?BdsH{I`punMyEv2occ%AuGRN6iJBxik z64(2}k<8()TlIdFTK#jZ*Bs~reH+GaJnBvU`mXjIBm7S770%@#zq`(1GIcKdE1U~@ zyN@4wlfUjsweRT!x!Fu^OR3x{hug^IV{&?o+&-n=Lcd7Pb9>DpfAZ_$N7-{x{&fz@ zziRkV_FTjt_~FGL`NI#dds^w8;$1VnQ>t}OE4`DvbICg?|4DMxME>DNazEff*iJ4B fGPZ~C-~WqPoDSr|3CeH z=gbw>%O{(4^bd&vl~GYz+HdyE3#+%MX#da6{vknGblUF2E7>(uWW6@^K*>HWu?hR& zd|{D}$Obd+ABIb?b7i}&$oATKuo^0SMeZ&Nh5kz2S(&tbo>YqD}# zz+)QggaZZjMtbjq%GHpzCAzKAg%q6?ScZbuh znUchxPRLbyno@YUwZ865%-h#@sUGP`!KBAOvUjYh8vC`ct;_;yQq$lv^~{Eve;MXg zHS9~))-3PkQJ$9jc?$BpT_JzwQ|KG-4m{GNw_(`+o#*Y!Wg;Ond@u6*>)m`N)@P_A zA>Tk#t7>6ab{hFzqRjcM)Ig$M%_uYV^Qmi92c*wpgp_=vVYo?dOBG9Dz7qobFD}FT zV1dSRZ;pe!fX9%3>jLyW8Ss4K(QeDI{Uh^7GanumGSe-aNec=-lV0xToSkQ&B}$pe zCn$@&<#R$UK5Zc17We*g|0R|+3R`OQO_+NtU@w0c-fvUEz5Fud zjkQC5nF{(Gw6E2dUbJP{{c;>~DMn?*p}Pe|;G8h!FCF{h=?j zzQ05BrwzmQKX)&D!EFbRsUCEEK1OP!^FsB}%MD9(mhZG)3U691($X;#C#m3@Q}kD-o01-6r_u8tMvXc&Oc9-b zWN0SnxG{c_>?bf2KiF4|!u!f1xK}$CTJj_c$d{dhK9iI3laBmFn(go9@Gn9B6OsR9 zzi6OR62`!&e_AIN_>@=wXZA1V(2bIAV~@-IgJbfbSx zp?@?+cZ)y%;`pZ;{i8(xu>EDoKaKnkA^(x+kN@KTH{^e_5q$6+`X>_obL`R9{^>*i zbfJIP{=3M(9QnV3{ImYx^8XR??}+?=iT;^G|0JV-c8+iDpEdMPG5Uw?cR~K2BL6h< z&-#PQKjH8nf&S@7|9GN*qDQv&j}yl~Y=15CpTyb^@39X literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/u.step1.init.bin b/examples/next/swm/ref/16x16/u.step1.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..0b6d565229a7d81827e3cf58c68f5c7ca916d8ca GIT binary patch literal 2312 zcmc(hYfM{Z7{?1+*WoJJP%GPZ~C-~WqPoDSr|3CeH z=gbw>%O{(4^bd&vl~GYz+HdyE3#+%MX#da6{vknGblUF2E7>(uWW6@^K*>HWu?hR& zd|{D}$Obd+ABIb?b7i}&$oATKuo^0SMeZ&Nh5kz2S(&tbo>YqD}# zz+)QggaZZjMtbjq%GHpzCAzKAg%q6?ScZbuh znUchxPRLbyno@YUwZ865%-h#@sUGP`!KBAOvUjYh8vC`ct;_;yQq$lv^~{Eve;MXg zHS9~))-3PkQJ$9jc?$BpT_JzwQ|KG-4m{GNw_(`+o#*Y!Wg;Ond@u6*>)m`N)@P_A zA>Tk#t7>6ab{hFzqRjcM)Ig$M%_uYV^Qmi92c*wpgp_=vVYo?dOBG9Dz7qobFD}FT zV1dSRZ;pe!fX9%3>jLyW8Ss4K(QeDI{Uh^7GanumGSe-aNec=-lV0xToSkQ&B}$pe zCn$@&<#R$UK5Zc17We*g|0R|+3R`OQO_+NtU@w0c-fvUEz5Fud zjkQC5nF{(Gw6E2dUbJP{{c;>~DMn?*p}Pe|;G8h!FCF{h=?j zzQ05BrwzmQKX)&D!EFbRsUCEEK1OP!^FsB}%MD9(mhZG)3U691($X;#C#m3@Q}kD-o01-6r_u8tMvXc&Oc9-b zWN0SnxG{c_>?bf2KiF4|!u!f1xK}$CTJj_c$d{dhK9iI3laBmFn(go9@Gn9B6OsR9 zzi6OR62`!&e_AIN_>@=wXZA1V(2bIAV~@-IgJbfbSx zp?@?+cZ)y%;`pZ;{i8(xu>EDoKaKnkA^(x+kN@KTH{^e_5q$6+`X>_obL`R9{^>*i zbfJIP{=3M(9QnV3{ImYx^8XR??}+?=iT;^G|0JV-c8+iDpEdMPG5Uw?cR~K2BL6h< z&-#PQKjH8nf&S@7|9GN*qDQv&j}yl~Y=15CpTyb^@39X literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/u.step1.t200.bin b/examples/next/swm/ref/16x16/u.step1.t200.bin new file mode 100644 index 0000000000000000000000000000000000000000..0e62d214fbabe8c5053d186de41eaa58c016e58d GIT binary patch literal 2312 zcmc(hX;c$u6o!+q1`sP!6-5gOjS(nVT18WwVNvN(z@{w9mPkdGg0Wx)!DL!jGZx0d7pSyPHP8s%&)$mY`ML*V4)5p8LLyjH% zX{Mv(69v{(Q6u}6n%zEHoQn3_lbBB}srzV?h!yDlsSWmrP~MXAEd?mwrZiWOMfDMt z^Evvd3W5v$vsLw}-bM_vRaNXLEKm{snfkH6NR@=F{)|k0B$ALgH6(n$Pl-iV-%JZT zpu(24WpuVO7|vqD(-Rw+L>_mu&TmsQV?n`Gms0z8(YnYH}Jc_y`gVI@sO_fjh_BlLbS z#4j1;P1L&HMEUFU+hcI5Pq4ztM?TIb>He%Ihp+AOFd>6OyGD+c>5-rMTQ=K8Oc7Oo zKU?-gL^NiRt!%uJGKCrbUOc+sq8=XjOyqCvXM$hmY#FMrFvW8myxOd&xoa$E2im8a ziGtC6+vL4>(fhE@a@Y5%ylBbb!Q)guS5fI2MfI86js%SrnUZvWt7jQ=95*4W)ps5a zp4KDd#Th1_g-;Q?_68Y$$lHUJ2rE>@2d6MWk$ZM~l^*WZ`uUu5TTO7uN!5L)bEbG` zheP&RYF1UcsN1Oh2XV{3MfX=Yjr!<)QaURIz~H?W6%2Jm6ix4PcSIor~PA%O;4suN21m8If3FLR47uUlUk`PQz7u0ShmhWss}h z7~sjnwe8(1HlE`$}ANAcg z4i^`Xut~bVFW34-tv-Y7o36R)kfkD)-?X`~B2P((R~xo$T;)udrA_#(%T{7vDGO81 z9#&zJ#V0M|bQ$CMm4d;iOe?YLCl zY58vfj#U08fi6}@^{qMZdic&ZCQ0}2Qk$Elm&%D$muQhcpW-&y@#*bO8L{ATpvS|A zXkxEU5HC4VhNYE$*XL{1j~!)psY;{dn5%8_qJvp4k>>S&HB8w5$n*c^-wgQw2K*xg|9F9acmvw~!w3Id0{_tcJAwak;NJ!KPqfj_ zKL-4hz<(q7=NkAY8vJ7?((WHm@J|}}hwd)~{`G+WC&0f@M?3##HTW+B|Ad2oy1_r| z$F%$BsD^*&em?MTugSk!JOADq{67Z&3~Km?u|~Up(lq=-_X~ml7~o$7{9k8e{mXv> v@IMUvZvg&D;QtHoPdfN#6#R3c_pN_Yz&{f3PZ9XX4g5p*)8GI9`~Tw~(_wa9 literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/u.step2.init.bin b/examples/next/swm/ref/16x16/u.step2.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..0e62d214fbabe8c5053d186de41eaa58c016e58d GIT binary patch literal 2312 zcmc(hX;c$u6o!+q1`sP!6-5gOjS(nVT18WwVNvN(z@{w9mPkdGg0Wx)!DL!jGZx0d7pSyPHP8s%&)$mY`ML*V4)5p8LLyjH% zX{Mv(69v{(Q6u}6n%zEHoQn3_lbBB}srzV?h!yDlsSWmrP~MXAEd?mwrZiWOMfDMt z^Evvd3W5v$vsLw}-bM_vRaNXLEKm{snfkH6NR@=F{)|k0B$ALgH6(n$Pl-iV-%JZT zpu(24WpuVO7|vqD(-Rw+L>_mu&TmsQV?n`Gms0z8(YnYH}Jc_y`gVI@sO_fjh_BlLbS z#4j1;P1L&HMEUFU+hcI5Pq4ztM?TIb>He%Ihp+AOFd>6OyGD+c>5-rMTQ=K8Oc7Oo zKU?-gL^NiRt!%uJGKCrbUOc+sq8=XjOyqCvXM$hmY#FMrFvW8myxOd&xoa$E2im8a ziGtC6+vL4>(fhE@a@Y5%ylBbb!Q)guS5fI2MfI86js%SrnUZvWt7jQ=95*4W)ps5a zp4KDd#Th1_g-;Q?_68Y$$lHUJ2rE>@2d6MWk$ZM~l^*WZ`uUu5TTO7uN!5L)bEbG` zheP&RYF1UcsN1Oh2XV{3MfX=Yjr!<)QaURIz~H?W6%2Jm6ix4PcSIor~PA%O;4suN21m8If3FLR47uUlUk`PQz7u0ShmhWss}h z7~sjnwe8(1HlE`$}ANAcg z4i^`Xut~bVFW34-tv-Y7o36R)kfkD)-?X`~B2P((R~xo$T;)udrA_#(%T{7vDGO81 z9#&zJ#V0M|bQ$CMm4d;iOe?YLCl zY58vfj#U08fi6}@^{qMZdic&ZCQ0}2Qk$Elm&%D$muQhcpW-&y@#*bO8L{ATpvS|A zXkxEU5HC4VhNYE$*XL{1j~!)psY;{dn5%8_qJvp4k>>S&HB8w5$n*c^-wgQw2K*xg|9F9acmvw~!w3Id0{_tcJAwak;NJ!KPqfj_ zKL-4hz<(q7=NkAY8vJ7?((WHm@J|}}hwd)~{`G+WC&0f@M?3##HTW+B|Ad2oy1_r| z$F%$BsD^*&em?MTugSk!JOADq{67Z&3~Km?u|~Up(lq=-_X~ml7~o$7{9k8e{mXv> v@IMUvZvg&D;QtHoPdfN#6#R3c_pN_Yz&{f3PZ9XX4g5p*)8GI9`~Tw~(_wa9 literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/u.step3.init.bin b/examples/next/swm/ref/16x16/u.step3.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..bdb1bd8535675e03654a52640fb24216f209815a GIT binary patch literal 2312 zcmc(hTToM16o!*HAzVTV^@3xyK$V+dYZL|LvQHJEfO3fxsTwX~M63}J5FJsmAO))g zkpe{ostD9nEJ(e8aE`U3RdAG0C@KO$4I!XKA|;~K?$mW2%w+o7$2Dv1|9|?vbA%^t zoNrVs$e2fNL*K{9$t33nyI58mDGIVaD3>IYr~HnjjCjjXSJd7F8xuJ~V)m=d)e7`s z?cJ1JA1hJOvjcqXELCNf&cXZDu66^@@%{EXheO);aYj?0YxCGw+Imjn{JE}4@BN1R z0&Rk-7iK9*A@nz%u#|1#GN>oYS!NIOG^DMCZ?)qY6*;9m=PMI_99h-BvfWUuLXPv4 z#VyGiq&zD0TQTtlRV~PHst;lkt)%<|FFZ?yJHndr-ZVb6kAv^0T{&8$eSb`JU+RSO za{N6*x^e#P;oY0Q#C=JV!h{RMnH1fh^-ZJM1r3MFRj`xpgt4f3i8euNAE-&nZyz(s z!WBuB4l^dY)o5**A|q-Yi*RBgAilxx}NqJu53Jcm!$@ME;HE zeD96E{doU=bYRnRe81hgv|0Q9lWP~kB{=VPs*+sr1WY2V+^aFCAU zyqf~|Fcr>^I5K>;0Qd2hg^s2@HKOSL+7q_7+&BzMbkDm>lc^y+d}dD#mZ-?o&GSSx z(_P8*1sf_&GgYXqetGjBX&SU&^waFYNep5%!DnvW=S-r&-7Z&!XQ!>RBprCa)!yo7 zF1{~wx!tLKe`8a`WC6}wky39zj`LL)TsOMoK7VJ?Xvh~#itbPSwmC$7T0ycx2bX>) zl#>%7C~a&|Mm8~uo#mI~$@b=7a;$|iRDIs9ba;v!$(*>mxa$?@YQJe$;$kK8{FQmh z1kc0#MY2Ef-q&($!V2FHKi=n}eII@Nqg5K5*Lpg7Q4!8JtdcBwf&1nU?OM~DswCf0luNtieBYe>?DB0sI>R z|G5qC@_!ikZwCGof&Yu(9~Jn=68uwm>RtcXgMWI#KNa8~x}O95{|@|z1OKV(-}2w3 z!@n``zXSMB2mj=Qf9z=gjPCu{KiN9|;e&s8;2*l*3;53g{w;w2MKk}Ke=hLf0seUc z{&@lZDcr2zKMTP>ec&Iue-H5Q1N>V8|E-1k`Bwq|kAQy(_$LJX69)cqQ|R|k3HYZQ z{6qK4f&T&Ee<$$IGSJWe1|9x~z(0q;Ke6B+-gEu_3Dofq-G3bTx6|RDu|z-rgF5_I zgMYT@_$M+}zkl}W_=oQI0scpT{{Z0MUh$UySm0j<{F?&*&cOd(@Q*S0M+5%hu-^LT Y0r=+}_@^EGa~=Fc_tW41|NH;rA3Sh*r~m)} literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/u.step4000.final.bin b/examples/next/swm/ref/16x16/u.step4000.final.bin new file mode 100644 index 0000000000000000000000000000000000000000..ad61fbb89832b8ad5efd4dfe22cc4c97ed010789 GIT binary patch literal 2312 zcmc)M`&Z0)9LMpQ$>_3Uv^Fw_SafWXB%+%>UlQGmN~uwyi|wLTDbdg&6;ey2h+OI< z6-l|Q%jcVGZ5L}OlTs7A8KXpF&D4V+{HN{w z>I|P=ykK9u?;431kB%f&KPZX9YulzjY>g443PscVswurl>;9qQ>alNGGZu<^7auH=$ z7N@FE`0JZ%IV={D$JY8(w3)X#H7qi^o5mAq77Gyczs`PBQBznT);s67YNaoF^;E~(jHbnT=2 zF-IOb-@{7Z^bD7jE{`6+X`>QL@2oQqyA_E#TeFn?DN2->Xt*b#f=f79O|7u;=}W|-fz&d+oZ&%XNQEBsrLs| zOPA=b;E_p@p>fFtd{VP-uk>lpUdAJHeb?w@o#v8biVXd^p-SAnY)QW5ooHms4Xg4> zRic8Rs^x+zE+Mo(mLBTOBRVq9OSDS)M3O;+tlx`A9JUig9b#;5r*O*I%hY@2qFE=@)cbRW#}|)Md&3tkM9%qqQnPQp-`dUjUv1KNUxwp@A8#r)O&;3&w`Fq@9&g}#MRW^Ig{nrCJgG5 zn*FBWOyLDCi}cf)SH{j%;ha>?%eEXju69x9UsgL}_dU5r6Eo##)7M=-p8Hg2HMjf% z$z>6|`=gy7{Mm%;V1IHrb*?e6bO=vZp$=)#*@As?B$aeeQ|GS2Pr{=7x8}<6sJ3uy zHuZj_cvpdv+RLcpR2}nYlbU^hVw^?r@jkpT&1vNduU_n`^SF8NFEO_13Vg8mLIiFx ziMYLfyBO7HO*x%t+>0bev3Zi%K4f06-Z;rchOW%9@N%Wj?BS{!JgXNqeo9WaPZlF< zrBpv(9f7~xI8n0ssTjZfURra9dS7H$KlF*(n``?E7HpMa&3>&h^zV=g{ky({{u|!* z(*0*hp#P&x|LJp~|G-1gf6OZICmn%5_j19XN0KnwpOyje=Q_8U_Q$6Q{JFUf{L$=h zFo*uP=_u&_V}qf8@7O7H|JT+1bpL~Uq5p}V(0}DL=szwC{K*{vf8M+Rf5@E=X@9JG zz#ro@@JEaBXOb@XquDp;hW>k|L;q=|&_5w)ru+Bmg8p~wLH~Y{(Epj`(7z$$&#K?S zpUGdqAB$Fh+MhzkpIXKr!&%@@G~fL@F&ax{8?NcLi^Lr`12#EBKP{ZFWb{>|0kPh24QGp!i>St+om{dvjHd$zK>uZY=wH$X{f}k(?^+N3gtEY&!bI@L+h>6G z$L}EcW6t=KpacFGG5%=wN0|O6euVxnbwU5`Te|7~IVAL-rh@(l7C`^snEvY>!JpC; n@Mom}{IOmTM*B0{6#SXF2mI+U1b^DEfj^pk&F}yJ{r}@X>KuWv literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/u.txt b/examples/next/swm/ref/16x16/u.txt new file mode 100644 index 0000000000..1bd526f07d --- /dev/null +++ b/examples/next/swm/ref/16x16/u.txt @@ -0,0 +1,17 @@ +-0.706507 -0.541446 -0.294453 -0.003252 0.287891 0.534629 0.699408 0.757266 0.699337 0.534570 0.287862 -0.003292 -0.294522 -0.541531 -0.706574 -0.764486 -0.706507 +-2.004870 -1.534692 -0.831232 -0.001786 0.827495 1.530426 2.000004 2.164850 1.999853 1.530293 0.827420 -0.001896 -0.831413 -1.534914 -2.005043 -2.170036 -2.004870 +-2.997075 -2.293469 -1.240699 0.000757 1.242050 2.294292 2.997286 3.244078 2.997087 2.294107 1.241928 0.000597 -1.240929 -2.293744 -2.997294 -3.244222 -2.997075 +-3.533000 -2.703205 -1.461520 0.002897 1.467267 2.708716 3.538196 3.829413 3.537980 2.708497 1.467105 0.002723 -1.461726 -2.703459 -3.533221 -3.824447 -3.533000 +-3.532007 -2.702408 -1.460943 0.003386 1.467849 2.709521 3.539247 3.830574 3.539026 2.709267 1.467644 0.003212 -1.461105 -2.702628 -3.532224 -3.823380 -3.532007 +-2.994767 -2.291607 -1.239338 0.001937 1.243485 2.296290 2.999899 3.246962 2.999681 2.296015 1.243256 0.001777 -1.239460 -2.291793 -2.994966 -3.241735 -2.994767 +-2.002763 -1.532961 -0.829936 -0.000610 0.828990 1.532545 2.002809 2.167936 2.002635 1.532323 0.828808 -0.000719 -0.830011 -1.533093 -2.002914 -2.167766 -2.002763 +-0.705978 -0.540926 -0.294002 -0.002766 0.288597 0.535700 0.700909 0.758922 0.700841 0.535614 0.288528 -0.002806 -0.294031 -0.540984 -0.706048 -0.763928 -0.705978 +0.699337 0.534570 0.287862 -0.003292 -0.294522 -0.541531 -0.706574 -0.764486 -0.706507 -0.541446 -0.294453 -0.003252 0.287891 0.534629 0.699408 0.757266 0.699337 +1.999853 1.530293 0.827420 -0.001896 -0.831413 -1.534914 -2.005043 -2.170036 -2.004870 -1.534692 -0.831232 -0.001786 0.827495 1.530426 2.000004 2.164850 1.999853 +2.997087 2.294107 1.241928 0.000597 -1.240929 -2.293744 -2.997294 -3.244222 -2.997075 -2.293469 -1.240699 0.000757 1.242050 2.294292 2.997286 3.244078 2.997087 +3.537980 2.708497 1.467105 0.002723 -1.461726 -2.703459 -3.533221 -3.824447 -3.533000 -2.703205 -1.461520 0.002897 1.467267 2.708716 3.538196 3.829413 3.537980 +3.539026 2.709267 1.467644 0.003212 -1.461105 -2.702628 -3.532224 -3.823380 -3.532007 -2.702408 -1.460943 0.003386 1.467849 2.709521 3.539247 3.830574 3.539026 +2.999681 2.296015 1.243256 0.001777 -1.239460 -2.291793 -2.994966 -3.241735 -2.994767 -2.291607 -1.239338 0.001937 1.243485 2.296290 2.999899 3.246962 2.999681 +2.002635 1.532323 0.828808 -0.000719 -0.830011 -1.533093 -2.002914 -2.167766 -2.002763 -1.532961 -0.829936 -0.000610 0.828990 1.532545 2.002809 2.167936 2.002635 +0.700841 0.535614 0.288528 -0.002806 -0.294031 -0.540984 -0.706048 -0.763928 -0.705978 -0.540926 -0.294002 -0.002766 0.288597 0.535700 0.700909 0.758922 0.700841 +-0.706507 -0.541446 -0.294453 -0.003252 0.287891 0.534629 0.699408 0.757266 0.699337 0.534570 0.287862 -0.003292 -0.294522 -0.541531 -0.706574 -0.764486 -0.706507 diff --git a/examples/next/swm/ref/16x16/v.step0.init.bin b/examples/next/swm/ref/16x16/v.step0.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..e204cd154c79d9a8b08d39bce07c081860b8e080 GIT binary patch literal 2312 zcmd6pPl%0C7{)I(qY;yZ5(~;gQKL~tjpRM~H<$6R$e%l9J*8%2RwUg8DJ#X&jt$Aw zy)&ZAIWw4=uo)6+7To9>L&k_ zS2j^T^sM{Lv~_%Md9$K0+udm#UGm~eL()8T^{s(h71h6syoV3BBOiE9fDiC~9h~Nm zb-XNIy*z4*7p%QlIyY`#m%nb?I5uUc#s_~M>-m;cb@hFKt48$;Bk$?+@JUsN_cb`p z&;2KVPk66p{-5{pJbZ6FkEE)rPv`KQb7|r{=`;AGs>2(+Y5r>NX_EWh8TTLzalg{t z)YYf^ZDmhBvS08nuwU>F-oaZtoaPU(w_Dlw>(LisAo?X~A9eK&W%hkDeuH=LN#Py5 z8^$M^zvDz>ZKSK_`#Zzw;=x(r(O~sP>zAhRU|(Tx*QMs9kEyHg0Nk#qR*JlXclRRi zc#ea2@U8%-`Ffu%b)JX%vgfg>&hvo(?L1o8k16(}^AG!>zBV}S*L3gjGwuhxt!F

f(^o$h^tJPTzrqL<@VI&HFsx z&*vOvwI^ZrZzkrOo(mQrBt z;ZYq$UB8ZAEjMbh^@CbbaW=l=W?VL0V~{-@3pV(@6|8n_oHj&g1kl z4S7{M7vy_tjub8}J+GZMk^T;K##xz}TsUx0SAN_~=qsg}rN5ZS@Qh4XP%}qrZbjd6 zuhWp=iIXoc-qz3?9-LSVJ2OY;$NzLtsWs6tqW+e+EHj;4=;fK7X{NU}Q#|XqiO$_^ z+OtqMM@vU?sL&f4n$7n=Zwm|yNu!7Az3#u8-;=U_hkc(*ov=^any2=C{$2t5j1s{`q&8lav6qxJqm<=vH2N!(08#n^nIcl`abj(^u0g}eJ6p?cl~$J_p?W!?=OY} zZ{lF!t;7v@QxyYmOYb6Y*}$9X4Dj|?0=%*LE0VtDL%FlGSBdSMI+@E1w+HWPG&wW# zDxZ08g$v_u*j6h$=fb4c_O$5#aAtaQvdzLIE@Smjf7y~XODp({IBo`u$vLa6IG#%idYS=4+7u zt;l}~^1o6K`{+gfBanX{@}J_se=_=K0{wFo{llPtUPJ$sqJR9*KWzSw$iE!!KN093Ha`IQe+l_Ng8WA!{|U&y z5AvVpz<&k$XD#|CAN_L){i8(xTtoj{NB@+gf7tx($iJ!`{E_x-v)vzirokWUhS48` z;16aJ{9!5re|)0=|D=8n^ZF1oR`E|Y`iITuBmWZQzZm)NM*bI(e-GsU zBJw|v{AZ$ncB6lOM*q<09~t^56#b(^|0vKuY`z@%k8t3>brt?EBmbNT@Q={JKaW=N Q&kFj7&1b*=|M&mL-@12&X#fBK literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/v.step1.init.bin b/examples/next/swm/ref/16x16/v.step1.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..314d9a8c4d7a766dcb394adbb84109a12367eaa4 GIT binary patch literal 2312 zcmc(h`%hD67{^;?ZEziPY)o7>f(^o$h^tJPTzrqL<@VI&HFsx z&*vOvwI^ZrZzkrOo(mQrBt z;ZYq$UB8ZAEjMbh^@CbbaW=l=W?VL0V~{-@3pV(@6|8n_oHj&g1kl z4S7{M7vy_tjub8}J+GZMk^T;K##xz}TsUx0SAN_~=qsg}rN5ZS@Qh4XP%}qrZbjd6 zuhWp=iIXoc-qz3?9-LSVJ2OY;$NzLtsWs6tqW+e+EHj;4=;fK7X{NU}Q#|XqiO$_^ z+OtqMM@vU?sL&f4n$7n=Zwm|yNu!7Az3#u8-;=U_hkc(*ov=^any2=C{$2t5j1s{`q&8lav6qxJqm<=vH2N!(08#n^nIcl`abj(^u0g}eJ6p?cl~$J_p?W!?=OY} zZ{lF!t;7v@QxyYmOYb6Y*}$9X4Dj|?0=%*LE0VtDL%FlGSBdSMI+@E1w+HWPG&wW# zDxZ08g$v_u*j6h$=fb4c_O$5#aAtaQvdzLIE@Smjf7y~XODp({IBo`u$vLa6IG#%idYS=4+7u zt;l}~^1o6K`{+gfBanX{@}J_se=_=K0{wFo{llPtUPJ$sqJR9*KWzSw$iE!!KN093Ha`IQe+l_Ng8WA!{|U&y z5AvVpz<&k$XD#|CAN_L){i8(xTtoj{NB@+gf7tx($iJ!`{E_x-v)vzirokWUhS48` z;16aJ{9!5re|)0=|D=8n^ZF1oR`E|Y`iITuBmWZQzZm)NM*bI(e-GsU zBJw|v{AZ$ncB6lOM*q<09~t^56#b(^|0vKuY`z@%k8t3>brt?EBmbNT@Q={JKaW=N Q&kFj7&1b*=|M&mL-@12&X#fBK literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/v.step1.t200.bin b/examples/next/swm/ref/16x16/v.step1.t200.bin new file mode 100644 index 0000000000000000000000000000000000000000..a5b6bef07692a47404d5c6828af8ca6125c61996 GIT binary patch literal 2312 zcmc(h`%_e97{_8R2V8azc1Y}txI&b@&Uzll_@t6L9XTI}3&-e2=r@5?B z{Bx8P6~8FUX<@MlQGol3+*wT`&&IRW)R#jUKh zm(=7HMN5&*72)$tk(8XfT9>*-heiEPHqD?JP3llz#`RC!IaHHJ3Huqrp)MtD3#*>e zr22EsCaX1ARE%Po!NDRa*$nwE>x@!!3?<0?$IE@8d*x`}{N`o$4i%z(JSXb)E9%5l zxuc@>syd-=vDalygbHEzV1IX6h8zjXYvO%OB`D$6mnQE7OUM>^fo-gPbq<|Xr$Pp|9JdZoq5hbutg^|HlWC4ILVrIA$>ay`VGkI8EJjBR z8lUHXAwvpNQBp$h1WGdyhTKe{nyU%W6*B%2939Q323|O zq?*QI0qU1;eX?n-1KGgJ^62EpkiiuXxOo0t-FY#d7bQP;!}C>tJvPDfg55#7c)oUa zSQpQ;HfS~B`6a&vy5o5!|C{&L?8on^J+nrN-!rtsHyOVttfSP)l77#ggDNTbJ#o7R z3h{fwuNhfb)9*<%#_1E@F7!TARD*cQ^gfw<<5I8V_`ZocOYJC;%*JrZ)lnZpfGK!A&<9;#uD~oa?vgp2Z6otRwzN5Uhodn%?>)~>zXu9tk z^&1c2zF(+|Y{q@x5}}4_=)SwDZA!&`msIxiZqvLOwjS=ly!nXyaxrfKkA?nbG;ba) zAL?DCc{}|#i^9AeFe)~Tqj@{S?vi8Pn0&H)DOV$Pn0!^V*~d7PO+{GQdrO~bQ_EJ3 z1&yE9r%1=uH78H$Q_Z^JX$522l+)h1(RrwBk&Iw{G+;3>7Op}j{^Lo3;tOT{)q?wF!@u!e-H3)4E%cn|1rRS zH}JpWKlo1t|4f2^Qo%oV;Gaj}pO3&lLhuihzY+M4ZC3J6SStBnH>l*_N~q+2<2dl2 zqvXG)SINJE-L+V2mHh2hXDUaUy}b)@Xz&^ z^beE21o#&$;9qAE{?mbf6Y!64fq!Ba@y{6ehsl2g{2KxPUckQ}@J|5$UjzT?!2b#0 z-xB5c;KH>@Xu!Oj|cdN$=?V3=P%&@heh~z2L9{7Kl%&&W3Y&SDDV%H M&wT&?@Bfc~0P3Z6EdT%j literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/v.step2.init.bin b/examples/next/swm/ref/16x16/v.step2.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..a5b6bef07692a47404d5c6828af8ca6125c61996 GIT binary patch literal 2312 zcmc(h`%_e97{_8R2V8azc1Y}txI&b@&Uzll_@t6L9XTI}3&-e2=r@5?B z{Bx8P6~8FUX<@MlQGol3+*wT`&&IRW)R#jUKh zm(=7HMN5&*72)$tk(8XfT9>*-heiEPHqD?JP3llz#`RC!IaHHJ3Huqrp)MtD3#*>e zr22EsCaX1ARE%Po!NDRa*$nwE>x@!!3?<0?$IE@8d*x`}{N`o$4i%z(JSXb)E9%5l zxuc@>syd-=vDalygbHEzV1IX6h8zjXYvO%OB`D$6mnQE7OUM>^fo-gPbq<|Xr$Pp|9JdZoq5hbutg^|HlWC4ILVrIA$>ay`VGkI8EJjBR z8lUHXAwvpNQBp$h1WGdyhTKe{nyU%W6*B%2939Q323|O zq?*QI0qU1;eX?n-1KGgJ^62EpkiiuXxOo0t-FY#d7bQP;!}C>tJvPDfg55#7c)oUa zSQpQ;HfS~B`6a&vy5o5!|C{&L?8on^J+nrN-!rtsHyOVttfSP)l77#ggDNTbJ#o7R z3h{fwuNhfb)9*<%#_1E@F7!TARD*cQ^gfw<<5I8V_`ZocOYJC;%*JrZ)lnZpfGK!A&<9;#uD~oa?vgp2Z6otRwzN5Uhodn%?>)~>zXu9tk z^&1c2zF(+|Y{q@x5}}4_=)SwDZA!&`msIxiZqvLOwjS=ly!nXyaxrfKkA?nbG;ba) zAL?DCc{}|#i^9AeFe)~Tqj@{S?vi8Pn0&H)DOV$Pn0!^V*~d7PO+{GQdrO~bQ_EJ3 z1&yE9r%1=uH78H$Q_Z^JX$522l+)h1(RrwBk&Iw{G+;3>7Op}j{^Lo3;tOT{)q?wF!@u!e-H3)4E%cn|1rRS zH}JpWKlo1t|4f2^Qo%oV;Gaj}pO3&lLhuihzY+M4ZC3J6SStBnH>l*_N~q+2<2dl2 zqvXG)SINJE-L+V2mHh2hXDUaUy}b)@Xz&^ z^beE21o#&$;9qAE{?mbf6Y!64fq!Ba@y{6ehsl2g{2KxPUckQ}@J|5$UjzT?!2b#0 z-xB5c;KH>@Xu!Oj|cdN$=?V3=P%&@heh~z2L9{7Kl%&&W3Y&SDDV%H M&wT&?@Bfc~0P3Z6EdT%j literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/v.step3.init.bin b/examples/next/swm/ref/16x16/v.step3.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..9e3a8ea0e509497e3487c9db8d0e2cc28b7d473a GIT binary patch literal 2312 zcmc(h|5r?T7{_PEnQz-P8`g3xTWwMlDyb0nZY3*LH6^V~k5l+1|O&$!S1rC&O`zw96IocDP?&-?Ydw|HQm zqclK+wGrx%yhh(*oH7qj?rSdY)g%gk<1fIIo0du30tL9bes4nhGlz`#9! zW1ctJsKLTdTRUHqYly~^<}KR<3{raFqFJ4ROLla(mVJ#0NQL%VW%M!usruEYsbGjp z)|{MuV=0$G?*B#^ICNG+6hnTwF89S=nHtuud zN|;2!#(S5iNA29i!sl+EDN|(_umQ(KEl)mBV=;d(?f))HO+3=hG<%S5AdYI-iMN7T zWalr#mKRU3N&l`|)3rrxGAk-2qF2NsquadO4N?Qa4eDF+tyoRa`2lV=z0bT`ut{-2 z-CT(d3%wO3e%&#IP2J*q$unJ#nIFBo`(dUY+vQL(<6!>~7H4bmvp}lD0?hTJ7UC8x z)w#hYhSf?~PhBOqtJD$m60H3;+#e!dTBPRWZqyUv_eAG7>-9wJCE@dzH-`w1l~z;y zWjbOs5X;c_wGecE^tm}XYFQEy)Ofha#4(n@!-}mErn+GcGfpYXFT`Q3$Fg19Wl7io zd-Ove$5@PXxp`MH&5dx@q`9gu#1WZ(mYK%+<}-Qwjq_cr(wK>8UM1;O8RvKRadG2( z&MRWJalRyKUW9SJk#WM=I8Wzi@TNR7?lU>^UX?xC=l+O}6N2_xaHTF(hW6?0`ccY7 z``pW#Q#FG2xg8lcS%mh9IsVD#2DDG9&!N;o^q$o{YwqySd&;zPrjMfc?5J8>;)UMx zGgXcF5qeL@s)=pJ_sn(LTxN>i^S<(Oo+WxuI-k?n+Ibq?H*fXwzz%fZbWZV>W^`Yr zw{*!Rbl(F~hOIBU?{$%TunygKMQXk62)gg>vs)Gwq5F1j+7oY$`ei#$d!h;TE2Kn| zwF&i$e^n&WqJHrUNA`V%`gJUC+J<=4uhx1`Rgl z$S+afc`lXx#=bLusHw_Ceeb=?R>YvbZ$9+2x)Alfug-0&JL)^XT(iY@_`<0Qm zhlj;JD-dr^uIFudh&Pv>Fv(lQTk(Z~q{WCg(Th)u!VzzKBYv{#L%gZ%1<3-$8=dcK z?I&NDttEC%2o^64Ws>o;7_0pU`J~YP`y!KkA=z!$**x)xkQ90Z4QD*&lWUwKh6BG~ zk`DdJ>$}pmgk?>0YVv$7R_2stU+>4ng$#?ygTs8hD}VQz(o!Mb@z}kDEEnR{+w1~H zNBH=Q_?2_dtz+U>draFCT(lUSzYh365B%=~{#C$#1@M0h_^$^3Q^xSG1pmA(rTpU# z{@DTkxd;9!0RQ0NA3A?K@c#t(F9iO3fd3%i{~+)m3;c6{|7!4$9Q@M;{wV;V5nf`8V6 zf9QNM@ZTt>__r|ZdB=Z#G{ygN4aGm}8O48B1I51?i{js_mhz92g7Qzgg7QzICFLK} zV#+^}W|V&z51ZckX94(!&OZbE*ZfERv%xe_!A~4fwwe{LcsfD8WA*@Xwnn%0C+LPZ;<| t2mUbu|Iqm#1OF9c`0pNv|I5I?2>g>U#y^5_{NoJ%q4VkQ|Ns5}@eg+cd=CHs literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/16x16/v.step4000.final.bin b/examples/next/swm/ref/16x16/v.step4000.final.bin new file mode 100644 index 0000000000000000000000000000000000000000..6713f413b7c39eb8502fd017cc69168e2b256074 GIT binary patch literal 2312 zcmc)Mi#t?#9LMpw7`JB{YD=s_*|ySFmS`>Q??_3Mu~8Hvk|HVOR%lzd)<`!Ll|)gp zr1Wehzf)V$O*O*MsvXOu;mKvz&M;xmp6|@xuz$hlne+R;-msTOB*_CM=&)t|=a9)s zbgt!Sj`o-q@$S?UhsO0>;_A%C-hMupNQ^H%=QF8AWM}oqg>V>zmW3tXH9~^6dXJ%- zg%TW;@fnTkFvz!iKbEn^w8)B@!F9P#T(Vr@*(z}4l3Cf`xw(vJk$L_Ze&rkn$*`MZ zxiw#c*{c1{)QUJOV=-F5ktwGiR3Hu0^bD^pEMkjaVhp2#L$uo)g`T>`A>0Vwf)!g? zM8;IBA3{xzuqVQfE?vS{mBjNmZ8Kp-{RA0Qk2jcm+BBFMB#a@UK>P0tl51fB>IdL zTYpq~d}x>9$`#>y!9jA|er~2WCs2;(^6*{HH!^%Bfz{D+REis>Has7ACB*9eQ%Wf_ zKoN$?X7j=;yZ~%=Nc=?qq!T*Q*y3jBz5~S&*2A^@FjW4uqjte8f5dPeGg0QO!I{nN z`gzJ7IO=gq^~2II+<2}oyk(U?u72VDD_iJ-*0F+?Y`+_d>YD8HtnP&)OTm`vkh%aw znos6cDV=cd@{otNaGWyL>)5xQ{OhWeXtyh&KMV0 zQNM@zb=CD|>i3|aFz=`wDgIJiP`dNA5MOLHebhvK&xO4;^{v$R%)0FHIP$#=dA`b& z_fy}~ddl`n{y{l%cisPwM~@8sl9@AmMurse^>)(-ctedtdu<%{}UUvnHSQRZ{m= zm@K$fMBNwh?aAM2sr%X-GxKmXbzcJC%9Tcy93uKjDenb!UvpR~p6+Q1v^B~2e9Tv3 zq~4!rwv6j|R)WXZzjg4^WsprfEr|Wpy+x_5{A>>|N733BVcy@|zO5Hrl9KJ2Buxh|VkVdu^z#CEx&(lTZb&!85kLNnn%vN zYMJDc$0HZbUwLcVfDYMnlU14P%_QyY=3}F%UaY&h(=^S#7ddLPhtB@UButOH=)afg z5a?)=Mae}TF(a!)#JGvnze)47#Id_yn25WnfdcVXS{M%-Nf9*){ zUv~riTPeZ6b2|8676|^0tigYU1@!0jLg>$^2>Qd!hyFaA4*jW8^~YQQ{gD|!f7JUP z1o)pi2>vs(!T)Yo@Q;1K|L;NI{}^L2?SFg^_zzBk{&Z+Ue`-yjKR&Ad)PE2C303u{ ziwFIgCWHQ{_ea9Ozh6K24;upi=}zF^qY(TX=z{-^hr$1(%D;l`O7~~67xd?I3G~Ny z1o~s_3;p4!`Xf>G=g>n*Mt5@hcD6nQSV=G0RJ+T{~lBD|5W8)#vX zK!1$fp+6>}(4Wm?(4R%4&>x}?`ZJ>H54jNfqu$>Y0shl8!GCTx_-CI0|Iq^Qe?uGm z=huV(wA6Ÿ[>8= i%T= ɷ&=0s&۽*VyBͶ >Ӛu!>Wۘ>}6w =\=*Vཞ\v1Ÿ[Кu!*qO!=Uyu\=v=7Ÿ[>̚u!>*qO!>=U>=yu=\ཻG'۽.i%T8Yۘ=U[8Ra9U󽝾h]'۽G'=i%T=9=Rۘ>=U>[8R=a9U=h]'=G'۽ΫU8e$ҽ = i%Tx6w 𿯪a9UfҬFv$ҽU8e$===i%T={6w =𿯪=a9U=fҬ=Nv$=ΫU8e$ҽ059{7!f$$ҽ ɷ&۽\vuཡh]'۽Lv$ҽWy{059{=,!f$$= ɷ&=\=xu=h]'=Kv$=Wy{=059{z=u1#=!0s&=OV=\=G'=U8e$=059{=zu1#ҽ(0s&۽HV\G'۽U8e$ҽ.059{z=vu1#=/ݰq==MT=SB<=v=i%T===+!f$$=u1#ҽ/ݰq齧=MTVB<vi%T=)!f$$ҽvu1#=0s&=¸=MT==;Ÿ[>9=i%T= ɷ&=0s&۽=MT=Ͷ >̚u!>Qۘ>s6w =\=GVPBӚu!>*qO!>=U>={u=\v:Ÿ[Ϛu!+qO!=Uyuཞ\=G'=.i%T=8=Yۘ>=U>[8R=a9U=h]'=G'۽i%T9Rۘ=U[8Ra9U󽸾h]'۽G'=ʫU8e$=== i%T=s6w =뿯=a9U=fҬ=Dv$=U8e$ҽ= i%Tu6w 뿯a9UfҬKv$ҽʫU8e$= 059{=>!f$$= ɷ&=\=u=h]'=Yv$=Wy{=.059{,!f$$ҽ ɷ&۽\ཅuིh]'۽Wv$ҽ Xy{ 059{=szu1#ҽ0s&۽4Vཨ\ེG'۽֫U8e$ҽ059{z=|u1#=0s&=-V=\=G'=իU8e$=059{=sz \ No newline at end of file diff --git a/examples/next/swm/ref/16x16/z.step1.t100.bin b/examples/next/swm/ref/16x16/z.step1.t100.bin new file mode 100644 index 0000000000000000000000000000000000000000..4f005d98861abd58b0563299aaf918ef6334cc16 GIT binary patch literal 2312 zcmc(h|4-C)9LFWD4&6XwRwy)a;MuU1kekAMeHbxnEZHqnaDH1V&|;uF$OVq z@pxac>3H9*9qoKHwYJsfUvYT*Fe!#Xqb z;=SCmV_RzS8|_>rc`9>w4yioNz0{mrVi};HuSL$N4E0gk-m66_PY?c+;!=6avJP2P zp7QI)5>%dwQNL31eCEl)CfoU8&fmAtlC^4_dunI*Ecf{N<&1>aUsd1o?#Kmh^}G3I zOZv>dVQzILy%?|hIVJs5ljJGmkG$0?PsgsCqsil^lCq&=Do@wG?+E0{JSTja%9Hc0 z@FJBbqke?+&&cyDv^;g}uSwq6>1=W%?~SRv79Q5ztMc@0c5F(ZpM#$^`&FKd`d4Ls{JHec z?@C_pdc<>bIM$@s?8&yr%s1)n`!l-^sD4h@E*|Pq^Eunlm=f4my6lfw=0~~Gzvh;_ z7U!&KPw)#F^g>A=TZw7{nA#s zA9`5!N3AkH?S}NPU6DNXKmX@LDo@_%!Obdf+%G>P_sbD-Kb#@^;|`f0o27sDNuDdr z`QAo#r&{Ndxz*}U>xCb>d1LB+$t?Fn9kM@)lKGKI`lr2;r8M(}?G{;|V9;FrIIe_nupir}B0WPf}D{xRy;f&cA6{8xkj1>ip# z{O5rGH^Ki?@K2ib&s9PG*$)3i!9Nl3&rbNqsJ{sOe+T~8fPWYGj{*Pj;Qti(-wggI z;2%5uQw9Gp{8J78fFIon|6GKBjQUT2|1$6oe`+5E@t+I+XM_Jf@V^%RDTIG8KmAeo z=RWa={x|#+7vvwKehK*B4gP0<|F6J5^8fLF1^l;z|5UkO?uLKn$o?4f)ANG-Ghq|| z9D;w0`laB1y1ZX>kEY%aY6Jg~;QyZFX%F~c5B_uEpK-Zg#{0oK{1XEIT!w#k!9VHn zk5S(R{!fE{+z(-Ylq3G8kHNn+i2t|Y9|!#7fPV_)e%J^9^uj;e;Ggg{;vb{F@&5nc H|3Cf(RZEL= literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/cu.step0.t100.bin b/examples/next/swm/ref/64x64/cu.step0.t100.bin new file mode 100644 index 0000000000000000000000000000000000000000..b5902e597aafbe84af5d9ed88ada4f1e3235bc21 GIT binary patch literal 33800 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 Je~7>S{|8Cjl-U3P literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/cu.step1.t100.bin b/examples/next/swm/ref/64x64/cu.step1.t100.bin new file mode 100644 index 0000000000000000000000000000000000000000..03bfd91a9dc94cd0b4fd46733e79ae65d31b611e GIT binary patch literal 33800 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

_>{FI;aQ+~=H(|?dZ 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 literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/cv.step1.t100.bin b/examples/next/swm/ref/64x64/cv.step1.t100.bin new file mode 100644 index 0000000000000000000000000000000000000000..28e95c17af2f10b1ecee5bd25b52eb7702f59904 GIT binary patch literal 33800 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 aI{#rW|Dlfm(4PO$>R#|4X7L{){r>~;bT{Gv literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/h.step0.t100.bin b/examples/next/swm/ref/64x64/h.step0.t100.bin new file mode 100644 index 0000000000000000000000000000000000000000..f1c8cafcbe4570675aedf59315ebe8ce22f8a767 GIT binary patch literal 33800 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 Jxc@o-;(wKu2WtQT literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/h.step1.t100.bin b/examples/next/swm/ref/64x64/h.step1.t100.bin new file mode 100644 index 0000000000000000000000000000000000000000..761d5dbb156dd33e1b6a66a6e883a5ee49b977aa GIT binary patch literal 33800 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 literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/p.step0.init.bin b/examples/next/swm/ref/64x64/p.step0.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..ebb942c29c5e25551340f8cd6a593524e16f9dc6 GIT binary patch literal 33800 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 g{~ literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/p.step2.init.bin b/examples/next/swm/ref/64x64/p.step2.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..e09163a7a324d47a5892b8c34eb22b818796b036 GIT binary patch literal 33800 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 g{~ literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/p.step3.init.bin b/examples/next/swm/ref/64x64/p.step3.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..d504fe241d08f7a12e36ef57347a65534fc052aa GIT binary patch literal 33800 zcmeI5c~p;UyT?VzSd@^8P#KEMQ6cjXHj$~=hDar~GZm4@oRW%+QD!nmD09e8<}z<{ zMMQ;=IDM~v-@VTIt#j7qEulKFL?$xT_^W2~3xqkP34d3f7sb4cUP1j7DhHqDb}3slmaX!_R;6e(3p^KIrf3{uebgA^sEZn9Fm9`4 zV}dbp->uacAC8>aAAi3_zfm`Q{^206DY%})%)94t{ZL!WcDUc#w z^MAAsOTdX3JcpxID(B<#iyn?r!5G(}K^mUJ;JRt^aGzcS!!>Z<*{dQ} zU>;e2?5cu!y-*8XCw9;yum|S7|y?s6RTv>Zp1o!{gUt0_F zX z7s_Bp(ggm`c{DTIpb;9*J z&8wn`>rd1R-GKXRgukH83*jHzX{zuap5Z9=Q1x!FIQ)G|j#&&ouhlBzF0S|By?S$8zwXXan{hwa z@1yJE{>J;eL}5ODIo37g{ami&g86zLJTLqMJDnE(N~v3gKfaE)@GGx>w14uivlx60 z&o6KLHnFRvX)gP4{nOb7BVcy}pFc{+{q;9Ln;_qV&Yxajen#7$dBJWQ>OK)WHXc_o z4?GW^-WUGe0cU&RIppM?yz{+iOb)Jh2xH>A5qB|unEa_Xem~14O6;Ls+=!3(e7i+^ z4DlS&+t!+a>$mWklZpFfPut>x`xicqeU15KU47+<`8AoKdI1oXb1;9i%5T1bYh=Hg!tWC{M)-Tot|9ziJR^mF&Ygfh_`B*C zCyPDwe?H(7K3_H_u0HrD&o`cl>wkIR^9uKK7&^-p_kXe8F$?o)m@;e>=GXdmTjBqv z`B?a^zTLk8{s$Rn7K1yF;>j%VM$;JJat;n5<`(Nv( z{t@%(@zvTH^E;k5ECKV?O0dkp{HxhH%ky|V%ySit-VFKQ*+G@OOUEPxy^A zRtbOLEgRvlcm1O9cL?4g{Bix3R|0?cD=uOWgCnn*;(FzpTlwSqq1h|)aKA#&71O|f zs*i{8FZXp7eutaAg@6Cz+;s3C%Flj)@5562)DZA5uD?t6du9KJ`ybao+CTZbt|$xy zzx(2Y7O=bbZM`nw{?9LYcZXeO1O}hS{C+H-Hwg2M(FqX#c@p-k$2gDvW>}X(*>p!g? zbP4zCd+$hZ+<*M--l2><5B1e%2k|^U3~cL+=W%0mojVxm z|I+{A{>Sx?_D}vXEvE>-)tC2)xL<$u#BR9%jQAtxFrUUbs|I3zT0_DM#EvK2xsLf8 zt-kdDJfY+Aj4>{`(MtGJ(jEwZ$1aY-Z=7P$7{8zOwB}=sx=uO5-=}b}*n?HQlfwVS zS|bVfJCatV5AJU{F9C35HXUXv{+_b` zOaF)aAJ;$HKly7$*MA27LtUPE;QnWvUu9!Hn-{B00e|b$AA~>JxnMi^)h$~1g6Er^ z=3>0(^xkSW3W~;^-L=MIw5q+(3gfMW>+-W&(uHBKCZaZP<^;ZKQuD*RD5p#g4pWpfTlJINqX)gAV zI%ux&SM1^|{P%B;68;OPMhO3=86AW__Th^O;8)9kHWK`m4*V|uox5G6`1{K75B*>I zKivPg{?Y!)f6--pA)fz$?XJGyuf2bP@aHCYFU9+6&}M!c%zsbfiHhK_H)m4~aF0n` zJNj$UXcD?N`%BR{+0XbgM!l{x-(fUyXgUVJj~ky=6MtVm;7ApGUe~==dt7f}%ato| z{XdGfPwbm-#+dr!{&lpvmBl)F=!cIykG&7WW*wDy@Ws7+MpKrV=uiE{+DL`g#S?90pV{R@I$^2Z`%~k z1Anm9V-@iKYWQ#}z7HGfolL^_!S;nq9{BBSTr$CbGiT5y@Lz1uNa8)^_?Phy{a^Y& z-2b@#om1HVMg@QWR+hqF)o<`D@L#*srvmt+=h`0zN7R6jC3vrQoBM>~JtvOxdGxtx z%-9&>j?t}0wcZ$0lANbtv~)6jjIsRG^lEl|9J%pLqiao4Y0_ z|Cjy`_dl+Gw14t%sbM1g7N5VWV}AMza}Qy@zfWo;{KoDzgumCShQj}4-XP&Of1cS3 zyqevI3%^|t@M{kiyl zt}Y1a1$(#|Wa9;UXdBSQ8T>mYnHqrmP8Su4_m%S>jDH#b1g~uzxAgY`1{=hlPcl!9*bJE!}S)PiCK>8*Niayj{Dhq_7i*95;R`yq0f~F zSugALJShHymFG(FC)+nUo`L7$mwIX=p3A33QC0C=nEzt_gYoYSMf^kmm;Mj;KdyhY zfAS~w*Ao5|KXu`++PH)8CpT{({MXN!3ID_-d*RnohQf3Fq;`?Xae`pZCAMe&L6?;&98!7&j<40eKFFM?ao{s17PIsp% zp2y2w%hqFL{*(DH=06z!GXA0eOaF)aAJ;$HKlwk5`F0xfbx$xAe&fB>g@5&m+QL86 zzoYPnpGX$|IJ;KD|ElY!Ebs@ZpB4V7(aVM3de*b^xZdKz?!v#eMVQ#b;OfQe;~86D z*)PJ6`-wd)yy-jy_MqXd=LdU8J!Loz{0@m#n}U0?^~<#wmGhs>e=+~T_?Phy{a^Y& z-2b@#(f-NbF14Z?-e3IuzBYKDk@}Xl;OpenJ^Vw_INEcPF~&a0c|Y=s#`zkK}D2U=Nc<_C5xC*s{-|1MH!8&%iyf zhvBCq#U4C#W=XtNZ^tIdKkVwcB@NFd{`35vcrMI;7bx0r8UN7#rT@eI zkLw@ppZwNY7Q(M~K~MOrWY-h^=<{8Kf77We!r#1W3*o=LB4;)D`#YQv{^@HL2>;rZ z_osmW&ijtSZ;=xu>qE5LD%md@rTL2g@b=;Y@h986dWb#D8e$^xc2~RR^}zkDn?WkZ zbq795zEe5>&HN|xU(A0n{=KM(f9U_x|Ka|}^^f*X{wa>$I(VP`_DwPbU$XZ!SG@O_ zh;?6c@v~jyRE%1mf(kI6-e^A=zgOGRs3HEodBY#I@p-cbuH9h|WkzMJ#q*dkZ&(%V z7r8cbSHK=Bxdmxpo!qh{eje=M{k-H<*h7_dQDP5sd=e!e^{Uy0J@}p+%G{=h=fV01 z^WV&WGXKT=#|cIJ%lL=>Fa00xe_a1)|Ktxeau9x}&{4wg({+yUpL?$+{KIUWh5y)H z6XADRncV>V&4S{Dzk;=<@MrazCj1{BU#blL(1TY4!Jk-=P!;?KswPQ%F)uMr;!Ra2 zFR_P7?sGoCuO8q(WjFY5=J%3(zjFP9`ETYwng3$`gYhrpANs%af4Ki~{iFSpU&G$k zRNnuEVbk%xhwJ*OVch_)v4;DM^7y$?_f9i0Zp*6H9Dl!VNT%4s+);MFz#byw zQ?|k$o;J3sg>^F2cXR}vN5|u?x>y(VVnUbWc}xzBd;)tI@y4q%;`o$=5V41YwksuH zUH^-RCV*P{pZ{|Ol|6=}w@h{^a`oHvlxc_neqy3YA&xd}(|6{D1@c*$T_c8c8 z?6DL6Q?}KGKl#|*X5i1ZjuQS!qY4IqU;ElP;lI4&cunxH_exv?eyf&owZU)m>f$o+ zS2T&2{DbLTAIV3RX}v`3!6AJ15!i!HqoGpoQLcZn{=xh=^PkLrG5^8%m+=q%U;01X z|G56q{>i_7_=wZsKHb>=7mNw@syD@G_St73#>LiM&tkMptl96g^VqJK@#{Lk>z}NDvHrpQH}jv&e=+~T_?Phy{a^Y&-2eVu{}lF5{s%TQh2KA^ zunBl;wiqS+Ljv`LfBeAbVh?jZ#t8p?y^6wr%y+8rr`5SS2K*0)J$efM)X%rafxqvu zSGU36;p(#{;2)N@Z3y^J$Hqy%y6wUkv4^ppmP)-(x&F!e7waF)e>4Bd{1@{djDH#b z(Ep|X!~KuzAMKy~OEe=Nzb~3!`|jo^Fj@_ac!Du~#+X5PE)xc|ssKA!>8bu5<6Iy2 zCbF;8cs>_)Frsds9IOkq6UKYtIqaS=F%RF1@YxF|;5j&@Eg9eXe|8C zA_9c}uwggh-@Uc6@b9>Crx5&)2DcUdNBL30-*Tsl@ITw2Bm8AYYYG4Mk!HgGW=2!t zZ~Z0b1^91FR~LSr3qPcuRcG%*u?OY)H|w9Qf3g0-{5SKT%zrWe!T6W)5B*>IKivPg z{?Y!)zb5!d7~X%uvbymY*V(3uwZ&^H;9I zZ;iBi zbSmQgui23<>p?BQUQJ;KwoQ-v!4BHRXy?KX=FK;n3OjhaLH`5n;K_#;6JZAfDm96R z9rR0lE$hL_0R{4X&@A^})`OdB$+8|$|3du(>))(@vi`;T2lL;|e=`5Y{0HM-#y|9b z>Hl#5>#eY`+L~IxuX}y zVSoH|=jLi_6&sE`%s1Paq)ojWM z|Ec=3gukZi3*pavp!Nd%4+mDC0Dia8mUqB^>tjzd@K2kdHw^r4Bdq#?U;CwHS-k(< z)_PtTmGw{5zfk|c`Zw#Jtbeio!TdM#pKlcTFXlfO|1$oe|Ldgif4Ki~{iFSpKPzHm z3%q}iqmw1BF6?%B5Z?d0M=f_?9hh`ru`c*smIklGI?(R+96j(m8!TCYb>Qog8B)g$ z*lJ!C{Kgg?gnxoTlVjjdd!QnEAL`$zf1>_{`Ulp(S^s4H>(Ba!BLB_&C-Yx!iu?!T zU&cT5f9d~l|Ks{c`zL=7mnp*k_316)*Lc`Z_`9l~5dMv-kA;7yPqy%%Kdu)9{(Wv{ z&tV6HLsT`ue=Dd_IdBiLY;qjqopqI(AbwQVzfu20{R{OEtbeoq$@&-TAIyI<|H=Fp z^B;_V8UN7#rT@eIkLw@ppZspkI_l&7Tlhxw!uy|={e1)00l#yDH1Ym>zqMb9@4*o* zo9f{2q1JN&_@}mOA-ayB`7h=Dn|#g62Y+(hJ<<2fbw4ON8R{RYf2011`WNaSSpR1I zll3pwKbZe!{*(DH=06z!GXA0eOaF)aAJ;$HKlxR3qlG_ml)*;u_uUdG{Dl)^h2P!i zlJKv3moNOjO{(0(I$$1{A@Bc-Mb$6h*S}nCKi>aoy}Y`}pD61esehyXiTW4nA6Wlp z{gd@C)<2m4X8x1;FXlfO|1$oe|4aXe`ybao+CTXh|A5-~B&-9?HXXLa`~Q?0 z8;^BBWzl+Ty#J-=HtqwzanAtZpKZ~uIk-dKbZ7|f9Vd+MVLUnao9G>>f2IDB`ZwyI zsDGjUf%R|JKUx1`{e$^$=0BPLV*Z2iFXJEjzx02&|8f1J{Rb%cpRV^7{^T03gunA8 ztpxD@C~VXb{8_6V_JjZBAumYu28u~z6GSpR1Ill3pwKbZe!{*(DH=06z!GXA0eOaF)aAJ;$HKl$4jKQh4kZ#2|w zCHO~7GOZ5&=@T?pfq&5^4dH)PJ$E?xT}-zu0QWxsC~t7@+Z-tRz9lQhiQbd?XX;<6 zf2976`X}mNsDEJnoApoDzgYiZ{+szv=D(&Z@*l~H_?Phy{a^Y&-2b@#(f-M=^Qyn_ zZ`rwD`HvCcf4uEf0QiS{X8M5tUYU31s4MuT-;BhltbeBdmHJ2O z->840{)PI7=8F0^>z}NDvHrpQH}jv&e=+~T_?Phy{a^Y&-2b@#(f-L_XVHeTc>le+ zu3LcjUw5#t@L#p@nF0P8y+$U3zlxUnC-9H{2 z^)J*vu>Q^ZC+lCVe=z^e{3r8Y%zrTcW&A_`m;Mj;KdyhYfAU*KBnp45&$fl&pPjNf zAN=>q&+7+nyNaeW!JYb`@nmo>bE(z<_4mbvFGTOo{s-#cseh*amHJ2O->840{)PGn z*1uW*Wc`cv59Ysf6!}l)znK4E{LA=<{xAI>?tfhWX#eD&H~69Ok4e$~4F1c@&HICY zjm`57fU?|4jWW^^erQQU65!3-u4If3yC{`WNdT z%zrcg$@~}dAB=w)|Iq)X|HJ){>mTi({3G`!l!x7SDj(+!{*|iXDPs2toj!xV;draJ z;67BjK{WI@ed>Oaeh2oyu>XPjcj}+1f2IDB`ZwyIsDGjUf%R|JKUx1`{e$^$=0BPL zV*Z2iFXJEjzx02&|8f1J{gZ!;(FftT>Qe10_-F0Q6Mp?=hS}iH3~90z{L2b7YCw;r z-2cM<2kPIcf2RJG`bX;DsDGmVh5859zghoe{fqSvTSfkx`A_D*nEzn>%lL=>Fa00x ze_a1)|K#smDf>0}``adW26wQ@G*@sB{^Ic~xNSb$>p+(nvbBlyd$9kB{V(i)p#Giu z=h+JVEA@}mzfu20{R{OEtbeoq$@&-TAIyI<|H=Fp^B;_V8UN7#rT>$n*#Efx(f-Nb zPPdW`_$?FO3V;5)I%B}EZEsW){LL#@T7*%#|B3xCn-u*I)W1{zO#LhMkJP_W|3v)@ z^$)Cnv;N8Y7waF)e>4Bd{1@{djDH#b(Ep|X!~KuzAMKy~rYad>c>m`|2A>B1^XO%< z;MQp7=?cBBUSPNT7}@{E{wMaou>XPjcj}+1f8C?dKekrr->840{)PGn*1uW*Wc`cv z59Ys_|78A)`47gwjDP6=(*NQ9$Mui)PyVB!zYG8T7x}{P=d0od?#?b5!mr%_#{MVv zzp(#-`giJ|seh&Zk@`34pQwMK{(<#x)<0SQV*P{pZ{|Ol|6=}w@h{^a`oHvlxc_ne zqy3YA_(8ANc>gYY-5-O$ewJN0^!x7GCTi$kVE-fg-`M}e{ulN?Q2$Q-Gxe{3>K_&Q zH|n3Lf1&5ZcS^r}FgZXdfKbikx{)6!^;~)CJ^nXSw_CKzFw14vJ))(@vi`;T2lL;|e=`5Y z{0HM-#y|9b>Hl#5Ke7LX{SVZ? zQ~yl;EA@}mzfu20{R{OEtbeoq$@&-TAIyI<|H=Fp^B;_V8UN7#rT@eIkLw@ppZqIl zZx#N4Ez5*ox&M{@kL-VA{}cOP*#AKNJN3`hzf%85{Tua9)W1;w!1_1qpR9ke{=xh= z^PkLrG5^8%m+=q%U;01X|G56q{>fi<(NY`qHTIh2cmN~&pV|M){zvw|vHywvFYJGy z{+;?~>R+jUr2dWiC+c6Qe_;Ka^-tEnSpQ)DoB2=XznK4E{LA=<{xAI>?tfhWX#eEj z6YC-T%Kgvme`Wt8``_6A#QqodKT!Wp{WJBi)IU=HM*S1@FVsJ<{>}O)>tC#YF#pZ` zC-Yy-e=z=K{6qhj{tx#*u79+D^84-RYKVSk_P?|LnfHA5 z{+0Si>ffk;qW*>Y2iCt?|787(^$+I1ng3+|i}?@6zl?wA|I+{A{>Sx?_D}x*t^ZxQ z|5dsFO}YO?S^uuAe^u7MDeGU9>)*=tFXjBVa{fy>{#EvWmG?ho`{(%wCH?#d@|X1f zfAX{co&C@3e`Wt8``_6A#QqodKT!Wp{WJBi)IU=HM*S1@FVsJ<{>}O)>tC#YF#pZ` zC-Yy-e=z=K{6qhj{tx#*u77<0rTzcK=bx1H^B+q4|BKJRDe31wl=lA@pMUhvp8vr9 zXZF9c|B?M~?0;ha3;Q3af2aPL`d8{7sehyXiTW4nA6Wlp{gd@C)<2m4X8x1;FXlfO z|1$oe|I7DZ+W%jC{?&iV`47y0Gylo_7xN#Ce;NPq{r}befA&AK|CRlZ?0;kb6Z>D- z|3Lja_0QD5QvXQ(8}(1rzfk|c`Zw#Jtbeio!TdM#pUi(T|H1f|@lQ!V|KYFp|Fi#{ z{m<-wW&b1l-`M}e{ulN?Q2$Q-Gxe|3KOX*@`v3px`46>zvhyEU|6u-``A_D*nE&AW z|99#C_x*qF|Nm#tf8hBiJpZEK-+cbVh=20@2iCv-tbhE2^B;cJ{(tJ9seh&Zk@`34 zpQwMK{(<#x)<0SQV*P{pZ{|PQ|F3-h1J6GzDd#_w_Wu{3e_GPde<cGi_gC<>E}QE zr}h6+|498C^-t8lQ2)UCH|w7z{rrd0{{Q0h?@Rjm52gM8#sB}Hq@Vv#+W%kt|1V1V z`46T2|Hc3RcGi~s-4Up@bU=b!$g^B;Kr)z5bRLuvni@&7;i zS_(G-@X6e=KrYwzoei4@OStB^Zdh~t^dEIpZ`$W|6lz7?@Idl4}W+6 zKhHn?+4}!W`uPu~{r|=P|FWc?|4`chU;O`1|E}{Nc>eLvcK$-xE_&tK#3!$$9idU&iRbk?ReL#_!#p z-q0@^CnxD#D_=AkPe|TSu4vR9ZP~hP(U`Y!OLUo{F==AYF1kgd>)=|~bc)8^?veJ| zMdOTZd6l$^MzeFPf0Zm6D;jq*l(ARb%ef_r#=$=}R+sTZoj5%i3l7%qDdWdmHn(Ne znoxO*eEoFGXWL2@jdgUl-jUDC%e8AHKWF@n&|RgAM!&)#)#W*w8V79ED;nkNsS+rU!|L(0n?V5a_ zW1l-Q@;Ubkx~&)d5o3eR<@00PHNGT2ca}>9Yr&swl6OO%>wNn7@q+*L2(4=Jyn!?3 zY}E@P|(Q zeMvsAgu^Oh`8i=X25%7jF3AQQht@-uloJeXL-K8T6HbuxwGDf4iy~bu1{z$ zxSE7`J(bZZHOxZrrh@`;Rr%S}mWqsNNci)q7LwM=3^8c&$@8&1taYyr!@_oHJ7>|+9$^7tRlgz`0*hg9N z`JaP^Pmp;S@u|UU`T5ED8|>w|qF3u(m3eq<{XkcqdtThwdV=F_+4rRcmrcL;{W8|c z_*5Wc2J8PN_yWmy^#u@!{`unTPoq$6v_LTO4v?tUSla;Qq<-UQWmU>LSm1|6}F~nTO$7yMpBT z%h&AYBX|Z)>{?IoAFt``C1W!CUuD*R2Kcoa{nC-I-_pid!M}a0?LGNi+jYI>3jSGR zXZ@3(yK>VnAHg4=yS%hKkN#o5AbHNLIcXyW|B@;dI?MA%cFP4pU|s_*|l_P@WZ ze_imqY&El%?=P`gx3henbGOB%WghhGy~E_^)&A~bAwNIvT>M#io-R}Rca-<@tzkf- zJny7S{%hs=y`Ow`6FmM#D>n$v3fn4V6&8)746bjM@oN>sWin26-4!ikpx_&AoPUYze`i_$Q^B8^XrkaB@uHHheBPB= zPr~Kr^w<$&DfrFq>ztS8_?0}QtKcuUqk*yy?s4hmC(qriRX^n%jOkQnv*2o=-630W zzV2CPi;VrOdoGnxx8vkKWZt%~F)AgWvpj!!d%=JCx%U>qKVoL2 zj{MxiX|GoZ{`=WoOUQGLJ=4)i@GnaKbW)x-@N!s!;6J3}ds6U+{5>*Ua4)NuctS?? z{SW5+8_WI|!TNs<{{IeKwUW;(6OdO*KL0_>3x@>1kK63l^79KntT-w7|7&~QLY{B$ zki>X-?weP3t`Hm+53V^0u4j8%uNIsYwgkN|C>lE~v0g7@ub6dSGPdwHjFRzt&(ukXvz0^9&M+bpCjV~yUOR*s!?mV%*P0Weih~CcFj%LB=ga%&!@8TT-ts{b7ekW zwO)Ebp7-<9fFybT(MDS$Wj>bNzBNkbL#vbFDH(@T|Lo=b8_xchvq`i5_kq9tk=a`E zd8fyJJuE+GP^%4X1%Ka$tIx=Dbl9=JgR&1K*GiP8a8D$P}JTp6@#o!}by zG(1CaW;P8_@Xu)b&{O`qjaAjtGCH*~w~(*X>fb6~#&?B_3gr8rhnTmK&;6^raHHTK zI^l0g`MI6GyDk&_e_{*@OM{IJIpYRkmoh2pmSI7HyrlkxZqD|&|s+G_N>%S-UbjLRvM=bUGD z-e2%^o%Y5v}PhBjdDfRC@>YsO!zX|*%Gq=nZ z{Jou@{T2MyTE5^Y0e>-#OO5CHPk^JgMx*Te7by=U|hYW_9Fw{Jz}@5&R9#b+MA??Re7Ti{J>Z zWRfJf?ryFBEx%~o^rFKc86PbR%K1|?Zr8s3PR8I0gH7cB$JnMFkn#1QNv`sJ6SFGK zk5Yp3F;C`k(96zg?++)bsBZ`(G{Ae+c+D&)lb+Pm@mns4G7| z$!hcg!5=qwY$w4#-|*3Qd2aLVqf!J%>aANp1lI?nw81hy3CUFO&zdwNP4LfrRk616 z?~$kW$~bz#;A!%GOWzH0lFwOO>PC>@KdyK0k9>YXNF{f{U+t&mSNZuf_AZ_&_)nFx zP8R%WzW>z~{4Gn}>LmDU_sXg(xGh(hU6--<*-Gx%9XKaoo#>Q`}MB`wwBM;zWdTo=Huj) z3~l+jq2)%el==8%?OalRFMV#Wbe8$>DR=*r%ty!c;|cQnyFbtFgv?8)9fd<=UdB3a zIV$64`rk<^WOhbq4hJIeR|E$_oOVB{phKSTdRxZpR4>UT@<*POfd zsNi>KpE5{rTa8Fp>Kyg`yV3vtr2p}w{%t`0)0^{eAp74U*8ddn$GeqoBKZ5&`5Y$C zc`oFPjlBQb7YFz#J=jki+5tG?QGSsa9B=EPHel=X4t5cv^H^ILoy;Yuqe}ThG!C_#qKTmKCDj7Xe#=&i~75ojY zuVxDVH9gWBDF6R#qr)wC^YQ?+x>7CAcSrrX|W4@%Dp)Uw!|n@E;rKf1lF- z{GtBsO#PG2`S+Ur?;-2IDfl-J9??qhPdB-HU7ow{WTQobqix-f;|15nW33knUaNn{ zQ+^hWMjm??%V-+9bf%2CV>1uSm|xzng?ycT{eihMeoS}yBj4}V<4J4z+>KoWHpzTE z8`8S8vK~yjDfQ=$K7Y03_j1aw7+0B(z^z9jWj-G2)p#iT#J;6%&dR*ZJlA!U%*(fW zWtIKH4gSjs{v(P0cL4oQAocHM>L2y|Ys>y;&H6tI{@j0_H{?0f8+7#&{8jCGILh-s zKQ`A(@c3(Od?GlncqJ+Lt6!M->!t*Byk98mA;Er*li=@@z2LOqw@YjBK=5yg-=);E6+&_p z{B~*Cr)3`0_kSGzt3CWjZTeqh`kzGV-%Zp%mpT8E+5bAQ{?ovppA>2@`0E&-svyrF zWY_zL;Hy4*bOjlkMjf7+TQt@iIj@q8yRABxlre0=uFf)cZf|>4MyHTU>*VYEXWDI& z`Oq4j9xI=hedL9y%txac7k0~htk`2%TjnGBdYxVJ`>}Uk8)bhm>*l2JFwfhYILUnU zx;k%w%!l6ah|e-^IQn#R;rzSG{^!m5{|5f= zk!>r=^H$qcDMxVh(rZys#>o|Xx(dDuRYMf~TeWYOkpGSwIK7jMqq1#cWIX@2-)i~# zpQE0y7yJRfIoIU#cC0vLBKRwNuGlX4H;-siUGN*sy%He!*GDZdXMbCUbZdg$CG ze1_m3YS`3Ha4#F=`&Gsp1KkD)e)au7hW|VQ|MeFB;~@R-4EmqHOEmTGZ0a9J&c6lh zf61)>bnutkSvpp5Xis-KBDm^yw!4{AGnp;B}d9Q|4h^GG8XtG zddR<<*+*E*_eI{-=_#Mn=lPArG9P!wWIvPncyFUSROZ9O@z5igkD-%)50?2j5j^su z%twQ2$;x^-UFU&`%*V)W4%#vwzrtb<$(ZYMPpK#7z<*o8f9`_+a)tl6O8>i!{>NOc zf2n^AIsY26|21d*YlHvJ?Mn*&y%Vo1_}A=wrr@9bv$ukOyw6qzzs{Yh-vs~82FvCP z{{MQWbP@bI2QPFJ{7e0tD*Ndn2lFR_|KnhSHwdor9+yJ}r|qrVIx=<+bPW4mG{&4Mu}jA77y3PxvC)k0 z_VVw;Cu-*Fa$?UWG9NxqO()2FOnbQCvaE+*{x>aT->KC)I7;RtIJb?3oJ(HzNqc2I zEUzDsDf2O*$33OL$nLx~Q+`i+m^R)Z^U`3VU51Rk&_BH3zkkDju803>0sk?M{`U<1 zPdfFlC-qM&&c9IhzsjtC6@T@z*$Vz|3rdt0e1Tbu6#P%T({>8(8QQw{JR=0ixm8|`>$*#_-*npDEO!QH~%R3 zUFz3Y`t6VYp;>~zch(Pu-YrDff4$lN4zm7D!M|b5?i+%0{FkluWUM&8dhEBNF(mZZSs4>wfB7oo;sycp<=;KW ztmrE9Wgk}9UFKu;m0T~GkG}a%&tyK#0#k>`??v8%>_;*meRQLS$nV8F$N!>bKCXEC zm6mxZ98g$a&do`dxusigAkKec5ZbkM&>qknXT|6T?E`2_y!x0#0jxJLhb zoBpRa_3stxANBle!u~gy^}iYXJ->!3_#=-rSMbjYJEGt}@Fz~eAFka)!T)8qo`OF* zdWwR7N*y}||MauBo(lf+6DBJ7jjWF-_?zs!rQpxXs&Gm0SMXS)EBI@j_cj&$t3v)L zd|Z#^7Dr_s`d>`f75wV^Pe=dKL;r|?|F(ty91H(d1ODSB{qGw3pK;W`+o^v>asCCc z|2=2@cLaan-Ki7Ds09mi6%L*pFaY4`cS{ zJ(2ZrW8Ml&nTN%WH6rBqBFMjgYgq@K2HHd@zZVJpYREjyy}4kD>jT5Wj;Efe|ACt%9)|jKlI?gtHOV_g#X$D{}D$2yN3R!7xiyr>K_lz zzk%$3_N@Pd;D6rKM8WSE9IoJR824JizbJKqfn_9_Ov#FWLEkg8%TPj|%?h<;G4G{Bt90m&+*Av{`^k+tI}4ix}A#O7>Z!C-X4VY)~VahwC;w%E~-U*}LbMj9b^#ROVwO`ga5L z&wuD&cIY3y;lJy`f4+zRDh2;>nEtmi{f{~I?`!IxL7ab$*#D-o{+ELP)~=QceyhVX z75v+iD=!fIp5t_F1plt-TNM1U#s?Jq<0jfF_^15)qToMN&L&y#&(^V5@XttHui(GA zEKR|`y3BC}|ETCZ1%K9=62}F9pTTF;A7IGnX(SH9-ekr*1>z7O5J501l*W>Q|7^F*{bfc4w6pXJ}&Fva3jk+*%$tJ z*Q_S%Afkcq9~sX!JG4jUq1mmjc`|;%|6q^)eFyzB2mPxB`bQA_w;%lHE%>ia@E_*% zzbEN`3aNiDQvaOc{AmMHkE`yBf%_#@K>8Vc?oL+0km*rU&=K*4R<@%%3t z)%PEU|KUCQx2k`ZME~lD{-Fo|Jq`Xd1pX@o{-YcH?^F7ppSLyj?^Nm^U(P>M_P;i) z|MK9E+E}Z$y#HFaLqcTyrt9u3>tJK+N3&!e9(=lXSmvQ!gPx`3T+lt1<}K@B!eR3g zaxS=y8@@!=!7{tOnX(SNV`{XM{UEbruz8vn}@ z{13_K->Uvu9sR2i{o^?NwXA%-+A;u2dIBvQvW1y{!L>4o5}jW1Afyp z=M?-eOYKqc2VBv27yNxMN+xD@M<3 zBlt74pAHoK<)KmHdV{0|}M-+RzM=c9kMK>zp(|7{Ha z*$4jX9Q;Qw`rq~RKibs4fz&^nIRAp#|14PlR^U(YZrVuRzx&7+pJhB((j-Ubp}qc> z=CTiztTR;M75rvBE-Cm;we(lWI;iAczm(uV_GX%*OOy#oQ}oNM@U$eEhXYye=LP@h z5m&|u{)97Y&MD_3{-^5rU-a-l{6zmwNB?|@{&gGuV=VmlIrvX4eGUKB4*ugO{jV+k z&ob)Y1nQqm&c7k-f7Mw3QQ*JV{kwv{NszUIze~wdEd;-IwT=q@m4$8!{@vx<`U?Jl zyC+Ksew}n%7ug3a>~hb@IjuPB+oc=o{<9pu!?`j(V(>(ky zTkt=0NB{oZPosZ6K>zYU|M&s_-4_1yKKxe#{Kqc(-~04GxzxXpseh(&{?%dsd&Bxq z0RLtSpD20%bK-VH%RUgD*da&eL8ry6p|TI0$cwuz>mViKS%3LGm=OE$w#-Az1Enkk zzfqHUimu<+dXBOW_O&X#OmG|LPd1f0+2*H>!bAUd)cD^H;eXnO|3&+i#{bX>{d*_+ zXEOSiKKjQ=_-_~ZPdE6l?(iQY>3>(#|8%1MRqLM+&cE;Mf3sNs>%sr{UXX&n--RX$ zexK2G75r07%PII{oqYNU{x{u@#R>iwQ?e8tW=*}p3h%ts$YQ&^f7elG776~jovPFp z{IlN~EtFAx{~7q-R^os1$N#bc|3e=7_i6Ocb?9HQ=pVb_zg7P84g6PC_>Wrjzj5?G ztEqoOsDHG}YtFyZ?0>ab|4HEYI_{(Ji~gt6f6ICBYrq?YpD+LWUxNG|e6Rjm(Jx{Jmc51PlJku{%}>?oko{8VirICjGOojIQ_}`{IAASV!Z3 zx{d#39{z_(=-<=OKS!W{wMG9(hyNZ1|9Jxb>p1+!Q2O6H^gqL>f9q5KtmOO)XaDnH z{VxE&$IDv^{0sli?^zW(YpM`-M{p$<*M`if$ z74V;{;J+;3KPJ)tKB51)K>b^T`ll`DpE>)V4eQ?v{0m|-%;fif&gmT+<^4Nl&DIwD zbLv%GCHVac_iG9MKFPjrg8#Eow6gEtc(+6GwKeo=a6xca*x@%`c(gIQH=dWVBL3GL z{ExNqznSBInt}i2HU5WM=--CupU=_1RQ;nI{I@myr^M3=`ZtE4(=-qx$|!GfVD%FXCkp;+ zAq(EhIpCib=P39m^`CV|e*fpxUR+gh2LyI%EqGHrqYQ;luhz5vc^Oj=wlWl*uEc{<#(X>o5989Q^k}mH&kQx(NSqf&OOvgH-G5_!C!9fvp0f2IP(2C!JiOPI#%$zPjE00{6CftZ7TR@ zc$6tGxSb>JACvLu5|1*1Uw!`v@ISx9|LTkXaWww79{8WW#|6w`$x2k{oqJK3( z|9A`kT@C*86#Q3T_>al-zs=}>u2TQbr~Vnl`S+gvFO~H_5Bz%{9!(bfv#uQ(CHUXI zJ(eW+r{1h;E%+m@d|o5?lNYQzD7dE#_`X(fdpsH4QgqkS9o^T;I354{PyEjd@xPA8 z|JWP_WrCg;>g1_<|17E?vr`G8`g8xj1#y)~SA@x!{ z!R=kxd$Ek_`(KFv-2wmeIsC7e@IPANe|wDosTBT~>i8cvqJPgq{|rX|QuU8*@ZWXe zKmWmh#lU~`qyK$J|Fetw_Zjt%dj7p*|NApXv;I4RKVeSa6v3bMA%B?Qf0I$`vf!Wd z=d!NgHnwYHDtIr|T3$x{1`Rr-hRYb_Sh9@xG5pCtOvL{_8~^h#{IA3DKla4`)*k=U z3H&cn_#fJ#e=kG-^g{otj{Z?@p@#oH1^?L`{%afjhX?(yIsH!#_3sbrpRt^OXW0KH zvHs72zt<0c#UE~;n}0#@SByEJ_{XE46x0&@`9|&j$yjOpo?yYBSV})%M)mzqCI2u3 z|9dR{=co8z^YA}D!~f=j|H%*kiw*vVpXlF(b2R#AZUc?})fD}sHT-u@Ck_9(1pX@( z{$n8h?|%B9Wa{5P)IUEt{|>SL)nxs50sqGBIrjv=)#L;#dH;86S}YgbsjIw$1n;TG zrQS=1pnvf9*SSl(KxE6;EpI&LGg8~@86L8O9uIe$N1kT<9}X{|Mfin$8GrE zHsXKs!2c47|6vXK_apRARsVX6{t*cOJq-S{H~d#7{D<2AzN7z9>)&bAKMy(oX0ZP` zu>R|Szvsi9!GhmlQ(UItA9w$qj^O@zxiC}43m^Jy6klGugYzaQN>;_|G};U;E%c zn$rKSqyHH|{p&#e`*Hk36N-*y1`w+!-6&&j_8k$-rL|NVEN#{aw#|LZdRk9F|B?Z^Mr z8vjdU{15ZczoXDUz0kjO(Lc7qf6svbEDYB0Uv=R>4C#NL(EoT*|3*{)tl|8-#r{{5 z_3sA$B|V4s6Z{<){Aw<^o%j5VmvQ>{CXEHZ`u^XLe``wqDVzLD2>FLP_}{JZKi9(l zs*C?I6aSm)e`<&SWdi<($>`sv=${MGzc!(NT!jBlg8%Fb|FsSNBZ2;RF#XRb>R+|~ zInDW3ll|`=>;EA5-z}>*O>iGLSf-!gjxX0aTgLXkXZDpG#~1RCPUPRlk$>7r{^bk# zhadRgL-0Ra;eV}z|M4~cw|M+dNAbVR!2eL*PNRQ!NB>-f{-x?4Y4G1~;Xen%fAxX? zNTB~+PXCim{acm#=PBo(1N&b?*8el`ud5x}TW}|x+5AC9x8$?k1i$+J4ah(Gkbi4J z{waj~OAYc5Rq?;K#{b+1|La5ij{*4KhTwmiivQ&{{)hSK-)`uiv(UfN&_8OyfA@j^ z^oIZ10srxc{&xZWPZag9ma(S(N$32tWB+Tz`d<(JMH!2l3+_fM4&0M*a_8h`lIwCJ z|9Xx5V@?fC{%s8TCkOH`IpiOz;eX$R|5^3F9>@PU82?*O{7*UfUtIA&WTAgwM*lpD z{Z$)!+Xrp-NO z3I6b#hwsYRkNk6c@~`8_KW-!cww(Oa3Gy!;;x+jPYy9tl_@Afae=UpuF&+P#J^rU8 z{4aO#KRBa*A4mUef&Mid{i8bkw*&lVCHSw(@Epuegr5|5vD7o*e{?*;6sef8= z{!L{6JH`6XPSW64-~VIs?_bEj=aT0z`NtIUZ->Y~T_FGBO#UGU|9cGn=jZre z58!`Xi~lVJ|5F?MFJAZ`&Y*uMqkrj<|Nn;m5k~%B7yffU{FgiY#~}J&Bl@4U#q$3~ zoPTEQf0J1M8Q{+*|NfZ#a~Ap6S>zvUl7BNG|Macc{STh_-`C-Po{s;uEB?m{_}_Zs ze;SDY9{hJ9{HMx)ZHE7_qW_Jh{|Ti2eMkK>pYyL9`(HHc zUw!|2Nt*jF(#ii1A^-k|{PSS)uSw(|*OPy{O8)7untvhx&=miBB>v}9_+R@L%m0Vs ze^UJ~ukb%CL;qfZ{y7i*s{sAO0{;6W{O3aWFBkZaFZ92c=zq+pe?6&x4srgKW&iuf z`cDGCA^G<=zHB{`DUH!w>#D5&m-k{MQrs54Hb&O8?_Q{TomHW6t?koBdCH|F>EH|BN*EUu2U1 zFKDRA{~sX#>`(r+Kl#VWi*!>SL@xN5Z{}6%x zT@wAXF8bGf^p7R*-y>E26aMQ0{6`}F?-=@@Qr!RGK>c%&^G|*M`RsomSpR|GpF#fr z1NryCwg~jbIHHY zCjYF>{SS4?Ki(k!W<&nzE%_HG@(;`Lzpuyttb_m63IAg%{B%*)U zMF0GV{xuT)qbK}#6#S>kf31c8SVjNqME~PQ{TomHqrU&qoPS~LeoG|hZp$Y8{mI#hyS%N{>SF{-^x_c-2Y&U|HTdegB|*}Df(w$ z^sh0+?tduF{SP1Ezkb4h45R;DNB{G;qvrkx_5C-a{@G3bKb`$=ChI>N{9DQYHz)r- zlKgXj@~>+CaUJJD*d$Iig7wVq?&OdekQ}4e}??0$U{{1ZZ=XvB` z&ys&!L;lT|{L@(SFFM@+P!0ck6a3F>@xK<}f4qbLEgb*TF#Ipy@IRbI|Bfwo|ARC7 z$8`AbKk%RF@LyT*AJO!`o9KVk_isr3dx!d`JLjJP``=sEe_inJB>%sg{QCm(&tJ*E zULgNCll)sF@=v$Ozq}{^kb?hx9RBCI_+NAJKhDJewjBSHEB==g_#ghDf9s=vPC)-U zivE!W|J@A!vpxKm75s-4{qH{dpOw_VW2t{GbN*dp|7*bd_fzjbAphQg{PPy>e=s2b zXiffYKl!H^@-N%SKg8jGFUmJ6_dkT=f4zeL@h$$h8Tg-?;D0HL|6wrtcXRYlKlCpb z^p92W-$&s;RsPEo{-ZVbKdA5j3;oYw>fgWQ|66hXZDaqt!TR5=-hV;7|J4Tm;~M?%5&9o{>fb)pKVv!nhO_@|WBs=We--lYy~sZ&l79^* z|M-RcTLSr~qvT(V$UmIG|L%wXc?|y7QurSo@V}}4CnNkX(fA(@p?_=JXzqVljQ+I} z{i6r`_h$Id{_tNe@E_{?zfb>)HPrvHnYd|2Fx5Tk`KVv5q<178|a{8Z^)W1`yf4Xu0&1V0bsjhz&Kl%4F*0T#hyQI2{wEjwFB$kB?xTMXK>r*-{y!Z3qdNKjzVM&V;lF(0 zKVH%Qexd)drT$g#Kg!_zOJe`CV*T$2zdQMNWAe|I-+f9yj3tpWL`n&e-;kbls} z|L%(a`6vF@ncV;2ga7RX{-+lBUjpzy%tZe_iT;^_{uPD(F#-Pj3;d`0{&&ECtx)+7 z`rmB&pF`BYtEhkKasDN-|EcTW6a2r(|Eu|TZSv0p$iI#y|ENp;Z8Q0&cjRBp$v@n{ z|NagC^9KB{s{gTSvHX7(^8bGL9~Pp2TNKOxyQ6=cg#W$?|7i*TRUiJNGW~A`{m(|~ z-<#AwDct{{-hc8+UH{;(Oa6Ty`R6L!|6ol1u{HU()5Y$8XkG07hxYiNb@0FD7rXz# z3;)wi{4e|QKQu%Ceun7S>zwbk$=-7|9_nP%X;z;didYx<9`mv|N0pJ<5}|m zI^_Q|@V_io{ST`Cjs9tg{xt;s;{p74H2h}<{8s?{$87rFlJq}IsDE9lf7WvTy=VW+ z;Qj{#@K-1Q-m2LB4|I$+sXc?&-&j4epmAEYW{gA`PV1p zA3e#x?IQnVNB(6Y`3Ecf@22>ljqtzr!~d9!|1AOklj?t&i2vaw`u7_2PxbwGLjUSP z{{L^W{C`dOubS{5>ivgN^go`|zjo9=>itK{$p4RI{Z9t}5%T{p$-mDc|6GIo>jLtR z3FO~4k$*}c|Kdvi!3O{PJN(b8|Me{X#}xc;6YxLH!vC@l|3e4#?>Fe5HM##GxY+#< z-QYiK!hfa0e+1C~PNDw^;{J!h)ITdY|1yf*|8NZa6Uo2VCjWew{A(QfM=SDgapa#I z$iLhs|KN%LJre)31^(9>_#Y=0yZ_;PvHKt9qJOLJU)4V=p?~F~f2j8#tNH&b@L#Xs zKlJH;qv?MPsDJBF|9t2C8$hd6%XIP& zq4?ju@IO1@f4z?XaUK4*$@rh%;D70%`XA80H==*`NB{bQ{_zR^dldX<8vNIB_zwr} ze@LYNsYd-T&~S*!>Tk$-g;~e>zS6Wdr$#miXU~<9{B7 z|Ft6iM-TjOs{d&M{+C1eAJq5%5&gSA`sX$B|3A<_n!|r@g8vMF|2hf((To1KBmK{Q z>ff@|Kc_kW4zmBL_n%A#zc2a!n&jWD$UoO4|N4Xce`E4*!Q`LnlYi+*{vjFvdw2ZL zWy${^!~d9y|7{5Vr(XD9R^fkm%l!{7=%1a@zviKTyn+871OKV=U&h@3(1rfDXnvIY z&jwKczNY?}!ujXM{uj;t53|AVO8&hM`RBdlUmKHu%q0J|h5XZ7@-Lp`A1dR2zmESo z8vpBe?tj>i|Lr9HrYusf|5MRFj=_IVg8w`Z|5XP5!<_!N* z*GKpthv9!q!T+=f|4RV=hyCc^OS%6+)xX}Nf7FKmo&x`Q1^%lW{KrxHUw!(YlidHX zhWh6e=ie~)zq+jd8{l6^{{1xhXIt{G1+_KzKddMJ){y*DRq`(v$Uo%bfB%I4`3U~k zarhsv;eS)#e+mBnO(g!8qxc{GqJMWq{|rO_`i%Zj8va|o|8^Su*HrTVmh`{F=zrEw z|F)$5Db4*y8`=LdS^r+(Uq${uf&BY$^3O}jzfL0m7)Ac=1^Fj6|Kd;nVGjQH+4!Gl z;(t~BkJ|X()cYS)|4T#s54qg`5Rd*j1^p`x{ll`@{SWH>muula(&&F*(f`C!|GH8C zsQ2HzV*h*1`ritEPx9|q$Uke7e?3P2@frCyNA7>HBL8AQ{-G8A_cq1uf9Qb!QGNfD z@V^bj|CGnyKY5G)!5RHqz5m`3{i`$jM{oFV_5Rx~@L#9lKMv6U_Mrc{PyO4I`lmJL z-!}F?b^SYne-!zDPx9{(|lBT|xh|iTXE#`e!HSpBejK z4C~(+{OicSe<%N3K>qa$`NwSXZyU%zRU`jmP5wdkzdPZ7UWNZvegEa~KdSyWef&?= z@xR#Oe|U@jZH)eDK>q(B`p0be@86>|_umeL|5^(Fv4;M42>p**|9+$XQSU$M&i)t4 z`riWn8RY*vk$?Y4{`o%n*B9g;9mv0_`KP|*U!IbGXomm&0RHEr_+QKO_m3*ze{;wG zr2hSjmiQk$(Z5ywQ@#J%2>s(f_-`Nh&mP6@f4E8i`K|LqKRfn6Z`Qvz z_$QHncP9TlpZx1~@{cy;-+q#Rx<~${CHaS1_}?AyKdbNmGyd1L_#ZFgf6K!E)Byj> znPU0>y6B(&=wGYQKR&^KC&Pcbz<-T`|9C+E8%h7Oo%+{|`bUrae_8fFb^VW2@st1e zCjYKW{$I_%J|X|On*7^0@=w#qzl3;%OF{I8|)KVHQDRucb{G5(i3_#Ymi ze_urZoQ?jqn)@Hlz<*bQ|8#@@ngstbo&GnF{%08VZ#MToEaLo&VgGB(`ga4r7WY5I zk$>Jm{?(QIqX+r7ZRDSxl7A^n{^1S&clG_xBLAO+|8+M0$07LN?C?MB#{be2|HD!A zZ#(qQkLX_w$^YMm|85EY*&Y7N75-xZ{qGa{p9<8!o2h@IIRCV`|HhH^Ujh8P$p5SP zcYX5D4&-0klmGW8|9_kOQ!4qF)y4Av>G+@5(=RR7CL{15lgzn7qY zwnzU;MgOP||9utyvn%|U6Z}U@`rjz}pC#146R3YaasK79|1Dwt2ZP^-{ChI_=jr5M zgULT;kbiS3cK<^q@(=3!55xc72mkX@{I9+6KeosJ){p#u8~iW(@IQp1e_Nt|x}krm z`iFY|ab@_=gYaJ}{}D|8>sc)SpG^JpiSy5i{qGX%-wphi$^Q=_|K5-Ma|QCR7s)@W z`8QqiPx0hm)cnI}{O@P+KVQKAIt2gYOZ;!@-#;vkbi$o{&^<(*K*_^Pm+JL zCjYdb{EPbjJClD<|Nfx^{^zs!UptZiSN(5G@IMuh|DTQj!4LiWD*C4t`qzH+kKXX# z9pOJOz<hob`e!}o-&*#+6xP3r|3C8o&B(tuCI4KH{Ob?$k2d7r zE|Py5PX0yx`-f5Z-{bHSZD<={6V|E}hrQ;OaH@QD1|Px4Rd z`@c&5Mg9AiH}JpDC;wju|LZ9HkB<1?mg9f=f&XP5{)dC;-}})&{m{R%(Lbuee@}w{ zd;tHo1pXtO{*WiCXj{jBlKd!|8=7#_2D*l({_#a-Qf2;cENA$0q=pQ5Czg7M-kNY1C z;6HSxYVN;N?|+y}{TomHGmP_Z5c^-7V)s9kCI7DGpVj*xj*)+~BLAkoe>MOAoczmm z@(=3YKTOB}tomP9;(t{C{!s(`PrLEIw8H<;7X8~5{WAjn%NPBl4E%RE{O2tAub=QA z#`M26>3{xF|1P5bImG!lgZ=Lc`Ts&c&HWck$p5b=|K5fC^IY<;v&lbhB>#4i{8Isc z|8frb2S@zxwedfz{#RH0j~(&9b;19%7XQm?{10yE-{sIh6VSh6&_8O!e^-M4YzP0f z4F1E9{`U~~KP;pEZAAT}$N6W;{&$4+zYzTO$iMrOf6gWUnp^DthY#f6Jjp+eC;t*i z{-FT>dp`c>2>h?s_#dm|e|v-fDFy#aDE^0O=-+k7|Mw&R?~eZQ4*vTa{AW7+R}c6P z_5Q=F^gnB;e_v4lRO0;m%Km3h{=XLZQ^^0%C;xuESpNS9_dl4Be|ty%DUAF}WAYCj zx&NU${%1q{uWz{jVKV-=4)~v(@xM6Ye=tG+o`e3m8T~5^{X@O~wg>#@D)_In@E=3z ze>3QR4paZ0p#Cx8{5!_}w~_Uq4gO=~-($!>w;=zjzJCw$k16EeK9m2SPX1*q`G>Fg z-?hpA|A+szD*nek_}_-(e;S7Wp+B zbDV!K*#B;_{@a4TEBXI3z4#xVp?^D~e>On>ibel$hX3Bk{SVFIzsA9TWYPatrvK?f{dMW8{!wN8 zPn+<+_~3t7i~ena{@H{4zp8(YhF z&%v*K+PA#ii}8>Avp4xyNAi#Nxc?!7{8KFXms#W=vhly4$N&5q|7#%rM>p<&c!K}Q z1pmuo{14~RzcbN4E24iDaQ}mP|7{8Q&oJ(PaN+)kVf4RM>3{YXyZ@ma=U)@{KPT3| H`u_h9>X&QZ literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/p.txt b/examples/next/swm/ref/64x64/p.txt new file mode 100644 index 0000000000..7677bb05e9 --- /dev/null +++ b/examples/next/swm/ref/64x64/p.txt @@ -0,0 +1,65 @@ +50000.477461 50000.470440 50000.454509 50000.430279 50000.398684 50000.360942 50000.318508 50000.273019 50000.226229 50000.179945 50000.135951 50000.095944 50000.061466 50000.033845 50000.014144 50000.003119 50000.001194 50000.008437 50000.024567 50000.048959 50000.080670 50000.118478 50000.160926 50000.206379 50000.253091 50000.299266 50000.343132 50000.383007 50000.417362 50000.444884 50000.464518 50000.475517 50000.477461 50000.470278 50000.454246 50000.429980 50000.398412 50000.360750 50000.318436 50000.273090 50000.226448 50000.180295 50000.136397 50000.096437 50000.061945 50000.034244 50000.014397 50000.003167 50000.000988 50000.007946 50000.023780 50000.047885 50000.079340 50000.116940 50000.159244 50000.204628 50000.251350 50000.297614 50000.341638 50000.381729 50000.416340 50000.444138 50000.464048 50000.475301 50000.477461 +50000.470278 50000.463254 50000.447318 50000.423082 50000.391481 50000.353732 50000.311291 50000.265796 50000.219001 50000.172712 50000.128714 50000.088705 50000.054226 50000.026606 50000.006908 49999.995889 49999.993971 50000.001224 50000.017366 50000.041771 50000.073498 50000.111322 50000.153788 50000.199259 50000.245989 50000.292181 50000.336064 50000.375954 50000.410322 50000.437853 50000.457495 50000.468497 50000.470440 50000.463254 50000.447214 50000.422939 50000.391357 50000.353678 50000.311347 50000.265982 50000.219320 50000.173147 50000.129231 50000.089253 50000.054746 50000.027031 50000.007173 49999.995936 49999.993752 50000.000708 50000.016542 50000.040650 50000.072109 50000.109715 50000.152026 50000.197418 50000.244147 50000.290417 50000.334448 50000.374543 50000.409158 50000.436958 50000.456869 50000.468121 50000.470278 +50000.454246 50000.447214 50000.431269 50000.407021 50000.375406 50000.337643 50000.295186 50000.249675 50000.202865 50000.156562 50000.112551 50000.072531 50000.038044 50000.010418 49999.990718 49999.979699 49999.977785 49999.985045 50000.001198 50000.025618 50000.057362 50000.095207 50000.137694 50000.183189 50000.229943 50000.276159 50000.320064 50000.359975 50000.394361 50000.421907 50000.441558 50000.452565 50000.454509 50000.447318 50000.431269 50000.406978 50000.375378 50000.337678 50000.295322 50000.249931 50000.203243 50000.157045 50000.113105 50000.073107 50000.038581 50000.010853 49999.990987 49999.979744 49999.977560 49999.984522 50000.000364 50000.024484 50000.055957 50000.093580 50000.135908 50000.181318 50000.228064 50000.274350 50000.318394 50000.358501 50000.393125 50000.420930 50000.440842 50000.452093 50000.454246 +50000.429980 50000.422939 50000.406978 50000.382713 50000.351078 50000.313292 50000.270812 50000.225276 50000.178442 50000.132116 50000.088084 50000.048045 50000.013542 49999.985903 49999.966194 49999.955171 49999.953257 49999.960523 49999.976686 50000.001120 50000.032883 50000.070750 50000.113263 50000.158786 50000.205569 50000.251814 50000.295748 50000.335684 50000.370093 50000.397656 50000.417321 50000.428335 50000.430279 50000.423082 50000.407021 50000.382713 50000.351090 50000.313363 50000.270977 50000.225555 50000.178836 50000.132607 50000.088640 50000.048618 50000.014073 49999.986332 49999.966458 49999.955215 49999.953036 49999.960008 49999.975867 50000.000007 50000.031505 50000.069154 50000.111510 50000.156947 50000.203720 50000.250030 50000.294095 50000.334219 50000.368856 50000.396669 50000.416585 50000.427834 50000.429980 +50000.398412 50000.391357 50000.375378 50000.351090 50000.319428 50000.281613 50000.239102 50000.193536 50000.146670 50000.100313 50000.056252 50000.016187 49999.981660 49999.954003 49999.934280 49999.923248 49999.921331 49999.928599 49999.944770 49999.969219 50000.001002 50000.038893 50000.081434 50000.126988 50000.173804 50000.220083 50000.264049 50000.304016 50000.338451 50000.366036 50000.385716 50000.396739 50000.398684 50000.391481 50000.375406 50000.351078 50000.319428 50000.281670 50000.239250 50000.193792 50000.147037 50000.100775 50000.056776 50000.016728 49999.982164 49999.954410 49999.934530 49999.923289 49999.921121 49999.928110 49999.943993 49999.968162 49999.999692 50000.037377 50000.079769 50000.125242 50000.172049 50000.218391 50000.262483 50000.302630 50000.337283 50000.365106 50000.385027 50000.396274 50000.398412 +50000.360750 50000.353678 50000.337678 50000.313363 50000.281670 50000.243821 50000.201274 50000.155670 50000.108766 50000.062372 50000.018277 49999.978179 49999.943624 49999.915943 49999.896201 49999.885157 49999.883233 49999.890501 49999.906680 49999.931142 49999.962944 50000.000861 50000.043432 50000.089020 50000.135872 50000.182188 50000.226190 50000.266190 50000.300655 50000.328264 50000.347962 50000.358994 50000.360942 50000.353732 50000.337643 50000.313292 50000.281613 50000.243821 50000.201363 50000.155866 50000.109071 50000.062772 50000.018740 49999.978665 49999.944080 49999.916314 49999.896431 49999.885195 49999.883041 49999.890053 49999.905965 49999.930169 49999.961740 49999.999467 50000.041903 50000.087420 50000.134268 50000.180646 50000.224771 50000.264943 50000.299616 50000.327451 50000.347376 50000.358621 50000.360750 +50000.318436 50000.311347 50000.295322 50000.270977 50000.239250 50000.201363 50000.158776 50000.113130 50000.066185 50000.019750 49999.975615 49999.935481 49999.900894 49999.873185 49999.853421 49999.842361 49999.840428 49999.847694 49999.863878 49999.888353 49999.920175 49999.958117 50000.000719 50000.046343 50000.093232 50000.139588 50000.183628 50000.223664 50000.258161 50000.285797 50000.305514 50000.316558 50000.318508 50000.311291 50000.295186 50000.270812 50000.239102 50000.201274 50000.158776 50000.113237 50000.066400 50000.020062 49999.975996 49999.935892 49999.901287 49999.873509 49999.853624 49999.842397 49999.840260 49999.847298 49999.863244 49999.887490 49999.919105 49999.956881 49999.999366 50000.044930 50000.091824 50000.138243 50000.182403 50000.222604 50000.257298 50000.285146 50000.305076 50000.316318 50000.318436 +50000.273090 50000.265982 50000.249931 50000.225555 50000.193792 50000.155866 50000.113237 50000.067547 50000.020558 49999.974081 49999.929905 49999.889732 49999.855111 49999.827372 49999.807583 49999.796505 49999.794561 49999.801824 49999.818011 49999.842498 49999.874338 49999.912306 49999.954940 50000.000599 50000.047527 50000.093923 50000.138003 50000.178077 50000.212608 50000.240272 50000.260009 50000.271065 50000.273019 50000.265796 50000.249675 50000.225276 50000.193536 50000.155670 50000.113130 50000.067547 50000.020668 49999.974289 49999.930188 49999.890055 49999.855430 49999.827641 49999.807755 49999.796538 49999.794421 49999.801488 49999.817472 49999.841760 49999.873425 49999.911251 49999.953789 49999.999404 50000.046345 50000.092807 50000.137004 50000.177235 50000.211950 50000.239812 50000.259746 50000.270984 50000.273090 +50000.226448 50000.219320 50000.203243 50000.178836 50000.147037 50000.109071 50000.066400 50000.020668 49999.973636 49999.927115 49999.882899 49999.842688 49999.808031 49999.780262 49999.760449 49999.749352 49999.747396 49999.754654 49999.770844 49999.795340 49999.827199 49999.865191 49999.907855 49999.953549 50000.000517 50000.046953 50000.091074 50000.131186 50000.165751 50000.193444 50000.213203 50000.224272 50000.226229 50000.219001 50000.202865 50000.178442 50000.146670 50000.108766 50000.066185 50000.020558 49999.973636 49999.927216 49999.883079 49999.842918 49999.808273 49999.780473 49999.760588 49999.749381 49999.747285 49999.754382 49999.770404 49999.794738 49999.826452 49999.864331 49999.906921 49999.952587 49999.999576 50000.046081 50000.090314 50000.130573 50000.165309 50000.193183 50000.213121 50000.224354 50000.226448 +50000.180295 50000.173147 50000.157045 50000.132607 50000.100775 50000.062772 50000.020062 49999.974289 49999.927216 49999.880656 49999.836401 49999.796154 49999.761464 49999.733666 49999.713829 49999.702713 49999.700744 49999.707997 49999.724189 49999.748694 49999.780569 49999.818585 49999.861278 49999.907006 49999.954011 50000.000487 50000.044647 50000.084798 50000.119397 50000.147119 50000.166900 50000.177983 50000.179945 50000.172712 50000.156562 50000.132116 50000.100313 50000.062372 50000.019750 49999.974081 49999.927115 49999.880656 49999.836484 49999.796294 49999.761629 49999.733820 49999.713934 49999.702738 49999.700663 49999.707790 49999.723850 49999.748228 49999.779990 49999.817919 49999.860560 49999.906275 49999.953309 49999.999855 50000.044122 50000.084408 50000.119162 50000.147046 50000.166987 50000.178214 50000.180295 +50000.136397 50000.129231 50000.113105 50000.088640 50000.056776 50000.018740 49999.975996 49999.930188 49999.883079 49999.836484 49999.792195 49999.751916 49999.717197 49999.689373 49999.669514 49999.658381 49999.656401 49999.663648 49999.679841 49999.704354 49999.736243 49999.774280 49999.817000 49999.862760 49999.909800 49999.956313 50000.000512 50000.040700 50000.075333 50000.103083 50000.122886 50000.133984 50000.135951 50000.128714 50000.112551 50000.088084 50000.056252 50000.018277 49999.975615 49999.929905 49999.882899 49999.836401 49999.792195 49999.751978 49999.717294 49999.689474 49999.669589 49999.658402 49999.656346 49999.663501 49999.679596 49999.704015 49999.735822 49999.773798 49999.816486 49999.862246 49999.909321 49999.955902 50000.000199 50000.040508 50000.075277 50000.103169 50000.123109 50000.134330 50000.136397 +50000.096437 50000.089253 50000.073107 50000.048618 50000.016728 49999.978665 49999.935892 49999.890055 49999.842918 49999.796294 49999.751978 49999.711673 49999.676930 49999.649085 49999.629207 49999.618059 49999.616069 49999.623311 49999.639504 49999.664024 49999.695926 49999.733981 49999.776725 49999.822513 49999.869586 49999.916134 49999.960368 50000.000590 50000.035255 50000.063033 50000.082858 50000.093970 50000.095944 50000.088705 50000.072531 50000.048045 50000.016187 49999.978179 49999.935481 49999.889732 49999.842688 49999.796154 49999.751916 49999.711673 49999.676970 49999.649141 49999.629255 49999.618076 49999.616037 49999.623217 49999.639344 49999.663799 49999.695646 49999.733662 49999.776390 49999.822189 49999.869298 49999.915909 49999.960230 50000.000556 50000.035336 50000.063232 50000.083170 50000.094383 50000.096437 +50000.061945 50000.054746 50000.038581 50000.014073 49999.982164 49999.944080 49999.901287 49999.855430 49999.808273 49999.761629 49999.717294 49999.676970 49999.642210 49999.614349 49999.594457 49999.583298 49999.581299 49999.588537 49999.604730 49999.629255 49999.661166 49999.699236 49999.742000 49999.787814 49999.834915 49999.881494 49999.925760 49999.966014 50000.000709 50000.028513 50000.048359 50000.059485 50000.061466 50000.054226 50000.038044 50000.013542 49999.981660 49999.943624 49999.900894 49999.855111 49999.808031 49999.761464 49999.717197 49999.676930 49999.642210 49999.614371 49999.594483 49999.583311 49999.581285 49999.588486 49999.604639 49999.629124 49999.661003 49999.699053 49999.741814 49999.787642 49999.834778 49999.881411 49999.925748 49999.966085 50000.000871 50000.028767 50000.048700 50000.059904 50000.061945 +50000.034244 50000.027031 50000.010853 49999.986332 49999.954410 49999.916314 49999.873509 49999.827641 49999.780473 49999.733820 49999.689474 49999.649141 49999.614371 49999.586500 49999.566599 49999.555432 49999.553428 49999.560661 49999.576854 49999.601381 49999.633300 49999.671382 49999.714162 49999.759995 49999.807120 49999.853725 49999.898019 49999.938300 49999.973022 50000.000849 50000.020715 50000.031856 50000.033845 50000.026606 50000.010418 49999.985903 49999.954003 49999.915943 49999.873185 49999.827372 49999.780262 49999.733666 49999.689373 49999.649085 49999.614349 49999.586500 49999.566609 49999.555441 49999.553426 49999.560642 49999.576815 49999.601323 49999.633227 49999.671301 49999.714085 49999.759934 49999.807088 49999.853733 49999.898079 49999.938420 49999.973204 50000.001096 50000.021022 50000.032215 50000.034244 +50000.014397 50000.007173 49999.990987 49999.966458 49999.934530 49999.896431 49999.853624 49999.807755 49999.760588 49999.713934 49999.669589 49999.629255 49999.594483 49999.566609 49999.546704 49999.535533 49999.533525 49999.540756 49999.556947 49999.581475 49999.613397 49999.651486 49999.694277 49999.740125 49999.787267 49999.833893 49999.878209 49999.918514 49999.953258 49999.981107 50000.000991 50000.012146 50000.014144 50000.006908 49999.990718 49999.966194 49999.934280 49999.896201 49999.853421 49999.807583 49999.760449 49999.713829 49999.669514 49999.629207 49999.594457 49999.566599 49999.546704 49999.535538 49999.533529 49999.540756 49999.556942 49999.581465 49999.613385 49999.651475 49999.694271 49999.740131 49999.787291 49999.833941 49999.878286 49999.918623 49999.953400 49999.981283 50000.001197 50000.012379 50000.014397 +50000.003167 49999.995936 49999.979744 49999.955215 49999.923289 49999.885195 49999.842397 49999.796538 49999.749381 49999.702738 49999.658402 49999.618076 49999.583311 49999.555441 49999.535538 49999.524367 49999.522356 49999.529584 49999.545772 49999.570299 49999.602221 49999.640312 49999.683108 49999.728964 49999.776118 49999.822758 49999.867091 49999.907414 49999.942176 49999.970043 49999.989943 50000.001112 50000.003119 49999.995889 49999.979699 49999.955171 49999.923248 49999.885157 49999.842361 49999.796505 49999.749352 49999.702713 49999.658381 49999.618059 49999.583298 49999.555432 49999.535533 49999.524367 49999.522361 49999.529593 49999.545785 49999.570316 49999.602242 49999.640337 49999.683137 49999.728996 49999.776154 49999.822796 49999.867132 49999.907457 49999.942222 49999.970090 49999.989991 50000.001159 50000.003167 +50000.000988 49999.993752 49999.977560 49999.953036 49999.921121 49999.883041 49999.840260 49999.794421 49999.747285 49999.700663 49999.656346 49999.616037 49999.581285 49999.553426 49999.533529 49999.522361 49999.520350 49999.527575 49999.543758 49999.568280 49999.600197 49999.638285 49999.681079 49999.726937 49999.774095 49999.820743 49999.865086 49999.905422 49999.940199 49999.968080 49999.987994 49999.999175 50000.001194 49999.993971 49999.977785 49999.953257 49999.921331 49999.883233 49999.840428 49999.794561 49999.747396 49999.700744 49999.656401 49999.616069 49999.581299 49999.553428 49999.533525 49999.522356 49999.520350 49999.527582 49999.543775 49999.568306 49999.600230 49999.638320 49999.681113 49999.726962 49999.774106 49999.820733 49999.865051 49999.905356 49999.940101 49999.967950 49999.987835 49999.998990 50000.000988 +50000.007946 50000.000708 49999.984522 49999.960008 49999.928110 49999.890053 49999.847298 49999.801488 49999.754382 49999.707790 49999.663501 49999.623217 49999.588486 49999.560642 49999.540756 49999.529593 49999.527582 49999.534804 49999.550980 49999.575493 49999.607401 49999.645479 49999.688265 49999.734117 49999.781273 49999.827921 49999.872268 49999.912610 49999.947396 49999.975289 49999.995215 50000.006408 50000.008437 50000.001224 49999.985045 49999.960523 49999.928599 49999.890501 49999.847694 49999.801824 49999.754654 49999.707997 49999.663648 49999.623311 49999.588537 49999.560661 49999.540756 49999.529584 49999.527575 49999.534804 49999.550991 49999.575514 49999.607428 49999.645506 49999.688282 49999.734111 49999.781233 49999.827835 49999.872126 49999.912405 49999.947125 49999.974951 49999.994816 50000.005957 50000.007946 +50000.023780 50000.016542 50000.000364 49999.975867 49999.943993 49999.905965 49999.863244 49999.817472 49999.770404 49999.723850 49999.679596 49999.639344 49999.604639 49999.576815 49999.556942 49999.545785 49999.543775 49999.550991 49999.567158 49999.591658 49999.623550 49999.661613 49999.704385 49999.750224 49999.797369 49999.844011 49999.888355 49999.928697 49999.963487 49999.991387 50000.011322 50000.022526 50000.024567 50000.017366 50000.001198 49999.976686 49999.944770 49999.906680 49999.863878 49999.818011 49999.770844 49999.724189 49999.679841 49999.639504 49999.604730 49999.576854 49999.556947 49999.545772 49999.543758 49999.550980 49999.567158 49999.591668 49999.623565 49999.661622 49999.704373 49999.750175 49999.797266 49999.843835 49999.888093 49999.928340 49999.963029 49999.990829 50000.010672 50000.021798 50000.023780 +50000.047885 50000.040650 50000.024484 50000.000007 49999.968162 49999.930169 49999.887490 49999.841760 49999.794738 49999.748228 49999.704015 49999.663799 49999.629124 49999.601323 49999.581465 49999.570316 49999.568306 49999.575514 49999.591668 49999.616150 49999.648022 49999.686063 49999.728813 49999.774631 49999.821760 49999.868387 49999.912721 49999.953058 49999.987847 50000.015750 50000.035692 50000.046906 50000.048959 50000.041771 50000.025618 50000.001120 49999.969219 49999.931142 49999.888353 49999.842498 49999.795340 49999.748694 49999.704354 49999.664024 49999.629255 49999.601381 49999.581475 49999.570299 49999.568280 49999.575493 49999.591658 49999.616150 49999.648025 49999.686055 49999.728775 49999.774541 49999.821594 49999.868125 49999.912344 49999.952553 49999.987208 50000.014979 50000.034799 50000.045910 50000.047885 +50000.079340 50000.072109 50000.055957 50000.031505 49999.999692 49999.961740 49999.919105 49999.873425 49999.826452 49999.779990 49999.735822 49999.695646 49999.661003 49999.633227 49999.613385 49999.602242 49999.600230 49999.607428 49999.623565 49999.648025 49999.679871 49999.717883 49999.760605 49999.806396 49999.853500 49999.900106 49999.944424 49999.984751 50000.019534 50000.047436 50000.067383 50000.078605 50000.080670 50000.073498 50000.057362 50000.032883 50000.001002 49999.962944 49999.920175 49999.874338 49999.827199 49999.780569 49999.736243 49999.695926 49999.661166 49999.633300 49999.613397 49999.602221 49999.600197 49999.607401 49999.623550 49999.648022 49999.679871 49999.717869 49999.760553 49999.806280 49999.853291 49999.899777 49999.943953 49999.984121 50000.018739 50000.046478 50000.066275 50000.077370 50000.079340 +50000.116940 50000.109715 50000.093580 50000.069154 50000.037377 49999.999467 49999.956881 49999.911251 49999.864331 49999.817919 49999.773798 49999.733662 49999.699053 49999.671301 49999.651475 49999.640337 49999.638320 49999.645506 49999.661622 49999.686055 49999.717869 49999.755848 49999.798535 49999.844293 49999.891365 49999.937944 49999.982241 50000.022551 50000.057324 50000.085222 50000.105171 50000.116401 50000.118478 50000.111322 50000.095207 50000.070750 50000.038893 50000.000861 49999.958117 49999.912306 49999.865191 49999.818585 49999.774280 49999.733981 49999.699236 49999.671382 49999.651486 49999.640312 49999.638285 49999.645479 49999.661613 49999.686063 49999.717883 49999.755848 49999.798493 49999.844177 49999.891142 49999.937581 49999.981711 50000.021836 50000.056415 50000.084122 50000.103895 50000.114975 50000.116940 +50000.159244 50000.152026 50000.135908 50000.111510 50000.079769 50000.041903 49999.999366 49999.953789 49999.906921 49999.860560 49999.816486 49999.776390 49999.741814 49999.714085 49999.694271 49999.683137 49999.681113 49999.688282 49999.704373 49999.728775 49999.760553 49999.798493 49999.841140 49999.886859 49999.933895 49999.980442 50000.024711 50000.065001 50000.099760 50000.127651 50000.147599 50000.158836 50000.160926 50000.153788 50000.137694 50000.113263 50000.081434 50000.043432 50000.000719 49999.954940 49999.907855 49999.861278 49999.817000 49999.776725 49999.742000 49999.714162 49999.694277 49999.683108 49999.681079 49999.688265 49999.704385 49999.728813 49999.760605 49999.798535 49999.841140 49999.886780 49999.933698 49999.980090 50000.024173 50000.064254 50000.098794 50000.126469 50000.146217 50000.157283 50000.159244 +50000.204628 50000.197418 50000.181318 50000.156947 50000.125242 50000.087420 50000.044930 49999.999404 49999.952587 49999.906275 49999.862246 49999.822189 49999.787642 49999.759934 49999.740131 49999.728996 49999.726962 49999.734111 49999.750175 49999.774541 49999.806280 49999.844177 49999.886780 49999.932455 49999.979451 50000.025962 50000.070200 50000.110465 50000.145208 50000.173089 50000.193036 50000.204277 50000.206379 50000.199259 50000.183189 50000.158786 50000.126988 50000.089020 50000.046343 50000.000599 49999.953549 49999.907006 49999.862760 49999.822513 49999.787814 49999.759995 49999.740125 49999.728964 49999.726937 49999.734117 49999.750224 49999.774631 49999.806396 49999.844293 49999.886859 49999.932455 49999.979328 50000.025673 50000.069710 50000.109748 50000.144250 50000.171894 50000.191619 50000.202671 50000.204628 +50000.251350 50000.244147 50000.228064 50000.203720 50000.172049 50000.134268 50000.091824 50000.046345 49999.999576 49999.953309 49999.909321 49999.869298 49999.834778 49999.807088 49999.787291 49999.776154 49999.774106 49999.781233 49999.797266 49999.821594 49999.853291 49999.891142 49999.933698 49999.979328 50000.026280 50000.072752 50000.116957 50000.157196 50000.191919 50000.219789 50000.239731 50000.250977 50000.253091 50000.245989 50000.229943 50000.205569 50000.173804 50000.135872 50000.093232 50000.047527 50000.000517 49999.954011 49999.909800 49999.869586 49999.834915 49999.807120 49999.787267 49999.776118 49999.774095 49999.781273 49999.797369 49999.821760 49999.853500 49999.891365 49999.933895 49999.979451 50000.026280 50000.072581 50000.116575 50000.156573 50000.191039 50000.218653 50000.238356 50000.249396 50000.251350 +50000.297614 50000.290417 50000.274350 50000.250030 50000.218391 50000.180646 50000.138243 50000.092807 50000.046081 49999.999855 49999.955902 49999.915909 49999.881411 49999.853733 49999.833941 49999.822796 49999.820733 49999.827835 49999.843835 49999.868125 49999.899777 49999.937581 49999.980090 50000.025673 50000.072581 50000.119013 50000.163184 50000.203394 50000.238097 50000.265954 50000.285893 50000.297142 50000.299266 50000.292181 50000.276159 50000.251814 50000.220083 50000.182188 50000.139588 50000.093923 50000.046953 50000.000487 49999.956313 49999.916134 49999.881494 49999.853725 49999.833893 49999.822758 49999.820743 49999.827921 49999.844011 49999.868387 49999.900106 49999.937944 49999.980442 50000.025962 50000.072752 50000.119013 50000.162968 50000.202929 50000.237362 50000.264949 50000.284633 50000.295661 50000.297614 +50000.341638 50000.334448 50000.318394 50000.294095 50000.262483 50000.224771 50000.182403 50000.137004 50000.090314 50000.044122 50000.000199 49999.960230 49999.925748 49999.898079 49999.878286 49999.867132 49999.865051 49999.872126 49999.888093 49999.912344 49999.943953 49999.981711 50000.024173 50000.069710 50000.116575 50000.162968 50000.207105 50000.247288 50000.281969 50000.309814 50000.329747 50000.340998 50000.343132 50000.336064 50000.320064 50000.295748 50000.264049 50000.226190 50000.183628 50000.138003 50000.091074 50000.044647 50000.000512 49999.960368 49999.925760 49999.898019 49999.878209 49999.867091 49999.865086 49999.872268 49999.888355 49999.912721 49999.944424 49999.982241 50000.024711 50000.070200 50000.116957 50000.163184 50000.207105 50000.247033 50000.281439 50000.309003 50000.328670 50000.339688 50000.341638 +50000.381729 50000.374543 50000.358501 50000.334219 50000.302630 50000.264943 50000.222604 50000.177235 50000.130573 50000.084408 50000.040508 50000.000556 49999.966085 49999.938420 49999.918623 49999.907457 49999.905356 49999.912405 49999.928340 49999.952553 49999.984121 50000.021836 50000.064254 50000.109748 50000.156573 50000.202929 50000.247033 50000.287190 50000.321853 50000.349684 50000.369612 50000.380864 50000.383007 50000.375954 50000.359975 50000.335684 50000.304016 50000.266190 50000.223664 50000.178077 50000.131186 50000.084798 50000.040700 50000.000590 49999.966014 49999.938300 49999.918514 49999.907414 49999.905422 49999.912610 49999.928697 49999.953058 49999.984751 50000.022551 50000.065001 50000.110465 50000.157196 50000.203394 50000.247288 50000.287190 50000.321572 50000.349117 50000.368770 50000.379780 50000.381729 +50000.416340 50000.409158 50000.393125 50000.368856 50000.337283 50000.299616 50000.257298 50000.211950 50000.165309 50000.119162 50000.075277 50000.035336 50000.000871 49999.973204 49999.953400 49999.942222 49999.940101 49999.947125 49999.963029 49999.987208 50000.018739 50000.056415 50000.098794 50000.144250 50000.191039 50000.237362 50000.281439 50000.321572 50000.356217 50000.384037 50000.403959 50000.415213 50000.417362 50000.410322 50000.394361 50000.370093 50000.338451 50000.300655 50000.258161 50000.212608 50000.165751 50000.119397 50000.075333 50000.035255 50000.000709 49999.973022 49999.953258 49999.942176 49999.940199 49999.947396 49999.963487 49999.987847 50000.019534 50000.057324 50000.099760 50000.145208 50000.191919 50000.238097 50000.281969 50000.321853 50000.356217 50000.383747 50000.403389 50000.414393 50000.416340 +50000.444138 50000.436958 50000.420930 50000.396669 50000.365106 50000.327451 50000.285146 50000.239812 50000.193183 50000.147046 50000.103169 50000.063232 50000.028767 50000.001096 49999.981283 49999.970090 49999.967950 49999.974951 49999.990829 50000.014979 50000.046478 50000.084122 50000.126469 50000.171894 50000.218653 50000.264949 50000.309003 50000.349117 50000.383747 50000.411558 50000.431475 50000.442729 50000.444884 50000.437853 50000.421907 50000.397656 50000.366036 50000.328264 50000.285797 50000.240272 50000.193444 50000.147119 50000.103083 50000.063033 50000.028513 50000.000849 49999.981107 49999.970043 49999.968080 49999.975289 49999.991387 50000.015750 50000.047436 50000.085222 50000.127651 50000.173089 50000.219789 50000.265954 50000.309814 50000.349684 50000.384037 50000.411558 50000.431193 50000.442192 50000.444138 +50000.464048 50000.456869 50000.440842 50000.416585 50000.385027 50000.347376 50000.305076 50000.259746 50000.213121 50000.166987 50000.123109 50000.083170 50000.048700 50000.021022 50000.001197 49999.989991 49999.987835 49999.994816 50000.010672 50000.034799 50000.066275 50000.103895 50000.146217 50000.191619 50000.238356 50000.284633 50000.328670 50000.368770 50000.403389 50000.431193 50000.451106 50000.462360 50000.464518 50000.457495 50000.441558 50000.417321 50000.385716 50000.347962 50000.305514 50000.260009 50000.213203 50000.166900 50000.122886 50000.082858 50000.048359 50000.020715 50000.000991 49999.989943 49999.987994 49999.995215 50000.011322 50000.035692 50000.067383 50000.105171 50000.147599 50000.193036 50000.239731 50000.285893 50000.329747 50000.369612 50000.403959 50000.431475 50000.451106 50000.462103 50000.464048 +50000.475301 50000.468121 50000.452093 50000.427834 50000.396274 50000.358621 50000.316318 50000.270984 50000.224354 50000.178214 50000.134330 50000.094383 50000.059904 50000.032215 50000.012379 50000.001159 49999.998990 50000.005957 50000.021798 50000.045910 50000.077370 50000.114975 50000.157283 50000.202671 50000.249396 50000.295661 50000.339688 50000.379780 50000.414393 50000.442192 50000.462103 50000.473357 50000.475517 50000.468497 50000.452565 50000.428335 50000.396739 50000.358994 50000.316558 50000.271065 50000.224272 50000.177983 50000.133984 50000.093970 50000.059485 50000.031856 50000.012146 50000.001112 49999.999175 50000.006408 50000.022526 50000.046906 50000.078605 50000.116401 50000.158836 50000.204277 50000.250977 50000.297142 50000.340998 50000.380864 50000.415213 50000.442729 50000.462360 50000.473357 50000.475301 +50000.477461 50000.470278 50000.454246 50000.429980 50000.398412 50000.360750 50000.318436 50000.273090 50000.226448 50000.180295 50000.136397 50000.096437 50000.061945 50000.034244 50000.014397 50000.003167 50000.000988 50000.007946 50000.023780 50000.047885 50000.079340 50000.116940 50000.159244 50000.204628 50000.251350 50000.297614 50000.341638 50000.381729 50000.416340 50000.444138 50000.464048 50000.475301 50000.477461 50000.470440 50000.454509 50000.430279 50000.398684 50000.360942 50000.318508 50000.273019 50000.226229 50000.179945 50000.135951 50000.095944 50000.061466 50000.033845 50000.014144 50000.003119 50000.001194 50000.008437 50000.024567 50000.048959 50000.080670 50000.118478 50000.160926 50000.206379 50000.253091 50000.299266 50000.343132 50000.383007 50000.417362 50000.444884 50000.464518 50000.475517 50000.477461 +50000.470440 50000.463254 50000.447214 50000.422939 50000.391357 50000.353678 50000.311347 50000.265982 50000.219320 50000.173147 50000.129231 50000.089253 50000.054746 50000.027031 50000.007173 49999.995936 49999.993752 50000.000708 50000.016542 50000.040650 50000.072109 50000.109715 50000.152026 50000.197418 50000.244147 50000.290417 50000.334448 50000.374543 50000.409158 50000.436958 50000.456869 50000.468121 50000.470278 50000.463254 50000.447318 50000.423082 50000.391481 50000.353732 50000.311291 50000.265796 50000.219001 50000.172712 50000.128714 50000.088705 50000.054226 50000.026606 50000.006908 49999.995889 49999.993971 50000.001224 50000.017366 50000.041771 50000.073498 50000.111322 50000.153788 50000.199259 50000.245989 50000.292181 50000.336064 50000.375954 50000.410322 50000.437853 50000.457495 50000.468497 50000.470440 +50000.454509 50000.447318 50000.431269 50000.406978 50000.375378 50000.337678 50000.295322 50000.249931 50000.203243 50000.157045 50000.113105 50000.073107 50000.038581 50000.010853 49999.990987 49999.979744 49999.977560 49999.984522 50000.000364 50000.024484 50000.055957 50000.093580 50000.135908 50000.181318 50000.228064 50000.274350 50000.318394 50000.358501 50000.393125 50000.420930 50000.440842 50000.452093 50000.454246 50000.447214 50000.431269 50000.407021 50000.375406 50000.337643 50000.295186 50000.249675 50000.202865 50000.156562 50000.112551 50000.072531 50000.038044 50000.010418 49999.990718 49999.979699 49999.977785 49999.985045 50000.001198 50000.025618 50000.057362 50000.095207 50000.137694 50000.183189 50000.229943 50000.276159 50000.320064 50000.359975 50000.394361 50000.421907 50000.441558 50000.452565 50000.454509 +50000.430279 50000.423082 50000.407021 50000.382713 50000.351090 50000.313363 50000.270977 50000.225555 50000.178836 50000.132607 50000.088640 50000.048618 50000.014073 49999.986332 49999.966458 49999.955215 49999.953036 49999.960008 49999.975867 50000.000007 50000.031505 50000.069154 50000.111510 50000.156947 50000.203720 50000.250030 50000.294095 50000.334219 50000.368856 50000.396669 50000.416585 50000.427834 50000.429980 50000.422939 50000.406978 50000.382713 50000.351078 50000.313292 50000.270812 50000.225276 50000.178442 50000.132116 50000.088084 50000.048045 50000.013542 49999.985903 49999.966194 49999.955171 49999.953257 49999.960523 49999.976686 50000.001120 50000.032883 50000.070750 50000.113263 50000.158786 50000.205569 50000.251814 50000.295748 50000.335684 50000.370093 50000.397656 50000.417321 50000.428335 50000.430279 +50000.398684 50000.391481 50000.375406 50000.351078 50000.319428 50000.281670 50000.239250 50000.193792 50000.147037 50000.100775 50000.056776 50000.016728 49999.982164 49999.954410 49999.934530 49999.923289 49999.921121 49999.928110 49999.943993 49999.968162 49999.999692 50000.037377 50000.079769 50000.125242 50000.172049 50000.218391 50000.262483 50000.302630 50000.337283 50000.365106 50000.385027 50000.396274 50000.398412 50000.391357 50000.375378 50000.351090 50000.319428 50000.281613 50000.239102 50000.193536 50000.146670 50000.100313 50000.056252 50000.016187 49999.981660 49999.954003 49999.934280 49999.923248 49999.921331 49999.928599 49999.944770 49999.969219 50000.001002 50000.038893 50000.081434 50000.126988 50000.173804 50000.220083 50000.264049 50000.304016 50000.338451 50000.366036 50000.385716 50000.396739 50000.398684 +50000.360942 50000.353732 50000.337643 50000.313292 50000.281613 50000.243821 50000.201363 50000.155866 50000.109071 50000.062772 50000.018740 49999.978665 49999.944080 49999.916314 49999.896431 49999.885195 49999.883041 49999.890053 49999.905965 49999.930169 49999.961740 49999.999467 50000.041903 50000.087420 50000.134268 50000.180646 50000.224771 50000.264943 50000.299616 50000.327451 50000.347376 50000.358621 50000.360750 50000.353678 50000.337678 50000.313363 50000.281670 50000.243821 50000.201274 50000.155670 50000.108766 50000.062372 50000.018277 49999.978179 49999.943624 49999.915943 49999.896201 49999.885157 49999.883233 49999.890501 49999.906680 49999.931142 49999.962944 50000.000861 50000.043432 50000.089020 50000.135872 50000.182188 50000.226190 50000.266190 50000.300655 50000.328264 50000.347962 50000.358994 50000.360942 +50000.318508 50000.311291 50000.295186 50000.270812 50000.239102 50000.201274 50000.158776 50000.113237 50000.066400 50000.020062 49999.975996 49999.935892 49999.901287 49999.873509 49999.853624 49999.842397 49999.840260 49999.847298 49999.863244 49999.887490 49999.919105 49999.956881 49999.999366 50000.044930 50000.091824 50000.138243 50000.182403 50000.222604 50000.257298 50000.285146 50000.305076 50000.316318 50000.318436 50000.311347 50000.295322 50000.270977 50000.239250 50000.201363 50000.158776 50000.113130 50000.066185 50000.019750 49999.975615 49999.935481 49999.900894 49999.873185 49999.853421 49999.842361 49999.840428 49999.847694 49999.863878 49999.888353 49999.920175 49999.958117 50000.000719 50000.046343 50000.093232 50000.139588 50000.183628 50000.223664 50000.258161 50000.285797 50000.305514 50000.316558 50000.318508 +50000.273019 50000.265796 50000.249675 50000.225276 50000.193536 50000.155670 50000.113130 50000.067547 50000.020668 49999.974289 49999.930188 49999.890055 49999.855430 49999.827641 49999.807755 49999.796538 49999.794421 49999.801488 49999.817472 49999.841760 49999.873425 49999.911251 49999.953789 49999.999404 50000.046345 50000.092807 50000.137004 50000.177235 50000.211950 50000.239812 50000.259746 50000.270984 50000.273090 50000.265982 50000.249931 50000.225555 50000.193792 50000.155866 50000.113237 50000.067547 50000.020558 49999.974081 49999.929905 49999.889732 49999.855111 49999.827372 49999.807583 49999.796505 49999.794561 49999.801824 49999.818011 49999.842498 49999.874338 49999.912306 49999.954940 50000.000599 50000.047527 50000.093923 50000.138003 50000.178077 50000.212608 50000.240272 50000.260009 50000.271065 50000.273019 +50000.226229 50000.219001 50000.202865 50000.178442 50000.146670 50000.108766 50000.066185 50000.020558 49999.973636 49999.927216 49999.883079 49999.842918 49999.808273 49999.780473 49999.760588 49999.749381 49999.747285 49999.754382 49999.770404 49999.794738 49999.826452 49999.864331 49999.906921 49999.952587 49999.999576 50000.046081 50000.090314 50000.130573 50000.165309 50000.193183 50000.213121 50000.224354 50000.226448 50000.219320 50000.203243 50000.178836 50000.147037 50000.109071 50000.066400 50000.020668 49999.973636 49999.927115 49999.882899 49999.842688 49999.808031 49999.780262 49999.760449 49999.749352 49999.747396 49999.754654 49999.770844 49999.795340 49999.827199 49999.865191 49999.907855 49999.953549 50000.000517 50000.046953 50000.091074 50000.131186 50000.165751 50000.193444 50000.213203 50000.224272 50000.226229 +50000.179945 50000.172712 50000.156562 50000.132116 50000.100313 50000.062372 50000.019750 49999.974081 49999.927115 49999.880656 49999.836484 49999.796294 49999.761629 49999.733820 49999.713934 49999.702738 49999.700663 49999.707790 49999.723850 49999.748228 49999.779990 49999.817919 49999.860560 49999.906275 49999.953309 49999.999855 50000.044122 50000.084408 50000.119162 50000.147046 50000.166987 50000.178214 50000.180295 50000.173147 50000.157045 50000.132607 50000.100775 50000.062772 50000.020062 49999.974289 49999.927216 49999.880656 49999.836401 49999.796154 49999.761464 49999.733666 49999.713829 49999.702713 49999.700744 49999.707997 49999.724189 49999.748694 49999.780569 49999.818585 49999.861278 49999.907006 49999.954011 50000.000487 50000.044647 50000.084798 50000.119397 50000.147119 50000.166900 50000.177983 50000.179945 +50000.135951 50000.128714 50000.112551 50000.088084 50000.056252 50000.018277 49999.975615 49999.929905 49999.882899 49999.836401 49999.792195 49999.751978 49999.717294 49999.689474 49999.669589 49999.658402 49999.656346 49999.663501 49999.679596 49999.704015 49999.735822 49999.773798 49999.816486 49999.862246 49999.909321 49999.955902 50000.000199 50000.040508 50000.075277 50000.103169 50000.123109 50000.134330 50000.136397 50000.129231 50000.113105 50000.088640 50000.056776 50000.018740 49999.975996 49999.930188 49999.883079 49999.836484 49999.792195 49999.751916 49999.717197 49999.689373 49999.669514 49999.658381 49999.656401 49999.663648 49999.679841 49999.704354 49999.736243 49999.774280 49999.817000 49999.862760 49999.909800 49999.956313 50000.000512 50000.040700 50000.075333 50000.103083 50000.122886 50000.133984 50000.135951 +50000.095944 50000.088705 50000.072531 50000.048045 50000.016187 49999.978179 49999.935481 49999.889732 49999.842688 49999.796154 49999.751916 49999.711673 49999.676970 49999.649141 49999.629255 49999.618076 49999.616037 49999.623217 49999.639344 49999.663799 49999.695646 49999.733662 49999.776390 49999.822189 49999.869298 49999.915909 49999.960230 50000.000556 50000.035336 50000.063232 50000.083170 50000.094383 50000.096437 50000.089253 50000.073107 50000.048618 50000.016728 49999.978665 49999.935892 49999.890055 49999.842918 49999.796294 49999.751978 49999.711673 49999.676930 49999.649085 49999.629207 49999.618059 49999.616069 49999.623311 49999.639504 49999.664024 49999.695926 49999.733981 49999.776725 49999.822513 49999.869586 49999.916134 49999.960368 50000.000590 50000.035255 50000.063033 50000.082858 50000.093970 50000.095944 +50000.061466 50000.054226 50000.038044 50000.013542 49999.981660 49999.943624 49999.900894 49999.855111 49999.808031 49999.761464 49999.717197 49999.676930 49999.642210 49999.614371 49999.594483 49999.583311 49999.581285 49999.588486 49999.604639 49999.629124 49999.661003 49999.699053 49999.741814 49999.787642 49999.834778 49999.881411 49999.925748 49999.966085 50000.000871 50000.028767 50000.048700 50000.059904 50000.061945 50000.054746 50000.038581 50000.014073 49999.982164 49999.944080 49999.901287 49999.855430 49999.808273 49999.761629 49999.717294 49999.676970 49999.642210 49999.614349 49999.594457 49999.583298 49999.581299 49999.588537 49999.604730 49999.629255 49999.661166 49999.699236 49999.742000 49999.787814 49999.834915 49999.881494 49999.925760 49999.966014 50000.000709 50000.028513 50000.048359 50000.059485 50000.061466 +50000.033845 50000.026606 50000.010418 49999.985903 49999.954003 49999.915943 49999.873185 49999.827372 49999.780262 49999.733666 49999.689373 49999.649085 49999.614349 49999.586500 49999.566609 49999.555441 49999.553426 49999.560642 49999.576815 49999.601323 49999.633227 49999.671301 49999.714085 49999.759934 49999.807088 49999.853733 49999.898079 49999.938420 49999.973204 50000.001096 50000.021022 50000.032215 50000.034244 50000.027031 50000.010853 49999.986332 49999.954410 49999.916314 49999.873509 49999.827641 49999.780473 49999.733820 49999.689474 49999.649141 49999.614371 49999.586500 49999.566599 49999.555432 49999.553428 49999.560661 49999.576854 49999.601381 49999.633300 49999.671382 49999.714162 49999.759995 49999.807120 49999.853725 49999.898019 49999.938300 49999.973022 50000.000849 50000.020715 50000.031856 50000.033845 +50000.014144 50000.006908 49999.990718 49999.966194 49999.934280 49999.896201 49999.853421 49999.807583 49999.760449 49999.713829 49999.669514 49999.629207 49999.594457 49999.566599 49999.546704 49999.535538 49999.533529 49999.540756 49999.556942 49999.581465 49999.613385 49999.651475 49999.694271 49999.740131 49999.787291 49999.833941 49999.878286 49999.918623 49999.953400 49999.981283 50000.001197 50000.012379 50000.014397 50000.007173 49999.990987 49999.966458 49999.934530 49999.896431 49999.853624 49999.807755 49999.760588 49999.713934 49999.669589 49999.629255 49999.594483 49999.566609 49999.546704 49999.535533 49999.533525 49999.540756 49999.556947 49999.581475 49999.613397 49999.651486 49999.694277 49999.740125 49999.787267 49999.833893 49999.878209 49999.918514 49999.953258 49999.981107 50000.000991 50000.012146 50000.014144 +50000.003119 49999.995889 49999.979699 49999.955171 49999.923248 49999.885157 49999.842361 49999.796505 49999.749352 49999.702713 49999.658381 49999.618059 49999.583298 49999.555432 49999.535533 49999.524367 49999.522361 49999.529593 49999.545785 49999.570316 49999.602242 49999.640337 49999.683137 49999.728996 49999.776154 49999.822796 49999.867132 49999.907457 49999.942222 49999.970090 49999.989991 50000.001159 50000.003167 49999.995936 49999.979744 49999.955215 49999.923289 49999.885195 49999.842397 49999.796538 49999.749381 49999.702738 49999.658402 49999.618076 49999.583311 49999.555441 49999.535538 49999.524367 49999.522356 49999.529584 49999.545772 49999.570299 49999.602221 49999.640312 49999.683108 49999.728964 49999.776118 49999.822758 49999.867091 49999.907414 49999.942176 49999.970043 49999.989943 50000.001112 50000.003119 +50000.001194 49999.993971 49999.977785 49999.953257 49999.921331 49999.883233 49999.840428 49999.794561 49999.747396 49999.700744 49999.656401 49999.616069 49999.581299 49999.553428 49999.533525 49999.522356 49999.520350 49999.527582 49999.543775 49999.568306 49999.600230 49999.638320 49999.681113 49999.726962 49999.774106 49999.820733 49999.865051 49999.905356 49999.940101 49999.967950 49999.987835 49999.998990 50000.000988 49999.993752 49999.977560 49999.953036 49999.921121 49999.883041 49999.840260 49999.794421 49999.747285 49999.700663 49999.656346 49999.616037 49999.581285 49999.553426 49999.533529 49999.522361 49999.520350 49999.527575 49999.543758 49999.568280 49999.600197 49999.638285 49999.681079 49999.726937 49999.774095 49999.820743 49999.865086 49999.905422 49999.940199 49999.968080 49999.987994 49999.999175 50000.001194 +50000.008437 50000.001224 49999.985045 49999.960523 49999.928599 49999.890501 49999.847694 49999.801824 49999.754654 49999.707997 49999.663648 49999.623311 49999.588537 49999.560661 49999.540756 49999.529584 49999.527575 49999.534804 49999.550991 49999.575514 49999.607428 49999.645506 49999.688282 49999.734111 49999.781233 49999.827835 49999.872126 49999.912405 49999.947125 49999.974951 49999.994816 50000.005957 50000.007946 50000.000708 49999.984522 49999.960008 49999.928110 49999.890053 49999.847298 49999.801488 49999.754382 49999.707790 49999.663501 49999.623217 49999.588486 49999.560642 49999.540756 49999.529593 49999.527582 49999.534804 49999.550980 49999.575493 49999.607401 49999.645479 49999.688265 49999.734117 49999.781273 49999.827921 49999.872268 49999.912610 49999.947396 49999.975289 49999.995215 50000.006408 50000.008437 +50000.024567 50000.017366 50000.001198 49999.976686 49999.944770 49999.906680 49999.863878 49999.818011 49999.770844 49999.724189 49999.679841 49999.639504 49999.604730 49999.576854 49999.556947 49999.545772 49999.543758 49999.550980 49999.567158 49999.591668 49999.623565 49999.661622 49999.704373 49999.750175 49999.797266 49999.843835 49999.888093 49999.928340 49999.963029 49999.990829 50000.010672 50000.021798 50000.023780 50000.016542 50000.000364 49999.975867 49999.943993 49999.905965 49999.863244 49999.817472 49999.770404 49999.723850 49999.679596 49999.639344 49999.604639 49999.576815 49999.556942 49999.545785 49999.543775 49999.550991 49999.567158 49999.591658 49999.623550 49999.661613 49999.704385 49999.750224 49999.797369 49999.844011 49999.888355 49999.928697 49999.963487 49999.991387 50000.011322 50000.022526 50000.024567 +50000.048959 50000.041771 50000.025618 50000.001120 49999.969219 49999.931142 49999.888353 49999.842498 49999.795340 49999.748694 49999.704354 49999.664024 49999.629255 49999.601381 49999.581475 49999.570299 49999.568280 49999.575493 49999.591658 49999.616150 49999.648025 49999.686055 49999.728775 49999.774541 49999.821594 49999.868125 49999.912344 49999.952553 49999.987208 50000.014979 50000.034799 50000.045910 50000.047885 50000.040650 50000.024484 50000.000007 49999.968162 49999.930169 49999.887490 49999.841760 49999.794738 49999.748228 49999.704015 49999.663799 49999.629124 49999.601323 49999.581465 49999.570316 49999.568306 49999.575514 49999.591668 49999.616150 49999.648022 49999.686063 49999.728813 49999.774631 49999.821760 49999.868387 49999.912721 49999.953058 49999.987847 50000.015750 50000.035692 50000.046906 50000.048959 +50000.080670 50000.073498 50000.057362 50000.032883 50000.001002 49999.962944 49999.920175 49999.874338 49999.827199 49999.780569 49999.736243 49999.695926 49999.661166 49999.633300 49999.613397 49999.602221 49999.600197 49999.607401 49999.623550 49999.648022 49999.679871 49999.717869 49999.760553 49999.806280 49999.853291 49999.899777 49999.943953 49999.984121 50000.018739 50000.046478 50000.066275 50000.077370 50000.079340 50000.072109 50000.055957 50000.031505 49999.999692 49999.961740 49999.919105 49999.873425 49999.826452 49999.779990 49999.735822 49999.695646 49999.661003 49999.633227 49999.613385 49999.602242 49999.600230 49999.607428 49999.623565 49999.648025 49999.679871 49999.717883 49999.760605 49999.806396 49999.853500 49999.900106 49999.944424 49999.984751 50000.019534 50000.047436 50000.067383 50000.078605 50000.080670 +50000.118478 50000.111322 50000.095207 50000.070750 50000.038893 50000.000861 49999.958117 49999.912306 49999.865191 49999.818585 49999.774280 49999.733981 49999.699236 49999.671382 49999.651486 49999.640312 49999.638285 49999.645479 49999.661613 49999.686063 49999.717883 49999.755848 49999.798493 49999.844177 49999.891142 49999.937581 49999.981711 50000.021836 50000.056415 50000.084122 50000.103895 50000.114975 50000.116940 50000.109715 50000.093580 50000.069154 50000.037377 49999.999467 49999.956881 49999.911251 49999.864331 49999.817919 49999.773798 49999.733662 49999.699053 49999.671301 49999.651475 49999.640337 49999.638320 49999.645506 49999.661622 49999.686055 49999.717869 49999.755848 49999.798535 49999.844293 49999.891365 49999.937944 49999.982241 50000.022551 50000.057324 50000.085222 50000.105171 50000.116401 50000.118478 +50000.160926 50000.153788 50000.137694 50000.113263 50000.081434 50000.043432 50000.000719 49999.954940 49999.907855 49999.861278 49999.817000 49999.776725 49999.742000 49999.714162 49999.694277 49999.683108 49999.681079 49999.688265 49999.704385 49999.728813 49999.760605 49999.798535 49999.841140 49999.886780 49999.933698 49999.980090 50000.024173 50000.064254 50000.098794 50000.126469 50000.146217 50000.157283 50000.159244 50000.152026 50000.135908 50000.111510 50000.079769 50000.041903 49999.999366 49999.953789 49999.906921 49999.860560 49999.816486 49999.776390 49999.741814 49999.714085 49999.694271 49999.683137 49999.681113 49999.688282 49999.704373 49999.728775 49999.760553 49999.798493 49999.841140 49999.886859 49999.933895 49999.980442 50000.024711 50000.065001 50000.099760 50000.127651 50000.147599 50000.158836 50000.160926 +50000.206379 50000.199259 50000.183189 50000.158786 50000.126988 50000.089020 50000.046343 50000.000599 49999.953549 49999.907006 49999.862760 49999.822513 49999.787814 49999.759995 49999.740125 49999.728964 49999.726937 49999.734117 49999.750224 49999.774631 49999.806396 49999.844293 49999.886859 49999.932455 49999.979328 50000.025673 50000.069710 50000.109748 50000.144250 50000.171894 50000.191619 50000.202671 50000.204628 50000.197418 50000.181318 50000.156947 50000.125242 50000.087420 50000.044930 49999.999404 49999.952587 49999.906275 49999.862246 49999.822189 49999.787642 49999.759934 49999.740131 49999.728996 49999.726962 49999.734111 49999.750175 49999.774541 49999.806280 49999.844177 49999.886780 49999.932455 49999.979451 50000.025962 50000.070200 50000.110465 50000.145208 50000.173089 50000.193036 50000.204277 50000.206379 +50000.253091 50000.245989 50000.229943 50000.205569 50000.173804 50000.135872 50000.093232 50000.047527 50000.000517 49999.954011 49999.909800 49999.869586 49999.834915 49999.807120 49999.787267 49999.776118 49999.774095 49999.781273 49999.797369 49999.821760 49999.853500 49999.891365 49999.933895 49999.979451 50000.026280 50000.072581 50000.116575 50000.156573 50000.191039 50000.218653 50000.238356 50000.249396 50000.251350 50000.244147 50000.228064 50000.203720 50000.172049 50000.134268 50000.091824 50000.046345 49999.999576 49999.953309 49999.909321 49999.869298 49999.834778 49999.807088 49999.787291 49999.776154 49999.774106 49999.781233 49999.797266 49999.821594 49999.853291 49999.891142 49999.933698 49999.979328 50000.026280 50000.072752 50000.116957 50000.157196 50000.191919 50000.219789 50000.239731 50000.250977 50000.253091 +50000.299266 50000.292181 50000.276159 50000.251814 50000.220083 50000.182188 50000.139588 50000.093923 50000.046953 50000.000487 49999.956313 49999.916134 49999.881494 49999.853725 49999.833893 49999.822758 49999.820743 49999.827921 49999.844011 49999.868387 49999.900106 49999.937944 49999.980442 50000.025962 50000.072752 50000.119013 50000.162968 50000.202929 50000.237362 50000.264949 50000.284633 50000.295661 50000.297614 50000.290417 50000.274350 50000.250030 50000.218391 50000.180646 50000.138243 50000.092807 50000.046081 49999.999855 49999.955902 49999.915909 49999.881411 49999.853733 49999.833941 49999.822796 49999.820733 49999.827835 49999.843835 49999.868125 49999.899777 49999.937581 49999.980090 50000.025673 50000.072581 50000.119013 50000.163184 50000.203394 50000.238097 50000.265954 50000.285893 50000.297142 50000.299266 +50000.343132 50000.336064 50000.320064 50000.295748 50000.264049 50000.226190 50000.183628 50000.138003 50000.091074 50000.044647 50000.000512 49999.960368 49999.925760 49999.898019 49999.878209 49999.867091 49999.865086 49999.872268 49999.888355 49999.912721 49999.944424 49999.982241 50000.024711 50000.070200 50000.116957 50000.163184 50000.207105 50000.247033 50000.281439 50000.309003 50000.328670 50000.339688 50000.341638 50000.334448 50000.318394 50000.294095 50000.262483 50000.224771 50000.182403 50000.137004 50000.090314 50000.044122 50000.000199 49999.960230 49999.925748 49999.898079 49999.878286 49999.867132 49999.865051 49999.872126 49999.888093 49999.912344 49999.943953 49999.981711 50000.024173 50000.069710 50000.116575 50000.162968 50000.207105 50000.247288 50000.281969 50000.309814 50000.329747 50000.340998 50000.343132 +50000.383007 50000.375954 50000.359975 50000.335684 50000.304016 50000.266190 50000.223664 50000.178077 50000.131186 50000.084798 50000.040700 50000.000590 49999.966014 49999.938300 49999.918514 49999.907414 49999.905422 49999.912610 49999.928697 49999.953058 49999.984751 50000.022551 50000.065001 50000.110465 50000.157196 50000.203394 50000.247288 50000.287190 50000.321572 50000.349117 50000.368770 50000.379780 50000.381729 50000.374543 50000.358501 50000.334219 50000.302630 50000.264943 50000.222604 50000.177235 50000.130573 50000.084408 50000.040508 50000.000556 49999.966085 49999.938420 49999.918623 49999.907457 49999.905356 49999.912405 49999.928340 49999.952553 49999.984121 50000.021836 50000.064254 50000.109748 50000.156573 50000.202929 50000.247033 50000.287190 50000.321853 50000.349684 50000.369612 50000.380864 50000.383007 +50000.417362 50000.410322 50000.394361 50000.370093 50000.338451 50000.300655 50000.258161 50000.212608 50000.165751 50000.119397 50000.075333 50000.035255 50000.000709 49999.973022 49999.953258 49999.942176 49999.940199 49999.947396 49999.963487 49999.987847 50000.019534 50000.057324 50000.099760 50000.145208 50000.191919 50000.238097 50000.281969 50000.321853 50000.356217 50000.383747 50000.403389 50000.414393 50000.416340 50000.409158 50000.393125 50000.368856 50000.337283 50000.299616 50000.257298 50000.211950 50000.165309 50000.119162 50000.075277 50000.035336 50000.000871 49999.973204 49999.953400 49999.942222 49999.940101 49999.947125 49999.963029 49999.987208 50000.018739 50000.056415 50000.098794 50000.144250 50000.191039 50000.237362 50000.281439 50000.321572 50000.356217 50000.384037 50000.403959 50000.415213 50000.417362 +50000.444884 50000.437853 50000.421907 50000.397656 50000.366036 50000.328264 50000.285797 50000.240272 50000.193444 50000.147119 50000.103083 50000.063033 50000.028513 50000.000849 49999.981107 49999.970043 49999.968080 49999.975289 49999.991387 50000.015750 50000.047436 50000.085222 50000.127651 50000.173089 50000.219789 50000.265954 50000.309814 50000.349684 50000.384037 50000.411558 50000.431193 50000.442192 50000.444138 50000.436958 50000.420930 50000.396669 50000.365106 50000.327451 50000.285146 50000.239812 50000.193183 50000.147046 50000.103169 50000.063232 50000.028767 50000.001096 49999.981283 49999.970090 49999.967950 49999.974951 49999.990829 50000.014979 50000.046478 50000.084122 50000.126469 50000.171894 50000.218653 50000.264949 50000.309003 50000.349117 50000.383747 50000.411558 50000.431475 50000.442729 50000.444884 +50000.464518 50000.457495 50000.441558 50000.417321 50000.385716 50000.347962 50000.305514 50000.260009 50000.213203 50000.166900 50000.122886 50000.082858 50000.048359 50000.020715 50000.000991 49999.989943 49999.987994 49999.995215 50000.011322 50000.035692 50000.067383 50000.105171 50000.147599 50000.193036 50000.239731 50000.285893 50000.329747 50000.369612 50000.403959 50000.431475 50000.451106 50000.462103 50000.464048 50000.456869 50000.440842 50000.416585 50000.385027 50000.347376 50000.305076 50000.259746 50000.213121 50000.166987 50000.123109 50000.083170 50000.048700 50000.021022 50000.001197 49999.989991 49999.987835 49999.994816 50000.010672 50000.034799 50000.066275 50000.103895 50000.146217 50000.191619 50000.238356 50000.284633 50000.328670 50000.368770 50000.403389 50000.431193 50000.451106 50000.462360 50000.464518 +50000.475517 50000.468497 50000.452565 50000.428335 50000.396739 50000.358994 50000.316558 50000.271065 50000.224272 50000.177983 50000.133984 50000.093970 50000.059485 50000.031856 50000.012146 50000.001112 49999.999175 50000.006408 50000.022526 50000.046906 50000.078605 50000.116401 50000.158836 50000.204277 50000.250977 50000.297142 50000.340998 50000.380864 50000.415213 50000.442729 50000.462360 50000.473357 50000.475301 50000.468121 50000.452093 50000.427834 50000.396274 50000.358621 50000.316318 50000.270984 50000.224354 50000.178214 50000.134330 50000.094383 50000.059904 50000.032215 50000.012379 50000.001159 49999.998990 50000.005957 50000.021798 50000.045910 50000.077370 50000.114975 50000.157283 50000.202671 50000.249396 50000.295661 50000.339688 50000.379780 50000.414393 50000.442192 50000.462103 50000.473357 50000.475517 +50000.477461 50000.470440 50000.454509 50000.430279 50000.398684 50000.360942 50000.318508 50000.273019 50000.226229 50000.179945 50000.135951 50000.095944 50000.061466 50000.033845 50000.014144 50000.003119 50000.001194 50000.008437 50000.024567 50000.048959 50000.080670 50000.118478 50000.160926 50000.206379 50000.253091 50000.299266 50000.343132 50000.383007 50000.417362 50000.444884 50000.464518 50000.475517 50000.477461 50000.470278 50000.454246 50000.429980 50000.398412 50000.360750 50000.318436 50000.273090 50000.226448 50000.180295 50000.136397 50000.096437 50000.061945 50000.034244 50000.014397 50000.003167 50000.000988 50000.007946 50000.023780 50000.047885 50000.079340 50000.116940 50000.159244 50000.204628 50000.251350 50000.297614 50000.341638 50000.381729 50000.416340 50000.444138 50000.464048 50000.475301 50000.477461 diff --git a/examples/next/swm/ref/64x64/u.step0.init.bin b/examples/next/swm/ref/64x64/u.step0.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..cfb89e64eeb3f4157f474ed9a637bfdc8a08275f GIT binary patch literal 33800 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 literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/u.step0.t200.bin b/examples/next/swm/ref/64x64/u.step0.t200.bin new file mode 100644 index 0000000000000000000000000000000000000000..f1d0cf833ddf636cecc065ea481b6b97409b133a GIT binary patch literal 33800 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 Z!Mr8@$nPrr4_3%`8vGB&@IQ$B{~vb8k0}5E literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/u.step1.init.bin b/examples/next/swm/ref/64x64/u.step1.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..f1d0cf833ddf636cecc065ea481b6b97409b133a GIT binary patch literal 33800 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 Z!Mr8@$nPrr4_3%`8vGB&@IQ$B{~vb8k0}5E literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/u.step1.t200.bin b/examples/next/swm/ref/64x64/u.step1.t200.bin new file mode 100644 index 0000000000000000000000000000000000000000..767a0f0a8ce8f37c6276029a40eda6a65fe5b86a GIT binary patch literal 33800 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 D>`}rC literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/u.step2.init.bin b/examples/next/swm/ref/64x64/u.step2.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..767a0f0a8ce8f37c6276029a40eda6a65fe5b86a GIT binary patch literal 33800 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 D>`}rC literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/u.step3.init.bin b/examples/next/swm/ref/64x64/u.step3.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..2df95aa32033c9fc07b7b0cd4c200dded597cb99 GIT binary patch literal 33800 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 S51rwEXoLS@8~hI){r^8~c8XR2 literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/u.step4000.final.bin b/examples/next/swm/ref/64x64/u.step4000.final.bin new file mode 100644 index 0000000000000000000000000000000000000000..b5811644545c5fd64922412a059d9fbc10488e42 GIT binary patch literal 33800 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 T6aQi4@!sM;1cl*0H0=L>*;0Z3 literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/u.txt b/examples/next/swm/ref/64x64/u.txt new file mode 100644 index 0000000000..789db53660 --- /dev/null +++ b/examples/next/swm/ref/64x64/u.txt @@ -0,0 +1,65 @@ +-0.048067 -0.047374 -0.046226 -0.044634 -0.042613 -0.040184 -0.037369 -0.034195 -0.030694 -0.026898 -0.022845 -0.018573 -0.014124 -0.009540 -0.004866 -0.000146 0.004574 0.009249 0.013832 0.018282 0.022554 0.026607 0.030403 0.033904 0.037078 0.039893 0.042322 0.044343 0.045935 0.047083 0.047776 0.048008 0.047776 0.047083 0.045935 0.044343 0.042322 0.039893 0.037078 0.033904 0.030403 0.026607 0.022554 0.018282 0.013832 0.009249 0.004574 -0.000146 -0.004866 -0.009540 -0.014124 -0.018573 -0.022845 -0.026898 -0.030694 -0.034195 -0.037369 -0.040184 -0.042613 -0.044634 -0.046226 -0.047374 -0.048067 -0.048299 -0.048067 +-0.143444 -0.141370 -0.137937 -0.133176 -0.127134 -0.119869 -0.111451 -0.101962 -0.091491 -0.080141 -0.068021 -0.055246 -0.041941 -0.028234 -0.014256 -0.000142 0.013972 0.027950 0.041657 0.054962 0.067736 0.079857 0.091207 0.101677 0.111167 0.119585 0.126850 0.132892 0.137652 0.141086 0.143159 0.143853 0.143159 0.141086 0.137652 0.132892 0.126850 0.119585 0.111167 0.101678 0.091207 0.079857 0.067736 0.054962 0.041657 0.027950 0.013972 -0.000142 -0.014256 -0.028234 -0.041941 -0.055246 -0.068021 -0.080141 -0.091491 -0.101962 -0.111451 -0.119869 -0.127134 -0.133176 -0.137936 -0.141370 -0.143444 -0.144137 -0.143444 +-0.237434 -0.234001 -0.228315 -0.220431 -0.210426 -0.198396 -0.184457 -0.168742 -0.151403 -0.132608 -0.112537 -0.091383 -0.069351 -0.046652 -0.023505 -0.000133 0.023239 0.046386 0.069085 0.091117 0.112271 0.132342 0.151137 0.168476 0.184190 0.198130 0.210160 0.220165 0.228048 0.233734 0.237168 0.238316 0.237168 0.233734 0.228049 0.220165 0.210160 0.198130 0.184191 0.168476 0.151137 0.132342 0.112271 0.091117 0.069085 0.046386 0.023239 -0.000133 -0.023505 -0.046652 -0.069351 -0.091383 -0.112537 -0.132608 -0.151403 -0.168742 -0.184456 -0.198396 -0.210426 -0.220431 -0.228315 -0.234001 -0.237434 -0.238582 -0.237434 +-0.329134 -0.324374 -0.316490 -0.305560 -0.291688 -0.275009 -0.255681 -0.233893 -0.209853 -0.183794 -0.155966 -0.126636 -0.096089 -0.064617 -0.032524 -0.000119 0.032286 0.064379 0.095851 0.126399 0.155728 0.183556 0.209616 0.233655 0.255444 0.274771 0.291450 0.305322 0.316252 0.324136 0.328896 0.330488 0.328896 0.324136 0.316253 0.305322 0.291451 0.274771 0.255444 0.233656 0.209616 0.183557 0.155728 0.126399 0.095851 0.064379 0.032286 -0.000119 -0.032524 -0.064617 -0.096089 -0.126636 -0.155965 -0.183794 -0.209853 -0.233893 -0.255681 -0.275008 -0.291688 -0.305560 -0.316490 -0.324374 -0.329134 -0.330726 -0.329134 +-0.417662 -0.411620 -0.401615 -0.387743 -0.370138 -0.348969 -0.324441 -0.296788 -0.266279 -0.233206 -0.197889 -0.160666 -0.121898 -0.081956 -0.041226 -0.000100 0.041026 0.081756 0.121698 0.160466 0.197689 0.233006 0.266079 0.296588 0.324240 0.348769 0.369937 0.387542 0.401414 0.411419 0.417461 0.419481 0.417461 0.411419 0.401414 0.387543 0.369938 0.348769 0.324241 0.296589 0.266079 0.233007 0.197689 0.160467 0.121698 0.081756 0.041026 -0.000100 -0.041226 -0.081956 -0.121898 -0.160666 -0.197889 -0.233206 -0.266279 -0.296788 -0.324440 -0.348969 -0.370138 -0.387743 -0.401615 -0.411620 -0.417661 -0.419682 -0.417662 +-0.502164 -0.494899 -0.482869 -0.466189 -0.445020 -0.419566 -0.390072 -0.356823 -0.320138 -0.280370 -0.237903 -0.193146 -0.146530 -0.098503 -0.049528 -0.000077 0.049373 0.098348 0.146375 0.192991 0.237749 0.280215 0.319983 0.356668 0.389917 0.419411 0.444864 0.466033 0.482713 0.494743 0.502008 0.504437 0.502008 0.494743 0.482713 0.466033 0.444865 0.419411 0.389918 0.356668 0.319983 0.280216 0.237749 0.192992 0.146375 0.098348 0.049374 -0.000077 -0.049528 -0.098503 -0.146530 -0.193146 -0.237903 -0.280370 -0.320138 -0.356823 -0.390072 -0.419566 -0.445020 -0.466188 -0.482868 -0.494899 -0.502164 -0.504593 -0.502164 +-0.581827 -0.573410 -0.559470 -0.540143 -0.515614 -0.486120 -0.451946 -0.413419 -0.370911 -0.324832 -0.275625 -0.223764 -0.169749 -0.114099 -0.057351 -0.000052 0.057248 0.113996 0.169645 0.223660 0.275521 0.324728 0.370807 0.413315 0.451841 0.486016 0.515510 0.540038 0.559365 0.573305 0.581723 0.584538 0.581723 0.573305 0.559366 0.540039 0.515510 0.486017 0.451842 0.413315 0.370808 0.324729 0.275522 0.223661 0.169645 0.113996 0.057248 -0.000052 -0.057351 -0.114099 -0.169749 -0.223764 -0.275625 -0.324832 -0.370911 -0.413418 -0.451945 -0.486120 -0.515614 -0.540142 -0.559470 -0.573409 -0.581827 -0.584642 -0.581827 +-0.655887 -0.646397 -0.630682 -0.608894 -0.581241 -0.547992 -0.509465 -0.466032 -0.418111 -0.366164 -0.310690 -0.252225 -0.191331 -0.128595 -0.064621 -0.000024 0.064572 0.128547 0.191283 0.252177 0.310642 0.366115 0.418062 0.465983 0.509416 0.547943 0.581192 0.608844 0.630632 0.646347 0.655837 0.659010 0.655837 0.646347 0.630633 0.608844 0.581193 0.547943 0.509417 0.465984 0.418063 0.366116 0.310642 0.252177 0.191283 0.128547 0.064572 -0.000024 -0.064621 -0.128595 -0.191331 -0.252225 -0.310690 -0.366163 -0.418111 -0.466032 -0.509465 -0.547991 -0.581241 -0.608893 -0.630682 -0.646397 -0.655887 -0.659060 -0.655887 +-0.723629 -0.713158 -0.695820 -0.671780 -0.641270 -0.604585 -0.562077 -0.514156 -0.461284 -0.403969 -0.342763 -0.278257 -0.211071 -0.141852 -0.071267 0.000004 0.071276 0.141861 0.211079 0.278265 0.342772 0.403977 0.461292 0.514164 0.562085 0.604593 0.641278 0.671787 0.695827 0.713165 0.723636 0.727137 0.723636 0.713166 0.695827 0.671788 0.641279 0.604593 0.562086 0.514165 0.461293 0.403978 0.342772 0.278266 0.211080 0.141861 0.071276 0.000004 -0.071267 -0.141852 -0.211071 -0.278257 -0.342763 -0.403968 -0.461283 -0.514156 -0.562077 -0.604585 -0.641270 -0.671780 -0.695819 -0.713158 -0.723629 -0.727130 -0.723629 +-0.784402 -0.773052 -0.754257 -0.728197 -0.695124 -0.655356 -0.609277 -0.557329 -0.500014 -0.437883 -0.371535 -0.301609 -0.228777 -0.153743 -0.077227 0.000033 0.077292 0.153808 0.228843 0.301674 0.371600 0.437948 0.500079 0.557394 0.609341 0.655420 0.695188 0.728261 0.754320 0.773116 0.784466 0.788261 0.784466 0.773116 0.754321 0.728261 0.695189 0.655421 0.609342 0.557395 0.500080 0.437949 0.371601 0.301675 0.228843 0.153808 0.077293 0.000033 -0.077227 -0.153743 -0.228777 -0.301609 -0.371535 -0.437883 -0.500014 -0.557329 -0.609276 -0.655356 -0.695123 -0.728196 -0.754256 -0.773052 -0.784402 -0.788198 -0.784402 +-0.837622 -0.825502 -0.805431 -0.777602 -0.742284 -0.699817 -0.650609 -0.595136 -0.533930 -0.467582 -0.396730 -0.322057 -0.244282 -0.164154 -0.082444 0.000060 0.082564 0.164274 0.244402 0.322177 0.396850 0.467701 0.534049 0.595255 0.650728 0.699935 0.742402 0.777720 0.805548 0.825620 0.837740 0.841793 0.837740 0.825620 0.805549 0.777721 0.742403 0.699936 0.650729 0.595256 0.534050 0.467702 0.396850 0.322177 0.244402 0.164274 0.082564 0.000060 -0.082444 -0.164154 -0.244282 -0.322057 -0.396730 -0.467582 -0.533930 -0.595135 -0.650609 -0.699816 -0.742283 -0.777601 -0.805430 -0.825502 -0.837622 -0.841676 -0.837622 +-0.882778 -0.870003 -0.848850 -0.819520 -0.782297 -0.737540 -0.685678 -0.627213 -0.562706 -0.492779 -0.418106 -0.339406 -0.257436 -0.172986 -0.086869 0.000085 0.087039 0.173155 0.257605 0.339575 0.418275 0.492948 0.562875 0.627381 0.685847 0.737708 0.782465 0.819688 0.849017 0.870171 0.882945 0.887217 0.882945 0.870171 0.849018 0.819688 0.782466 0.737708 0.685847 0.627382 0.562875 0.492949 0.418276 0.339575 0.257605 0.173155 0.087039 0.000085 -0.086869 -0.172986 -0.257436 -0.339405 -0.418106 -0.492779 -0.562706 -0.627212 -0.685678 -0.737539 -0.782297 -0.819520 -0.848849 -0.870003 -0.882777 -0.887049 -0.882778 +-0.919434 -0.906129 -0.884096 -0.853548 -0.814779 -0.768162 -0.714146 -0.653252 -0.586065 -0.513233 -0.435458 -0.353488 -0.268113 -0.180154 -0.090460 0.000106 0.090673 0.180367 0.268325 0.353700 0.435670 0.513445 0.586277 0.653463 0.714358 0.768373 0.814990 0.853759 0.884307 0.906339 0.919644 0.924094 0.919645 0.906340 0.884307 0.853760 0.814991 0.768374 0.714358 0.653464 0.586278 0.513446 0.435671 0.353701 0.268325 0.180367 0.090673 0.000106 -0.090460 -0.180154 -0.268113 -0.353488 -0.435458 -0.513233 -0.586065 -0.653251 -0.714146 -0.768161 -0.814778 -0.853548 -0.884096 -0.906128 -0.919434 -0.923883 -0.919434 +-0.947238 -0.933531 -0.910831 -0.879359 -0.839417 -0.791390 -0.735740 -0.673003 -0.603783 -0.528748 -0.448619 -0.364169 -0.276211 -0.185591 -0.093183 0.000124 0.093430 0.185838 0.276458 0.364416 0.448866 0.528995 0.604030 0.673249 0.735986 0.791636 0.839663 0.879605 0.911077 0.933776 0.947484 0.952068 0.947484 0.933777 0.911078 0.879606 0.839664 0.791637 0.735987 0.673250 0.604031 0.528995 0.448867 0.364417 0.276458 0.185839 0.093431 0.000124 -0.093183 -0.185591 -0.276210 -0.364169 -0.448619 -0.528747 -0.603783 -0.673002 -0.735739 -0.791389 -0.839416 -0.879359 -0.910831 -0.933530 -0.947238 -0.951822 -0.947238 +-0.965924 -0.951946 -0.928798 -0.896705 -0.855975 -0.806999 -0.750251 -0.686276 -0.615690 -0.539174 -0.457464 -0.371347 -0.281652 -0.189244 -0.095012 0.000136 0.095285 0.189517 0.281925 0.371619 0.457736 0.539446 0.615962 0.686547 0.750522 0.807271 0.856246 0.896976 0.929070 0.952217 0.966195 0.970870 0.966195 0.952217 0.929070 0.896977 0.856247 0.807272 0.750523 0.686548 0.615963 0.539447 0.457736 0.371620 0.281925 0.189517 0.095285 0.000137 -0.095012 -0.189244 -0.281652 -0.371346 -0.457463 -0.539173 -0.615689 -0.686275 -0.750250 -0.806999 -0.855974 -0.896704 -0.928798 -0.951945 -0.965923 -0.970598 -0.965924 +-0.975310 -0.961197 -0.937824 -0.905419 -0.864292 -0.814841 -0.757541 -0.692943 -0.621671 -0.544411 -0.461906 -0.374952 -0.284385 -0.191078 -0.095930 0.000144 0.096217 0.191366 0.284672 0.375239 0.462193 0.544698 0.621958 0.693230 0.757827 0.815127 0.864579 0.905705 0.938111 0.961483 0.975597 0.980317 0.975598 0.961484 0.938111 0.905706 0.864580 0.815128 0.757828 0.693231 0.621959 0.544699 0.462194 0.375239 0.284673 0.191366 0.096218 0.000144 -0.095930 -0.191078 -0.284385 -0.374951 -0.461906 -0.544410 -0.621671 -0.692943 -0.757540 -0.814840 -0.864292 -0.905418 -0.937824 -0.961196 -0.975310 -0.980030 -0.975310 +-0.975309 -0.961195 -0.937823 -0.905417 -0.864291 -0.814839 -0.757539 -0.692942 -0.621670 -0.544409 -0.461904 -0.374950 -0.284383 -0.191076 -0.095928 0.000146 0.096219 0.191368 0.284674 0.375241 0.462195 0.544700 0.621960 0.693232 0.757829 0.815130 0.864581 0.905708 0.938113 0.961486 0.975600 0.980320 0.975600 0.961486 0.938114 0.905708 0.864582 0.815130 0.757830 0.693233 0.621961 0.544701 0.462196 0.375241 0.284675 0.191368 0.096219 0.000146 -0.095928 -0.191076 -0.284383 -0.374950 -0.461904 -0.544409 -0.621669 -0.692941 -0.757538 -0.814838 -0.864290 -0.905416 -0.937822 -0.961194 -0.975308 -0.980028 -0.975309 +-0.965918 -0.951940 -0.928793 -0.896700 -0.855969 -0.806994 -0.750246 -0.686271 -0.615685 -0.539169 -0.457458 -0.371341 -0.281647 -0.189239 -0.095006 0.000142 0.095290 0.189522 0.281931 0.371625 0.457742 0.539452 0.615968 0.686554 0.750529 0.807277 0.856253 0.896983 0.929077 0.952224 0.966202 0.970877 0.966202 0.952224 0.929077 0.896984 0.856253 0.807278 0.750530 0.686555 0.615969 0.539453 0.457742 0.371625 0.281931 0.189523 0.095291 0.000142 -0.095006 -0.189238 -0.281646 -0.371341 -0.457458 -0.539168 -0.615684 -0.686270 -0.750245 -0.806993 -0.855969 -0.896699 -0.928792 -0.951940 -0.965918 -0.970592 -0.965918 +-0.947229 -0.933522 -0.910823 -0.879351 -0.839408 -0.791381 -0.735731 -0.672994 -0.603775 -0.528740 -0.448611 -0.364161 -0.276202 -0.185582 -0.093174 0.000133 0.093440 0.185848 0.276468 0.364426 0.448876 0.529005 0.604040 0.673259 0.735996 0.791646 0.839674 0.879616 0.911089 0.933788 0.947495 0.952079 0.947496 0.933788 0.911089 0.879617 0.839675 0.791647 0.735997 0.673260 0.604041 0.529005 0.448876 0.364426 0.276468 0.185848 0.093440 0.000133 -0.093174 -0.185582 -0.276202 -0.364160 -0.448610 -0.528739 -0.603774 -0.672993 -0.735730 -0.791380 -0.839408 -0.879350 -0.910822 -0.933521 -0.947229 -0.951813 -0.947229 +-0.919422 -0.906117 -0.884084 -0.853536 -0.814767 -0.768151 -0.714135 -0.653240 -0.586054 -0.513222 -0.435447 -0.353476 -0.268101 -0.180143 -0.090448 0.000119 0.090685 0.180380 0.268338 0.353713 0.435683 0.513459 0.586291 0.653477 0.714372 0.768387 0.815005 0.853774 0.884322 0.906355 0.919660 0.924109 0.919660 0.906355 0.884322 0.853774 0.815005 0.768388 0.714372 0.653478 0.586291 0.513459 0.435684 0.353714 0.268338 0.180380 0.090685 0.000119 -0.090448 -0.180142 -0.268101 -0.353476 -0.435446 -0.513221 -0.586053 -0.653240 -0.714134 -0.768150 -0.814767 -0.853536 -0.884084 -0.906116 -0.919421 -0.923871 -0.919422 +-0.882763 -0.869989 -0.848835 -0.819506 -0.782283 -0.737526 -0.685664 -0.627199 -0.562692 -0.492765 -0.418092 -0.339392 -0.257421 -0.172971 -0.086854 0.000100 0.087054 0.173171 0.257621 0.339591 0.418291 0.492965 0.562891 0.627398 0.685864 0.737725 0.782483 0.819706 0.849035 0.870189 0.882964 0.887236 0.882964 0.870190 0.849036 0.819706 0.782483 0.737726 0.685864 0.627399 0.562892 0.492965 0.418292 0.339591 0.257621 0.173171 0.087054 0.000100 -0.086854 -0.172971 -0.257421 -0.339391 -0.418092 -0.492765 -0.562691 -0.627198 -0.685664 -0.737525 -0.782282 -0.819505 -0.848834 -0.869988 -0.882763 -0.887034 -0.882763 +-0.837605 -0.825485 -0.805414 -0.777585 -0.742268 -0.699801 -0.650593 -0.595120 -0.533914 -0.467566 -0.396714 -0.322041 -0.244266 -0.164137 -0.082427 0.000077 0.082582 0.164291 0.244420 0.322195 0.396868 0.467720 0.534068 0.595274 0.650747 0.699955 0.742422 0.777740 0.805569 0.825640 0.837761 0.841814 0.837761 0.825641 0.805569 0.777741 0.742423 0.699955 0.650748 0.595274 0.534068 0.467720 0.396868 0.322195 0.244420 0.164291 0.082582 0.000077 -0.082427 -0.164137 -0.244265 -0.322040 -0.396713 -0.467565 -0.533913 -0.595119 -0.650593 -0.699800 -0.742267 -0.777585 -0.805413 -0.825484 -0.837605 -0.841658 -0.837605 +-0.784383 -0.773033 -0.754238 -0.728179 -0.695106 -0.655338 -0.609259 -0.557312 -0.499997 -0.437866 -0.371518 -0.301591 -0.228759 -0.153724 -0.077208 0.000052 0.077312 0.153827 0.228862 0.301694 0.371620 0.437968 0.500099 0.557414 0.609362 0.655441 0.695209 0.728282 0.754342 0.773138 0.784488 0.788284 0.784488 0.773138 0.754343 0.728283 0.695210 0.655442 0.609362 0.557415 0.500100 0.437969 0.371620 0.301694 0.228862 0.153827 0.077312 0.000052 -0.077208 -0.153724 -0.228759 -0.301590 -0.371517 -0.437865 -0.499996 -0.557311 -0.609258 -0.655338 -0.695105 -0.728178 -0.754238 -0.773033 -0.784383 -0.788179 -0.784383 +-0.723609 -0.713139 -0.695800 -0.671761 -0.641251 -0.604566 -0.562058 -0.514138 -0.461265 -0.403950 -0.342745 -0.278238 -0.211052 -0.141833 -0.071247 0.000024 0.071296 0.141881 0.211100 0.278286 0.342792 0.403998 0.461313 0.514185 0.562106 0.604614 0.641300 0.671809 0.695849 0.713188 0.723659 0.727160 0.723659 0.713188 0.695850 0.671810 0.641300 0.604615 0.562107 0.514186 0.461313 0.403998 0.342792 0.278286 0.211100 0.141881 0.071296 0.000024 -0.071247 -0.141832 -0.211051 -0.278238 -0.342744 -0.403949 -0.461264 -0.514137 -0.562058 -0.604565 -0.641251 -0.671760 -0.695800 -0.713138 -0.723609 -0.727110 -0.723609 +-0.655866 -0.646377 -0.630662 -0.608874 -0.581222 -0.547973 -0.509446 -0.466013 -0.418092 -0.366145 -0.310671 -0.252206 -0.191312 -0.128576 -0.064601 -0.000004 0.064592 0.128567 0.191303 0.252197 0.310662 0.366135 0.418083 0.466004 0.509437 0.547964 0.581213 0.608866 0.630654 0.646369 0.655859 0.659033 0.655859 0.646369 0.630655 0.608866 0.581214 0.547964 0.509437 0.466004 0.418083 0.366136 0.310662 0.252197 0.191303 0.128567 0.064592 -0.000004 -0.064601 -0.128575 -0.191312 -0.252206 -0.310671 -0.366144 -0.418091 -0.466012 -0.509445 -0.547972 -0.581221 -0.608873 -0.630662 -0.646376 -0.655866 -0.659040 -0.655866 +-0.581807 -0.573390 -0.559450 -0.540123 -0.515595 -0.486102 -0.451927 -0.413400 -0.370893 -0.324813 -0.275606 -0.223745 -0.169730 -0.114080 -0.057332 -0.000033 0.057267 0.114015 0.169664 0.223680 0.275540 0.324747 0.370827 0.413334 0.451861 0.486036 0.515530 0.540058 0.559386 0.573325 0.581743 0.584558 0.581744 0.573326 0.559386 0.540059 0.515530 0.486036 0.451862 0.413335 0.370827 0.324748 0.275541 0.223680 0.169664 0.114015 0.057267 -0.000033 -0.057332 -0.114080 -0.169730 -0.223745 -0.275606 -0.324813 -0.370892 -0.413400 -0.451926 -0.486101 -0.515594 -0.540123 -0.559450 -0.573389 -0.581807 -0.584622 -0.581807 +-0.502145 -0.494880 -0.482850 -0.466170 -0.445002 -0.419548 -0.390055 -0.356805 -0.320120 -0.280353 -0.237886 -0.193129 -0.146512 -0.098486 -0.049511 -0.000060 0.049391 0.098366 0.146393 0.193009 0.237766 0.280233 0.320000 0.356685 0.389935 0.419429 0.444882 0.466051 0.482731 0.494761 0.502026 0.504456 0.502026 0.494762 0.482731 0.466052 0.444883 0.419429 0.389935 0.356686 0.320000 0.280233 0.237766 0.193009 0.146393 0.098366 0.049391 -0.000060 -0.049511 -0.098485 -0.146512 -0.193129 -0.237886 -0.280352 -0.320120 -0.356805 -0.390054 -0.419548 -0.445001 -0.466170 -0.482850 -0.494880 -0.502144 -0.504574 -0.502145 +-0.417644 -0.411603 -0.401598 -0.387726 -0.370121 -0.348953 -0.324425 -0.296773 -0.266263 -0.233191 -0.197873 -0.160651 -0.121882 -0.081940 -0.041211 -0.000085 0.041041 0.081771 0.121713 0.160481 0.197704 0.233021 0.266094 0.296603 0.324255 0.348784 0.369952 0.387558 0.401429 0.411434 0.417476 0.419497 0.417476 0.411435 0.401430 0.387558 0.369953 0.348784 0.324256 0.296603 0.266094 0.233021 0.197704 0.160482 0.121713 0.081771 0.041041 -0.000085 -0.041210 -0.081940 -0.121882 -0.160651 -0.197873 -0.233190 -0.266263 -0.296772 -0.324424 -0.348952 -0.370121 -0.387726 -0.401598 -0.411602 -0.417644 -0.419665 -0.417644 +-0.329120 -0.324359 -0.316476 -0.305546 -0.291674 -0.274995 -0.255668 -0.233880 -0.209840 -0.183781 -0.155952 -0.126623 -0.096076 -0.064604 -0.032511 -0.000106 0.032299 0.064392 0.095863 0.126411 0.155740 0.183568 0.209628 0.233667 0.255455 0.274782 0.291462 0.305334 0.316264 0.324148 0.328908 0.330500 0.328908 0.324148 0.316264 0.305334 0.291462 0.274783 0.255456 0.233667 0.209628 0.183568 0.155740 0.126411 0.095863 0.064392 0.032299 -0.000106 -0.032511 -0.064604 -0.096076 -0.126623 -0.155952 -0.183780 -0.209840 -0.233879 -0.255667 -0.274994 -0.291674 -0.305546 -0.316476 -0.324359 -0.329120 -0.330711 -0.329120 +-0.237422 -0.233989 -0.228303 -0.220420 -0.210415 -0.198385 -0.184446 -0.168731 -0.151393 -0.132598 -0.112527 -0.091373 -0.069341 -0.046642 -0.023495 -0.000124 0.023248 0.046395 0.069094 0.091126 0.112279 0.132350 0.151146 0.168484 0.184199 0.198138 0.210168 0.220173 0.228057 0.233742 0.237176 0.238324 0.237176 0.233743 0.228057 0.220173 0.210168 0.198138 0.184199 0.168484 0.151146 0.132350 0.112279 0.091126 0.069094 0.046395 0.023248 -0.000124 -0.023495 -0.046642 -0.069341 -0.091373 -0.112526 -0.132597 -0.151393 -0.168731 -0.184445 -0.198385 -0.210415 -0.220420 -0.228303 -0.233989 -0.237422 -0.238571 -0.237422 +-0.143435 -0.141362 -0.137928 -0.133168 -0.127126 -0.119862 -0.111444 -0.101954 -0.091484 -0.080134 -0.068014 -0.055240 -0.041935 -0.028228 -0.014250 -0.000136 0.013977 0.027955 0.041662 0.054967 0.067741 0.079862 0.091211 0.101682 0.111171 0.119589 0.126854 0.132896 0.137656 0.141090 0.143163 0.143857 0.143163 0.141090 0.137656 0.132896 0.126854 0.119589 0.111172 0.101682 0.091212 0.079862 0.067741 0.054967 0.041662 0.027955 0.013977 -0.000136 -0.014250 -0.028228 -0.041935 -0.055240 -0.068014 -0.080134 -0.091484 -0.101954 -0.111444 -0.119861 -0.127126 -0.133168 -0.137928 -0.141362 -0.143435 -0.144129 -0.143435 +-0.048063 -0.047370 -0.046222 -0.044630 -0.042609 -0.040180 -0.037365 -0.034192 -0.030691 -0.026895 -0.022842 -0.018570 -0.014121 -0.009538 -0.004863 -0.000144 0.004576 0.009250 0.013834 0.018283 0.022555 0.026608 0.030403 0.033904 0.037078 0.039893 0.042322 0.044342 0.045934 0.047082 0.047776 0.048008 0.047776 0.047082 0.045934 0.044342 0.042322 0.039893 0.037078 0.033904 0.030403 0.026608 0.022555 0.018283 0.013834 0.009250 0.004576 -0.000144 -0.004863 -0.009538 -0.014121 -0.018570 -0.022842 -0.026895 -0.030691 -0.034192 -0.037365 -0.040180 -0.042609 -0.044630 -0.046221 -0.047370 -0.048063 -0.048295 -0.048063 +0.047776 0.047083 0.045935 0.044343 0.042322 0.039893 0.037078 0.033904 0.030403 0.026607 0.022554 0.018282 0.013832 0.009249 0.004574 -0.000146 -0.004866 -0.009540 -0.014124 -0.018573 -0.022845 -0.026898 -0.030694 -0.034195 -0.037369 -0.040184 -0.042613 -0.044634 -0.046226 -0.047374 -0.048067 -0.048299 -0.048067 -0.047374 -0.046226 -0.044634 -0.042613 -0.040184 -0.037369 -0.034195 -0.030694 -0.026898 -0.022845 -0.018573 -0.014124 -0.009540 -0.004866 -0.000146 0.004574 0.009249 0.013832 0.018282 0.022554 0.026607 0.030403 0.033904 0.037078 0.039893 0.042322 0.044343 0.045935 0.047083 0.047776 0.048008 0.047776 +0.143159 0.141086 0.137652 0.132892 0.126850 0.119585 0.111167 0.101678 0.091207 0.079857 0.067736 0.054962 0.041657 0.027950 0.013972 -0.000142 -0.014256 -0.028234 -0.041941 -0.055246 -0.068021 -0.080141 -0.091491 -0.101962 -0.111451 -0.119869 -0.127134 -0.133176 -0.137936 -0.141370 -0.143444 -0.144137 -0.143444 -0.141370 -0.137937 -0.133176 -0.127134 -0.119869 -0.111451 -0.101962 -0.091491 -0.080141 -0.068021 -0.055246 -0.041941 -0.028234 -0.014256 -0.000142 0.013972 0.027950 0.041657 0.054962 0.067736 0.079857 0.091207 0.101677 0.111167 0.119585 0.126850 0.132892 0.137652 0.141086 0.143159 0.143853 0.143159 +0.237168 0.233734 0.228049 0.220165 0.210160 0.198130 0.184191 0.168476 0.151137 0.132342 0.112271 0.091117 0.069085 0.046386 0.023239 -0.000133 -0.023505 -0.046652 -0.069351 -0.091383 -0.112537 -0.132608 -0.151403 -0.168742 -0.184456 -0.198396 -0.210426 -0.220431 -0.228315 -0.234001 -0.237434 -0.238582 -0.237434 -0.234001 -0.228315 -0.220431 -0.210426 -0.198396 -0.184457 -0.168742 -0.151403 -0.132608 -0.112537 -0.091383 -0.069351 -0.046652 -0.023505 -0.000133 0.023239 0.046386 0.069085 0.091117 0.112271 0.132342 0.151137 0.168476 0.184190 0.198130 0.210160 0.220165 0.228048 0.233734 0.237168 0.238316 0.237168 +0.328896 0.324136 0.316253 0.305322 0.291451 0.274771 0.255444 0.233656 0.209616 0.183557 0.155728 0.126399 0.095851 0.064379 0.032286 -0.000119 -0.032524 -0.064617 -0.096089 -0.126636 -0.155965 -0.183794 -0.209853 -0.233893 -0.255681 -0.275008 -0.291688 -0.305560 -0.316490 -0.324374 -0.329134 -0.330726 -0.329134 -0.324374 -0.316490 -0.305560 -0.291688 -0.275009 -0.255681 -0.233893 -0.209853 -0.183794 -0.155966 -0.126636 -0.096089 -0.064617 -0.032524 -0.000119 0.032286 0.064379 0.095851 0.126399 0.155728 0.183556 0.209616 0.233655 0.255444 0.274771 0.291450 0.305322 0.316252 0.324136 0.328896 0.330488 0.328896 +0.417461 0.411419 0.401414 0.387543 0.369938 0.348769 0.324241 0.296589 0.266079 0.233007 0.197689 0.160467 0.121698 0.081756 0.041026 -0.000100 -0.041226 -0.081956 -0.121898 -0.160666 -0.197889 -0.233206 -0.266279 -0.296788 -0.324440 -0.348969 -0.370138 -0.387743 -0.401615 -0.411620 -0.417661 -0.419682 -0.417662 -0.411620 -0.401615 -0.387743 -0.370138 -0.348969 -0.324441 -0.296788 -0.266279 -0.233206 -0.197889 -0.160666 -0.121898 -0.081956 -0.041226 -0.000100 0.041026 0.081756 0.121698 0.160466 0.197689 0.233006 0.266079 0.296588 0.324240 0.348769 0.369937 0.387542 0.401414 0.411419 0.417461 0.419481 0.417461 +0.502008 0.494743 0.482713 0.466033 0.444865 0.419411 0.389918 0.356668 0.319983 0.280216 0.237749 0.192992 0.146375 0.098348 0.049374 -0.000077 -0.049528 -0.098503 -0.146530 -0.193146 -0.237903 -0.280370 -0.320138 -0.356823 -0.390072 -0.419566 -0.445020 -0.466188 -0.482868 -0.494899 -0.502164 -0.504593 -0.502164 -0.494899 -0.482869 -0.466189 -0.445020 -0.419566 -0.390072 -0.356823 -0.320138 -0.280370 -0.237903 -0.193146 -0.146530 -0.098503 -0.049528 -0.000077 0.049373 0.098348 0.146375 0.192991 0.237749 0.280215 0.319983 0.356668 0.389917 0.419411 0.444864 0.466033 0.482713 0.494743 0.502008 0.504437 0.502008 +0.581723 0.573305 0.559366 0.540039 0.515510 0.486017 0.451842 0.413315 0.370808 0.324729 0.275522 0.223661 0.169645 0.113996 0.057248 -0.000052 -0.057351 -0.114099 -0.169749 -0.223764 -0.275625 -0.324832 -0.370911 -0.413418 -0.451945 -0.486120 -0.515614 -0.540142 -0.559470 -0.573409 -0.581827 -0.584642 -0.581827 -0.573410 -0.559470 -0.540143 -0.515614 -0.486120 -0.451946 -0.413419 -0.370911 -0.324832 -0.275625 -0.223764 -0.169749 -0.114099 -0.057351 -0.000052 0.057248 0.113996 0.169645 0.223660 0.275521 0.324728 0.370807 0.413315 0.451841 0.486016 0.515510 0.540038 0.559365 0.573305 0.581723 0.584538 0.581723 +0.655837 0.646347 0.630633 0.608844 0.581193 0.547943 0.509417 0.465984 0.418063 0.366116 0.310642 0.252177 0.191283 0.128547 0.064572 -0.000024 -0.064621 -0.128595 -0.191331 -0.252225 -0.310690 -0.366163 -0.418111 -0.466032 -0.509465 -0.547991 -0.581241 -0.608893 -0.630682 -0.646397 -0.655887 -0.659060 -0.655887 -0.646397 -0.630682 -0.608894 -0.581241 -0.547992 -0.509465 -0.466032 -0.418111 -0.366164 -0.310690 -0.252225 -0.191331 -0.128595 -0.064621 -0.000024 0.064572 0.128547 0.191283 0.252177 0.310642 0.366115 0.418062 0.465983 0.509416 0.547943 0.581192 0.608844 0.630632 0.646347 0.655837 0.659010 0.655837 +0.723636 0.713166 0.695827 0.671788 0.641279 0.604593 0.562086 0.514165 0.461293 0.403978 0.342772 0.278266 0.211080 0.141861 0.071276 0.000004 -0.071267 -0.141852 -0.211071 -0.278257 -0.342763 -0.403968 -0.461283 -0.514156 -0.562077 -0.604585 -0.641270 -0.671780 -0.695819 -0.713158 -0.723629 -0.727130 -0.723629 -0.713158 -0.695820 -0.671780 -0.641270 -0.604585 -0.562077 -0.514156 -0.461284 -0.403969 -0.342763 -0.278257 -0.211071 -0.141852 -0.071267 0.000004 0.071276 0.141861 0.211079 0.278265 0.342772 0.403977 0.461292 0.514164 0.562085 0.604593 0.641278 0.671787 0.695827 0.713165 0.723636 0.727137 0.723636 +0.784466 0.773116 0.754321 0.728261 0.695189 0.655421 0.609342 0.557395 0.500080 0.437949 0.371601 0.301675 0.228843 0.153808 0.077293 0.000033 -0.077227 -0.153743 -0.228777 -0.301609 -0.371535 -0.437883 -0.500014 -0.557329 -0.609276 -0.655356 -0.695123 -0.728196 -0.754256 -0.773052 -0.784402 -0.788198 -0.784402 -0.773052 -0.754257 -0.728197 -0.695124 -0.655356 -0.609277 -0.557329 -0.500014 -0.437883 -0.371535 -0.301609 -0.228777 -0.153743 -0.077227 0.000033 0.077292 0.153808 0.228843 0.301674 0.371600 0.437948 0.500079 0.557394 0.609341 0.655420 0.695188 0.728261 0.754320 0.773116 0.784466 0.788261 0.784466 +0.837740 0.825620 0.805549 0.777721 0.742403 0.699936 0.650729 0.595256 0.534050 0.467702 0.396850 0.322177 0.244402 0.164274 0.082564 0.000060 -0.082444 -0.164154 -0.244282 -0.322057 -0.396730 -0.467582 -0.533930 -0.595135 -0.650609 -0.699816 -0.742283 -0.777601 -0.805430 -0.825502 -0.837622 -0.841676 -0.837622 -0.825502 -0.805431 -0.777602 -0.742284 -0.699817 -0.650609 -0.595136 -0.533930 -0.467582 -0.396730 -0.322057 -0.244282 -0.164154 -0.082444 0.000060 0.082564 0.164274 0.244402 0.322177 0.396850 0.467701 0.534049 0.595255 0.650728 0.699935 0.742402 0.777720 0.805548 0.825620 0.837740 0.841793 0.837740 +0.882945 0.870171 0.849018 0.819688 0.782466 0.737708 0.685847 0.627382 0.562875 0.492949 0.418276 0.339575 0.257605 0.173155 0.087039 0.000085 -0.086869 -0.172986 -0.257436 -0.339405 -0.418106 -0.492779 -0.562706 -0.627212 -0.685678 -0.737539 -0.782297 -0.819520 -0.848849 -0.870003 -0.882777 -0.887049 -0.882778 -0.870003 -0.848850 -0.819520 -0.782297 -0.737540 -0.685678 -0.627213 -0.562706 -0.492779 -0.418106 -0.339406 -0.257436 -0.172986 -0.086869 0.000085 0.087039 0.173155 0.257605 0.339575 0.418275 0.492948 0.562875 0.627381 0.685847 0.737708 0.782465 0.819688 0.849017 0.870171 0.882945 0.887217 0.882945 +0.919645 0.906340 0.884307 0.853760 0.814991 0.768374 0.714358 0.653464 0.586278 0.513446 0.435671 0.353701 0.268325 0.180367 0.090673 0.000106 -0.090460 -0.180154 -0.268113 -0.353488 -0.435458 -0.513233 -0.586065 -0.653251 -0.714146 -0.768161 -0.814778 -0.853548 -0.884096 -0.906128 -0.919434 -0.923883 -0.919434 -0.906129 -0.884096 -0.853548 -0.814779 -0.768162 -0.714146 -0.653252 -0.586065 -0.513233 -0.435458 -0.353488 -0.268113 -0.180154 -0.090460 0.000106 0.090673 0.180367 0.268325 0.353700 0.435670 0.513445 0.586277 0.653463 0.714358 0.768373 0.814990 0.853759 0.884307 0.906339 0.919644 0.924094 0.919645 +0.947484 0.933777 0.911078 0.879606 0.839664 0.791637 0.735987 0.673250 0.604031 0.528995 0.448867 0.364417 0.276458 0.185839 0.093431 0.000124 -0.093183 -0.185591 -0.276210 -0.364169 -0.448619 -0.528747 -0.603783 -0.673002 -0.735739 -0.791389 -0.839416 -0.879359 -0.910831 -0.933530 -0.947238 -0.951822 -0.947238 -0.933531 -0.910831 -0.879359 -0.839417 -0.791390 -0.735740 -0.673003 -0.603783 -0.528748 -0.448619 -0.364169 -0.276211 -0.185591 -0.093183 0.000124 0.093430 0.185838 0.276458 0.364416 0.448866 0.528995 0.604030 0.673249 0.735986 0.791636 0.839663 0.879605 0.911077 0.933776 0.947484 0.952068 0.947484 +0.966195 0.952217 0.929070 0.896977 0.856247 0.807272 0.750523 0.686548 0.615963 0.539447 0.457736 0.371620 0.281925 0.189517 0.095285 0.000137 -0.095012 -0.189244 -0.281652 -0.371346 -0.457463 -0.539173 -0.615689 -0.686275 -0.750250 -0.806999 -0.855974 -0.896704 -0.928798 -0.951945 -0.965923 -0.970598 -0.965924 -0.951946 -0.928798 -0.896705 -0.855975 -0.806999 -0.750251 -0.686276 -0.615690 -0.539174 -0.457464 -0.371347 -0.281652 -0.189244 -0.095012 0.000136 0.095285 0.189517 0.281925 0.371619 0.457736 0.539446 0.615962 0.686547 0.750522 0.807271 0.856246 0.896976 0.929070 0.952217 0.966195 0.970870 0.966195 +0.975598 0.961484 0.938111 0.905706 0.864580 0.815128 0.757828 0.693231 0.621959 0.544699 0.462194 0.375239 0.284673 0.191366 0.096218 0.000144 -0.095930 -0.191078 -0.284385 -0.374951 -0.461906 -0.544410 -0.621671 -0.692943 -0.757540 -0.814840 -0.864292 -0.905418 -0.937824 -0.961196 -0.975310 -0.980030 -0.975310 -0.961197 -0.937824 -0.905419 -0.864292 -0.814841 -0.757541 -0.692943 -0.621671 -0.544411 -0.461906 -0.374952 -0.284385 -0.191078 -0.095930 0.000144 0.096217 0.191366 0.284672 0.375239 0.462193 0.544698 0.621958 0.693230 0.757827 0.815127 0.864579 0.905705 0.938111 0.961483 0.975597 0.980317 0.975598 +0.975600 0.961486 0.938114 0.905708 0.864582 0.815130 0.757830 0.693233 0.621961 0.544701 0.462196 0.375241 0.284675 0.191368 0.096219 0.000146 -0.095928 -0.191076 -0.284383 -0.374950 -0.461904 -0.544409 -0.621669 -0.692941 -0.757538 -0.814838 -0.864290 -0.905416 -0.937822 -0.961194 -0.975308 -0.980028 -0.975309 -0.961195 -0.937823 -0.905417 -0.864291 -0.814839 -0.757539 -0.692942 -0.621670 -0.544409 -0.461904 -0.374950 -0.284383 -0.191076 -0.095928 0.000146 0.096219 0.191368 0.284674 0.375241 0.462195 0.544700 0.621960 0.693232 0.757829 0.815130 0.864581 0.905708 0.938113 0.961486 0.975600 0.980320 0.975600 +0.966202 0.952224 0.929077 0.896984 0.856253 0.807278 0.750530 0.686555 0.615969 0.539453 0.457742 0.371625 0.281931 0.189523 0.095291 0.000142 -0.095006 -0.189238 -0.281646 -0.371341 -0.457458 -0.539168 -0.615684 -0.686270 -0.750245 -0.806993 -0.855969 -0.896699 -0.928792 -0.951940 -0.965918 -0.970592 -0.965918 -0.951940 -0.928793 -0.896700 -0.855969 -0.806994 -0.750246 -0.686271 -0.615685 -0.539169 -0.457458 -0.371341 -0.281647 -0.189239 -0.095006 0.000142 0.095290 0.189522 0.281931 0.371625 0.457742 0.539452 0.615968 0.686554 0.750529 0.807277 0.856253 0.896983 0.929077 0.952224 0.966202 0.970877 0.966202 +0.947496 0.933788 0.911089 0.879617 0.839675 0.791647 0.735997 0.673260 0.604041 0.529005 0.448876 0.364426 0.276468 0.185848 0.093440 0.000133 -0.093174 -0.185582 -0.276202 -0.364160 -0.448610 -0.528739 -0.603774 -0.672993 -0.735730 -0.791380 -0.839408 -0.879350 -0.910822 -0.933521 -0.947229 -0.951813 -0.947229 -0.933522 -0.910823 -0.879351 -0.839408 -0.791381 -0.735731 -0.672994 -0.603775 -0.528740 -0.448611 -0.364161 -0.276202 -0.185582 -0.093174 0.000133 0.093440 0.185848 0.276468 0.364426 0.448876 0.529005 0.604040 0.673259 0.735996 0.791646 0.839674 0.879616 0.911089 0.933788 0.947495 0.952079 0.947496 +0.919660 0.906355 0.884322 0.853774 0.815005 0.768388 0.714372 0.653478 0.586291 0.513459 0.435684 0.353714 0.268338 0.180380 0.090685 0.000119 -0.090448 -0.180142 -0.268101 -0.353476 -0.435446 -0.513221 -0.586053 -0.653240 -0.714134 -0.768150 -0.814767 -0.853536 -0.884084 -0.906116 -0.919421 -0.923871 -0.919422 -0.906117 -0.884084 -0.853536 -0.814767 -0.768151 -0.714135 -0.653240 -0.586054 -0.513222 -0.435447 -0.353476 -0.268101 -0.180143 -0.090448 0.000119 0.090685 0.180380 0.268338 0.353713 0.435683 0.513459 0.586291 0.653477 0.714372 0.768387 0.815005 0.853774 0.884322 0.906355 0.919660 0.924109 0.919660 +0.882964 0.870190 0.849036 0.819706 0.782483 0.737726 0.685864 0.627399 0.562892 0.492965 0.418292 0.339591 0.257621 0.173171 0.087054 0.000100 -0.086854 -0.172971 -0.257421 -0.339391 -0.418092 -0.492765 -0.562691 -0.627198 -0.685664 -0.737525 -0.782282 -0.819505 -0.848834 -0.869988 -0.882763 -0.887034 -0.882763 -0.869989 -0.848835 -0.819506 -0.782283 -0.737526 -0.685664 -0.627199 -0.562692 -0.492765 -0.418092 -0.339392 -0.257421 -0.172971 -0.086854 0.000100 0.087054 0.173171 0.257621 0.339591 0.418291 0.492965 0.562891 0.627398 0.685864 0.737725 0.782483 0.819706 0.849035 0.870189 0.882964 0.887236 0.882964 +0.837761 0.825641 0.805569 0.777741 0.742423 0.699955 0.650748 0.595274 0.534068 0.467720 0.396868 0.322195 0.244420 0.164291 0.082582 0.000077 -0.082427 -0.164137 -0.244265 -0.322040 -0.396713 -0.467565 -0.533913 -0.595119 -0.650593 -0.699800 -0.742267 -0.777585 -0.805413 -0.825484 -0.837605 -0.841658 -0.837605 -0.825485 -0.805414 -0.777585 -0.742268 -0.699801 -0.650593 -0.595120 -0.533914 -0.467566 -0.396714 -0.322041 -0.244266 -0.164137 -0.082427 0.000077 0.082582 0.164291 0.244420 0.322195 0.396868 0.467720 0.534068 0.595274 0.650747 0.699955 0.742422 0.777740 0.805569 0.825640 0.837761 0.841814 0.837761 +0.784488 0.773138 0.754343 0.728283 0.695210 0.655442 0.609362 0.557415 0.500100 0.437969 0.371620 0.301694 0.228862 0.153827 0.077312 0.000052 -0.077208 -0.153724 -0.228759 -0.301590 -0.371517 -0.437865 -0.499996 -0.557311 -0.609258 -0.655338 -0.695105 -0.728178 -0.754238 -0.773033 -0.784383 -0.788179 -0.784383 -0.773033 -0.754238 -0.728179 -0.695106 -0.655338 -0.609259 -0.557312 -0.499997 -0.437866 -0.371518 -0.301591 -0.228759 -0.153724 -0.077208 0.000052 0.077312 0.153827 0.228862 0.301694 0.371620 0.437968 0.500099 0.557414 0.609362 0.655441 0.695209 0.728282 0.754342 0.773138 0.784488 0.788284 0.784488 +0.723659 0.713188 0.695850 0.671810 0.641300 0.604615 0.562107 0.514186 0.461313 0.403998 0.342792 0.278286 0.211100 0.141881 0.071296 0.000024 -0.071247 -0.141832 -0.211051 -0.278238 -0.342744 -0.403949 -0.461264 -0.514137 -0.562058 -0.604565 -0.641251 -0.671760 -0.695800 -0.713138 -0.723609 -0.727110 -0.723609 -0.713139 -0.695800 -0.671761 -0.641251 -0.604566 -0.562058 -0.514138 -0.461265 -0.403950 -0.342745 -0.278238 -0.211052 -0.141833 -0.071247 0.000024 0.071296 0.141881 0.211100 0.278286 0.342792 0.403998 0.461313 0.514185 0.562106 0.604614 0.641300 0.671809 0.695849 0.713188 0.723659 0.727160 0.723659 +0.655859 0.646369 0.630655 0.608866 0.581214 0.547964 0.509437 0.466004 0.418083 0.366136 0.310662 0.252197 0.191303 0.128567 0.064592 -0.000004 -0.064601 -0.128575 -0.191312 -0.252206 -0.310671 -0.366144 -0.418091 -0.466012 -0.509445 -0.547972 -0.581221 -0.608873 -0.630662 -0.646376 -0.655866 -0.659040 -0.655866 -0.646377 -0.630662 -0.608874 -0.581222 -0.547973 -0.509446 -0.466013 -0.418092 -0.366145 -0.310671 -0.252206 -0.191312 -0.128576 -0.064601 -0.000004 0.064592 0.128567 0.191303 0.252197 0.310662 0.366135 0.418083 0.466004 0.509437 0.547964 0.581213 0.608866 0.630654 0.646369 0.655859 0.659033 0.655859 +0.581744 0.573326 0.559386 0.540059 0.515530 0.486036 0.451862 0.413335 0.370827 0.324748 0.275541 0.223680 0.169664 0.114015 0.057267 -0.000033 -0.057332 -0.114080 -0.169730 -0.223745 -0.275606 -0.324813 -0.370892 -0.413400 -0.451926 -0.486101 -0.515594 -0.540123 -0.559450 -0.573389 -0.581807 -0.584622 -0.581807 -0.573390 -0.559450 -0.540123 -0.515595 -0.486102 -0.451927 -0.413400 -0.370893 -0.324813 -0.275606 -0.223745 -0.169730 -0.114080 -0.057332 -0.000033 0.057267 0.114015 0.169664 0.223680 0.275540 0.324747 0.370827 0.413334 0.451861 0.486036 0.515530 0.540058 0.559386 0.573325 0.581743 0.584558 0.581744 +0.502026 0.494762 0.482731 0.466052 0.444883 0.419429 0.389935 0.356686 0.320000 0.280233 0.237766 0.193009 0.146393 0.098366 0.049391 -0.000060 -0.049511 -0.098485 -0.146512 -0.193129 -0.237886 -0.280352 -0.320120 -0.356805 -0.390054 -0.419548 -0.445001 -0.466170 -0.482850 -0.494880 -0.502144 -0.504574 -0.502145 -0.494880 -0.482850 -0.466170 -0.445002 -0.419548 -0.390055 -0.356805 -0.320120 -0.280353 -0.237886 -0.193129 -0.146512 -0.098486 -0.049511 -0.000060 0.049391 0.098366 0.146393 0.193009 0.237766 0.280233 0.320000 0.356685 0.389935 0.419429 0.444882 0.466051 0.482731 0.494761 0.502026 0.504456 0.502026 +0.417476 0.411435 0.401430 0.387558 0.369953 0.348784 0.324256 0.296603 0.266094 0.233021 0.197704 0.160482 0.121713 0.081771 0.041041 -0.000085 -0.041210 -0.081940 -0.121882 -0.160651 -0.197873 -0.233190 -0.266263 -0.296772 -0.324424 -0.348952 -0.370121 -0.387726 -0.401598 -0.411602 -0.417644 -0.419665 -0.417644 -0.411603 -0.401598 -0.387726 -0.370121 -0.348953 -0.324425 -0.296773 -0.266263 -0.233191 -0.197873 -0.160651 -0.121882 -0.081940 -0.041211 -0.000085 0.041041 0.081771 0.121713 0.160481 0.197704 0.233021 0.266094 0.296603 0.324255 0.348784 0.369952 0.387558 0.401429 0.411434 0.417476 0.419497 0.417476 +0.328908 0.324148 0.316264 0.305334 0.291462 0.274783 0.255456 0.233667 0.209628 0.183568 0.155740 0.126411 0.095863 0.064392 0.032299 -0.000106 -0.032511 -0.064604 -0.096076 -0.126623 -0.155952 -0.183780 -0.209840 -0.233879 -0.255667 -0.274994 -0.291674 -0.305546 -0.316476 -0.324359 -0.329120 -0.330711 -0.329120 -0.324359 -0.316476 -0.305546 -0.291674 -0.274995 -0.255668 -0.233880 -0.209840 -0.183781 -0.155952 -0.126623 -0.096076 -0.064604 -0.032511 -0.000106 0.032299 0.064392 0.095863 0.126411 0.155740 0.183568 0.209628 0.233667 0.255455 0.274782 0.291462 0.305334 0.316264 0.324148 0.328908 0.330500 0.328908 +0.237176 0.233743 0.228057 0.220173 0.210168 0.198138 0.184199 0.168484 0.151146 0.132350 0.112279 0.091126 0.069094 0.046395 0.023248 -0.000124 -0.023495 -0.046642 -0.069341 -0.091373 -0.112526 -0.132597 -0.151393 -0.168731 -0.184445 -0.198385 -0.210415 -0.220420 -0.228303 -0.233989 -0.237422 -0.238571 -0.237422 -0.233989 -0.228303 -0.220420 -0.210415 -0.198385 -0.184446 -0.168731 -0.151393 -0.132598 -0.112527 -0.091373 -0.069341 -0.046642 -0.023495 -0.000124 0.023248 0.046395 0.069094 0.091126 0.112279 0.132350 0.151146 0.168484 0.184199 0.198138 0.210168 0.220173 0.228057 0.233742 0.237176 0.238324 0.237176 +0.143163 0.141090 0.137656 0.132896 0.126854 0.119589 0.111172 0.101682 0.091212 0.079862 0.067741 0.054967 0.041662 0.027955 0.013977 -0.000136 -0.014250 -0.028228 -0.041935 -0.055240 -0.068014 -0.080134 -0.091484 -0.101954 -0.111444 -0.119861 -0.127126 -0.133168 -0.137928 -0.141362 -0.143435 -0.144129 -0.143435 -0.141362 -0.137928 -0.133168 -0.127126 -0.119862 -0.111444 -0.101954 -0.091484 -0.080134 -0.068014 -0.055240 -0.041935 -0.028228 -0.014250 -0.000136 0.013977 0.027955 0.041662 0.054967 0.067741 0.079862 0.091211 0.101682 0.111171 0.119589 0.126854 0.132896 0.137656 0.141090 0.143163 0.143857 0.143163 +0.047776 0.047082 0.045934 0.044342 0.042322 0.039893 0.037078 0.033904 0.030403 0.026608 0.022555 0.018283 0.013834 0.009250 0.004576 -0.000144 -0.004863 -0.009538 -0.014121 -0.018570 -0.022842 -0.026895 -0.030691 -0.034192 -0.037365 -0.040180 -0.042609 -0.044630 -0.046221 -0.047370 -0.048063 -0.048295 -0.048063 -0.047370 -0.046222 -0.044630 -0.042609 -0.040180 -0.037365 -0.034192 -0.030691 -0.026895 -0.022842 -0.018570 -0.014121 -0.009538 -0.004863 -0.000144 0.004576 0.009250 0.013834 0.018283 0.022555 0.026608 0.030403 0.033904 0.037078 0.039893 0.042322 0.044342 0.045934 0.047082 0.047776 0.048008 0.047776 +-0.048067 -0.047374 -0.046226 -0.044634 -0.042613 -0.040184 -0.037369 -0.034195 -0.030694 -0.026898 -0.022845 -0.018573 -0.014124 -0.009540 -0.004866 -0.000146 0.004574 0.009249 0.013832 0.018282 0.022554 0.026607 0.030403 0.033904 0.037078 0.039893 0.042322 0.044343 0.045935 0.047083 0.047776 0.048008 0.047776 0.047083 0.045935 0.044343 0.042322 0.039893 0.037078 0.033904 0.030403 0.026607 0.022554 0.018282 0.013832 0.009249 0.004574 -0.000146 -0.004866 -0.009540 -0.014124 -0.018573 -0.022845 -0.026898 -0.030694 -0.034195 -0.037369 -0.040184 -0.042613 -0.044634 -0.046226 -0.047374 -0.048067 -0.048299 -0.048067 diff --git a/examples/next/swm/ref/64x64/v.step0.init.bin b/examples/next/swm/ref/64x64/v.step0.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..10675bcbfd63f64363a70ab31fa1c404427a091c GIT binary patch literal 33800 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 Ig7^Rb0E?WE6aWAK literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/v.step1.init.bin b/examples/next/swm/ref/64x64/v.step1.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..b97b1179b2eb955f0f8036865654b72be8a435fe GIT binary patch literal 33800 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 Ig7^Rb0E?WE6aWAK literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/v.step1.t200.bin b/examples/next/swm/ref/64x64/v.step1.t200.bin new file mode 100644 index 0000000000000000000000000000000000000000..59de6a9ebdfc9045c108b99aa976d1da0538ddd6 GIT binary patch literal 33800 zcmb`vc~npB7ypei6q2b7AxZ;DX;7gPk-3baL1i9_Oqq&sCqpPoG8TmlsnDR|G@z1Z zX{LFOBvXc-%RcY^xLfOfzQ5$p|f5bFlgj<9Db(t#kPqP{q?YG#i9>fYu}oo z1L{9;#;PH)y(WL;^b@+vi?QR;CEsTaWaq!-l+;$TzuSFy!i#V0I;o5s6;A9v&o7;x zWWnxRb+pPxj*YYU&PnN>Y+O$CtVa%;$H>>yGRxS!9GCoAC(h=X-eA{PmCal0PQ=I! zERG&p;c~Vtu7zO|uO_fK7g_8${DH;oHExX4jMI1djUz1NbXF$tmtJ1;v9V6)m7ggD zXG!Gp0Uwi>9FHvIuQr-a9N)i`zrF8P`eLwKJZRG`v+&%ec-2!TU(u|{gF33 zb?WHfqh`VK6B+Ehch{qV0qpNI%NOtD*>y*?t?wAK`^YC>E}6{k`{PW=s@`mz(Bp^a z{8FsphdvV7@RrRZbby6Q3!B%}#OynYY@T9AUdlSNd8giAaOpLRW2;MF5i=Io{*nzl zG+3OQVit=|WpSrt{rg2v^y{H=m)kkJsATfM1WxDrvQK3n(zqGQ9uYQiZ@7o{J@Uty z7INa1Hzj)Bf6paU^mMCTSKAqe||ZZldzE>}qb)8udH!F}2+Ktwwz%w$^jb zPp;3%&1>NFyz^duZExi2;wvmKl{Rs`|KtvJ-}{04_%kwObK(bXzwN9cTi7wJoAX=` zcHVSC!@SGv@9IR9R{vnvy2-!Pr&Y+Q|Xdq+sI zd3ZdEw{K+g@?D;zE5YVj*yZ3zbvAG1_0h!}SR5N9Pr28zxU^N{PflfV>L(w}=)>Z+ z`{Vf9TJ0{Mp;=pQG$?`B%vjdr{l_%^Xp!8u?6^1l>=F5EPns6;wI9x`&(aWyp&sX$XF({^%&*b;!HgBotheuqQ@gT2(7g_hyBeA`a zZ+B>EuqbWfCnx$oHs1SzSN0Allu!J?n_O|<^Y=LP`P35&+4;r8?sqq5e>d^wYLR$$ zU5vwR`9O9biQl)3n%I3UHz*vCWaG$8_O;Mv<4QL>Rt;hEXx6Nc`?a#14~Vx9oWthX zZP1aC$Jo5>YIhr@u{eBonyk!YaTyz495aK(Il>{qz>LM+vHttyRMxqA-Qo0#zD#<0 zGoI_=_d3l(GmX=4ntoA-d&AwD{e2J@TEMM1;GWi4^^V)KM|Ny@bs3k^?Oelh)k@B< zsPdl1%xZ3lwBxVwa<$yfqMKQMFYCCA2bSla8rQ%XaAVi)pWnzuiQVoRpwPsvciXG| zDYA)+n%VTCMdSlFbo&m~&+Mpo;``PXc78^*^7q^9?>t}V^>Sp_jdIBAbC%s_kbAUa z0K2bB&zi3j**NxcOVTE@aTUx|`N=QC-HX{+?1~ty;+^OAh#^HnW=73gG$Sa<#m= z!?XMUysYD;Yr9q1jBDWArzlS~n%~Gv^fB_;tkA?OUsibgD6)wkrt-G=p~we*syTo1 z?@_gPmVXdCAG2;{;70a$7P=n3hU~gTHU03_>^`Bf@5PU>`k-eXf1hxYoAjD{ci(iNyju>ppikA~@9Fv6=U;W@ z{%=aSrM+*?UpuFaOE@?8c>ci(F5Jd1Y3AW7F0uE4(IE?KxLs1`76q2qa%m|KBaQUx zxr61dVtR`kxYZu(t#afWxw!CSA9_7*

DXyF0cuaxtsQ?f)Kq#Y@MFv-6vlK3J2> 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 literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/v.step2.init.bin b/examples/next/swm/ref/64x64/v.step2.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..59de6a9ebdfc9045c108b99aa976d1da0538ddd6 GIT binary patch literal 33800 zcmb`vc~npB7ypei6q2b7AxZ;DX;7gPk-3baL1i9_Oqq&sCqpPoG8TmlsnDR|G@z1Z zX{LFOBvXc-%RcY^xLfOfzQ5$p|f5bFlgj<9Db(t#kPqP{q?YG#i9>fYu}oo z1L{9;#;PH)y(WL;^b@+vi?QR;CEsTaWaq!-l+;$TzuSFy!i#V0I;o5s6;A9v&o7;x zWWnxRb+pPxj*YYU&PnN>Y+O$CtVa%;$H>>yGRxS!9GCoAC(h=X-eA{PmCal0PQ=I! zERG&p;c~Vtu7zO|uO_fK7g_8${DH;oHExX4jMI1djUz1NbXF$tmtJ1;v9V6)m7ggD zXG!Gp0Uwi>9FHvIuQr-a9N)i`zrF8P`eLwKJZRG`v+&%ec-2!TU(u|{gF33 zb?WHfqh`VK6B+Ehch{qV0qpNI%NOtD*>y*?t?wAK`^YC>E}6{k`{PW=s@`mz(Bp^a z{8FsphdvV7@RrRZbby6Q3!B%}#OynYY@T9AUdlSNd8giAaOpLRW2;MF5i=Io{*nzl zG+3OQVit=|WpSrt{rg2v^y{H=m)kkJsATfM1WxDrvQK3n(zqGQ9uYQiZ@7o{J@Uty z7INa1Hzj)Bf6paU^mMCTSKAqe||ZZldzE>}qb)8udH!F}2+Ktwwz%w$^jb zPp;3%&1>NFyz^duZExi2;wvmKl{Rs`|KtvJ-}{04_%kwObK(bXzwN9cTi7wJoAX=` zcHVSC!@SGv@9IR9R{vnvy2-!Pr&Y+Q|Xdq+sI zd3ZdEw{K+g@?D;zE5YVj*yZ3zbvAG1_0h!}SR5N9Pr28zxU^N{PflfV>L(w}=)>Z+ z`{Vf9TJ0{Mp;=pQG$?`B%vjdr{l_%^Xp!8u?6^1l>=F5EPns6;wI9x`&(aWyp&sX$XF({^%&*b;!HgBotheuqQ@gT2(7g_hyBeA`a zZ+B>EuqbWfCnx$oHs1SzSN0Allu!J?n_O|<^Y=LP`P35&+4;r8?sqq5e>d^wYLR$$ zU5vwR`9O9biQl)3n%I3UHz*vCWaG$8_O;Mv<4QL>Rt;hEXx6Nc`?a#14~Vx9oWthX zZP1aC$Jo5>YIhr@u{eBonyk!YaTyz495aK(Il>{qz>LM+vHttyRMxqA-Qo0#zD#<0 zGoI_=_d3l(GmX=4ntoA-d&AwD{e2J@TEMM1;GWi4^^V)KM|Ny@bs3k^?Oelh)k@B< zsPdl1%xZ3lwBxVwa<$yfqMKQMFYCCA2bSla8rQ%XaAVi)pWnzuiQVoRpwPsvciXG| zDYA)+n%VTCMdSlFbo&m~&+Mpo;``PXc78^*^7q^9?>t}V^>Sp_jdIBAbC%s_kbAUa z0K2bB&zi3j**NxcOVTE@aTUx|`N=QC-HX{+?1~ty;+^OAh#^HnW=73gG$Sa<#m= z!?XMUysYD;Yr9q1jBDWArzlS~n%~Gv^fB_;tkA?OUsibgD6)wkrt-G=p~we*syTo1 z?@_gPmVXdCAG2;{;70a$7P=n3hU~gTHU03_>^`Bf@5PU>`k-eXf1hxYoAjD{ci(iNyju>ppikA~@9Fv6=U;W@ z{%=aSrM+*?UpuFaOE@?8c>ci(F5Jd1Y3AW7F0uE4(IE?KxLs1`76q2qa%m|KBaQUx zxr61dVtR`kxYZu(t#afWxw!CSA9_7*

DXyF0cuaxtsQ?f)Kq#Y@MFv-6vlK3J2> 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 literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/v.step3.init.bin b/examples/next/swm/ref/64x64/v.step3.init.bin new file mode 100644 index 0000000000000000000000000000000000000000..8cae524373cca9e1ccb16118e848b264080681c6 GIT binary patch literal 33800 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 literal 0 HcmV?d00001 diff --git a/examples/next/swm/ref/64x64/v.txt b/examples/next/swm/ref/64x64/v.txt new file mode 100644 index 0000000000..58f6b9166b --- /dev/null +++ b/examples/next/swm/ref/64x64/v.txt @@ -0,0 +1,65 @@ +0.047776 0.143159 0.237168 0.328896 0.417461 0.502008 0.581723 0.655837 0.723636 0.784466 0.837740 0.882945 0.919645 0.947484 0.966195 0.975598 0.975600 0.966202 0.947496 0.919660 0.882964 0.837761 0.784488 0.723659 0.655859 0.581744 0.502026 0.417476 0.328908 0.237176 0.143163 0.047776 -0.048067 -0.143444 -0.237434 -0.329134 -0.417662 -0.502164 -0.581827 -0.655887 -0.723629 -0.784402 -0.837622 -0.882778 -0.919434 -0.947238 -0.965924 -0.975310 -0.975309 -0.965918 -0.947229 -0.919422 -0.882763 -0.837605 -0.784383 -0.723609 -0.655866 -0.581807 -0.502145 -0.417644 -0.329120 -0.237422 -0.143435 -0.048063 0.047776 +0.047083 0.141086 0.233734 0.324136 0.411419 0.494743 0.573305 0.646347 0.713166 0.773116 0.825620 0.870171 0.906340 0.933777 0.952217 0.961484 0.961486 0.952224 0.933788 0.906355 0.870190 0.825641 0.773138 0.713188 0.646369 0.573326 0.494762 0.411435 0.324148 0.233743 0.141090 0.047082 -0.047374 -0.141370 -0.234001 -0.324374 -0.411620 -0.494899 -0.573410 -0.646397 -0.713158 -0.773052 -0.825502 -0.870003 -0.906129 -0.933531 -0.951946 -0.961197 -0.961195 -0.951940 -0.933522 -0.906117 -0.869989 -0.825485 -0.773033 -0.713139 -0.646377 -0.573390 -0.494880 -0.411603 -0.324359 -0.233989 -0.141362 -0.047370 0.047083 +0.045935 0.137652 0.228049 0.316253 0.401414 0.482713 0.559366 0.630633 0.695827 0.754321 0.805549 0.849018 0.884307 0.911078 0.929070 0.938111 0.938114 0.929077 0.911089 0.884322 0.849036 0.805569 0.754343 0.695850 0.630655 0.559386 0.482731 0.401430 0.316264 0.228057 0.137656 0.045934 -0.046226 -0.137937 -0.228315 -0.316490 -0.401615 -0.482869 -0.559470 -0.630682 -0.695820 -0.754257 -0.805431 -0.848850 -0.884096 -0.910831 -0.928798 -0.937824 -0.937823 -0.928793 -0.910823 -0.884084 -0.848835 -0.805414 -0.754238 -0.695800 -0.630662 -0.559450 -0.482850 -0.401598 -0.316476 -0.228303 -0.137928 -0.046222 0.045935 +0.044343 0.132892 0.220165 0.305322 0.387543 0.466033 0.540039 0.608844 0.671788 0.728261 0.777721 0.819688 0.853760 0.879606 0.896977 0.905706 0.905708 0.896984 0.879617 0.853774 0.819706 0.777741 0.728283 0.671810 0.608866 0.540059 0.466052 0.387558 0.305334 0.220173 0.132896 0.044342 -0.044634 -0.133176 -0.220431 -0.305560 -0.387743 -0.466189 -0.540143 -0.608894 -0.671780 -0.728197 -0.777602 -0.819520 -0.853548 -0.879359 -0.896705 -0.905419 -0.905417 -0.896700 -0.879351 -0.853536 -0.819506 -0.777585 -0.728179 -0.671761 -0.608874 -0.540123 -0.466170 -0.387726 -0.305546 -0.220420 -0.133168 -0.044630 0.044343 +0.042322 0.126850 0.210160 0.291451 0.369938 0.444865 0.515510 0.581193 0.641279 0.695189 0.742403 0.782466 0.814991 0.839664 0.856247 0.864580 0.864582 0.856253 0.839675 0.815005 0.782483 0.742423 0.695210 0.641300 0.581214 0.515530 0.444883 0.369953 0.291462 0.210168 0.126854 0.042322 -0.042613 -0.127134 -0.210426 -0.291688 -0.370138 -0.445020 -0.515614 -0.581241 -0.641270 -0.695124 -0.742284 -0.782297 -0.814779 -0.839417 -0.855975 -0.864292 -0.864291 -0.855969 -0.839408 -0.814767 -0.782283 -0.742268 -0.695106 -0.641251 -0.581222 -0.515595 -0.445002 -0.370121 -0.291674 -0.210415 -0.127126 -0.042609 0.042322 +0.039893 0.119585 0.198130 0.274771 0.348769 0.419411 0.486017 0.547943 0.604593 0.655421 0.699936 0.737708 0.768374 0.791637 0.807272 0.815128 0.815130 0.807278 0.791647 0.768388 0.737726 0.699955 0.655442 0.604615 0.547964 0.486036 0.419429 0.348784 0.274783 0.198138 0.119589 0.039893 -0.040184 -0.119869 -0.198396 -0.275009 -0.348969 -0.419566 -0.486120 -0.547992 -0.604585 -0.655356 -0.699817 -0.737540 -0.768162 -0.791390 -0.806999 -0.814841 -0.814839 -0.806994 -0.791381 -0.768151 -0.737526 -0.699801 -0.655338 -0.604566 -0.547973 -0.486102 -0.419548 -0.348953 -0.274995 -0.198385 -0.119862 -0.040180 0.039893 +0.037078 0.111167 0.184191 0.255444 0.324241 0.389918 0.451842 0.509417 0.562086 0.609342 0.650729 0.685847 0.714358 0.735987 0.750523 0.757828 0.757830 0.750530 0.735997 0.714372 0.685864 0.650748 0.609362 0.562107 0.509437 0.451862 0.389935 0.324256 0.255456 0.184199 0.111172 0.037078 -0.037369 -0.111451 -0.184457 -0.255681 -0.324441 -0.390072 -0.451946 -0.509465 -0.562077 -0.609277 -0.650609 -0.685678 -0.714146 -0.735740 -0.750251 -0.757541 -0.757539 -0.750246 -0.735731 -0.714135 -0.685664 -0.650593 -0.609259 -0.562058 -0.509446 -0.451927 -0.390055 -0.324425 -0.255668 -0.184446 -0.111444 -0.037365 0.037078 +0.033904 0.101678 0.168476 0.233656 0.296589 0.356668 0.413315 0.465984 0.514165 0.557395 0.595256 0.627382 0.653464 0.673250 0.686548 0.693231 0.693233 0.686555 0.673260 0.653478 0.627399 0.595274 0.557415 0.514186 0.466004 0.413335 0.356686 0.296603 0.233667 0.168484 0.101682 0.033904 -0.034195 -0.101962 -0.168742 -0.233893 -0.296788 -0.356823 -0.413419 -0.466032 -0.514156 -0.557329 -0.595136 -0.627213 -0.653252 -0.673003 -0.686276 -0.692943 -0.692942 -0.686271 -0.672994 -0.653240 -0.627199 -0.595120 -0.557312 -0.514138 -0.466013 -0.413400 -0.356805 -0.296773 -0.233880 -0.168731 -0.101954 -0.034192 0.033904 +0.030403 0.091207 0.151137 0.209616 0.266079 0.319983 0.370808 0.418063 0.461293 0.500080 0.534050 0.562875 0.586278 0.604031 0.615963 0.621959 0.621961 0.615969 0.604041 0.586291 0.562892 0.534068 0.500100 0.461313 0.418083 0.370827 0.320000 0.266094 0.209628 0.151146 0.091212 0.030403 -0.030694 -0.091491 -0.151403 -0.209853 -0.266279 -0.320138 -0.370911 -0.418111 -0.461284 -0.500014 -0.533930 -0.562706 -0.586065 -0.603783 -0.615690 -0.621671 -0.621670 -0.615685 -0.603775 -0.586054 -0.562692 -0.533914 -0.499997 -0.461265 -0.418092 -0.370893 -0.320120 -0.266263 -0.209840 -0.151393 -0.091484 -0.030691 0.030403 +0.026607 0.079857 0.132342 0.183557 0.233007 0.280216 0.324729 0.366116 0.403978 0.437949 0.467702 0.492949 0.513446 0.528995 0.539447 0.544699 0.544701 0.539453 0.529005 0.513459 0.492965 0.467720 0.437969 0.403998 0.366136 0.324748 0.280233 0.233021 0.183568 0.132350 0.079862 0.026608 -0.026898 -0.080141 -0.132608 -0.183794 -0.233206 -0.280370 -0.324832 -0.366164 -0.403969 -0.437883 -0.467582 -0.492779 -0.513233 -0.528748 -0.539174 -0.544411 -0.544409 -0.539169 -0.528740 -0.513222 -0.492765 -0.467566 -0.437866 -0.403950 -0.366145 -0.324813 -0.280353 -0.233191 -0.183781 -0.132598 -0.080134 -0.026895 0.026607 +0.022554 0.067736 0.112271 0.155728 0.197689 0.237749 0.275522 0.310642 0.342772 0.371601 0.396850 0.418276 0.435671 0.448867 0.457736 0.462194 0.462196 0.457742 0.448876 0.435684 0.418292 0.396868 0.371620 0.342792 0.310662 0.275541 0.237766 0.197704 0.155740 0.112279 0.067741 0.022555 -0.022845 -0.068021 -0.112537 -0.155966 -0.197889 -0.237903 -0.275625 -0.310690 -0.342763 -0.371535 -0.396730 -0.418106 -0.435458 -0.448619 -0.457464 -0.461906 -0.461904 -0.457458 -0.448611 -0.435447 -0.418092 -0.396714 -0.371518 -0.342745 -0.310671 -0.275606 -0.237886 -0.197873 -0.155952 -0.112527 -0.068014 -0.022842 0.022554 +0.018282 0.054962 0.091117 0.126399 0.160467 0.192992 0.223661 0.252177 0.278266 0.301675 0.322177 0.339575 0.353701 0.364417 0.371620 0.375239 0.375241 0.371625 0.364426 0.353714 0.339591 0.322195 0.301694 0.278286 0.252197 0.223680 0.193009 0.160482 0.126411 0.091126 0.054967 0.018283 -0.018573 -0.055246 -0.091383 -0.126636 -0.160666 -0.193146 -0.223764 -0.252225 -0.278257 -0.301609 -0.322057 -0.339406 -0.353488 -0.364169 -0.371347 -0.374952 -0.374950 -0.371341 -0.364161 -0.353476 -0.339392 -0.322041 -0.301591 -0.278238 -0.252206 -0.223745 -0.193129 -0.160651 -0.126623 -0.091373 -0.055240 -0.018570 0.018282 +0.013832 0.041657 0.069085 0.095851 0.121698 0.146375 0.169645 0.191283 0.211080 0.228843 0.244402 0.257605 0.268325 0.276458 0.281925 0.284673 0.284675 0.281931 0.276468 0.268338 0.257621 0.244420 0.228862 0.211100 0.191303 0.169664 0.146393 0.121713 0.095863 0.069094 0.041662 0.013834 -0.014124 -0.041941 -0.069351 -0.096089 -0.121898 -0.146530 -0.169749 -0.191331 -0.211071 -0.228777 -0.244282 -0.257436 -0.268113 -0.276211 -0.281652 -0.284385 -0.284383 -0.281647 -0.276202 -0.268101 -0.257421 -0.244266 -0.228759 -0.211052 -0.191312 -0.169730 -0.146512 -0.121882 -0.096076 -0.069341 -0.041935 -0.014121 0.013832 +0.009249 0.027950 0.046386 0.064379 0.081756 0.098348 0.113996 0.128547 0.141861 0.153808 0.164274 0.173155 0.180367 0.185839 0.189517 0.191366 0.191368 0.189523 0.185848 0.180380 0.173171 0.164291 0.153827 0.141881 0.128567 0.114015 0.098366 0.081771 0.064392 0.046395 0.027955 0.009250 -0.009540 -0.028234 -0.046652 -0.064617 -0.081956 -0.098503 -0.114099 -0.128595 -0.141852 -0.153743 -0.164154 -0.172986 -0.180154 -0.185591 -0.189244 -0.191078 -0.191076 -0.189239 -0.185582 -0.180143 -0.172971 -0.164137 -0.153724 -0.141833 -0.128576 -0.114080 -0.098486 -0.081940 -0.064604 -0.046642 -0.028228 -0.009538 0.009249 +0.004574 0.013972 0.023239 0.032286 0.041026 0.049374 0.057248 0.064572 0.071276 0.077293 0.082564 0.087039 0.090673 0.093431 0.095285 0.096218 0.096219 0.095291 0.093440 0.090685 0.087054 0.082582 0.077312 0.071296 0.064592 0.057267 0.049391 0.041041 0.032299 0.023248 0.013977 0.004576 -0.004866 -0.014256 -0.023505 -0.032524 -0.041226 -0.049528 -0.057351 -0.064621 -0.071267 -0.077227 -0.082444 -0.086869 -0.090460 -0.093183 -0.095012 -0.095930 -0.095928 -0.095006 -0.093174 -0.090448 -0.086854 -0.082427 -0.077208 -0.071247 -0.064601 -0.057332 -0.049511 -0.041211 -0.032511 -0.023495 -0.014250 -0.004863 0.004574 +-0.000146 -0.000142 -0.000133 -0.000119 -0.000100 -0.000077 -0.000052 -0.000024 0.000004 0.000033 0.000060 0.000085 0.000106 0.000124 0.000137 0.000144 0.000146 0.000142 0.000133 0.000119 0.000100 0.000077 0.000052 0.000024 -0.000004 -0.000033 -0.000060 -0.000085 -0.000106 -0.000124 -0.000136 -0.000144 -0.000146 -0.000142 -0.000133 -0.000119 -0.000100 -0.000077 -0.000052 -0.000024 0.000004 0.000033 0.000060 0.000085 0.000106 0.000124 0.000136 0.000144 0.000146 0.000142 0.000133 0.000119 0.000100 0.000077 0.000052 0.000024 -0.000004 -0.000033 -0.000060 -0.000085 -0.000106 -0.000124 -0.000136 -0.000144 -0.000146 +-0.004866 -0.014256 -0.023505 -0.032524 -0.041226 -0.049528 -0.057351 -0.064621 -0.071267 -0.077227 -0.082444 -0.086869 -0.090460 -0.093183 -0.095012 -0.095930 -0.095928 -0.095006 -0.093174 -0.090448 -0.086854 -0.082427 -0.077208 -0.071247 -0.064601 -0.057332 -0.049511 -0.041210 -0.032511 -0.023495 -0.014250 -0.004863 0.004574 0.013972 0.023239 0.032286 0.041026 0.049373 0.057248 0.064572 0.071276 0.077292 0.082564 0.087039 0.090673 0.093430 0.095285 0.096217 0.096219 0.095290 0.093440 0.090685 0.087054 0.082582 0.077312 0.071296 0.064592 0.057267 0.049391 0.041041 0.032299 0.023248 0.013977 0.004576 -0.004866 +-0.009540 -0.028234 -0.046652 -0.064617 -0.081956 -0.098503 -0.114099 -0.128595 -0.141852 -0.153743 -0.164154 -0.172986 -0.180154 -0.185591 -0.189244 -0.191078 -0.191076 -0.189238 -0.185582 -0.180142 -0.172971 -0.164137 -0.153724 -0.141832 -0.128575 -0.114080 -0.098485 -0.081940 -0.064604 -0.046642 -0.028228 -0.009538 0.009249 0.027950 0.046386 0.064379 0.081756 0.098348 0.113996 0.128547 0.141861 0.153808 0.164274 0.173155 0.180367 0.185838 0.189517 0.191366 0.191368 0.189522 0.185848 0.180380 0.173171 0.164291 0.153827 0.141881 0.128567 0.114015 0.098366 0.081771 0.064392 0.046395 0.027955 0.009250 -0.009540 +-0.014124 -0.041941 -0.069351 -0.096089 -0.121898 -0.146530 -0.169749 -0.191331 -0.211071 -0.228777 -0.244282 -0.257436 -0.268113 -0.276210 -0.281652 -0.284385 -0.284383 -0.281646 -0.276202 -0.268101 -0.257421 -0.244265 -0.228759 -0.211051 -0.191312 -0.169730 -0.146512 -0.121882 -0.096076 -0.069341 -0.041935 -0.014121 0.013832 0.041657 0.069085 0.095851 0.121698 0.146375 0.169645 0.191283 0.211079 0.228843 0.244402 0.257605 0.268325 0.276458 0.281925 0.284672 0.284674 0.281931 0.276468 0.268338 0.257621 0.244420 0.228862 0.211100 0.191303 0.169664 0.146393 0.121713 0.095863 0.069094 0.041662 0.013834 -0.014124 +-0.018573 -0.055246 -0.091383 -0.126636 -0.160666 -0.193146 -0.223764 -0.252225 -0.278257 -0.301609 -0.322057 -0.339405 -0.353488 -0.364169 -0.371346 -0.374951 -0.374950 -0.371341 -0.364160 -0.353476 -0.339391 -0.322040 -0.301590 -0.278238 -0.252206 -0.223745 -0.193129 -0.160651 -0.126623 -0.091373 -0.055240 -0.018570 0.018282 0.054962 0.091117 0.126399 0.160466 0.192991 0.223660 0.252177 0.278265 0.301674 0.322177 0.339575 0.353700 0.364416 0.371619 0.375239 0.375241 0.371625 0.364426 0.353713 0.339591 0.322195 0.301694 0.278286 0.252197 0.223680 0.193009 0.160481 0.126411 0.091126 0.054967 0.018283 -0.018573 +-0.022845 -0.068021 -0.112537 -0.155965 -0.197889 -0.237903 -0.275625 -0.310690 -0.342763 -0.371535 -0.396730 -0.418106 -0.435458 -0.448619 -0.457463 -0.461906 -0.461904 -0.457458 -0.448610 -0.435446 -0.418092 -0.396713 -0.371517 -0.342744 -0.310671 -0.275606 -0.237886 -0.197873 -0.155952 -0.112526 -0.068014 -0.022842 0.022554 0.067736 0.112271 0.155728 0.197689 0.237749 0.275521 0.310642 0.342772 0.371600 0.396850 0.418275 0.435670 0.448866 0.457736 0.462193 0.462195 0.457742 0.448876 0.435683 0.418291 0.396868 0.371620 0.342792 0.310662 0.275540 0.237766 0.197704 0.155740 0.112279 0.067741 0.022555 -0.022845 +-0.026898 -0.080141 -0.132608 -0.183794 -0.233206 -0.280370 -0.324832 -0.366163 -0.403968 -0.437883 -0.467582 -0.492779 -0.513233 -0.528747 -0.539173 -0.544410 -0.544409 -0.539168 -0.528739 -0.513221 -0.492765 -0.467565 -0.437865 -0.403949 -0.366144 -0.324813 -0.280352 -0.233190 -0.183780 -0.132597 -0.080134 -0.026895 0.026607 0.079857 0.132342 0.183556 0.233006 0.280215 0.324728 0.366115 0.403977 0.437948 0.467701 0.492948 0.513445 0.528995 0.539446 0.544698 0.544700 0.539452 0.529005 0.513459 0.492965 0.467720 0.437968 0.403998 0.366135 0.324747 0.280233 0.233021 0.183568 0.132350 0.079862 0.026608 -0.026898 +-0.030694 -0.091491 -0.151403 -0.209853 -0.266279 -0.320138 -0.370911 -0.418111 -0.461283 -0.500014 -0.533930 -0.562706 -0.586065 -0.603783 -0.615689 -0.621671 -0.621669 -0.615684 -0.603774 -0.586053 -0.562691 -0.533913 -0.499996 -0.461264 -0.418091 -0.370892 -0.320120 -0.266263 -0.209840 -0.151393 -0.091484 -0.030691 0.030403 0.091207 0.151137 0.209616 0.266079 0.319983 0.370807 0.418062 0.461292 0.500079 0.534049 0.562875 0.586277 0.604030 0.615962 0.621958 0.621960 0.615968 0.604040 0.586291 0.562891 0.534068 0.500099 0.461313 0.418083 0.370827 0.320000 0.266094 0.209628 0.151146 0.091211 0.030403 -0.030694 +-0.034195 -0.101962 -0.168742 -0.233893 -0.296788 -0.356823 -0.413418 -0.466032 -0.514156 -0.557329 -0.595135 -0.627212 -0.653251 -0.673002 -0.686275 -0.692943 -0.692941 -0.686270 -0.672993 -0.653240 -0.627198 -0.595119 -0.557311 -0.514137 -0.466012 -0.413400 -0.356805 -0.296772 -0.233879 -0.168731 -0.101954 -0.034192 0.033904 0.101677 0.168476 0.233655 0.296588 0.356668 0.413315 0.465983 0.514164 0.557394 0.595255 0.627381 0.653463 0.673249 0.686547 0.693230 0.693232 0.686554 0.673259 0.653477 0.627398 0.595274 0.557414 0.514185 0.466004 0.413334 0.356685 0.296603 0.233667 0.168484 0.101682 0.033904 -0.034195 +-0.037369 -0.111451 -0.184456 -0.255681 -0.324440 -0.390072 -0.451945 -0.509465 -0.562077 -0.609276 -0.650609 -0.685678 -0.714146 -0.735739 -0.750250 -0.757540 -0.757538 -0.750245 -0.735730 -0.714134 -0.685664 -0.650593 -0.609258 -0.562058 -0.509445 -0.451926 -0.390054 -0.324424 -0.255667 -0.184445 -0.111444 -0.037365 0.037078 0.111167 0.184190 0.255444 0.324240 0.389917 0.451841 0.509416 0.562085 0.609341 0.650728 0.685847 0.714358 0.735986 0.750522 0.757827 0.757829 0.750529 0.735996 0.714372 0.685864 0.650747 0.609362 0.562106 0.509437 0.451861 0.389935 0.324255 0.255455 0.184199 0.111171 0.037078 -0.037369 +-0.040184 -0.119869 -0.198396 -0.275008 -0.348969 -0.419566 -0.486120 -0.547991 -0.604585 -0.655356 -0.699816 -0.737539 -0.768161 -0.791389 -0.806999 -0.814840 -0.814838 -0.806993 -0.791380 -0.768150 -0.737525 -0.699800 -0.655338 -0.604565 -0.547972 -0.486101 -0.419548 -0.348952 -0.274994 -0.198385 -0.119861 -0.040180 0.039893 0.119585 0.198130 0.274771 0.348769 0.419411 0.486016 0.547943 0.604593 0.655420 0.699935 0.737708 0.768373 0.791636 0.807271 0.815127 0.815130 0.807277 0.791646 0.768387 0.737725 0.699955 0.655441 0.604614 0.547964 0.486036 0.419429 0.348784 0.274782 0.198138 0.119589 0.039893 -0.040184 +-0.042613 -0.127134 -0.210426 -0.291688 -0.370138 -0.445020 -0.515614 -0.581241 -0.641270 -0.695123 -0.742283 -0.782297 -0.814778 -0.839416 -0.855974 -0.864292 -0.864290 -0.855969 -0.839408 -0.814767 -0.782282 -0.742267 -0.695105 -0.641251 -0.581221 -0.515594 -0.445001 -0.370121 -0.291674 -0.210415 -0.127126 -0.042609 0.042322 0.126850 0.210160 0.291450 0.369937 0.444864 0.515510 0.581192 0.641278 0.695188 0.742402 0.782465 0.814990 0.839663 0.856246 0.864579 0.864581 0.856253 0.839674 0.815005 0.782483 0.742422 0.695209 0.641300 0.581213 0.515530 0.444882 0.369952 0.291462 0.210168 0.126854 0.042322 -0.042613 +-0.044634 -0.133176 -0.220431 -0.305560 -0.387743 -0.466188 -0.540142 -0.608893 -0.671780 -0.728196 -0.777601 -0.819520 -0.853548 -0.879359 -0.896704 -0.905418 -0.905416 -0.896699 -0.879350 -0.853536 -0.819505 -0.777585 -0.728178 -0.671760 -0.608873 -0.540123 -0.466170 -0.387726 -0.305546 -0.220420 -0.133168 -0.044630 0.044343 0.132892 0.220165 0.305322 0.387542 0.466033 0.540038 0.608844 0.671787 0.728261 0.777720 0.819688 0.853759 0.879605 0.896976 0.905705 0.905708 0.896983 0.879616 0.853774 0.819706 0.777740 0.728282 0.671809 0.608866 0.540058 0.466051 0.387558 0.305334 0.220173 0.132896 0.044342 -0.044634 +-0.046226 -0.137936 -0.228315 -0.316490 -0.401615 -0.482868 -0.559470 -0.630682 -0.695819 -0.754256 -0.805430 -0.848849 -0.884096 -0.910831 -0.928798 -0.937824 -0.937822 -0.928792 -0.910822 -0.884084 -0.848834 -0.805413 -0.754238 -0.695800 -0.630662 -0.559450 -0.482850 -0.401598 -0.316476 -0.228303 -0.137928 -0.046221 0.045935 0.137652 0.228048 0.316252 0.401414 0.482713 0.559365 0.630632 0.695827 0.754320 0.805548 0.849017 0.884307 0.911077 0.929070 0.938111 0.938113 0.929077 0.911089 0.884322 0.849035 0.805569 0.754342 0.695849 0.630654 0.559386 0.482731 0.401429 0.316264 0.228057 0.137656 0.045934 -0.046226 +-0.047374 -0.141370 -0.234001 -0.324374 -0.411620 -0.494899 -0.573409 -0.646397 -0.713158 -0.773052 -0.825502 -0.870003 -0.906128 -0.933530 -0.951945 -0.961196 -0.961194 -0.951940 -0.933521 -0.906116 -0.869988 -0.825484 -0.773033 -0.713138 -0.646376 -0.573389 -0.494880 -0.411602 -0.324359 -0.233989 -0.141362 -0.047370 0.047083 0.141086 0.233734 0.324136 0.411419 0.494743 0.573305 0.646347 0.713165 0.773116 0.825620 0.870171 0.906339 0.933776 0.952217 0.961483 0.961486 0.952224 0.933788 0.906355 0.870189 0.825640 0.773138 0.713188 0.646369 0.573325 0.494761 0.411434 0.324148 0.233742 0.141090 0.047082 -0.047374 +-0.048067 -0.143444 -0.237434 -0.329134 -0.417661 -0.502164 -0.581827 -0.655887 -0.723629 -0.784402 -0.837622 -0.882777 -0.919434 -0.947238 -0.965923 -0.975310 -0.975308 -0.965918 -0.947229 -0.919421 -0.882763 -0.837605 -0.784383 -0.723609 -0.655866 -0.581807 -0.502144 -0.417644 -0.329120 -0.237422 -0.143435 -0.048063 0.047776 0.143159 0.237168 0.328896 0.417461 0.502008 0.581723 0.655837 0.723636 0.784466 0.837740 0.882945 0.919644 0.947484 0.966195 0.975597 0.975600 0.966202 0.947495 0.919660 0.882964 0.837761 0.784488 0.723659 0.655859 0.581743 0.502026 0.417476 0.328908 0.237176 0.143163 0.047776 -0.048067 +-0.048299 -0.144137 -0.238582 -0.330726 -0.419682 -0.504593 -0.584642 -0.659060 -0.727130 -0.788198 -0.841676 -0.887049 -0.923883 -0.951822 -0.970598 -0.980030 -0.980028 -0.970592 -0.951813 -0.923871 -0.887034 -0.841658 -0.788179 -0.727110 -0.659040 -0.584622 -0.504574 -0.419665 -0.330711 -0.238571 -0.144129 -0.048295 0.048008 0.143853 0.238316 0.330488 0.419481 0.504437 0.584538 0.659010 0.727137 0.788261 0.841793 0.887217 0.924094 0.952068 0.970870 0.980317 0.980320 0.970877 0.952079 0.924109 0.887236 0.841814 0.788284 0.727160 0.659033 0.584558 0.504456 0.419497 0.330500 0.238324 0.143857 0.048008 -0.048299 +-0.048067 -0.143444 -0.237434 -0.329134 -0.417662 -0.502164 -0.581827 -0.655887 -0.723629 -0.784402 -0.837622 -0.882778 -0.919434 -0.947238 -0.965924 -0.975310 -0.975309 -0.965918 -0.947229 -0.919422 -0.882763 -0.837605 -0.784383 -0.723609 -0.655866 -0.581807 -0.502145 -0.417644 -0.329120 -0.237422 -0.143435 -0.048063 0.047776 0.143159 0.237168 0.328896 0.417461 0.502008 0.581723 0.655837 0.723636 0.784466 0.837740 0.882945 0.919645 0.947484 0.966195 0.975598 0.975600 0.966202 0.947496 0.919660 0.882964 0.837761 0.784488 0.723659 0.655859 0.581744 0.502026 0.417476 0.328908 0.237176 0.143163 0.047776 -0.048067 +-0.047374 -0.141370 -0.234001 -0.324374 -0.411620 -0.494899 -0.573410 -0.646397 -0.713158 -0.773052 -0.825502 -0.870003 -0.906129 -0.933531 -0.951946 -0.961197 -0.961195 -0.951940 -0.933522 -0.906117 -0.869989 -0.825485 -0.773033 -0.713139 -0.646377 -0.573390 -0.494880 -0.411603 -0.324359 -0.233989 -0.141362 -0.047370 0.047083 0.141086 0.233734 0.324136 0.411419 0.494743 0.573305 0.646347 0.713166 0.773116 0.825620 0.870171 0.906340 0.933777 0.952217 0.961484 0.961486 0.952224 0.933788 0.906355 0.870190 0.825641 0.773138 0.713188 0.646369 0.573326 0.494762 0.411435 0.324148 0.233743 0.141090 0.047082 -0.047374 +-0.046226 -0.137937 -0.228315 -0.316490 -0.401615 -0.482869 -0.559470 -0.630682 -0.695820 -0.754257 -0.805431 -0.848850 -0.884096 -0.910831 -0.928798 -0.937824 -0.937823 -0.928793 -0.910823 -0.884084 -0.848835 -0.805414 -0.754238 -0.695800 -0.630662 -0.559450 -0.482850 -0.401598 -0.316476 -0.228303 -0.137928 -0.046222 0.045935 0.137652 0.228049 0.316253 0.401414 0.482713 0.559366 0.630633 0.695827 0.754321 0.805549 0.849018 0.884307 0.911078 0.929070 0.938111 0.938114 0.929077 0.911089 0.884322 0.849036 0.805569 0.754343 0.695850 0.630655 0.559386 0.482731 0.401430 0.316264 0.228057 0.137656 0.045934 -0.046226 +-0.044634 -0.133176 -0.220431 -0.305560 -0.387743 -0.466189 -0.540143 -0.608894 -0.671780 -0.728197 -0.777602 -0.819520 -0.853548 -0.879359 -0.896705 -0.905419 -0.905417 -0.896700 -0.879351 -0.853536 -0.819506 -0.777585 -0.728179 -0.671761 -0.608874 -0.540123 -0.466170 -0.387726 -0.305546 -0.220420 -0.133168 -0.044630 0.044343 0.132892 0.220165 0.305322 0.387543 0.466033 0.540039 0.608844 0.671788 0.728261 0.777721 0.819688 0.853760 0.879606 0.896977 0.905706 0.905708 0.896984 0.879617 0.853774 0.819706 0.777741 0.728283 0.671810 0.608866 0.540059 0.466052 0.387558 0.305334 0.220173 0.132896 0.044342 -0.044634 +-0.042613 -0.127134 -0.210426 -0.291688 -0.370138 -0.445020 -0.515614 -0.581241 -0.641270 -0.695124 -0.742284 -0.782297 -0.814779 -0.839417 -0.855975 -0.864292 -0.864291 -0.855969 -0.839408 -0.814767 -0.782283 -0.742268 -0.695106 -0.641251 -0.581222 -0.515595 -0.445002 -0.370121 -0.291674 -0.210415 -0.127126 -0.042609 0.042322 0.126850 0.210160 0.291451 0.369938 0.444865 0.515510 0.581193 0.641279 0.695189 0.742403 0.782466 0.814991 0.839664 0.856247 0.864580 0.864582 0.856253 0.839675 0.815005 0.782483 0.742423 0.695210 0.641300 0.581214 0.515530 0.444883 0.369953 0.291462 0.210168 0.126854 0.042322 -0.042613 +-0.040184 -0.119869 -0.198396 -0.275009 -0.348969 -0.419566 -0.486120 -0.547992 -0.604585 -0.655356 -0.699817 -0.737540 -0.768162 -0.791390 -0.806999 -0.814841 -0.814839 -0.806994 -0.791381 -0.768151 -0.737526 -0.699801 -0.655338 -0.604566 -0.547973 -0.486102 -0.419548 -0.348953 -0.274995 -0.198385 -0.119862 -0.040180 0.039893 0.119585 0.198130 0.274771 0.348769 0.419411 0.486017 0.547943 0.604593 0.655421 0.699936 0.737708 0.768374 0.791637 0.807272 0.815128 0.815130 0.807278 0.791647 0.768388 0.737726 0.699955 0.655442 0.604615 0.547964 0.486036 0.419429 0.348784 0.274783 0.198138 0.119589 0.039893 -0.040184 +-0.037369 -0.111451 -0.184457 -0.255681 -0.324441 -0.390072 -0.451946 -0.509465 -0.562077 -0.609277 -0.650609 -0.685678 -0.714146 -0.735740 -0.750251 -0.757541 -0.757539 -0.750246 -0.735731 -0.714135 -0.685664 -0.650593 -0.609259 -0.562058 -0.509446 -0.451927 -0.390055 -0.324425 -0.255668 -0.184446 -0.111444 -0.037365 0.037078 0.111167 0.184191 0.255444 0.324241 0.389918 0.451842 0.509417 0.562086 0.609342 0.650729 0.685847 0.714358 0.735987 0.750523 0.757828 0.757830 0.750530 0.735997 0.714372 0.685864 0.650748 0.609362 0.562107 0.509437 0.451862 0.389935 0.324256 0.255456 0.184199 0.111172 0.037078 -0.037369 +-0.034195 -0.101962 -0.168742 -0.233893 -0.296788 -0.356823 -0.413419 -0.466032 -0.514156 -0.557329 -0.595136 -0.627213 -0.653252 -0.673003 -0.686276 -0.692943 -0.692942 -0.686271 -0.672994 -0.653240 -0.627199 -0.595120 -0.557312 -0.514138 -0.466013 -0.413400 -0.356805 -0.296773 -0.233880 -0.168731 -0.101954 -0.034192 0.033904 0.101678 0.168476 0.233656 0.296589 0.356668 0.413315 0.465984 0.514165 0.557395 0.595256 0.627382 0.653464 0.673250 0.686548 0.693231 0.693233 0.686555 0.673260 0.653478 0.627399 0.595274 0.557415 0.514186 0.466004 0.413335 0.356686 0.296603 0.233667 0.168484 0.101682 0.033904 -0.034195 +-0.030694 -0.091491 -0.151403 -0.209853 -0.266279 -0.320138 -0.370911 -0.418111 -0.461284 -0.500014 -0.533930 -0.562706 -0.586065 -0.603783 -0.615690 -0.621671 -0.621670 -0.615685 -0.603775 -0.586054 -0.562692 -0.533914 -0.499997 -0.461265 -0.418092 -0.370893 -0.320120 -0.266263 -0.209840 -0.151393 -0.091484 -0.030691 0.030403 0.091207 0.151137 0.209616 0.266079 0.319983 0.370808 0.418063 0.461293 0.500080 0.534050 0.562875 0.586278 0.604031 0.615963 0.621959 0.621961 0.615969 0.604041 0.586291 0.562892 0.534068 0.500100 0.461313 0.418083 0.370827 0.320000 0.266094 0.209628 0.151146 0.091212 0.030403 -0.030694 +-0.026898 -0.080141 -0.132608 -0.183794 -0.233206 -0.280370 -0.324832 -0.366164 -0.403969 -0.437883 -0.467582 -0.492779 -0.513233 -0.528748 -0.539174 -0.544411 -0.544409 -0.539169 -0.528740 -0.513222 -0.492765 -0.467566 -0.437866 -0.403950 -0.366145 -0.324813 -0.280353 -0.233191 -0.183781 -0.132598 -0.080134 -0.026895 0.026607 0.079857 0.132342 0.183557 0.233007 0.280216 0.324729 0.366116 0.403978 0.437949 0.467702 0.492949 0.513446 0.528995 0.539447 0.544699 0.544701 0.539453 0.529005 0.513459 0.492965 0.467720 0.437969 0.403998 0.366136 0.324748 0.280233 0.233021 0.183568 0.132350 0.079862 0.026608 -0.026898 +-0.022845 -0.068021 -0.112537 -0.155966 -0.197889 -0.237903 -0.275625 -0.310690 -0.342763 -0.371535 -0.396730 -0.418106 -0.435458 -0.448619 -0.457464 -0.461906 -0.461904 -0.457458 -0.448611 -0.435447 -0.418092 -0.396714 -0.371518 -0.342745 -0.310671 -0.275606 -0.237886 -0.197873 -0.155952 -0.112527 -0.068014 -0.022842 0.022554 0.067736 0.112271 0.155728 0.197689 0.237749 0.275522 0.310642 0.342772 0.371601 0.396850 0.418276 0.435671 0.448867 0.457736 0.462194 0.462196 0.457742 0.448876 0.435684 0.418292 0.396868 0.371620 0.342792 0.310662 0.275541 0.237766 0.197704 0.155740 0.112279 0.067741 0.022555 -0.022845 +-0.018573 -0.055246 -0.091383 -0.126636 -0.160666 -0.193146 -0.223764 -0.252225 -0.278257 -0.301609 -0.322057 -0.339406 -0.353488 -0.364169 -0.371347 -0.374952 -0.374950 -0.371341 -0.364161 -0.353476 -0.339392 -0.322041 -0.301591 -0.278238 -0.252206 -0.223745 -0.193129 -0.160651 -0.126623 -0.091373 -0.055240 -0.018570 0.018282 0.054962 0.091117 0.126399 0.160467 0.192992 0.223661 0.252177 0.278266 0.301675 0.322177 0.339575 0.353701 0.364417 0.371620 0.375239 0.375241 0.371625 0.364426 0.353714 0.339591 0.322195 0.301694 0.278286 0.252197 0.223680 0.193009 0.160482 0.126411 0.091126 0.054967 0.018283 -0.018573 +-0.014124 -0.041941 -0.069351 -0.096089 -0.121898 -0.146530 -0.169749 -0.191331 -0.211071 -0.228777 -0.244282 -0.257436 -0.268113 -0.276211 -0.281652 -0.284385 -0.284383 -0.281647 -0.276202 -0.268101 -0.257421 -0.244266 -0.228759 -0.211052 -0.191312 -0.169730 -0.146512 -0.121882 -0.096076 -0.069341 -0.041935 -0.014121 0.013832 0.041657 0.069085 0.095851 0.121698 0.146375 0.169645 0.191283 0.211080 0.228843 0.244402 0.257605 0.268325 0.276458 0.281925 0.284673 0.284675 0.281931 0.276468 0.268338 0.257621 0.244420 0.228862 0.211100 0.191303 0.169664 0.146393 0.121713 0.095863 0.069094 0.041662 0.013834 -0.014124 +-0.009540 -0.028234 -0.046652 -0.064617 -0.081956 -0.098503 -0.114099 -0.128595 -0.141852 -0.153743 -0.164154 -0.172986 -0.180154 -0.185591 -0.189244 -0.191078 -0.191076 -0.189239 -0.185582 -0.180143 -0.172971 -0.164137 -0.153724 -0.141833 -0.128576 -0.114080 -0.098486 -0.081940 -0.064604 -0.046642 -0.028228 -0.009538 0.009249 0.027950 0.046386 0.064379 0.081756 0.098348 0.113996 0.128547 0.141861 0.153808 0.164274 0.173155 0.180367 0.185839 0.189517 0.191366 0.191368 0.189523 0.185848 0.180380 0.173171 0.164291 0.153827 0.141881 0.128567 0.114015 0.098366 0.081771 0.064392 0.046395 0.027955 0.009250 -0.009540 +-0.004866 -0.014256 -0.023505 -0.032524 -0.041226 -0.049528 -0.057351 -0.064621 -0.071267 -0.077227 -0.082444 -0.086869 -0.090460 -0.093183 -0.095012 -0.095930 -0.095928 -0.095006 -0.093174 -0.090448 -0.086854 -0.082427 -0.077208 -0.071247 -0.064601 -0.057332 -0.049511 -0.041211 -0.032511 -0.023495 -0.014250 -0.004863 0.004574 0.013972 0.023239 0.032286 0.041026 0.049374 0.057248 0.064572 0.071276 0.077293 0.082564 0.087039 0.090673 0.093431 0.095285 0.096218 0.096219 0.095291 0.093440 0.090685 0.087054 0.082582 0.077312 0.071296 0.064592 0.057267 0.049391 0.041041 0.032299 0.023248 0.013977 0.004576 -0.004866 +-0.000146 -0.000142 -0.000133 -0.000119 -0.000100 -0.000077 -0.000052 -0.000024 0.000004 0.000033 0.000060 0.000085 0.000106 0.000124 0.000136 0.000144 0.000146 0.000142 0.000133 0.000119 0.000100 0.000077 0.000052 0.000024 -0.000004 -0.000033 -0.000060 -0.000085 -0.000106 -0.000124 -0.000136 -0.000144 -0.000146 -0.000142 -0.000133 -0.000119 -0.000100 -0.000077 -0.000052 -0.000024 0.000004 0.000033 0.000060 0.000085 0.000106 0.000124 0.000137 0.000144 0.000146 0.000142 0.000133 0.000119 0.000100 0.000077 0.000052 0.000024 -0.000004 -0.000033 -0.000060 -0.000085 -0.000106 -0.000124 -0.000136 -0.000144 -0.000146 +0.004574 0.013972 0.023239 0.032286 0.041026 0.049373 0.057248 0.064572 0.071276 0.077292 0.082564 0.087039 0.090673 0.093430 0.095285 0.096217 0.096219 0.095290 0.093440 0.090685 0.087054 0.082582 0.077312 0.071296 0.064592 0.057267 0.049391 0.041041 0.032299 0.023248 0.013977 0.004576 -0.004866 -0.014256 -0.023505 -0.032524 -0.041226 -0.049528 -0.057351 -0.064621 -0.071267 -0.077227 -0.082444 -0.086869 -0.090460 -0.093183 -0.095012 -0.095930 -0.095928 -0.095006 -0.093174 -0.090448 -0.086854 -0.082427 -0.077208 -0.071247 -0.064601 -0.057332 -0.049511 -0.041210 -0.032511 -0.023495 -0.014250 -0.004863 0.004574 +0.009249 0.027950 0.046386 0.064379 0.081756 0.098348 0.113996 0.128547 0.141861 0.153808 0.164274 0.173155 0.180367 0.185838 0.189517 0.191366 0.191368 0.189522 0.185848 0.180380 0.173171 0.164291 0.153827 0.141881 0.128567 0.114015 0.098366 0.081771 0.064392 0.046395 0.027955 0.009250 -0.009540 -0.028234 -0.046652 -0.064617 -0.081956 -0.098503 -0.114099 -0.128595 -0.141852 -0.153743 -0.164154 -0.172986 -0.180154 -0.185591 -0.189244 -0.191078 -0.191076 -0.189238 -0.185582 -0.180142 -0.172971 -0.164137 -0.153724 -0.141832 -0.128575 -0.114080 -0.098485 -0.081940 -0.064604 -0.046642 -0.028228 -0.009538 0.009249 +0.013832 0.041657 0.069085 0.095851 0.121698 0.146375 0.169645 0.191283 0.211079 0.228843 0.244402 0.257605 0.268325 0.276458 0.281925 0.284672 0.284674 0.281931 0.276468 0.268338 0.257621 0.244420 0.228862 0.211100 0.191303 0.169664 0.146393 0.121713 0.095863 0.069094 0.041662 0.013834 -0.014124 -0.041941 -0.069351 -0.096089 -0.121898 -0.146530 -0.169749 -0.191331 -0.211071 -0.228777 -0.244282 -0.257436 -0.268113 -0.276210 -0.281652 -0.284385 -0.284383 -0.281646 -0.276202 -0.268101 -0.257421 -0.244265 -0.228759 -0.211051 -0.191312 -0.169730 -0.146512 -0.121882 -0.096076 -0.069341 -0.041935 -0.014121 0.013832 +0.018282 0.054962 0.091117 0.126399 0.160466 0.192991 0.223660 0.252177 0.278265 0.301674 0.322177 0.339575 0.353700 0.364416 0.371619 0.375239 0.375241 0.371625 0.364426 0.353713 0.339591 0.322195 0.301694 0.278286 0.252197 0.223680 0.193009 0.160481 0.126411 0.091126 0.054967 0.018283 -0.018573 -0.055246 -0.091383 -0.126636 -0.160666 -0.193146 -0.223764 -0.252225 -0.278257 -0.301609 -0.322057 -0.339405 -0.353488 -0.364169 -0.371346 -0.374951 -0.374950 -0.371341 -0.364160 -0.353476 -0.339391 -0.322040 -0.301590 -0.278238 -0.252206 -0.223745 -0.193129 -0.160651 -0.126623 -0.091373 -0.055240 -0.018570 0.018282 +0.022554 0.067736 0.112271 0.155728 0.197689 0.237749 0.275521 0.310642 0.342772 0.371600 0.396850 0.418275 0.435670 0.448866 0.457736 0.462193 0.462195 0.457742 0.448876 0.435683 0.418291 0.396868 0.371620 0.342792 0.310662 0.275540 0.237766 0.197704 0.155740 0.112279 0.067741 0.022555 -0.022845 -0.068021 -0.112537 -0.155965 -0.197889 -0.237903 -0.275625 -0.310690 -0.342763 -0.371535 -0.396730 -0.418106 -0.435458 -0.448619 -0.457463 -0.461906 -0.461904 -0.457458 -0.448610 -0.435446 -0.418092 -0.396713 -0.371517 -0.342744 -0.310671 -0.275606 -0.237886 -0.197873 -0.155952 -0.112526 -0.068014 -0.022842 0.022554 +0.026607 0.079857 0.132342 0.183556 0.233006 0.280215 0.324728 0.366115 0.403977 0.437948 0.467701 0.492948 0.513445 0.528995 0.539446 0.544698 0.544700 0.539452 0.529005 0.513459 0.492965 0.467720 0.437968 0.403998 0.366135 0.324747 0.280233 0.233021 0.183568 0.132350 0.079862 0.026608 -0.026898 -0.080141 -0.132608 -0.183794 -0.233206 -0.280370 -0.324832 -0.366163 -0.403968 -0.437883 -0.467582 -0.492779 -0.513233 -0.528747 -0.539173 -0.544410 -0.544409 -0.539168 -0.528739 -0.513221 -0.492765 -0.467565 -0.437865 -0.403949 -0.366144 -0.324813 -0.280352 -0.233190 -0.183780 -0.132597 -0.080134 -0.026895 0.026607 +0.030403 0.091207 0.151137 0.209616 0.266079 0.319983 0.370807 0.418062 0.461292 0.500079 0.534049 0.562875 0.586277 0.604030 0.615962 0.621958 0.621960 0.615968 0.604040 0.586291 0.562891 0.534068 0.500099 0.461313 0.418083 0.370827 0.320000 0.266094 0.209628 0.151146 0.091211 0.030403 -0.030694 -0.091491 -0.151403 -0.209853 -0.266279 -0.320138 -0.370911 -0.418111 -0.461283 -0.500014 -0.533930 -0.562706 -0.586065 -0.603783 -0.615689 -0.621671 -0.621669 -0.615684 -0.603774 -0.586053 -0.562691 -0.533913 -0.499996 -0.461264 -0.418091 -0.370892 -0.320120 -0.266263 -0.209840 -0.151393 -0.091484 -0.030691 0.030403 +0.033904 0.101677 0.168476 0.233655 0.296588 0.356668 0.413315 0.465983 0.514164 0.557394 0.595255 0.627381 0.653463 0.673249 0.686547 0.693230 0.693232 0.686554 0.673259 0.653477 0.627398 0.595274 0.557414 0.514185 0.466004 0.413334 0.356685 0.296603 0.233667 0.168484 0.101682 0.033904 -0.034195 -0.101962 -0.168742 -0.233893 -0.296788 -0.356823 -0.413418 -0.466032 -0.514156 -0.557329 -0.595135 -0.627212 -0.653251 -0.673002 -0.686275 -0.692943 -0.692941 -0.686270 -0.672993 -0.653240 -0.627198 -0.595119 -0.557311 -0.514137 -0.466012 -0.413400 -0.356805 -0.296772 -0.233879 -0.168731 -0.101954 -0.034192 0.033904 +0.037078 0.111167 0.184190 0.255444 0.324240 0.389917 0.451841 0.509416 0.562085 0.609341 0.650728 0.685847 0.714358 0.735986 0.750522 0.757827 0.757829 0.750529 0.735996 0.714372 0.685864 0.650747 0.609362 0.562106 0.509437 0.451861 0.389935 0.324255 0.255455 0.184199 0.111171 0.037078 -0.037369 -0.111451 -0.184456 -0.255681 -0.324440 -0.390072 -0.451945 -0.509465 -0.562077 -0.609276 -0.650609 -0.685678 -0.714146 -0.735739 -0.750250 -0.757540 -0.757538 -0.750245 -0.735730 -0.714134 -0.685664 -0.650593 -0.609258 -0.562058 -0.509445 -0.451926 -0.390054 -0.324424 -0.255667 -0.184445 -0.111444 -0.037365 0.037078 +0.039893 0.119585 0.198130 0.274771 0.348769 0.419411 0.486016 0.547943 0.604593 0.655420 0.699935 0.737708 0.768373 0.791636 0.807271 0.815127 0.815130 0.807277 0.791646 0.768387 0.737725 0.699955 0.655441 0.604614 0.547964 0.486036 0.419429 0.348784 0.274782 0.198138 0.119589 0.039893 -0.040184 -0.119869 -0.198396 -0.275008 -0.348969 -0.419566 -0.486120 -0.547991 -0.604585 -0.655356 -0.699816 -0.737539 -0.768161 -0.791389 -0.806999 -0.814840 -0.814838 -0.806993 -0.791380 -0.768150 -0.737525 -0.699800 -0.655338 -0.604565 -0.547972 -0.486101 -0.419548 -0.348952 -0.274994 -0.198385 -0.119861 -0.040180 0.039893 +0.042322 0.126850 0.210160 0.291450 0.369937 0.444864 0.515510 0.581192 0.641278 0.695188 0.742402 0.782465 0.814990 0.839663 0.856246 0.864579 0.864581 0.856253 0.839674 0.815005 0.782483 0.742422 0.695209 0.641300 0.581213 0.515530 0.444882 0.369952 0.291462 0.210168 0.126854 0.042322 -0.042613 -0.127134 -0.210426 -0.291688 -0.370138 -0.445020 -0.515614 -0.581241 -0.641270 -0.695123 -0.742283 -0.782297 -0.814778 -0.839416 -0.855974 -0.864292 -0.864290 -0.855969 -0.839408 -0.814767 -0.782282 -0.742267 -0.695105 -0.641251 -0.581221 -0.515594 -0.445001 -0.370121 -0.291674 -0.210415 -0.127126 -0.042609 0.042322 +0.044343 0.132892 0.220165 0.305322 0.387542 0.466033 0.540038 0.608844 0.671787 0.728261 0.777720 0.819688 0.853759 0.879605 0.896976 0.905705 0.905708 0.896983 0.879616 0.853774 0.819706 0.777740 0.728282 0.671809 0.608866 0.540058 0.466051 0.387558 0.305334 0.220173 0.132896 0.044342 -0.044634 -0.133176 -0.220431 -0.305560 -0.387743 -0.466188 -0.540142 -0.608893 -0.671780 -0.728196 -0.777601 -0.819520 -0.853548 -0.879359 -0.896704 -0.905418 -0.905416 -0.896699 -0.879350 -0.853536 -0.819505 -0.777585 -0.728178 -0.671760 -0.608873 -0.540123 -0.466170 -0.387726 -0.305546 -0.220420 -0.133168 -0.044630 0.044343 +0.045935 0.137652 0.228048 0.316252 0.401414 0.482713 0.559365 0.630632 0.695827 0.754320 0.805548 0.849017 0.884307 0.911077 0.929070 0.938111 0.938113 0.929077 0.911089 0.884322 0.849035 0.805569 0.754342 0.695849 0.630654 0.559386 0.482731 0.401429 0.316264 0.228057 0.137656 0.045934 -0.046226 -0.137936 -0.228315 -0.316490 -0.401615 -0.482868 -0.559470 -0.630682 -0.695819 -0.754256 -0.805430 -0.848849 -0.884096 -0.910831 -0.928798 -0.937824 -0.937822 -0.928792 -0.910822 -0.884084 -0.848834 -0.805413 -0.754238 -0.695800 -0.630662 -0.559450 -0.482850 -0.401598 -0.316476 -0.228303 -0.137928 -0.046221 0.045935 +0.047083 0.141086 0.233734 0.324136 0.411419 0.494743 0.573305 0.646347 0.713165 0.773116 0.825620 0.870171 0.906339 0.933776 0.952217 0.961483 0.961486 0.952224 0.933788 0.906355 0.870189 0.825640 0.773138 0.713188 0.646369 0.573325 0.494761 0.411434 0.324148 0.233742 0.141090 0.047082 -0.047374 -0.141370 -0.234001 -0.324374 -0.411620 -0.494899 -0.573409 -0.646397 -0.713158 -0.773052 -0.825502 -0.870003 -0.906128 -0.933530 -0.951945 -0.961196 -0.961194 -0.951940 -0.933521 -0.906116 -0.869988 -0.825484 -0.773033 -0.713138 -0.646376 -0.573389 -0.494880 -0.411602 -0.324359 -0.233989 -0.141362 -0.047370 0.047083 +0.047776 0.143159 0.237168 0.328896 0.417461 0.502008 0.581723 0.655837 0.723636 0.784466 0.837740 0.882945 0.919644 0.947484 0.966195 0.975597 0.975600 0.966202 0.947495 0.919660 0.882964 0.837761 0.784488 0.723659 0.655859 0.581743 0.502026 0.417476 0.328908 0.237176 0.143163 0.047776 -0.048067 -0.143444 -0.237434 -0.329134 -0.417661 -0.502164 -0.581827 -0.655887 -0.723629 -0.784402 -0.837622 -0.882777 -0.919434 -0.947238 -0.965923 -0.975310 -0.975308 -0.965918 -0.947229 -0.919421 -0.882763 -0.837605 -0.784383 -0.723609 -0.655866 -0.581807 -0.502144 -0.417644 -0.329120 -0.237422 -0.143435 -0.048063 0.047776 +0.048008 0.143853 0.238316 0.330488 0.419481 0.504437 0.584538 0.659010 0.727137 0.788261 0.841793 0.887217 0.924094 0.952068 0.970870 0.980317 0.980320 0.970877 0.952079 0.924109 0.887236 0.841814 0.788284 0.727160 0.659033 0.584558 0.504456 0.419497 0.330500 0.238324 0.143857 0.048008 -0.048299 -0.144137 -0.238582 -0.330726 -0.419682 -0.504593 -0.584642 -0.659060 -0.727130 -0.788198 -0.841676 -0.887049 -0.923883 -0.951822 -0.970598 -0.980030 -0.980028 -0.970592 -0.951813 -0.923871 -0.887034 -0.841658 -0.788179 -0.727110 -0.659040 -0.584622 -0.504574 -0.419665 -0.330711 -0.238571 -0.144129 -0.048295 0.048008 +0.047776 0.143159 0.237168 0.328896 0.417461 0.502008 0.581723 0.655837 0.723636 0.784466 0.837740 0.882945 0.919645 0.947484 0.966195 0.975598 0.975600 0.966202 0.947496 0.919660 0.882964 0.837761 0.784488 0.723659 0.655859 0.581744 0.502026 0.417476 0.328908 0.237176 0.143163 0.047776 -0.048067 -0.143444 -0.237434 -0.329134 -0.417662 -0.502164 -0.581827 -0.655887 -0.723629 -0.784402 -0.837622 -0.882778 -0.919434 -0.947238 -0.965924 -0.975310 -0.975309 -0.965918 -0.947229 -0.919422 -0.882763 -0.837605 -0.784383 -0.723609 -0.655866 -0.581807 -0.502145 -0.417644 -0.329120 -0.237422 -0.143435 -0.048063 0.047776 diff --git a/examples/next/swm/ref/64x64/z.step0.t100.bin b/examples/next/swm/ref/64x64/z.step0.t100.bin new file mode 100644 index 0000000000000000000000000000000000000000..25896118eab99387f53d1b9d9ed71c3c49c1ade1 GIT binary patch literal 33800 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 ryM^`NbFBXbf?v+^{9h6Ice0-Q|7_gYlg0 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 DVkMk| literal 0 HcmV?d00001 diff --git a/examples/next/swm/swm.py b/examples/next/swm/swm.py new file mode 100644 index 0000000000..66bb0dcff7 --- /dev/null +++ b/examples/next/swm/swm.py @@ -0,0 +1,273 @@ +# GT4Py - GridTools Framework +# +# Copyright (c) 2014-2024, ETH Zurich +# All rights reserved. +# +# Please, refer to the LICENSE file in the root directory. +# SPDX-License-Identifier: BSD-3-Clause + +""" +This version uses 2 halo lines (1 on each side) + +e.g. for M=3, N=3, with 'x' = interior, '0' = periodic halo, the grid is: + +for all fields +0 0 0 0 0 +0 x x x 0 +0 x x x 0 +0 x x x 0 +0 0 0 0 0 +""" + +from gt4py import next as gtx +from time import perf_counter +import initial_conditions +import utils +import config +from gt4py.next.otf import compiled_program + +# from gt4py.next.program_processors.runners import jax_jit +import jax.numpy as jnp +import numpy as np + +dtype = gtx.float64 +allocator = None + +# backend, allocator = None, jnp +# backend, allocator = None, np + +# backend, allocator = jax_jit.jax_jit, jnp +# backend = gtx.gtfn_gpu +backend = gtx.gtfn_cpu +# backend = gtx.itir_python +if allocator is None and backend is not None: + allocator = backend + + +print(f"Using backend '{getattr(backend, 'name', backend)}'.") + +I = gtx.Dimension("I") +J = gtx.Dimension("J") + +IJField = gtx.Field[gtx.Dims[I, J], dtype] + + +@gtx.field_operator +def avg_x(f: IJField): + """Average field in the x direction.""" + return 0.5 * (f(I + 1) + f) + + +@gtx.field_operator +def avg_y(f: IJField): + """Average field in the y direction.""" + return 0.5 * (f(J + 1) + f) + + +@gtx.field_operator +def avg_x_staggered(f: IJField): + """Average field which is staggered in x in the x direction.""" + return 0.5 * (f(I - 1) + f) + + +@gtx.field_operator +def avg_y_staggered(f: IJField): + """Average field which is staggered in y in the y direction.""" + return 0.5 * (f(J - 1) + f) + + +@gtx.field_operator +def delta_x(dx: dtype, f: IJField): + """Calculate the difference in the x direction.""" + return (1.0 / dx) * (f(I + 1) - f) + + +@gtx.field_operator +def delta_y(dx: dtype, f: IJField): + """Calculate the difference in the y direction.""" + return (1.0 / dx) * (f(J + 1) - f) + + +@gtx.field_operator +def delta_x_staggered(dx: dtype, f: IJField): + """Calculate the difference in the x direction for field staggered in x.""" + return (1.0 / dx) * (f - f(I - 1)) + + +@gtx.field_operator +def delta_y_staggered(dx: dtype, f: IJField): + """Calculate the difference in the y direction for field staggered in y.""" + return (1.0 / dx) * (f - f(J - 1)) + + +@gtx.field_operator +def timestep( + u: IJField, + v: IJField, + p: IJField, + dx: dtype, + dy: dtype, + dt: dtype, + uold: IJField, + vold: IJField, + pold: IJField, + alpha: dtype, +) -> tuple[IJField, IJField, IJField, IJField, IJField, IJField]: + cu = avg_x(p) * u + cv = avg_y(p) * v + z = (delta_x(dx, v) - delta_y(dy, u)) / avg_x(avg_y(p)) + h = p + 0.5 * (avg_x_staggered(u * u) + avg_y_staggered(v * v)) + + unew = uold + avg_y_staggered(z) * avg_y_staggered(avg_x(cv)) * dt - delta_x(dx, h) * dt + vnew = vold - avg_x_staggered(z) * avg_x_staggered(avg_y(cu)) * dt - delta_y(dy, h) * dt + pnew = pold - delta_x_staggered(dx, cu) * dt - delta_y_staggered(dy, cv) * dt + + uold_new = u + alpha * (unew - 2.0 * u + uold) + vold_new = v + alpha * (vnew - 2.0 * v + vold) + pold_new = p + alpha * (pnew - 2.0 * p + pold) + + return ( + unew, + vnew, + pnew, + uold_new, + vold_new, + pold_new, + ) + + +def apply_periodicity(x: IJField): + """Apply periodicity to the field x.""" + # TODO fix for jax + x.ndarray[...] = x.array_ns.pad(x.ndarray[1:-1, 1:-1], ((1, 1), (1, 1)), mode="wrap") + return x + + +def main(): + dt0 = 0.0 + dt25 = 0.0 + dt3 = 0.0 + + M = config.M + N = config.N + + domain = gtx.domain({I: (-1, M + 1), J: (-1, N + 1)}) + + pnew = gtx.empty(domain, dtype=dtype, allocator=allocator) + unew = gtx.empty(domain, dtype=dtype, allocator=allocator) + vnew = gtx.empty(domain, dtype=dtype, allocator=allocator) + + # Initialize fields + _u, _v, _p = initial_conditions.initialize_2halo(M, N, config.dx, config.dy, config.a) + u = gtx.as_field(domain, _u, dtype=dtype, allocator=allocator) + v = gtx.as_field(domain, _v, dtype=dtype, allocator=allocator) + p = gtx.as_field(domain, _p, dtype=dtype, allocator=allocator) + + # Initial old fields + uold = gtx.as_field(domain, _u, dtype=dtype, allocator=allocator) + vold = gtx.as_field(domain, _v, dtype=dtype, allocator=allocator) + pold = gtx.as_field(domain, _p, dtype=dtype, allocator=allocator) + + # Print initial conditions + if config.L_OUT: + print(" Number of points in the x direction: ", M) + print(" Number of points in the y direction: ", N) + print(" grid spacing in the x direction: ", config.dx) + print(" grid spacing in the y direction: ", config.dy) + print(" time step: ", config.dt) + print(" time filter coefficient: ", config.alpha) + + print(" Initial p:\n", p[:, :].ndarray.diagonal()[1:-1]) + print(" Initial u:\n", u[:, :].ndarray.diagonal()[1:-1]) + print(" Initial v:\n", v[:, :].ndarray.diagonal()[1:-1]) + + if backend is not None: + timestep.with_backend(backend).compile(offset_provider={}) + gtx.wait_for_compilation() + + t0_start = perf_counter() + + # Main time loop + for ncycle in range(config.ITMAX): + if (ncycle % 100 == 0) & (config.VIS == False): + print(f"cycle number{ncycle}") + + if config.VAL_DEEP and ncycle <= 3: + print("validating init") + utils.validate_uvp( + u.asnumpy()[:-1, 1:], + v.asnumpy()[1:, :-1], + p.asnumpy()[1:, 1:], + M, + N, + ncycle, + "init", + ) + + t3_start = perf_counter() + timestep( + u=u, + v=v, + p=p, + dx=config.dx, + dy=config.dy, + dt=config.dt if ncycle == 0 else config.dt * 2.0, + uold=uold, + vold=vold, + pold=pold, + alpha=config.alpha if ncycle > 0 else 0.0, + offset_provider={}, + out=(unew, vnew, pnew, uold, vold, pold), + domain={I: (0, M), J: (0, N)}, + ) + + if hasattr(u.array_ns, "cuda"): + u.array_ns.cuda.runtime.deviceSynchronize() + t3_stop = perf_counter() + dt3 = dt3 + (t3_stop - t3_start) + + t25_start = perf_counter() + unew = apply_periodicity(unew) + vnew = apply_periodicity(vnew) + pnew = apply_periodicity(pnew) + t25_stop = perf_counter() + dt25 = dt25 + (t25_stop - t25_start) + + # swap x with xnew fields + u, unew = unew, u + v, vnew = vnew, v + p, pnew = pnew, p + + if (config.VIS) & (ncycle % config.VIS_DT == 0): + utils.live_plot3( + u.asnumpy(), + v.asnumpy(), + p.asnumpy(), + "ncycle: " + str(ncycle), + ) + + t0_stop = perf_counter() + dt0 = dt0 + (t0_stop - t0_start) + # Print initial conditions + if config.L_OUT: + print("cycle number ", config.ITMAX) + print(" diagonal elements of p:\n", p[:, :].ndarray.diagonal()[:-1]) + print(" diagonal elements of u:\n", u[:, :].ndarray.diagonal()[:-1]) + print(" diagonal elements of v:\n", v[:, :].ndarray.diagonal()[:-1]) + print("total: ", dt0) + print("t100+t200+t300: ", dt3) + print("t150+t250: ", dt25) + + if config.VAL: + utils.final_validation( + u.asnumpy()[:-1, 1:], + v.asnumpy()[1:, :-1], + p.asnumpy()[1:, 1:], + ITMAX=config.ITMAX, + M=M, + N=N, + ) + + +if __name__ == "__main__": + main() diff --git a/examples/next/swm/swm_array_api.py b/examples/next/swm/swm_array_api.py new file mode 100644 index 0000000000..058eee46c6 --- /dev/null +++ b/examples/next/swm/swm_array_api.py @@ -0,0 +1,539 @@ +# GT4Py - GridTools Framework +# +# Copyright (c) 2014-2024, ETH Zurich +# All rights reserved. +# +# Please, refer to the LICENSE file in the root directory. +# SPDX-License-Identifier: BSD-3-Clause + +""" +Shallow Water Model using the Python Array API standard. + +This implementation uses symmetric halo lines (1 on each side) for all fields, +following the approach of swm_next2_halo2_restructured.py. The periodic boundary +conditions are applied via halo exchange rather than asymmetric padding. + +Compatible with any array library supporting the Array API standard: + numpy, jax.numpy, cupy, array_api_strict, etc. + +Usage: + python swm_array_api.py --array-library numpy + python swm_array_api.py --array-library jax + python swm_array_api.py --array-library torch + python swm_array_api.py --array-library cupy + python swm_array_api.py --strict # validate compliance with array_api_strict wrapping + python swm_array_api.py --array-library jax --compile # run with jax.jit + python swm_array_api.py --array-library torch --compile # run with torch.compile + python swm_array_api.py --array-library torch --compile --device cuda # torch.compile on GPU + python swm_array_api.py --array-library jax --compile --device cpu # jax.jit on CPU +""" + +import argparse +from time import perf_counter +from array_api_compat import array_namespace + + +def _get_array_module(name): + """Import and return the array module for the given library name.""" + if name == "numpy": + import numpy + + return numpy + elif name == "jax": + import jax.numpy + + return jax.numpy + elif name == "torch": + import torch + + return torch + elif name == "cupy": + import cupy + + return cupy + elif name == "array_api_strict": + import array_api_strict + + return array_api_strict + else: + raise ValueError(f"Unknown array library: {name}") + + +def _to_numpy(arr): + """Convert array to numpy, handling GPU/CUDA tensors.""" + import numpy as np + + try: + import torch + + if isinstance(arr, torch.Tensor): + return arr.detach().cpu().numpy() + except ImportError: + pass + return np.asarray(arr) + + +def initialize_interior(xp, M, N, dx, dy, a): + """Create initial u, v, p fields on the interior (M x N) grid.""" + pi = 4.0 * xp.atan(xp.asarray(1.0, dtype=xp.float64)) + tpi = 2.0 * pi + d_i = tpi / M + d_j = tpi / N + el = N * dx + pcf = (pi * pi * a * a) / (el * el) + + i_vals = xp.arange(0, M + 1, dtype=xp.float64) + j_vals = xp.arange(0, N + 1, dtype=xp.float64) + i_interior = xp.arange(0, M, dtype=xp.float64) + j_interior = xp.arange(0, N, dtype=xp.float64) + + # psi: (M+1) x (N+1), p: (M) x (N), u: (M) x (N), v: (M) x (N) + # Use reshape to create 2D broadcasting: column * row + i_col = xp.reshape(i_vals, (M + 1, 1)) # (M+1, 1) + j_row = xp.reshape(j_vals, (1, N + 1)) # (1, N+1) + psi = a * xp.sin((i_col + 0.5) * d_i) * xp.sin((j_row + 0.5) * d_j) + + i_int_col = xp.reshape(i_interior, (M, 1)) # (M, 1) + j_int_row = xp.reshape(j_interior, (1, N)) # (1, N) + p = pcf * (xp.cos(2.0 * i_int_col * d_i) + xp.cos(2.0 * j_int_row * d_j)) + 50000.0 + + u = -(psi[1:, 1:] - psi[1:, :-1]) / dy + v = (psi[1:, 1:] - psi[:-1, 1:]) / dx + + return u, v, p + + +def _interior_to_halo(xp, interior): + """Build (M+2, N+2) array from (M, N) interior with periodic halos. + + Wraps the interior periodically: last col -> left halo, first col -> right halo, + last row -> top halo, first row -> bottom halo. + """ + M, N = interior.shape + + # Wrap columns: [last_col | interior | first_col] + left_col = interior[:, N - 1 : N] # (M, 1) + right_col = interior[:, 0:1] # (M, 1) + middle_rows = xp.concat([left_col, interior, right_col], axis=1) # (M, N+2) + + # Wrap rows: [last_row | middle | first_row] + top_row = middle_rows[M - 1 : M, :] # (1, N+2) + bottom_row = middle_rows[0:1, :] # (1, N+2) + return xp.concat([top_row, middle_rows, bottom_row], axis=0) # (M+2, N+2) + + +def apply_periodic_halo(xp, interior, x): + """Apply periodic boundary conditions by filling the halo from the interior. + + The array x has shape (M+2, N+2) where the interior is x[1:-1, 1:-1]. + The halos are filled by wrapping around the interior periodically. + """ + return _interior_to_halo(xp, x[1:-1, 1:-1]) + + +def timestep(xp, u, v, p, uold, vold, pold, dx, dy, dt_val, alpha_val, M, N): + """Perform one timestep of the shallow water equations. + + All fields have shape (M+2, N+2) with 1-wide symmetric halos. + The computation domain is [0:M, 0:N] in the interior (indices [1:-1, 1:-1]). + With halo data available, stencil operations can read neighbors without bounds issues. + + Following swm_next2_halo2_restructured.py, the stencil operations are: + cu = avg_x(p) * u = 0.5*(p[i+1,j] + p[i,j]) * u[i,j] + cv = avg_y(p) * v = 0.5*(p[i,j+1] + p[i,j]) * v[i,j] + z = (delta_x(v) - delta_y(u)) / avg_x(avg_y(p)) + h = p + 0.5*(avg_x_staggered(u*u) + avg_y_staggered(v*v)) + + unew = uold + avg_y_staggered(z)*avg_y_staggered(avg_x(cv))*dt - delta_x(h)*dt + vnew = vold - avg_x_staggered(z)*avg_x_staggered(avg_y(cu))*dt - delta_y(h)*dt + pnew = pold - delta_x_staggered(cu)*dt - delta_y_staggered(cv)*dt + + Where: + avg_x(f)[i,j] = 0.5*(f[i+1,j] + f[i,j]) + avg_y(f)[i,j] = 0.5*(f[i,j+1] + f[i,j]) + avg_x_staggered(f)[i,j]= 0.5*(f[i-1,j] + f[i,j]) + avg_y_staggered(f)[i,j]= 0.5*(f[i,j-1] + f[i,j]) + delta_x(f)[i,j] = (1/dx)*(f[i+1,j] - f[i,j]) + delta_y(f)[i,j] = (1/dy)*(f[i,j+1] - f[i,j]) + delta_x_staggered(f)[i,j] = (1/dx)*(f[i,j] - f[i-1,j]) + delta_y_staggered(f)[i,j] = (1/dy)*(f[i,j] - f[i,j-1]) + + Using the halo layout, if interior is [1:M+1, 1:N+1], then for a point i,j + in the interior, i+1 and i-1 and j+1 and j-1 are all valid array indices. + """ + # Slice aliases for readability (operating on the full (M+2, N+2) array) + # Interior points: [1:M+1, 1:N+1] + # We compute on interior and use neighbors via shifted slices. + + # -- Step 1: compute intermediate fields cu, cv, z, h -- + + # avg_x(p) = 0.5*(p[i+1,j] + p[i,j]) for interior i in [1..M], j in [1..N] + # cu = avg_x(p) * u + cu_interior = ( + 0.5 * (p[2 : M + 2, 1 : N + 1] + p[1 : M + 1, 1 : N + 1]) * u[1 : M + 1, 1 : N + 1] + ) + + # avg_y(p) = 0.5*(p[i,j+1] + p[i,j]) + # cv = avg_y(p) * v + cv_interior = ( + 0.5 * (p[1 : M + 1, 2 : N + 2] + p[1 : M + 1, 1 : N + 1]) * v[1 : M + 1, 1 : N + 1] + ) + + # z = (delta_x(v) - delta_y(u)) / avg_x(avg_y(p)) + # delta_x(v) = (1/dx)*(v[i+1,j] - v[i,j]) + # delta_y(u) = (1/dy)*(u[i,j+1] - u[i,j]) + # avg_x(avg_y(p)) = avg_x(0.5*(p[i,j+1]+p[i,j])) + # = 0.5*(0.5*(p[i+1,j+1]+p[i+1,j]) + 0.5*(p[i,j+1]+p[i,j])) + # = 0.25*(p[i,j] + p[i+1,j] + p[i+1,j+1] + p[i,j+1]) + delta_x_v = (1.0 / dx) * (v[2 : M + 2, 1 : N + 1] - v[1 : M + 1, 1 : N + 1]) + delta_y_u = (1.0 / dy) * (u[1 : M + 1, 2 : N + 2] - u[1 : M + 1, 1 : N + 1]) + avg_xy_p = 0.25 * ( + p[1 : M + 1, 1 : N + 1] + + p[2 : M + 2, 1 : N + 1] + + p[2 : M + 2, 2 : N + 2] + + p[1 : M + 1, 2 : N + 2] + ) + z_interior = (delta_x_v - delta_y_u) / avg_xy_p + + # h = p + 0.5*(avg_x_staggered(u*u) + avg_y_staggered(v*v)) + # avg_x_staggered(u*u) = 0.5*(u[i-1,j]^2 + u[i,j]^2) + # avg_y_staggered(v*v) = 0.5*(v[i,j-1]^2 + v[i,j]^2) + uu = u * u + vv = v * v + avg_xs_uu = 0.5 * (uu[0:M, 1 : N + 1] + uu[1 : M + 1, 1 : N + 1]) + avg_ys_vv = 0.5 * (vv[1 : M + 1, 0:N] + vv[1 : M + 1, 1 : N + 1]) + h_interior = p[1 : M + 1, 1 : N + 1] + 0.5 * (avg_xs_uu + avg_ys_vv) + + # Embed cu, cv, z, h into (M+2, N+2) arrays with periodic halos + cu_full = _interior_to_halo(xp, cu_interior) + cv_full = _interior_to_halo(xp, cv_interior) + z_full = _interior_to_halo(xp, z_interior) + h_full = _interior_to_halo(xp, h_interior) + + # -- Step 2: compute new u, v, p -- + + # unew = uold + avg_y_staggered(z)*avg_y_staggered(avg_x(cv))*dt - delta_x(h)*dt + # avg_y_staggered(z) = 0.5*(z[i,j-1] + z[i,j]) + avg_ys_z = 0.5 * (z_full[1 : M + 1, 0:N] + z_full[1 : M + 1, 1 : N + 1]) + # avg_x(cv) = 0.5*(cv[i+1,j] + cv[i,j]), then avg_y_staggered needs halo + avg_x_cv_interior = 0.5 * (cv_full[2 : M + 2, 1 : N + 1] + cv_full[1 : M + 1, 1 : N + 1]) + avg_x_cv_full = _interior_to_halo(xp, avg_x_cv_interior) + avg_ys_avg_x_cv = 0.5 * (avg_x_cv_full[1 : M + 1, 0:N] + avg_x_cv_full[1 : M + 1, 1 : N + 1]) + + # delta_x(h) = (1/dx)*(h[i+1,j] - h[i,j]) + delta_x_h = (1.0 / dx) * (h_full[2 : M + 2, 1 : N + 1] - h_full[1 : M + 1, 1 : N + 1]) + + unew_interior = ( + uold[1 : M + 1, 1 : N + 1] + avg_ys_z * avg_ys_avg_x_cv * dt_val - delta_x_h * dt_val + ) + + # vnew = vold - avg_x_staggered(z)*avg_x_staggered(avg_y(cu))*dt - delta_y(h)*dt + avg_xs_z = 0.5 * (z_full[0:M, 1 : N + 1] + z_full[1 : M + 1, 1 : N + 1]) + # avg_y(cu) = 0.5*(cu[i,j+1] + cu[i,j]), then avg_x_staggered needs halo + avg_y_cu_interior = 0.5 * (cu_full[1 : M + 1, 2 : N + 2] + cu_full[1 : M + 1, 1 : N + 1]) + avg_y_cu_full = _interior_to_halo(xp, avg_y_cu_interior) + avg_xs_avg_y_cu = 0.5 * (avg_y_cu_full[0:M, 1 : N + 1] + avg_y_cu_full[1 : M + 1, 1 : N + 1]) + + # delta_y(h) = (1/dy)*(h[i,j+1] - h[i,j]) + delta_y_h = (1.0 / dy) * (h_full[1 : M + 1, 2 : N + 2] - h_full[1 : M + 1, 1 : N + 1]) + + vnew_interior = ( + vold[1 : M + 1, 1 : N + 1] - avg_xs_z * avg_xs_avg_y_cu * dt_val - delta_y_h * dt_val + ) + + # pnew = pold - delta_x_staggered(cu)*dt - delta_y_staggered(cv)*dt + delta_xs_cu = (1.0 / dx) * (cu_full[1 : M + 1, 1 : N + 1] - cu_full[0:M, 1 : N + 1]) + delta_ys_cv = (1.0 / dy) * (cv_full[1 : M + 1, 1 : N + 1] - cv_full[1 : M + 1, 0:N]) + + pnew_interior = pold[1 : M + 1, 1 : N + 1] - delta_xs_cu * dt_val - delta_ys_cv * dt_val + + # Build full arrays with halos + unew = _interior_to_halo(xp, unew_interior) + vnew = _interior_to_halo(xp, vnew_interior) + pnew = _interior_to_halo(xp, pnew_interior) + + # -- Step 3: time filter (update old fields) -- + uold_new_interior = u[1 : M + 1, 1 : N + 1] + alpha_val * ( + unew[1 : M + 1, 1 : N + 1] - 2.0 * u[1 : M + 1, 1 : N + 1] + uold[1 : M + 1, 1 : N + 1] + ) + vold_new_interior = v[1 : M + 1, 1 : N + 1] + alpha_val * ( + vnew[1 : M + 1, 1 : N + 1] - 2.0 * v[1 : M + 1, 1 : N + 1] + vold[1 : M + 1, 1 : N + 1] + ) + pold_new_interior = p[1 : M + 1, 1 : N + 1] + alpha_val * ( + pnew[1 : M + 1, 1 : N + 1] - 2.0 * p[1 : M + 1, 1 : N + 1] + pold[1 : M + 1, 1 : N + 1] + ) + + uold_new = _interior_to_halo(xp, uold_new_interior) + vold_new = _interior_to_halo(xp, vold_new_interior) + pold_new = _interior_to_halo(xp, pold_new_interior) + + return unew, vnew, pnew, uold_new, vold_new, pold_new + + +def initialize_2halo(xp, M, N, dx, dy, a): + """Initialize fields with 2-halo (1 on each side) symmetric padding.""" + u, v, p = initialize_interior(xp, M, N, dx, dy, a) + return _interior_to_halo(xp, u), _interior_to_halo(xp, v), _interior_to_halo(xp, p) + + +def to_reference_layout(arr, M, N): + """Convert from 2-halo (M+2, N+2) layout to reference (M+1, N+1) layout. + + The reference data uses an asymmetric layout where: + u: padded with (1,0) in x and (0,1) in y -> u_ref = [halo; interior_rows][interior_cols; halo] + v: padded with (0,1) in x and (1,0) in y + p: padded with (0,1) in x and (0,1) in y + + For the 2-halo symmetric layout, the interior is at [1:M+1, 1:N+1]. + The reference format stores M+1 x N+1 values. + + For u: ref has rows [M, 0..M-1] and cols [0..N-1, 0] -> u_ref = u_2halo[0:M+1, 1:N+2] + which is u_2halo[:-1, 1:] + For v: ref has rows [0..N-1, 0] and cols [N, 0..N-1] -> v_ref = u_2halo[1:M+2, 0:N+1] + which is v_2halo[1:, :-1] + For p: ref has rows [0..M-1, 0] and cols [0..N-1, 0] -> p_ref = p_2halo[1:M+2, 1:N+2] + which is p_2halo[1:, 1:] + """ + pass # implemented inline in validation + + +def main(): + parser = argparse.ArgumentParser(description="Shallow Water Model (Array API)") + parser.add_argument( + "--array-library", + type=str, + default="numpy", + choices=["numpy", "jax", "torch", "cupy", "array_api_strict"], + help="Array library to use", + ) + parser.add_argument( + "--strict", + action="store_true", + help="Enable array-api-strict compliance checking via array_api_compat", + ) + parser.add_argument("--M", type=int, default=16) + parser.add_argument("--N", type=int, default=16) + parser.add_argument("--ITMAX", type=int, default=4000) + parser.add_argument("--validate", action="store_true", help="Validate against reference data") + parser.add_argument("--validate-deep", action="store_true", help="Deep validation of each step") + parser.add_argument( + "--compile", + action="store_true", + help="Enable JIT compilation (jax.jit for jax, torch.compile for torch)", + ) + parser.add_argument("--no-output", action="store_true", help="Suppress diagnostic output") + parser.add_argument( + "--device", + type=str, + default=None, + choices=["cpu", "cuda"], + help="Device to run on (default: CPU for numpy/torch, GPU for jax if available)", + ) + args = parser.parse_args() + + M = args.M + N = args.N + ITMAX = args.ITMAX + L_OUT = not args.no_output + + # Physical parameters + dt = 90.0 + dx = 100000.0 + dy = 100000.0 + a = 1000000.0 + alpha = 0.001 + + # Get the array module + if args.array_library == "jax": + import jax + + jax.config.update("jax_enable_x64", True) + if args.device is not None: + jax_device_kind = "gpu" if args.device == "cuda" else "cpu" + jax.config.update("jax_default_device", jax.devices(jax_device_kind)[0]) + print(f"JAX device: {jax_device_kind}") + + lib = _get_array_module(args.array_library) + + # Configure torch device + if args.array_library == "torch" and args.device is not None: + import torch + + torch.set_default_device(args.device) + print(f"Torch device: {args.device}") + elif args.device == "cuda" and args.array_library not in ("jax", "torch", "cupy"): + print(f"Warning: --device cuda not supported for {args.array_library}") + + if args.strict: + import array_api_strict + + array_api_strict.set_array_api_strict_flags(api_version="2024.12") + + if args.strict and args.array_library != "array_api_strict": + # Wrap the library arrays in array_api_strict for compliance testing + import array_api_strict + + xp = array_api_strict + print( + f"Running with {args.array_library} arrays wrapped in array_api_strict for compliance checking" + ) + elif args.strict: + import array_api_strict + + xp = array_api_strict + print("Running with array_api_strict directly") + else: + xp = lib + # Get the array-api-compat namespace for the library + test_arr = lib.zeros((1,)) + xp = array_namespace(test_arr) + print(f"Running with {args.array_library} via array_api_compat namespace") + + # Initialize fields + u, v, p = initialize_2halo(xp, M, N, dx, dy, a) + + if args.strict and args.array_library != "array_api_strict": + # Convert to array_api_strict arrays + import array_api_strict + import numpy as np + + u_np = np.asarray(u) if hasattr(u, "__array__") else u + v_np = np.asarray(v) if hasattr(v, "__array__") else v + p_np = np.asarray(p) if hasattr(p, "__array__") else p + u = array_api_strict.asarray(u_np, dtype=array_api_strict.float64) + v = array_api_strict.asarray(v_np, dtype=array_api_strict.float64) + p = array_api_strict.asarray(p_np, dtype=array_api_strict.float64) + xp = array_api_strict + + uold = xp.asarray(u, copy=True) + vold = xp.asarray(v, copy=True) + pold = xp.asarray(p, copy=True) + + if L_OUT: + print(f" Number of points in the x direction: {M}") + print(f" Number of points in the y direction: {N}") + print(f" grid spacing in the x direction: {dx}") + print(f" grid spacing in the y direction: {dy}") + print(f" time step: {dt}") + print(f" time filter coefficient: {alpha}") + + # For validation, we need numpy + if args.validate or args.validate_deep: + import numpy as np + + if args.validate_deep: + import sys + + sys.path.insert(0, "/home/user/SWM/swm_python") + import utils + + # Set up the timestep function, optionally with JIT compilation + def timestep_fn(u, v, p, uold, vold, pold, dt_val, alpha_val): + return timestep(xp, u, v, p, uold, vold, pold, dx, dy, dt_val, alpha_val, M, N) + + if args.compile: + if args.array_library == "jax": + import jax + + timestep_fn = jax.jit(timestep_fn) + print("JIT compilation enabled via jax.jit") + elif args.array_library == "torch": + import torch + + timestep_fn = torch.compile(timestep_fn) + print("JIT compilation enabled via torch.compile") + else: + print(f"Warning: --compile has no effect for {args.array_library}") + + # Warm-up call to trigger compilation before timing + print("Warm-up call...", end=" ", flush=True) + t_warmup_start = perf_counter() + _warmup_result = timestep_fn(u, v, p, uold, vold, pold, dt, 0.0) + if args.array_library == "jax": + _warmup_result[0].block_until_ready() + elif args.array_library == "torch" and args.device == "cuda": + torch.cuda.synchronize() + t_warmup_stop = perf_counter() + del _warmup_result + print(f"done ({t_warmup_stop - t_warmup_start:.3f}s)") + + dt_total = 0.0 + dt_compute = 0.0 + + t0_start = perf_counter() + + for ncycle in range(ITMAX): + if ncycle % 100 == 0: + print(f"cycle number {ncycle}") + + if args.validate_deep and ncycle <= 3: + import numpy as np + + u_np = _to_numpy(u) + v_np = _to_numpy(v) + p_np = _to_numpy(p) + # Convert 2-halo to reference layout + utils.validate_uvp( + u_np[:-1, 1:], + v_np[1:, :-1], + p_np[1:, 1:], + M, + N, + ncycle, + "init", + ) + + tdt = dt if ncycle == 0 else dt * 2.0 + alpha_val = alpha if ncycle > 0 else 0.0 + + t_start = perf_counter() + unew, vnew, pnew, uold, vold, pold = timestep_fn(u, v, p, uold, vold, pold, tdt, alpha_val) + t_stop = perf_counter() + dt_compute += t_stop - t_start + + u = unew + v = vnew + p = pnew + + # Synchronize device for accurate timing + if args.array_library == "jax": + u.block_until_ready() + elif args.array_library == "torch" and args.device == "cuda": + import torch + + torch.cuda.synchronize() + + t0_stop = perf_counter() + dt_total = t0_stop - t0_start + + if L_OUT: + print(f"cycle number {ITMAX}") + + print(f"total: {dt_total}") + print(f"compute: {dt_compute}") + + if args.validate: + import numpy as np + + u_np = _to_numpy(u) + v_np = _to_numpy(v) + p_np = _to_numpy(p) + + # Convert to reference layout for validation + u_ref_layout = u_np[:-1, 1:] + v_ref_layout = v_np[1:, :-1] + p_ref_layout = p_np[1:, 1:] + + sys_path_added = False + import sys + + if "/home/user/SWM/swm_python" not in sys.path: + sys.path.insert(0, "/home/user/SWM/swm_python") + sys_path_added = True + import utils + + utils.final_validation(u_ref_layout, v_ref_layout, p_ref_layout, ITMAX=ITMAX, M=M, N=N) + + +if __name__ == "__main__": + main() diff --git a/examples/next/swm/utils.py b/examples/next/swm/utils.py new file mode 100644 index 0000000000..1abdba4da3 --- /dev/null +++ b/examples/next/swm/utils.py @@ -0,0 +1,121 @@ +# GT4Py - GridTools Framework +# +# Copyright (c) 2014-2024, ETH Zurich +# All rights reserved. +# +# Please, refer to the LICENSE file in the root directory. +# SPDX-License-Identifier: BSD-3-Clause + +import numpy as np +from IPython.display import clear_output +from matplotlib import pyplot as plt + + +def _to_2d(x): + if x.ndim == 3: + assert x.shape[2] == 1 + return x[:, :, 0] + return x + + +def read_uvp(step, suffix, M, N): + u_file = f"ref/{M}x{N}/u.step{step}.{suffix}.bin" + v_file = f"ref/{M}x{N}/v.step{step}.{suffix}.bin" + p_file = f"ref/{M}x{N}/p.step{step}.{suffix}.bin" + u = np.fromfile(u_file).reshape(M + 1, N + 1) + v = np.fromfile(v_file).reshape(M + 1, N + 1) + p = np.fromfile(p_file).reshape(M + 1, N + 1) + return u, v, p + + +def read_cucvzh(step, suffix, M, N): + cu_file = f"ref/{M}x{N}/cu.step{step}.{suffix}.bin" + cv_file = f"ref/{M}x{N}/cv.step{step}.{suffix}.bin" + z_file = f"ref/{M}x{N}/z.step{step}.{suffix}.bin" + h_file = f"ref/{M}x{N}/h.step{step}.{suffix}.bin" + cu = np.fromfile(cu_file).reshape(M + 1, N + 1) + cv = np.fromfile(cv_file).reshape(M + 1, N + 1) + z = np.fromfile(z_file).reshape(M + 1, N + 1) + h = np.fromfile(h_file).reshape(M + 1, N + 1) + return cu, cv, z, h + + +def validate_uvp(u, v, p, M, N, step, suffix): + u, v, p = _to_2d(u), _to_2d(v), _to_2d(p) + + u_ref, v_ref, p_ref = read_uvp(step, suffix, M, N) + np.testing.assert_allclose(u, u_ref) + np.testing.assert_allclose(v, v_ref) + np.testing.assert_allclose(p, p_ref) + print(f"step {step} {suffix} values are correct.") + + +def validate_cucvzh(cu, cv, z, h, M, N, step, suffix): + cu, cv, z, h = _to_2d(cu), _to_2d(cv), _to_2d(z), _to_2d(h) + + cu_ref, cv_ref, z_ref, h_ref = read_cucvzh(step, suffix, M, N) + np.testing.assert_allclose(cu, cu_ref) + np.testing.assert_allclose(cv, cv_ref) + np.testing.assert_allclose(z, z_ref) + np.testing.assert_allclose(h, h_ref) + print(f"step {step} {suffix} values are correct.") + + +def live_plot_val(fu, fv, fp, title=""): + mxu = fu.max() + mxv = fv.max() + mxp = fp.max() + clear_output(wait=True) + fig, (ax1, ax2, ax3) = plt.subplots(figsize=(13, 3), ncols=3) + + pos1 = ax1.imshow(fp, cmap="Blues", vmin=-mxp, vmax=mxp, interpolation="none") + ax1.set_title("p") + plt.colorbar(pos1, ax=ax1) + pos2 = ax2.imshow(fu, cmap="Reds", vmin=-mxu, vmax=mxu, interpolation="none") + ax2.set_title("u") + plt.colorbar(pos2, ax=ax2) + pos3 = ax3.imshow(fv, cmap="Greens", vmin=-mxv, vmax=mxv, interpolation="none") + ax3.set_title("v") + plt.colorbar(pos3, ax=ax3) + + fig.suptitle(title) + plt.show() + + +def live_plot3(fu, fv, fp, title=""): + clear_output(wait=True) + fig, (ax1, ax2, ax3) = plt.subplots(figsize=(13, 3), ncols=3) + + pos1 = ax1.imshow(fp, cmap="Blues", vmin=49999, vmax=50001, interpolation="none") + ax1.set_title("p") + pos2 = ax2.imshow(fu, cmap="Reds", vmin=-1, vmax=1, interpolation="none") + ax2.set_title("u") + pos3 = ax3.imshow(fv, cmap="Greens", vmin=-1, vmax=1, interpolation="none") + ax3.set_title("v") + + fig.suptitle(title) + # plt.xlabel('x') + # plt.ylabel('y') + plt.show() + + +def final_validation(u, v, p, ITMAX, M, N): + u, v, p = _to_2d(u), _to_2d(v), _to_2d(p) + + uref, vref, pref = read_uvp(ITMAX, "final", M, N) + + uval = uref - u + vval = vref - v + pval = pref - p + + uLinfN = np.linalg.norm(uval, np.inf) + vLinfN = np.linalg.norm(vval, np.inf) + pLinfN = np.linalg.norm(pval, np.inf) + + # live_plot_val(uval, vval, pval, "Val") + print("uLinfN: ", uLinfN) + print("vLinfN: ", vLinfN) + print("pLinfN: ", pLinfN) + print("udiff max: ", uval.max()) + print("vdiff max: ", vval.max()) + print("pdiff max: ", pval.max()) From 89319fc429a3c67b336c01970283ccac5334d3d4 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Mon, 2 Mar 2026 12:15:24 +0100 Subject: [PATCH 03/15] remove config.backend --- examples/next/swm/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/next/swm/config.py b/examples/next/swm/config.py index b012c53f71..784b9a5d24 100644 --- a/examples/next/swm/config.py +++ b/examples/next/swm/config.py @@ -20,7 +20,7 @@ args = parser.parse_args() # Initialize model parameters -backend = args.backend +# backend = args.backend M = args.M N = args.N M_LEN = M + 1 From d5591b4906654d606879c9010b6ebbcd89110054 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Mon, 2 Mar 2026 14:27:52 +0100 Subject: [PATCH 04/15] add backend selection back --- examples/next/swm/config.py | 4 ++-- examples/next/swm/swm.py | 40 ++++++++++++++++++++++++++----------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/examples/next/swm/config.py b/examples/next/swm/config.py index 784b9a5d24..30679c5271 100644 --- a/examples/next/swm/config.py +++ b/examples/next/swm/config.py @@ -14,13 +14,13 @@ parser.add_argument("--L_OUT", type=bool, default=True, help="a boolean for L_OUT") parser.add_argument("--ITMAX", type=int, default=4000, help="Number of iterations") parser.add_argument("--VAL_DEEP", type=bool, default=True, help="Do deep validation") -# parser.add_argument('--backend', type=str, default='gt:cpu_ifirst', help='Backend to use: gt:cpu_ifirst, gt:cpu_kfirst, numpy, cuda, gt:gpu') +parser.add_argument("--backend", type=str, default="gtfn_cpu", help="Backend to use") args = parser.parse_args() # Initialize model parameters -# backend = args.backend +backend = args.backend M = args.M N = args.N M_LEN = M + 1 diff --git a/examples/next/swm/swm.py b/examples/next/swm/swm.py index 66bb0dcff7..b9de61b14c 100644 --- a/examples/next/swm/swm.py +++ b/examples/next/swm/swm.py @@ -20,29 +20,43 @@ """ from gt4py import next as gtx +from gt4py.next import common as gtx_common from time import perf_counter import initial_conditions import utils import config from gt4py.next.otf import compiled_program +from gt4py.next.program_processors.runners.dace import run_dace_gpu_cached, run_dace_cpu_cached # from gt4py.next.program_processors.runners import jax_jit import jax.numpy as jnp import numpy as np +try: + import cupy as cp +except ImportError: + cp = None + dtype = gtx.float64 -allocator = None -# backend, allocator = None, jnp -# backend, allocator = None, np +BACKENDS = { + "gtfn_gpu": (gtx.gtfn_gpu, gtx.gtfn_gpu), + "gtfn_cpu": (gtx.gtfn_cpu, gtx.gtfn_cpu), + "dace_gpu": (run_dace_gpu_cached, run_dace_gpu_cached), + "dace_cpu": (run_dace_cpu_cached, run_dace_cpu_cached), + "numpy": (None, np), + "jnp": (None, jnp), +} +if cp is not None: + BACKENDS["cupy"] = (None, cp) -# backend, allocator = jax_jit.jax_jit, jnp -# backend = gtx.gtfn_gpu -backend = gtx.gtfn_cpu -# backend = gtx.itir_python -if allocator is None and backend is not None: - allocator = backend +allocator = None +if config.backend not in BACKENDS: + raise ValueError( + f"Unsupported backend '{config.backend}'. Supported backends are: {list(BACKENDS.keys())}" + ) +backend, allocator = BACKENDS[config.backend] print(f"Using backend '{getattr(backend, 'name', backend)}'.") @@ -138,9 +152,11 @@ def timestep( def apply_periodicity(x: IJField): """Apply periodicity to the field x.""" - # TODO fix for jax - x.ndarray[...] = x.array_ns.pad(x.ndarray[1:-1, 1:-1], ((1, 1), (1, 1)), mode="wrap") - return x + return gtx_common._field( + x.array_ns.pad(x.ndarray[1:-1, 1:-1], ((1, 1), (1, 1)), mode="wrap"), + domain=x.domain, + dtype=x.dtype, + ) def main(): From 4c3f3f2c33a682fe5e7682a49d39bb8483c0e951 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Mon, 2 Mar 2026 16:22:49 +0100 Subject: [PATCH 05/15] add program with compile time domain and hack gtfn --- examples/next/swm/swm.py | 92 +++++++++++++++---- .../iterator/transforms/fuse_as_fieldop.py | 3 +- 2 files changed, 78 insertions(+), 17 deletions(-) diff --git a/examples/next/swm/swm.py b/examples/next/swm/swm.py index b9de61b14c..96641b3e73 100644 --- a/examples/next/swm/swm.py +++ b/examples/next/swm/swm.py @@ -150,6 +150,40 @@ def timestep( ) +@gtx.program(backend=backend) +def timestep_program( + u: IJField, + v: IJField, + p: IJField, + dx: dtype, + dy: dtype, + dt: dtype, + uold: IJField, + vold: IJField, + pold: IJField, + alpha: dtype, + unew: IJField, + vnew: IJField, + pnew: IJField, + M: gtx.int32, + N: gtx.int32, +): + timestep( + u=u, + v=v, + p=p, + dx=dx, + dy=dy, + dt=dt, + uold=uold, + vold=vold, + pold=pold, + alpha=alpha, + out=(unew, vnew, pnew, uold, vold, pold), + domain={I: (0, M), J: (0, N)}, + ) + + def apply_periodicity(x: IJField): """Apply periodicity to the field x.""" return gtx_common._field( @@ -197,9 +231,16 @@ def main(): print(" Initial u:\n", u[:, :].ndarray.diagonal()[1:-1]) print(" Initial v:\n", v[:, :].ndarray.diagonal()[1:-1]) + USE_PROGRAM = True + if backend is not None: - timestep.with_backend(backend).compile(offset_provider={}) + if USE_PROGRAM: + prog = timestep_program.with_backend(backend).compile(offset_provider={}, M=[M], N=[N]) + else: + prog = timestep.with_backend(backend).compile(offset_provider={}) gtx.wait_for_compilation() + else: + prog = timestep t0_start = perf_counter() @@ -221,21 +262,40 @@ def main(): ) t3_start = perf_counter() - timestep( - u=u, - v=v, - p=p, - dx=config.dx, - dy=config.dy, - dt=config.dt if ncycle == 0 else config.dt * 2.0, - uold=uold, - vold=vold, - pold=pold, - alpha=config.alpha if ncycle > 0 else 0.0, - offset_provider={}, - out=(unew, vnew, pnew, uold, vold, pold), - domain={I: (0, M), J: (0, N)}, - ) + if USE_PROGRAM: + prog( + u=u, + v=v, + p=p, + dx=config.dx, + dy=config.dy, + dt=config.dt if ncycle == 0 else config.dt * 2.0, + uold=uold, + vold=vold, + pold=pold, + alpha=config.alpha if ncycle > 0 else 0.0, + unew=unew, + vnew=vnew, + pnew=pnew, + M=M, + N=N, + ) + else: + prog( + u=u, + v=v, + p=p, + dx=config.dx, + dy=config.dy, + dt=config.dt if ncycle == 0 else config.dt * 2.0, + uold=uold, + vold=vold, + pold=pold, + alpha=config.alpha if ncycle > 0 else 0.0, + offset_provider={}, + out=(unew, vnew, pnew, uold, vold, pold), + domain={I: (0, M), J: (0, N)}, + ) if hasattr(u.array_ns, "cuda"): u.array_ns.cuda.runtime.deviceSynchronize() diff --git a/src/gt4py/next/iterator/transforms/fuse_as_fieldop.py b/src/gt4py/next/iterator/transforms/fuse_as_fieldop.py index ffad69c921..00d5d5ce9a 100644 --- a/src/gt4py/next/iterator/transforms/fuse_as_fieldop.py +++ b/src/gt4py/next/iterator/transforms/fuse_as_fieldop.py @@ -184,7 +184,7 @@ def fuse_as_fieldop( ) # to keep the tree small new_stencil = merge_let.MergeLet().visit(new_stencil) new_stencil = inline_lambdas.InlineLambdas.apply( - new_stencil, opcount_preserving=True, force_inline_lift_args=True + new_stencil, opcount_preserving=False, force_inline_lift_args=True ) new_stencil = inline_lifts.InlineLifts().visit(new_stencil) @@ -206,6 +206,7 @@ def _arg_inline_predicate(node: itir.Expr, shifts: set[tuple[itir.OffsetLiteral, is_applied_fieldop := cpm.is_applied_as_fieldop(node) and not cpm.is_call_to(node.fun.args[0], "scan") ) or cpm.is_call_to(node, "if_"): + return True # always inline arg if it is an applied fieldop with only a single arg if is_applied_fieldop and len(node.args) == 1: return True From f0400f719cb06f257a42e295ed5b5bbad70fe416 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Mon, 2 Mar 2026 16:37:44 +0100 Subject: [PATCH 06/15] fix program for embedded --- examples/next/swm/swm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/next/swm/swm.py b/examples/next/swm/swm.py index 96641b3e73..67700b6607 100644 --- a/examples/next/swm/swm.py +++ b/examples/next/swm/swm.py @@ -240,7 +240,7 @@ def main(): prog = timestep.with_backend(backend).compile(offset_provider={}) gtx.wait_for_compilation() else: - prog = timestep + prog = timestep_program if USE_PROGRAM else timestep t0_start = perf_counter() From 9f4bbe5cc31a61c3afd4becca0283ff6c4578232 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Mon, 2 Mar 2026 21:25:12 +0100 Subject: [PATCH 07/15] cleanup initial conditions --- examples/next/swm/initial_conditions.py | 67 ++++++++++++++++++------- examples/next/swm/swm.py | 2 +- 2 files changed, 51 insertions(+), 18 deletions(-) diff --git a/examples/next/swm/initial_conditions.py b/examples/next/swm/initial_conditions.py index 6279ca4381..d975485044 100644 --- a/examples/next/swm/initial_conditions.py +++ b/examples/next/swm/initial_conditions.py @@ -9,8 +9,8 @@ import numpy as np -def initialize_interior(M, N, dx, dy, a): - pi = 4.0 * np.arctan(1.0) +def initialize_interior(xp, M, N, dx, dy, a): + pi = 4.0 * xp.arctan(1.0) tpi = 2.0 * pi d_i = tpi / M d_j = tpi / N @@ -19,12 +19,12 @@ def initialize_interior(M, N, dx, dy, a): psi = ( a - * np.sin((np.arange(0, M + 1)[:, np.newaxis] + 0.5) * d_i) - * np.sin((np.arange(0, N + 1) + 0.5) * d_j) + * xp.sin((xp.arange(0, M + 1).reshape(-1, 1) + 0.5) * d_i) + * xp.sin((xp.arange(0, N + 1) + 0.5) * d_j) ) p = ( pcf - * (np.cos(2.0 * np.arange(0, M)[:, np.newaxis] * d_i) + np.cos(2.0 * np.arange(0, N) * d_j)) + * (xp.cos(2.0 * xp.arange(0, M).reshape(-1, 1) * d_i) + xp.cos(2.0 * xp.arange(0, N) * d_j)) + 50000.0 ) @@ -34,21 +34,54 @@ def initialize_interior(M, N, dx, dy, a): return u, v, p -def initialize(M, N, dx, dy, a): - u, v, p = initialize_interior(M, N, dx, dy, a) +def apply_periodic_halo(arr, top=0, bottom=0, left=0, right=0): + """Apply periodic (wrap-around) halo padding to an array. - return ( - np.pad(u, ((1, 0), (0, 1)), mode="wrap"), - np.pad(v, ((0, 1), (1, 0)), mode="wrap"), - np.pad(p, ((0, 1), (0, 1)), mode="wrap"), - ) + Parameters + ---------- + arr : array + Input array to pad + top : int + Number of rows to add at the top (from bottom of array) + bottom : int + Number of rows to add at the bottom (from top of array) + left : int + Number of columns to add at the left (from right of array) + right : int + Number of columns to add at the right (from left of array) + """ + xp = arr.__array_namespace__() + + # Apply vertical padding + if top > 0: + arr = xp.concatenate([arr[-top:, :], arr], axis=0) + if bottom > 0: + arr = xp.concatenate([arr, arr[:bottom, :]], axis=0) + + # Apply horizontal padding + if left > 0: + arr = xp.concatenate([arr[:, -left:], arr], axis=1) + if right > 0: + arr = xp.concatenate([arr, arr[:, :right]], axis=1) + + return arr -def initialize_2halo(M, N, dx, dy, a): - u, v, p = initialize_interior(M, N, dx, dy, a) +def initialize(xp, M, N, dx, dy, a): + u, v, p = initialize_interior(xp, M, N, dx, dy, a) + + # Apply staggered 1-halo padding + u = apply_periodic_halo(u, top=1, right=1) + v = apply_periodic_halo(v, bottom=1, left=1) + p = apply_periodic_halo(p, bottom=1, right=1) + + return u, v, p + +def initialize_2halo(xp, M, N, dx, dy, a): + u, v, p = initialize_interior(xp, M, N, dx, dy, a) return ( - np.pad(u, ((1, 1), (1, 1)), mode="wrap"), - np.pad(v, ((1, 1), (1, 1)), mode="wrap"), - np.pad(p, ((1, 1), (1, 1)), mode="wrap"), + apply_periodic_halo(u, 1, 1, 1, 1), + apply_periodic_halo(v, 1, 1, 1, 1), + apply_periodic_halo(p, 1, 1, 1, 1), ) diff --git a/examples/next/swm/swm.py b/examples/next/swm/swm.py index 67700b6607..bc4f51888a 100644 --- a/examples/next/swm/swm.py +++ b/examples/next/swm/swm.py @@ -208,7 +208,7 @@ def main(): vnew = gtx.empty(domain, dtype=dtype, allocator=allocator) # Initialize fields - _u, _v, _p = initial_conditions.initialize_2halo(M, N, config.dx, config.dy, config.a) + _u, _v, _p = initial_conditions.initialize_2halo(np, M, N, config.dx, config.dy, config.a) u = gtx.as_field(domain, _u, dtype=dtype, allocator=allocator) v = gtx.as_field(domain, _v, dtype=dtype, allocator=allocator) p = gtx.as_field(domain, _p, dtype=dtype, allocator=allocator) From 2222946c3c069df49f282d853a27549effbd0440 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Mon, 2 Mar 2026 22:23:24 +0100 Subject: [PATCH 08/15] simplify array_api version --- examples/next/swm/swm_array_api.py | 220 +++++++++++++---------------- 1 file changed, 98 insertions(+), 122 deletions(-) diff --git a/examples/next/swm/swm_array_api.py b/examples/next/swm/swm_array_api.py index 058eee46c6..cd6eced31b 100644 --- a/examples/next/swm/swm_array_api.py +++ b/examples/next/swm/swm_array_api.py @@ -122,150 +122,126 @@ def _interior_to_halo(xp, interior): return xp.concat([top_row, middle_rows, bottom_row], axis=0) # (M+2, N+2) -def apply_periodic_halo(xp, interior, x): - """Apply periodic boundary conditions by filling the halo from the interior. +# --------------------------------------------------------------------------- +# Stencil building blocks – mirror the @gtx.field_operator functions in swm.py. +# +# Each function reduces shape by 1 only in its operating dimension, preserving +# the full extent in the other dimension. No M/N parameters are needed: +# +# avg_x(f) / delta_x(dx, f) : (..., Mx, My) → (..., Mx-1, My) +# avg_y(f) / delta_y(dy, f) : (..., Mx, My) → (..., Mx, My-1) +# +# Both "forward" (avg_x) and "staggered/backward" (avg_x_staggered) averages +# produce the same array 0.5*(f[1:]+f[:-1]). The semantic difference is which +# output slice maps to the interior — callers select the appropriate rows/cols: +# forward in x → interior at rows [1:M+1, ...] (index i maps to position i) +# backward in x → interior at rows [0:M, ...] (index i maps to position i+1) +# --------------------------------------------------------------------------- + + +def avg_x(f): + """avg_x(f)[i,j] = 0.5*(f[i+1,j] + f[i,j]) — reduces x by 1""" + return 0.5 * (f[1:, :] + f[:-1, :]) + + +def avg_y(f): + """avg_y(f)[i,j] = 0.5*(f[i,j+1] + f[i,j]) — reduces y by 1""" + return 0.5 * (f[:, 1:] + f[:, :-1]) + + +def delta_x(dx, f): + """delta_x(f)[i,j] = (1/dx)*(f[i+1,j] - f[i,j]) — reduces x by 1""" + return (1.0 / dx) * (f[1:, :] - f[:-1, :]) - The array x has shape (M+2, N+2) where the interior is x[1:-1, 1:-1]. - The halos are filled by wrapping around the interior periodically. - """ - return _interior_to_halo(xp, x[1:-1, 1:-1]) + +def delta_y(dy, f): + """delta_y(f)[i,j] = (1/dy)*(f[i,j+1] - f[i,j]) — reduces y by 1""" + return (1.0 / dy) * (f[:, 1:] - f[:, :-1]) def timestep(xp, u, v, p, uold, vold, pold, dx, dy, dt_val, alpha_val, M, N): """Perform one timestep of the shallow water equations. All fields have shape (M+2, N+2) with 1-wide symmetric halos. - The computation domain is [0:M, 0:N] in the interior (indices [1:-1, 1:-1]). - With halo data available, stencil operations can read neighbors without bounds issues. + Mirrors the @gtx.field_operator timestep in swm.py via direct composition: - Following swm_next2_halo2_restructured.py, the stencil operations are: - cu = avg_x(p) * u = 0.5*(p[i+1,j] + p[i,j]) * u[i,j] - cv = avg_y(p) * v = 0.5*(p[i,j+1] + p[i,j]) * v[i,j] - z = (delta_x(v) - delta_y(u)) / avg_x(avg_y(p)) - h = p + 0.5*(avg_x_staggered(u*u) + avg_y_staggered(v*v)) + cu = avg_x(p) * u # (M+1, N+2) + cv = avg_y(p) * v # (M+2, N+1) + z = (delta_x(v) - delta_y(u)) / avg_x(avg_y(p)) # (M+1, N+1) + h = p + 0.5*(avg_x_staggered(u*u) + avg_y_staggered(v*v)) # (M+1, N+1) unew = uold + avg_y_staggered(z)*avg_y_staggered(avg_x(cv))*dt - delta_x(h)*dt vnew = vold - avg_x_staggered(z)*avg_x_staggered(avg_y(cu))*dt - delta_y(h)*dt pnew = pold - delta_x_staggered(cu)*dt - delta_y_staggered(cv)*dt - Where: - avg_x(f)[i,j] = 0.5*(f[i+1,j] + f[i,j]) - avg_y(f)[i,j] = 0.5*(f[i,j+1] + f[i,j]) - avg_x_staggered(f)[i,j]= 0.5*(f[i-1,j] + f[i,j]) - avg_y_staggered(f)[i,j]= 0.5*(f[i,j-1] + f[i,j]) - delta_x(f)[i,j] = (1/dx)*(f[i+1,j] - f[i,j]) - delta_y(f)[i,j] = (1/dy)*(f[i,j+1] - f[i,j]) - delta_x_staggered(f)[i,j] = (1/dx)*(f[i,j] - f[i-1,j]) - delta_y_staggered(f)[i,j] = (1/dy)*(f[i,j] - f[i,j-1]) - - Using the halo layout, if interior is [1:M+1, 1:N+1], then for a point i,j - in the interior, i+1 and i-1 and j+1 and j-1 are all valid array indices. - """ - # Slice aliases for readability (operating on the full (M+2, N+2) array) - # Interior points: [1:M+1, 1:N+1] - # We compute on interior and use neighbors via shifted slices. - - # -- Step 1: compute intermediate fields cu, cv, z, h -- - - # avg_x(p) = 0.5*(p[i+1,j] + p[i,j]) for interior i in [1..M], j in [1..N] - # cu = avg_x(p) * u - cu_interior = ( - 0.5 * (p[2 : M + 2, 1 : N + 1] + p[1 : M + 1, 1 : N + 1]) * u[1 : M + 1, 1 : N + 1] - ) - - # avg_y(p) = 0.5*(p[i,j+1] + p[i,j]) - # cv = avg_y(p) * v - cv_interior = ( - 0.5 * (p[1 : M + 1, 2 : N + 2] + p[1 : M + 1, 1 : N + 1]) * v[1 : M + 1, 1 : N + 1] - ) - - # z = (delta_x(v) - delta_y(u)) / avg_x(avg_y(p)) - # delta_x(v) = (1/dx)*(v[i+1,j] - v[i,j]) - # delta_y(u) = (1/dy)*(u[i,j+1] - u[i,j]) - # avg_x(avg_y(p)) = avg_x(0.5*(p[i,j+1]+p[i,j])) - # = 0.5*(0.5*(p[i+1,j+1]+p[i+1,j]) + 0.5*(p[i,j+1]+p[i,j])) - # = 0.25*(p[i,j] + p[i+1,j] + p[i+1,j+1] + p[i,j+1]) - delta_x_v = (1.0 / dx) * (v[2 : M + 2, 1 : N + 1] - v[1 : M + 1, 1 : N + 1]) - delta_y_u = (1.0 / dy) * (u[1 : M + 1, 2 : N + 2] - u[1 : M + 1, 1 : N + 1]) - avg_xy_p = 0.25 * ( - p[1 : M + 1, 1 : N + 1] - + p[2 : M + 2, 1 : N + 1] - + p[2 : M + 2, 2 : N + 2] - + p[1 : M + 1, 2 : N + 2] - ) - z_interior = (delta_x_v - delta_y_u) / avg_xy_p + Each stencil function reduces shape by 1 only in its operating dimension, so + compositions chain directly without any intermediate _interior_to_halo calls. - # h = p + 0.5*(avg_x_staggered(u*u) + avg_y_staggered(v*v)) - # avg_x_staggered(u*u) = 0.5*(u[i-1,j]^2 + u[i,j]^2) - # avg_y_staggered(v*v) = 0.5*(v[i,j-1]^2 + v[i,j]^2) + Slice convention for extracting the (M, N) interior from composed results: + forward avg/delta in x → rows [1:M+1, ...] (index i means position i) + backward avg/delta in x → rows [0:M, ...] (index i means position i+1) + forward avg/delta in y → cols [..., 1:N+1] + backward avg/delta in y → cols [..., 0:N ] + """ uu = u * u vv = v * v - avg_xs_uu = 0.5 * (uu[0:M, 1 : N + 1] + uu[1 : M + 1, 1 : N + 1]) - avg_ys_vv = 0.5 * (vv[1 : M + 1, 0:N] + vv[1 : M + 1, 1 : N + 1]) - h_interior = p[1 : M + 1, 1 : N + 1] + 0.5 * (avg_xs_uu + avg_ys_vv) - - # Embed cu, cv, z, h into (M+2, N+2) arrays with periodic halos - cu_full = _interior_to_halo(xp, cu_interior) - cv_full = _interior_to_halo(xp, cv_interior) - z_full = _interior_to_halo(xp, z_interior) - h_full = _interior_to_halo(xp, h_interior) - - # -- Step 2: compute new u, v, p -- - - # unew = uold + avg_y_staggered(z)*avg_y_staggered(avg_x(cv))*dt - delta_x(h)*dt - # avg_y_staggered(z) = 0.5*(z[i,j-1] + z[i,j]) - avg_ys_z = 0.5 * (z_full[1 : M + 1, 0:N] + z_full[1 : M + 1, 1 : N + 1]) - # avg_x(cv) = 0.5*(cv[i+1,j] + cv[i,j]), then avg_y_staggered needs halo - avg_x_cv_interior = 0.5 * (cv_full[2 : M + 2, 1 : N + 1] + cv_full[1 : M + 1, 1 : N + 1]) - avg_x_cv_full = _interior_to_halo(xp, avg_x_cv_interior) - avg_ys_avg_x_cv = 0.5 * (avg_x_cv_full[1 : M + 1, 0:N] + avg_x_cv_full[1 : M + 1, 1 : N + 1]) - - # delta_x(h) = (1/dx)*(h[i+1,j] - h[i,j]) - delta_x_h = (1.0 / dx) * (h_full[2 : M + 2, 1 : N + 1] - h_full[1 : M + 1, 1 : N + 1]) - + # cu[i,j] = 0.5*(p[i+1,j]+p[i,j]) * u[i,j] for i=0..M, j=0..N+1 → (M+1, N+2) + cu = avg_x(p) * u[:-1, :] + # cv[i,j] = 0.5*(p[i,j+1]+p[i,j]) * v[i,j] for i=0..M+1, j=0..N → (M+2, N+1) + cv = avg_y(p) * v[:, :-1] + + # z_wide at positions i=0..M, j=0..N (interior + 1 halo needed for staggered avgs) + # delta_x(v) → (M+1,N+2), slice [:,:N+1] keeps j=0..N + # delta_y(u) → (M+2,N+1), slice [:M+1,:] keeps i=0..M + # avg_x(avg_y(p)) → (M+1,N+1) exactly + z_wide = (delta_x(dx, v)[:, : N + 1] - delta_y(dy, u)[: M + 1, :]) / avg_x( + avg_y(p) + ) # (M+1, N+1) + + # h_wide at positions i=1..M+1, j=1..N+1 (interior + 1 extra for forward delta) + # avg_x_staggered(uu)[i,j] = avg_x(uu)[i-1,j] → avg_x(uu)[0:M+1, 1:N+2] + # avg_y_staggered(vv)[i,j] = avg_y(vv)[i,j-1] → avg_y(vv)[1:M+2, 0:N+1] + h_wide = p[1 : M + 2, 1 : N + 2] + 0.5 * ( + avg_x(uu)[0 : M + 1, 1 : N + 2] + avg_y(vv)[1 : M + 2, 0 : N + 1] + ) # (M+1, N+1) + + # avg_y_staggered(z)[i,j] = avg_y(z_wide)[i, j-1] → [1:M+1, 0:N] + # avg_y_staggered(avg_x(cv))[i,j] = avg_y(avg_x(cv))[i, j-1] → [1:M+1, 0:N] + # delta_x(h)[i,j] = delta_x(h_wide)[i-1, j-1] → [0:M, 0:N] unew_interior = ( - uold[1 : M + 1, 1 : N + 1] + avg_ys_z * avg_ys_avg_x_cv * dt_val - delta_x_h * dt_val + uold + + avg_y(z_wide)[1 : M + 1, 0:N] * avg_y(avg_x(cv))[1 : M + 1, 0:N] * dt_val + - delta_x(dx, h_wide)[0:M, 0:N] * dt_val ) - - # vnew = vold - avg_x_staggered(z)*avg_x_staggered(avg_y(cu))*dt - delta_y(h)*dt - avg_xs_z = 0.5 * (z_full[0:M, 1 : N + 1] + z_full[1 : M + 1, 1 : N + 1]) - # avg_y(cu) = 0.5*(cu[i,j+1] + cu[i,j]), then avg_x_staggered needs halo - avg_y_cu_interior = 0.5 * (cu_full[1 : M + 1, 2 : N + 2] + cu_full[1 : M + 1, 1 : N + 1]) - avg_y_cu_full = _interior_to_halo(xp, avg_y_cu_interior) - avg_xs_avg_y_cu = 0.5 * (avg_y_cu_full[0:M, 1 : N + 1] + avg_y_cu_full[1 : M + 1, 1 : N + 1]) - - # delta_y(h) = (1/dy)*(h[i,j+1] - h[i,j]) - delta_y_h = (1.0 / dy) * (h_full[1 : M + 1, 2 : N + 2] - h_full[1 : M + 1, 1 : N + 1]) - + # avg_x_staggered(z)[i,j] = avg_x(z_wide)[i-1, j] → [0:M, 1:N+1] + # avg_x_staggered(avg_y(cu))[i,j] = avg_x(avg_y(cu))[i-1, j] → [0:M, 1:N+1] + # delta_y(h)[i,j] = delta_y(h_wide)[i-1, j-1] → [0:M, 0:N] vnew_interior = ( - vold[1 : M + 1, 1 : N + 1] - avg_xs_z * avg_xs_avg_y_cu * dt_val - delta_y_h * dt_val + vold + - avg_x(z_wide)[0:M, 1 : N + 1] * avg_x(avg_y(cu))[0:M, 1 : N + 1] * dt_val + - delta_y(dy, h_wide)[0:M, 0:N] * dt_val + ) + # delta_x_staggered(cu)[i,j] = delta_x(cu)[i-1, j] → [0:M, 1:N+1] + # delta_y_staggered(cv)[i,j] = delta_y(cv)[i, j-1] → [1:M+1, 0:N] + pnew_interior = ( + pold - delta_x(dx, cu)[0:M, 1 : N + 1] * dt_val - delta_y(dy, cv)[1 : M + 1, 0:N] * dt_val ) - # pnew = pold - delta_x_staggered(cu)*dt - delta_y_staggered(cv)*dt - delta_xs_cu = (1.0 / dx) * (cu_full[1 : M + 1, 1 : N + 1] - cu_full[0:M, 1 : N + 1]) - delta_ys_cv = (1.0 / dy) * (cv_full[1 : M + 1, 1 : N + 1] - cv_full[1 : M + 1, 0:N]) - - pnew_interior = pold[1 : M + 1, 1 : N + 1] - delta_xs_cu * dt_val - delta_ys_cv * dt_val - - # Build full arrays with halos - unew = _interior_to_halo(xp, unew_interior) - vnew = _interior_to_halo(xp, vnew_interior) - pnew = _interior_to_halo(xp, pnew_interior) - - # -- Step 3: time filter (update old fields) -- - uold_new_interior = u[1 : M + 1, 1 : N + 1] + alpha_val * ( - unew[1 : M + 1, 1 : N + 1] - 2.0 * u[1 : M + 1, 1 : N + 1] + uold[1 : M + 1, 1 : N + 1] + # -- Time filter (update old fields) -- + uold_new = u[1 : M + 1, 1 : N + 1] + alpha_val * ( + unew_interior - 2.0 * u[1 : M + 1, 1 : N + 1] + uold ) - vold_new_interior = v[1 : M + 1, 1 : N + 1] + alpha_val * ( - vnew[1 : M + 1, 1 : N + 1] - 2.0 * v[1 : M + 1, 1 : N + 1] + vold[1 : M + 1, 1 : N + 1] + vold_new = v[1 : M + 1, 1 : N + 1] + alpha_val * ( + vnew_interior - 2.0 * v[1 : M + 1, 1 : N + 1] + vold ) - pold_new_interior = p[1 : M + 1, 1 : N + 1] + alpha_val * ( - pnew[1 : M + 1, 1 : N + 1] - 2.0 * p[1 : M + 1, 1 : N + 1] + pold[1 : M + 1, 1 : N + 1] + pold_new = p[1 : M + 1, 1 : N + 1] + alpha_val * ( + pnew_interior - 2.0 * p[1 : M + 1, 1 : N + 1] + pold ) - uold_new = _interior_to_halo(xp, uold_new_interior) - vold_new = _interior_to_halo(xp, vold_new_interior) - pold_new = _interior_to_halo(xp, pold_new_interior) + # Build full arrays with halos for all returned fields. + unew = _interior_to_halo(xp, unew_interior) + vnew = _interior_to_halo(xp, vnew_interior) + pnew = _interior_to_halo(xp, pnew_interior) return unew, vnew, pnew, uold_new, vold_new, pold_new @@ -405,9 +381,9 @@ def main(): p = array_api_strict.asarray(p_np, dtype=array_api_strict.float64) xp = array_api_strict - uold = xp.asarray(u, copy=True) - vold = xp.asarray(v, copy=True) - pold = xp.asarray(p, copy=True) + uold = xp.asarray(u, copy=True)[1 : M + 1, 1 : N + 1] + vold = xp.asarray(v, copy=True)[1 : M + 1, 1 : N + 1] + pold = xp.asarray(p, copy=True)[1 : M + 1, 1 : N + 1] if L_OUT: print(f" Number of points in the x direction: {M}") From 2799ddd9dd132838779303324b9854da52e5a392 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Tue, 3 Mar 2026 08:18:48 +0100 Subject: [PATCH 09/15] reuse initial_conditions --- examples/next/swm/swm_array_api.py | 60 +----------------------------- 1 file changed, 2 insertions(+), 58 deletions(-) diff --git a/examples/next/swm/swm_array_api.py b/examples/next/swm/swm_array_api.py index cd6eced31b..f932c78b5b 100644 --- a/examples/next/swm/swm_array_api.py +++ b/examples/next/swm/swm_array_api.py @@ -31,6 +31,7 @@ import argparse from time import perf_counter from array_api_compat import array_namespace +import initial_conditions def _get_array_module(name): @@ -73,36 +74,6 @@ def _to_numpy(arr): return np.asarray(arr) -def initialize_interior(xp, M, N, dx, dy, a): - """Create initial u, v, p fields on the interior (M x N) grid.""" - pi = 4.0 * xp.atan(xp.asarray(1.0, dtype=xp.float64)) - tpi = 2.0 * pi - d_i = tpi / M - d_j = tpi / N - el = N * dx - pcf = (pi * pi * a * a) / (el * el) - - i_vals = xp.arange(0, M + 1, dtype=xp.float64) - j_vals = xp.arange(0, N + 1, dtype=xp.float64) - i_interior = xp.arange(0, M, dtype=xp.float64) - j_interior = xp.arange(0, N, dtype=xp.float64) - - # psi: (M+1) x (N+1), p: (M) x (N), u: (M) x (N), v: (M) x (N) - # Use reshape to create 2D broadcasting: column * row - i_col = xp.reshape(i_vals, (M + 1, 1)) # (M+1, 1) - j_row = xp.reshape(j_vals, (1, N + 1)) # (1, N+1) - psi = a * xp.sin((i_col + 0.5) * d_i) * xp.sin((j_row + 0.5) * d_j) - - i_int_col = xp.reshape(i_interior, (M, 1)) # (M, 1) - j_int_row = xp.reshape(j_interior, (1, N)) # (1, N) - p = pcf * (xp.cos(2.0 * i_int_col * d_i) + xp.cos(2.0 * j_int_row * d_j)) + 50000.0 - - u = -(psi[1:, 1:] - psi[1:, :-1]) / dy - v = (psi[1:, 1:] - psi[:-1, 1:]) / dx - - return u, v, p - - def _interior_to_halo(xp, interior): """Build (M+2, N+2) array from (M, N) interior with periodic halos. @@ -246,33 +217,6 @@ def timestep(xp, u, v, p, uold, vold, pold, dx, dy, dt_val, alpha_val, M, N): return unew, vnew, pnew, uold_new, vold_new, pold_new -def initialize_2halo(xp, M, N, dx, dy, a): - """Initialize fields with 2-halo (1 on each side) symmetric padding.""" - u, v, p = initialize_interior(xp, M, N, dx, dy, a) - return _interior_to_halo(xp, u), _interior_to_halo(xp, v), _interior_to_halo(xp, p) - - -def to_reference_layout(arr, M, N): - """Convert from 2-halo (M+2, N+2) layout to reference (M+1, N+1) layout. - - The reference data uses an asymmetric layout where: - u: padded with (1,0) in x and (0,1) in y -> u_ref = [halo; interior_rows][interior_cols; halo] - v: padded with (0,1) in x and (1,0) in y - p: padded with (0,1) in x and (0,1) in y - - For the 2-halo symmetric layout, the interior is at [1:M+1, 1:N+1]. - The reference format stores M+1 x N+1 values. - - For u: ref has rows [M, 0..M-1] and cols [0..N-1, 0] -> u_ref = u_2halo[0:M+1, 1:N+2] - which is u_2halo[:-1, 1:] - For v: ref has rows [0..N-1, 0] and cols [N, 0..N-1] -> v_ref = u_2halo[1:M+2, 0:N+1] - which is v_2halo[1:, :-1] - For p: ref has rows [0..M-1, 0] and cols [0..N-1, 0] -> p_ref = p_2halo[1:M+2, 1:N+2] - which is p_2halo[1:, 1:] - """ - pass # implemented inline in validation - - def main(): parser = argparse.ArgumentParser(description="Shallow Water Model (Array API)") parser.add_argument( @@ -366,7 +310,7 @@ def main(): print(f"Running with {args.array_library} via array_api_compat namespace") # Initialize fields - u, v, p = initialize_2halo(xp, M, N, dx, dy, a) + u, v, p = initial_conditions.initialize_2halo(xp, M, N, dx, dy, a) if args.strict and args.array_library != "array_api_strict": # Convert to array_api_strict arrays From cebdbd978b7b959f9ceea6fb902a4effdacdaa8c Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Tue, 3 Mar 2026 08:19:45 +0100 Subject: [PATCH 10/15] Revert "reuse initial_conditions" This reverts commit 2799ddd9dd132838779303324b9854da52e5a392. --- examples/next/swm/swm_array_api.py | 60 +++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/examples/next/swm/swm_array_api.py b/examples/next/swm/swm_array_api.py index f932c78b5b..cd6eced31b 100644 --- a/examples/next/swm/swm_array_api.py +++ b/examples/next/swm/swm_array_api.py @@ -31,7 +31,6 @@ import argparse from time import perf_counter from array_api_compat import array_namespace -import initial_conditions def _get_array_module(name): @@ -74,6 +73,36 @@ def _to_numpy(arr): return np.asarray(arr) +def initialize_interior(xp, M, N, dx, dy, a): + """Create initial u, v, p fields on the interior (M x N) grid.""" + pi = 4.0 * xp.atan(xp.asarray(1.0, dtype=xp.float64)) + tpi = 2.0 * pi + d_i = tpi / M + d_j = tpi / N + el = N * dx + pcf = (pi * pi * a * a) / (el * el) + + i_vals = xp.arange(0, M + 1, dtype=xp.float64) + j_vals = xp.arange(0, N + 1, dtype=xp.float64) + i_interior = xp.arange(0, M, dtype=xp.float64) + j_interior = xp.arange(0, N, dtype=xp.float64) + + # psi: (M+1) x (N+1), p: (M) x (N), u: (M) x (N), v: (M) x (N) + # Use reshape to create 2D broadcasting: column * row + i_col = xp.reshape(i_vals, (M + 1, 1)) # (M+1, 1) + j_row = xp.reshape(j_vals, (1, N + 1)) # (1, N+1) + psi = a * xp.sin((i_col + 0.5) * d_i) * xp.sin((j_row + 0.5) * d_j) + + i_int_col = xp.reshape(i_interior, (M, 1)) # (M, 1) + j_int_row = xp.reshape(j_interior, (1, N)) # (1, N) + p = pcf * (xp.cos(2.0 * i_int_col * d_i) + xp.cos(2.0 * j_int_row * d_j)) + 50000.0 + + u = -(psi[1:, 1:] - psi[1:, :-1]) / dy + v = (psi[1:, 1:] - psi[:-1, 1:]) / dx + + return u, v, p + + def _interior_to_halo(xp, interior): """Build (M+2, N+2) array from (M, N) interior with periodic halos. @@ -217,6 +246,33 @@ def timestep(xp, u, v, p, uold, vold, pold, dx, dy, dt_val, alpha_val, M, N): return unew, vnew, pnew, uold_new, vold_new, pold_new +def initialize_2halo(xp, M, N, dx, dy, a): + """Initialize fields with 2-halo (1 on each side) symmetric padding.""" + u, v, p = initialize_interior(xp, M, N, dx, dy, a) + return _interior_to_halo(xp, u), _interior_to_halo(xp, v), _interior_to_halo(xp, p) + + +def to_reference_layout(arr, M, N): + """Convert from 2-halo (M+2, N+2) layout to reference (M+1, N+1) layout. + + The reference data uses an asymmetric layout where: + u: padded with (1,0) in x and (0,1) in y -> u_ref = [halo; interior_rows][interior_cols; halo] + v: padded with (0,1) in x and (1,0) in y + p: padded with (0,1) in x and (0,1) in y + + For the 2-halo symmetric layout, the interior is at [1:M+1, 1:N+1]. + The reference format stores M+1 x N+1 values. + + For u: ref has rows [M, 0..M-1] and cols [0..N-1, 0] -> u_ref = u_2halo[0:M+1, 1:N+2] + which is u_2halo[:-1, 1:] + For v: ref has rows [0..N-1, 0] and cols [N, 0..N-1] -> v_ref = u_2halo[1:M+2, 0:N+1] + which is v_2halo[1:, :-1] + For p: ref has rows [0..M-1, 0] and cols [0..N-1, 0] -> p_ref = p_2halo[1:M+2, 1:N+2] + which is p_2halo[1:, 1:] + """ + pass # implemented inline in validation + + def main(): parser = argparse.ArgumentParser(description="Shallow Water Model (Array API)") parser.add_argument( @@ -310,7 +366,7 @@ def main(): print(f"Running with {args.array_library} via array_api_compat namespace") # Initialize fields - u, v, p = initial_conditions.initialize_2halo(xp, M, N, dx, dy, a) + u, v, p = initialize_2halo(xp, M, N, dx, dy, a) if args.strict and args.array_library != "array_api_strict": # Convert to array_api_strict arrays From 0ec8e8b45af7d6375efd175d9c6a8a063059c8c0 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Tue, 3 Mar 2026 08:28:55 +0100 Subject: [PATCH 11/15] reuse initial_conditions and fix halo function --- examples/next/swm/initial_conditions.py | 18 ++++++++---- examples/next/swm/swm_array_api.py | 39 ++----------------------- 2 files changed, 14 insertions(+), 43 deletions(-) diff --git a/examples/next/swm/initial_conditions.py b/examples/next/swm/initial_conditions.py index d975485044..9866642e02 100644 --- a/examples/next/swm/initial_conditions.py +++ b/examples/next/swm/initial_conditions.py @@ -52,17 +52,23 @@ def apply_periodic_halo(arr, top=0, bottom=0, left=0, right=0): """ xp = arr.__array_namespace__() - # Apply vertical padding + # Build vertical padding from the original array before any modification + parts_v = [] if top > 0: - arr = xp.concatenate([arr[-top:, :], arr], axis=0) + parts_v.append(arr[-top:, :]) + parts_v.append(arr) if bottom > 0: - arr = xp.concatenate([arr, arr[:bottom, :]], axis=0) + parts_v.append(arr[:bottom, :]) + arr = xp.concatenate(parts_v, axis=0) - # Apply horizontal padding + # Build horizontal padding from the vertically-padded array + parts_h = [] if left > 0: - arr = xp.concatenate([arr[:, -left:], arr], axis=1) + parts_h.append(arr[:, -left:]) + parts_h.append(arr) if right > 0: - arr = xp.concatenate([arr, arr[:, :right]], axis=1) + parts_h.append(arr[:, :right]) + arr = xp.concatenate(parts_h, axis=1) return arr diff --git a/examples/next/swm/swm_array_api.py b/examples/next/swm/swm_array_api.py index cd6eced31b..b1ad4336e6 100644 --- a/examples/next/swm/swm_array_api.py +++ b/examples/next/swm/swm_array_api.py @@ -31,6 +31,7 @@ import argparse from time import perf_counter from array_api_compat import array_namespace +import initial_conditions def _get_array_module(name): @@ -73,36 +74,6 @@ def _to_numpy(arr): return np.asarray(arr) -def initialize_interior(xp, M, N, dx, dy, a): - """Create initial u, v, p fields on the interior (M x N) grid.""" - pi = 4.0 * xp.atan(xp.asarray(1.0, dtype=xp.float64)) - tpi = 2.0 * pi - d_i = tpi / M - d_j = tpi / N - el = N * dx - pcf = (pi * pi * a * a) / (el * el) - - i_vals = xp.arange(0, M + 1, dtype=xp.float64) - j_vals = xp.arange(0, N + 1, dtype=xp.float64) - i_interior = xp.arange(0, M, dtype=xp.float64) - j_interior = xp.arange(0, N, dtype=xp.float64) - - # psi: (M+1) x (N+1), p: (M) x (N), u: (M) x (N), v: (M) x (N) - # Use reshape to create 2D broadcasting: column * row - i_col = xp.reshape(i_vals, (M + 1, 1)) # (M+1, 1) - j_row = xp.reshape(j_vals, (1, N + 1)) # (1, N+1) - psi = a * xp.sin((i_col + 0.5) * d_i) * xp.sin((j_row + 0.5) * d_j) - - i_int_col = xp.reshape(i_interior, (M, 1)) # (M, 1) - j_int_row = xp.reshape(j_interior, (1, N)) # (1, N) - p = pcf * (xp.cos(2.0 * i_int_col * d_i) + xp.cos(2.0 * j_int_row * d_j)) + 50000.0 - - u = -(psi[1:, 1:] - psi[1:, :-1]) / dy - v = (psi[1:, 1:] - psi[:-1, 1:]) / dx - - return u, v, p - - def _interior_to_halo(xp, interior): """Build (M+2, N+2) array from (M, N) interior with periodic halos. @@ -246,12 +217,6 @@ def timestep(xp, u, v, p, uold, vold, pold, dx, dy, dt_val, alpha_val, M, N): return unew, vnew, pnew, uold_new, vold_new, pold_new -def initialize_2halo(xp, M, N, dx, dy, a): - """Initialize fields with 2-halo (1 on each side) symmetric padding.""" - u, v, p = initialize_interior(xp, M, N, dx, dy, a) - return _interior_to_halo(xp, u), _interior_to_halo(xp, v), _interior_to_halo(xp, p) - - def to_reference_layout(arr, M, N): """Convert from 2-halo (M+2, N+2) layout to reference (M+1, N+1) layout. @@ -366,7 +331,7 @@ def main(): print(f"Running with {args.array_library} via array_api_compat namespace") # Initialize fields - u, v, p = initialize_2halo(xp, M, N, dx, dy, a) + u, v, p = initial_conditions.initialize_2halo(xp, M, N, dx, dy, a) if args.strict and args.array_library != "array_api_strict": # Convert to array_api_strict arrays From f991f4d0cca9b62017bb56e982279591b2870c61 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Tue, 3 Mar 2026 08:45:21 +0100 Subject: [PATCH 12/15] simplify --- examples/next/swm/swm_array_api.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/examples/next/swm/swm_array_api.py b/examples/next/swm/swm_array_api.py index b1ad4336e6..0c1b10b01a 100644 --- a/examples/next/swm/swm_array_api.py +++ b/examples/next/swm/swm_array_api.py @@ -80,17 +80,8 @@ def _interior_to_halo(xp, interior): Wraps the interior periodically: last col -> left halo, first col -> right halo, last row -> top halo, first row -> bottom halo. """ - M, N = interior.shape - - # Wrap columns: [last_col | interior | first_col] - left_col = interior[:, N - 1 : N] # (M, 1) - right_col = interior[:, 0:1] # (M, 1) - middle_rows = xp.concat([left_col, interior, right_col], axis=1) # (M, N+2) - - # Wrap rows: [last_row | middle | first_row] - top_row = middle_rows[M - 1 : M, :] # (1, N+2) - bottom_row = middle_rows[0:1, :] # (1, N+2) - return xp.concat([top_row, middle_rows, bottom_row], axis=0) # (M+2, N+2) + middle_rows = xp.concat([interior[:, -1:], interior, interior[:, :1]], axis=1) + return xp.concat([middle_rows[-1:, :], middle_rows, middle_rows[:1, :]], axis=0) # --------------------------------------------------------------------------- From e90e2c3204366480eb4890926b57d7ce9bd2a192 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Tue, 3 Mar 2026 09:49:27 +0100 Subject: [PATCH 13/15] update comments --- examples/next/swm/swm_array_api.py | 131 ++++++++++++++--------------- 1 file changed, 65 insertions(+), 66 deletions(-) diff --git a/examples/next/swm/swm_array_api.py b/examples/next/swm/swm_array_api.py index 0c1b10b01a..2ddca8e54d 100644 --- a/examples/next/swm/swm_array_api.py +++ b/examples/next/swm/swm_array_api.py @@ -9,9 +9,8 @@ """ Shallow Water Model using the Python Array API standard. -This implementation uses symmetric halo lines (1 on each side) for all fields, -following the approach of swm_next2_halo2_restructured.py. The periodic boundary -conditions are applied via halo exchange rather than asymmetric padding. +This implementation uses symmetric halo lines (1 on each side) for all fields. +Periodic boundary conditions are applied via halo exchange. Compatible with any array library supporting the Array API standard: numpy, jax.numpy, cupy, array_api_strict, etc. @@ -85,19 +84,28 @@ def _interior_to_halo(xp, interior): # --------------------------------------------------------------------------- -# Stencil building blocks – mirror the @gtx.field_operator functions in swm.py. +# Stencil building blocks following Sadourny (1975), J. Atm. Sci. 32:680–688. # -# Each function reduces shape by 1 only in its operating dimension, preserving -# the full extent in the other dimension. No M/N parameters are needed: +# The model uses an Arakawa C-grid with four types of grid point: +# p-point at (i, j ) — pressure/height h +# u-point at (i+½, j ) — zonal velocity u (staggered ½-cell in x) +# v-point at (i, j+½) — meridional velocity v (staggered ½-cell in y) +# ζ-point at (i+½, j+½) — vorticity ζ (staggered ½-cell in both) # -# avg_x(f) / delta_x(dx, f) : (..., Mx, My) → (..., Mx-1, My) -# avg_y(f) / delta_y(dy, f) : (..., Mx, My) → (..., Mx, My-1) +# avg_x / delta_x shift the x-position by ½: p ↔ u, v ↔ ζ +# avg_y / delta_y shift the y-position by ½: p ↔ v, u ↔ ζ # -# Both "forward" (avg_x) and "staggered/backward" (avg_x_staggered) averages -# produce the same array 0.5*(f[1:]+f[:-1]). The semantic difference is which -# output slice maps to the interior — callers select the appropriate rows/cols: -# forward in x → interior at rows [1:M+1, ...] (index i maps to position i) -# backward in x → interior at rows [0:M, ...] (index i maps to position i+1) +# Each function reduces shape by 1 in its operating dimension: +# avg_x(f) / delta_x(dx, f) : (Mx, My) → (Mx-1, My) +# avg_y(f) / delta_y(dy, f) : (Mx, My) → (Mx, My-1) +# +# For an (M+2, N+2) halo array the interior of any point type is at [1:M+1, 1:N+1]. +# After an x-stencil op the (M+1, …) result's interior slice depends on input type: +# p- or v-point input → u- or ζ-point output, interior at [1:M+1, ...] +# u- or ζ-point input → p- or v-point output, interior at [0:M, ...] +# After a y-stencil op: +# p- or u-point input → v- or ζ-point output, interior at [..., 1:N+1] +# v- or ζ-point input → p- or u-point output, interior at [..., 0:N ] # --------------------------------------------------------------------------- @@ -125,66 +133,78 @@ def timestep(xp, u, v, p, uold, vold, pold, dx, dy, dt_val, alpha_val, M, N): """Perform one timestep of the shallow water equations. All fields have shape (M+2, N+2) with 1-wide symmetric halos. - Mirrors the @gtx.field_operator timestep in swm.py via direct composition: + Implements the Sadourny (1975) Arakawa C-grid scheme via direct array composition. + Grid-point types follow Sadourny's notation (p-, u-, v-, ζ-points): - cu = avg_x(p) * u # (M+1, N+2) - cv = avg_y(p) * v # (M+2, N+1) - z = (delta_x(v) - delta_y(u)) / avg_x(avg_y(p)) # (M+1, N+1) - h = p + 0.5*(avg_x_staggered(u*u) + avg_y_staggered(v*v)) # (M+1, N+1) + cu = avg_x(p) * u # u-point (i+½, j) + cv = avg_y(p) * v # v-point (i, j+½) + z = (delta_x(v) - delta_y(u)) / avg_x(avg_y(p)) # ζ-point (i+½, j+½) + h = p + 0.5*(avg_x(u²) + avg_y(v²)) # p-point (i, j) - unew = uold + avg_y_staggered(z)*avg_y_staggered(avg_x(cv))*dt - delta_x(h)*dt - vnew = vold - avg_x_staggered(z)*avg_x_staggered(avg_y(cu))*dt - delta_y(h)*dt - pnew = pold - delta_x_staggered(cu)*dt - delta_y_staggered(cv)*dt + unew at u-point: avg_y(z) [ζ→u] * avg_y(avg_x(cv)) [v→ζ→u] * dt + − delta_x(h) [p→u] * dt + vnew at v-point: −avg_x(z) [ζ→v] * avg_x(avg_y(cu)) [u→ζ→v] * dt + − delta_y(h) [p→v] * dt + pnew at p-point: −delta_x(cu) [u→p] * dt + − delta_y(cv) [v→p] * dt Each stencil function reduces shape by 1 only in its operating dimension, so compositions chain directly without any intermediate _interior_to_halo calls. - Slice convention for extracting the (M, N) interior from composed results: - forward avg/delta in x → rows [1:M+1, ...] (index i means position i) - backward avg/delta in x → rows [0:M, ...] (index i means position i+1) - forward avg/delta in y → cols [..., 1:N+1] - backward avg/delta in y → cols [..., 0:N ] + Slice convention for extracting the (M, N) interior from a composed result + (see stencil-block header for the full rule): + p- or v-point input → x-result at u- or ζ-point: interior rows [1:M+1, ...] + u- or ζ-point input → x-result at p- or v-point: interior rows [0:M, ...] + p- or u-point input → y-result at v- or ζ-point: interior cols [..., 1:N+1] + v- or ζ-point input → y-result at p- or u-point: interior cols [..., 0:N ] """ uu = u * u vv = v * v - # cu[i,j] = 0.5*(p[i+1,j]+p[i,j]) * u[i,j] for i=0..M, j=0..N+1 → (M+1, N+2) + # cu at u-points: avg_x(p) [p→u] * u[0:M+1,:] → shape (M+1, N+2) cu = avg_x(p) * u[:-1, :] - # cv[i,j] = 0.5*(p[i,j+1]+p[i,j]) * v[i,j] for i=0..M+1, j=0..N → (M+2, N+1) + # cv at v-points: avg_y(p) [p→v] * v[:,0:N+1] → shape (M+2, N+1) cv = avg_y(p) * v[:, :-1] - # z_wide at positions i=0..M, j=0..N (interior + 1 halo needed for staggered avgs) - # delta_x(v) → (M+1,N+2), slice [:,:N+1] keeps j=0..N - # delta_y(u) → (M+2,N+1), slice [:M+1,:] keeps i=0..M - # avg_x(avg_y(p)) → (M+1,N+1) exactly + # z_wide at ζ-points (i+½, j+½), shape (M+1, N+1): + # delta_x(v) [v→ζ]: shape (M+1, N+2); [:, :N+1] trims to (M+1, N+1) + # delta_y(u) [u→ζ]: shape (M+2, N+1); [:M+1, :] trims to (M+1, N+1) + # avg_x(avg_y(p)) [p→v→ζ]: shape (M+1, N+1) z_wide = (delta_x(dx, v)[:, : N + 1] - delta_y(dy, u)[: M + 1, :]) / avg_x( avg_y(p) - ) # (M+1, N+1) + ) # (M+1, N+1), ζ-points - # h_wide at positions i=1..M+1, j=1..N+1 (interior + 1 extra for forward delta) - # avg_x_staggered(uu)[i,j] = avg_x(uu)[i-1,j] → avg_x(uu)[0:M+1, 1:N+2] - # avg_y_staggered(vv)[i,j] = avg_y(vv)[i,j-1] → avg_y(vv)[1:M+2, 0:N+1] + # h_wide at p-points covering x=1..M+1, y=1..N+1 (interior + right/top halo), + # shape (M+1, N+1). The extended range is needed by the subsequent delta_x/delta_y. + # p[1:M+2, 1:N+2] : p-points at x=1..M+1, y=1..N+1 + # avg_x(uu) [u→p]: result[k] at x=k+1; slice [0:M+1, 1:N+2] → x=1..M+1 + # avg_y(vv) [v→p]: result[l] at y=l+1; slice [1:M+2, 0:N+1] → y=1..N+1 h_wide = p[1 : M + 2, 1 : N + 2] + 0.5 * ( avg_x(uu)[0 : M + 1, 1 : N + 2] + avg_y(vv)[1 : M + 2, 0 : N + 1] - ) # (M+1, N+1) + ) # (M+1, N+1), p-points - # avg_y_staggered(z)[i,j] = avg_y(z_wide)[i, j-1] → [1:M+1, 0:N] - # avg_y_staggered(avg_x(cv))[i,j] = avg_y(avg_x(cv))[i, j-1] → [1:M+1, 0:N] - # delta_x(h)[i,j] = delta_x(h_wide)[i-1, j-1] → [0:M, 0:N] + # unew at interior u-points: all three terms evaluated at (i+½, j) for i=1..M, j=1..N. + # avg_y(z_wide) [ζ→u]: z_wide ζ-point → avg_y → u-point; interior at [1:M+1, 0:N] + # avg_y(avg_x(cv)) [v→ζ→u]: cv v-point → avg_x →ζ-point → avg_y → u-point; same slice + # delta_x(h_wide) [p→u]: h_wide p-point at x=k+1 → delta_x → u-point at x=k+3/2; + # interior u at x=3/2..M+1/2 ↔ slice [0:M, 0:N] unew_interior = ( uold + avg_y(z_wide)[1 : M + 1, 0:N] * avg_y(avg_x(cv))[1 : M + 1, 0:N] * dt_val - delta_x(dx, h_wide)[0:M, 0:N] * dt_val ) - # avg_x_staggered(z)[i,j] = avg_x(z_wide)[i-1, j] → [0:M, 1:N+1] - # avg_x_staggered(avg_y(cu))[i,j] = avg_x(avg_y(cu))[i-1, j] → [0:M, 1:N+1] - # delta_y(h)[i,j] = delta_y(h_wide)[i-1, j-1] → [0:M, 0:N] + # vnew at interior v-points: all three terms evaluated at (i, j+½) for i=1..M, j=1..N. + # avg_x(z_wide) [ζ→v]: z_wide ζ-point → avg_x → v-point; interior at [0:M, 1:N+1] + # avg_x(avg_y(cu)) [u→ζ→v]: cu u-point → avg_y → ζ-point → avg_x → v-point; same slice + # delta_y(h_wide) [p→v]: h_wide p-point at y=l+1 → delta_y → v-point at y=l+3/2; + # interior v at y=3/2..N+1/2 ↔ slice [0:M, 0:N] vnew_interior = ( vold - avg_x(z_wide)[0:M, 1 : N + 1] * avg_x(avg_y(cu))[0:M, 1 : N + 1] * dt_val - delta_y(dy, h_wide)[0:M, 0:N] * dt_val ) - # delta_x_staggered(cu)[i,j] = delta_x(cu)[i-1, j] → [0:M, 1:N+1] - # delta_y_staggered(cv)[i,j] = delta_y(cv)[i, j-1] → [1:M+1, 0:N] + # pnew at interior p-points: both terms evaluated at (i, j) for i=1..M, j=1..N. + # delta_x(cu) [u→p]: cu u-point → delta_x → p-point; interior at [0:M, 1:N+1] + # delta_y(cv) [v→p]: cv v-point → delta_y → p-point; interior at [1:M+1, 0:N] pnew_interior = ( pold - delta_x(dx, cu)[0:M, 1 : N + 1] * dt_val - delta_y(dy, cv)[1 : M + 1, 0:N] * dt_val ) @@ -208,27 +228,6 @@ def timestep(xp, u, v, p, uold, vold, pold, dx, dy, dt_val, alpha_val, M, N): return unew, vnew, pnew, uold_new, vold_new, pold_new -def to_reference_layout(arr, M, N): - """Convert from 2-halo (M+2, N+2) layout to reference (M+1, N+1) layout. - - The reference data uses an asymmetric layout where: - u: padded with (1,0) in x and (0,1) in y -> u_ref = [halo; interior_rows][interior_cols; halo] - v: padded with (0,1) in x and (1,0) in y - p: padded with (0,1) in x and (0,1) in y - - For the 2-halo symmetric layout, the interior is at [1:M+1, 1:N+1]. - The reference format stores M+1 x N+1 values. - - For u: ref has rows [M, 0..M-1] and cols [0..N-1, 0] -> u_ref = u_2halo[0:M+1, 1:N+2] - which is u_2halo[:-1, 1:] - For v: ref has rows [0..N-1, 0] and cols [N, 0..N-1] -> v_ref = u_2halo[1:M+2, 0:N+1] - which is v_2halo[1:, :-1] - For p: ref has rows [0..M-1, 0] and cols [0..N-1, 0] -> p_ref = p_2halo[1:M+2, 1:N+2] - which is p_2halo[1:, 1:] - """ - pass # implemented inline in validation - - def main(): parser = argparse.ArgumentParser(description="Shallow Water Model (Array API)") parser.add_argument( From a52c844d4d913a87ffaafe0f95c9fcfe5665871e Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Tue, 3 Mar 2026 15:49:57 +0100 Subject: [PATCH 14/15] add jax.jit --- examples/next/swm/initial_conditions.py | 3 +- examples/next/swm/swm.py | 55 ++++++++++++++++++++++--- src/gt4py/next/ffront/decorator.py | 22 +++++++--- 3 files changed, 68 insertions(+), 12 deletions(-) diff --git a/examples/next/swm/initial_conditions.py b/examples/next/swm/initial_conditions.py index 9866642e02..2981bb1e7c 100644 --- a/examples/next/swm/initial_conditions.py +++ b/examples/next/swm/initial_conditions.py @@ -7,6 +7,7 @@ # SPDX-License-Identifier: BSD-3-Clause import numpy as np +import array_api_compat def initialize_interior(xp, M, N, dx, dy, a): @@ -50,7 +51,7 @@ def apply_periodic_halo(arr, top=0, bottom=0, left=0, right=0): right : int Number of columns to add at the right (from left of array) """ - xp = arr.__array_namespace__() + xp = array_api_compat.array_namespace(arr) # Build vertical padding from the original array before any modification parts_v = [] diff --git a/examples/next/swm/swm.py b/examples/next/swm/swm.py index bc4f51888a..0c314d679c 100644 --- a/examples/next/swm/swm.py +++ b/examples/next/swm/swm.py @@ -29,7 +29,6 @@ from gt4py.next.program_processors.runners.dace import run_dace_gpu_cached, run_dace_cpu_cached # from gt4py.next.program_processors.runners import jax_jit -import jax.numpy as jnp import numpy as np try: @@ -37,6 +36,13 @@ except ImportError: cp = None +try: + import jax.numpy as jnp + import jax +except ImportError: + jnp = None + jax = None + dtype = gtx.float64 BACKENDS = { @@ -46,9 +52,15 @@ "dace_cpu": (run_dace_cpu_cached, run_dace_cpu_cached), "numpy": (None, np), "jnp": (None, jnp), + "jax_jit": (jax.jit, jnp), } if cp is not None: BACKENDS["cupy"] = (None, cp) +if jnp is not None: + assert jax is not None + BACKENDS["jax"] = (None, jnp) + BACKENDS["jax_jit"] = (jax.jit, jnp) + allocator = None @@ -193,6 +205,15 @@ def apply_periodicity(x: IJField): ) +def apply_periodicity_jax(x: IJField): + """Apply periodicity to the field x.""" + return gtx_common._field( + x.array_ns.pad(x.ndarray, ((1, 1), (1, 1)), mode="wrap"), + domain=gtx.domain({I: (-1, x.shape[0] + 1), J: (-1, x.shape[1] + 1)}), + dtype=x.dtype, + ) + + def main(): dt0 = 0.0 dt25 = 0.0 @@ -233,7 +254,9 @@ def main(): USE_PROGRAM = True - if backend is not None: + if backend == jax.jit: + prog = timestep.with_backend(backend) + elif backend is not None: if USE_PROGRAM: prog = timestep_program.with_backend(backend).compile(offset_provider={}, M=[M], N=[N]) else: @@ -262,7 +285,22 @@ def main(): ) t3_start = perf_counter() - if USE_PROGRAM: + if backend == jax.jit: + unew, vnew, pnew, uold, vold, pold = prog( + u=u, + v=v, + p=p, + dx=config.dx, + dy=config.dy, + dt=config.dt if ncycle == 0 else config.dt * 2.0, + uold=uold, + vold=vold, + pold=pold, + alpha=config.alpha if ncycle > 0 else 0.0, + M=M, + N=N, + ) + elif USE_PROGRAM: prog( u=u, v=v, @@ -303,9 +341,14 @@ def main(): dt3 = dt3 + (t3_stop - t3_start) t25_start = perf_counter() - unew = apply_periodicity(unew) - vnew = apply_periodicity(vnew) - pnew = apply_periodicity(pnew) + if backend == jax.jit: + unew = apply_periodicity_jax(unew) + vnew = apply_periodicity_jax(vnew) + pnew = apply_periodicity_jax(pnew) + else: + unew = apply_periodicity(unew) + vnew = apply_periodicity(vnew) + pnew = apply_periodicity(pnew) t25_stop = perf_counter() dt25 = dt25 + (t25_stop - t25_start) diff --git a/src/gt4py/next/ffront/decorator.py b/src/gt4py/next/ffront/decorator.py index a7b703564a..9550bec2ce 100644 --- a/src/gt4py/next/ffront/decorator.py +++ b/src/gt4py/next/ffront/decorator.py @@ -98,6 +98,10 @@ class _CompilableGTEntryPointMixin(Generic[ffront_stages.DSLDefinitionT]): def __gt_type__(self) -> ts.CallableType: ... def with_backend(self, backend: next_backend.Backend) -> Self: + if backend.__module__.startswith("jax"): + if not isinstance(self.definition_stage, ffront_stages.DSLFieldOperatorDef): + raise ValueError("JAX backend is only supported for field operators.") + return backend(self.definition_stage.definition) return dataclasses.replace(self, backend=backend) def with_compilation_options( @@ -253,10 +257,11 @@ def __gt_type__(self) -> ts_ffront.ProgramType: # TODO(ricoh): linting should become optional, up to the backend. def __post_init__(self) -> None: - no_args_past = toolchain.ConcreteArtifact( - self.past_stage, arguments.CompileTimeArgs.empty() - ) - _ = self._frontend_transforms.past_lint(no_args_past).data + if isinstance(self.backend, next_backend.Backend): + no_args_past = toolchain.ConcreteArtifact( + self.past_stage, arguments.CompileTimeArgs.empty() + ) + _ = self._frontend_transforms.past_lint(no_args_past).data @property def __name__(self) -> str: @@ -588,7 +593,8 @@ def from_function( # TODO(ricoh): linting should become optional, up to the backend. def __post_init__(self) -> None: """This ensures that DSL linting occurs at decoration time.""" - _ = self.foast_stage + if isinstance(self.backend, next_backend.Backend): + _ = self.foast_stage @functools.cached_property def foast_stage(self) -> ffront_stages.FOASTOperatorDef: @@ -639,10 +645,16 @@ def __gt_closure_vars__(self) -> dict[str, Any]: return self.foast_stage.closure_vars def __call__(self, *args: Any, enable_jit: bool | None = None, **kwargs: Any) -> Any: + if not next_embedded.context.within_valid_context() and ( + self.backend is None or self.backend.__module__.startswith("jax") + ): + # TODO(havogt): only jax.jit for now (we are not setting up the embedded context and just call the operator as is) + return self.definition(*args, **kwargs) if not next_embedded.context.within_valid_context() and self.backend is not None: # non embedded execution offset_provider = {**kwargs.pop("offset_provider", {})} if "out" not in kwargs: + print("oh") raise errors.MissingArgumentError(None, "out", True) out = kwargs.pop("out") if "domain" in kwargs: From 9841d651b3f8abd9184dc867521280c94b591c92 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Tue, 3 Mar 2026 15:58:20 +0100 Subject: [PATCH 15/15] fix arguments --- examples/next/swm/swm.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/next/swm/swm.py b/examples/next/swm/swm.py index 0c314d679c..8a3e5415a0 100644 --- a/examples/next/swm/swm.py +++ b/examples/next/swm/swm.py @@ -297,8 +297,6 @@ def main(): vold=vold, pold=pold, alpha=config.alpha if ncycle > 0 else 0.0, - M=M, - N=N, ) elif USE_PROGRAM: prog(