From 9caa89b7330514172634a74d104efd22374e08bc Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Sat, 18 Sep 2021 04:25:26 -0400 Subject: [PATCH] Gross --- plugins/Iris/cache/instance | 1 + .../com/volmit/iris/engine/IrisComplex.java | 78 +- .../util/interpolation/IrisInterpolation.java | 96 +- .../iris/util/interpolation/Starcast.java | 1887 +++++++++++++++++ 4 files changed, 2018 insertions(+), 44 deletions(-) create mode 100644 plugins/Iris/cache/instance create mode 100644 src/main/java/com/volmit/iris/util/interpolation/Starcast.java diff --git a/plugins/Iris/cache/instance b/plugins/Iris/cache/instance new file mode 100644 index 000000000..525366c54 --- /dev/null +++ b/plugins/Iris/cache/instance @@ -0,0 +1 @@ +-523376883 diff --git a/src/main/java/com/volmit/iris/engine/IrisComplex.java b/src/main/java/com/volmit/iris/engine/IrisComplex.java index 4b230ae7d..28261db5b 100644 --- a/src/main/java/com/volmit/iris/engine/IrisComplex.java +++ b/src/main/java/com/volmit/iris/engine/IrisComplex.java @@ -34,6 +34,7 @@ import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.data.DataProvider; +import com.volmit.iris.util.interpolation.IrisInterpolation; import com.volmit.iris.util.math.M; import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.noise.CNG; @@ -290,31 +291,66 @@ public class IrisComplex implements DataProvider { return biome; } + private double interpolateGenerators(Engine engine, IrisInterpolator interpolator, KSet generators, double x, double z, long seed) + { + if(generators.isEmpty()) + { + return 0; + } + + double hi = interpolator.interpolate(x, z, (xx,zz) -> { + try { + IrisBiome bx = baseBiomeStream.get(xx, zz); + double b = 0; + + for (IrisGenerator gen : generators) { + b += bx.getGenLinkMax(gen.getLoadKey()); + } + + return b; + } catch (Throwable e) { + Iris.reportError(e); + e.printStackTrace(); + Iris.error("Failed to sample hi biome at " + xx + " " + zz + "..."); + } + + return 0; + }); + + double lo = interpolator.interpolate(x, z, (xx,zz) -> { + try { + IrisBiome bx = baseBiomeStream.get(xx, zz); + double b = 0; + + for (IrisGenerator gen : generators) { + b += bx.getGenLinkMin(gen.getLoadKey()); + } + + return b; + } catch (Throwable e) { + Iris.reportError(e); + e.printStackTrace(); + Iris.error("Failed to sample lo biome at " + xx + " " + zz + "..."); + } + + return 0; + }); + + double d = 0; + + for(IrisGenerator i : generators) + { + d += M.lerp(lo, hi, i.getHeight(x, z, seed + 239945)); + } + + return d / generators.size(); + } + private double getInterpolatedHeight(Engine engine, double x, double z, long seed) { double h = 0; for (IrisInterpolator i : generators.keySet()) { - h += i.interpolate(x, z, (xx, zz) -> - { - try { - IrisBiome bx = baseBiomeStream.get(xx, zz); - double b = 0; - - for (IrisGenerator gen : generators.get(i)) { - b += M.lerp(bx.getGenLinkMin(gen.getLoadKey()), - bx.getGenLinkMax(gen.getLoadKey()), - gen.getHeight(x, z, seed + 239945)); - } - - return b; - } catch (Throwable e) { - Iris.reportError(e); - e.printStackTrace(); - Iris.error("Failed to sample hi biome at " + xx + " " + zz + "..."); - } - - return 0; - }); + h += interpolateGenerators(engine, i, generators.get(i), x, z, seed); } return h; diff --git a/src/main/java/com/volmit/iris/util/interpolation/IrisInterpolation.java b/src/main/java/com/volmit/iris/util/interpolation/IrisInterpolation.java index 6b05b1237..87578eb0a 100644 --- a/src/main/java/com/volmit/iris/util/interpolation/IrisInterpolation.java +++ b/src/main/java/com/volmit/iris/util/interpolation/IrisInterpolation.java @@ -19,13 +19,20 @@ package com.volmit.iris.util.interpolation; import com.google.common.util.concurrent.AtomicDouble; +import com.volmit.iris.Iris; import com.volmit.iris.engine.object.NoiseStyle; +import com.volmit.iris.util.format.Form; +import com.volmit.iris.util.function.Consumer2; +import com.volmit.iris.util.function.Function2; import com.volmit.iris.util.function.NoiseProvider; import com.volmit.iris.util.function.NoiseProvider3; import com.volmit.iris.util.hunk.Hunk; import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.noise.CNG; +import com.volmit.iris.util.noise.SimplexNoise; +import com.volmit.iris.util.scheduling.PrecisionStopwatch; +import java.math.BigDecimal; import java.util.HashMap; public class IrisInterpolation { @@ -300,25 +307,68 @@ public class IrisInterpolation { //@done } - public static double getStarcast(int x, int z, double rad, double checks, NoiseProvider n) { - double m = (360 / checks); - double v = 0; + public static void test(String m, Consumer2 f) + { + PrecisionStopwatch p = PrecisionStopwatch.start(); + for(int i = 0; i < 8192; i++) + { + f.accept(i, -i * 234); + } + + p.end(); + + System.out.println(m + ": " + Form.duration(p.getMilliseconds(), 8)); + } + + public static void main(String[] args) { + CNG cng = new CNG(new RNG()); + NoiseProvider n = cng::noise; + System.out.println(generateOptimizedStarcast(3)); + System.out.println(generateOptimizedStarcast(5)); + System.out.println(generateOptimizedStarcast(6)); + System.out.println(generateOptimizedStarcast(7)); + System.out.println(generateOptimizedStarcast(9)); + System.out.println(generateOptimizedStarcast(12)); + System.out.println(generateOptimizedStarcast(24)); + System.out.println(generateOptimizedStarcast(32)); + System.out.println(generateOptimizedStarcast(48)); + System.out.println(generateOptimizedStarcast(64)); + System.out.println(generateOptimizedStarcast(72)); + System.out.println(generateOptimizedStarcast(96)); + System.out.println(generateOptimizedStarcast(128)); + System.out.println(generateOptimizedStarcast(186)); + System.out.println(generateOptimizedStarcast(256)); + } + + public static String generateOptimizedStarcast(double checks) { + double m = (360 / checks); + int ig = 0; + int igx = 0; + StringBuilder fb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); + fb.append("private static final double[] F"+(int)checks+"A = {"); + sb.append("private static double sc"+(int)checks+"(int x, int z, double r, NoiseProvider n) {\n return ("); for (int i = 0; i < 360; i += m) { double sin = Math.sin(Math.toRadians(i)); double cos = Math.cos(Math.toRadians(i)); - double cx = x + ((rad * cos) - (rad * sin)); - double cz = z + ((rad * sin) + (rad * cos)); - v += n.noise(cx, cz); + String cof = new BigDecimal(cos).toPlainString(); + String sif = new BigDecimal(sin).toPlainString(); + String cc = "F"+(int)checks+"A["+(igx++)+"]"; + String ss = "F"+(int)checks+"A["+(igx++)+"]"; + fb.append((ig > 0 ? (ig % 3 == 0 ? ",\n" : ",") : "") + cof + "," + sif); + sb.append( (ig > 0 ? "\n +" : "") + "n.noise(x + ((r * "+ cc +") - (r * "+ss+")), z + ((r * "+ss+") + (r * "+cc+")))"); + ig++; } - - return v / checks; + fb.append("};"); + sb.append(")/"+checks+"D;\n}"); + return fb + "\n" + sb; } public static double getStarcast3D(int x, int y, int z, double rad, double checks, NoiseProvider3 n) { - return (getStarcast(x, z, rad, checks, (xx, zz) -> n.noise(xx, y, zz)) - + getStarcast(x, y, rad, checks, (xx, yy) -> n.noise(xx, yy, z)) - + getStarcast(y, z, rad, checks, (yy, zz) -> n.noise(x, yy, zz))) / 3D; + return (Starcast.starcast(x, z, rad, checks, (xx, zz) -> n.noise(xx, y, zz)) + + Starcast.starcast(x, y, rad, checks, (xx, yy) -> n.noise(xx, yy, z)) + + Starcast.starcast(y, z, rad, checks, (yy, zz) -> n.noise(x, yy, zz))) / 3D; } public static double getBilinearBezierNoise(int x, int z, double rad, NoiseProvider n) { @@ -910,29 +960,29 @@ public class IrisInterpolation { if (method.equals(InterpolationMethod.BILINEAR)) { return getBilinearNoise(x, z, h, n); } else if (method.equals(InterpolationMethod.STARCAST_3)) { - return getStarcast(x, z, h, 3D, n); + return Starcast.starcast(x, z, h, 3D, n); } else if (method.equals(InterpolationMethod.STARCAST_6)) { - return getStarcast(x, z, h, 6D, n); + return Starcast.starcast(x, z, h, 6D, n); } else if (method.equals(InterpolationMethod.STARCAST_9)) { - return getStarcast(x, z, h, 9D, n); + return Starcast.starcast(x, z, h, 9D, n); } else if (method.equals(InterpolationMethod.STARCAST_12)) { - return getStarcast(x, z, h, 12D, n); + return Starcast.starcast(x, z, h, 12D, n); } else if (method.equals(InterpolationMethod.BILINEAR_STARCAST_3)) { - return getStarcast(x, z, h, 3D, (xx, zz) -> getBilinearNoise((int) xx, (int) zz, h, n)); + return Starcast.starcast(x, z, h, 3D, (xx, zz) -> getBilinearNoise((int) xx, (int) zz, h, n)); } else if (method.equals(InterpolationMethod.BILINEAR_STARCAST_6)) { - return getStarcast(x, z, h, 6D, (xx, zz) -> getBilinearNoise((int) xx, (int) zz, h, n)); + return Starcast.starcast(x, z, h, 6D, (xx, zz) -> getBilinearNoise((int) xx, (int) zz, h, n)); } else if (method.equals(InterpolationMethod.BILINEAR_STARCAST_9)) { - return getStarcast(x, z, h, 9D, (xx, zz) -> getBilinearNoise((int) xx, (int) zz, h, n)); + return Starcast.starcast(x, z, h, 9D, (xx, zz) -> getBilinearNoise((int) xx, (int) zz, h, n)); } else if (method.equals(InterpolationMethod.BILINEAR_STARCAST_12)) { - return getStarcast(x, z, h, 12D, (xx, zz) -> getBilinearNoise((int) xx, (int) zz, h, n)); + return Starcast.starcast(x, z, h, 12D, (xx, zz) -> getBilinearNoise((int) xx, (int) zz, h, n)); } else if (method.equals(InterpolationMethod.HERMITE_STARCAST_3)) { - return getStarcast(x, z, h, 3D, (xx, zz) -> getHermiteNoise((int) xx, (int) zz, h, n, 0D, 0D)); + return Starcast.starcast(x, z, h, 3D, (xx, zz) -> getHermiteNoise((int) xx, (int) zz, h, n, 0D, 0D)); } else if (method.equals(InterpolationMethod.HERMITE_STARCAST_6)) { - return getStarcast(x, z, h, 6D, (xx, zz) -> getHermiteNoise((int) xx, (int) zz, h, n, 0D, 0D)); + return Starcast.starcast(x, z, h, 6D, (xx, zz) -> getHermiteNoise((int) xx, (int) zz, h, n, 0D, 0D)); } else if (method.equals(InterpolationMethod.HERMITE_STARCAST_9)) { - return getStarcast(x, z, h, 9D, (xx, zz) -> getHermiteNoise((int) xx, (int) zz, h, n, 0D, 0D)); + return Starcast.starcast(x, z, h, 9D, (xx, zz) -> getHermiteNoise((int) xx, (int) zz, h, n, 0D, 0D)); } else if (method.equals(InterpolationMethod.HERMITE_STARCAST_12)) { - return getStarcast(x, z, h, 12D, (xx, zz) -> getHermiteNoise((int) xx, (int) zz, h, n, 0D, 0D)); + return Starcast.starcast(x, z, h, 12D, (xx, zz) -> getHermiteNoise((int) xx, (int) zz, h, n, 0D, 0D)); } else if (method.equals(InterpolationMethod.BILINEAR_BEZIER)) { return getBilinearBezierNoise(x, z, h, n); } else if (method.equals(InterpolationMethod.BILINEAR_PARAMETRIC_2)) { diff --git a/src/main/java/com/volmit/iris/util/interpolation/Starcast.java b/src/main/java/com/volmit/iris/util/interpolation/Starcast.java new file mode 100644 index 000000000..1d13b17c6 --- /dev/null +++ b/src/main/java/com/volmit/iris/util/interpolation/Starcast.java @@ -0,0 +1,1887 @@ +/* + * Iris is a World Generator for Minecraft Bukkit Servers + * Copyright (c) 2021 Arcane Arts (Volmit Software) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.volmit.iris.util.interpolation; + +import com.volmit.iris.util.format.Form; +import com.volmit.iris.util.function.NoiseProvider; +import com.volmit.iris.util.math.M; +import com.volmit.iris.util.math.RNG; +import com.volmit.iris.util.noise.CNG; +import com.volmit.iris.util.scheduling.PrecisionStopwatch; + +public class Starcast { + public static void main(String[] args) { + CNG cng = new CNG(new RNG()); + NoiseProvider n = cng::noise; + check(3, n); + check(6, n); + check(9, n); + check(12, n); + check(24, n); + check(32, n); + check(64, n); + check(128, n); + check(256, n); + } + + private static void check(int c, NoiseProvider n) { + PrecisionStopwatch p = PrecisionStopwatch.start(); + for(int i = 0; i < 8192 * 64; i++) + { + starcast(i, i * 293, 8, c, false, n); + } + p.end(); + + PrecisionStopwatch p2 = PrecisionStopwatch.start(); + for(int i = 0; i < 8192 * 64; i++) + { + starcast(i, i * 293, 8, c, true, n); + } + p2.end(); + + System.out.println("Starcast " + c + ": " + Form.duration(p.getMilliseconds(), 2) + " -> " + Form.duration(p2.getMilliseconds(), 2) + " (" + Form.pc((p.getMilliseconds() - p2.getMilliseconds()) / (p.getMilliseconds()),2) + " Faster)"); + } + + public static double starcast(int x, int z, double r, double checks, boolean optimized, NoiseProvider n) + { + if(optimized) + { + if(checks == 3) return sc3(x, z, r, n); + else if(checks == 5) return sc5(x, z, r, n); + else if(checks == 6) return sc6(x, z, r, n); + else if(checks == 7) return sc7(x, z, r, n); + else if(checks == 9) return sc9(x, z, r, n); + else if(checks == 12) return sc12(x, z, r, n); + else if(checks == 24) return sc24(x, z, r, n); + else if(checks == 32) return sc32(x, z, r, n); + else if(checks == 48) return sc48(x, z, r, n); + else if(checks == 64) return sc64(x, z, r, n); + else if(checks == 72) return sc72(x, z, r, n); + else if(checks == 96) return sc96(x, z, r, n); + else if(checks == 128) return sc128(x, z, r, n); + else if(checks == 186) return sc186(x, z, r, n); + else if(checks == 256) return sc256(x, z, r, n); + } + + double m = 360D / checks; + double v = 0; + + for (int i = 0; i < 360; i += m) { + double sin = Math.sin(Math.toRadians(i)); + double cos = Math.cos(Math.toRadians(i)); + double cx = x + ((r * cos) - (r * sin)); + double cz = z + ((r * sin) + (r * cos)); + v += n.noise(cx, cz); + } + + return v / checks; + } + + public static double starcast(int x, int z, double r, double checks, NoiseProvider n) + { + return starcast(x, z, r, checks, true, n); + } + + private static final double[] F3A = {1,0,-0.4999999999999997779553950749686919152736663818359375,0.86602540378443870761060452423407696187496185302734375,-0.500000000000000444089209850062616169452667236328125,-0.86602540378443837454369713668711483478546142578125}; + private static double sc3(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F3A[0]) - (r * F3A[1])), z + ((r * F3A[1]) + (r * F3A[0]))) + +n.noise(x + ((r * F3A[2]) - (r * F3A[3])), z + ((r * F3A[3]) + (r * F3A[2]))) + +n.noise(x + ((r * F3A[4]) - (r * F3A[5])), z + ((r * F3A[5]) + (r * F3A[4]))))/3.0D; + } + private static final double[] F5A = {1,0,0.30901699437494745126286943559534847736358642578125,0.95105651629515353118193843329208903014659881591796875,-0.80901699437494734024056697307969443500041961669921875,0.58778525229247324812575925534474663436412811279296875, + -0.80901699437494756228517189811100251972675323486328125,-0.58778525229247302608115433031343854963779449462890625,0.3090169943749472292182645105640403926372528076171875,-0.951056516295153642204240895807743072509765625}; + private static double sc5(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F5A[0]) - (r * F5A[1])), z + ((r * F5A[1]) + (r * F5A[0]))) + +n.noise(x + ((r * F5A[2]) - (r * F5A[3])), z + ((r * F5A[3]) + (r * F5A[2]))) + +n.noise(x + ((r * F5A[4]) - (r * F5A[5])), z + ((r * F5A[5]) + (r * F5A[4]))) + +n.noise(x + ((r * F5A[6]) - (r * F5A[7])), z + ((r * F5A[7]) + (r * F5A[6]))) + +n.noise(x + ((r * F5A[8]) - (r * F5A[9])), z + ((r * F5A[9]) + (r * F5A[8]))))/5.0D; + } + private static final double[] F6A = {1,0,0.50000000000000011102230246251565404236316680908203125,0.8660254037844385965883020617184229195117950439453125,-0.4999999999999997779553950749686919152736663818359375,0.86602540378443870761060452423407696187496185302734375, + -1,0.000000000000000122464679914735320717376402945839660462569212467758006379625612680683843791484832763671875,-0.500000000000000444089209850062616169452667236328125,-0.86602540378443837454369713668711483478546142578125,0.50000000000000011102230246251565404236316680908203125,-0.8660254037844385965883020617184229195117950439453125}; + private static double sc6(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F6A[0]) - (r * F6A[1])), z + ((r * F6A[1]) + (r * F6A[0]))) + +n.noise(x + ((r * F6A[2]) - (r * F6A[3])), z + ((r * F6A[3]) + (r * F6A[2]))) + +n.noise(x + ((r * F6A[4]) - (r * F6A[5])), z + ((r * F6A[5]) + (r * F6A[4]))) + +n.noise(x + ((r * F6A[6]) - (r * F6A[7])), z + ((r * F6A[7]) + (r * F6A[6]))) + +n.noise(x + ((r * F6A[8]) - (r * F6A[9])), z + ((r * F6A[9]) + (r * F6A[8]))) + +n.noise(x + ((r * F6A[10]) - (r * F6A[11])), z + ((r * F6A[11]) + (r * F6A[10]))))/6.0D; + } + private static final double[] F7A = {1,0,0.6293203910498375019955119569203816354274749755859375,0.77714596145697090179282895405776798725128173828125,-0.207911690817759342575499204031075350940227508544921875,0.9781476007338056888329447247087955474853515625, + -0.891006524188367787786546614370308816432952880859375,0.45399049973954685999188995992881245911121368408203125,-0.91354545764260086659902526662335731089115142822265625,-0.406736643075800208269043878317461349070072174072265625,-0.25881904510252062845410137015278451144695281982421875,-0.96592582628906831221371476203785277903079986572265625, + 0.587785252292472915058851867797784507274627685546875,-0.80901699437494756228517189811100251972675323486328125,0.99862953475457383323288240717374719679355621337890625,-0.052335956242944368932423770957029773853719234466552734375}; + private static double sc7(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F7A[0]) - (r * F7A[1])), z + ((r * F7A[1]) + (r * F7A[0]))) + +n.noise(x + ((r * F7A[2]) - (r * F7A[3])), z + ((r * F7A[3]) + (r * F7A[2]))) + +n.noise(x + ((r * F7A[4]) - (r * F7A[5])), z + ((r * F7A[5]) + (r * F7A[4]))) + +n.noise(x + ((r * F7A[6]) - (r * F7A[7])), z + ((r * F7A[7]) + (r * F7A[6]))) + +n.noise(x + ((r * F7A[8]) - (r * F7A[9])), z + ((r * F7A[9]) + (r * F7A[8]))) + +n.noise(x + ((r * F7A[10]) - (r * F7A[11])), z + ((r * F7A[11]) + (r * F7A[10]))) + +n.noise(x + ((r * F7A[12]) - (r * F7A[13])), z + ((r * F7A[13]) + (r * F7A[12]))) + +n.noise(x + ((r * F7A[14]) - (r * F7A[15])), z + ((r * F7A[15]) + (r * F7A[14]))))/7.0D; + } + private static final double[] F9A = {1,0,0.76604444311897801345168090847437269985675811767578125,0.642787609686539251896419955301098525524139404296875,0.17364817766693041445336120887077413499355316162109375,0.98480775301220802031565426659653894603252410888671875, + -0.4999999999999997779553950749686919152736663818359375,0.86602540378443870761060452423407696187496185302734375,-0.93969262078590831688273965482949279248714447021484375,0.342020143325668879441536773811094462871551513671875,-0.939692620785908427905042117345146834850311279296875,-0.3420201433256686573969318487797863781452178955078125, + -0.500000000000000444089209850062616169452667236328125,-0.86602540378443837454369713668711483478546142578125,0.17364817766692997036415135880815796554088592529296875,-0.98480775301220813133795672911219298839569091796875,0.76604444311897779140707598344306461513042449951171875,-0.64278760968653958496332734284806065261363983154296875}; + private static double sc9(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F9A[0]) - (r * F9A[1])), z + ((r * F9A[1]) + (r * F9A[0]))) + +n.noise(x + ((r * F9A[2]) - (r * F9A[3])), z + ((r * F9A[3]) + (r * F9A[2]))) + +n.noise(x + ((r * F9A[4]) - (r * F9A[5])), z + ((r * F9A[5]) + (r * F9A[4]))) + +n.noise(x + ((r * F9A[6]) - (r * F9A[7])), z + ((r * F9A[7]) + (r * F9A[6]))) + +n.noise(x + ((r * F9A[8]) - (r * F9A[9])), z + ((r * F9A[9]) + (r * F9A[8]))) + +n.noise(x + ((r * F9A[10]) - (r * F9A[11])), z + ((r * F9A[11]) + (r * F9A[10]))) + +n.noise(x + ((r * F9A[12]) - (r * F9A[13])), z + ((r * F9A[13]) + (r * F9A[12]))) + +n.noise(x + ((r * F9A[14]) - (r * F9A[15])), z + ((r * F9A[15]) + (r * F9A[14]))) + +n.noise(x + ((r * F9A[16]) - (r * F9A[17])), z + ((r * F9A[17]) + (r * F9A[16]))))/9.0D; + } + private static final double[] F12A = {1,0,0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,0.50000000000000011102230246251565404236316680908203125,0.8660254037844385965883020617184229195117950439453125, + 0.0000000000000000612323399573676603586882014729198302312846062338790031898128063403419218957424163818359375,1,-0.4999999999999997779553950749686919152736663818359375,0.86602540378443870761060452423407696187496185302734375,-0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375, + -1,0.000000000000000122464679914735320717376402945839660462569212467758006379625612680683843791484832763671875,-0.8660254037844385965883020617184229195117950439453125,-0.50000000000000011102230246251565404236316680908203125,-0.500000000000000444089209850062616169452667236328125,-0.86602540378443837454369713668711483478546142578125, + -0.00000000000000018369701987210296875011296034045003113559498615810217092558787044254131615161895751953125,-1,0.50000000000000011102230246251565404236316680908203125,-0.8660254037844385965883020617184229195117950439453125,0.86602540378443837454369713668711483478546142578125,-0.500000000000000444089209850062616169452667236328125}; + private static double sc12(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F12A[0]) - (r * F12A[1])), z + ((r * F12A[1]) + (r * F12A[0]))) + +n.noise(x + ((r * F12A[2]) - (r * F12A[3])), z + ((r * F12A[3]) + (r * F12A[2]))) + +n.noise(x + ((r * F12A[4]) - (r * F12A[5])), z + ((r * F12A[5]) + (r * F12A[4]))) + +n.noise(x + ((r * F12A[6]) - (r * F12A[7])), z + ((r * F12A[7]) + (r * F12A[6]))) + +n.noise(x + ((r * F12A[8]) - (r * F12A[9])), z + ((r * F12A[9]) + (r * F12A[8]))) + +n.noise(x + ((r * F12A[10]) - (r * F12A[11])), z + ((r * F12A[11]) + (r * F12A[10]))) + +n.noise(x + ((r * F12A[12]) - (r * F12A[13])), z + ((r * F12A[13]) + (r * F12A[12]))) + +n.noise(x + ((r * F12A[14]) - (r * F12A[15])), z + ((r * F12A[15]) + (r * F12A[14]))) + +n.noise(x + ((r * F12A[16]) - (r * F12A[17])), z + ((r * F12A[17]) + (r * F12A[16]))) + +n.noise(x + ((r * F12A[18]) - (r * F12A[19])), z + ((r * F12A[19]) + (r * F12A[18]))) + +n.noise(x + ((r * F12A[20]) - (r * F12A[21])), z + ((r * F12A[21]) + (r * F12A[20]))) + +n.noise(x + ((r * F12A[22]) - (r * F12A[23])), z + ((r * F12A[23]) + (r * F12A[22]))))/12.0D; + } + private static final double[] F24A = {1,0,0.96592582628906831221371476203785277903079986572265625,0.25881904510252073947640383266843855381011962890625,0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375, + 0.70710678118654757273731092936941422522068023681640625,0.707106781186547461715008466853760182857513427734375,0.50000000000000011102230246251565404236316680908203125,0.8660254037844385965883020617184229195117950439453125,0.25881904510252073947640383266843855381011962890625,0.96592582628906831221371476203785277903079986572265625, + 0.0000000000000000612323399573676603586882014729198302312846062338790031898128063403419218957424163818359375,1,-0.25881904510252085049870629518409259617328643798828125,0.96592582628906831221371476203785277903079986572265625,-0.4999999999999997779553950749686919152736663818359375,0.86602540378443870761060452423407696187496185302734375, + -0.707106781186547461715008466853760182857513427734375,0.70710678118654757273731092936941422522068023681640625,-0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,-0.965925826289068201191412299522198736667633056640625,0.258819045102521017032159988957573659718036651611328125, + -1,0.000000000000000122464679914735320717376402945839660462569212467758006379625612680683843791484832763671875,-0.96592582628906831221371476203785277903079986572265625,-0.258819045102520794987555063926265574991703033447265625,-0.8660254037844385965883020617184229195117950439453125,-0.50000000000000011102230246251565404236316680908203125, + -0.7071067811865476837596133918850682675838470458984375,-0.707106781186547461715008466853760182857513427734375,-0.500000000000000444089209850062616169452667236328125,-0.86602540378443837454369713668711483478546142578125,-0.25881904510252062845410137015278451144695281982421875,-0.96592582628906831221371476203785277903079986572265625, + -0.00000000000000018369701987210296875011296034045003113559498615810217092558787044254131615161895751953125,-1,0.258819045102520295387193982605822384357452392578125,-0.9659258262890684232360172245535068213939666748046875,0.50000000000000011102230246251565404236316680908203125,-0.8660254037844385965883020617184229195117950439453125, + 0.70710678118654735069270600433810614049434661865234375,-0.7071067811865476837596133918850682675838470458984375,0.86602540378443837454369713668711483478546142578125,-0.500000000000000444089209850062616169452667236328125,0.96592582628906831221371476203785277903079986572265625,-0.258819045102520683965252601410611532628536224365234375}; + private static double sc24(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F24A[0]) - (r * F24A[1])), z + ((r * F24A[1]) + (r * F24A[0]))) + +n.noise(x + ((r * F24A[2]) - (r * F24A[3])), z + ((r * F24A[3]) + (r * F24A[2]))) + +n.noise(x + ((r * F24A[4]) - (r * F24A[5])), z + ((r * F24A[5]) + (r * F24A[4]))) + +n.noise(x + ((r * F24A[6]) - (r * F24A[7])), z + ((r * F24A[7]) + (r * F24A[6]))) + +n.noise(x + ((r * F24A[8]) - (r * F24A[9])), z + ((r * F24A[9]) + (r * F24A[8]))) + +n.noise(x + ((r * F24A[10]) - (r * F24A[11])), z + ((r * F24A[11]) + (r * F24A[10]))) + +n.noise(x + ((r * F24A[12]) - (r * F24A[13])), z + ((r * F24A[13]) + (r * F24A[12]))) + +n.noise(x + ((r * F24A[14]) - (r * F24A[15])), z + ((r * F24A[15]) + (r * F24A[14]))) + +n.noise(x + ((r * F24A[16]) - (r * F24A[17])), z + ((r * F24A[17]) + (r * F24A[16]))) + +n.noise(x + ((r * F24A[18]) - (r * F24A[19])), z + ((r * F24A[19]) + (r * F24A[18]))) + +n.noise(x + ((r * F24A[20]) - (r * F24A[21])), z + ((r * F24A[21]) + (r * F24A[20]))) + +n.noise(x + ((r * F24A[22]) - (r * F24A[23])), z + ((r * F24A[23]) + (r * F24A[22]))) + +n.noise(x + ((r * F24A[24]) - (r * F24A[25])), z + ((r * F24A[25]) + (r * F24A[24]))) + +n.noise(x + ((r * F24A[26]) - (r * F24A[27])), z + ((r * F24A[27]) + (r * F24A[26]))) + +n.noise(x + ((r * F24A[28]) - (r * F24A[29])), z + ((r * F24A[29]) + (r * F24A[28]))) + +n.noise(x + ((r * F24A[30]) - (r * F24A[31])), z + ((r * F24A[31]) + (r * F24A[30]))) + +n.noise(x + ((r * F24A[32]) - (r * F24A[33])), z + ((r * F24A[33]) + (r * F24A[32]))) + +n.noise(x + ((r * F24A[34]) - (r * F24A[35])), z + ((r * F24A[35]) + (r * F24A[34]))) + +n.noise(x + ((r * F24A[36]) - (r * F24A[37])), z + ((r * F24A[37]) + (r * F24A[36]))) + +n.noise(x + ((r * F24A[38]) - (r * F24A[39])), z + ((r * F24A[39]) + (r * F24A[38]))) + +n.noise(x + ((r * F24A[40]) - (r * F24A[41])), z + ((r * F24A[41]) + (r * F24A[40]))) + +n.noise(x + ((r * F24A[42]) - (r * F24A[43])), z + ((r * F24A[43]) + (r * F24A[42]))) + +n.noise(x + ((r * F24A[44]) - (r * F24A[45])), z + ((r * F24A[45]) + (r * F24A[44]))) + +n.noise(x + ((r * F24A[46]) - (r * F24A[47])), z + ((r * F24A[47]) + (r * F24A[46]))))/24.0D; + } + private static final double[] F32A = {1,0,0.9816271834476639757127713892259635031223297119140625,0.1908089953765448043565555735767702572047710418701171875,0.92718385456678742428948680753819644451141357421875,0.374606593415912014766178117497474886476993560791015625, + 0.838670567945424050293468098971061408519744873046875,0.54463903501502708426329490976058878004550933837890625,0.71933980033865119185776393351261503994464874267578125,0.6946583704589972541043607634492218494415283203125,0.57357643635104615942310601894860155880451202392578125,0.81915204428899179855960710483486764132976531982421875, + 0.406736643075800208269043878317461349070072174072265625,0.91354545764260086659902526662335731089115142822265625,0.224951054343864920159745679484331049025058746337890625,0.97437006478523524588553073044749908149242401123046875,0.034899496702501080214187112460422213189303874969482421875,0.99939082701909576211818375668372027575969696044921875, + -0.1564344650402308134484741231062798760831356048583984375,0.987688340595137770350220307591371238231658935546875,-0.342020143325668712908083080037613399326801300048828125,0.939692620785908427905042117345146834850311279296875,-0.515038074910054266553061097511090338230133056640625,0.8571673007021123336102164103067480027675628662109375, + -0.66913060635885823757007528911344707012176513671875,0.7431448254773942441175904605188407003879547119140625,-0.79863551004729294024997443557367660105228424072265625,0.60181502315204815634075430352822877466678619384765625,-0.8987940462991670376169395240140147507190704345703125,0.43837114678907729281576166613376699388027191162109375, + -0.965925826289068201191412299522198736667633056640625,0.258819045102521017032159988957573659718036651611328125,-0.9975640502598241976528470331686548888683319091796875,0.06975647374412552448319502218510024249553680419921875,-0.992546151641322094150154953240416944026947021484375,-0.12186934340514730956694933183825924061238765716552734375, + -0.951056516295153642204240895807743072509765625,-0.309016994374947284729415741821867413818836212158203125,-0.87461970713939585220231265338952653110027313232421875,-0.484809620246336947513299264755914919078350067138671875,-0.76604444311897801345168090847437269985675811767578125,-0.642787609686539251896419955301098525524139404296875, + -0.62932039104983783506241934446734376251697540283203125,-0.77714596145697056872592156651080586016178131103515625,-0.469471562785890750291173389996401965618133544921875,-0.88294759285892698841280434862710535526275634765625,-0.29237170472273710242205879694665782153606414794921875,-0.9563047559630353244841671767062507569789886474609375, + -0.104528463267653359825004599770181812345981597900390625,-0.99452189536827340088365190240438096225261688232421875,0.0871557427476578883140945208651828579604625701904296875,-0.9961946980917455451987052583717741072177886962890625,0.275637355816999385371701691838097758591175079345703125,-0.96126169593831878312784056106465868651866912841796875, + 0.45399049973954663794728503489750437438488006591796875,-0.89100652418836789880884907688596285879611968994140625,0.61566147532565851374641852089553140103816986083984375,-0.7880107536067217921527117141522467136383056640625,0.7547095802227719030241814834880642592906951904296875,-0.65605902899050738685815531425760127604007720947265625, + 0.86602540378443837454369713668711483478546142578125,-0.500000000000000444089209850062616169452667236328125,0.94551857559931684615861513520940206944942474365234375,-0.3255681544571566998769185374840162694454193115234375,0.99026806874157025095684048210387118160724639892578125,-0.1391731009600658819369556340461713261902332305908203125}; + private static double sc32(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F32A[0]) - (r * F32A[1])), z + ((r * F32A[1]) + (r * F32A[0]))) + +n.noise(x + ((r * F32A[2]) - (r * F32A[3])), z + ((r * F32A[3]) + (r * F32A[2]))) + +n.noise(x + ((r * F32A[4]) - (r * F32A[5])), z + ((r * F32A[5]) + (r * F32A[4]))) + +n.noise(x + ((r * F32A[6]) - (r * F32A[7])), z + ((r * F32A[7]) + (r * F32A[6]))) + +n.noise(x + ((r * F32A[8]) - (r * F32A[9])), z + ((r * F32A[9]) + (r * F32A[8]))) + +n.noise(x + ((r * F32A[10]) - (r * F32A[11])), z + ((r * F32A[11]) + (r * F32A[10]))) + +n.noise(x + ((r * F32A[12]) - (r * F32A[13])), z + ((r * F32A[13]) + (r * F32A[12]))) + +n.noise(x + ((r * F32A[14]) - (r * F32A[15])), z + ((r * F32A[15]) + (r * F32A[14]))) + +n.noise(x + ((r * F32A[16]) - (r * F32A[17])), z + ((r * F32A[17]) + (r * F32A[16]))) + +n.noise(x + ((r * F32A[18]) - (r * F32A[19])), z + ((r * F32A[19]) + (r * F32A[18]))) + +n.noise(x + ((r * F32A[20]) - (r * F32A[21])), z + ((r * F32A[21]) + (r * F32A[20]))) + +n.noise(x + ((r * F32A[22]) - (r * F32A[23])), z + ((r * F32A[23]) + (r * F32A[22]))) + +n.noise(x + ((r * F32A[24]) - (r * F32A[25])), z + ((r * F32A[25]) + (r * F32A[24]))) + +n.noise(x + ((r * F32A[26]) - (r * F32A[27])), z + ((r * F32A[27]) + (r * F32A[26]))) + +n.noise(x + ((r * F32A[28]) - (r * F32A[29])), z + ((r * F32A[29]) + (r * F32A[28]))) + +n.noise(x + ((r * F32A[30]) - (r * F32A[31])), z + ((r * F32A[31]) + (r * F32A[30]))) + +n.noise(x + ((r * F32A[32]) - (r * F32A[33])), z + ((r * F32A[33]) + (r * F32A[32]))) + +n.noise(x + ((r * F32A[34]) - (r * F32A[35])), z + ((r * F32A[35]) + (r * F32A[34]))) + +n.noise(x + ((r * F32A[36]) - (r * F32A[37])), z + ((r * F32A[37]) + (r * F32A[36]))) + +n.noise(x + ((r * F32A[38]) - (r * F32A[39])), z + ((r * F32A[39]) + (r * F32A[38]))) + +n.noise(x + ((r * F32A[40]) - (r * F32A[41])), z + ((r * F32A[41]) + (r * F32A[40]))) + +n.noise(x + ((r * F32A[42]) - (r * F32A[43])), z + ((r * F32A[43]) + (r * F32A[42]))) + +n.noise(x + ((r * F32A[44]) - (r * F32A[45])), z + ((r * F32A[45]) + (r * F32A[44]))) + +n.noise(x + ((r * F32A[46]) - (r * F32A[47])), z + ((r * F32A[47]) + (r * F32A[46]))) + +n.noise(x + ((r * F32A[48]) - (r * F32A[49])), z + ((r * F32A[49]) + (r * F32A[48]))) + +n.noise(x + ((r * F32A[50]) - (r * F32A[51])), z + ((r * F32A[51]) + (r * F32A[50]))) + +n.noise(x + ((r * F32A[52]) - (r * F32A[53])), z + ((r * F32A[53]) + (r * F32A[52]))) + +n.noise(x + ((r * F32A[54]) - (r * F32A[55])), z + ((r * F32A[55]) + (r * F32A[54]))) + +n.noise(x + ((r * F32A[56]) - (r * F32A[57])), z + ((r * F32A[57]) + (r * F32A[56]))) + +n.noise(x + ((r * F32A[58]) - (r * F32A[59])), z + ((r * F32A[59]) + (r * F32A[58]))) + +n.noise(x + ((r * F32A[60]) - (r * F32A[61])), z + ((r * F32A[61]) + (r * F32A[60]))) + +n.noise(x + ((r * F32A[62]) - (r * F32A[63])), z + ((r * F32A[63]) + (r * F32A[62]))) + +n.noise(x + ((r * F32A[64]) - (r * F32A[65])), z + ((r * F32A[65]) + (r * F32A[64]))))/32.0D; + } + private static final double[] F48A = {1,0,0.99254615164132198312785249072476290166378021240234375,0.12186934340514747610040302561174030415713787078857421875,0.97029572627599647294260876151383854448795318603515625,0.2419218955996677300479547056966111995279788970947265625, + 0.93358042649720174299687869279296137392520904541015625,0.3583679495453002683547083506709896028041839599609375,0.88294759285892698841280434862710535526275634765625,0.469471562785890805802324621254228986799716949462890625,0.81915204428899179855960710483486764132976531982421875,0.57357643635104604840080355643294751644134521484375, + 0.7431448254773942441175904605188407003879547119140625,0.66913060635885823757007528911344707012176513671875,0.656059028990507275835852851741947233676910400390625,0.75470958022277201404648394600371830165386199951171875,0.5591929034707467938147829045192338526248931884765625,0.82903757255504173517834942686022259294986724853515625, + 0.453990499739546804480738728670985437929630279541015625,0.891006524188367787786546614370308816432952880859375,0.342020143325668823930385542553267441689968109130859375,0.93969262078590831688273965482949279248714447021484375,0.224951054343864920159745679484331049025058746337890625,0.97437006478523524588553073044749908149242401123046875, + 0.10452846326765345696951925447137909941375255584716796875,0.9945218953682732898613494398887269198894500732421875,-0.01745240643728347695873281963940826244652271270751953125,0.9998476951563912695775115935248322784900665283203125,-0.139173100960065354581018937096814624965190887451171875,0.9902680687415703619791429446195252239704132080078125, + -0.25881904510252085049870629518409259617328643798828125,0.96592582628906831221371476203785277903079986572265625,-0.37460659341591207027732934875530190765857696533203125,0.92718385456678742428948680753819644451141357421875,-0.4848096202463370030244504960137419402599334716796875,0.87461970713939585220231265338952653110027313232421875, + -0.58778525229247302608115433031343854963779449462890625,0.80901699437494745126286943559534847736358642578125,-0.6819983600624983655080768585321493446826934814453125,0.73135370161917057085787519099540077149868011474609375,-0.76604444311897790242937844595871865749359130859375,0.6427876096865394739410248803324066102504730224609375, + -0.83867056794542393927116563645540736615657806396484375,0.54463903501502730630789983479189686477184295654296875,-0.8987940462991670376169395240140147507190704345703125,0.43837114678907729281576166613376699388027191162109375,-0.94551857559931684615861513520940206944942474365234375,0.32556815445715658885461607496836222708225250244140625, + -0.9781476007338056888329447247087955474853515625,0.2079116908177593148199235884021618403494358062744140625,-0.9961946980917455451987052583717741072177886962890625,0.087155742747658193625426292783231474459171295166015625,-0.99939082701909576211818375668372027575969696044921875,-0.034899496702500899802945610872484394349157810211181640625, + -0.987688340595137770350220307591371238231658935546875,-0.156434465040230730181747276219539344310760498046875,-0.9612616959383188941501430235803127288818359375,-0.27563735581699899679364307303330861032009124755859375,-0.92050485345244037471701403774204663932323455810546875,-0.390731128489273549231342030907399021089076995849609375, + -0.8660254037844385965883020617184229195117950439453125,-0.50000000000000011102230246251565404236316680908203125,-0.798635510047292829227671973058022558689117431640625,-0.60181502315204837838535922855953685939311981201171875,-0.71933980033865108083546147099696099758148193359375,-0.69465837045899736512666322596487589180469512939453125, + -0.62932039104983783506241934446734376251697540283203125,-0.77714596145697056872592156651080586016178131103515625,-0.52991926423320501182701036668731831014156341552734375,-0.84804809615642595677087456351728178560733795166015625,-0.42261826174069916373099431439186446368694305419921875,-0.90630778703665004769618462887592613697052001953125, + -0.30901699437494756228517189811100251972675323486328125,-0.95105651629515353118193843329208903014659881591796875,-0.1908089953765446100675262641743756830692291259765625,-0.9816271834476639757127713892259635031223297119140625,-0.069756473744125579994346253442927263677120208740234375,-0.9975640502598241976528470331686548888683319091796875, + 0.05233595624294394565989563261609873734414577484130859375,-0.99862953475457383323288240717374719679355621337890625,0.17364817766692997036415135880815796554088592529296875,-0.98480775301220813133795672911219298839569091796875,0.292371704722736713844000178141868673264980316162109375,-0.95630475596303543550646963922190479934215545654296875, + 0.406736643075799764179834028254845179617404937744140625,-0.91354545764260108864363019165466539561748504638671875,0.51503807491005415553075863499543629586696624755859375,-0.8571673007021123336102164103067480027675628662109375,0.61566147532565851374641852089553140103816986083984375,-0.7880107536067217921527117141522467136383056640625, + 0.70710678118654735069270600433810614049434661865234375,-0.7071067811865476837596133918850682675838470458984375,0.7880107536067220141973166391835547983646392822265625,-0.61566147532565818067951113334856927394866943359375,0.857167300702112111565611485275439918041229248046875,-0.5150380749100544885976660225423984229564666748046875, + 0.9135454576426009776213277291390113532543182373046875,-0.40673664307580015275789264705963432788848876953125,0.9563047559630353244841671767062507569789886474609375,-0.292371704722737157933210028204484842717647552490234375,0.98480775301220802031565426659653894603252410888671875,-0.1736481776669303866977855932418606244027614593505859375, + 0.99862953475457383323288240717374719679355621337890625,-0.052335956242944368932423770957029773853719234466552734375}; + private static double sc48(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F48A[0]) - (r * F48A[1])), z + ((r * F48A[1]) + (r * F48A[0]))) + +n.noise(x + ((r * F48A[2]) - (r * F48A[3])), z + ((r * F48A[3]) + (r * F48A[2]))) + +n.noise(x + ((r * F48A[4]) - (r * F48A[5])), z + ((r * F48A[5]) + (r * F48A[4]))) + +n.noise(x + ((r * F48A[6]) - (r * F48A[7])), z + ((r * F48A[7]) + (r * F48A[6]))) + +n.noise(x + ((r * F48A[8]) - (r * F48A[9])), z + ((r * F48A[9]) + (r * F48A[8]))) + +n.noise(x + ((r * F48A[10]) - (r * F48A[11])), z + ((r * F48A[11]) + (r * F48A[10]))) + +n.noise(x + ((r * F48A[12]) - (r * F48A[13])), z + ((r * F48A[13]) + (r * F48A[12]))) + +n.noise(x + ((r * F48A[14]) - (r * F48A[15])), z + ((r * F48A[15]) + (r * F48A[14]))) + +n.noise(x + ((r * F48A[16]) - (r * F48A[17])), z + ((r * F48A[17]) + (r * F48A[16]))) + +n.noise(x + ((r * F48A[18]) - (r * F48A[19])), z + ((r * F48A[19]) + (r * F48A[18]))) + +n.noise(x + ((r * F48A[20]) - (r * F48A[21])), z + ((r * F48A[21]) + (r * F48A[20]))) + +n.noise(x + ((r * F48A[22]) - (r * F48A[23])), z + ((r * F48A[23]) + (r * F48A[22]))) + +n.noise(x + ((r * F48A[24]) - (r * F48A[25])), z + ((r * F48A[25]) + (r * F48A[24]))) + +n.noise(x + ((r * F48A[26]) - (r * F48A[27])), z + ((r * F48A[27]) + (r * F48A[26]))) + +n.noise(x + ((r * F48A[28]) - (r * F48A[29])), z + ((r * F48A[29]) + (r * F48A[28]))) + +n.noise(x + ((r * F48A[30]) - (r * F48A[31])), z + ((r * F48A[31]) + (r * F48A[30]))) + +n.noise(x + ((r * F48A[32]) - (r * F48A[33])), z + ((r * F48A[33]) + (r * F48A[32]))) + +n.noise(x + ((r * F48A[34]) - (r * F48A[35])), z + ((r * F48A[35]) + (r * F48A[34]))) + +n.noise(x + ((r * F48A[36]) - (r * F48A[37])), z + ((r * F48A[37]) + (r * F48A[36]))) + +n.noise(x + ((r * F48A[38]) - (r * F48A[39])), z + ((r * F48A[39]) + (r * F48A[38]))) + +n.noise(x + ((r * F48A[40]) - (r * F48A[41])), z + ((r * F48A[41]) + (r * F48A[40]))) + +n.noise(x + ((r * F48A[42]) - (r * F48A[43])), z + ((r * F48A[43]) + (r * F48A[42]))) + +n.noise(x + ((r * F48A[44]) - (r * F48A[45])), z + ((r * F48A[45]) + (r * F48A[44]))) + +n.noise(x + ((r * F48A[46]) - (r * F48A[47])), z + ((r * F48A[47]) + (r * F48A[46]))) + +n.noise(x + ((r * F48A[48]) - (r * F48A[49])), z + ((r * F48A[49]) + (r * F48A[48]))) + +n.noise(x + ((r * F48A[50]) - (r * F48A[51])), z + ((r * F48A[51]) + (r * F48A[50]))) + +n.noise(x + ((r * F48A[52]) - (r * F48A[53])), z + ((r * F48A[53]) + (r * F48A[52]))) + +n.noise(x + ((r * F48A[54]) - (r * F48A[55])), z + ((r * F48A[55]) + (r * F48A[54]))) + +n.noise(x + ((r * F48A[56]) - (r * F48A[57])), z + ((r * F48A[57]) + (r * F48A[56]))) + +n.noise(x + ((r * F48A[58]) - (r * F48A[59])), z + ((r * F48A[59]) + (r * F48A[58]))) + +n.noise(x + ((r * F48A[60]) - (r * F48A[61])), z + ((r * F48A[61]) + (r * F48A[60]))) + +n.noise(x + ((r * F48A[62]) - (r * F48A[63])), z + ((r * F48A[63]) + (r * F48A[62]))) + +n.noise(x + ((r * F48A[64]) - (r * F48A[65])), z + ((r * F48A[65]) + (r * F48A[64]))) + +n.noise(x + ((r * F48A[66]) - (r * F48A[67])), z + ((r * F48A[67]) + (r * F48A[66]))) + +n.noise(x + ((r * F48A[68]) - (r * F48A[69])), z + ((r * F48A[69]) + (r * F48A[68]))) + +n.noise(x + ((r * F48A[70]) - (r * F48A[71])), z + ((r * F48A[71]) + (r * F48A[70]))) + +n.noise(x + ((r * F48A[72]) - (r * F48A[73])), z + ((r * F48A[73]) + (r * F48A[72]))) + +n.noise(x + ((r * F48A[74]) - (r * F48A[75])), z + ((r * F48A[75]) + (r * F48A[74]))) + +n.noise(x + ((r * F48A[76]) - (r * F48A[77])), z + ((r * F48A[77]) + (r * F48A[76]))) + +n.noise(x + ((r * F48A[78]) - (r * F48A[79])), z + ((r * F48A[79]) + (r * F48A[78]))) + +n.noise(x + ((r * F48A[80]) - (r * F48A[81])), z + ((r * F48A[81]) + (r * F48A[80]))) + +n.noise(x + ((r * F48A[82]) - (r * F48A[83])), z + ((r * F48A[83]) + (r * F48A[82]))) + +n.noise(x + ((r * F48A[84]) - (r * F48A[85])), z + ((r * F48A[85]) + (r * F48A[84]))) + +n.noise(x + ((r * F48A[86]) - (r * F48A[87])), z + ((r * F48A[87]) + (r * F48A[86]))) + +n.noise(x + ((r * F48A[88]) - (r * F48A[89])), z + ((r * F48A[89]) + (r * F48A[88]))) + +n.noise(x + ((r * F48A[90]) - (r * F48A[91])), z + ((r * F48A[91]) + (r * F48A[90]))) + +n.noise(x + ((r * F48A[92]) - (r * F48A[93])), z + ((r * F48A[93]) + (r * F48A[92]))) + +n.noise(x + ((r * F48A[94]) - (r * F48A[95])), z + ((r * F48A[95]) + (r * F48A[94]))) + +n.noise(x + ((r * F48A[96]) - (r * F48A[97])), z + ((r * F48A[97]) + (r * F48A[96]))) + +n.noise(x + ((r * F48A[98]) - (r * F48A[99])), z + ((r * F48A[99]) + (r * F48A[98]))) + +n.noise(x + ((r * F48A[100]) - (r * F48A[101])), z + ((r * F48A[101]) + (r * F48A[100]))) + +n.noise(x + ((r * F48A[102]) - (r * F48A[103])), z + ((r * F48A[103]) + (r * F48A[102]))))/48.0D; + } + private static final double[] F64A = {1,0,0.9961946980917455451987052583717741072177886962890625,0.0871557427476581658698506771543179638683795928955078125,0.98480775301220802031565426659653894603252410888671875,0.1736481776669303311866343619840336032211780548095703125, + 0.96592582628906831221371476203785277903079986572265625,0.25881904510252073947640383266843855381011962890625,0.939692620785908427905042117345146834850311279296875,0.342020143325668712908083080037613399326801300048828125,0.90630778703664993667388216636027209460735321044921875,0.422618261740699441286750470680999569594860076904296875, + 0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,0.81915204428899179855960710483486764132976531982421875,0.57357643635104604840080355643294751644134521484375,0.76604444311897801345168090847437269985675811767578125,0.642787609686539251896419955301098525524139404296875, + 0.70710678118654757273731092936941422522068023681640625,0.707106781186547461715008466853760182857513427734375,0.64278760968653936291872241781675256788730621337890625,0.76604444311897801345168090847437269985675811767578125,0.57357643635104615942310601894860155880451202392578125,0.81915204428899179855960710483486764132976531982421875, + 0.50000000000000011102230246251565404236316680908203125,0.8660254037844385965883020617184229195117950439453125,0.422618261740699441286750470680999569594860076904296875,0.90630778703664993667388216636027209460735321044921875,0.342020143325668823930385542553267441689968109130859375,0.93969262078590831688273965482949279248714447021484375, + 0.25881904510252073947640383266843855381011962890625,0.96592582628906831221371476203785277903079986572265625,0.17364817766693041445336120887077413499355316162109375,0.98480775301220802031565426659653894603252410888671875,0.087155742747658138114275061525404453277587890625,0.9961946980917455451987052583717741072177886962890625, + 0.0000000000000000612323399573676603586882014729198302312846062338790031898128063403419218957424163818359375,1,-0.08715574274765823525878971622660174034535884857177734375,0.9961946980917455451987052583717741072177886962890625,-0.1736481776669303034310587463551200926303863525390625,0.98480775301220802031565426659653894603252410888671875, + -0.25881904510252085049870629518409259617328643798828125,0.96592582628906831221371476203785277903079986572265625,-0.342020143325668712908083080037613399326801300048828125,0.939692620785908427905042117345146834850311279296875,-0.422618261740699330264448008165345527231693267822265625,0.90630778703665004769618462887592613697052001953125, + -0.4999999999999997779553950749686919152736663818359375,0.86602540378443870761060452423407696187496185302734375,-0.57357643635104615942310601894860155880451202392578125,0.8191520442889916875373046423192135989665985107421875,-0.64278760968653936291872241781675256788730621337890625,0.76604444311897801345168090847437269985675811767578125, + -0.707106781186547461715008466853760182857513427734375,0.70710678118654757273731092936941422522068023681640625,-0.76604444311897790242937844595871865749359130859375,0.6427876096865394739410248803324066102504730224609375,-0.81915204428899190958190956735052168369293212890625,0.57357643635104593737850109391729347407817840576171875, + -0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,-0.90630778703664993667388216636027209460735321044921875,0.4226182617406994967979017019388265907764434814453125,-0.93969262078590831688273965482949279248714447021484375,0.342020143325668879441536773811094462871551513671875, + -0.965925826289068201191412299522198736667633056640625,0.258819045102521017032159988957573659718036651611328125,-0.98480775301220802031565426659653894603252410888671875,0.1736481776669302756754831307262065820395946502685546875,-0.9961946980917455451987052583717741072177886962890625,0.087155742747658193625426292783231474459171295166015625, + -1,0.000000000000000122464679914735320717376402945839660462569212467758006379625612680683843791484832763671875,-0.9961946980917455451987052583717741072177886962890625,-0.0871557427476579438252457521230098791420459747314453125,-0.98480775301220802031565426659653894603252410888671875,-0.173648177666930469964512440128601156175136566162109375, + -0.96592582628906831221371476203785277903079986572265625,-0.258819045102520794987555063926265574991703033447265625,-0.939692620785908427905042117345146834850311279296875,-0.3420201433256686573969318487797863781452178955078125,-0.90630778703665004769618462887592613697052001953125,-0.42261826174069927475329677690751850605010986328125, + -0.8660254037844385965883020617184229195117950439453125,-0.50000000000000011102230246251565404236316680908203125,-0.81915204428899179855960710483486764132976531982421875,-0.57357643635104615942310601894860155880451202392578125,-0.76604444311897801345168090847437269985675811767578125,-0.642787609686539251896419955301098525524139404296875, + -0.7071067811865476837596133918850682675838470458984375,-0.707106781186547461715008466853760182857513427734375,-0.6427876096865394739410248803324066102504730224609375,-0.76604444311897790242937844595871865749359130859375,-0.57357643635104638146771094397990964353084564208984375,-0.81915204428899157651500217980355955660343170166015625, + -0.500000000000000444089209850062616169452667236328125,-0.86602540378443837454369713668711483478546142578125,-0.42261826174069916373099431439186446368694305419921875,-0.90630778703665004769618462887592613697052001953125,-0.34202014332566854637462938626413233578205108642578125,-0.939692620785908427905042117345146834850311279296875, + -0.25881904510252062845410137015278451144695281982421875,-0.96592582628906831221371476203785277903079986572265625,-0.1736481776669303311866343619840336032211780548095703125,-0.98480775301220802031565426659653894603252410888671875,-0.08715574274765824913657752404105849564075469970703125,-0.9961946980917455451987052583717741072177886962890625, + -0.00000000000000018369701987210296875011296034045003113559498615810217092558787044254131615161895751953125,-1,0.0871557427476578883140945208651828579604625701904296875,-0.9961946980917455451987052583717741072177886962890625,0.17364817766692997036415135880815796554088592529296875,-0.98480775301220813133795672911219298839569091796875, + 0.258819045102520295387193982605822384357452392578125,-0.9659258262890684232360172245535068213939666748046875,0.34202014332566899046383923632674850523471832275390625,-0.93969262078590831688273965482949279248714447021484375,0.42261826174069960782020416445448063313961029052734375,-0.90630778703664993667388216636027209460735321044921875, + 0.50000000000000011102230246251565404236316680908203125,-0.8660254037844385965883020617184229195117950439453125,0.57357643635104604840080355643294751644134521484375,-0.81915204428899179855960710483486764132976531982421875,0.642787609686539251896419955301098525524139404296875,-0.7660444431189781244739833709900267422199249267578125, + 0.70710678118654735069270600433810614049434661865234375,-0.7071067811865476837596133918850682675838470458984375,0.76604444311897779140707598344306461513042449951171875,-0.64278760968653958496332734284806065261363983154296875,0.81915204428899157651500217980355955660343170166015625,-0.573576436351046492490013406495563685894012451171875, + 0.86602540378443837454369713668711483478546142578125,-0.500000000000000444089209850062616169452667236328125,0.90630778703665004769618462887592613697052001953125,-0.422618261740699219242145545649691484868526458740234375,0.939692620785908427905042117345146834850311279296875,-0.342020143325668601885780617521959356963634490966796875, + 0.96592582628906831221371476203785277903079986572265625,-0.258819045102520683965252601410611532628536224365234375,0.98480775301220802031565426659653894603252410888671875,-0.1736481776669303866977855932418606244027614593505859375,0.9961946980917455451987052583717741072177886962890625,-0.08715574274765831852551656311334227211773395538330078125}; + private static double sc64(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F64A[0]) - (r * F64A[1])), z + ((r * F64A[1]) + (r * F64A[0]))) + +n.noise(x + ((r * F64A[2]) - (r * F64A[3])), z + ((r * F64A[3]) + (r * F64A[2]))) + +n.noise(x + ((r * F64A[4]) - (r * F64A[5])), z + ((r * F64A[5]) + (r * F64A[4]))) + +n.noise(x + ((r * F64A[6]) - (r * F64A[7])), z + ((r * F64A[7]) + (r * F64A[6]))) + +n.noise(x + ((r * F64A[8]) - (r * F64A[9])), z + ((r * F64A[9]) + (r * F64A[8]))) + +n.noise(x + ((r * F64A[10]) - (r * F64A[11])), z + ((r * F64A[11]) + (r * F64A[10]))) + +n.noise(x + ((r * F64A[12]) - (r * F64A[13])), z + ((r * F64A[13]) + (r * F64A[12]))) + +n.noise(x + ((r * F64A[14]) - (r * F64A[15])), z + ((r * F64A[15]) + (r * F64A[14]))) + +n.noise(x + ((r * F64A[16]) - (r * F64A[17])), z + ((r * F64A[17]) + (r * F64A[16]))) + +n.noise(x + ((r * F64A[18]) - (r * F64A[19])), z + ((r * F64A[19]) + (r * F64A[18]))) + +n.noise(x + ((r * F64A[20]) - (r * F64A[21])), z + ((r * F64A[21]) + (r * F64A[20]))) + +n.noise(x + ((r * F64A[22]) - (r * F64A[23])), z + ((r * F64A[23]) + (r * F64A[22]))) + +n.noise(x + ((r * F64A[24]) - (r * F64A[25])), z + ((r * F64A[25]) + (r * F64A[24]))) + +n.noise(x + ((r * F64A[26]) - (r * F64A[27])), z + ((r * F64A[27]) + (r * F64A[26]))) + +n.noise(x + ((r * F64A[28]) - (r * F64A[29])), z + ((r * F64A[29]) + (r * F64A[28]))) + +n.noise(x + ((r * F64A[30]) - (r * F64A[31])), z + ((r * F64A[31]) + (r * F64A[30]))) + +n.noise(x + ((r * F64A[32]) - (r * F64A[33])), z + ((r * F64A[33]) + (r * F64A[32]))) + +n.noise(x + ((r * F64A[34]) - (r * F64A[35])), z + ((r * F64A[35]) + (r * F64A[34]))) + +n.noise(x + ((r * F64A[36]) - (r * F64A[37])), z + ((r * F64A[37]) + (r * F64A[36]))) + +n.noise(x + ((r * F64A[38]) - (r * F64A[39])), z + ((r * F64A[39]) + (r * F64A[38]))) + +n.noise(x + ((r * F64A[40]) - (r * F64A[41])), z + ((r * F64A[41]) + (r * F64A[40]))) + +n.noise(x + ((r * F64A[42]) - (r * F64A[43])), z + ((r * F64A[43]) + (r * F64A[42]))) + +n.noise(x + ((r * F64A[44]) - (r * F64A[45])), z + ((r * F64A[45]) + (r * F64A[44]))) + +n.noise(x + ((r * F64A[46]) - (r * F64A[47])), z + ((r * F64A[47]) + (r * F64A[46]))) + +n.noise(x + ((r * F64A[48]) - (r * F64A[49])), z + ((r * F64A[49]) + (r * F64A[48]))) + +n.noise(x + ((r * F64A[50]) - (r * F64A[51])), z + ((r * F64A[51]) + (r * F64A[50]))) + +n.noise(x + ((r * F64A[52]) - (r * F64A[53])), z + ((r * F64A[53]) + (r * F64A[52]))) + +n.noise(x + ((r * F64A[54]) - (r * F64A[55])), z + ((r * F64A[55]) + (r * F64A[54]))) + +n.noise(x + ((r * F64A[56]) - (r * F64A[57])), z + ((r * F64A[57]) + (r * F64A[56]))) + +n.noise(x + ((r * F64A[58]) - (r * F64A[59])), z + ((r * F64A[59]) + (r * F64A[58]))) + +n.noise(x + ((r * F64A[60]) - (r * F64A[61])), z + ((r * F64A[61]) + (r * F64A[60]))) + +n.noise(x + ((r * F64A[62]) - (r * F64A[63])), z + ((r * F64A[63]) + (r * F64A[62]))) + +n.noise(x + ((r * F64A[64]) - (r * F64A[65])), z + ((r * F64A[65]) + (r * F64A[64]))) + +n.noise(x + ((r * F64A[66]) - (r * F64A[67])), z + ((r * F64A[67]) + (r * F64A[66]))) + +n.noise(x + ((r * F64A[68]) - (r * F64A[69])), z + ((r * F64A[69]) + (r * F64A[68]))) + +n.noise(x + ((r * F64A[70]) - (r * F64A[71])), z + ((r * F64A[71]) + (r * F64A[70]))) + +n.noise(x + ((r * F64A[72]) - (r * F64A[73])), z + ((r * F64A[73]) + (r * F64A[72]))) + +n.noise(x + ((r * F64A[74]) - (r * F64A[75])), z + ((r * F64A[75]) + (r * F64A[74]))) + +n.noise(x + ((r * F64A[76]) - (r * F64A[77])), z + ((r * F64A[77]) + (r * F64A[76]))) + +n.noise(x + ((r * F64A[78]) - (r * F64A[79])), z + ((r * F64A[79]) + (r * F64A[78]))) + +n.noise(x + ((r * F64A[80]) - (r * F64A[81])), z + ((r * F64A[81]) + (r * F64A[80]))) + +n.noise(x + ((r * F64A[82]) - (r * F64A[83])), z + ((r * F64A[83]) + (r * F64A[82]))) + +n.noise(x + ((r * F64A[84]) - (r * F64A[85])), z + ((r * F64A[85]) + (r * F64A[84]))) + +n.noise(x + ((r * F64A[86]) - (r * F64A[87])), z + ((r * F64A[87]) + (r * F64A[86]))) + +n.noise(x + ((r * F64A[88]) - (r * F64A[89])), z + ((r * F64A[89]) + (r * F64A[88]))) + +n.noise(x + ((r * F64A[90]) - (r * F64A[91])), z + ((r * F64A[91]) + (r * F64A[90]))) + +n.noise(x + ((r * F64A[92]) - (r * F64A[93])), z + ((r * F64A[93]) + (r * F64A[92]))) + +n.noise(x + ((r * F64A[94]) - (r * F64A[95])), z + ((r * F64A[95]) + (r * F64A[94]))) + +n.noise(x + ((r * F64A[96]) - (r * F64A[97])), z + ((r * F64A[97]) + (r * F64A[96]))) + +n.noise(x + ((r * F64A[98]) - (r * F64A[99])), z + ((r * F64A[99]) + (r * F64A[98]))) + +n.noise(x + ((r * F64A[100]) - (r * F64A[101])), z + ((r * F64A[101]) + (r * F64A[100]))) + +n.noise(x + ((r * F64A[102]) - (r * F64A[103])), z + ((r * F64A[103]) + (r * F64A[102]))) + +n.noise(x + ((r * F64A[104]) - (r * F64A[105])), z + ((r * F64A[105]) + (r * F64A[104]))) + +n.noise(x + ((r * F64A[106]) - (r * F64A[107])), z + ((r * F64A[107]) + (r * F64A[106]))) + +n.noise(x + ((r * F64A[108]) - (r * F64A[109])), z + ((r * F64A[109]) + (r * F64A[108]))) + +n.noise(x + ((r * F64A[110]) - (r * F64A[111])), z + ((r * F64A[111]) + (r * F64A[110]))) + +n.noise(x + ((r * F64A[112]) - (r * F64A[113])), z + ((r * F64A[113]) + (r * F64A[112]))) + +n.noise(x + ((r * F64A[114]) - (r * F64A[115])), z + ((r * F64A[115]) + (r * F64A[114]))) + +n.noise(x + ((r * F64A[116]) - (r * F64A[117])), z + ((r * F64A[117]) + (r * F64A[116]))) + +n.noise(x + ((r * F64A[118]) - (r * F64A[119])), z + ((r * F64A[119]) + (r * F64A[118]))) + +n.noise(x + ((r * F64A[120]) - (r * F64A[121])), z + ((r * F64A[121]) + (r * F64A[120]))) + +n.noise(x + ((r * F64A[122]) - (r * F64A[123])), z + ((r * F64A[123]) + (r * F64A[122]))) + +n.noise(x + ((r * F64A[124]) - (r * F64A[125])), z + ((r * F64A[125]) + (r * F64A[124]))) + +n.noise(x + ((r * F64A[126]) - (r * F64A[127])), z + ((r * F64A[127]) + (r * F64A[126]))) + +n.noise(x + ((r * F64A[128]) - (r * F64A[129])), z + ((r * F64A[129]) + (r * F64A[128]))) + +n.noise(x + ((r * F64A[130]) - (r * F64A[131])), z + ((r * F64A[131]) + (r * F64A[130]))) + +n.noise(x + ((r * F64A[132]) - (r * F64A[133])), z + ((r * F64A[133]) + (r * F64A[132]))) + +n.noise(x + ((r * F64A[134]) - (r * F64A[135])), z + ((r * F64A[135]) + (r * F64A[134]))) + +n.noise(x + ((r * F64A[136]) - (r * F64A[137])), z + ((r * F64A[137]) + (r * F64A[136]))) + +n.noise(x + ((r * F64A[138]) - (r * F64A[139])), z + ((r * F64A[139]) + (r * F64A[138]))) + +n.noise(x + ((r * F64A[140]) - (r * F64A[141])), z + ((r * F64A[141]) + (r * F64A[140]))) + +n.noise(x + ((r * F64A[142]) - (r * F64A[143])), z + ((r * F64A[143]) + (r * F64A[142]))))/64.0D; + } + private static final double[] F72A = {1,0,0.9961946980917455451987052583717741072177886962890625,0.0871557427476581658698506771543179638683795928955078125,0.98480775301220802031565426659653894603252410888671875,0.1736481776669303311866343619840336032211780548095703125, + 0.96592582628906831221371476203785277903079986572265625,0.25881904510252073947640383266843855381011962890625,0.939692620785908427905042117345146834850311279296875,0.342020143325668712908083080037613399326801300048828125,0.90630778703664993667388216636027209460735321044921875,0.422618261740699441286750470680999569594860076904296875, + 0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,0.81915204428899179855960710483486764132976531982421875,0.57357643635104604840080355643294751644134521484375,0.76604444311897801345168090847437269985675811767578125,0.642787609686539251896419955301098525524139404296875, + 0.70710678118654757273731092936941422522068023681640625,0.707106781186547461715008466853760182857513427734375,0.64278760968653936291872241781675256788730621337890625,0.76604444311897801345168090847437269985675811767578125,0.57357643635104615942310601894860155880451202392578125,0.81915204428899179855960710483486764132976531982421875, + 0.50000000000000011102230246251565404236316680908203125,0.8660254037844385965883020617184229195117950439453125,0.422618261740699441286750470680999569594860076904296875,0.90630778703664993667388216636027209460735321044921875,0.342020143325668823930385542553267441689968109130859375,0.93969262078590831688273965482949279248714447021484375, + 0.25881904510252073947640383266843855381011962890625,0.96592582628906831221371476203785277903079986572265625,0.17364817766693041445336120887077413499355316162109375,0.98480775301220802031565426659653894603252410888671875,0.087155742747658138114275061525404453277587890625,0.9961946980917455451987052583717741072177886962890625, + 0.0000000000000000612323399573676603586882014729198302312846062338790031898128063403419218957424163818359375,1,-0.08715574274765823525878971622660174034535884857177734375,0.9961946980917455451987052583717741072177886962890625,-0.1736481776669303034310587463551200926303863525390625,0.98480775301220802031565426659653894603252410888671875, + -0.25881904510252085049870629518409259617328643798828125,0.96592582628906831221371476203785277903079986572265625,-0.342020143325668712908083080037613399326801300048828125,0.939692620785908427905042117345146834850311279296875,-0.422618261740699330264448008165345527231693267822265625,0.90630778703665004769618462887592613697052001953125, + -0.4999999999999997779553950749686919152736663818359375,0.86602540378443870761060452423407696187496185302734375,-0.57357643635104615942310601894860155880451202392578125,0.8191520442889916875373046423192135989665985107421875,-0.64278760968653936291872241781675256788730621337890625,0.76604444311897801345168090847437269985675811767578125, + -0.707106781186547461715008466853760182857513427734375,0.70710678118654757273731092936941422522068023681640625,-0.76604444311897790242937844595871865749359130859375,0.6427876096865394739410248803324066102504730224609375,-0.81915204428899190958190956735052168369293212890625,0.57357643635104593737850109391729347407817840576171875, + -0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,-0.90630778703664993667388216636027209460735321044921875,0.4226182617406994967979017019388265907764434814453125,-0.93969262078590831688273965482949279248714447021484375,0.342020143325668879441536773811094462871551513671875, + -0.965925826289068201191412299522198736667633056640625,0.258819045102521017032159988957573659718036651611328125,-0.98480775301220802031565426659653894603252410888671875,0.1736481776669302756754831307262065820395946502685546875,-0.9961946980917455451987052583717741072177886962890625,0.087155742747658193625426292783231474459171295166015625, + -1,0.000000000000000122464679914735320717376402945839660462569212467758006379625612680683843791484832763671875,-0.9961946980917455451987052583717741072177886962890625,-0.0871557427476579438252457521230098791420459747314453125,-0.98480775301220802031565426659653894603252410888671875,-0.173648177666930469964512440128601156175136566162109375, + -0.96592582628906831221371476203785277903079986572265625,-0.258819045102520794987555063926265574991703033447265625,-0.939692620785908427905042117345146834850311279296875,-0.3420201433256686573969318487797863781452178955078125,-0.90630778703665004769618462887592613697052001953125,-0.42261826174069927475329677690751850605010986328125, + -0.8660254037844385965883020617184229195117950439453125,-0.50000000000000011102230246251565404236316680908203125,-0.81915204428899179855960710483486764132976531982421875,-0.57357643635104615942310601894860155880451202392578125,-0.76604444311897801345168090847437269985675811767578125,-0.642787609686539251896419955301098525524139404296875, + -0.7071067811865476837596133918850682675838470458984375,-0.707106781186547461715008466853760182857513427734375,-0.6427876096865394739410248803324066102504730224609375,-0.76604444311897790242937844595871865749359130859375,-0.57357643635104638146771094397990964353084564208984375,-0.81915204428899157651500217980355955660343170166015625, + -0.500000000000000444089209850062616169452667236328125,-0.86602540378443837454369713668711483478546142578125,-0.42261826174069916373099431439186446368694305419921875,-0.90630778703665004769618462887592613697052001953125,-0.34202014332566854637462938626413233578205108642578125,-0.939692620785908427905042117345146834850311279296875, + -0.25881904510252062845410137015278451144695281982421875,-0.96592582628906831221371476203785277903079986572265625,-0.1736481776669303311866343619840336032211780548095703125,-0.98480775301220802031565426659653894603252410888671875,-0.08715574274765824913657752404105849564075469970703125,-0.9961946980917455451987052583717741072177886962890625, + -0.00000000000000018369701987210296875011296034045003113559498615810217092558787044254131615161895751953125,-1,0.0871557427476578883140945208651828579604625701904296875,-0.9961946980917455451987052583717741072177886962890625,0.17364817766692997036415135880815796554088592529296875,-0.98480775301220813133795672911219298839569091796875, + 0.258819045102520295387193982605822384357452392578125,-0.9659258262890684232360172245535068213939666748046875,0.34202014332566899046383923632674850523471832275390625,-0.93969262078590831688273965482949279248714447021484375,0.42261826174069960782020416445448063313961029052734375,-0.90630778703664993667388216636027209460735321044921875, + 0.50000000000000011102230246251565404236316680908203125,-0.8660254037844385965883020617184229195117950439453125,0.57357643635104604840080355643294751644134521484375,-0.81915204428899179855960710483486764132976531982421875,0.642787609686539251896419955301098525524139404296875,-0.7660444431189781244739833709900267422199249267578125, + 0.70710678118654735069270600433810614049434661865234375,-0.7071067811865476837596133918850682675838470458984375,0.76604444311897779140707598344306461513042449951171875,-0.64278760968653958496332734284806065261363983154296875,0.81915204428899157651500217980355955660343170166015625,-0.573576436351046492490013406495563685894012451171875, + 0.86602540378443837454369713668711483478546142578125,-0.500000000000000444089209850062616169452667236328125,0.90630778703665004769618462887592613697052001953125,-0.422618261740699219242145545649691484868526458740234375,0.939692620785908427905042117345146834850311279296875,-0.342020143325668601885780617521959356963634490966796875, + 0.96592582628906831221371476203785277903079986572265625,-0.258819045102520683965252601410611532628536224365234375,0.98480775301220802031565426659653894603252410888671875,-0.1736481776669303866977855932418606244027614593505859375,0.9961946980917455451987052583717741072177886962890625,-0.08715574274765831852551656311334227211773395538330078125}; + private static double sc72(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F72A[0]) - (r * F72A[1])), z + ((r * F72A[1]) + (r * F72A[0]))) + +n.noise(x + ((r * F72A[2]) - (r * F72A[3])), z + ((r * F72A[3]) + (r * F72A[2]))) + +n.noise(x + ((r * F72A[4]) - (r * F72A[5])), z + ((r * F72A[5]) + (r * F72A[4]))) + +n.noise(x + ((r * F72A[6]) - (r * F72A[7])), z + ((r * F72A[7]) + (r * F72A[6]))) + +n.noise(x + ((r * F72A[8]) - (r * F72A[9])), z + ((r * F72A[9]) + (r * F72A[8]))) + +n.noise(x + ((r * F72A[10]) - (r * F72A[11])), z + ((r * F72A[11]) + (r * F72A[10]))) + +n.noise(x + ((r * F72A[12]) - (r * F72A[13])), z + ((r * F72A[13]) + (r * F72A[12]))) + +n.noise(x + ((r * F72A[14]) - (r * F72A[15])), z + ((r * F72A[15]) + (r * F72A[14]))) + +n.noise(x + ((r * F72A[16]) - (r * F72A[17])), z + ((r * F72A[17]) + (r * F72A[16]))) + +n.noise(x + ((r * F72A[18]) - (r * F72A[19])), z + ((r * F72A[19]) + (r * F72A[18]))) + +n.noise(x + ((r * F72A[20]) - (r * F72A[21])), z + ((r * F72A[21]) + (r * F72A[20]))) + +n.noise(x + ((r * F72A[22]) - (r * F72A[23])), z + ((r * F72A[23]) + (r * F72A[22]))) + +n.noise(x + ((r * F72A[24]) - (r * F72A[25])), z + ((r * F72A[25]) + (r * F72A[24]))) + +n.noise(x + ((r * F72A[26]) - (r * F72A[27])), z + ((r * F72A[27]) + (r * F72A[26]))) + +n.noise(x + ((r * F72A[28]) - (r * F72A[29])), z + ((r * F72A[29]) + (r * F72A[28]))) + +n.noise(x + ((r * F72A[30]) - (r * F72A[31])), z + ((r * F72A[31]) + (r * F72A[30]))) + +n.noise(x + ((r * F72A[32]) - (r * F72A[33])), z + ((r * F72A[33]) + (r * F72A[32]))) + +n.noise(x + ((r * F72A[34]) - (r * F72A[35])), z + ((r * F72A[35]) + (r * F72A[34]))) + +n.noise(x + ((r * F72A[36]) - (r * F72A[37])), z + ((r * F72A[37]) + (r * F72A[36]))) + +n.noise(x + ((r * F72A[38]) - (r * F72A[39])), z + ((r * F72A[39]) + (r * F72A[38]))) + +n.noise(x + ((r * F72A[40]) - (r * F72A[41])), z + ((r * F72A[41]) + (r * F72A[40]))) + +n.noise(x + ((r * F72A[42]) - (r * F72A[43])), z + ((r * F72A[43]) + (r * F72A[42]))) + +n.noise(x + ((r * F72A[44]) - (r * F72A[45])), z + ((r * F72A[45]) + (r * F72A[44]))) + +n.noise(x + ((r * F72A[46]) - (r * F72A[47])), z + ((r * F72A[47]) + (r * F72A[46]))) + +n.noise(x + ((r * F72A[48]) - (r * F72A[49])), z + ((r * F72A[49]) + (r * F72A[48]))) + +n.noise(x + ((r * F72A[50]) - (r * F72A[51])), z + ((r * F72A[51]) + (r * F72A[50]))) + +n.noise(x + ((r * F72A[52]) - (r * F72A[53])), z + ((r * F72A[53]) + (r * F72A[52]))) + +n.noise(x + ((r * F72A[54]) - (r * F72A[55])), z + ((r * F72A[55]) + (r * F72A[54]))) + +n.noise(x + ((r * F72A[56]) - (r * F72A[57])), z + ((r * F72A[57]) + (r * F72A[56]))) + +n.noise(x + ((r * F72A[58]) - (r * F72A[59])), z + ((r * F72A[59]) + (r * F72A[58]))) + +n.noise(x + ((r * F72A[60]) - (r * F72A[61])), z + ((r * F72A[61]) + (r * F72A[60]))) + +n.noise(x + ((r * F72A[62]) - (r * F72A[63])), z + ((r * F72A[63]) + (r * F72A[62]))) + +n.noise(x + ((r * F72A[64]) - (r * F72A[65])), z + ((r * F72A[65]) + (r * F72A[64]))) + +n.noise(x + ((r * F72A[66]) - (r * F72A[67])), z + ((r * F72A[67]) + (r * F72A[66]))) + +n.noise(x + ((r * F72A[68]) - (r * F72A[69])), z + ((r * F72A[69]) + (r * F72A[68]))) + +n.noise(x + ((r * F72A[70]) - (r * F72A[71])), z + ((r * F72A[71]) + (r * F72A[70]))) + +n.noise(x + ((r * F72A[72]) - (r * F72A[73])), z + ((r * F72A[73]) + (r * F72A[72]))) + +n.noise(x + ((r * F72A[74]) - (r * F72A[75])), z + ((r * F72A[75]) + (r * F72A[74]))) + +n.noise(x + ((r * F72A[76]) - (r * F72A[77])), z + ((r * F72A[77]) + (r * F72A[76]))) + +n.noise(x + ((r * F72A[78]) - (r * F72A[79])), z + ((r * F72A[79]) + (r * F72A[78]))) + +n.noise(x + ((r * F72A[80]) - (r * F72A[81])), z + ((r * F72A[81]) + (r * F72A[80]))) + +n.noise(x + ((r * F72A[82]) - (r * F72A[83])), z + ((r * F72A[83]) + (r * F72A[82]))) + +n.noise(x + ((r * F72A[84]) - (r * F72A[85])), z + ((r * F72A[85]) + (r * F72A[84]))) + +n.noise(x + ((r * F72A[86]) - (r * F72A[87])), z + ((r * F72A[87]) + (r * F72A[86]))) + +n.noise(x + ((r * F72A[88]) - (r * F72A[89])), z + ((r * F72A[89]) + (r * F72A[88]))) + +n.noise(x + ((r * F72A[90]) - (r * F72A[91])), z + ((r * F72A[91]) + (r * F72A[90]))) + +n.noise(x + ((r * F72A[92]) - (r * F72A[93])), z + ((r * F72A[93]) + (r * F72A[92]))) + +n.noise(x + ((r * F72A[94]) - (r * F72A[95])), z + ((r * F72A[95]) + (r * F72A[94]))) + +n.noise(x + ((r * F72A[96]) - (r * F72A[97])), z + ((r * F72A[97]) + (r * F72A[96]))) + +n.noise(x + ((r * F72A[98]) - (r * F72A[99])), z + ((r * F72A[99]) + (r * F72A[98]))) + +n.noise(x + ((r * F72A[100]) - (r * F72A[101])), z + ((r * F72A[101]) + (r * F72A[100]))) + +n.noise(x + ((r * F72A[102]) - (r * F72A[103])), z + ((r * F72A[103]) + (r * F72A[102]))) + +n.noise(x + ((r * F72A[104]) - (r * F72A[105])), z + ((r * F72A[105]) + (r * F72A[104]))) + +n.noise(x + ((r * F72A[106]) - (r * F72A[107])), z + ((r * F72A[107]) + (r * F72A[106]))) + +n.noise(x + ((r * F72A[108]) - (r * F72A[109])), z + ((r * F72A[109]) + (r * F72A[108]))) + +n.noise(x + ((r * F72A[110]) - (r * F72A[111])), z + ((r * F72A[111]) + (r * F72A[110]))) + +n.noise(x + ((r * F72A[112]) - (r * F72A[113])), z + ((r * F72A[113]) + (r * F72A[112]))) + +n.noise(x + ((r * F72A[114]) - (r * F72A[115])), z + ((r * F72A[115]) + (r * F72A[114]))) + +n.noise(x + ((r * F72A[116]) - (r * F72A[117])), z + ((r * F72A[117]) + (r * F72A[116]))) + +n.noise(x + ((r * F72A[118]) - (r * F72A[119])), z + ((r * F72A[119]) + (r * F72A[118]))) + +n.noise(x + ((r * F72A[120]) - (r * F72A[121])), z + ((r * F72A[121]) + (r * F72A[120]))) + +n.noise(x + ((r * F72A[122]) - (r * F72A[123])), z + ((r * F72A[123]) + (r * F72A[122]))) + +n.noise(x + ((r * F72A[124]) - (r * F72A[125])), z + ((r * F72A[125]) + (r * F72A[124]))) + +n.noise(x + ((r * F72A[126]) - (r * F72A[127])), z + ((r * F72A[127]) + (r * F72A[126]))) + +n.noise(x + ((r * F72A[128]) - (r * F72A[129])), z + ((r * F72A[129]) + (r * F72A[128]))) + +n.noise(x + ((r * F72A[130]) - (r * F72A[131])), z + ((r * F72A[131]) + (r * F72A[130]))) + +n.noise(x + ((r * F72A[132]) - (r * F72A[133])), z + ((r * F72A[133]) + (r * F72A[132]))) + +n.noise(x + ((r * F72A[134]) - (r * F72A[135])), z + ((r * F72A[135]) + (r * F72A[134]))) + +n.noise(x + ((r * F72A[136]) - (r * F72A[137])), z + ((r * F72A[137]) + (r * F72A[136]))) + +n.noise(x + ((r * F72A[138]) - (r * F72A[139])), z + ((r * F72A[139]) + (r * F72A[138]))) + +n.noise(x + ((r * F72A[140]) - (r * F72A[141])), z + ((r * F72A[141]) + (r * F72A[140]))) + +n.noise(x + ((r * F72A[142]) - (r * F72A[143])), z + ((r * F72A[143]) + (r * F72A[142]))))/72.0D; + } + private static final double[] F96A = {1,0,0.99862953475457383323288240717374719679355621337890625,0.05233595624294383463759317010044469498097896575927734375,0.9945218953682732898613494398887269198894500732421875,0.104528463267653470847307062285835854709148406982421875, + 0.987688340595137770350220307591371238231658935546875,0.1564344650402308689596253543641068972647190093994140625,0.9781476007338056888329447247087955474853515625,0.207911690817759342575499204031075350940227508544921875,0.96592582628906831221371476203785277903079986572265625,0.25881904510252073947640383266843855381011962890625, + 0.95105651629515353118193843329208903014659881591796875,0.309016994374947395751718204337521456182003021240234375,0.93358042649720174299687869279296137392520904541015625,0.3583679495453002683547083506709896028041839599609375,0.91354545764260086659902526662335731089115142822265625,0.406736643075800208269043878317461349070072174072265625, + 0.89100652418836789880884907688596285879611968994140625,0.453990499739546748969587497413158416748046875,0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,0.838670567945424050293468098971061408519744873046875,0.54463903501502708426329490976058878004550933837890625, + 0.80901699437494745126286943559534847736358642578125,0.5877852522924731371034567928290925920009613037109375,0.77714596145697090179282895405776798725128173828125,0.62932039104983739097320949440472759306430816650390625,0.7431448254773942441175904605188407003879547119140625,0.66913060635885823757007528911344707012176513671875, + 0.70710678118654757273731092936941422522068023681640625,0.707106781186547461715008466853760182857513427734375,0.66913060635885823757007528911344707012176513671875,0.7431448254773942441175904605188407003879547119140625,0.6293203910498375019955119569203816354274749755859375,0.77714596145697090179282895405776798725128173828125, + 0.5877852522924731371034567928290925920009613037109375,0.80901699437494745126286943559534847736358642578125,0.54463903501502708426329490976058878004550933837890625,0.838670567945424050293468098971061408519744873046875,0.50000000000000011102230246251565404236316680908203125,0.8660254037844385965883020617184229195117950439453125, + 0.453990499739546804480738728670985437929630279541015625,0.891006524188367787786546614370308816432952880859375,0.406736643075800208269043878317461349070072174072265625,0.91354545764260086659902526662335731089115142822265625,0.35836794954530037937701081318664364516735076904296875,0.93358042649720174299687869279296137392520904541015625, + 0.30901699437494745126286943559534847736358642578125,0.95105651629515353118193843329208903014659881591796875,0.25881904510252073947640383266843855381011962890625,0.96592582628906831221371476203785277903079986572265625,0.207911690817759453597801666546729393303394317626953125,0.97814760073380557781064226219314150512218475341796875, + 0.1564344650402309244707765856219339184463024139404296875,0.987688340595137770350220307591371238231658935546875,0.10452846326765345696951925447137909941375255584716796875,0.9945218953682732898613494398887269198894500732421875,0.052335956242943966476577344337783870287239551544189453125,0.99862953475457383323288240717374719679355621337890625, + 0.0000000000000000612323399573676603586882014729198302312846062338790031898128063403419218957424163818359375,1,-0.052335956242943841576487074007673072628676891326904296875,0.99862953475457383323288240717374719679355621337890625,-0.1045284632676535541140339091725763864815235137939453125,0.9945218953682732898613494398887269198894500732421875, + -0.1564344650402308134484741231062798760831356048583984375,0.987688340595137770350220307591371238231658935546875,-0.207911690817759342575499204031075350940227508544921875,0.9781476007338056888329447247087955474853515625,-0.25881904510252085049870629518409259617328643798828125,0.96592582628906831221371476203785277903079986572265625, + -0.30901699437494734024056697307969443500041961669921875,0.951056516295153642204240895807743072509765625,-0.3583679495453002683547083506709896028041839599609375,0.93358042649720174299687869279296137392520904541015625,-0.40673664307580026378019510957528837025165557861328125,0.91354545764260086659902526662335731089115142822265625, + -0.453990499739546693458436266155331395566463470458984375,0.89100652418836789880884907688596285879611968994140625,-0.4999999999999997779553950749686919152736663818359375,0.86602540378443870761060452423407696187496185302734375,-0.54463903501502708426329490976058878004550933837890625,0.83867056794542393927116563645540736615657806396484375, + -0.58778525229247302608115433031343854963779449462890625,0.80901699437494745126286943559534847736358642578125,-0.629320391049837279950907031889073550701141357421875,0.77714596145697101281513141657342202961444854736328125,-0.66913060635885823757007528911344707012176513671875,0.7431448254773942441175904605188407003879547119140625, + -0.707106781186547461715008466853760182857513427734375,0.70710678118654757273731092936941422522068023681640625,-0.74314482547739402207298553548753261566162109375,0.66913060635885834859237775162910111248493194580078125,-0.77714596145697090179282895405776798725128173828125,0.62932039104983739097320949440472759306430816650390625, + -0.80901699437494734024056697307969443500041961669921875,0.58778525229247324812575925534474663436412811279296875,-0.83867056794542393927116563645540736615657806396484375,0.54463903501502730630789983479189686477184295654296875,-0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375, + -0.891006524188367787786546614370308816432952880859375,0.45399049973954685999188995992881245911121368408203125,-0.913545457642600755576722804107703268527984619140625,0.406736643075800430313648803348769433796405792236328125,-0.93358042649720174299687869279296137392520904541015625,0.358367949545300212843557119413162581622600555419921875, + -0.95105651629515353118193843329208903014659881591796875,0.309016994374947506774020666853175498545169830322265625,-0.965925826289068201191412299522198736667633056640625,0.258819045102521017032159988957573659718036651611328125,-0.9781476007338056888329447247087955474853515625,0.2079116908177593148199235884021618403494358062744140625, + -0.98768834059513765932791784507571719586849212646484375,0.1564344650402309799819278168797609396278858184814453125,-0.9945218953682732898613494398887269198894500732421875,0.10452846326765373452527541076051420532166957855224609375,-0.99862953475457383323288240717374719679355621337890625,0.05233595624294380688201755447153118439018726348876953125, + -1,0.000000000000000122464679914735320717376402945839660462569212467758006379625612680683843791484832763671875,-0.99862953475457383323288240717374719679355621337890625,-0.05233595624294355708183701381130958907306194305419921875,-0.9945218953682732898613494398887269198894500732421875,-0.1045284632676534986028826779147493652999401092529296875, + -0.987688340595137770350220307591371238231658935546875,-0.156434465040230730181747276219539344310760498046875,-0.97814760073380557781064226219314150512218475341796875,-0.20791169081775950910895289780455641448497772216796875,-0.96592582628906831221371476203785277903079986572265625,-0.258819045102520794987555063926265574991703033447265625, + -0.951056516295153642204240895807743072509765625,-0.309016994374947284729415741821867413818836212158203125,-0.93358042649720174299687869279296137392520904541015625,-0.358367949545300434888162044444470666348934173583984375,-0.91354545764260086659902526662335731089115142822265625,-0.406736643075800208269043878317461349070072174072265625, + -0.89100652418836789880884907688596285879611968994140625,-0.453990499739546693458436266155331395566463470458984375,-0.8660254037844385965883020617184229195117950439453125,-0.50000000000000011102230246251565404236316680908203125,-0.838670567945424050293468098971061408519744873046875,-0.54463903501502708426329490976058878004550933837890625, + -0.80901699437494756228517189811100251972675323486328125,-0.58778525229247302608115433031343854963779449462890625,-0.77714596145697079077052649154211394488811492919921875,-0.62932039104983761301781441943603567779064178466796875,-0.7431448254773942441175904605188407003879547119140625,-0.66913060635885823757007528911344707012176513671875, + -0.7071067811865476837596133918850682675838470458984375,-0.707106781186547461715008466853760182857513427734375,-0.66913060635885812654777282659779302775859832763671875,-0.74314482547739435513989292303449474275112152099609375,-0.62932039104983783506241934446734376251697540283203125,-0.77714596145697056872592156651080586016178131103515625, + -0.58778525229247324812575925534474663436412811279296875,-0.80901699437494734024056697307969443500041961669921875,-0.544639035015026973240992447244934737682342529296875,-0.838670567945424050293468098971061408519744873046875,-0.500000000000000444089209850062616169452667236328125,-0.86602540378443837454369713668711483478546142578125, + -0.453990499739546915503041191186639480292797088623046875,-0.891006524188367787786546614370308816432952880859375,-0.406736643075800097246741415801807306706905364990234375,-0.9135454576426009776213277291390113532543182373046875,-0.3583679495453007124439182007336057722568511962890625,-0.933580426497201631974576230277307331562042236328125, + -0.30901699437494756228517189811100251972675323486328125,-0.95105651629515353118193843329208903014659881591796875,-0.25881904510252062845410137015278451144695281982421875,-0.96592582628906831221371476203785277903079986572265625,-0.207911690817759786664709054093691520392894744873046875,-0.97814760073380557781064226219314150512218475341796875, + -0.1564344650402310354930790481375879608094692230224609375,-0.98768834059513765932791784507571719586849212646484375,-0.104528463267653359825004599770181812345981597900390625,-0.99452189536827340088365190240438096225261688232421875,-0.05233595624294430648237863579197437502443790435791015625,-0.99862953475457383323288240717374719679355621337890625, + -0.00000000000000018369701987210296875011296034045003113559498615810217092558787044254131615161895751953125,-1,0.05233595624294394565989563261609873734414577484130859375,-0.99862953475457383323288240717374719679355621337890625,0.10452846326765298512473378877984941937029361724853515625,-0.99452189536827340088365190240438096225261688232421875, + 0.156434465040230674670596044961712323129177093505859375,-0.987688340595137770350220307591371238231658935546875,0.2079116908177594258422260509178158827126026153564453125,-0.97814760073380557781064226219314150512218475341796875,0.258819045102520295387193982605822384357452392578125,-0.9659258262890684232360172245535068213939666748046875, + 0.3090169943749472292182645105640403926372528076171875,-0.951056516295153642204240895807743072509765625,0.35836794954530037937701081318664364516735076904296875,-0.93358042649720174299687869279296137392520904541015625,0.406736643075799764179834028254845179617404937744140625,-0.91354545764260108864363019165466539561748504638671875, + 0.45399049973954663794728503489750437438488006591796875,-0.89100652418836789880884907688596285879611968994140625,0.50000000000000011102230246251565404236316680908203125,-0.8660254037844385965883020617184229195117950439453125,0.54463903501502664017408505969797261059284210205078125,-0.8386705679454242723380730240023694932460784912109375, + 0.587785252292472915058851867797784507274627685546875,-0.80901699437494756228517189811100251972675323486328125,0.6293203910498375019955119569203816354274749755859375,-0.77714596145697079077052649154211394488811492919921875,0.669130606358857793480865439050830900669097900390625,-0.74314482547739457718449784806580282747745513916015625, + 0.70710678118654735069270600433810614049434661865234375,-0.7071067811865476837596133918850682675838470458984375,0.7431448254773942441175904605188407003879547119140625,-0.66913060635885812654777282659779302775859832763671875,0.77714596145697056872592156651080586016178131103515625,-0.62932039104983783506241934446734376251697540283203125, + 0.80901699437494734024056697307969443500041961669921875,-0.587785252292473359148061717860400676727294921875,0.838670567945424050293468098971061408519744873046875,-0.544639035015026973240992447244934737682342529296875,0.86602540378443837454369713668711483478546142578125,-0.500000000000000444089209850062616169452667236328125, + 0.891006524188367787786546614370308816432952880859375,-0.4539904997395469710141924224444665014743804931640625,0.9135454576426009776213277291390113532543182373046875,-0.40673664307580015275789264705963432788848876953125,0.93358042649720152095227376776165328919887542724609375,-0.358367949545300767955069431991432793438434600830078125, + 0.95105651629515353118193843329208903014659881591796875,-0.309016994374947617796323129368829540908336639404296875,0.96592582628906831221371476203785277903079986572265625,-0.258819045102520683965252601410611532628536224365234375,0.97814760073380557781064226219314150512218475341796875,-0.2079116908177598699314359009804320521652698516845703125, + 0.98768834059513765932791784507571719586849212646484375,-0.156434465040231118759805895024328492581844329833984375,0.9945218953682732898613494398887269198894500732421875,-0.10452846326765341533615583102800883352756500244140625,0.99862953475457383323288240717374719679355621337890625,-0.052335956242944368932423770957029773853719234466552734375}; + private static double sc96(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F96A[0]) - (r * F96A[1])), z + ((r * F96A[1]) + (r * F96A[0]))) + +n.noise(x + ((r * F96A[2]) - (r * F96A[3])), z + ((r * F96A[3]) + (r * F96A[2]))) + +n.noise(x + ((r * F96A[4]) - (r * F96A[5])), z + ((r * F96A[5]) + (r * F96A[4]))) + +n.noise(x + ((r * F96A[6]) - (r * F96A[7])), z + ((r * F96A[7]) + (r * F96A[6]))) + +n.noise(x + ((r * F96A[8]) - (r * F96A[9])), z + ((r * F96A[9]) + (r * F96A[8]))) + +n.noise(x + ((r * F96A[10]) - (r * F96A[11])), z + ((r * F96A[11]) + (r * F96A[10]))) + +n.noise(x + ((r * F96A[12]) - (r * F96A[13])), z + ((r * F96A[13]) + (r * F96A[12]))) + +n.noise(x + ((r * F96A[14]) - (r * F96A[15])), z + ((r * F96A[15]) + (r * F96A[14]))) + +n.noise(x + ((r * F96A[16]) - (r * F96A[17])), z + ((r * F96A[17]) + (r * F96A[16]))) + +n.noise(x + ((r * F96A[18]) - (r * F96A[19])), z + ((r * F96A[19]) + (r * F96A[18]))) + +n.noise(x + ((r * F96A[20]) - (r * F96A[21])), z + ((r * F96A[21]) + (r * F96A[20]))) + +n.noise(x + ((r * F96A[22]) - (r * F96A[23])), z + ((r * F96A[23]) + (r * F96A[22]))) + +n.noise(x + ((r * F96A[24]) - (r * F96A[25])), z + ((r * F96A[25]) + (r * F96A[24]))) + +n.noise(x + ((r * F96A[26]) - (r * F96A[27])), z + ((r * F96A[27]) + (r * F96A[26]))) + +n.noise(x + ((r * F96A[28]) - (r * F96A[29])), z + ((r * F96A[29]) + (r * F96A[28]))) + +n.noise(x + ((r * F96A[30]) - (r * F96A[31])), z + ((r * F96A[31]) + (r * F96A[30]))) + +n.noise(x + ((r * F96A[32]) - (r * F96A[33])), z + ((r * F96A[33]) + (r * F96A[32]))) + +n.noise(x + ((r * F96A[34]) - (r * F96A[35])), z + ((r * F96A[35]) + (r * F96A[34]))) + +n.noise(x + ((r * F96A[36]) - (r * F96A[37])), z + ((r * F96A[37]) + (r * F96A[36]))) + +n.noise(x + ((r * F96A[38]) - (r * F96A[39])), z + ((r * F96A[39]) + (r * F96A[38]))) + +n.noise(x + ((r * F96A[40]) - (r * F96A[41])), z + ((r * F96A[41]) + (r * F96A[40]))) + +n.noise(x + ((r * F96A[42]) - (r * F96A[43])), z + ((r * F96A[43]) + (r * F96A[42]))) + +n.noise(x + ((r * F96A[44]) - (r * F96A[45])), z + ((r * F96A[45]) + (r * F96A[44]))) + +n.noise(x + ((r * F96A[46]) - (r * F96A[47])), z + ((r * F96A[47]) + (r * F96A[46]))) + +n.noise(x + ((r * F96A[48]) - (r * F96A[49])), z + ((r * F96A[49]) + (r * F96A[48]))) + +n.noise(x + ((r * F96A[50]) - (r * F96A[51])), z + ((r * F96A[51]) + (r * F96A[50]))) + +n.noise(x + ((r * F96A[52]) - (r * F96A[53])), z + ((r * F96A[53]) + (r * F96A[52]))) + +n.noise(x + ((r * F96A[54]) - (r * F96A[55])), z + ((r * F96A[55]) + (r * F96A[54]))) + +n.noise(x + ((r * F96A[56]) - (r * F96A[57])), z + ((r * F96A[57]) + (r * F96A[56]))) + +n.noise(x + ((r * F96A[58]) - (r * F96A[59])), z + ((r * F96A[59]) + (r * F96A[58]))) + +n.noise(x + ((r * F96A[60]) - (r * F96A[61])), z + ((r * F96A[61]) + (r * F96A[60]))) + +n.noise(x + ((r * F96A[62]) - (r * F96A[63])), z + ((r * F96A[63]) + (r * F96A[62]))) + +n.noise(x + ((r * F96A[64]) - (r * F96A[65])), z + ((r * F96A[65]) + (r * F96A[64]))) + +n.noise(x + ((r * F96A[66]) - (r * F96A[67])), z + ((r * F96A[67]) + (r * F96A[66]))) + +n.noise(x + ((r * F96A[68]) - (r * F96A[69])), z + ((r * F96A[69]) + (r * F96A[68]))) + +n.noise(x + ((r * F96A[70]) - (r * F96A[71])), z + ((r * F96A[71]) + (r * F96A[70]))) + +n.noise(x + ((r * F96A[72]) - (r * F96A[73])), z + ((r * F96A[73]) + (r * F96A[72]))) + +n.noise(x + ((r * F96A[74]) - (r * F96A[75])), z + ((r * F96A[75]) + (r * F96A[74]))) + +n.noise(x + ((r * F96A[76]) - (r * F96A[77])), z + ((r * F96A[77]) + (r * F96A[76]))) + +n.noise(x + ((r * F96A[78]) - (r * F96A[79])), z + ((r * F96A[79]) + (r * F96A[78]))) + +n.noise(x + ((r * F96A[80]) - (r * F96A[81])), z + ((r * F96A[81]) + (r * F96A[80]))) + +n.noise(x + ((r * F96A[82]) - (r * F96A[83])), z + ((r * F96A[83]) + (r * F96A[82]))) + +n.noise(x + ((r * F96A[84]) - (r * F96A[85])), z + ((r * F96A[85]) + (r * F96A[84]))) + +n.noise(x + ((r * F96A[86]) - (r * F96A[87])), z + ((r * F96A[87]) + (r * F96A[86]))) + +n.noise(x + ((r * F96A[88]) - (r * F96A[89])), z + ((r * F96A[89]) + (r * F96A[88]))) + +n.noise(x + ((r * F96A[90]) - (r * F96A[91])), z + ((r * F96A[91]) + (r * F96A[90]))) + +n.noise(x + ((r * F96A[92]) - (r * F96A[93])), z + ((r * F96A[93]) + (r * F96A[92]))) + +n.noise(x + ((r * F96A[94]) - (r * F96A[95])), z + ((r * F96A[95]) + (r * F96A[94]))) + +n.noise(x + ((r * F96A[96]) - (r * F96A[97])), z + ((r * F96A[97]) + (r * F96A[96]))) + +n.noise(x + ((r * F96A[98]) - (r * F96A[99])), z + ((r * F96A[99]) + (r * F96A[98]))) + +n.noise(x + ((r * F96A[100]) - (r * F96A[101])), z + ((r * F96A[101]) + (r * F96A[100]))) + +n.noise(x + ((r * F96A[102]) - (r * F96A[103])), z + ((r * F96A[103]) + (r * F96A[102]))) + +n.noise(x + ((r * F96A[104]) - (r * F96A[105])), z + ((r * F96A[105]) + (r * F96A[104]))) + +n.noise(x + ((r * F96A[106]) - (r * F96A[107])), z + ((r * F96A[107]) + (r * F96A[106]))) + +n.noise(x + ((r * F96A[108]) - (r * F96A[109])), z + ((r * F96A[109]) + (r * F96A[108]))) + +n.noise(x + ((r * F96A[110]) - (r * F96A[111])), z + ((r * F96A[111]) + (r * F96A[110]))) + +n.noise(x + ((r * F96A[112]) - (r * F96A[113])), z + ((r * F96A[113]) + (r * F96A[112]))) + +n.noise(x + ((r * F96A[114]) - (r * F96A[115])), z + ((r * F96A[115]) + (r * F96A[114]))) + +n.noise(x + ((r * F96A[116]) - (r * F96A[117])), z + ((r * F96A[117]) + (r * F96A[116]))) + +n.noise(x + ((r * F96A[118]) - (r * F96A[119])), z + ((r * F96A[119]) + (r * F96A[118]))) + +n.noise(x + ((r * F96A[120]) - (r * F96A[121])), z + ((r * F96A[121]) + (r * F96A[120]))) + +n.noise(x + ((r * F96A[122]) - (r * F96A[123])), z + ((r * F96A[123]) + (r * F96A[122]))) + +n.noise(x + ((r * F96A[124]) - (r * F96A[125])), z + ((r * F96A[125]) + (r * F96A[124]))) + +n.noise(x + ((r * F96A[126]) - (r * F96A[127])), z + ((r * F96A[127]) + (r * F96A[126]))) + +n.noise(x + ((r * F96A[128]) - (r * F96A[129])), z + ((r * F96A[129]) + (r * F96A[128]))) + +n.noise(x + ((r * F96A[130]) - (r * F96A[131])), z + ((r * F96A[131]) + (r * F96A[130]))) + +n.noise(x + ((r * F96A[132]) - (r * F96A[133])), z + ((r * F96A[133]) + (r * F96A[132]))) + +n.noise(x + ((r * F96A[134]) - (r * F96A[135])), z + ((r * F96A[135]) + (r * F96A[134]))) + +n.noise(x + ((r * F96A[136]) - (r * F96A[137])), z + ((r * F96A[137]) + (r * F96A[136]))) + +n.noise(x + ((r * F96A[138]) - (r * F96A[139])), z + ((r * F96A[139]) + (r * F96A[138]))) + +n.noise(x + ((r * F96A[140]) - (r * F96A[141])), z + ((r * F96A[141]) + (r * F96A[140]))) + +n.noise(x + ((r * F96A[142]) - (r * F96A[143])), z + ((r * F96A[143]) + (r * F96A[142]))) + +n.noise(x + ((r * F96A[144]) - (r * F96A[145])), z + ((r * F96A[145]) + (r * F96A[144]))) + +n.noise(x + ((r * F96A[146]) - (r * F96A[147])), z + ((r * F96A[147]) + (r * F96A[146]))) + +n.noise(x + ((r * F96A[148]) - (r * F96A[149])), z + ((r * F96A[149]) + (r * F96A[148]))) + +n.noise(x + ((r * F96A[150]) - (r * F96A[151])), z + ((r * F96A[151]) + (r * F96A[150]))) + +n.noise(x + ((r * F96A[152]) - (r * F96A[153])), z + ((r * F96A[153]) + (r * F96A[152]))) + +n.noise(x + ((r * F96A[154]) - (r * F96A[155])), z + ((r * F96A[155]) + (r * F96A[154]))) + +n.noise(x + ((r * F96A[156]) - (r * F96A[157])), z + ((r * F96A[157]) + (r * F96A[156]))) + +n.noise(x + ((r * F96A[158]) - (r * F96A[159])), z + ((r * F96A[159]) + (r * F96A[158]))) + +n.noise(x + ((r * F96A[160]) - (r * F96A[161])), z + ((r * F96A[161]) + (r * F96A[160]))) + +n.noise(x + ((r * F96A[162]) - (r * F96A[163])), z + ((r * F96A[163]) + (r * F96A[162]))) + +n.noise(x + ((r * F96A[164]) - (r * F96A[165])), z + ((r * F96A[165]) + (r * F96A[164]))) + +n.noise(x + ((r * F96A[166]) - (r * F96A[167])), z + ((r * F96A[167]) + (r * F96A[166]))) + +n.noise(x + ((r * F96A[168]) - (r * F96A[169])), z + ((r * F96A[169]) + (r * F96A[168]))) + +n.noise(x + ((r * F96A[170]) - (r * F96A[171])), z + ((r * F96A[171]) + (r * F96A[170]))) + +n.noise(x + ((r * F96A[172]) - (r * F96A[173])), z + ((r * F96A[173]) + (r * F96A[172]))) + +n.noise(x + ((r * F96A[174]) - (r * F96A[175])), z + ((r * F96A[175]) + (r * F96A[174]))) + +n.noise(x + ((r * F96A[176]) - (r * F96A[177])), z + ((r * F96A[177]) + (r * F96A[176]))) + +n.noise(x + ((r * F96A[178]) - (r * F96A[179])), z + ((r * F96A[179]) + (r * F96A[178]))) + +n.noise(x + ((r * F96A[180]) - (r * F96A[181])), z + ((r * F96A[181]) + (r * F96A[180]))) + +n.noise(x + ((r * F96A[182]) - (r * F96A[183])), z + ((r * F96A[183]) + (r * F96A[182]))) + +n.noise(x + ((r * F96A[184]) - (r * F96A[185])), z + ((r * F96A[185]) + (r * F96A[184]))) + +n.noise(x + ((r * F96A[186]) - (r * F96A[187])), z + ((r * F96A[187]) + (r * F96A[186]))) + +n.noise(x + ((r * F96A[188]) - (r * F96A[189])), z + ((r * F96A[189]) + (r * F96A[188]))) + +n.noise(x + ((r * F96A[190]) - (r * F96A[191])), z + ((r * F96A[191]) + (r * F96A[190]))) + +n.noise(x + ((r * F96A[192]) - (r * F96A[193])), z + ((r * F96A[193]) + (r * F96A[192]))) + +n.noise(x + ((r * F96A[194]) - (r * F96A[195])), z + ((r * F96A[195]) + (r * F96A[194]))) + +n.noise(x + ((r * F96A[196]) - (r * F96A[197])), z + ((r * F96A[197]) + (r * F96A[196]))) + +n.noise(x + ((r * F96A[198]) - (r * F96A[199])), z + ((r * F96A[199]) + (r * F96A[198]))) + +n.noise(x + ((r * F96A[200]) - (r * F96A[201])), z + ((r * F96A[201]) + (r * F96A[200]))) + +n.noise(x + ((r * F96A[202]) - (r * F96A[203])), z + ((r * F96A[203]) + (r * F96A[202]))) + +n.noise(x + ((r * F96A[204]) - (r * F96A[205])), z + ((r * F96A[205]) + (r * F96A[204]))) + +n.noise(x + ((r * F96A[206]) - (r * F96A[207])), z + ((r * F96A[207]) + (r * F96A[206]))) + +n.noise(x + ((r * F96A[208]) - (r * F96A[209])), z + ((r * F96A[209]) + (r * F96A[208]))) + +n.noise(x + ((r * F96A[210]) - (r * F96A[211])), z + ((r * F96A[211]) + (r * F96A[210]))) + +n.noise(x + ((r * F96A[212]) - (r * F96A[213])), z + ((r * F96A[213]) + (r * F96A[212]))) + +n.noise(x + ((r * F96A[214]) - (r * F96A[215])), z + ((r * F96A[215]) + (r * F96A[214]))) + +n.noise(x + ((r * F96A[216]) - (r * F96A[217])), z + ((r * F96A[217]) + (r * F96A[216]))) + +n.noise(x + ((r * F96A[218]) - (r * F96A[219])), z + ((r * F96A[219]) + (r * F96A[218]))) + +n.noise(x + ((r * F96A[220]) - (r * F96A[221])), z + ((r * F96A[221]) + (r * F96A[220]))) + +n.noise(x + ((r * F96A[222]) - (r * F96A[223])), z + ((r * F96A[223]) + (r * F96A[222]))) + +n.noise(x + ((r * F96A[224]) - (r * F96A[225])), z + ((r * F96A[225]) + (r * F96A[224]))) + +n.noise(x + ((r * F96A[226]) - (r * F96A[227])), z + ((r * F96A[227]) + (r * F96A[226]))) + +n.noise(x + ((r * F96A[228]) - (r * F96A[229])), z + ((r * F96A[229]) + (r * F96A[228]))) + +n.noise(x + ((r * F96A[230]) - (r * F96A[231])), z + ((r * F96A[231]) + (r * F96A[230]))) + +n.noise(x + ((r * F96A[232]) - (r * F96A[233])), z + ((r * F96A[233]) + (r * F96A[232]))) + +n.noise(x + ((r * F96A[234]) - (r * F96A[235])), z + ((r * F96A[235]) + (r * F96A[234]))) + +n.noise(x + ((r * F96A[236]) - (r * F96A[237])), z + ((r * F96A[237]) + (r * F96A[236]))) + +n.noise(x + ((r * F96A[238]) - (r * F96A[239])), z + ((r * F96A[239]) + (r * F96A[238]))))/96.0D; + } + private static final double[] F128A = {1,0,0.99939082701909576211818375668372027575969696044921875,0.034899496702500969191884649944768170826137065887451171875,0.9975640502598241976528470331686548888683319091796875,0.06975647374412530243859009715379215776920318603515625, + 0.9945218953682732898613494398887269198894500732421875,0.104528463267653470847307062285835854709148406982421875,0.9902680687415703619791429446195252239704132080078125,0.1391731009600654378477457839835551567375659942626953125,0.98480775301220802031565426659653894603252410888671875,0.1736481776669303311866343619840336032211780548095703125, + 0.9781476007338056888329447247087955474853515625,0.207911690817759342575499204031075350940227508544921875,0.97029572627599647294260876151383854448795318603515625,0.2419218955996677300479547056966111995279788970947265625,0.9612616959383188941501430235803127288818359375,0.275637355816999163327096766806789673864841461181640625, + 0.95105651629515353118193843329208903014659881591796875,0.309016994374947395751718204337521456182003021240234375,0.939692620785908427905042117345146834850311279296875,0.342020143325668712908083080037613399326801300048828125,0.92718385456678742428948680753819644451141357421875,0.374606593415912014766178117497474886476993560791015625, + 0.91354545764260086659902526662335731089115142822265625,0.406736643075800208269043878317461349070072174072265625,0.8987940462991670376169395240140147507190704345703125,0.438371146789077403838064128649421036243438720703125,0.88294759285892698841280434862710535526275634765625,0.469471562785890805802324621254228986799716949462890625, + 0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,0.84804809615642595677087456351728178560733795166015625,0.5299192642332049008047079041716642677783966064453125,0.829037572555041624156046964344568550586700439453125,0.55919290347074690483708536703488789498805999755859375, + 0.80901699437494745126286943559534847736358642578125,0.5877852522924731371034567928290925920009613037109375,0.78801075360672190317501417666790075600147247314453125,0.61566147532565829170181359586422331631183624267578125,0.76604444311897801345168090847437269985675811767578125,0.642787609686539251896419955301098525524139404296875, + 0.7431448254773942441175904605188407003879547119140625,0.66913060635885823757007528911344707012176513671875,0.71933980033865119185776393351261503994464874267578125,0.6946583704589972541043607634492218494415283203125,0.6946583704589972541043607634492218494415283203125,0.71933980033865108083546147099696099758148193359375, + 0.66913060635885823757007528911344707012176513671875,0.7431448254773942441175904605188407003879547119140625,0.64278760968653936291872241781675256788730621337890625,0.76604444311897801345168090847437269985675811767578125,0.61566147532565829170181359586422331631183624267578125,0.7880107536067220141973166391835547983646392822265625, + 0.5877852522924731371034567928290925920009613037109375,0.80901699437494745126286943559534847736358642578125,0.5591929034707467938147829045192338526248931884765625,0.82903757255504173517834942686022259294986724853515625,0.5299192642332049008047079041716642677783966064453125,0.84804809615642595677087456351728178560733795166015625, + 0.50000000000000011102230246251565404236316680908203125,0.8660254037844385965883020617184229195117950439453125,0.46947156278589086131347585251205600798130035400390625,0.88294759285892687739050188611145131289958953857421875,0.438371146789077459349215359907248057425022125244140625,0.8987940462991670376169395240140147507190704345703125, + 0.406736643075800208269043878317461349070072174072265625,0.91354545764260086659902526662335731089115142822265625,0.37460659341591195925502688623964786529541015625,0.92718385456678742428948680753819644451141357421875,0.342020143325668823930385542553267441689968109130859375,0.93969262078590831688273965482949279248714447021484375, + 0.30901699437494745126286943559534847736358642578125,0.95105651629515353118193843329208903014659881591796875,0.275637355816999163327096766806789673864841461181640625,0.9612616959383188941501430235803127288818359375,0.2419218955996676745368034744387841783463954925537109375,0.97029572627599647294260876151383854448795318603515625, + 0.207911690817759453597801666546729393303394317626953125,0.97814760073380557781064226219314150512218475341796875,0.17364817766693041445336120887077413499355316162109375,0.98480775301220802031565426659653894603252410888671875,0.139173100960065465603321399612468667328357696533203125,0.9902680687415703619791429446195252239704132080078125, + 0.10452846326765345696951925447137909941375255584716796875,0.9945218953682732898613494398887269198894500732421875,0.06975647374412523304965105808150838129222393035888671875,0.9975640502598241976528470331686548888683319091796875,0.034899496702501080214187112460422213189303874969482421875,0.99939082701909576211818375668372027575969696044921875, + 0.0000000000000000612323399573676603586882014729198302312846062338790031898128063403419218957424163818359375,1,-0.034899496702500955314096842130311415530741214752197265625,0.99939082701909576211818375668372027575969696044921875,-0.0697564737441253301941657127827056683599948883056640625,0.9975640502598241976528470331686548888683319091796875, + -0.1045284632676535541140339091725763864815235137939453125,0.9945218953682732898613494398887269198894500732421875,-0.139173100960065354581018937096814624965190887451171875,0.9902680687415703619791429446195252239704132080078125,-0.1736481776669303034310587463551200926303863525390625,0.98480775301220802031565426659653894603252410888671875, + -0.207911690817759342575499204031075350940227508544921875,0.9781476007338056888329447247087955474853515625,-0.2419218955996677855591059369544382207095623016357421875,0.97029572627599647294260876151383854448795318603515625,-0.275637355816999052304794304291135631501674652099609375,0.9612616959383188941501430235803127288818359375, + -0.30901699437494734024056697307969443500041961669921875,0.951056516295153642204240895807743072509765625,-0.342020143325668712908083080037613399326801300048828125,0.939692620785908427905042117345146834850311279296875,-0.37460659341591207027732934875530190765857696533203125,0.92718385456678742428948680753819644451141357421875, + -0.40673664307580026378019510957528837025165557861328125,0.91354545764260086659902526662335731089115142822265625,-0.43837114678907751486036659116507507860660552978515625,0.89879404629916692659463706149836070835590362548828125,-0.469471562785890916824627083769883029162883758544921875,0.88294759285892687739050188611145131289958953857421875, + -0.4999999999999997779553950749686919152736663818359375,0.86602540378443870761060452423407696187496185302734375,-0.52991926423320478978240544165601022541522979736328125,0.8480480961564260677931770260329358279705047607421875,-0.55919290347074668279248044200357981026172637939453125,0.82903757255504173517834942686022259294986724853515625, + -0.58778525229247302608115433031343854963779449462890625,0.80901699437494745126286943559534847736358642578125,-0.61566147532565829170181359586422331631183624267578125,0.7880107536067220141973166391835547983646392822265625,-0.64278760968653936291872241781675256788730621337890625,0.76604444311897801345168090847437269985675811767578125, + -0.66913060635885823757007528911344707012176513671875,0.7431448254773942441175904605188407003879547119140625,-0.69465837045899736512666322596487589180469512939453125,0.71933980033865108083546147099696099758148193359375,-0.71933980033865119185776393351261503994464874267578125,0.69465837045899714308205830093356780707836151123046875, + -0.74314482547739402207298553548753261566162109375,0.66913060635885834859237775162910111248493194580078125,-0.76604444311897790242937844595871865749359130859375,0.6427876096865394739410248803324066102504730224609375,-0.78801075360672190317501417666790075600147247314453125,0.6156614753256584027241160583798773586750030517578125, + -0.80901699437494734024056697307969443500041961669921875,0.58778525229247324812575925534474663436412811279296875,-0.829037572555041624156046964344568550586700439453125,0.55919290347074690483708536703488789498805999755859375,-0.84804809615642595677087456351728178560733795166015625,0.5299192642332049008047079041716642677783966064453125, + -0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,-0.88294759285892698841280434862710535526275634765625,0.469471562785890694780022158738574944436550140380859375,-0.8987940462991670376169395240140147507190704345703125,0.43837114678907729281576166613376699388027191162109375, + -0.913545457642600755576722804107703268527984619140625,0.406736643075800430313648803348769433796405792236328125,-0.92718385456678731326718434502254240214824676513671875,0.374606593415912236810783042528782971203327178955078125,-0.93969262078590831688273965482949279248714447021484375,0.342020143325668879441536773811094462871551513671875, + -0.95105651629515353118193843329208903014659881591796875,0.309016994374947506774020666853175498545169830322265625,-0.9612616959383188941501430235803127288818359375,0.27563735581699921883824799806461669504642486572265625,-0.97029572627599647294260876151383854448795318603515625,0.2419218955996677300479547056966111995279788970947265625, + -0.9781476007338056888329447247087955474853515625,0.2079116908177593148199235884021618403494358062744140625,-0.98480775301220802031565426659653894603252410888671875,0.1736481776669302756754831307262065820395946502685546875,-0.9902680687415703619791429446195252239704132080078125,0.1391731009600653268254433214679011143743991851806640625, + -0.9945218953682732898613494398887269198894500732421875,0.10452846326765373452527541076051420532166957855224609375,-0.9975640502598241976528470331686548888683319091796875,0.06975647374412552448319502218510024249553680419921875,-0.99939082701909576211818375668372027575969696044921875,0.034899496702501142664232247625477612018585205078125, + -1,0.000000000000000122464679914735320717376402945839660462569212467758006379625612680683843791484832763671875,-0.99939082701909576211818375668372027575969696044921875,-0.034899496702500899802945610872484394349157810211181640625,-0.9975640502598241976528470331686548888683319091796875,-0.0697564737441252746830144815248786471784114837646484375, + -0.9945218953682732898613494398887269198894500732421875,-0.1045284632676534986028826779147493652999401092529296875,-0.99026806874157025095684048210387118160724639892578125,-0.13917310096006552111447263087029568850994110107421875,-0.98480775301220802031565426659653894603252410888671875,-0.173648177666930469964512440128601156175136566162109375, + -0.97814760073380557781064226219314150512218475341796875,-0.20791169081775950910895289780455641448497772216796875,-0.97029572627599647294260876151383854448795318603515625,-0.2419218955996675080033497806653031148016452789306640625,-0.9612616959383188941501430235803127288818359375,-0.27563735581699899679364307303330861032009124755859375, + -0.951056516295153642204240895807743072509765625,-0.309016994374947284729415741821867413818836212158203125,-0.939692620785908427905042117345146834850311279296875,-0.3420201433256686573969318487797863781452178955078125,-0.92718385456678742428948680753819644451141357421875,-0.374606593415912014766178117497474886476993560791015625, + -0.91354545764260086659902526662335731089115142822265625,-0.406736643075800208269043878317461349070072174072265625,-0.89879404629916692659463706149836070835590362548828125,-0.438371146789077459349215359907248057425022125244140625,-0.88294759285892687739050188611145131289958953857421875,-0.46947156278589086131347585251205600798130035400390625, + -0.8660254037844385965883020617184229195117950439453125,-0.50000000000000011102230246251565404236316680908203125,-0.8480480961564260677931770260329358279705047607421875,-0.52991926423320478978240544165601022541522979736328125,-0.8290375725550418462006518893758766353130340576171875,-0.55919290347074668279248044200357981026172637939453125, + -0.80901699437494756228517189811100251972675323486328125,-0.58778525229247302608115433031343854963779449462890625,-0.7880107536067220141973166391835547983646392822265625,-0.61566147532565818067951113334856927394866943359375,-0.76604444311897801345168090847437269985675811767578125,-0.642787609686539251896419955301098525524139404296875, + -0.7431448254773942441175904605188407003879547119140625,-0.66913060635885823757007528911344707012176513671875,-0.71933980033865108083546147099696099758148193359375,-0.69465837045899736512666322596487589180469512939453125,-0.6946583704589972541043607634492218494415283203125,-0.71933980033865119185776393351261503994464874267578125, + -0.66913060635885812654777282659779302775859832763671875,-0.74314482547739435513989292303449474275112152099609375,-0.6427876096865394739410248803324066102504730224609375,-0.76604444311897790242937844595871865749359130859375,-0.61566147532565806965720867083291523158550262451171875,-0.78801075360672212521961910169920884072780609130859375, + -0.58778525229247324812575925534474663436412811279296875,-0.80901699437494734024056697307969443500041961669921875,-0.5591929034707465717701779794879257678985595703125,-0.8290375725550418462006518893758766353130340576171875,-0.52991926423320501182701036668731831014156341552734375,-0.84804809615642595677087456351728178560733795166015625, + -0.500000000000000444089209850062616169452667236328125,-0.86602540378443837454369713668711483478546142578125,-0.469471562785890750291173389996401965618133544921875,-0.88294759285892698841280434862710535526275634765625,-0.43837114678907773690497151619638316333293914794921875,-0.89879404629916681557233459898270666599273681640625, + -0.406736643075800097246741415801807306706905364990234375,-0.9135454576426009776213277291390113532543182373046875,-0.37460659341591229232193427378660999238491058349609375,-0.92718385456678731326718434502254240214824676513671875,-0.34202014332566854637462938626413233578205108642578125,-0.939692620785908427905042117345146834850311279296875, + -0.30901699437494756228517189811100251972675323486328125,-0.95105651629515353118193843329208903014659881591796875,-0.2756373558169988857713406105176545679569244384765625,-0.96126169593831900517244548609596677124500274658203125,-0.2419218955996677855591059369544382207095623016357421875,-0.97029572627599647294260876151383854448795318603515625, + -0.207911690817759786664709054093691520392894744873046875,-0.97814760073380557781064226219314150512218475341796875,-0.1736481776669303311866343619840336032211780548095703125,-0.98480775301220802031565426659653894603252410888671875,-0.1391731009600658264258044027883443050086498260498046875,-0.99026806874157025095684048210387118160724639892578125, + -0.104528463267653359825004599770181812345981597900390625,-0.99452189536827340088365190240438096225261688232421875,-0.069756473744125579994346253442927263677120208740234375,-0.9975640502598241976528470331686548888683319091796875,-0.034899496702500761025067532727916841395199298858642578125,-0.99939082701909576211818375668372027575969696044921875, + -0.00000000000000018369701987210296875011296034045003113559498615810217092558787044254131615161895751953125,-1,0.0348994967025012814421103257700451649725437164306640625,-0.99939082701909576211818375668372027575969696044921875,0.0697564737441252191718632502670516259968280792236328125,-0.99756405025982430867514949568430893123149871826171875, + 0.10452846326765298512473378877984941937029361724853515625,-0.99452189536827340088365190240438096225261688232421875,0.139173100960065465603321399612468667328357696533203125,-0.9902680687415703619791429446195252239704132080078125,0.17364817766692997036415135880815796554088592529296875,-0.98480775301220813133795672911219298839569091796875, + 0.2079116908177594258422260509178158827126026153564453125,-0.97814760073380557781064226219314150512218475341796875,0.2419218955996674524921985494074760936200618743896484375,-0.9702957262759965839649112240294925868511199951171875,0.275637355816999385371701691838097758591175079345703125,-0.96126169593831878312784056106465868651866912841796875, + 0.3090169943749472292182645105640403926372528076171875,-0.951056516295153642204240895807743072509765625,0.34202014332566899046383923632674850523471832275390625,-0.93969262078590831688273965482949279248714447021484375,0.37460659341591195925502688623964786529541015625,-0.92718385456678742428948680753819644451141357421875, + 0.406736643075799764179834028254845179617404937744140625,-0.91354545764260108864363019165466539561748504638671875,0.438371146789077403838064128649421036243438720703125,-0.8987940462991670376169395240140147507190704345703125,0.46947156278589041722426600244943983852863311767578125,-0.88294759285892709943510681114275939762592315673828125, + 0.50000000000000011102230246251565404236316680908203125,-0.8660254037844385965883020617184229195117950439453125,0.52991926423320467876010297914035618305206298828125,-0.84804809615642617881547948854858987033367156982421875,0.559192903470747015859387829550541937351226806640625,-0.829037572555041624156046964344568550586700439453125, + 0.587785252292472915058851867797784507274627685546875,-0.80901699437494756228517189811100251972675323486328125,0.61566147532565851374641852089553140103816986083984375,-0.7880107536067217921527117141522467136383056640625,0.642787609686539251896419955301098525524139404296875,-0.7660444431189781244739833709900267422199249267578125, + 0.669130606358857793480865439050830900669097900390625,-0.74314482547739457718449784806580282747745513916015625,0.6946583704589972541043607634492218494415283203125,-0.71933980033865119185776393351261503994464874267578125,0.7193398003386508587908565459656529128551483154296875,-0.69465837045899758717126815099618397653102874755859375, + 0.7431448254773942441175904605188407003879547119140625,-0.66913060635885812654777282659779302775859832763671875,0.76604444311897779140707598344306461513042449951171875,-0.64278760968653958496332734284806065261363983154296875,0.7880107536067220141973166391835547983646392822265625,-0.61566147532565818067951113334856927394866943359375, + 0.80901699437494734024056697307969443500041961669921875,-0.587785252292473359148061717860400676727294921875,0.8290375725550418462006518893758766353130340576171875,-0.5591929034707465717701779794879257678985595703125,0.84804809615642595677087456351728178560733795166015625,-0.52991926423320501182701036668731831014156341552734375, + 0.86602540378443837454369713668711483478546142578125,-0.500000000000000444089209850062616169452667236328125,0.88294759285892687739050188611145131289958953857421875,-0.469471562785890805802324621254228986799716949462890625,0.89879404629916681557233459898270666599273681640625,-0.438371146789077792416122747454210184514522552490234375, + 0.9135454576426009776213277291390113532543182373046875,-0.40673664307580015275789264705963432788848876953125,0.92718385456678731326718434502254240214824676513671875,-0.374606593415912347833085505044437013566493988037109375,0.939692620785908427905042117345146834850311279296875,-0.342020143325668601885780617521959356963634490966796875, + 0.95105651629515353118193843329208903014659881591796875,-0.309016994374947617796323129368829540908336639404296875,0.9612616959383188941501430235803127288818359375,-0.275637355816998941282491841775481589138507843017578125,0.97029572627599647294260876151383854448795318603515625,-0.241921895599667868825832783841178752481937408447265625, + 0.97814760073380557781064226219314150512218475341796875,-0.2079116908177598699314359009804320521652698516845703125,0.98480775301220802031565426659653894603252410888671875,-0.1736481776669303866977855932418606244027614593505859375,0.99026806874157025095684048210387118160724639892578125,-0.1391731009600658819369556340461713261902332305908203125, + 0.9945218953682732898613494398887269198894500732421875,-0.10452846326765341533615583102800883352756500244140625,0.9975640502598241976528470331686548888683319091796875,-0.06975647374412563550549748470075428485870361328125,0.99939082701909576211818375668372027575969696044921875,-0.03489949670250082347511266789297224022448062896728515625}; + private static double sc128(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F128A[0]) - (r * F128A[1])), z + ((r * F128A[1]) + (r * F128A[0]))) + +n.noise(x + ((r * F128A[2]) - (r * F128A[3])), z + ((r * F128A[3]) + (r * F128A[2]))) + +n.noise(x + ((r * F128A[4]) - (r * F128A[5])), z + ((r * F128A[5]) + (r * F128A[4]))) + +n.noise(x + ((r * F128A[6]) - (r * F128A[7])), z + ((r * F128A[7]) + (r * F128A[6]))) + +n.noise(x + ((r * F128A[8]) - (r * F128A[9])), z + ((r * F128A[9]) + (r * F128A[8]))) + +n.noise(x + ((r * F128A[10]) - (r * F128A[11])), z + ((r * F128A[11]) + (r * F128A[10]))) + +n.noise(x + ((r * F128A[12]) - (r * F128A[13])), z + ((r * F128A[13]) + (r * F128A[12]))) + +n.noise(x + ((r * F128A[14]) - (r * F128A[15])), z + ((r * F128A[15]) + (r * F128A[14]))) + +n.noise(x + ((r * F128A[16]) - (r * F128A[17])), z + ((r * F128A[17]) + (r * F128A[16]))) + +n.noise(x + ((r * F128A[18]) - (r * F128A[19])), z + ((r * F128A[19]) + (r * F128A[18]))) + +n.noise(x + ((r * F128A[20]) - (r * F128A[21])), z + ((r * F128A[21]) + (r * F128A[20]))) + +n.noise(x + ((r * F128A[22]) - (r * F128A[23])), z + ((r * F128A[23]) + (r * F128A[22]))) + +n.noise(x + ((r * F128A[24]) - (r * F128A[25])), z + ((r * F128A[25]) + (r * F128A[24]))) + +n.noise(x + ((r * F128A[26]) - (r * F128A[27])), z + ((r * F128A[27]) + (r * F128A[26]))) + +n.noise(x + ((r * F128A[28]) - (r * F128A[29])), z + ((r * F128A[29]) + (r * F128A[28]))) + +n.noise(x + ((r * F128A[30]) - (r * F128A[31])), z + ((r * F128A[31]) + (r * F128A[30]))) + +n.noise(x + ((r * F128A[32]) - (r * F128A[33])), z + ((r * F128A[33]) + (r * F128A[32]))) + +n.noise(x + ((r * F128A[34]) - (r * F128A[35])), z + ((r * F128A[35]) + (r * F128A[34]))) + +n.noise(x + ((r * F128A[36]) - (r * F128A[37])), z + ((r * F128A[37]) + (r * F128A[36]))) + +n.noise(x + ((r * F128A[38]) - (r * F128A[39])), z + ((r * F128A[39]) + (r * F128A[38]))) + +n.noise(x + ((r * F128A[40]) - (r * F128A[41])), z + ((r * F128A[41]) + (r * F128A[40]))) + +n.noise(x + ((r * F128A[42]) - (r * F128A[43])), z + ((r * F128A[43]) + (r * F128A[42]))) + +n.noise(x + ((r * F128A[44]) - (r * F128A[45])), z + ((r * F128A[45]) + (r * F128A[44]))) + +n.noise(x + ((r * F128A[46]) - (r * F128A[47])), z + ((r * F128A[47]) + (r * F128A[46]))) + +n.noise(x + ((r * F128A[48]) - (r * F128A[49])), z + ((r * F128A[49]) + (r * F128A[48]))) + +n.noise(x + ((r * F128A[50]) - (r * F128A[51])), z + ((r * F128A[51]) + (r * F128A[50]))) + +n.noise(x + ((r * F128A[52]) - (r * F128A[53])), z + ((r * F128A[53]) + (r * F128A[52]))) + +n.noise(x + ((r * F128A[54]) - (r * F128A[55])), z + ((r * F128A[55]) + (r * F128A[54]))) + +n.noise(x + ((r * F128A[56]) - (r * F128A[57])), z + ((r * F128A[57]) + (r * F128A[56]))) + +n.noise(x + ((r * F128A[58]) - (r * F128A[59])), z + ((r * F128A[59]) + (r * F128A[58]))) + +n.noise(x + ((r * F128A[60]) - (r * F128A[61])), z + ((r * F128A[61]) + (r * F128A[60]))) + +n.noise(x + ((r * F128A[62]) - (r * F128A[63])), z + ((r * F128A[63]) + (r * F128A[62]))) + +n.noise(x + ((r * F128A[64]) - (r * F128A[65])), z + ((r * F128A[65]) + (r * F128A[64]))) + +n.noise(x + ((r * F128A[66]) - (r * F128A[67])), z + ((r * F128A[67]) + (r * F128A[66]))) + +n.noise(x + ((r * F128A[68]) - (r * F128A[69])), z + ((r * F128A[69]) + (r * F128A[68]))) + +n.noise(x + ((r * F128A[70]) - (r * F128A[71])), z + ((r * F128A[71]) + (r * F128A[70]))) + +n.noise(x + ((r * F128A[72]) - (r * F128A[73])), z + ((r * F128A[73]) + (r * F128A[72]))) + +n.noise(x + ((r * F128A[74]) - (r * F128A[75])), z + ((r * F128A[75]) + (r * F128A[74]))) + +n.noise(x + ((r * F128A[76]) - (r * F128A[77])), z + ((r * F128A[77]) + (r * F128A[76]))) + +n.noise(x + ((r * F128A[78]) - (r * F128A[79])), z + ((r * F128A[79]) + (r * F128A[78]))) + +n.noise(x + ((r * F128A[80]) - (r * F128A[81])), z + ((r * F128A[81]) + (r * F128A[80]))) + +n.noise(x + ((r * F128A[82]) - (r * F128A[83])), z + ((r * F128A[83]) + (r * F128A[82]))) + +n.noise(x + ((r * F128A[84]) - (r * F128A[85])), z + ((r * F128A[85]) + (r * F128A[84]))) + +n.noise(x + ((r * F128A[86]) - (r * F128A[87])), z + ((r * F128A[87]) + (r * F128A[86]))) + +n.noise(x + ((r * F128A[88]) - (r * F128A[89])), z + ((r * F128A[89]) + (r * F128A[88]))) + +n.noise(x + ((r * F128A[90]) - (r * F128A[91])), z + ((r * F128A[91]) + (r * F128A[90]))) + +n.noise(x + ((r * F128A[92]) - (r * F128A[93])), z + ((r * F128A[93]) + (r * F128A[92]))) + +n.noise(x + ((r * F128A[94]) - (r * F128A[95])), z + ((r * F128A[95]) + (r * F128A[94]))) + +n.noise(x + ((r * F128A[96]) - (r * F128A[97])), z + ((r * F128A[97]) + (r * F128A[96]))) + +n.noise(x + ((r * F128A[98]) - (r * F128A[99])), z + ((r * F128A[99]) + (r * F128A[98]))) + +n.noise(x + ((r * F128A[100]) - (r * F128A[101])), z + ((r * F128A[101]) + (r * F128A[100]))) + +n.noise(x + ((r * F128A[102]) - (r * F128A[103])), z + ((r * F128A[103]) + (r * F128A[102]))) + +n.noise(x + ((r * F128A[104]) - (r * F128A[105])), z + ((r * F128A[105]) + (r * F128A[104]))) + +n.noise(x + ((r * F128A[106]) - (r * F128A[107])), z + ((r * F128A[107]) + (r * F128A[106]))) + +n.noise(x + ((r * F128A[108]) - (r * F128A[109])), z + ((r * F128A[109]) + (r * F128A[108]))) + +n.noise(x + ((r * F128A[110]) - (r * F128A[111])), z + ((r * F128A[111]) + (r * F128A[110]))) + +n.noise(x + ((r * F128A[112]) - (r * F128A[113])), z + ((r * F128A[113]) + (r * F128A[112]))) + +n.noise(x + ((r * F128A[114]) - (r * F128A[115])), z + ((r * F128A[115]) + (r * F128A[114]))) + +n.noise(x + ((r * F128A[116]) - (r * F128A[117])), z + ((r * F128A[117]) + (r * F128A[116]))) + +n.noise(x + ((r * F128A[118]) - (r * F128A[119])), z + ((r * F128A[119]) + (r * F128A[118]))) + +n.noise(x + ((r * F128A[120]) - (r * F128A[121])), z + ((r * F128A[121]) + (r * F128A[120]))) + +n.noise(x + ((r * F128A[122]) - (r * F128A[123])), z + ((r * F128A[123]) + (r * F128A[122]))) + +n.noise(x + ((r * F128A[124]) - (r * F128A[125])), z + ((r * F128A[125]) + (r * F128A[124]))) + +n.noise(x + ((r * F128A[126]) - (r * F128A[127])), z + ((r * F128A[127]) + (r * F128A[126]))) + +n.noise(x + ((r * F128A[128]) - (r * F128A[129])), z + ((r * F128A[129]) + (r * F128A[128]))) + +n.noise(x + ((r * F128A[130]) - (r * F128A[131])), z + ((r * F128A[131]) + (r * F128A[130]))) + +n.noise(x + ((r * F128A[132]) - (r * F128A[133])), z + ((r * F128A[133]) + (r * F128A[132]))) + +n.noise(x + ((r * F128A[134]) - (r * F128A[135])), z + ((r * F128A[135]) + (r * F128A[134]))) + +n.noise(x + ((r * F128A[136]) - (r * F128A[137])), z + ((r * F128A[137]) + (r * F128A[136]))) + +n.noise(x + ((r * F128A[138]) - (r * F128A[139])), z + ((r * F128A[139]) + (r * F128A[138]))) + +n.noise(x + ((r * F128A[140]) - (r * F128A[141])), z + ((r * F128A[141]) + (r * F128A[140]))) + +n.noise(x + ((r * F128A[142]) - (r * F128A[143])), z + ((r * F128A[143]) + (r * F128A[142]))) + +n.noise(x + ((r * F128A[144]) - (r * F128A[145])), z + ((r * F128A[145]) + (r * F128A[144]))) + +n.noise(x + ((r * F128A[146]) - (r * F128A[147])), z + ((r * F128A[147]) + (r * F128A[146]))) + +n.noise(x + ((r * F128A[148]) - (r * F128A[149])), z + ((r * F128A[149]) + (r * F128A[148]))) + +n.noise(x + ((r * F128A[150]) - (r * F128A[151])), z + ((r * F128A[151]) + (r * F128A[150]))) + +n.noise(x + ((r * F128A[152]) - (r * F128A[153])), z + ((r * F128A[153]) + (r * F128A[152]))) + +n.noise(x + ((r * F128A[154]) - (r * F128A[155])), z + ((r * F128A[155]) + (r * F128A[154]))) + +n.noise(x + ((r * F128A[156]) - (r * F128A[157])), z + ((r * F128A[157]) + (r * F128A[156]))) + +n.noise(x + ((r * F128A[158]) - (r * F128A[159])), z + ((r * F128A[159]) + (r * F128A[158]))) + +n.noise(x + ((r * F128A[160]) - (r * F128A[161])), z + ((r * F128A[161]) + (r * F128A[160]))) + +n.noise(x + ((r * F128A[162]) - (r * F128A[163])), z + ((r * F128A[163]) + (r * F128A[162]))) + +n.noise(x + ((r * F128A[164]) - (r * F128A[165])), z + ((r * F128A[165]) + (r * F128A[164]))) + +n.noise(x + ((r * F128A[166]) - (r * F128A[167])), z + ((r * F128A[167]) + (r * F128A[166]))) + +n.noise(x + ((r * F128A[168]) - (r * F128A[169])), z + ((r * F128A[169]) + (r * F128A[168]))) + +n.noise(x + ((r * F128A[170]) - (r * F128A[171])), z + ((r * F128A[171]) + (r * F128A[170]))) + +n.noise(x + ((r * F128A[172]) - (r * F128A[173])), z + ((r * F128A[173]) + (r * F128A[172]))) + +n.noise(x + ((r * F128A[174]) - (r * F128A[175])), z + ((r * F128A[175]) + (r * F128A[174]))) + +n.noise(x + ((r * F128A[176]) - (r * F128A[177])), z + ((r * F128A[177]) + (r * F128A[176]))) + +n.noise(x + ((r * F128A[178]) - (r * F128A[179])), z + ((r * F128A[179]) + (r * F128A[178]))) + +n.noise(x + ((r * F128A[180]) - (r * F128A[181])), z + ((r * F128A[181]) + (r * F128A[180]))) + +n.noise(x + ((r * F128A[182]) - (r * F128A[183])), z + ((r * F128A[183]) + (r * F128A[182]))) + +n.noise(x + ((r * F128A[184]) - (r * F128A[185])), z + ((r * F128A[185]) + (r * F128A[184]))) + +n.noise(x + ((r * F128A[186]) - (r * F128A[187])), z + ((r * F128A[187]) + (r * F128A[186]))) + +n.noise(x + ((r * F128A[188]) - (r * F128A[189])), z + ((r * F128A[189]) + (r * F128A[188]))) + +n.noise(x + ((r * F128A[190]) - (r * F128A[191])), z + ((r * F128A[191]) + (r * F128A[190]))) + +n.noise(x + ((r * F128A[192]) - (r * F128A[193])), z + ((r * F128A[193]) + (r * F128A[192]))) + +n.noise(x + ((r * F128A[194]) - (r * F128A[195])), z + ((r * F128A[195]) + (r * F128A[194]))) + +n.noise(x + ((r * F128A[196]) - (r * F128A[197])), z + ((r * F128A[197]) + (r * F128A[196]))) + +n.noise(x + ((r * F128A[198]) - (r * F128A[199])), z + ((r * F128A[199]) + (r * F128A[198]))) + +n.noise(x + ((r * F128A[200]) - (r * F128A[201])), z + ((r * F128A[201]) + (r * F128A[200]))) + +n.noise(x + ((r * F128A[202]) - (r * F128A[203])), z + ((r * F128A[203]) + (r * F128A[202]))) + +n.noise(x + ((r * F128A[204]) - (r * F128A[205])), z + ((r * F128A[205]) + (r * F128A[204]))) + +n.noise(x + ((r * F128A[206]) - (r * F128A[207])), z + ((r * F128A[207]) + (r * F128A[206]))) + +n.noise(x + ((r * F128A[208]) - (r * F128A[209])), z + ((r * F128A[209]) + (r * F128A[208]))) + +n.noise(x + ((r * F128A[210]) - (r * F128A[211])), z + ((r * F128A[211]) + (r * F128A[210]))) + +n.noise(x + ((r * F128A[212]) - (r * F128A[213])), z + ((r * F128A[213]) + (r * F128A[212]))) + +n.noise(x + ((r * F128A[214]) - (r * F128A[215])), z + ((r * F128A[215]) + (r * F128A[214]))) + +n.noise(x + ((r * F128A[216]) - (r * F128A[217])), z + ((r * F128A[217]) + (r * F128A[216]))) + +n.noise(x + ((r * F128A[218]) - (r * F128A[219])), z + ((r * F128A[219]) + (r * F128A[218]))) + +n.noise(x + ((r * F128A[220]) - (r * F128A[221])), z + ((r * F128A[221]) + (r * F128A[220]))) + +n.noise(x + ((r * F128A[222]) - (r * F128A[223])), z + ((r * F128A[223]) + (r * F128A[222]))) + +n.noise(x + ((r * F128A[224]) - (r * F128A[225])), z + ((r * F128A[225]) + (r * F128A[224]))) + +n.noise(x + ((r * F128A[226]) - (r * F128A[227])), z + ((r * F128A[227]) + (r * F128A[226]))) + +n.noise(x + ((r * F128A[228]) - (r * F128A[229])), z + ((r * F128A[229]) + (r * F128A[228]))) + +n.noise(x + ((r * F128A[230]) - (r * F128A[231])), z + ((r * F128A[231]) + (r * F128A[230]))) + +n.noise(x + ((r * F128A[232]) - (r * F128A[233])), z + ((r * F128A[233]) + (r * F128A[232]))) + +n.noise(x + ((r * F128A[234]) - (r * F128A[235])), z + ((r * F128A[235]) + (r * F128A[234]))) + +n.noise(x + ((r * F128A[236]) - (r * F128A[237])), z + ((r * F128A[237]) + (r * F128A[236]))) + +n.noise(x + ((r * F128A[238]) - (r * F128A[239])), z + ((r * F128A[239]) + (r * F128A[238]))) + +n.noise(x + ((r * F128A[240]) - (r * F128A[241])), z + ((r * F128A[241]) + (r * F128A[240]))) + +n.noise(x + ((r * F128A[242]) - (r * F128A[243])), z + ((r * F128A[243]) + (r * F128A[242]))) + +n.noise(x + ((r * F128A[244]) - (r * F128A[245])), z + ((r * F128A[245]) + (r * F128A[244]))) + +n.noise(x + ((r * F128A[246]) - (r * F128A[247])), z + ((r * F128A[247]) + (r * F128A[246]))) + +n.noise(x + ((r * F128A[248]) - (r * F128A[249])), z + ((r * F128A[249]) + (r * F128A[248]))) + +n.noise(x + ((r * F128A[250]) - (r * F128A[251])), z + ((r * F128A[251]) + (r * F128A[250]))) + +n.noise(x + ((r * F128A[252]) - (r * F128A[253])), z + ((r * F128A[253]) + (r * F128A[252]))) + +n.noise(x + ((r * F128A[254]) - (r * F128A[255])), z + ((r * F128A[255]) + (r * F128A[254]))) + +n.noise(x + ((r * F128A[256]) - (r * F128A[257])), z + ((r * F128A[257]) + (r * F128A[256]))) + +n.noise(x + ((r * F128A[258]) - (r * F128A[259])), z + ((r * F128A[259]) + (r * F128A[258]))) + +n.noise(x + ((r * F128A[260]) - (r * F128A[261])), z + ((r * F128A[261]) + (r * F128A[260]))) + +n.noise(x + ((r * F128A[262]) - (r * F128A[263])), z + ((r * F128A[263]) + (r * F128A[262]))) + +n.noise(x + ((r * F128A[264]) - (r * F128A[265])), z + ((r * F128A[265]) + (r * F128A[264]))) + +n.noise(x + ((r * F128A[266]) - (r * F128A[267])), z + ((r * F128A[267]) + (r * F128A[266]))) + +n.noise(x + ((r * F128A[268]) - (r * F128A[269])), z + ((r * F128A[269]) + (r * F128A[268]))) + +n.noise(x + ((r * F128A[270]) - (r * F128A[271])), z + ((r * F128A[271]) + (r * F128A[270]))) + +n.noise(x + ((r * F128A[272]) - (r * F128A[273])), z + ((r * F128A[273]) + (r * F128A[272]))) + +n.noise(x + ((r * F128A[274]) - (r * F128A[275])), z + ((r * F128A[275]) + (r * F128A[274]))) + +n.noise(x + ((r * F128A[276]) - (r * F128A[277])), z + ((r * F128A[277]) + (r * F128A[276]))) + +n.noise(x + ((r * F128A[278]) - (r * F128A[279])), z + ((r * F128A[279]) + (r * F128A[278]))) + +n.noise(x + ((r * F128A[280]) - (r * F128A[281])), z + ((r * F128A[281]) + (r * F128A[280]))) + +n.noise(x + ((r * F128A[282]) - (r * F128A[283])), z + ((r * F128A[283]) + (r * F128A[282]))) + +n.noise(x + ((r * F128A[284]) - (r * F128A[285])), z + ((r * F128A[285]) + (r * F128A[284]))) + +n.noise(x + ((r * F128A[286]) - (r * F128A[287])), z + ((r * F128A[287]) + (r * F128A[286]))) + +n.noise(x + ((r * F128A[288]) - (r * F128A[289])), z + ((r * F128A[289]) + (r * F128A[288]))) + +n.noise(x + ((r * F128A[290]) - (r * F128A[291])), z + ((r * F128A[291]) + (r * F128A[290]))) + +n.noise(x + ((r * F128A[292]) - (r * F128A[293])), z + ((r * F128A[293]) + (r * F128A[292]))) + +n.noise(x + ((r * F128A[294]) - (r * F128A[295])), z + ((r * F128A[295]) + (r * F128A[294]))) + +n.noise(x + ((r * F128A[296]) - (r * F128A[297])), z + ((r * F128A[297]) + (r * F128A[296]))) + +n.noise(x + ((r * F128A[298]) - (r * F128A[299])), z + ((r * F128A[299]) + (r * F128A[298]))) + +n.noise(x + ((r * F128A[300]) - (r * F128A[301])), z + ((r * F128A[301]) + (r * F128A[300]))) + +n.noise(x + ((r * F128A[302]) - (r * F128A[303])), z + ((r * F128A[303]) + (r * F128A[302]))) + +n.noise(x + ((r * F128A[304]) - (r * F128A[305])), z + ((r * F128A[305]) + (r * F128A[304]))) + +n.noise(x + ((r * F128A[306]) - (r * F128A[307])), z + ((r * F128A[307]) + (r * F128A[306]))) + +n.noise(x + ((r * F128A[308]) - (r * F128A[309])), z + ((r * F128A[309]) + (r * F128A[308]))) + +n.noise(x + ((r * F128A[310]) - (r * F128A[311])), z + ((r * F128A[311]) + (r * F128A[310]))) + +n.noise(x + ((r * F128A[312]) - (r * F128A[313])), z + ((r * F128A[313]) + (r * F128A[312]))) + +n.noise(x + ((r * F128A[314]) - (r * F128A[315])), z + ((r * F128A[315]) + (r * F128A[314]))) + +n.noise(x + ((r * F128A[316]) - (r * F128A[317])), z + ((r * F128A[317]) + (r * F128A[316]))) + +n.noise(x + ((r * F128A[318]) - (r * F128A[319])), z + ((r * F128A[319]) + (r * F128A[318]))) + +n.noise(x + ((r * F128A[320]) - (r * F128A[321])), z + ((r * F128A[321]) + (r * F128A[320]))) + +n.noise(x + ((r * F128A[322]) - (r * F128A[323])), z + ((r * F128A[323]) + (r * F128A[322]))) + +n.noise(x + ((r * F128A[324]) - (r * F128A[325])), z + ((r * F128A[325]) + (r * F128A[324]))) + +n.noise(x + ((r * F128A[326]) - (r * F128A[327])), z + ((r * F128A[327]) + (r * F128A[326]))) + +n.noise(x + ((r * F128A[328]) - (r * F128A[329])), z + ((r * F128A[329]) + (r * F128A[328]))) + +n.noise(x + ((r * F128A[330]) - (r * F128A[331])), z + ((r * F128A[331]) + (r * F128A[330]))) + +n.noise(x + ((r * F128A[332]) - (r * F128A[333])), z + ((r * F128A[333]) + (r * F128A[332]))) + +n.noise(x + ((r * F128A[334]) - (r * F128A[335])), z + ((r * F128A[335]) + (r * F128A[334]))) + +n.noise(x + ((r * F128A[336]) - (r * F128A[337])), z + ((r * F128A[337]) + (r * F128A[336]))) + +n.noise(x + ((r * F128A[338]) - (r * F128A[339])), z + ((r * F128A[339]) + (r * F128A[338]))) + +n.noise(x + ((r * F128A[340]) - (r * F128A[341])), z + ((r * F128A[341]) + (r * F128A[340]))) + +n.noise(x + ((r * F128A[342]) - (r * F128A[343])), z + ((r * F128A[343]) + (r * F128A[342]))) + +n.noise(x + ((r * F128A[344]) - (r * F128A[345])), z + ((r * F128A[345]) + (r * F128A[344]))) + +n.noise(x + ((r * F128A[346]) - (r * F128A[347])), z + ((r * F128A[347]) + (r * F128A[346]))) + +n.noise(x + ((r * F128A[348]) - (r * F128A[349])), z + ((r * F128A[349]) + (r * F128A[348]))) + +n.noise(x + ((r * F128A[350]) - (r * F128A[351])), z + ((r * F128A[351]) + (r * F128A[350]))) + +n.noise(x + ((r * F128A[352]) - (r * F128A[353])), z + ((r * F128A[353]) + (r * F128A[352]))) + +n.noise(x + ((r * F128A[354]) - (r * F128A[355])), z + ((r * F128A[355]) + (r * F128A[354]))) + +n.noise(x + ((r * F128A[356]) - (r * F128A[357])), z + ((r * F128A[357]) + (r * F128A[356]))) + +n.noise(x + ((r * F128A[358]) - (r * F128A[359])), z + ((r * F128A[359]) + (r * F128A[358]))))/128.0D; + } + private static final double[] F186A = {1,0,0.9998476951563912695775115935248322784900665283203125,0.017452406437283511653202339175550150685012340545654296875,0.99939082701909576211818375668372027575969696044921875,0.034899496702500969191884649944768170826137065887451171875, + 0.99862953475457383323288240717374719679355621337890625,0.05233595624294383463759317010044469498097896575927734375,0.9975640502598241976528470331686548888683319091796875,0.06975647374412530243859009715379215776920318603515625,0.9961946980917455451987052583717741072177886962890625,0.0871557427476581658698506771543179638683795928955078125, + 0.9945218953682732898613494398887269198894500732421875,0.104528463267653470847307062285835854709148406982421875,0.99254615164132198312785249072476290166378021240234375,0.12186934340514747610040302561174030415713787078857421875,0.9902680687415703619791429446195252239704132080078125,0.1391731009600654378477457839835551567375659942626953125, + 0.987688340595137770350220307591371238231658935546875,0.1564344650402308689596253543641068972647190093994140625,0.98480775301220802031565426659653894603252410888671875,0.1736481776669303311866343619840336032211780548095703125,0.9816271834476639757127713892259635031223297119140625,0.1908089953765448043565555735767702572047710418701171875, + 0.9781476007338056888329447247087955474853515625,0.207911690817759342575499204031075350940227508544921875,0.97437006478523524588553073044749908149242401123046875,0.2249510543438650034264725263710715807974338531494140625,0.97029572627599647294260876151383854448795318603515625,0.2419218955996677300479547056966111995279788970947265625, + 0.96592582628906831221371476203785277903079986572265625,0.25881904510252073947640383266843855381011962890625,0.9612616959383188941501430235803127288818359375,0.275637355816999163327096766806789673864841461181640625,0.95630475596303543550646963922190479934215545654296875,0.292371704722736769355151409399695694446563720703125, + 0.95105651629515353118193843329208903014659881591796875,0.309016994374947395751718204337521456182003021240234375,0.94551857559931684615861513520940206944942474365234375,0.3255681544571566998769185374840162694454193115234375,0.939692620785908427905042117345146834850311279296875,0.342020143325668712908083080037613399326801300048828125, + 0.93358042649720174299687869279296137392520904541015625,0.3583679495453002683547083506709896028041839599609375,0.92718385456678742428948680753819644451141357421875,0.374606593415912014766178117497474886476993560791015625,0.92050485345244037471701403774204663932323455810546875,0.390731128489273771275946955938707105815410614013671875, + 0.91354545764260086659902526662335731089115142822265625,0.406736643075800208269043878317461349070072174072265625,0.90630778703664993667388216636027209460735321044921875,0.422618261740699441286750470680999569594860076904296875,0.8987940462991670376169395240140147507190704345703125,0.438371146789077403838064128649421036243438720703125, + 0.89100652418836789880884907688596285879611968994140625,0.453990499739546748969587497413158416748046875,0.88294759285892698841280434862710535526275634765625,0.469471562785890805802324621254228986799716949462890625,0.8746197071393957411800101908738724887371063232421875,0.484809620246337058535601727271568961441516876220703125, + 0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,0.8571673007021123336102164103067480027675628662109375,0.51503807491005415553075863499543629586696624755859375,0.84804809615642595677087456351728178560733795166015625,0.5299192642332049008047079041716642677783966064453125, + 0.838670567945424050293468098971061408519744873046875,0.54463903501502708426329490976058878004550933837890625,0.829037572555041624156046964344568550586700439453125,0.55919290347074690483708536703488789498805999755859375,0.81915204428899179855960710483486764132976531982421875,0.57357643635104604840080355643294751644134521484375, + 0.80901699437494745126286943559534847736358642578125,0.5877852522924731371034567928290925920009613037109375,0.798635510047292829227671973058022558689117431640625,0.6018150231520482673630567660438828170299530029296875,0.78801075360672190317501417666790075600147247314453125,0.61566147532565829170181359586422331631183624267578125, + 0.77714596145697090179282895405776798725128173828125,0.62932039104983739097320949440472759306430816650390625,0.76604444311897801345168090847437269985675811767578125,0.642787609686539251896419955301098525524139404296875,0.75470958022277201404648394600371830165386199951171875,0.656059028990507275835852851741947233676910400390625, + 0.7431448254773942441175904605188407003879547119140625,0.66913060635885823757007528911344707012176513671875,0.7313537016191704598355727284797467291355133056640625,0.68199836006249847653037932104780338704586029052734375,0.71933980033865119185776393351261503994464874267578125,0.6946583704589972541043607634492218494415283203125, + 0.70710678118654757273731092936941422522068023681640625,0.707106781186547461715008466853760182857513427734375,0.6946583704589972541043607634492218494415283203125,0.71933980033865108083546147099696099758148193359375,0.68199836006249847653037932104780338704586029052734375,0.7313537016191704598355727284797467291355133056640625, + 0.66913060635885823757007528911344707012176513671875,0.7431448254773942441175904605188407003879547119140625,0.656059028990507275835852851741947233676910400390625,0.75470958022277201404648394600371830165386199951171875,0.64278760968653936291872241781675256788730621337890625,0.76604444311897801345168090847437269985675811767578125, + 0.6293203910498375019955119569203816354274749755859375,0.77714596145697090179282895405776798725128173828125,0.61566147532565829170181359586422331631183624267578125,0.7880107536067220141973166391835547983646392822265625,0.60181502315204837838535922855953685939311981201171875,0.798635510047292829227671973058022558689117431640625, + 0.5877852522924731371034567928290925920009613037109375,0.80901699437494745126286943559534847736358642578125,0.57357643635104615942310601894860155880451202392578125,0.81915204428899179855960710483486764132976531982421875,0.5591929034707467938147829045192338526248931884765625,0.82903757255504173517834942686022259294986724853515625, + 0.54463903501502708426329490976058878004550933837890625,0.838670567945424050293468098971061408519744873046875,0.5299192642332049008047079041716642677783966064453125,0.84804809615642595677087456351728178560733795166015625,0.51503807491005415553075863499543629586696624755859375,0.8571673007021123336102164103067480027675628662109375, + 0.50000000000000011102230246251565404236316680908203125,0.8660254037844385965883020617184229195117950439453125,0.48480962024633711404675295852939598262310028076171875,0.8746197071393957411800101908738724887371063232421875,0.46947156278589086131347585251205600798130035400390625,0.88294759285892687739050188611145131289958953857421875, + 0.453990499739546804480738728670985437929630279541015625,0.891006524188367787786546614370308816432952880859375,0.438371146789077459349215359907248057425022125244140625,0.8987940462991670376169395240140147507190704345703125,0.422618261740699441286750470680999569594860076904296875,0.90630778703664993667388216636027209460735321044921875, + 0.406736643075800208269043878317461349070072174072265625,0.91354545764260086659902526662335731089115142822265625,0.39073112848927371576479572468088008463382720947265625,0.92050485345244037471701403774204663932323455810546875,0.37460659341591195925502688623964786529541015625,0.92718385456678742428948680753819644451141357421875, + 0.35836794954530037937701081318664364516735076904296875,0.93358042649720174299687869279296137392520904541015625,0.342020143325668823930385542553267441689968109130859375,0.93969262078590831688273965482949279248714447021484375,0.325568154457156755388069768741843290627002716064453125,0.9455185755993167351363126726937480270862579345703125, + 0.30901699437494745126286943559534847736358642578125,0.95105651629515353118193843329208903014659881591796875,0.292371704722736769355151409399695694446563720703125,0.95630475596303543550646963922190479934215545654296875,0.275637355816999163327096766806789673864841461181640625,0.9612616959383188941501430235803127288818359375, + 0.25881904510252073947640383266843855381011962890625,0.96592582628906831221371476203785277903079986572265625,0.2419218955996676745368034744387841783463954925537109375,0.97029572627599647294260876151383854448795318603515625,0.224951054343864920159745679484331049025058746337890625,0.97437006478523524588553073044749908149242401123046875, + 0.207911690817759453597801666546729393303394317626953125,0.97814760073380557781064226219314150512218475341796875,0.1908089953765449153788580360924242995679378509521484375,0.9816271834476639757127713892259635031223297119140625,0.17364817766693041445336120887077413499355316162109375,0.98480775301220802031565426659653894603252410888671875, + 0.1564344650402309244707765856219339184463024139404296875,0.987688340595137770350220307591371238231658935546875,0.139173100960065465603321399612468667328357696533203125,0.9902680687415703619791429446195252239704132080078125,0.121869343405147489978190833426197059452533721923828125,0.99254615164132198312785249072476290166378021240234375, + 0.10452846326765345696951925447137909941375255584716796875,0.9945218953682732898613494398887269198894500732421875,0.087155742747658138114275061525404453277587890625,0.9961946980917455451987052583717741072177886962890625,0.06975647374412523304965105808150838129222393035888671875,0.9975640502598241976528470331686548888683319091796875, + 0.052335956242943966476577344337783870287239551544189453125,0.99862953475457383323288240717374719679355621337890625,0.034899496702501080214187112460422213189303874969482421875,0.99939082701909576211818375668372027575969696044921875,0.0174524064372835983893761380159048712812364101409912109375,0.9998476951563912695775115935248322784900665283203125, + 0.0000000000000000612323399573676603586882014729198302312846062338790031898128063403419218957424163818359375,1,-0.01745240643728347695873281963940826244652271270751953125,0.9998476951563912695775115935248322784900665283203125,-0.034899496702500955314096842130311415530741214752197265625,0.99939082701909576211818375668372027575969696044921875, + -0.052335956242943841576487074007673072628676891326904296875,0.99862953475457383323288240717374719679355621337890625,-0.0697564737441253301941657127827056683599948883056640625,0.9975640502598241976528470331686548888683319091796875,-0.08715574274765823525878971622660174034535884857177734375,0.9961946980917455451987052583717741072177886962890625, + -0.1045284632676535541140339091725763864815235137939453125,0.9945218953682732898613494398887269198894500732421875,-0.12186934340514736507810056309608626179397106170654296875,0.992546151641322094150154953240416944026947021484375,-0.139173100960065354581018937096814624965190887451171875,0.9902680687415703619791429446195252239704132080078125, + -0.1564344650402308134484741231062798760831356048583984375,0.987688340595137770350220307591371238231658935546875,-0.1736481776669303034310587463551200926303863525390625,0.98480775301220802031565426659653894603252410888671875,-0.1908089953765448043565555735767702572047710418701171875,0.9816271834476639757127713892259635031223297119140625, + -0.207911690817759342575499204031075350940227508544921875,0.9781476007338056888329447247087955474853515625,-0.224951054343865031182048141999985091388225555419921875,0.97437006478523524588553073044749908149242401123046875,-0.2419218955996677855591059369544382207095623016357421875,0.97029572627599647294260876151383854448795318603515625, + -0.25881904510252085049870629518409259617328643798828125,0.96592582628906831221371476203785277903079986572265625,-0.275637355816999052304794304291135631501674652099609375,0.9612616959383188941501430235803127288818359375,-0.29237170472273665833284894688404165208339691162109375,0.956304755963035546528772101737558841705322265625, + -0.30901699437494734024056697307969443500041961669921875,0.951056516295153642204240895807743072509765625,-0.325568154457156644365767306226189248263835906982421875,0.94551857559931684615861513520940206944942474365234375,-0.342020143325668712908083080037613399326801300048828125,0.939692620785908427905042117345146834850311279296875, + -0.3583679495453002683547083506709896028041839599609375,0.93358042649720174299687869279296137392520904541015625,-0.37460659341591207027732934875530190765857696533203125,0.92718385456678742428948680753819644451141357421875,-0.390731128489273771275946955938707105815410614013671875,0.9205048534524402636947115752263925969600677490234375, + -0.40673664307580026378019510957528837025165557861328125,0.91354545764260086659902526662335731089115142822265625,-0.422618261740699330264448008165345527231693267822265625,0.90630778703665004769618462887592613697052001953125,-0.43837114678907751486036659116507507860660552978515625,0.89879404629916692659463706149836070835590362548828125, + -0.453990499739546693458436266155331395566463470458984375,0.89100652418836789880884907688596285879611968994140625,-0.469471562785890916824627083769883029162883758544921875,0.88294759285892687739050188611145131289958953857421875,-0.4848096202463370030244504960137419402599334716796875,0.87461970713939585220231265338952653110027313232421875, + -0.4999999999999997779553950749686919152736663818359375,0.86602540378443870761060452423407696187496185302734375,-0.515038074910054266553061097511090338230133056640625,0.8571673007021123336102164103067480027675628662109375,-0.52991926423320478978240544165601022541522979736328125,0.8480480961564260677931770260329358279705047607421875, + -0.54463903501502708426329490976058878004550933837890625,0.83867056794542393927116563645540736615657806396484375,-0.55919290347074668279248044200357981026172637939453125,0.82903757255504173517834942686022259294986724853515625,-0.57357643635104615942310601894860155880451202392578125,0.8191520442889916875373046423192135989665985107421875, + -0.58778525229247302608115433031343854963779449462890625,0.80901699437494745126286943559534847736358642578125,-0.60181502315204837838535922855953685939311981201171875,0.79863551004729271820536951054236851632595062255859375,-0.61566147532565829170181359586422331631183624267578125,0.7880107536067220141973166391835547983646392822265625, + -0.629320391049837279950907031889073550701141357421875,0.77714596145697101281513141657342202961444854736328125,-0.64278760968653936291872241781675256788730621337890625,0.76604444311897801345168090847437269985675811767578125,-0.65605902899050716481355038922629319131374359130859375,0.75470958022277212506878640851937234401702880859375, + -0.66913060635885823757007528911344707012176513671875,0.7431448254773942441175904605188407003879547119140625,-0.6819983600624983655080768585321493446826934814453125,0.73135370161917057085787519099540077149868011474609375,-0.69465837045899736512666322596487589180469512939453125,0.71933980033865108083546147099696099758148193359375, + -0.707106781186547461715008466853760182857513427734375,0.70710678118654757273731092936941422522068023681640625,-0.71933980033865119185776393351261503994464874267578125,0.69465837045899714308205830093356780707836151123046875,-0.7313537016191704598355727284797467291355133056640625,0.681998360062498587552681783563457429409027099609375, + -0.74314482547739402207298553548753261566162109375,0.66913060635885834859237775162910111248493194580078125,-0.75470958022277201404648394600371830165386199951171875,0.656059028990507275835852851741947233676910400390625,-0.76604444311897790242937844595871865749359130859375,0.6427876096865394739410248803324066102504730224609375, + -0.77714596145697090179282895405776798725128173828125,0.62932039104983739097320949440472759306430816650390625,-0.78801075360672190317501417666790075600147247314453125,0.6156614753256584027241160583798773586750030517578125,-0.79863551004729294024997443557367660105228424072265625,0.60181502315204815634075430352822877466678619384765625, + -0.80901699437494734024056697307969443500041961669921875,0.58778525229247324812575925534474663436412811279296875,-0.81915204428899190958190956735052168369293212890625,0.57357643635104593737850109391729347407817840576171875,-0.829037572555041624156046964344568550586700439453125,0.55919290347074690483708536703488789498805999755859375, + -0.83867056794542393927116563645540736615657806396484375,0.54463903501502730630789983479189686477184295654296875,-0.84804809615642595677087456351728178560733795166015625,0.5299192642332049008047079041716642677783966064453125,-0.85716730070211222258791394779109396040439605712890625,0.51503807491005437757536356002674438059329986572265625, + -0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,-0.8746197071393957411800101908738724887371063232421875,0.484809620246337169557904189787223003804683685302734375,-0.88294759285892698841280434862710535526275634765625,0.469471562785890694780022158738574944436550140380859375, + -0.891006524188367787786546614370308816432952880859375,0.45399049973954685999188995992881245911121368408203125,-0.8987940462991670376169395240140147507190704345703125,0.43837114678907729281576166613376699388027191162109375,-0.90630778703664993667388216636027209460735321044921875,0.4226182617406994967979017019388265907764434814453125, + -0.913545457642600755576722804107703268527984619140625,0.406736643075800430313648803348769433796405792236328125,-0.92050485345244037471701403774204663932323455810546875,0.390731128489273771275946955938707105815410614013671875,-0.92718385456678731326718434502254240214824676513671875,0.374606593415912236810783042528782971203327178955078125, + -0.93358042649720174299687869279296137392520904541015625,0.358367949545300212843557119413162581622600555419921875,-0.93969262078590831688273965482949279248714447021484375,0.342020143325668879441536773811094462871551513671875,-0.94551857559931684615861513520940206944942474365234375,0.32556815445715658885461607496836222708225250244140625, + -0.95105651629515353118193843329208903014659881591796875,0.309016994374947506774020666853175498545169830322265625,-0.956304755963035546528772101737558841705322265625,0.292371704722736602821697715626214630901813507080078125,-0.9612616959383188941501430235803127288818359375,0.27563735581699921883824799806461669504642486572265625, + -0.965925826289068201191412299522198736667633056640625,0.258819045102521017032159988957573659718036651611328125,-0.97029572627599647294260876151383854448795318603515625,0.2419218955996677300479547056966111995279788970947265625,-0.9743700647852351348632282679318450391292572021484375,0.22495105434386519771550183577346615493297576904296875, + -0.9781476007338056888329447247087955474853515625,0.2079116908177593148199235884021618403494358062744140625,-0.9816271834476639757127713892259635031223297119140625,0.1908089953765449708900092673502513207495212554931640625,-0.98480775301220802031565426659653894603252410888671875,0.1736481776669302756754831307262065820395946502685546875, + -0.98768834059513765932791784507571719586849212646484375,0.1564344650402309799819278168797609396278858184814453125,-0.9902680687415703619791429446195252239704132080078125,0.1391731009600653268254433214679011143743991851806640625,-0.99254615164132198312785249072476290166378021240234375,0.12186934340514754548934206468402408063411712646484375, + -0.9945218953682732898613494398887269198894500732421875,0.10452846326765373452527541076051420532166957855224609375,-0.9961946980917455451987052583717741072177886962890625,0.087155742747658193625426292783231474459171295166015625,-0.9975640502598241976528470331686548888683319091796875,0.06975647374412552448319502218510024249553680419921875, + -0.99862953475457383323288240717374719679355621337890625,0.05233595624294380688201755447153118439018726348876953125,-0.99939082701909576211818375668372027575969696044921875,0.034899496702501142664232247625477612018585205078125,-0.9998476951563912695775115935248322784900665283203125,0.0174524064372834387948163481496521853841841220855712890625, + -1,0.000000000000000122464679914735320717376402945839660462569212467758006379625612680683843791484832763671875,-0.9998476951563912695775115935248322784900665283203125,-0.017452406437283636553292609505660948343575000762939453125,-0.99939082701909576211818375668372027575969696044921875,-0.034899496702500899802945610872484394349157810211181640625, + -0.99862953475457383323288240717374719679355621337890625,-0.05233595624294355708183701381130958907306194305419921875,-0.9975640502598241976528470331686548888683319091796875,-0.0697564737441252746830144815248786471784114837646484375,-0.9961946980917455451987052583717741072177886962890625,-0.0871557427476579438252457521230098791420459747314453125, + -0.9945218953682732898613494398887269198894500732421875,-0.1045284632676534986028826779147493652999401092529296875,-0.992546151641322094150154953240416944026947021484375,-0.12186934340514730956694933183825924061238765716552734375,-0.99026806874157025095684048210387118160724639892578125,-0.13917310096006552111447263087029568850994110107421875, + -0.987688340595137770350220307591371238231658935546875,-0.156434465040230730181747276219539344310760498046875,-0.98480775301220802031565426659653894603252410888671875,-0.173648177666930469964512440128601156175136566162109375,-0.9816271834476639757127713892259635031223297119140625,-0.19080899537654472108982872669002972543239593505859375, + -0.97814760073380557781064226219314150512218475341796875,-0.20791169081775950910895289780455641448497772216796875,-0.97437006478523524588553073044749908149242401123046875,-0.22495105434386497567089691074215807020664215087890625,-0.97029572627599647294260876151383854448795318603515625,-0.2419218955996675080033497806653031148016452789306640625, + -0.96592582628906831221371476203785277903079986572265625,-0.258819045102520794987555063926265574991703033447265625,-0.9612616959383188941501430235803127288818359375,-0.27563735581699899679364307303330861032009124755859375,-0.95630475596303543550646963922190479934215545654296875,-0.292371704722736769355151409399695694446563720703125, + -0.951056516295153642204240895807743072509765625,-0.309016994374947284729415741821867413818836212158203125,-0.9455185755993167351363126726937480270862579345703125,-0.325568154457156755388069768741843290627002716064453125,-0.939692620785908427905042117345146834850311279296875,-0.3420201433256686573969318487797863781452178955078125, + -0.93358042649720174299687869279296137392520904541015625,-0.358367949545300434888162044444470666348934173583984375,-0.92718385456678742428948680753819644451141357421875,-0.374606593415912014766178117497474886476993560791015625,-0.92050485345244037471701403774204663932323455810546875,-0.390731128489273549231342030907399021089076995849609375, + -0.91354545764260086659902526662335731089115142822265625,-0.406736643075800208269043878317461349070072174072265625,-0.90630778703665004769618462887592613697052001953125,-0.42261826174069927475329677690751850605010986328125,-0.89879404629916692659463706149836070835590362548828125,-0.438371146789077459349215359907248057425022125244140625, + -0.89100652418836789880884907688596285879611968994140625,-0.453990499739546693458436266155331395566463470458984375,-0.88294759285892687739050188611145131289958953857421875,-0.46947156278589086131347585251205600798130035400390625,-0.87461970713939585220231265338952653110027313232421875,-0.484809620246336947513299264755914919078350067138671875, + -0.8660254037844385965883020617184229195117950439453125,-0.50000000000000011102230246251565404236316680908203125,-0.8571673007021123336102164103067480027675628662109375,-0.51503807491005415553075863499543629586696624755859375,-0.8480480961564260677931770260329358279705047607421875,-0.52991926423320478978240544165601022541522979736328125, + -0.838670567945424050293468098971061408519744873046875,-0.54463903501502708426329490976058878004550933837890625,-0.8290375725550418462006518893758766353130340576171875,-0.55919290347074668279248044200357981026172637939453125,-0.81915204428899179855960710483486764132976531982421875,-0.57357643635104615942310601894860155880451202392578125, + -0.80901699437494756228517189811100251972675323486328125,-0.58778525229247302608115433031343854963779449462890625,-0.798635510047292829227671973058022558689117431640625,-0.60181502315204837838535922855953685939311981201171875,-0.7880107536067220141973166391835547983646392822265625,-0.61566147532565818067951113334856927394866943359375, + -0.77714596145697079077052649154211394488811492919921875,-0.62932039104983761301781441943603567779064178466796875,-0.76604444311897801345168090847437269985675811767578125,-0.642787609686539251896419955301098525524139404296875,-0.75470958022277212506878640851937234401702880859375,-0.6560590289905070537912479267106391489505767822265625, + -0.7431448254773942441175904605188407003879547119140625,-0.66913060635885823757007528911344707012176513671875,-0.73135370161917057085787519099540077149868011474609375,-0.6819983600624983655080768585321493446826934814453125,-0.71933980033865108083546147099696099758148193359375,-0.69465837045899736512666322596487589180469512939453125, + -0.7071067811865476837596133918850682675838470458984375,-0.707106781186547461715008466853760182857513427734375,-0.6946583704589972541043607634492218494415283203125,-0.71933980033865119185776393351261503994464874267578125,-0.681998360062498587552681783563457429409027099609375,-0.7313537016191704598355727284797467291355133056640625, + -0.66913060635885812654777282659779302775859832763671875,-0.74314482547739435513989292303449474275112152099609375,-0.656059028990507275835852851741947233676910400390625,-0.75470958022277201404648394600371830165386199951171875,-0.6427876096865394739410248803324066102504730224609375,-0.76604444311897790242937844595871865749359130859375, + -0.62932039104983783506241934446734376251697540283203125,-0.77714596145697056872592156651080586016178131103515625,-0.61566147532565806965720867083291523158550262451171875,-0.78801075360672212521961910169920884072780609130859375,-0.6018150231520482673630567660438828170299530029296875,-0.798635510047292829227671973058022558689117431640625, + -0.58778525229247324812575925534474663436412811279296875,-0.80901699437494734024056697307969443500041961669921875,-0.57357643635104638146771094397990964353084564208984375,-0.81915204428899157651500217980355955660343170166015625,-0.5591929034707465717701779794879257678985595703125,-0.8290375725550418462006518893758766353130340576171875, + -0.544639035015026973240992447244934737682342529296875,-0.838670567945424050293468098971061408519744873046875,-0.52991926423320501182701036668731831014156341552734375,-0.84804809615642595677087456351728178560733795166015625,-0.5150380749100544885976660225423984229564666748046875,-0.857167300702112111565611485275439918041229248046875, + -0.500000000000000444089209850062616169452667236328125,-0.86602540378443837454369713668711483478546142578125,-0.484809620246336836490996802240260876715183258056640625,-0.87461970713939596322461511590518057346343994140625,-0.469471562785890750291173389996401965618133544921875,-0.88294759285892698841280434862710535526275634765625, + -0.453990499739546915503041191186639480292797088623046875,-0.891006524188367787786546614370308816432952880859375,-0.43837114678907773690497151619638316333293914794921875,-0.89879404629916681557233459898270666599273681640625,-0.42261826174069916373099431439186446368694305419921875,-0.90630778703665004769618462887592613697052001953125, + -0.406736643075800097246741415801807306706905364990234375,-0.9135454576426009776213277291390113532543182373046875,-0.3907311284892738267870981871965341269969940185546875,-0.9205048534524402636947115752263925969600677490234375,-0.37460659341591229232193427378660999238491058349609375,-0.92718385456678731326718434502254240214824676513671875, + -0.3583679495453007124439182007336057722568511962890625,-0.933580426497201631974576230277307331562042236328125,-0.34202014332566854637462938626413233578205108642578125,-0.939692620785908427905042117345146834850311279296875,-0.325568154457156644365767306226189248263835906982421875,-0.94551857559931684615861513520940206944942474365234375, + -0.30901699437494756228517189811100251972675323486328125,-0.95105651629515353118193843329208903014659881591796875,-0.29237170472273710242205879694665782153606414794921875,-0.9563047559630353244841671767062507569789886474609375,-0.2756373558169988857713406105176545679569244384765625,-0.96126169593831900517244548609596677124500274658203125, + -0.25881904510252062845410137015278451144695281982421875,-0.96592582628906831221371476203785277903079986572265625,-0.2419218955996677855591059369544382207095623016357421875,-0.97029572627599647294260876151383854448795318603515625,-0.224951054343865253226653067031293176114559173583984375,-0.9743700647852351348632282679318450391292572021484375, + -0.207911690817759786664709054093691520392894744873046875,-0.97814760073380557781064226219314150512218475341796875,-0.1908089953765446100675262641743756830692291259765625,-0.9816271834476639757127713892259635031223297119140625,-0.1736481776669303311866343619840336032211780548095703125,-0.98480775301220802031565426659653894603252410888671875, + -0.1564344650402310354930790481375879608094692230224609375,-0.98768834059513765932791784507571719586849212646484375,-0.1391731009600658264258044027883443050086498260498046875,-0.99026806874157025095684048210387118160724639892578125,-0.12186934340514717078907125369369168765842914581298828125,-0.992546151641322094150154953240416944026947021484375, + -0.104528463267653359825004599770181812345981597900390625,-0.99452189536827340088365190240438096225261688232421875,-0.08715574274765824913657752404105849564075469970703125,-0.9961946980917455451987052583717741072177886962890625,-0.069756473744125579994346253442927263677120208740234375,-0.9975640502598241976528470331686548888683319091796875, + -0.05233595624294430648237863579197437502443790435791015625,-0.99862953475457383323288240717374719679355621337890625,-0.034899496702500761025067532727916841395199298858642578125,-0.99939082701909576211818375668372027575969696044921875,-0.017452406437283497775414531361093395389616489410400390625,-0.9998476951563912695775115935248322784900665283203125, + -0.00000000000000018369701987210296875011296034045003113559498615810217092558787044254131615161895751953125,-1,0.017452406437283130014037624277989380061626434326171875,-0.9998476951563912695775115935248322784900665283203125,0.0348994967025012814421103257700451649725437164306640625,-0.99939082701909576211818375668372027575969696044921875, + 0.05233595624294394565989563261609873734414577484130859375,-0.99862953475457383323288240717374719679355621337890625,0.0697564737441252191718632502670516259968280792236328125,-0.99756405025982430867514949568430893123149871826171875,0.0871557427476578883140945208651828579604625701904296875,-0.9961946980917455451987052583717741072177886962890625, + 0.10452846326765298512473378877984941937029361724853515625,-0.99452189536827340088365190240438096225261688232421875,0.1218693434051476842672201428285916335880756378173828125,-0.99254615164132198312785249072476290166378021240234375,0.139173100960065465603321399612468667328357696533203125,-0.9902680687415703619791429446195252239704132080078125, + 0.156434465040230674670596044961712323129177093505859375,-0.987688340595137770350220307591371238231658935546875,0.17364817766692997036415135880815796554088592529296875,-0.98480775301220813133795672911219298839569091796875,0.190808995376545109667887345494818873703479766845703125,-0.98162718344766386469046892671030946075916290283203125, + 0.2079116908177594258422260509178158827126026153564453125,-0.97814760073380557781064226219314150512218475341796875,0.224951054343864920159745679484331049025058746337890625,-0.97437006478523524588553073044749908149242401123046875,0.2419218955996674524921985494074760936200618743896484375,-0.9702957262759965839649112240294925868511199951171875, + 0.258819045102520295387193982605822384357452392578125,-0.9659258262890684232360172245535068213939666748046875,0.275637355816999385371701691838097758591175079345703125,-0.96126169593831878312784056106465868651866912841796875,0.292371704722736713844000178141868673264980316162109375,-0.95630475596303543550646963922190479934215545654296875, + 0.3090169943749472292182645105640403926372528076171875,-0.951056516295153642204240895807743072509765625,0.325568154457156311298859918679227121174335479736328125,-0.945518575599316957180917597725056111812591552734375,0.34202014332566899046383923632674850523471832275390625,-0.93969262078590831688273965482949279248714447021484375, + 0.35836794954530037937701081318664364516735076904296875,-0.93358042649720174299687869279296137392520904541015625,0.37460659341591195925502688623964786529541015625,-0.92718385456678742428948680753819644451141357421875,0.39073112848927349372019079964957199990749359130859375,-0.9205048534524404857393165002577006816864013671875, + 0.406736643075799764179834028254845179617404937744140625,-0.91354545764260108864363019165466539561748504638671875,0.42261826174069960782020416445448063313961029052734375,-0.90630778703664993667388216636027209460735321044921875,0.438371146789077403838064128649421036243438720703125,-0.8987940462991670376169395240140147507190704345703125, + 0.45399049973954663794728503489750437438488006591796875,-0.89100652418836789880884907688596285879611968994140625,0.46947156278589041722426600244943983852863311767578125,-0.88294759285892709943510681114275939762592315673828125,0.484809620246337280580206652302877046167850494384765625,-0.87461970713939563015770772835821844637393951416015625, + 0.50000000000000011102230246251565404236316680908203125,-0.8660254037844385965883020617184229195117950439453125,0.51503807491005415553075863499543629586696624755859375,-0.8571673007021123336102164103067480027675628662109375,0.52991926423320467876010297914035618305206298828125,-0.84804809615642617881547948854858987033367156982421875, + 0.54463903501502664017408505969797261059284210205078125,-0.8386705679454242723380730240023694932460784912109375,0.559192903470747015859387829550541937351226806640625,-0.829037572555041624156046964344568550586700439453125,0.57357643635104604840080355643294751644134521484375,-0.81915204428899179855960710483486764132976531982421875, + 0.587785252292472915058851867797784507274627685546875,-0.80901699437494756228517189811100251972675323486328125,0.60181502315204793429614937849692068994045257568359375,-0.7986355100472930512722768980893306434154510498046875,0.61566147532565851374641852089553140103816986083984375,-0.7880107536067217921527117141522467136383056640625, + 0.6293203910498375019955119569203816354274749755859375,-0.77714596145697079077052649154211394488811492919921875,0.642787609686539251896419955301098525524139404296875,-0.7660444431189781244739833709900267422199249267578125,0.6560590289905070537912479267106391489505767822265625,-0.75470958022277223609108887103502638638019561767578125, + 0.669130606358857793480865439050830900669097900390625,-0.74314482547739457718449784806580282747745513916015625,0.681998360062498587552681783563457429409027099609375,-0.73135370161917034881327026596409268677234649658203125,0.6946583704589972541043607634492218494415283203125,-0.71933980033865119185776393351261503994464874267578125, + 0.70710678118654735069270600433810614049434661865234375,-0.7071067811865476837596133918850682675838470458984375,0.7193398003386508587908565459656529128551483154296875,-0.69465837045899758717126815099618397653102874755859375,0.731353701619170681880177653511054813861846923828125,-0.68199836006249825448577439601649530231952667236328125, + 0.7431448254773942441175904605188407003879547119140625,-0.66913060635885812654777282659779302775859832763671875,0.7547095802227719030241814834880642592906951904296875,-0.65605902899050738685815531425760127604007720947265625,0.76604444311897779140707598344306461513042449951171875,-0.64278760968653958496332734284806065261363983154296875, + 0.77714596145697056872592156651080586016178131103515625,-0.62932039104983783506241934446734376251697540283203125,0.7880107536067220141973166391835547983646392822265625,-0.61566147532565818067951113334856927394866943359375,0.798635510047292829227671973058022558689117431640625,-0.6018150231520482673630567660438828170299530029296875, + 0.80901699437494734024056697307969443500041961669921875,-0.587785252292473359148061717860400676727294921875,0.81915204428899157651500217980355955660343170166015625,-0.573576436351046492490013406495563685894012451171875,0.8290375725550418462006518893758766353130340576171875,-0.5591929034707465717701779794879257678985595703125, + 0.838670567945424050293468098971061408519744873046875,-0.544639035015026973240992447244934737682342529296875,0.84804809615642595677087456351728178560733795166015625,-0.52991926423320501182701036668731831014156341552734375,0.857167300702112111565611485275439918041229248046875,-0.5150380749100544885976660225423984229564666748046875, + 0.86602540378443837454369713668711483478546142578125,-0.500000000000000444089209850062616169452667236328125,0.87461970713939585220231265338952653110027313232421875,-0.48480962024633689200214803349808789789676666259765625,0.88294759285892687739050188611145131289958953857421875,-0.469471562785890805802324621254228986799716949462890625, + 0.891006524188367787786546614370308816432952880859375,-0.4539904997395469710141924224444665014743804931640625,0.89879404629916681557233459898270666599273681640625,-0.438371146789077792416122747454210184514522552490234375,0.90630778703665004769618462887592613697052001953125,-0.422618261740699219242145545649691484868526458740234375, + 0.9135454576426009776213277291390113532543182373046875,-0.40673664307580015275789264705963432788848876953125,0.9205048534524402636947115752263925969600677490234375,-0.390731128489273882298249418454361148178577423095703125,0.92718385456678731326718434502254240214824676513671875,-0.374606593415912347833085505044437013566493988037109375, + 0.93358042649720152095227376776165328919887542724609375,-0.358367949545300767955069431991432793438434600830078125,0.939692620785908427905042117345146834850311279296875,-0.342020143325668601885780617521959356963634490966796875,0.94551857559931684615861513520940206944942474365234375,-0.3255681544571566998769185374840162694454193115234375, + 0.95105651629515353118193843329208903014659881591796875,-0.309016994374947617796323129368829540908336639404296875,0.9563047559630353244841671767062507569789886474609375,-0.292371704722737157933210028204484842717647552490234375,0.9612616959383188941501430235803127288818359375,-0.275637355816998941282491841775481589138507843017578125, + 0.96592582628906831221371476203785277903079986572265625,-0.258819045102520683965252601410611532628536224365234375,0.97029572627599647294260876151383854448795318603515625,-0.241921895599667868825832783841178752481937408447265625,0.9743700647852351348632282679318450391292572021484375,-0.2249510543438653364933799139180337078869342803955078125, + 0.97814760073380557781064226219314150512218475341796875,-0.2079116908177598699314359009804320521652698516845703125,0.9816271834476639757127713892259635031223297119140625,-0.190808995376544665578677495432202704250812530517578125,0.98480775301220802031565426659653894603252410888671875,-0.1736481776669303866977855932418606244027614593505859375, + 0.98768834059513765932791784507571719586849212646484375,-0.156434465040231118759805895024328492581844329833984375,0.99026806874157025095684048210387118160724639892578125,-0.1391731009600658819369556340461713261902332305908203125,0.992546151641322094150154953240416944026947021484375,-0.12186934340514722630022248495151870884001255035400390625, + 0.9945218953682732898613494398887269198894500732421875,-0.10452846326765341533615583102800883352756500244140625,0.9961946980917455451987052583717741072177886962890625,-0.08715574274765831852551656311334227211773395538330078125,0.9975640502598241976528470331686548888683319091796875,-0.06975647374412563550549748470075428485870361328125, + 0.99862953475457383323288240717374719679355621337890625,-0.052335956242944368932423770957029773853719234466552734375,0.99939082701909576211818375668372027575969696044921875,-0.03489949670250082347511266789297224022448062896728515625,0.9998476951563912695775115935248322784900665283203125,-0.01745240643728356022545966652614879421889781951904296875}; + private static double sc186(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F186A[0]) - (r * F186A[1])), z + ((r * F186A[1]) + (r * F186A[0]))) + +n.noise(x + ((r * F186A[2]) - (r * F186A[3])), z + ((r * F186A[3]) + (r * F186A[2]))) + +n.noise(x + ((r * F186A[4]) - (r * F186A[5])), z + ((r * F186A[5]) + (r * F186A[4]))) + +n.noise(x + ((r * F186A[6]) - (r * F186A[7])), z + ((r * F186A[7]) + (r * F186A[6]))) + +n.noise(x + ((r * F186A[8]) - (r * F186A[9])), z + ((r * F186A[9]) + (r * F186A[8]))) + +n.noise(x + ((r * F186A[10]) - (r * F186A[11])), z + ((r * F186A[11]) + (r * F186A[10]))) + +n.noise(x + ((r * F186A[12]) - (r * F186A[13])), z + ((r * F186A[13]) + (r * F186A[12]))) + +n.noise(x + ((r * F186A[14]) - (r * F186A[15])), z + ((r * F186A[15]) + (r * F186A[14]))) + +n.noise(x + ((r * F186A[16]) - (r * F186A[17])), z + ((r * F186A[17]) + (r * F186A[16]))) + +n.noise(x + ((r * F186A[18]) - (r * F186A[19])), z + ((r * F186A[19]) + (r * F186A[18]))) + +n.noise(x + ((r * F186A[20]) - (r * F186A[21])), z + ((r * F186A[21]) + (r * F186A[20]))) + +n.noise(x + ((r * F186A[22]) - (r * F186A[23])), z + ((r * F186A[23]) + (r * F186A[22]))) + +n.noise(x + ((r * F186A[24]) - (r * F186A[25])), z + ((r * F186A[25]) + (r * F186A[24]))) + +n.noise(x + ((r * F186A[26]) - (r * F186A[27])), z + ((r * F186A[27]) + (r * F186A[26]))) + +n.noise(x + ((r * F186A[28]) - (r * F186A[29])), z + ((r * F186A[29]) + (r * F186A[28]))) + +n.noise(x + ((r * F186A[30]) - (r * F186A[31])), z + ((r * F186A[31]) + (r * F186A[30]))) + +n.noise(x + ((r * F186A[32]) - (r * F186A[33])), z + ((r * F186A[33]) + (r * F186A[32]))) + +n.noise(x + ((r * F186A[34]) - (r * F186A[35])), z + ((r * F186A[35]) + (r * F186A[34]))) + +n.noise(x + ((r * F186A[36]) - (r * F186A[37])), z + ((r * F186A[37]) + (r * F186A[36]))) + +n.noise(x + ((r * F186A[38]) - (r * F186A[39])), z + ((r * F186A[39]) + (r * F186A[38]))) + +n.noise(x + ((r * F186A[40]) - (r * F186A[41])), z + ((r * F186A[41]) + (r * F186A[40]))) + +n.noise(x + ((r * F186A[42]) - (r * F186A[43])), z + ((r * F186A[43]) + (r * F186A[42]))) + +n.noise(x + ((r * F186A[44]) - (r * F186A[45])), z + ((r * F186A[45]) + (r * F186A[44]))) + +n.noise(x + ((r * F186A[46]) - (r * F186A[47])), z + ((r * F186A[47]) + (r * F186A[46]))) + +n.noise(x + ((r * F186A[48]) - (r * F186A[49])), z + ((r * F186A[49]) + (r * F186A[48]))) + +n.noise(x + ((r * F186A[50]) - (r * F186A[51])), z + ((r * F186A[51]) + (r * F186A[50]))) + +n.noise(x + ((r * F186A[52]) - (r * F186A[53])), z + ((r * F186A[53]) + (r * F186A[52]))) + +n.noise(x + ((r * F186A[54]) - (r * F186A[55])), z + ((r * F186A[55]) + (r * F186A[54]))) + +n.noise(x + ((r * F186A[56]) - (r * F186A[57])), z + ((r * F186A[57]) + (r * F186A[56]))) + +n.noise(x + ((r * F186A[58]) - (r * F186A[59])), z + ((r * F186A[59]) + (r * F186A[58]))) + +n.noise(x + ((r * F186A[60]) - (r * F186A[61])), z + ((r * F186A[61]) + (r * F186A[60]))) + +n.noise(x + ((r * F186A[62]) - (r * F186A[63])), z + ((r * F186A[63]) + (r * F186A[62]))) + +n.noise(x + ((r * F186A[64]) - (r * F186A[65])), z + ((r * F186A[65]) + (r * F186A[64]))) + +n.noise(x + ((r * F186A[66]) - (r * F186A[67])), z + ((r * F186A[67]) + (r * F186A[66]))) + +n.noise(x + ((r * F186A[68]) - (r * F186A[69])), z + ((r * F186A[69]) + (r * F186A[68]))) + +n.noise(x + ((r * F186A[70]) - (r * F186A[71])), z + ((r * F186A[71]) + (r * F186A[70]))) + +n.noise(x + ((r * F186A[72]) - (r * F186A[73])), z + ((r * F186A[73]) + (r * F186A[72]))) + +n.noise(x + ((r * F186A[74]) - (r * F186A[75])), z + ((r * F186A[75]) + (r * F186A[74]))) + +n.noise(x + ((r * F186A[76]) - (r * F186A[77])), z + ((r * F186A[77]) + (r * F186A[76]))) + +n.noise(x + ((r * F186A[78]) - (r * F186A[79])), z + ((r * F186A[79]) + (r * F186A[78]))) + +n.noise(x + ((r * F186A[80]) - (r * F186A[81])), z + ((r * F186A[81]) + (r * F186A[80]))) + +n.noise(x + ((r * F186A[82]) - (r * F186A[83])), z + ((r * F186A[83]) + (r * F186A[82]))) + +n.noise(x + ((r * F186A[84]) - (r * F186A[85])), z + ((r * F186A[85]) + (r * F186A[84]))) + +n.noise(x + ((r * F186A[86]) - (r * F186A[87])), z + ((r * F186A[87]) + (r * F186A[86]))) + +n.noise(x + ((r * F186A[88]) - (r * F186A[89])), z + ((r * F186A[89]) + (r * F186A[88]))) + +n.noise(x + ((r * F186A[90]) - (r * F186A[91])), z + ((r * F186A[91]) + (r * F186A[90]))) + +n.noise(x + ((r * F186A[92]) - (r * F186A[93])), z + ((r * F186A[93]) + (r * F186A[92]))) + +n.noise(x + ((r * F186A[94]) - (r * F186A[95])), z + ((r * F186A[95]) + (r * F186A[94]))) + +n.noise(x + ((r * F186A[96]) - (r * F186A[97])), z + ((r * F186A[97]) + (r * F186A[96]))) + +n.noise(x + ((r * F186A[98]) - (r * F186A[99])), z + ((r * F186A[99]) + (r * F186A[98]))) + +n.noise(x + ((r * F186A[100]) - (r * F186A[101])), z + ((r * F186A[101]) + (r * F186A[100]))) + +n.noise(x + ((r * F186A[102]) - (r * F186A[103])), z + ((r * F186A[103]) + (r * F186A[102]))) + +n.noise(x + ((r * F186A[104]) - (r * F186A[105])), z + ((r * F186A[105]) + (r * F186A[104]))) + +n.noise(x + ((r * F186A[106]) - (r * F186A[107])), z + ((r * F186A[107]) + (r * F186A[106]))) + +n.noise(x + ((r * F186A[108]) - (r * F186A[109])), z + ((r * F186A[109]) + (r * F186A[108]))) + +n.noise(x + ((r * F186A[110]) - (r * F186A[111])), z + ((r * F186A[111]) + (r * F186A[110]))) + +n.noise(x + ((r * F186A[112]) - (r * F186A[113])), z + ((r * F186A[113]) + (r * F186A[112]))) + +n.noise(x + ((r * F186A[114]) - (r * F186A[115])), z + ((r * F186A[115]) + (r * F186A[114]))) + +n.noise(x + ((r * F186A[116]) - (r * F186A[117])), z + ((r * F186A[117]) + (r * F186A[116]))) + +n.noise(x + ((r * F186A[118]) - (r * F186A[119])), z + ((r * F186A[119]) + (r * F186A[118]))) + +n.noise(x + ((r * F186A[120]) - (r * F186A[121])), z + ((r * F186A[121]) + (r * F186A[120]))) + +n.noise(x + ((r * F186A[122]) - (r * F186A[123])), z + ((r * F186A[123]) + (r * F186A[122]))) + +n.noise(x + ((r * F186A[124]) - (r * F186A[125])), z + ((r * F186A[125]) + (r * F186A[124]))) + +n.noise(x + ((r * F186A[126]) - (r * F186A[127])), z + ((r * F186A[127]) + (r * F186A[126]))) + +n.noise(x + ((r * F186A[128]) - (r * F186A[129])), z + ((r * F186A[129]) + (r * F186A[128]))) + +n.noise(x + ((r * F186A[130]) - (r * F186A[131])), z + ((r * F186A[131]) + (r * F186A[130]))) + +n.noise(x + ((r * F186A[132]) - (r * F186A[133])), z + ((r * F186A[133]) + (r * F186A[132]))) + +n.noise(x + ((r * F186A[134]) - (r * F186A[135])), z + ((r * F186A[135]) + (r * F186A[134]))) + +n.noise(x + ((r * F186A[136]) - (r * F186A[137])), z + ((r * F186A[137]) + (r * F186A[136]))) + +n.noise(x + ((r * F186A[138]) - (r * F186A[139])), z + ((r * F186A[139]) + (r * F186A[138]))) + +n.noise(x + ((r * F186A[140]) - (r * F186A[141])), z + ((r * F186A[141]) + (r * F186A[140]))) + +n.noise(x + ((r * F186A[142]) - (r * F186A[143])), z + ((r * F186A[143]) + (r * F186A[142]))) + +n.noise(x + ((r * F186A[144]) - (r * F186A[145])), z + ((r * F186A[145]) + (r * F186A[144]))) + +n.noise(x + ((r * F186A[146]) - (r * F186A[147])), z + ((r * F186A[147]) + (r * F186A[146]))) + +n.noise(x + ((r * F186A[148]) - (r * F186A[149])), z + ((r * F186A[149]) + (r * F186A[148]))) + +n.noise(x + ((r * F186A[150]) - (r * F186A[151])), z + ((r * F186A[151]) + (r * F186A[150]))) + +n.noise(x + ((r * F186A[152]) - (r * F186A[153])), z + ((r * F186A[153]) + (r * F186A[152]))) + +n.noise(x + ((r * F186A[154]) - (r * F186A[155])), z + ((r * F186A[155]) + (r * F186A[154]))) + +n.noise(x + ((r * F186A[156]) - (r * F186A[157])), z + ((r * F186A[157]) + (r * F186A[156]))) + +n.noise(x + ((r * F186A[158]) - (r * F186A[159])), z + ((r * F186A[159]) + (r * F186A[158]))) + +n.noise(x + ((r * F186A[160]) - (r * F186A[161])), z + ((r * F186A[161]) + (r * F186A[160]))) + +n.noise(x + ((r * F186A[162]) - (r * F186A[163])), z + ((r * F186A[163]) + (r * F186A[162]))) + +n.noise(x + ((r * F186A[164]) - (r * F186A[165])), z + ((r * F186A[165]) + (r * F186A[164]))) + +n.noise(x + ((r * F186A[166]) - (r * F186A[167])), z + ((r * F186A[167]) + (r * F186A[166]))) + +n.noise(x + ((r * F186A[168]) - (r * F186A[169])), z + ((r * F186A[169]) + (r * F186A[168]))) + +n.noise(x + ((r * F186A[170]) - (r * F186A[171])), z + ((r * F186A[171]) + (r * F186A[170]))) + +n.noise(x + ((r * F186A[172]) - (r * F186A[173])), z + ((r * F186A[173]) + (r * F186A[172]))) + +n.noise(x + ((r * F186A[174]) - (r * F186A[175])), z + ((r * F186A[175]) + (r * F186A[174]))) + +n.noise(x + ((r * F186A[176]) - (r * F186A[177])), z + ((r * F186A[177]) + (r * F186A[176]))) + +n.noise(x + ((r * F186A[178]) - (r * F186A[179])), z + ((r * F186A[179]) + (r * F186A[178]))) + +n.noise(x + ((r * F186A[180]) - (r * F186A[181])), z + ((r * F186A[181]) + (r * F186A[180]))) + +n.noise(x + ((r * F186A[182]) - (r * F186A[183])), z + ((r * F186A[183]) + (r * F186A[182]))) + +n.noise(x + ((r * F186A[184]) - (r * F186A[185])), z + ((r * F186A[185]) + (r * F186A[184]))) + +n.noise(x + ((r * F186A[186]) - (r * F186A[187])), z + ((r * F186A[187]) + (r * F186A[186]))) + +n.noise(x + ((r * F186A[188]) - (r * F186A[189])), z + ((r * F186A[189]) + (r * F186A[188]))) + +n.noise(x + ((r * F186A[190]) - (r * F186A[191])), z + ((r * F186A[191]) + (r * F186A[190]))) + +n.noise(x + ((r * F186A[192]) - (r * F186A[193])), z + ((r * F186A[193]) + (r * F186A[192]))) + +n.noise(x + ((r * F186A[194]) - (r * F186A[195])), z + ((r * F186A[195]) + (r * F186A[194]))) + +n.noise(x + ((r * F186A[196]) - (r * F186A[197])), z + ((r * F186A[197]) + (r * F186A[196]))) + +n.noise(x + ((r * F186A[198]) - (r * F186A[199])), z + ((r * F186A[199]) + (r * F186A[198]))) + +n.noise(x + ((r * F186A[200]) - (r * F186A[201])), z + ((r * F186A[201]) + (r * F186A[200]))) + +n.noise(x + ((r * F186A[202]) - (r * F186A[203])), z + ((r * F186A[203]) + (r * F186A[202]))) + +n.noise(x + ((r * F186A[204]) - (r * F186A[205])), z + ((r * F186A[205]) + (r * F186A[204]))) + +n.noise(x + ((r * F186A[206]) - (r * F186A[207])), z + ((r * F186A[207]) + (r * F186A[206]))) + +n.noise(x + ((r * F186A[208]) - (r * F186A[209])), z + ((r * F186A[209]) + (r * F186A[208]))) + +n.noise(x + ((r * F186A[210]) - (r * F186A[211])), z + ((r * F186A[211]) + (r * F186A[210]))) + +n.noise(x + ((r * F186A[212]) - (r * F186A[213])), z + ((r * F186A[213]) + (r * F186A[212]))) + +n.noise(x + ((r * F186A[214]) - (r * F186A[215])), z + ((r * F186A[215]) + (r * F186A[214]))) + +n.noise(x + ((r * F186A[216]) - (r * F186A[217])), z + ((r * F186A[217]) + (r * F186A[216]))) + +n.noise(x + ((r * F186A[218]) - (r * F186A[219])), z + ((r * F186A[219]) + (r * F186A[218]))) + +n.noise(x + ((r * F186A[220]) - (r * F186A[221])), z + ((r * F186A[221]) + (r * F186A[220]))) + +n.noise(x + ((r * F186A[222]) - (r * F186A[223])), z + ((r * F186A[223]) + (r * F186A[222]))) + +n.noise(x + ((r * F186A[224]) - (r * F186A[225])), z + ((r * F186A[225]) + (r * F186A[224]))) + +n.noise(x + ((r * F186A[226]) - (r * F186A[227])), z + ((r * F186A[227]) + (r * F186A[226]))) + +n.noise(x + ((r * F186A[228]) - (r * F186A[229])), z + ((r * F186A[229]) + (r * F186A[228]))) + +n.noise(x + ((r * F186A[230]) - (r * F186A[231])), z + ((r * F186A[231]) + (r * F186A[230]))) + +n.noise(x + ((r * F186A[232]) - (r * F186A[233])), z + ((r * F186A[233]) + (r * F186A[232]))) + +n.noise(x + ((r * F186A[234]) - (r * F186A[235])), z + ((r * F186A[235]) + (r * F186A[234]))) + +n.noise(x + ((r * F186A[236]) - (r * F186A[237])), z + ((r * F186A[237]) + (r * F186A[236]))) + +n.noise(x + ((r * F186A[238]) - (r * F186A[239])), z + ((r * F186A[239]) + (r * F186A[238]))) + +n.noise(x + ((r * F186A[240]) - (r * F186A[241])), z + ((r * F186A[241]) + (r * F186A[240]))) + +n.noise(x + ((r * F186A[242]) - (r * F186A[243])), z + ((r * F186A[243]) + (r * F186A[242]))) + +n.noise(x + ((r * F186A[244]) - (r * F186A[245])), z + ((r * F186A[245]) + (r * F186A[244]))) + +n.noise(x + ((r * F186A[246]) - (r * F186A[247])), z + ((r * F186A[247]) + (r * F186A[246]))) + +n.noise(x + ((r * F186A[248]) - (r * F186A[249])), z + ((r * F186A[249]) + (r * F186A[248]))) + +n.noise(x + ((r * F186A[250]) - (r * F186A[251])), z + ((r * F186A[251]) + (r * F186A[250]))) + +n.noise(x + ((r * F186A[252]) - (r * F186A[253])), z + ((r * F186A[253]) + (r * F186A[252]))) + +n.noise(x + ((r * F186A[254]) - (r * F186A[255])), z + ((r * F186A[255]) + (r * F186A[254]))) + +n.noise(x + ((r * F186A[256]) - (r * F186A[257])), z + ((r * F186A[257]) + (r * F186A[256]))) + +n.noise(x + ((r * F186A[258]) - (r * F186A[259])), z + ((r * F186A[259]) + (r * F186A[258]))) + +n.noise(x + ((r * F186A[260]) - (r * F186A[261])), z + ((r * F186A[261]) + (r * F186A[260]))) + +n.noise(x + ((r * F186A[262]) - (r * F186A[263])), z + ((r * F186A[263]) + (r * F186A[262]))) + +n.noise(x + ((r * F186A[264]) - (r * F186A[265])), z + ((r * F186A[265]) + (r * F186A[264]))) + +n.noise(x + ((r * F186A[266]) - (r * F186A[267])), z + ((r * F186A[267]) + (r * F186A[266]))) + +n.noise(x + ((r * F186A[268]) - (r * F186A[269])), z + ((r * F186A[269]) + (r * F186A[268]))) + +n.noise(x + ((r * F186A[270]) - (r * F186A[271])), z + ((r * F186A[271]) + (r * F186A[270]))) + +n.noise(x + ((r * F186A[272]) - (r * F186A[273])), z + ((r * F186A[273]) + (r * F186A[272]))) + +n.noise(x + ((r * F186A[274]) - (r * F186A[275])), z + ((r * F186A[275]) + (r * F186A[274]))) + +n.noise(x + ((r * F186A[276]) - (r * F186A[277])), z + ((r * F186A[277]) + (r * F186A[276]))) + +n.noise(x + ((r * F186A[278]) - (r * F186A[279])), z + ((r * F186A[279]) + (r * F186A[278]))) + +n.noise(x + ((r * F186A[280]) - (r * F186A[281])), z + ((r * F186A[281]) + (r * F186A[280]))) + +n.noise(x + ((r * F186A[282]) - (r * F186A[283])), z + ((r * F186A[283]) + (r * F186A[282]))) + +n.noise(x + ((r * F186A[284]) - (r * F186A[285])), z + ((r * F186A[285]) + (r * F186A[284]))) + +n.noise(x + ((r * F186A[286]) - (r * F186A[287])), z + ((r * F186A[287]) + (r * F186A[286]))) + +n.noise(x + ((r * F186A[288]) - (r * F186A[289])), z + ((r * F186A[289]) + (r * F186A[288]))) + +n.noise(x + ((r * F186A[290]) - (r * F186A[291])), z + ((r * F186A[291]) + (r * F186A[290]))) + +n.noise(x + ((r * F186A[292]) - (r * F186A[293])), z + ((r * F186A[293]) + (r * F186A[292]))) + +n.noise(x + ((r * F186A[294]) - (r * F186A[295])), z + ((r * F186A[295]) + (r * F186A[294]))) + +n.noise(x + ((r * F186A[296]) - (r * F186A[297])), z + ((r * F186A[297]) + (r * F186A[296]))) + +n.noise(x + ((r * F186A[298]) - (r * F186A[299])), z + ((r * F186A[299]) + (r * F186A[298]))) + +n.noise(x + ((r * F186A[300]) - (r * F186A[301])), z + ((r * F186A[301]) + (r * F186A[300]))) + +n.noise(x + ((r * F186A[302]) - (r * F186A[303])), z + ((r * F186A[303]) + (r * F186A[302]))) + +n.noise(x + ((r * F186A[304]) - (r * F186A[305])), z + ((r * F186A[305]) + (r * F186A[304]))) + +n.noise(x + ((r * F186A[306]) - (r * F186A[307])), z + ((r * F186A[307]) + (r * F186A[306]))) + +n.noise(x + ((r * F186A[308]) - (r * F186A[309])), z + ((r * F186A[309]) + (r * F186A[308]))) + +n.noise(x + ((r * F186A[310]) - (r * F186A[311])), z + ((r * F186A[311]) + (r * F186A[310]))) + +n.noise(x + ((r * F186A[312]) - (r * F186A[313])), z + ((r * F186A[313]) + (r * F186A[312]))) + +n.noise(x + ((r * F186A[314]) - (r * F186A[315])), z + ((r * F186A[315]) + (r * F186A[314]))) + +n.noise(x + ((r * F186A[316]) - (r * F186A[317])), z + ((r * F186A[317]) + (r * F186A[316]))) + +n.noise(x + ((r * F186A[318]) - (r * F186A[319])), z + ((r * F186A[319]) + (r * F186A[318]))) + +n.noise(x + ((r * F186A[320]) - (r * F186A[321])), z + ((r * F186A[321]) + (r * F186A[320]))) + +n.noise(x + ((r * F186A[322]) - (r * F186A[323])), z + ((r * F186A[323]) + (r * F186A[322]))) + +n.noise(x + ((r * F186A[324]) - (r * F186A[325])), z + ((r * F186A[325]) + (r * F186A[324]))) + +n.noise(x + ((r * F186A[326]) - (r * F186A[327])), z + ((r * F186A[327]) + (r * F186A[326]))) + +n.noise(x + ((r * F186A[328]) - (r * F186A[329])), z + ((r * F186A[329]) + (r * F186A[328]))) + +n.noise(x + ((r * F186A[330]) - (r * F186A[331])), z + ((r * F186A[331]) + (r * F186A[330]))) + +n.noise(x + ((r * F186A[332]) - (r * F186A[333])), z + ((r * F186A[333]) + (r * F186A[332]))) + +n.noise(x + ((r * F186A[334]) - (r * F186A[335])), z + ((r * F186A[335]) + (r * F186A[334]))) + +n.noise(x + ((r * F186A[336]) - (r * F186A[337])), z + ((r * F186A[337]) + (r * F186A[336]))) + +n.noise(x + ((r * F186A[338]) - (r * F186A[339])), z + ((r * F186A[339]) + (r * F186A[338]))) + +n.noise(x + ((r * F186A[340]) - (r * F186A[341])), z + ((r * F186A[341]) + (r * F186A[340]))) + +n.noise(x + ((r * F186A[342]) - (r * F186A[343])), z + ((r * F186A[343]) + (r * F186A[342]))) + +n.noise(x + ((r * F186A[344]) - (r * F186A[345])), z + ((r * F186A[345]) + (r * F186A[344]))) + +n.noise(x + ((r * F186A[346]) - (r * F186A[347])), z + ((r * F186A[347]) + (r * F186A[346]))) + +n.noise(x + ((r * F186A[348]) - (r * F186A[349])), z + ((r * F186A[349]) + (r * F186A[348]))) + +n.noise(x + ((r * F186A[350]) - (r * F186A[351])), z + ((r * F186A[351]) + (r * F186A[350]))) + +n.noise(x + ((r * F186A[352]) - (r * F186A[353])), z + ((r * F186A[353]) + (r * F186A[352]))) + +n.noise(x + ((r * F186A[354]) - (r * F186A[355])), z + ((r * F186A[355]) + (r * F186A[354]))) + +n.noise(x + ((r * F186A[356]) - (r * F186A[357])), z + ((r * F186A[357]) + (r * F186A[356]))) + +n.noise(x + ((r * F186A[358]) - (r * F186A[359])), z + ((r * F186A[359]) + (r * F186A[358]))) + +n.noise(x + ((r * F186A[360]) - (r * F186A[361])), z + ((r * F186A[361]) + (r * F186A[360]))) + +n.noise(x + ((r * F186A[362]) - (r * F186A[363])), z + ((r * F186A[363]) + (r * F186A[362]))) + +n.noise(x + ((r * F186A[364]) - (r * F186A[365])), z + ((r * F186A[365]) + (r * F186A[364]))) + +n.noise(x + ((r * F186A[366]) - (r * F186A[367])), z + ((r * F186A[367]) + (r * F186A[366]))) + +n.noise(x + ((r * F186A[368]) - (r * F186A[369])), z + ((r * F186A[369]) + (r * F186A[368]))) + +n.noise(x + ((r * F186A[370]) - (r * F186A[371])), z + ((r * F186A[371]) + (r * F186A[370]))) + +n.noise(x + ((r * F186A[372]) - (r * F186A[373])), z + ((r * F186A[373]) + (r * F186A[372]))) + +n.noise(x + ((r * F186A[374]) - (r * F186A[375])), z + ((r * F186A[375]) + (r * F186A[374]))) + +n.noise(x + ((r * F186A[376]) - (r * F186A[377])), z + ((r * F186A[377]) + (r * F186A[376]))) + +n.noise(x + ((r * F186A[378]) - (r * F186A[379])), z + ((r * F186A[379]) + (r * F186A[378]))) + +n.noise(x + ((r * F186A[380]) - (r * F186A[381])), z + ((r * F186A[381]) + (r * F186A[380]))) + +n.noise(x + ((r * F186A[382]) - (r * F186A[383])), z + ((r * F186A[383]) + (r * F186A[382]))) + +n.noise(x + ((r * F186A[384]) - (r * F186A[385])), z + ((r * F186A[385]) + (r * F186A[384]))) + +n.noise(x + ((r * F186A[386]) - (r * F186A[387])), z + ((r * F186A[387]) + (r * F186A[386]))) + +n.noise(x + ((r * F186A[388]) - (r * F186A[389])), z + ((r * F186A[389]) + (r * F186A[388]))) + +n.noise(x + ((r * F186A[390]) - (r * F186A[391])), z + ((r * F186A[391]) + (r * F186A[390]))) + +n.noise(x + ((r * F186A[392]) - (r * F186A[393])), z + ((r * F186A[393]) + (r * F186A[392]))) + +n.noise(x + ((r * F186A[394]) - (r * F186A[395])), z + ((r * F186A[395]) + (r * F186A[394]))) + +n.noise(x + ((r * F186A[396]) - (r * F186A[397])), z + ((r * F186A[397]) + (r * F186A[396]))) + +n.noise(x + ((r * F186A[398]) - (r * F186A[399])), z + ((r * F186A[399]) + (r * F186A[398]))) + +n.noise(x + ((r * F186A[400]) - (r * F186A[401])), z + ((r * F186A[401]) + (r * F186A[400]))) + +n.noise(x + ((r * F186A[402]) - (r * F186A[403])), z + ((r * F186A[403]) + (r * F186A[402]))) + +n.noise(x + ((r * F186A[404]) - (r * F186A[405])), z + ((r * F186A[405]) + (r * F186A[404]))) + +n.noise(x + ((r * F186A[406]) - (r * F186A[407])), z + ((r * F186A[407]) + (r * F186A[406]))) + +n.noise(x + ((r * F186A[408]) - (r * F186A[409])), z + ((r * F186A[409]) + (r * F186A[408]))) + +n.noise(x + ((r * F186A[410]) - (r * F186A[411])), z + ((r * F186A[411]) + (r * F186A[410]))) + +n.noise(x + ((r * F186A[412]) - (r * F186A[413])), z + ((r * F186A[413]) + (r * F186A[412]))) + +n.noise(x + ((r * F186A[414]) - (r * F186A[415])), z + ((r * F186A[415]) + (r * F186A[414]))) + +n.noise(x + ((r * F186A[416]) - (r * F186A[417])), z + ((r * F186A[417]) + (r * F186A[416]))) + +n.noise(x + ((r * F186A[418]) - (r * F186A[419])), z + ((r * F186A[419]) + (r * F186A[418]))) + +n.noise(x + ((r * F186A[420]) - (r * F186A[421])), z + ((r * F186A[421]) + (r * F186A[420]))) + +n.noise(x + ((r * F186A[422]) - (r * F186A[423])), z + ((r * F186A[423]) + (r * F186A[422]))) + +n.noise(x + ((r * F186A[424]) - (r * F186A[425])), z + ((r * F186A[425]) + (r * F186A[424]))) + +n.noise(x + ((r * F186A[426]) - (r * F186A[427])), z + ((r * F186A[427]) + (r * F186A[426]))) + +n.noise(x + ((r * F186A[428]) - (r * F186A[429])), z + ((r * F186A[429]) + (r * F186A[428]))) + +n.noise(x + ((r * F186A[430]) - (r * F186A[431])), z + ((r * F186A[431]) + (r * F186A[430]))) + +n.noise(x + ((r * F186A[432]) - (r * F186A[433])), z + ((r * F186A[433]) + (r * F186A[432]))) + +n.noise(x + ((r * F186A[434]) - (r * F186A[435])), z + ((r * F186A[435]) + (r * F186A[434]))) + +n.noise(x + ((r * F186A[436]) - (r * F186A[437])), z + ((r * F186A[437]) + (r * F186A[436]))) + +n.noise(x + ((r * F186A[438]) - (r * F186A[439])), z + ((r * F186A[439]) + (r * F186A[438]))) + +n.noise(x + ((r * F186A[440]) - (r * F186A[441])), z + ((r * F186A[441]) + (r * F186A[440]))) + +n.noise(x + ((r * F186A[442]) - (r * F186A[443])), z + ((r * F186A[443]) + (r * F186A[442]))) + +n.noise(x + ((r * F186A[444]) - (r * F186A[445])), z + ((r * F186A[445]) + (r * F186A[444]))) + +n.noise(x + ((r * F186A[446]) - (r * F186A[447])), z + ((r * F186A[447]) + (r * F186A[446]))) + +n.noise(x + ((r * F186A[448]) - (r * F186A[449])), z + ((r * F186A[449]) + (r * F186A[448]))) + +n.noise(x + ((r * F186A[450]) - (r * F186A[451])), z + ((r * F186A[451]) + (r * F186A[450]))) + +n.noise(x + ((r * F186A[452]) - (r * F186A[453])), z + ((r * F186A[453]) + (r * F186A[452]))) + +n.noise(x + ((r * F186A[454]) - (r * F186A[455])), z + ((r * F186A[455]) + (r * F186A[454]))) + +n.noise(x + ((r * F186A[456]) - (r * F186A[457])), z + ((r * F186A[457]) + (r * F186A[456]))) + +n.noise(x + ((r * F186A[458]) - (r * F186A[459])), z + ((r * F186A[459]) + (r * F186A[458]))) + +n.noise(x + ((r * F186A[460]) - (r * F186A[461])), z + ((r * F186A[461]) + (r * F186A[460]))) + +n.noise(x + ((r * F186A[462]) - (r * F186A[463])), z + ((r * F186A[463]) + (r * F186A[462]))) + +n.noise(x + ((r * F186A[464]) - (r * F186A[465])), z + ((r * F186A[465]) + (r * F186A[464]))) + +n.noise(x + ((r * F186A[466]) - (r * F186A[467])), z + ((r * F186A[467]) + (r * F186A[466]))) + +n.noise(x + ((r * F186A[468]) - (r * F186A[469])), z + ((r * F186A[469]) + (r * F186A[468]))) + +n.noise(x + ((r * F186A[470]) - (r * F186A[471])), z + ((r * F186A[471]) + (r * F186A[470]))) + +n.noise(x + ((r * F186A[472]) - (r * F186A[473])), z + ((r * F186A[473]) + (r * F186A[472]))) + +n.noise(x + ((r * F186A[474]) - (r * F186A[475])), z + ((r * F186A[475]) + (r * F186A[474]))) + +n.noise(x + ((r * F186A[476]) - (r * F186A[477])), z + ((r * F186A[477]) + (r * F186A[476]))) + +n.noise(x + ((r * F186A[478]) - (r * F186A[479])), z + ((r * F186A[479]) + (r * F186A[478]))) + +n.noise(x + ((r * F186A[480]) - (r * F186A[481])), z + ((r * F186A[481]) + (r * F186A[480]))) + +n.noise(x + ((r * F186A[482]) - (r * F186A[483])), z + ((r * F186A[483]) + (r * F186A[482]))) + +n.noise(x + ((r * F186A[484]) - (r * F186A[485])), z + ((r * F186A[485]) + (r * F186A[484]))) + +n.noise(x + ((r * F186A[486]) - (r * F186A[487])), z + ((r * F186A[487]) + (r * F186A[486]))) + +n.noise(x + ((r * F186A[488]) - (r * F186A[489])), z + ((r * F186A[489]) + (r * F186A[488]))) + +n.noise(x + ((r * F186A[490]) - (r * F186A[491])), z + ((r * F186A[491]) + (r * F186A[490]))) + +n.noise(x + ((r * F186A[492]) - (r * F186A[493])), z + ((r * F186A[493]) + (r * F186A[492]))) + +n.noise(x + ((r * F186A[494]) - (r * F186A[495])), z + ((r * F186A[495]) + (r * F186A[494]))) + +n.noise(x + ((r * F186A[496]) - (r * F186A[497])), z + ((r * F186A[497]) + (r * F186A[496]))) + +n.noise(x + ((r * F186A[498]) - (r * F186A[499])), z + ((r * F186A[499]) + (r * F186A[498]))) + +n.noise(x + ((r * F186A[500]) - (r * F186A[501])), z + ((r * F186A[501]) + (r * F186A[500]))) + +n.noise(x + ((r * F186A[502]) - (r * F186A[503])), z + ((r * F186A[503]) + (r * F186A[502]))) + +n.noise(x + ((r * F186A[504]) - (r * F186A[505])), z + ((r * F186A[505]) + (r * F186A[504]))) + +n.noise(x + ((r * F186A[506]) - (r * F186A[507])), z + ((r * F186A[507]) + (r * F186A[506]))) + +n.noise(x + ((r * F186A[508]) - (r * F186A[509])), z + ((r * F186A[509]) + (r * F186A[508]))) + +n.noise(x + ((r * F186A[510]) - (r * F186A[511])), z + ((r * F186A[511]) + (r * F186A[510]))) + +n.noise(x + ((r * F186A[512]) - (r * F186A[513])), z + ((r * F186A[513]) + (r * F186A[512]))) + +n.noise(x + ((r * F186A[514]) - (r * F186A[515])), z + ((r * F186A[515]) + (r * F186A[514]))) + +n.noise(x + ((r * F186A[516]) - (r * F186A[517])), z + ((r * F186A[517]) + (r * F186A[516]))) + +n.noise(x + ((r * F186A[518]) - (r * F186A[519])), z + ((r * F186A[519]) + (r * F186A[518]))) + +n.noise(x + ((r * F186A[520]) - (r * F186A[521])), z + ((r * F186A[521]) + (r * F186A[520]))) + +n.noise(x + ((r * F186A[522]) - (r * F186A[523])), z + ((r * F186A[523]) + (r * F186A[522]))) + +n.noise(x + ((r * F186A[524]) - (r * F186A[525])), z + ((r * F186A[525]) + (r * F186A[524]))) + +n.noise(x + ((r * F186A[526]) - (r * F186A[527])), z + ((r * F186A[527]) + (r * F186A[526]))) + +n.noise(x + ((r * F186A[528]) - (r * F186A[529])), z + ((r * F186A[529]) + (r * F186A[528]))) + +n.noise(x + ((r * F186A[530]) - (r * F186A[531])), z + ((r * F186A[531]) + (r * F186A[530]))) + +n.noise(x + ((r * F186A[532]) - (r * F186A[533])), z + ((r * F186A[533]) + (r * F186A[532]))) + +n.noise(x + ((r * F186A[534]) - (r * F186A[535])), z + ((r * F186A[535]) + (r * F186A[534]))) + +n.noise(x + ((r * F186A[536]) - (r * F186A[537])), z + ((r * F186A[537]) + (r * F186A[536]))) + +n.noise(x + ((r * F186A[538]) - (r * F186A[539])), z + ((r * F186A[539]) + (r * F186A[538]))) + +n.noise(x + ((r * F186A[540]) - (r * F186A[541])), z + ((r * F186A[541]) + (r * F186A[540]))) + +n.noise(x + ((r * F186A[542]) - (r * F186A[543])), z + ((r * F186A[543]) + (r * F186A[542]))) + +n.noise(x + ((r * F186A[544]) - (r * F186A[545])), z + ((r * F186A[545]) + (r * F186A[544]))) + +n.noise(x + ((r * F186A[546]) - (r * F186A[547])), z + ((r * F186A[547]) + (r * F186A[546]))) + +n.noise(x + ((r * F186A[548]) - (r * F186A[549])), z + ((r * F186A[549]) + (r * F186A[548]))) + +n.noise(x + ((r * F186A[550]) - (r * F186A[551])), z + ((r * F186A[551]) + (r * F186A[550]))) + +n.noise(x + ((r * F186A[552]) - (r * F186A[553])), z + ((r * F186A[553]) + (r * F186A[552]))) + +n.noise(x + ((r * F186A[554]) - (r * F186A[555])), z + ((r * F186A[555]) + (r * F186A[554]))) + +n.noise(x + ((r * F186A[556]) - (r * F186A[557])), z + ((r * F186A[557]) + (r * F186A[556]))) + +n.noise(x + ((r * F186A[558]) - (r * F186A[559])), z + ((r * F186A[559]) + (r * F186A[558]))) + +n.noise(x + ((r * F186A[560]) - (r * F186A[561])), z + ((r * F186A[561]) + (r * F186A[560]))) + +n.noise(x + ((r * F186A[562]) - (r * F186A[563])), z + ((r * F186A[563]) + (r * F186A[562]))) + +n.noise(x + ((r * F186A[564]) - (r * F186A[565])), z + ((r * F186A[565]) + (r * F186A[564]))) + +n.noise(x + ((r * F186A[566]) - (r * F186A[567])), z + ((r * F186A[567]) + (r * F186A[566]))) + +n.noise(x + ((r * F186A[568]) - (r * F186A[569])), z + ((r * F186A[569]) + (r * F186A[568]))) + +n.noise(x + ((r * F186A[570]) - (r * F186A[571])), z + ((r * F186A[571]) + (r * F186A[570]))) + +n.noise(x + ((r * F186A[572]) - (r * F186A[573])), z + ((r * F186A[573]) + (r * F186A[572]))) + +n.noise(x + ((r * F186A[574]) - (r * F186A[575])), z + ((r * F186A[575]) + (r * F186A[574]))) + +n.noise(x + ((r * F186A[576]) - (r * F186A[577])), z + ((r * F186A[577]) + (r * F186A[576]))) + +n.noise(x + ((r * F186A[578]) - (r * F186A[579])), z + ((r * F186A[579]) + (r * F186A[578]))) + +n.noise(x + ((r * F186A[580]) - (r * F186A[581])), z + ((r * F186A[581]) + (r * F186A[580]))) + +n.noise(x + ((r * F186A[582]) - (r * F186A[583])), z + ((r * F186A[583]) + (r * F186A[582]))) + +n.noise(x + ((r * F186A[584]) - (r * F186A[585])), z + ((r * F186A[585]) + (r * F186A[584]))) + +n.noise(x + ((r * F186A[586]) - (r * F186A[587])), z + ((r * F186A[587]) + (r * F186A[586]))) + +n.noise(x + ((r * F186A[588]) - (r * F186A[589])), z + ((r * F186A[589]) + (r * F186A[588]))) + +n.noise(x + ((r * F186A[590]) - (r * F186A[591])), z + ((r * F186A[591]) + (r * F186A[590]))) + +n.noise(x + ((r * F186A[592]) - (r * F186A[593])), z + ((r * F186A[593]) + (r * F186A[592]))) + +n.noise(x + ((r * F186A[594]) - (r * F186A[595])), z + ((r * F186A[595]) + (r * F186A[594]))) + +n.noise(x + ((r * F186A[596]) - (r * F186A[597])), z + ((r * F186A[597]) + (r * F186A[596]))) + +n.noise(x + ((r * F186A[598]) - (r * F186A[599])), z + ((r * F186A[599]) + (r * F186A[598]))) + +n.noise(x + ((r * F186A[600]) - (r * F186A[601])), z + ((r * F186A[601]) + (r * F186A[600]))) + +n.noise(x + ((r * F186A[602]) - (r * F186A[603])), z + ((r * F186A[603]) + (r * F186A[602]))) + +n.noise(x + ((r * F186A[604]) - (r * F186A[605])), z + ((r * F186A[605]) + (r * F186A[604]))) + +n.noise(x + ((r * F186A[606]) - (r * F186A[607])), z + ((r * F186A[607]) + (r * F186A[606]))) + +n.noise(x + ((r * F186A[608]) - (r * F186A[609])), z + ((r * F186A[609]) + (r * F186A[608]))) + +n.noise(x + ((r * F186A[610]) - (r * F186A[611])), z + ((r * F186A[611]) + (r * F186A[610]))) + +n.noise(x + ((r * F186A[612]) - (r * F186A[613])), z + ((r * F186A[613]) + (r * F186A[612]))) + +n.noise(x + ((r * F186A[614]) - (r * F186A[615])), z + ((r * F186A[615]) + (r * F186A[614]))) + +n.noise(x + ((r * F186A[616]) - (r * F186A[617])), z + ((r * F186A[617]) + (r * F186A[616]))) + +n.noise(x + ((r * F186A[618]) - (r * F186A[619])), z + ((r * F186A[619]) + (r * F186A[618]))) + +n.noise(x + ((r * F186A[620]) - (r * F186A[621])), z + ((r * F186A[621]) + (r * F186A[620]))) + +n.noise(x + ((r * F186A[622]) - (r * F186A[623])), z + ((r * F186A[623]) + (r * F186A[622]))) + +n.noise(x + ((r * F186A[624]) - (r * F186A[625])), z + ((r * F186A[625]) + (r * F186A[624]))) + +n.noise(x + ((r * F186A[626]) - (r * F186A[627])), z + ((r * F186A[627]) + (r * F186A[626]))) + +n.noise(x + ((r * F186A[628]) - (r * F186A[629])), z + ((r * F186A[629]) + (r * F186A[628]))) + +n.noise(x + ((r * F186A[630]) - (r * F186A[631])), z + ((r * F186A[631]) + (r * F186A[630]))) + +n.noise(x + ((r * F186A[632]) - (r * F186A[633])), z + ((r * F186A[633]) + (r * F186A[632]))) + +n.noise(x + ((r * F186A[634]) - (r * F186A[635])), z + ((r * F186A[635]) + (r * F186A[634]))) + +n.noise(x + ((r * F186A[636]) - (r * F186A[637])), z + ((r * F186A[637]) + (r * F186A[636]))) + +n.noise(x + ((r * F186A[638]) - (r * F186A[639])), z + ((r * F186A[639]) + (r * F186A[638]))) + +n.noise(x + ((r * F186A[640]) - (r * F186A[641])), z + ((r * F186A[641]) + (r * F186A[640]))) + +n.noise(x + ((r * F186A[642]) - (r * F186A[643])), z + ((r * F186A[643]) + (r * F186A[642]))) + +n.noise(x + ((r * F186A[644]) - (r * F186A[645])), z + ((r * F186A[645]) + (r * F186A[644]))) + +n.noise(x + ((r * F186A[646]) - (r * F186A[647])), z + ((r * F186A[647]) + (r * F186A[646]))) + +n.noise(x + ((r * F186A[648]) - (r * F186A[649])), z + ((r * F186A[649]) + (r * F186A[648]))) + +n.noise(x + ((r * F186A[650]) - (r * F186A[651])), z + ((r * F186A[651]) + (r * F186A[650]))) + +n.noise(x + ((r * F186A[652]) - (r * F186A[653])), z + ((r * F186A[653]) + (r * F186A[652]))) + +n.noise(x + ((r * F186A[654]) - (r * F186A[655])), z + ((r * F186A[655]) + (r * F186A[654]))) + +n.noise(x + ((r * F186A[656]) - (r * F186A[657])), z + ((r * F186A[657]) + (r * F186A[656]))) + +n.noise(x + ((r * F186A[658]) - (r * F186A[659])), z + ((r * F186A[659]) + (r * F186A[658]))) + +n.noise(x + ((r * F186A[660]) - (r * F186A[661])), z + ((r * F186A[661]) + (r * F186A[660]))) + +n.noise(x + ((r * F186A[662]) - (r * F186A[663])), z + ((r * F186A[663]) + (r * F186A[662]))) + +n.noise(x + ((r * F186A[664]) - (r * F186A[665])), z + ((r * F186A[665]) + (r * F186A[664]))) + +n.noise(x + ((r * F186A[666]) - (r * F186A[667])), z + ((r * F186A[667]) + (r * F186A[666]))) + +n.noise(x + ((r * F186A[668]) - (r * F186A[669])), z + ((r * F186A[669]) + (r * F186A[668]))) + +n.noise(x + ((r * F186A[670]) - (r * F186A[671])), z + ((r * F186A[671]) + (r * F186A[670]))) + +n.noise(x + ((r * F186A[672]) - (r * F186A[673])), z + ((r * F186A[673]) + (r * F186A[672]))) + +n.noise(x + ((r * F186A[674]) - (r * F186A[675])), z + ((r * F186A[675]) + (r * F186A[674]))) + +n.noise(x + ((r * F186A[676]) - (r * F186A[677])), z + ((r * F186A[677]) + (r * F186A[676]))) + +n.noise(x + ((r * F186A[678]) - (r * F186A[679])), z + ((r * F186A[679]) + (r * F186A[678]))) + +n.noise(x + ((r * F186A[680]) - (r * F186A[681])), z + ((r * F186A[681]) + (r * F186A[680]))) + +n.noise(x + ((r * F186A[682]) - (r * F186A[683])), z + ((r * F186A[683]) + (r * F186A[682]))) + +n.noise(x + ((r * F186A[684]) - (r * F186A[685])), z + ((r * F186A[685]) + (r * F186A[684]))) + +n.noise(x + ((r * F186A[686]) - (r * F186A[687])), z + ((r * F186A[687]) + (r * F186A[686]))) + +n.noise(x + ((r * F186A[688]) - (r * F186A[689])), z + ((r * F186A[689]) + (r * F186A[688]))) + +n.noise(x + ((r * F186A[690]) - (r * F186A[691])), z + ((r * F186A[691]) + (r * F186A[690]))) + +n.noise(x + ((r * F186A[692]) - (r * F186A[693])), z + ((r * F186A[693]) + (r * F186A[692]))) + +n.noise(x + ((r * F186A[694]) - (r * F186A[695])), z + ((r * F186A[695]) + (r * F186A[694]))) + +n.noise(x + ((r * F186A[696]) - (r * F186A[697])), z + ((r * F186A[697]) + (r * F186A[696]))) + +n.noise(x + ((r * F186A[698]) - (r * F186A[699])), z + ((r * F186A[699]) + (r * F186A[698]))) + +n.noise(x + ((r * F186A[700]) - (r * F186A[701])), z + ((r * F186A[701]) + (r * F186A[700]))) + +n.noise(x + ((r * F186A[702]) - (r * F186A[703])), z + ((r * F186A[703]) + (r * F186A[702]))) + +n.noise(x + ((r * F186A[704]) - (r * F186A[705])), z + ((r * F186A[705]) + (r * F186A[704]))) + +n.noise(x + ((r * F186A[706]) - (r * F186A[707])), z + ((r * F186A[707]) + (r * F186A[706]))) + +n.noise(x + ((r * F186A[708]) - (r * F186A[709])), z + ((r * F186A[709]) + (r * F186A[708]))) + +n.noise(x + ((r * F186A[710]) - (r * F186A[711])), z + ((r * F186A[711]) + (r * F186A[710]))) + +n.noise(x + ((r * F186A[712]) - (r * F186A[713])), z + ((r * F186A[713]) + (r * F186A[712]))) + +n.noise(x + ((r * F186A[714]) - (r * F186A[715])), z + ((r * F186A[715]) + (r * F186A[714]))) + +n.noise(x + ((r * F186A[716]) - (r * F186A[717])), z + ((r * F186A[717]) + (r * F186A[716]))) + +n.noise(x + ((r * F186A[718]) - (r * F186A[719])), z + ((r * F186A[719]) + (r * F186A[718]))))/186.0D; + } + private static final double[] F256A = {1,0,0.9998476951563912695775115935248322784900665283203125,0.017452406437283511653202339175550150685012340545654296875,0.99939082701909576211818375668372027575969696044921875,0.034899496702500969191884649944768170826137065887451171875, + 0.99862953475457383323288240717374719679355621337890625,0.05233595624294383463759317010044469498097896575927734375,0.9975640502598241976528470331686548888683319091796875,0.06975647374412530243859009715379215776920318603515625,0.9961946980917455451987052583717741072177886962890625,0.0871557427476581658698506771543179638683795928955078125, + 0.9945218953682732898613494398887269198894500732421875,0.104528463267653470847307062285835854709148406982421875,0.99254615164132198312785249072476290166378021240234375,0.12186934340514747610040302561174030415713787078857421875,0.9902680687415703619791429446195252239704132080078125,0.1391731009600654378477457839835551567375659942626953125, + 0.987688340595137770350220307591371238231658935546875,0.1564344650402308689596253543641068972647190093994140625,0.98480775301220802031565426659653894603252410888671875,0.1736481776669303311866343619840336032211780548095703125,0.9816271834476639757127713892259635031223297119140625,0.1908089953765448043565555735767702572047710418701171875, + 0.9781476007338056888329447247087955474853515625,0.207911690817759342575499204031075350940227508544921875,0.97437006478523524588553073044749908149242401123046875,0.2249510543438650034264725263710715807974338531494140625,0.97029572627599647294260876151383854448795318603515625,0.2419218955996677300479547056966111995279788970947265625, + 0.96592582628906831221371476203785277903079986572265625,0.25881904510252073947640383266843855381011962890625,0.9612616959383188941501430235803127288818359375,0.275637355816999163327096766806789673864841461181640625,0.95630475596303543550646963922190479934215545654296875,0.292371704722736769355151409399695694446563720703125, + 0.95105651629515353118193843329208903014659881591796875,0.309016994374947395751718204337521456182003021240234375,0.94551857559931684615861513520940206944942474365234375,0.3255681544571566998769185374840162694454193115234375,0.939692620785908427905042117345146834850311279296875,0.342020143325668712908083080037613399326801300048828125, + 0.93358042649720174299687869279296137392520904541015625,0.3583679495453002683547083506709896028041839599609375,0.92718385456678742428948680753819644451141357421875,0.374606593415912014766178117497474886476993560791015625,0.92050485345244037471701403774204663932323455810546875,0.390731128489273771275946955938707105815410614013671875, + 0.91354545764260086659902526662335731089115142822265625,0.406736643075800208269043878317461349070072174072265625,0.90630778703664993667388216636027209460735321044921875,0.422618261740699441286750470680999569594860076904296875,0.8987940462991670376169395240140147507190704345703125,0.438371146789077403838064128649421036243438720703125, + 0.89100652418836789880884907688596285879611968994140625,0.453990499739546748969587497413158416748046875,0.88294759285892698841280434862710535526275634765625,0.469471562785890805802324621254228986799716949462890625,0.8746197071393957411800101908738724887371063232421875,0.484809620246337058535601727271568961441516876220703125, + 0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,0.8571673007021123336102164103067480027675628662109375,0.51503807491005415553075863499543629586696624755859375,0.84804809615642595677087456351728178560733795166015625,0.5299192642332049008047079041716642677783966064453125, + 0.838670567945424050293468098971061408519744873046875,0.54463903501502708426329490976058878004550933837890625,0.829037572555041624156046964344568550586700439453125,0.55919290347074690483708536703488789498805999755859375,0.81915204428899179855960710483486764132976531982421875,0.57357643635104604840080355643294751644134521484375, + 0.80901699437494745126286943559534847736358642578125,0.5877852522924731371034567928290925920009613037109375,0.798635510047292829227671973058022558689117431640625,0.6018150231520482673630567660438828170299530029296875,0.78801075360672190317501417666790075600147247314453125,0.61566147532565829170181359586422331631183624267578125, + 0.77714596145697090179282895405776798725128173828125,0.62932039104983739097320949440472759306430816650390625,0.76604444311897801345168090847437269985675811767578125,0.642787609686539251896419955301098525524139404296875,0.75470958022277201404648394600371830165386199951171875,0.656059028990507275835852851741947233676910400390625, + 0.7431448254773942441175904605188407003879547119140625,0.66913060635885823757007528911344707012176513671875,0.7313537016191704598355727284797467291355133056640625,0.68199836006249847653037932104780338704586029052734375,0.71933980033865119185776393351261503994464874267578125,0.6946583704589972541043607634492218494415283203125, + 0.70710678118654757273731092936941422522068023681640625,0.707106781186547461715008466853760182857513427734375,0.6946583704589972541043607634492218494415283203125,0.71933980033865108083546147099696099758148193359375,0.68199836006249847653037932104780338704586029052734375,0.7313537016191704598355727284797467291355133056640625, + 0.66913060635885823757007528911344707012176513671875,0.7431448254773942441175904605188407003879547119140625,0.656059028990507275835852851741947233676910400390625,0.75470958022277201404648394600371830165386199951171875,0.64278760968653936291872241781675256788730621337890625,0.76604444311897801345168090847437269985675811767578125, + 0.6293203910498375019955119569203816354274749755859375,0.77714596145697090179282895405776798725128173828125,0.61566147532565829170181359586422331631183624267578125,0.7880107536067220141973166391835547983646392822265625,0.60181502315204837838535922855953685939311981201171875,0.798635510047292829227671973058022558689117431640625, + 0.5877852522924731371034567928290925920009613037109375,0.80901699437494745126286943559534847736358642578125,0.57357643635104615942310601894860155880451202392578125,0.81915204428899179855960710483486764132976531982421875,0.5591929034707467938147829045192338526248931884765625,0.82903757255504173517834942686022259294986724853515625, + 0.54463903501502708426329490976058878004550933837890625,0.838670567945424050293468098971061408519744873046875,0.5299192642332049008047079041716642677783966064453125,0.84804809615642595677087456351728178560733795166015625,0.51503807491005415553075863499543629586696624755859375,0.8571673007021123336102164103067480027675628662109375, + 0.50000000000000011102230246251565404236316680908203125,0.8660254037844385965883020617184229195117950439453125,0.48480962024633711404675295852939598262310028076171875,0.8746197071393957411800101908738724887371063232421875,0.46947156278589086131347585251205600798130035400390625,0.88294759285892687739050188611145131289958953857421875, + 0.453990499739546804480738728670985437929630279541015625,0.891006524188367787786546614370308816432952880859375,0.438371146789077459349215359907248057425022125244140625,0.8987940462991670376169395240140147507190704345703125,0.422618261740699441286750470680999569594860076904296875,0.90630778703664993667388216636027209460735321044921875, + 0.406736643075800208269043878317461349070072174072265625,0.91354545764260086659902526662335731089115142822265625,0.39073112848927371576479572468088008463382720947265625,0.92050485345244037471701403774204663932323455810546875,0.37460659341591195925502688623964786529541015625,0.92718385456678742428948680753819644451141357421875, + 0.35836794954530037937701081318664364516735076904296875,0.93358042649720174299687869279296137392520904541015625,0.342020143325668823930385542553267441689968109130859375,0.93969262078590831688273965482949279248714447021484375,0.325568154457156755388069768741843290627002716064453125,0.9455185755993167351363126726937480270862579345703125, + 0.30901699437494745126286943559534847736358642578125,0.95105651629515353118193843329208903014659881591796875,0.292371704722736769355151409399695694446563720703125,0.95630475596303543550646963922190479934215545654296875,0.275637355816999163327096766806789673864841461181640625,0.9612616959383188941501430235803127288818359375, + 0.25881904510252073947640383266843855381011962890625,0.96592582628906831221371476203785277903079986572265625,0.2419218955996676745368034744387841783463954925537109375,0.97029572627599647294260876151383854448795318603515625,0.224951054343864920159745679484331049025058746337890625,0.97437006478523524588553073044749908149242401123046875, + 0.207911690817759453597801666546729393303394317626953125,0.97814760073380557781064226219314150512218475341796875,0.1908089953765449153788580360924242995679378509521484375,0.9816271834476639757127713892259635031223297119140625,0.17364817766693041445336120887077413499355316162109375,0.98480775301220802031565426659653894603252410888671875, + 0.1564344650402309244707765856219339184463024139404296875,0.987688340595137770350220307591371238231658935546875,0.139173100960065465603321399612468667328357696533203125,0.9902680687415703619791429446195252239704132080078125,0.121869343405147489978190833426197059452533721923828125,0.99254615164132198312785249072476290166378021240234375, + 0.10452846326765345696951925447137909941375255584716796875,0.9945218953682732898613494398887269198894500732421875,0.087155742747658138114275061525404453277587890625,0.9961946980917455451987052583717741072177886962890625,0.06975647374412523304965105808150838129222393035888671875,0.9975640502598241976528470331686548888683319091796875, + 0.052335956242943966476577344337783870287239551544189453125,0.99862953475457383323288240717374719679355621337890625,0.034899496702501080214187112460422213189303874969482421875,0.99939082701909576211818375668372027575969696044921875,0.0174524064372835983893761380159048712812364101409912109375,0.9998476951563912695775115935248322784900665283203125, + 0.0000000000000000612323399573676603586882014729198302312846062338790031898128063403419218957424163818359375,1,-0.01745240643728347695873281963940826244652271270751953125,0.9998476951563912695775115935248322784900665283203125,-0.034899496702500955314096842130311415530741214752197265625,0.99939082701909576211818375668372027575969696044921875, + -0.052335956242943841576487074007673072628676891326904296875,0.99862953475457383323288240717374719679355621337890625,-0.0697564737441253301941657127827056683599948883056640625,0.9975640502598241976528470331686548888683319091796875,-0.08715574274765823525878971622660174034535884857177734375,0.9961946980917455451987052583717741072177886962890625, + -0.1045284632676535541140339091725763864815235137939453125,0.9945218953682732898613494398887269198894500732421875,-0.12186934340514736507810056309608626179397106170654296875,0.992546151641322094150154953240416944026947021484375,-0.139173100960065354581018937096814624965190887451171875,0.9902680687415703619791429446195252239704132080078125, + -0.1564344650402308134484741231062798760831356048583984375,0.987688340595137770350220307591371238231658935546875,-0.1736481776669303034310587463551200926303863525390625,0.98480775301220802031565426659653894603252410888671875,-0.1908089953765448043565555735767702572047710418701171875,0.9816271834476639757127713892259635031223297119140625, + -0.207911690817759342575499204031075350940227508544921875,0.9781476007338056888329447247087955474853515625,-0.224951054343865031182048141999985091388225555419921875,0.97437006478523524588553073044749908149242401123046875,-0.2419218955996677855591059369544382207095623016357421875,0.97029572627599647294260876151383854448795318603515625, + -0.25881904510252085049870629518409259617328643798828125,0.96592582628906831221371476203785277903079986572265625,-0.275637355816999052304794304291135631501674652099609375,0.9612616959383188941501430235803127288818359375,-0.29237170472273665833284894688404165208339691162109375,0.956304755963035546528772101737558841705322265625, + -0.30901699437494734024056697307969443500041961669921875,0.951056516295153642204240895807743072509765625,-0.325568154457156644365767306226189248263835906982421875,0.94551857559931684615861513520940206944942474365234375,-0.342020143325668712908083080037613399326801300048828125,0.939692620785908427905042117345146834850311279296875, + -0.3583679495453002683547083506709896028041839599609375,0.93358042649720174299687869279296137392520904541015625,-0.37460659341591207027732934875530190765857696533203125,0.92718385456678742428948680753819644451141357421875,-0.390731128489273771275946955938707105815410614013671875,0.9205048534524402636947115752263925969600677490234375, + -0.40673664307580026378019510957528837025165557861328125,0.91354545764260086659902526662335731089115142822265625,-0.422618261740699330264448008165345527231693267822265625,0.90630778703665004769618462887592613697052001953125,-0.43837114678907751486036659116507507860660552978515625,0.89879404629916692659463706149836070835590362548828125, + -0.453990499739546693458436266155331395566463470458984375,0.89100652418836789880884907688596285879611968994140625,-0.469471562785890916824627083769883029162883758544921875,0.88294759285892687739050188611145131289958953857421875,-0.4848096202463370030244504960137419402599334716796875,0.87461970713939585220231265338952653110027313232421875, + -0.4999999999999997779553950749686919152736663818359375,0.86602540378443870761060452423407696187496185302734375,-0.515038074910054266553061097511090338230133056640625,0.8571673007021123336102164103067480027675628662109375,-0.52991926423320478978240544165601022541522979736328125,0.8480480961564260677931770260329358279705047607421875, + -0.54463903501502708426329490976058878004550933837890625,0.83867056794542393927116563645540736615657806396484375,-0.55919290347074668279248044200357981026172637939453125,0.82903757255504173517834942686022259294986724853515625,-0.57357643635104615942310601894860155880451202392578125,0.8191520442889916875373046423192135989665985107421875, + -0.58778525229247302608115433031343854963779449462890625,0.80901699437494745126286943559534847736358642578125,-0.60181502315204837838535922855953685939311981201171875,0.79863551004729271820536951054236851632595062255859375,-0.61566147532565829170181359586422331631183624267578125,0.7880107536067220141973166391835547983646392822265625, + -0.629320391049837279950907031889073550701141357421875,0.77714596145697101281513141657342202961444854736328125,-0.64278760968653936291872241781675256788730621337890625,0.76604444311897801345168090847437269985675811767578125,-0.65605902899050716481355038922629319131374359130859375,0.75470958022277212506878640851937234401702880859375, + -0.66913060635885823757007528911344707012176513671875,0.7431448254773942441175904605188407003879547119140625,-0.6819983600624983655080768585321493446826934814453125,0.73135370161917057085787519099540077149868011474609375,-0.69465837045899736512666322596487589180469512939453125,0.71933980033865108083546147099696099758148193359375, + -0.707106781186547461715008466853760182857513427734375,0.70710678118654757273731092936941422522068023681640625,-0.71933980033865119185776393351261503994464874267578125,0.69465837045899714308205830093356780707836151123046875,-0.7313537016191704598355727284797467291355133056640625,0.681998360062498587552681783563457429409027099609375, + -0.74314482547739402207298553548753261566162109375,0.66913060635885834859237775162910111248493194580078125,-0.75470958022277201404648394600371830165386199951171875,0.656059028990507275835852851741947233676910400390625,-0.76604444311897790242937844595871865749359130859375,0.6427876096865394739410248803324066102504730224609375, + -0.77714596145697090179282895405776798725128173828125,0.62932039104983739097320949440472759306430816650390625,-0.78801075360672190317501417666790075600147247314453125,0.6156614753256584027241160583798773586750030517578125,-0.79863551004729294024997443557367660105228424072265625,0.60181502315204815634075430352822877466678619384765625, + -0.80901699437494734024056697307969443500041961669921875,0.58778525229247324812575925534474663436412811279296875,-0.81915204428899190958190956735052168369293212890625,0.57357643635104593737850109391729347407817840576171875,-0.829037572555041624156046964344568550586700439453125,0.55919290347074690483708536703488789498805999755859375, + -0.83867056794542393927116563645540736615657806396484375,0.54463903501502730630789983479189686477184295654296875,-0.84804809615642595677087456351728178560733795166015625,0.5299192642332049008047079041716642677783966064453125,-0.85716730070211222258791394779109396040439605712890625,0.51503807491005437757536356002674438059329986572265625, + -0.86602540378443870761060452423407696187496185302734375,0.499999999999999944488848768742172978818416595458984375,-0.8746197071393957411800101908738724887371063232421875,0.484809620246337169557904189787223003804683685302734375,-0.88294759285892698841280434862710535526275634765625,0.469471562785890694780022158738574944436550140380859375, + -0.891006524188367787786546614370308816432952880859375,0.45399049973954685999188995992881245911121368408203125,-0.8987940462991670376169395240140147507190704345703125,0.43837114678907729281576166613376699388027191162109375,-0.90630778703664993667388216636027209460735321044921875,0.4226182617406994967979017019388265907764434814453125, + -0.913545457642600755576722804107703268527984619140625,0.406736643075800430313648803348769433796405792236328125,-0.92050485345244037471701403774204663932323455810546875,0.390731128489273771275946955938707105815410614013671875,-0.92718385456678731326718434502254240214824676513671875,0.374606593415912236810783042528782971203327178955078125, + -0.93358042649720174299687869279296137392520904541015625,0.358367949545300212843557119413162581622600555419921875,-0.93969262078590831688273965482949279248714447021484375,0.342020143325668879441536773811094462871551513671875,-0.94551857559931684615861513520940206944942474365234375,0.32556815445715658885461607496836222708225250244140625, + -0.95105651629515353118193843329208903014659881591796875,0.309016994374947506774020666853175498545169830322265625,-0.956304755963035546528772101737558841705322265625,0.292371704722736602821697715626214630901813507080078125,-0.9612616959383188941501430235803127288818359375,0.27563735581699921883824799806461669504642486572265625, + -0.965925826289068201191412299522198736667633056640625,0.258819045102521017032159988957573659718036651611328125,-0.97029572627599647294260876151383854448795318603515625,0.2419218955996677300479547056966111995279788970947265625,-0.9743700647852351348632282679318450391292572021484375,0.22495105434386519771550183577346615493297576904296875, + -0.9781476007338056888329447247087955474853515625,0.2079116908177593148199235884021618403494358062744140625,-0.9816271834476639757127713892259635031223297119140625,0.1908089953765449708900092673502513207495212554931640625,-0.98480775301220802031565426659653894603252410888671875,0.1736481776669302756754831307262065820395946502685546875, + -0.98768834059513765932791784507571719586849212646484375,0.1564344650402309799819278168797609396278858184814453125,-0.9902680687415703619791429446195252239704132080078125,0.1391731009600653268254433214679011143743991851806640625,-0.99254615164132198312785249072476290166378021240234375,0.12186934340514754548934206468402408063411712646484375, + -0.9945218953682732898613494398887269198894500732421875,0.10452846326765373452527541076051420532166957855224609375,-0.9961946980917455451987052583717741072177886962890625,0.087155742747658193625426292783231474459171295166015625,-0.9975640502598241976528470331686548888683319091796875,0.06975647374412552448319502218510024249553680419921875, + -0.99862953475457383323288240717374719679355621337890625,0.05233595624294380688201755447153118439018726348876953125,-0.99939082701909576211818375668372027575969696044921875,0.034899496702501142664232247625477612018585205078125,-0.9998476951563912695775115935248322784900665283203125,0.0174524064372834387948163481496521853841841220855712890625, + -1,0.000000000000000122464679914735320717376402945839660462569212467758006379625612680683843791484832763671875,-0.9998476951563912695775115935248322784900665283203125,-0.017452406437283636553292609505660948343575000762939453125,-0.99939082701909576211818375668372027575969696044921875,-0.034899496702500899802945610872484394349157810211181640625, + -0.99862953475457383323288240717374719679355621337890625,-0.05233595624294355708183701381130958907306194305419921875,-0.9975640502598241976528470331686548888683319091796875,-0.0697564737441252746830144815248786471784114837646484375,-0.9961946980917455451987052583717741072177886962890625,-0.0871557427476579438252457521230098791420459747314453125, + -0.9945218953682732898613494398887269198894500732421875,-0.1045284632676534986028826779147493652999401092529296875,-0.992546151641322094150154953240416944026947021484375,-0.12186934340514730956694933183825924061238765716552734375,-0.99026806874157025095684048210387118160724639892578125,-0.13917310096006552111447263087029568850994110107421875, + -0.987688340595137770350220307591371238231658935546875,-0.156434465040230730181747276219539344310760498046875,-0.98480775301220802031565426659653894603252410888671875,-0.173648177666930469964512440128601156175136566162109375,-0.9816271834476639757127713892259635031223297119140625,-0.19080899537654472108982872669002972543239593505859375, + -0.97814760073380557781064226219314150512218475341796875,-0.20791169081775950910895289780455641448497772216796875,-0.97437006478523524588553073044749908149242401123046875,-0.22495105434386497567089691074215807020664215087890625,-0.97029572627599647294260876151383854448795318603515625,-0.2419218955996675080033497806653031148016452789306640625, + -0.96592582628906831221371476203785277903079986572265625,-0.258819045102520794987555063926265574991703033447265625,-0.9612616959383188941501430235803127288818359375,-0.27563735581699899679364307303330861032009124755859375,-0.95630475596303543550646963922190479934215545654296875,-0.292371704722736769355151409399695694446563720703125, + -0.951056516295153642204240895807743072509765625,-0.309016994374947284729415741821867413818836212158203125,-0.9455185755993167351363126726937480270862579345703125,-0.325568154457156755388069768741843290627002716064453125,-0.939692620785908427905042117345146834850311279296875,-0.3420201433256686573969318487797863781452178955078125, + -0.93358042649720174299687869279296137392520904541015625,-0.358367949545300434888162044444470666348934173583984375,-0.92718385456678742428948680753819644451141357421875,-0.374606593415912014766178117497474886476993560791015625,-0.92050485345244037471701403774204663932323455810546875,-0.390731128489273549231342030907399021089076995849609375, + -0.91354545764260086659902526662335731089115142822265625,-0.406736643075800208269043878317461349070072174072265625,-0.90630778703665004769618462887592613697052001953125,-0.42261826174069927475329677690751850605010986328125,-0.89879404629916692659463706149836070835590362548828125,-0.438371146789077459349215359907248057425022125244140625, + -0.89100652418836789880884907688596285879611968994140625,-0.453990499739546693458436266155331395566463470458984375,-0.88294759285892687739050188611145131289958953857421875,-0.46947156278589086131347585251205600798130035400390625,-0.87461970713939585220231265338952653110027313232421875,-0.484809620246336947513299264755914919078350067138671875, + -0.8660254037844385965883020617184229195117950439453125,-0.50000000000000011102230246251565404236316680908203125,-0.8571673007021123336102164103067480027675628662109375,-0.51503807491005415553075863499543629586696624755859375,-0.8480480961564260677931770260329358279705047607421875,-0.52991926423320478978240544165601022541522979736328125, + -0.838670567945424050293468098971061408519744873046875,-0.54463903501502708426329490976058878004550933837890625,-0.8290375725550418462006518893758766353130340576171875,-0.55919290347074668279248044200357981026172637939453125,-0.81915204428899179855960710483486764132976531982421875,-0.57357643635104615942310601894860155880451202392578125, + -0.80901699437494756228517189811100251972675323486328125,-0.58778525229247302608115433031343854963779449462890625,-0.798635510047292829227671973058022558689117431640625,-0.60181502315204837838535922855953685939311981201171875,-0.7880107536067220141973166391835547983646392822265625,-0.61566147532565818067951113334856927394866943359375, + -0.77714596145697079077052649154211394488811492919921875,-0.62932039104983761301781441943603567779064178466796875,-0.76604444311897801345168090847437269985675811767578125,-0.642787609686539251896419955301098525524139404296875,-0.75470958022277212506878640851937234401702880859375,-0.6560590289905070537912479267106391489505767822265625, + -0.7431448254773942441175904605188407003879547119140625,-0.66913060635885823757007528911344707012176513671875,-0.73135370161917057085787519099540077149868011474609375,-0.6819983600624983655080768585321493446826934814453125,-0.71933980033865108083546147099696099758148193359375,-0.69465837045899736512666322596487589180469512939453125, + -0.7071067811865476837596133918850682675838470458984375,-0.707106781186547461715008466853760182857513427734375,-0.6946583704589972541043607634492218494415283203125,-0.71933980033865119185776393351261503994464874267578125,-0.681998360062498587552681783563457429409027099609375,-0.7313537016191704598355727284797467291355133056640625, + -0.66913060635885812654777282659779302775859832763671875,-0.74314482547739435513989292303449474275112152099609375,-0.656059028990507275835852851741947233676910400390625,-0.75470958022277201404648394600371830165386199951171875,-0.6427876096865394739410248803324066102504730224609375,-0.76604444311897790242937844595871865749359130859375, + -0.62932039104983783506241934446734376251697540283203125,-0.77714596145697056872592156651080586016178131103515625,-0.61566147532565806965720867083291523158550262451171875,-0.78801075360672212521961910169920884072780609130859375,-0.6018150231520482673630567660438828170299530029296875,-0.798635510047292829227671973058022558689117431640625, + -0.58778525229247324812575925534474663436412811279296875,-0.80901699437494734024056697307969443500041961669921875,-0.57357643635104638146771094397990964353084564208984375,-0.81915204428899157651500217980355955660343170166015625,-0.5591929034707465717701779794879257678985595703125,-0.8290375725550418462006518893758766353130340576171875, + -0.544639035015026973240992447244934737682342529296875,-0.838670567945424050293468098971061408519744873046875,-0.52991926423320501182701036668731831014156341552734375,-0.84804809615642595677087456351728178560733795166015625,-0.5150380749100544885976660225423984229564666748046875,-0.857167300702112111565611485275439918041229248046875, + -0.500000000000000444089209850062616169452667236328125,-0.86602540378443837454369713668711483478546142578125,-0.484809620246336836490996802240260876715183258056640625,-0.87461970713939596322461511590518057346343994140625,-0.469471562785890750291173389996401965618133544921875,-0.88294759285892698841280434862710535526275634765625, + -0.453990499739546915503041191186639480292797088623046875,-0.891006524188367787786546614370308816432952880859375,-0.43837114678907773690497151619638316333293914794921875,-0.89879404629916681557233459898270666599273681640625,-0.42261826174069916373099431439186446368694305419921875,-0.90630778703665004769618462887592613697052001953125, + -0.406736643075800097246741415801807306706905364990234375,-0.9135454576426009776213277291390113532543182373046875,-0.3907311284892738267870981871965341269969940185546875,-0.9205048534524402636947115752263925969600677490234375,-0.37460659341591229232193427378660999238491058349609375,-0.92718385456678731326718434502254240214824676513671875, + -0.3583679495453007124439182007336057722568511962890625,-0.933580426497201631974576230277307331562042236328125,-0.34202014332566854637462938626413233578205108642578125,-0.939692620785908427905042117345146834850311279296875,-0.325568154457156644365767306226189248263835906982421875,-0.94551857559931684615861513520940206944942474365234375, + -0.30901699437494756228517189811100251972675323486328125,-0.95105651629515353118193843329208903014659881591796875,-0.29237170472273710242205879694665782153606414794921875,-0.9563047559630353244841671767062507569789886474609375,-0.2756373558169988857713406105176545679569244384765625,-0.96126169593831900517244548609596677124500274658203125, + -0.25881904510252062845410137015278451144695281982421875,-0.96592582628906831221371476203785277903079986572265625,-0.2419218955996677855591059369544382207095623016357421875,-0.97029572627599647294260876151383854448795318603515625,-0.224951054343865253226653067031293176114559173583984375,-0.9743700647852351348632282679318450391292572021484375, + -0.207911690817759786664709054093691520392894744873046875,-0.97814760073380557781064226219314150512218475341796875,-0.1908089953765446100675262641743756830692291259765625,-0.9816271834476639757127713892259635031223297119140625,-0.1736481776669303311866343619840336032211780548095703125,-0.98480775301220802031565426659653894603252410888671875, + -0.1564344650402310354930790481375879608094692230224609375,-0.98768834059513765932791784507571719586849212646484375,-0.1391731009600658264258044027883443050086498260498046875,-0.99026806874157025095684048210387118160724639892578125,-0.12186934340514717078907125369369168765842914581298828125,-0.992546151641322094150154953240416944026947021484375, + -0.104528463267653359825004599770181812345981597900390625,-0.99452189536827340088365190240438096225261688232421875,-0.08715574274765824913657752404105849564075469970703125,-0.9961946980917455451987052583717741072177886962890625,-0.069756473744125579994346253442927263677120208740234375,-0.9975640502598241976528470331686548888683319091796875, + -0.05233595624294430648237863579197437502443790435791015625,-0.99862953475457383323288240717374719679355621337890625,-0.034899496702500761025067532727916841395199298858642578125,-0.99939082701909576211818375668372027575969696044921875,-0.017452406437283497775414531361093395389616489410400390625,-0.9998476951563912695775115935248322784900665283203125, + -0.00000000000000018369701987210296875011296034045003113559498615810217092558787044254131615161895751953125,-1,0.017452406437283130014037624277989380061626434326171875,-0.9998476951563912695775115935248322784900665283203125,0.0348994967025012814421103257700451649725437164306640625,-0.99939082701909576211818375668372027575969696044921875, + 0.05233595624294394565989563261609873734414577484130859375,-0.99862953475457383323288240717374719679355621337890625,0.0697564737441252191718632502670516259968280792236328125,-0.99756405025982430867514949568430893123149871826171875,0.0871557427476578883140945208651828579604625701904296875,-0.9961946980917455451987052583717741072177886962890625, + 0.10452846326765298512473378877984941937029361724853515625,-0.99452189536827340088365190240438096225261688232421875,0.1218693434051476842672201428285916335880756378173828125,-0.99254615164132198312785249072476290166378021240234375,0.139173100960065465603321399612468667328357696533203125,-0.9902680687415703619791429446195252239704132080078125, + 0.156434465040230674670596044961712323129177093505859375,-0.987688340595137770350220307591371238231658935546875,0.17364817766692997036415135880815796554088592529296875,-0.98480775301220813133795672911219298839569091796875,0.190808995376545109667887345494818873703479766845703125,-0.98162718344766386469046892671030946075916290283203125, + 0.2079116908177594258422260509178158827126026153564453125,-0.97814760073380557781064226219314150512218475341796875,0.224951054343864920159745679484331049025058746337890625,-0.97437006478523524588553073044749908149242401123046875,0.2419218955996674524921985494074760936200618743896484375,-0.9702957262759965839649112240294925868511199951171875, + 0.258819045102520295387193982605822384357452392578125,-0.9659258262890684232360172245535068213939666748046875,0.275637355816999385371701691838097758591175079345703125,-0.96126169593831878312784056106465868651866912841796875,0.292371704722736713844000178141868673264980316162109375,-0.95630475596303543550646963922190479934215545654296875, + 0.3090169943749472292182645105640403926372528076171875,-0.951056516295153642204240895807743072509765625,0.325568154457156311298859918679227121174335479736328125,-0.945518575599316957180917597725056111812591552734375,0.34202014332566899046383923632674850523471832275390625,-0.93969262078590831688273965482949279248714447021484375, + 0.35836794954530037937701081318664364516735076904296875,-0.93358042649720174299687869279296137392520904541015625,0.37460659341591195925502688623964786529541015625,-0.92718385456678742428948680753819644451141357421875,0.39073112848927349372019079964957199990749359130859375,-0.9205048534524404857393165002577006816864013671875, + 0.406736643075799764179834028254845179617404937744140625,-0.91354545764260108864363019165466539561748504638671875,0.42261826174069960782020416445448063313961029052734375,-0.90630778703664993667388216636027209460735321044921875,0.438371146789077403838064128649421036243438720703125,-0.8987940462991670376169395240140147507190704345703125, + 0.45399049973954663794728503489750437438488006591796875,-0.89100652418836789880884907688596285879611968994140625,0.46947156278589041722426600244943983852863311767578125,-0.88294759285892709943510681114275939762592315673828125,0.484809620246337280580206652302877046167850494384765625,-0.87461970713939563015770772835821844637393951416015625, + 0.50000000000000011102230246251565404236316680908203125,-0.8660254037844385965883020617184229195117950439453125,0.51503807491005415553075863499543629586696624755859375,-0.8571673007021123336102164103067480027675628662109375,0.52991926423320467876010297914035618305206298828125,-0.84804809615642617881547948854858987033367156982421875, + 0.54463903501502664017408505969797261059284210205078125,-0.8386705679454242723380730240023694932460784912109375,0.559192903470747015859387829550541937351226806640625,-0.829037572555041624156046964344568550586700439453125,0.57357643635104604840080355643294751644134521484375,-0.81915204428899179855960710483486764132976531982421875, + 0.587785252292472915058851867797784507274627685546875,-0.80901699437494756228517189811100251972675323486328125,0.60181502315204793429614937849692068994045257568359375,-0.7986355100472930512722768980893306434154510498046875,0.61566147532565851374641852089553140103816986083984375,-0.7880107536067217921527117141522467136383056640625, + 0.6293203910498375019955119569203816354274749755859375,-0.77714596145697079077052649154211394488811492919921875,0.642787609686539251896419955301098525524139404296875,-0.7660444431189781244739833709900267422199249267578125,0.6560590289905070537912479267106391489505767822265625,-0.75470958022277223609108887103502638638019561767578125, + 0.669130606358857793480865439050830900669097900390625,-0.74314482547739457718449784806580282747745513916015625,0.681998360062498587552681783563457429409027099609375,-0.73135370161917034881327026596409268677234649658203125,0.6946583704589972541043607634492218494415283203125,-0.71933980033865119185776393351261503994464874267578125, + 0.70710678118654735069270600433810614049434661865234375,-0.7071067811865476837596133918850682675838470458984375,0.7193398003386508587908565459656529128551483154296875,-0.69465837045899758717126815099618397653102874755859375,0.731353701619170681880177653511054813861846923828125,-0.68199836006249825448577439601649530231952667236328125, + 0.7431448254773942441175904605188407003879547119140625,-0.66913060635885812654777282659779302775859832763671875,0.7547095802227719030241814834880642592906951904296875,-0.65605902899050738685815531425760127604007720947265625,0.76604444311897779140707598344306461513042449951171875,-0.64278760968653958496332734284806065261363983154296875, + 0.77714596145697056872592156651080586016178131103515625,-0.62932039104983783506241934446734376251697540283203125,0.7880107536067220141973166391835547983646392822265625,-0.61566147532565818067951113334856927394866943359375,0.798635510047292829227671973058022558689117431640625,-0.6018150231520482673630567660438828170299530029296875, + 0.80901699437494734024056697307969443500041961669921875,-0.587785252292473359148061717860400676727294921875,0.81915204428899157651500217980355955660343170166015625,-0.573576436351046492490013406495563685894012451171875,0.8290375725550418462006518893758766353130340576171875,-0.5591929034707465717701779794879257678985595703125, + 0.838670567945424050293468098971061408519744873046875,-0.544639035015026973240992447244934737682342529296875,0.84804809615642595677087456351728178560733795166015625,-0.52991926423320501182701036668731831014156341552734375,0.857167300702112111565611485275439918041229248046875,-0.5150380749100544885976660225423984229564666748046875, + 0.86602540378443837454369713668711483478546142578125,-0.500000000000000444089209850062616169452667236328125,0.87461970713939585220231265338952653110027313232421875,-0.48480962024633689200214803349808789789676666259765625,0.88294759285892687739050188611145131289958953857421875,-0.469471562785890805802324621254228986799716949462890625, + 0.891006524188367787786546614370308816432952880859375,-0.4539904997395469710141924224444665014743804931640625,0.89879404629916681557233459898270666599273681640625,-0.438371146789077792416122747454210184514522552490234375,0.90630778703665004769618462887592613697052001953125,-0.422618261740699219242145545649691484868526458740234375, + 0.9135454576426009776213277291390113532543182373046875,-0.40673664307580015275789264705963432788848876953125,0.9205048534524402636947115752263925969600677490234375,-0.390731128489273882298249418454361148178577423095703125,0.92718385456678731326718434502254240214824676513671875,-0.374606593415912347833085505044437013566493988037109375, + 0.93358042649720152095227376776165328919887542724609375,-0.358367949545300767955069431991432793438434600830078125,0.939692620785908427905042117345146834850311279296875,-0.342020143325668601885780617521959356963634490966796875,0.94551857559931684615861513520940206944942474365234375,-0.3255681544571566998769185374840162694454193115234375, + 0.95105651629515353118193843329208903014659881591796875,-0.309016994374947617796323129368829540908336639404296875,0.9563047559630353244841671767062507569789886474609375,-0.292371704722737157933210028204484842717647552490234375,0.9612616959383188941501430235803127288818359375,-0.275637355816998941282491841775481589138507843017578125, + 0.96592582628906831221371476203785277903079986572265625,-0.258819045102520683965252601410611532628536224365234375,0.97029572627599647294260876151383854448795318603515625,-0.241921895599667868825832783841178752481937408447265625,0.9743700647852351348632282679318450391292572021484375,-0.2249510543438653364933799139180337078869342803955078125, + 0.97814760073380557781064226219314150512218475341796875,-0.2079116908177598699314359009804320521652698516845703125,0.9816271834476639757127713892259635031223297119140625,-0.190808995376544665578677495432202704250812530517578125,0.98480775301220802031565426659653894603252410888671875,-0.1736481776669303866977855932418606244027614593505859375, + 0.98768834059513765932791784507571719586849212646484375,-0.156434465040231118759805895024328492581844329833984375,0.99026806874157025095684048210387118160724639892578125,-0.1391731009600658819369556340461713261902332305908203125,0.992546151641322094150154953240416944026947021484375,-0.12186934340514722630022248495151870884001255035400390625, + 0.9945218953682732898613494398887269198894500732421875,-0.10452846326765341533615583102800883352756500244140625,0.9961946980917455451987052583717741072177886962890625,-0.08715574274765831852551656311334227211773395538330078125,0.9975640502598241976528470331686548888683319091796875,-0.06975647374412563550549748470075428485870361328125, + 0.99862953475457383323288240717374719679355621337890625,-0.052335956242944368932423770957029773853719234466552734375,0.99939082701909576211818375668372027575969696044921875,-0.03489949670250082347511266789297224022448062896728515625,0.9998476951563912695775115935248322784900665283203125,-0.01745240643728356022545966652614879421889781951904296875}; + private static double sc256(int x, int z, double r, NoiseProvider n) { + return (n.noise(x + ((r * F256A[0]) - (r * F256A[1])), z + ((r * F256A[1]) + (r * F256A[0]))) + +n.noise(x + ((r * F256A[2]) - (r * F256A[3])), z + ((r * F256A[3]) + (r * F256A[2]))) + +n.noise(x + ((r * F256A[4]) - (r * F256A[5])), z + ((r * F256A[5]) + (r * F256A[4]))) + +n.noise(x + ((r * F256A[6]) - (r * F256A[7])), z + ((r * F256A[7]) + (r * F256A[6]))) + +n.noise(x + ((r * F256A[8]) - (r * F256A[9])), z + ((r * F256A[9]) + (r * F256A[8]))) + +n.noise(x + ((r * F256A[10]) - (r * F256A[11])), z + ((r * F256A[11]) + (r * F256A[10]))) + +n.noise(x + ((r * F256A[12]) - (r * F256A[13])), z + ((r * F256A[13]) + (r * F256A[12]))) + +n.noise(x + ((r * F256A[14]) - (r * F256A[15])), z + ((r * F256A[15]) + (r * F256A[14]))) + +n.noise(x + ((r * F256A[16]) - (r * F256A[17])), z + ((r * F256A[17]) + (r * F256A[16]))) + +n.noise(x + ((r * F256A[18]) - (r * F256A[19])), z + ((r * F256A[19]) + (r * F256A[18]))) + +n.noise(x + ((r * F256A[20]) - (r * F256A[21])), z + ((r * F256A[21]) + (r * F256A[20]))) + +n.noise(x + ((r * F256A[22]) - (r * F256A[23])), z + ((r * F256A[23]) + (r * F256A[22]))) + +n.noise(x + ((r * F256A[24]) - (r * F256A[25])), z + ((r * F256A[25]) + (r * F256A[24]))) + +n.noise(x + ((r * F256A[26]) - (r * F256A[27])), z + ((r * F256A[27]) + (r * F256A[26]))) + +n.noise(x + ((r * F256A[28]) - (r * F256A[29])), z + ((r * F256A[29]) + (r * F256A[28]))) + +n.noise(x + ((r * F256A[30]) - (r * F256A[31])), z + ((r * F256A[31]) + (r * F256A[30]))) + +n.noise(x + ((r * F256A[32]) - (r * F256A[33])), z + ((r * F256A[33]) + (r * F256A[32]))) + +n.noise(x + ((r * F256A[34]) - (r * F256A[35])), z + ((r * F256A[35]) + (r * F256A[34]))) + +n.noise(x + ((r * F256A[36]) - (r * F256A[37])), z + ((r * F256A[37]) + (r * F256A[36]))) + +n.noise(x + ((r * F256A[38]) - (r * F256A[39])), z + ((r * F256A[39]) + (r * F256A[38]))) + +n.noise(x + ((r * F256A[40]) - (r * F256A[41])), z + ((r * F256A[41]) + (r * F256A[40]))) + +n.noise(x + ((r * F256A[42]) - (r * F256A[43])), z + ((r * F256A[43]) + (r * F256A[42]))) + +n.noise(x + ((r * F256A[44]) - (r * F256A[45])), z + ((r * F256A[45]) + (r * F256A[44]))) + +n.noise(x + ((r * F256A[46]) - (r * F256A[47])), z + ((r * F256A[47]) + (r * F256A[46]))) + +n.noise(x + ((r * F256A[48]) - (r * F256A[49])), z + ((r * F256A[49]) + (r * F256A[48]))) + +n.noise(x + ((r * F256A[50]) - (r * F256A[51])), z + ((r * F256A[51]) + (r * F256A[50]))) + +n.noise(x + ((r * F256A[52]) - (r * F256A[53])), z + ((r * F256A[53]) + (r * F256A[52]))) + +n.noise(x + ((r * F256A[54]) - (r * F256A[55])), z + ((r * F256A[55]) + (r * F256A[54]))) + +n.noise(x + ((r * F256A[56]) - (r * F256A[57])), z + ((r * F256A[57]) + (r * F256A[56]))) + +n.noise(x + ((r * F256A[58]) - (r * F256A[59])), z + ((r * F256A[59]) + (r * F256A[58]))) + +n.noise(x + ((r * F256A[60]) - (r * F256A[61])), z + ((r * F256A[61]) + (r * F256A[60]))) + +n.noise(x + ((r * F256A[62]) - (r * F256A[63])), z + ((r * F256A[63]) + (r * F256A[62]))) + +n.noise(x + ((r * F256A[64]) - (r * F256A[65])), z + ((r * F256A[65]) + (r * F256A[64]))) + +n.noise(x + ((r * F256A[66]) - (r * F256A[67])), z + ((r * F256A[67]) + (r * F256A[66]))) + +n.noise(x + ((r * F256A[68]) - (r * F256A[69])), z + ((r * F256A[69]) + (r * F256A[68]))) + +n.noise(x + ((r * F256A[70]) - (r * F256A[71])), z + ((r * F256A[71]) + (r * F256A[70]))) + +n.noise(x + ((r * F256A[72]) - (r * F256A[73])), z + ((r * F256A[73]) + (r * F256A[72]))) + +n.noise(x + ((r * F256A[74]) - (r * F256A[75])), z + ((r * F256A[75]) + (r * F256A[74]))) + +n.noise(x + ((r * F256A[76]) - (r * F256A[77])), z + ((r * F256A[77]) + (r * F256A[76]))) + +n.noise(x + ((r * F256A[78]) - (r * F256A[79])), z + ((r * F256A[79]) + (r * F256A[78]))) + +n.noise(x + ((r * F256A[80]) - (r * F256A[81])), z + ((r * F256A[81]) + (r * F256A[80]))) + +n.noise(x + ((r * F256A[82]) - (r * F256A[83])), z + ((r * F256A[83]) + (r * F256A[82]))) + +n.noise(x + ((r * F256A[84]) - (r * F256A[85])), z + ((r * F256A[85]) + (r * F256A[84]))) + +n.noise(x + ((r * F256A[86]) - (r * F256A[87])), z + ((r * F256A[87]) + (r * F256A[86]))) + +n.noise(x + ((r * F256A[88]) - (r * F256A[89])), z + ((r * F256A[89]) + (r * F256A[88]))) + +n.noise(x + ((r * F256A[90]) - (r * F256A[91])), z + ((r * F256A[91]) + (r * F256A[90]))) + +n.noise(x + ((r * F256A[92]) - (r * F256A[93])), z + ((r * F256A[93]) + (r * F256A[92]))) + +n.noise(x + ((r * F256A[94]) - (r * F256A[95])), z + ((r * F256A[95]) + (r * F256A[94]))) + +n.noise(x + ((r * F256A[96]) - (r * F256A[97])), z + ((r * F256A[97]) + (r * F256A[96]))) + +n.noise(x + ((r * F256A[98]) - (r * F256A[99])), z + ((r * F256A[99]) + (r * F256A[98]))) + +n.noise(x + ((r * F256A[100]) - (r * F256A[101])), z + ((r * F256A[101]) + (r * F256A[100]))) + +n.noise(x + ((r * F256A[102]) - (r * F256A[103])), z + ((r * F256A[103]) + (r * F256A[102]))) + +n.noise(x + ((r * F256A[104]) - (r * F256A[105])), z + ((r * F256A[105]) + (r * F256A[104]))) + +n.noise(x + ((r * F256A[106]) - (r * F256A[107])), z + ((r * F256A[107]) + (r * F256A[106]))) + +n.noise(x + ((r * F256A[108]) - (r * F256A[109])), z + ((r * F256A[109]) + (r * F256A[108]))) + +n.noise(x + ((r * F256A[110]) - (r * F256A[111])), z + ((r * F256A[111]) + (r * F256A[110]))) + +n.noise(x + ((r * F256A[112]) - (r * F256A[113])), z + ((r * F256A[113]) + (r * F256A[112]))) + +n.noise(x + ((r * F256A[114]) - (r * F256A[115])), z + ((r * F256A[115]) + (r * F256A[114]))) + +n.noise(x + ((r * F256A[116]) - (r * F256A[117])), z + ((r * F256A[117]) + (r * F256A[116]))) + +n.noise(x + ((r * F256A[118]) - (r * F256A[119])), z + ((r * F256A[119]) + (r * F256A[118]))) + +n.noise(x + ((r * F256A[120]) - (r * F256A[121])), z + ((r * F256A[121]) + (r * F256A[120]))) + +n.noise(x + ((r * F256A[122]) - (r * F256A[123])), z + ((r * F256A[123]) + (r * F256A[122]))) + +n.noise(x + ((r * F256A[124]) - (r * F256A[125])), z + ((r * F256A[125]) + (r * F256A[124]))) + +n.noise(x + ((r * F256A[126]) - (r * F256A[127])), z + ((r * F256A[127]) + (r * F256A[126]))) + +n.noise(x + ((r * F256A[128]) - (r * F256A[129])), z + ((r * F256A[129]) + (r * F256A[128]))) + +n.noise(x + ((r * F256A[130]) - (r * F256A[131])), z + ((r * F256A[131]) + (r * F256A[130]))) + +n.noise(x + ((r * F256A[132]) - (r * F256A[133])), z + ((r * F256A[133]) + (r * F256A[132]))) + +n.noise(x + ((r * F256A[134]) - (r * F256A[135])), z + ((r * F256A[135]) + (r * F256A[134]))) + +n.noise(x + ((r * F256A[136]) - (r * F256A[137])), z + ((r * F256A[137]) + (r * F256A[136]))) + +n.noise(x + ((r * F256A[138]) - (r * F256A[139])), z + ((r * F256A[139]) + (r * F256A[138]))) + +n.noise(x + ((r * F256A[140]) - (r * F256A[141])), z + ((r * F256A[141]) + (r * F256A[140]))) + +n.noise(x + ((r * F256A[142]) - (r * F256A[143])), z + ((r * F256A[143]) + (r * F256A[142]))) + +n.noise(x + ((r * F256A[144]) - (r * F256A[145])), z + ((r * F256A[145]) + (r * F256A[144]))) + +n.noise(x + ((r * F256A[146]) - (r * F256A[147])), z + ((r * F256A[147]) + (r * F256A[146]))) + +n.noise(x + ((r * F256A[148]) - (r * F256A[149])), z + ((r * F256A[149]) + (r * F256A[148]))) + +n.noise(x + ((r * F256A[150]) - (r * F256A[151])), z + ((r * F256A[151]) + (r * F256A[150]))) + +n.noise(x + ((r * F256A[152]) - (r * F256A[153])), z + ((r * F256A[153]) + (r * F256A[152]))) + +n.noise(x + ((r * F256A[154]) - (r * F256A[155])), z + ((r * F256A[155]) + (r * F256A[154]))) + +n.noise(x + ((r * F256A[156]) - (r * F256A[157])), z + ((r * F256A[157]) + (r * F256A[156]))) + +n.noise(x + ((r * F256A[158]) - (r * F256A[159])), z + ((r * F256A[159]) + (r * F256A[158]))) + +n.noise(x + ((r * F256A[160]) - (r * F256A[161])), z + ((r * F256A[161]) + (r * F256A[160]))) + +n.noise(x + ((r * F256A[162]) - (r * F256A[163])), z + ((r * F256A[163]) + (r * F256A[162]))) + +n.noise(x + ((r * F256A[164]) - (r * F256A[165])), z + ((r * F256A[165]) + (r * F256A[164]))) + +n.noise(x + ((r * F256A[166]) - (r * F256A[167])), z + ((r * F256A[167]) + (r * F256A[166]))) + +n.noise(x + ((r * F256A[168]) - (r * F256A[169])), z + ((r * F256A[169]) + (r * F256A[168]))) + +n.noise(x + ((r * F256A[170]) - (r * F256A[171])), z + ((r * F256A[171]) + (r * F256A[170]))) + +n.noise(x + ((r * F256A[172]) - (r * F256A[173])), z + ((r * F256A[173]) + (r * F256A[172]))) + +n.noise(x + ((r * F256A[174]) - (r * F256A[175])), z + ((r * F256A[175]) + (r * F256A[174]))) + +n.noise(x + ((r * F256A[176]) - (r * F256A[177])), z + ((r * F256A[177]) + (r * F256A[176]))) + +n.noise(x + ((r * F256A[178]) - (r * F256A[179])), z + ((r * F256A[179]) + (r * F256A[178]))) + +n.noise(x + ((r * F256A[180]) - (r * F256A[181])), z + ((r * F256A[181]) + (r * F256A[180]))) + +n.noise(x + ((r * F256A[182]) - (r * F256A[183])), z + ((r * F256A[183]) + (r * F256A[182]))) + +n.noise(x + ((r * F256A[184]) - (r * F256A[185])), z + ((r * F256A[185]) + (r * F256A[184]))) + +n.noise(x + ((r * F256A[186]) - (r * F256A[187])), z + ((r * F256A[187]) + (r * F256A[186]))) + +n.noise(x + ((r * F256A[188]) - (r * F256A[189])), z + ((r * F256A[189]) + (r * F256A[188]))) + +n.noise(x + ((r * F256A[190]) - (r * F256A[191])), z + ((r * F256A[191]) + (r * F256A[190]))) + +n.noise(x + ((r * F256A[192]) - (r * F256A[193])), z + ((r * F256A[193]) + (r * F256A[192]))) + +n.noise(x + ((r * F256A[194]) - (r * F256A[195])), z + ((r * F256A[195]) + (r * F256A[194]))) + +n.noise(x + ((r * F256A[196]) - (r * F256A[197])), z + ((r * F256A[197]) + (r * F256A[196]))) + +n.noise(x + ((r * F256A[198]) - (r * F256A[199])), z + ((r * F256A[199]) + (r * F256A[198]))) + +n.noise(x + ((r * F256A[200]) - (r * F256A[201])), z + ((r * F256A[201]) + (r * F256A[200]))) + +n.noise(x + ((r * F256A[202]) - (r * F256A[203])), z + ((r * F256A[203]) + (r * F256A[202]))) + +n.noise(x + ((r * F256A[204]) - (r * F256A[205])), z + ((r * F256A[205]) + (r * F256A[204]))) + +n.noise(x + ((r * F256A[206]) - (r * F256A[207])), z + ((r * F256A[207]) + (r * F256A[206]))) + +n.noise(x + ((r * F256A[208]) - (r * F256A[209])), z + ((r * F256A[209]) + (r * F256A[208]))) + +n.noise(x + ((r * F256A[210]) - (r * F256A[211])), z + ((r * F256A[211]) + (r * F256A[210]))) + +n.noise(x + ((r * F256A[212]) - (r * F256A[213])), z + ((r * F256A[213]) + (r * F256A[212]))) + +n.noise(x + ((r * F256A[214]) - (r * F256A[215])), z + ((r * F256A[215]) + (r * F256A[214]))) + +n.noise(x + ((r * F256A[216]) - (r * F256A[217])), z + ((r * F256A[217]) + (r * F256A[216]))) + +n.noise(x + ((r * F256A[218]) - (r * F256A[219])), z + ((r * F256A[219]) + (r * F256A[218]))) + +n.noise(x + ((r * F256A[220]) - (r * F256A[221])), z + ((r * F256A[221]) + (r * F256A[220]))) + +n.noise(x + ((r * F256A[222]) - (r * F256A[223])), z + ((r * F256A[223]) + (r * F256A[222]))) + +n.noise(x + ((r * F256A[224]) - (r * F256A[225])), z + ((r * F256A[225]) + (r * F256A[224]))) + +n.noise(x + ((r * F256A[226]) - (r * F256A[227])), z + ((r * F256A[227]) + (r * F256A[226]))) + +n.noise(x + ((r * F256A[228]) - (r * F256A[229])), z + ((r * F256A[229]) + (r * F256A[228]))) + +n.noise(x + ((r * F256A[230]) - (r * F256A[231])), z + ((r * F256A[231]) + (r * F256A[230]))) + +n.noise(x + ((r * F256A[232]) - (r * F256A[233])), z + ((r * F256A[233]) + (r * F256A[232]))) + +n.noise(x + ((r * F256A[234]) - (r * F256A[235])), z + ((r * F256A[235]) + (r * F256A[234]))) + +n.noise(x + ((r * F256A[236]) - (r * F256A[237])), z + ((r * F256A[237]) + (r * F256A[236]))) + +n.noise(x + ((r * F256A[238]) - (r * F256A[239])), z + ((r * F256A[239]) + (r * F256A[238]))) + +n.noise(x + ((r * F256A[240]) - (r * F256A[241])), z + ((r * F256A[241]) + (r * F256A[240]))) + +n.noise(x + ((r * F256A[242]) - (r * F256A[243])), z + ((r * F256A[243]) + (r * F256A[242]))) + +n.noise(x + ((r * F256A[244]) - (r * F256A[245])), z + ((r * F256A[245]) + (r * F256A[244]))) + +n.noise(x + ((r * F256A[246]) - (r * F256A[247])), z + ((r * F256A[247]) + (r * F256A[246]))) + +n.noise(x + ((r * F256A[248]) - (r * F256A[249])), z + ((r * F256A[249]) + (r * F256A[248]))) + +n.noise(x + ((r * F256A[250]) - (r * F256A[251])), z + ((r * F256A[251]) + (r * F256A[250]))) + +n.noise(x + ((r * F256A[252]) - (r * F256A[253])), z + ((r * F256A[253]) + (r * F256A[252]))) + +n.noise(x + ((r * F256A[254]) - (r * F256A[255])), z + ((r * F256A[255]) + (r * F256A[254]))) + +n.noise(x + ((r * F256A[256]) - (r * F256A[257])), z + ((r * F256A[257]) + (r * F256A[256]))) + +n.noise(x + ((r * F256A[258]) - (r * F256A[259])), z + ((r * F256A[259]) + (r * F256A[258]))) + +n.noise(x + ((r * F256A[260]) - (r * F256A[261])), z + ((r * F256A[261]) + (r * F256A[260]))) + +n.noise(x + ((r * F256A[262]) - (r * F256A[263])), z + ((r * F256A[263]) + (r * F256A[262]))) + +n.noise(x + ((r * F256A[264]) - (r * F256A[265])), z + ((r * F256A[265]) + (r * F256A[264]))) + +n.noise(x + ((r * F256A[266]) - (r * F256A[267])), z + ((r * F256A[267]) + (r * F256A[266]))) + +n.noise(x + ((r * F256A[268]) - (r * F256A[269])), z + ((r * F256A[269]) + (r * F256A[268]))) + +n.noise(x + ((r * F256A[270]) - (r * F256A[271])), z + ((r * F256A[271]) + (r * F256A[270]))) + +n.noise(x + ((r * F256A[272]) - (r * F256A[273])), z + ((r * F256A[273]) + (r * F256A[272]))) + +n.noise(x + ((r * F256A[274]) - (r * F256A[275])), z + ((r * F256A[275]) + (r * F256A[274]))) + +n.noise(x + ((r * F256A[276]) - (r * F256A[277])), z + ((r * F256A[277]) + (r * F256A[276]))) + +n.noise(x + ((r * F256A[278]) - (r * F256A[279])), z + ((r * F256A[279]) + (r * F256A[278]))) + +n.noise(x + ((r * F256A[280]) - (r * F256A[281])), z + ((r * F256A[281]) + (r * F256A[280]))) + +n.noise(x + ((r * F256A[282]) - (r * F256A[283])), z + ((r * F256A[283]) + (r * F256A[282]))) + +n.noise(x + ((r * F256A[284]) - (r * F256A[285])), z + ((r * F256A[285]) + (r * F256A[284]))) + +n.noise(x + ((r * F256A[286]) - (r * F256A[287])), z + ((r * F256A[287]) + (r * F256A[286]))) + +n.noise(x + ((r * F256A[288]) - (r * F256A[289])), z + ((r * F256A[289]) + (r * F256A[288]))) + +n.noise(x + ((r * F256A[290]) - (r * F256A[291])), z + ((r * F256A[291]) + (r * F256A[290]))) + +n.noise(x + ((r * F256A[292]) - (r * F256A[293])), z + ((r * F256A[293]) + (r * F256A[292]))) + +n.noise(x + ((r * F256A[294]) - (r * F256A[295])), z + ((r * F256A[295]) + (r * F256A[294]))) + +n.noise(x + ((r * F256A[296]) - (r * F256A[297])), z + ((r * F256A[297]) + (r * F256A[296]))) + +n.noise(x + ((r * F256A[298]) - (r * F256A[299])), z + ((r * F256A[299]) + (r * F256A[298]))) + +n.noise(x + ((r * F256A[300]) - (r * F256A[301])), z + ((r * F256A[301]) + (r * F256A[300]))) + +n.noise(x + ((r * F256A[302]) - (r * F256A[303])), z + ((r * F256A[303]) + (r * F256A[302]))) + +n.noise(x + ((r * F256A[304]) - (r * F256A[305])), z + ((r * F256A[305]) + (r * F256A[304]))) + +n.noise(x + ((r * F256A[306]) - (r * F256A[307])), z + ((r * F256A[307]) + (r * F256A[306]))) + +n.noise(x + ((r * F256A[308]) - (r * F256A[309])), z + ((r * F256A[309]) + (r * F256A[308]))) + +n.noise(x + ((r * F256A[310]) - (r * F256A[311])), z + ((r * F256A[311]) + (r * F256A[310]))) + +n.noise(x + ((r * F256A[312]) - (r * F256A[313])), z + ((r * F256A[313]) + (r * F256A[312]))) + +n.noise(x + ((r * F256A[314]) - (r * F256A[315])), z + ((r * F256A[315]) + (r * F256A[314]))) + +n.noise(x + ((r * F256A[316]) - (r * F256A[317])), z + ((r * F256A[317]) + (r * F256A[316]))) + +n.noise(x + ((r * F256A[318]) - (r * F256A[319])), z + ((r * F256A[319]) + (r * F256A[318]))) + +n.noise(x + ((r * F256A[320]) - (r * F256A[321])), z + ((r * F256A[321]) + (r * F256A[320]))) + +n.noise(x + ((r * F256A[322]) - (r * F256A[323])), z + ((r * F256A[323]) + (r * F256A[322]))) + +n.noise(x + ((r * F256A[324]) - (r * F256A[325])), z + ((r * F256A[325]) + (r * F256A[324]))) + +n.noise(x + ((r * F256A[326]) - (r * F256A[327])), z + ((r * F256A[327]) + (r * F256A[326]))) + +n.noise(x + ((r * F256A[328]) - (r * F256A[329])), z + ((r * F256A[329]) + (r * F256A[328]))) + +n.noise(x + ((r * F256A[330]) - (r * F256A[331])), z + ((r * F256A[331]) + (r * F256A[330]))) + +n.noise(x + ((r * F256A[332]) - (r * F256A[333])), z + ((r * F256A[333]) + (r * F256A[332]))) + +n.noise(x + ((r * F256A[334]) - (r * F256A[335])), z + ((r * F256A[335]) + (r * F256A[334]))) + +n.noise(x + ((r * F256A[336]) - (r * F256A[337])), z + ((r * F256A[337]) + (r * F256A[336]))) + +n.noise(x + ((r * F256A[338]) - (r * F256A[339])), z + ((r * F256A[339]) + (r * F256A[338]))) + +n.noise(x + ((r * F256A[340]) - (r * F256A[341])), z + ((r * F256A[341]) + (r * F256A[340]))) + +n.noise(x + ((r * F256A[342]) - (r * F256A[343])), z + ((r * F256A[343]) + (r * F256A[342]))) + +n.noise(x + ((r * F256A[344]) - (r * F256A[345])), z + ((r * F256A[345]) + (r * F256A[344]))) + +n.noise(x + ((r * F256A[346]) - (r * F256A[347])), z + ((r * F256A[347]) + (r * F256A[346]))) + +n.noise(x + ((r * F256A[348]) - (r * F256A[349])), z + ((r * F256A[349]) + (r * F256A[348]))) + +n.noise(x + ((r * F256A[350]) - (r * F256A[351])), z + ((r * F256A[351]) + (r * F256A[350]))) + +n.noise(x + ((r * F256A[352]) - (r * F256A[353])), z + ((r * F256A[353]) + (r * F256A[352]))) + +n.noise(x + ((r * F256A[354]) - (r * F256A[355])), z + ((r * F256A[355]) + (r * F256A[354]))) + +n.noise(x + ((r * F256A[356]) - (r * F256A[357])), z + ((r * F256A[357]) + (r * F256A[356]))) + +n.noise(x + ((r * F256A[358]) - (r * F256A[359])), z + ((r * F256A[359]) + (r * F256A[358]))) + +n.noise(x + ((r * F256A[360]) - (r * F256A[361])), z + ((r * F256A[361]) + (r * F256A[360]))) + +n.noise(x + ((r * F256A[362]) - (r * F256A[363])), z + ((r * F256A[363]) + (r * F256A[362]))) + +n.noise(x + ((r * F256A[364]) - (r * F256A[365])), z + ((r * F256A[365]) + (r * F256A[364]))) + +n.noise(x + ((r * F256A[366]) - (r * F256A[367])), z + ((r * F256A[367]) + (r * F256A[366]))) + +n.noise(x + ((r * F256A[368]) - (r * F256A[369])), z + ((r * F256A[369]) + (r * F256A[368]))) + +n.noise(x + ((r * F256A[370]) - (r * F256A[371])), z + ((r * F256A[371]) + (r * F256A[370]))) + +n.noise(x + ((r * F256A[372]) - (r * F256A[373])), z + ((r * F256A[373]) + (r * F256A[372]))) + +n.noise(x + ((r * F256A[374]) - (r * F256A[375])), z + ((r * F256A[375]) + (r * F256A[374]))) + +n.noise(x + ((r * F256A[376]) - (r * F256A[377])), z + ((r * F256A[377]) + (r * F256A[376]))) + +n.noise(x + ((r * F256A[378]) - (r * F256A[379])), z + ((r * F256A[379]) + (r * F256A[378]))) + +n.noise(x + ((r * F256A[380]) - (r * F256A[381])), z + ((r * F256A[381]) + (r * F256A[380]))) + +n.noise(x + ((r * F256A[382]) - (r * F256A[383])), z + ((r * F256A[383]) + (r * F256A[382]))) + +n.noise(x + ((r * F256A[384]) - (r * F256A[385])), z + ((r * F256A[385]) + (r * F256A[384]))) + +n.noise(x + ((r * F256A[386]) - (r * F256A[387])), z + ((r * F256A[387]) + (r * F256A[386]))) + +n.noise(x + ((r * F256A[388]) - (r * F256A[389])), z + ((r * F256A[389]) + (r * F256A[388]))) + +n.noise(x + ((r * F256A[390]) - (r * F256A[391])), z + ((r * F256A[391]) + (r * F256A[390]))) + +n.noise(x + ((r * F256A[392]) - (r * F256A[393])), z + ((r * F256A[393]) + (r * F256A[392]))) + +n.noise(x + ((r * F256A[394]) - (r * F256A[395])), z + ((r * F256A[395]) + (r * F256A[394]))) + +n.noise(x + ((r * F256A[396]) - (r * F256A[397])), z + ((r * F256A[397]) + (r * F256A[396]))) + +n.noise(x + ((r * F256A[398]) - (r * F256A[399])), z + ((r * F256A[399]) + (r * F256A[398]))) + +n.noise(x + ((r * F256A[400]) - (r * F256A[401])), z + ((r * F256A[401]) + (r * F256A[400]))) + +n.noise(x + ((r * F256A[402]) - (r * F256A[403])), z + ((r * F256A[403]) + (r * F256A[402]))) + +n.noise(x + ((r * F256A[404]) - (r * F256A[405])), z + ((r * F256A[405]) + (r * F256A[404]))) + +n.noise(x + ((r * F256A[406]) - (r * F256A[407])), z + ((r * F256A[407]) + (r * F256A[406]))) + +n.noise(x + ((r * F256A[408]) - (r * F256A[409])), z + ((r * F256A[409]) + (r * F256A[408]))) + +n.noise(x + ((r * F256A[410]) - (r * F256A[411])), z + ((r * F256A[411]) + (r * F256A[410]))) + +n.noise(x + ((r * F256A[412]) - (r * F256A[413])), z + ((r * F256A[413]) + (r * F256A[412]))) + +n.noise(x + ((r * F256A[414]) - (r * F256A[415])), z + ((r * F256A[415]) + (r * F256A[414]))) + +n.noise(x + ((r * F256A[416]) - (r * F256A[417])), z + ((r * F256A[417]) + (r * F256A[416]))) + +n.noise(x + ((r * F256A[418]) - (r * F256A[419])), z + ((r * F256A[419]) + (r * F256A[418]))) + +n.noise(x + ((r * F256A[420]) - (r * F256A[421])), z + ((r * F256A[421]) + (r * F256A[420]))) + +n.noise(x + ((r * F256A[422]) - (r * F256A[423])), z + ((r * F256A[423]) + (r * F256A[422]))) + +n.noise(x + ((r * F256A[424]) - (r * F256A[425])), z + ((r * F256A[425]) + (r * F256A[424]))) + +n.noise(x + ((r * F256A[426]) - (r * F256A[427])), z + ((r * F256A[427]) + (r * F256A[426]))) + +n.noise(x + ((r * F256A[428]) - (r * F256A[429])), z + ((r * F256A[429]) + (r * F256A[428]))) + +n.noise(x + ((r * F256A[430]) - (r * F256A[431])), z + ((r * F256A[431]) + (r * F256A[430]))) + +n.noise(x + ((r * F256A[432]) - (r * F256A[433])), z + ((r * F256A[433]) + (r * F256A[432]))) + +n.noise(x + ((r * F256A[434]) - (r * F256A[435])), z + ((r * F256A[435]) + (r * F256A[434]))) + +n.noise(x + ((r * F256A[436]) - (r * F256A[437])), z + ((r * F256A[437]) + (r * F256A[436]))) + +n.noise(x + ((r * F256A[438]) - (r * F256A[439])), z + ((r * F256A[439]) + (r * F256A[438]))) + +n.noise(x + ((r * F256A[440]) - (r * F256A[441])), z + ((r * F256A[441]) + (r * F256A[440]))) + +n.noise(x + ((r * F256A[442]) - (r * F256A[443])), z + ((r * F256A[443]) + (r * F256A[442]))) + +n.noise(x + ((r * F256A[444]) - (r * F256A[445])), z + ((r * F256A[445]) + (r * F256A[444]))) + +n.noise(x + ((r * F256A[446]) - (r * F256A[447])), z + ((r * F256A[447]) + (r * F256A[446]))) + +n.noise(x + ((r * F256A[448]) - (r * F256A[449])), z + ((r * F256A[449]) + (r * F256A[448]))) + +n.noise(x + ((r * F256A[450]) - (r * F256A[451])), z + ((r * F256A[451]) + (r * F256A[450]))) + +n.noise(x + ((r * F256A[452]) - (r * F256A[453])), z + ((r * F256A[453]) + (r * F256A[452]))) + +n.noise(x + ((r * F256A[454]) - (r * F256A[455])), z + ((r * F256A[455]) + (r * F256A[454]))) + +n.noise(x + ((r * F256A[456]) - (r * F256A[457])), z + ((r * F256A[457]) + (r * F256A[456]))) + +n.noise(x + ((r * F256A[458]) - (r * F256A[459])), z + ((r * F256A[459]) + (r * F256A[458]))) + +n.noise(x + ((r * F256A[460]) - (r * F256A[461])), z + ((r * F256A[461]) + (r * F256A[460]))) + +n.noise(x + ((r * F256A[462]) - (r * F256A[463])), z + ((r * F256A[463]) + (r * F256A[462]))) + +n.noise(x + ((r * F256A[464]) - (r * F256A[465])), z + ((r * F256A[465]) + (r * F256A[464]))) + +n.noise(x + ((r * F256A[466]) - (r * F256A[467])), z + ((r * F256A[467]) + (r * F256A[466]))) + +n.noise(x + ((r * F256A[468]) - (r * F256A[469])), z + ((r * F256A[469]) + (r * F256A[468]))) + +n.noise(x + ((r * F256A[470]) - (r * F256A[471])), z + ((r * F256A[471]) + (r * F256A[470]))) + +n.noise(x + ((r * F256A[472]) - (r * F256A[473])), z + ((r * F256A[473]) + (r * F256A[472]))) + +n.noise(x + ((r * F256A[474]) - (r * F256A[475])), z + ((r * F256A[475]) + (r * F256A[474]))) + +n.noise(x + ((r * F256A[476]) - (r * F256A[477])), z + ((r * F256A[477]) + (r * F256A[476]))) + +n.noise(x + ((r * F256A[478]) - (r * F256A[479])), z + ((r * F256A[479]) + (r * F256A[478]))) + +n.noise(x + ((r * F256A[480]) - (r * F256A[481])), z + ((r * F256A[481]) + (r * F256A[480]))) + +n.noise(x + ((r * F256A[482]) - (r * F256A[483])), z + ((r * F256A[483]) + (r * F256A[482]))) + +n.noise(x + ((r * F256A[484]) - (r * F256A[485])), z + ((r * F256A[485]) + (r * F256A[484]))) + +n.noise(x + ((r * F256A[486]) - (r * F256A[487])), z + ((r * F256A[487]) + (r * F256A[486]))) + +n.noise(x + ((r * F256A[488]) - (r * F256A[489])), z + ((r * F256A[489]) + (r * F256A[488]))) + +n.noise(x + ((r * F256A[490]) - (r * F256A[491])), z + ((r * F256A[491]) + (r * F256A[490]))) + +n.noise(x + ((r * F256A[492]) - (r * F256A[493])), z + ((r * F256A[493]) + (r * F256A[492]))) + +n.noise(x + ((r * F256A[494]) - (r * F256A[495])), z + ((r * F256A[495]) + (r * F256A[494]))) + +n.noise(x + ((r * F256A[496]) - (r * F256A[497])), z + ((r * F256A[497]) + (r * F256A[496]))) + +n.noise(x + ((r * F256A[498]) - (r * F256A[499])), z + ((r * F256A[499]) + (r * F256A[498]))) + +n.noise(x + ((r * F256A[500]) - (r * F256A[501])), z + ((r * F256A[501]) + (r * F256A[500]))) + +n.noise(x + ((r * F256A[502]) - (r * F256A[503])), z + ((r * F256A[503]) + (r * F256A[502]))) + +n.noise(x + ((r * F256A[504]) - (r * F256A[505])), z + ((r * F256A[505]) + (r * F256A[504]))) + +n.noise(x + ((r * F256A[506]) - (r * F256A[507])), z + ((r * F256A[507]) + (r * F256A[506]))) + +n.noise(x + ((r * F256A[508]) - (r * F256A[509])), z + ((r * F256A[509]) + (r * F256A[508]))) + +n.noise(x + ((r * F256A[510]) - (r * F256A[511])), z + ((r * F256A[511]) + (r * F256A[510]))) + +n.noise(x + ((r * F256A[512]) - (r * F256A[513])), z + ((r * F256A[513]) + (r * F256A[512]))) + +n.noise(x + ((r * F256A[514]) - (r * F256A[515])), z + ((r * F256A[515]) + (r * F256A[514]))) + +n.noise(x + ((r * F256A[516]) - (r * F256A[517])), z + ((r * F256A[517]) + (r * F256A[516]))) + +n.noise(x + ((r * F256A[518]) - (r * F256A[519])), z + ((r * F256A[519]) + (r * F256A[518]))) + +n.noise(x + ((r * F256A[520]) - (r * F256A[521])), z + ((r * F256A[521]) + (r * F256A[520]))) + +n.noise(x + ((r * F256A[522]) - (r * F256A[523])), z + ((r * F256A[523]) + (r * F256A[522]))) + +n.noise(x + ((r * F256A[524]) - (r * F256A[525])), z + ((r * F256A[525]) + (r * F256A[524]))) + +n.noise(x + ((r * F256A[526]) - (r * F256A[527])), z + ((r * F256A[527]) + (r * F256A[526]))) + +n.noise(x + ((r * F256A[528]) - (r * F256A[529])), z + ((r * F256A[529]) + (r * F256A[528]))) + +n.noise(x + ((r * F256A[530]) - (r * F256A[531])), z + ((r * F256A[531]) + (r * F256A[530]))) + +n.noise(x + ((r * F256A[532]) - (r * F256A[533])), z + ((r * F256A[533]) + (r * F256A[532]))) + +n.noise(x + ((r * F256A[534]) - (r * F256A[535])), z + ((r * F256A[535]) + (r * F256A[534]))) + +n.noise(x + ((r * F256A[536]) - (r * F256A[537])), z + ((r * F256A[537]) + (r * F256A[536]))) + +n.noise(x + ((r * F256A[538]) - (r * F256A[539])), z + ((r * F256A[539]) + (r * F256A[538]))) + +n.noise(x + ((r * F256A[540]) - (r * F256A[541])), z + ((r * F256A[541]) + (r * F256A[540]))) + +n.noise(x + ((r * F256A[542]) - (r * F256A[543])), z + ((r * F256A[543]) + (r * F256A[542]))) + +n.noise(x + ((r * F256A[544]) - (r * F256A[545])), z + ((r * F256A[545]) + (r * F256A[544]))) + +n.noise(x + ((r * F256A[546]) - (r * F256A[547])), z + ((r * F256A[547]) + (r * F256A[546]))) + +n.noise(x + ((r * F256A[548]) - (r * F256A[549])), z + ((r * F256A[549]) + (r * F256A[548]))) + +n.noise(x + ((r * F256A[550]) - (r * F256A[551])), z + ((r * F256A[551]) + (r * F256A[550]))) + +n.noise(x + ((r * F256A[552]) - (r * F256A[553])), z + ((r * F256A[553]) + (r * F256A[552]))) + +n.noise(x + ((r * F256A[554]) - (r * F256A[555])), z + ((r * F256A[555]) + (r * F256A[554]))) + +n.noise(x + ((r * F256A[556]) - (r * F256A[557])), z + ((r * F256A[557]) + (r * F256A[556]))) + +n.noise(x + ((r * F256A[558]) - (r * F256A[559])), z + ((r * F256A[559]) + (r * F256A[558]))) + +n.noise(x + ((r * F256A[560]) - (r * F256A[561])), z + ((r * F256A[561]) + (r * F256A[560]))) + +n.noise(x + ((r * F256A[562]) - (r * F256A[563])), z + ((r * F256A[563]) + (r * F256A[562]))) + +n.noise(x + ((r * F256A[564]) - (r * F256A[565])), z + ((r * F256A[565]) + (r * F256A[564]))) + +n.noise(x + ((r * F256A[566]) - (r * F256A[567])), z + ((r * F256A[567]) + (r * F256A[566]))) + +n.noise(x + ((r * F256A[568]) - (r * F256A[569])), z + ((r * F256A[569]) + (r * F256A[568]))) + +n.noise(x + ((r * F256A[570]) - (r * F256A[571])), z + ((r * F256A[571]) + (r * F256A[570]))) + +n.noise(x + ((r * F256A[572]) - (r * F256A[573])), z + ((r * F256A[573]) + (r * F256A[572]))) + +n.noise(x + ((r * F256A[574]) - (r * F256A[575])), z + ((r * F256A[575]) + (r * F256A[574]))) + +n.noise(x + ((r * F256A[576]) - (r * F256A[577])), z + ((r * F256A[577]) + (r * F256A[576]))) + +n.noise(x + ((r * F256A[578]) - (r * F256A[579])), z + ((r * F256A[579]) + (r * F256A[578]))) + +n.noise(x + ((r * F256A[580]) - (r * F256A[581])), z + ((r * F256A[581]) + (r * F256A[580]))) + +n.noise(x + ((r * F256A[582]) - (r * F256A[583])), z + ((r * F256A[583]) + (r * F256A[582]))) + +n.noise(x + ((r * F256A[584]) - (r * F256A[585])), z + ((r * F256A[585]) + (r * F256A[584]))) + +n.noise(x + ((r * F256A[586]) - (r * F256A[587])), z + ((r * F256A[587]) + (r * F256A[586]))) + +n.noise(x + ((r * F256A[588]) - (r * F256A[589])), z + ((r * F256A[589]) + (r * F256A[588]))) + +n.noise(x + ((r * F256A[590]) - (r * F256A[591])), z + ((r * F256A[591]) + (r * F256A[590]))) + +n.noise(x + ((r * F256A[592]) - (r * F256A[593])), z + ((r * F256A[593]) + (r * F256A[592]))) + +n.noise(x + ((r * F256A[594]) - (r * F256A[595])), z + ((r * F256A[595]) + (r * F256A[594]))) + +n.noise(x + ((r * F256A[596]) - (r * F256A[597])), z + ((r * F256A[597]) + (r * F256A[596]))) + +n.noise(x + ((r * F256A[598]) - (r * F256A[599])), z + ((r * F256A[599]) + (r * F256A[598]))) + +n.noise(x + ((r * F256A[600]) - (r * F256A[601])), z + ((r * F256A[601]) + (r * F256A[600]))) + +n.noise(x + ((r * F256A[602]) - (r * F256A[603])), z + ((r * F256A[603]) + (r * F256A[602]))) + +n.noise(x + ((r * F256A[604]) - (r * F256A[605])), z + ((r * F256A[605]) + (r * F256A[604]))) + +n.noise(x + ((r * F256A[606]) - (r * F256A[607])), z + ((r * F256A[607]) + (r * F256A[606]))) + +n.noise(x + ((r * F256A[608]) - (r * F256A[609])), z + ((r * F256A[609]) + (r * F256A[608]))) + +n.noise(x + ((r * F256A[610]) - (r * F256A[611])), z + ((r * F256A[611]) + (r * F256A[610]))) + +n.noise(x + ((r * F256A[612]) - (r * F256A[613])), z + ((r * F256A[613]) + (r * F256A[612]))) + +n.noise(x + ((r * F256A[614]) - (r * F256A[615])), z + ((r * F256A[615]) + (r * F256A[614]))) + +n.noise(x + ((r * F256A[616]) - (r * F256A[617])), z + ((r * F256A[617]) + (r * F256A[616]))) + +n.noise(x + ((r * F256A[618]) - (r * F256A[619])), z + ((r * F256A[619]) + (r * F256A[618]))) + +n.noise(x + ((r * F256A[620]) - (r * F256A[621])), z + ((r * F256A[621]) + (r * F256A[620]))) + +n.noise(x + ((r * F256A[622]) - (r * F256A[623])), z + ((r * F256A[623]) + (r * F256A[622]))) + +n.noise(x + ((r * F256A[624]) - (r * F256A[625])), z + ((r * F256A[625]) + (r * F256A[624]))) + +n.noise(x + ((r * F256A[626]) - (r * F256A[627])), z + ((r * F256A[627]) + (r * F256A[626]))) + +n.noise(x + ((r * F256A[628]) - (r * F256A[629])), z + ((r * F256A[629]) + (r * F256A[628]))) + +n.noise(x + ((r * F256A[630]) - (r * F256A[631])), z + ((r * F256A[631]) + (r * F256A[630]))) + +n.noise(x + ((r * F256A[632]) - (r * F256A[633])), z + ((r * F256A[633]) + (r * F256A[632]))) + +n.noise(x + ((r * F256A[634]) - (r * F256A[635])), z + ((r * F256A[635]) + (r * F256A[634]))) + +n.noise(x + ((r * F256A[636]) - (r * F256A[637])), z + ((r * F256A[637]) + (r * F256A[636]))) + +n.noise(x + ((r * F256A[638]) - (r * F256A[639])), z + ((r * F256A[639]) + (r * F256A[638]))) + +n.noise(x + ((r * F256A[640]) - (r * F256A[641])), z + ((r * F256A[641]) + (r * F256A[640]))) + +n.noise(x + ((r * F256A[642]) - (r * F256A[643])), z + ((r * F256A[643]) + (r * F256A[642]))) + +n.noise(x + ((r * F256A[644]) - (r * F256A[645])), z + ((r * F256A[645]) + (r * F256A[644]))) + +n.noise(x + ((r * F256A[646]) - (r * F256A[647])), z + ((r * F256A[647]) + (r * F256A[646]))) + +n.noise(x + ((r * F256A[648]) - (r * F256A[649])), z + ((r * F256A[649]) + (r * F256A[648]))) + +n.noise(x + ((r * F256A[650]) - (r * F256A[651])), z + ((r * F256A[651]) + (r * F256A[650]))) + +n.noise(x + ((r * F256A[652]) - (r * F256A[653])), z + ((r * F256A[653]) + (r * F256A[652]))) + +n.noise(x + ((r * F256A[654]) - (r * F256A[655])), z + ((r * F256A[655]) + (r * F256A[654]))) + +n.noise(x + ((r * F256A[656]) - (r * F256A[657])), z + ((r * F256A[657]) + (r * F256A[656]))) + +n.noise(x + ((r * F256A[658]) - (r * F256A[659])), z + ((r * F256A[659]) + (r * F256A[658]))) + +n.noise(x + ((r * F256A[660]) - (r * F256A[661])), z + ((r * F256A[661]) + (r * F256A[660]))) + +n.noise(x + ((r * F256A[662]) - (r * F256A[663])), z + ((r * F256A[663]) + (r * F256A[662]))) + +n.noise(x + ((r * F256A[664]) - (r * F256A[665])), z + ((r * F256A[665]) + (r * F256A[664]))) + +n.noise(x + ((r * F256A[666]) - (r * F256A[667])), z + ((r * F256A[667]) + (r * F256A[666]))) + +n.noise(x + ((r * F256A[668]) - (r * F256A[669])), z + ((r * F256A[669]) + (r * F256A[668]))) + +n.noise(x + ((r * F256A[670]) - (r * F256A[671])), z + ((r * F256A[671]) + (r * F256A[670]))) + +n.noise(x + ((r * F256A[672]) - (r * F256A[673])), z + ((r * F256A[673]) + (r * F256A[672]))) + +n.noise(x + ((r * F256A[674]) - (r * F256A[675])), z + ((r * F256A[675]) + (r * F256A[674]))) + +n.noise(x + ((r * F256A[676]) - (r * F256A[677])), z + ((r * F256A[677]) + (r * F256A[676]))) + +n.noise(x + ((r * F256A[678]) - (r * F256A[679])), z + ((r * F256A[679]) + (r * F256A[678]))) + +n.noise(x + ((r * F256A[680]) - (r * F256A[681])), z + ((r * F256A[681]) + (r * F256A[680]))) + +n.noise(x + ((r * F256A[682]) - (r * F256A[683])), z + ((r * F256A[683]) + (r * F256A[682]))) + +n.noise(x + ((r * F256A[684]) - (r * F256A[685])), z + ((r * F256A[685]) + (r * F256A[684]))) + +n.noise(x + ((r * F256A[686]) - (r * F256A[687])), z + ((r * F256A[687]) + (r * F256A[686]))) + +n.noise(x + ((r * F256A[688]) - (r * F256A[689])), z + ((r * F256A[689]) + (r * F256A[688]))) + +n.noise(x + ((r * F256A[690]) - (r * F256A[691])), z + ((r * F256A[691]) + (r * F256A[690]))) + +n.noise(x + ((r * F256A[692]) - (r * F256A[693])), z + ((r * F256A[693]) + (r * F256A[692]))) + +n.noise(x + ((r * F256A[694]) - (r * F256A[695])), z + ((r * F256A[695]) + (r * F256A[694]))) + +n.noise(x + ((r * F256A[696]) - (r * F256A[697])), z + ((r * F256A[697]) + (r * F256A[696]))) + +n.noise(x + ((r * F256A[698]) - (r * F256A[699])), z + ((r * F256A[699]) + (r * F256A[698]))) + +n.noise(x + ((r * F256A[700]) - (r * F256A[701])), z + ((r * F256A[701]) + (r * F256A[700]))) + +n.noise(x + ((r * F256A[702]) - (r * F256A[703])), z + ((r * F256A[703]) + (r * F256A[702]))) + +n.noise(x + ((r * F256A[704]) - (r * F256A[705])), z + ((r * F256A[705]) + (r * F256A[704]))) + +n.noise(x + ((r * F256A[706]) - (r * F256A[707])), z + ((r * F256A[707]) + (r * F256A[706]))) + +n.noise(x + ((r * F256A[708]) - (r * F256A[709])), z + ((r * F256A[709]) + (r * F256A[708]))) + +n.noise(x + ((r * F256A[710]) - (r * F256A[711])), z + ((r * F256A[711]) + (r * F256A[710]))) + +n.noise(x + ((r * F256A[712]) - (r * F256A[713])), z + ((r * F256A[713]) + (r * F256A[712]))) + +n.noise(x + ((r * F256A[714]) - (r * F256A[715])), z + ((r * F256A[715]) + (r * F256A[714]))) + +n.noise(x + ((r * F256A[716]) - (r * F256A[717])), z + ((r * F256A[717]) + (r * F256A[716]))) + +n.noise(x + ((r * F256A[718]) - (r * F256A[719])), z + ((r * F256A[719]) + (r * F256A[718]))))/256.0D; + } +}