diff --git a/CHANGELOG.md b/CHANGELOG.md index 736340b..fc8a528 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,72 @@ Notable changes of grace-runtime, grace-runtime-cuda12 and grace-runtime-rocm6 (they share one version). Each release has a section "Changed defaults" when a default behaves differently. +## [0.1.4](https://github.com/ICAMS/grace-runtime/releases/tag/0.1.4) (2026-11-05) + +GRACE-1L/2L models with `max_order` 3, faster GPU kernels for the GRACE-OFF models, and GRACE-2L results near the +cutoff that match TensorFlow. + +### Added + +- **GRACE-1L and GRACE-2L models with `max_order` 3** (no AAAA / BBBB products; for example the small GRACE-OFF + models) run on the CPU and on NVIDIA and AMD GPUs, in Python and in LAMMPS, with the same results as TensorFlow. + Such models have no uncertainty head. GRACE-2L files of such models need `export_kokkos` of a tensorpotential newer + than 0.6.2.1; GRACE-1L files exported earlier load as they are. Older grace-runtime versions refuse such files + (`fc_AA2_w_left missing`). + +### Fixed + +- **GRACE-2L near the cutoff:** the RMSNorm epsilon is now 1e-10, the value of tensorpotential (was 1e-8). Energies and + forces change where atoms have few neighbors or bonds close to the cutoff (molecules, surfaces, dissociation), by up + to 2 eV for a dimer 0.05 Å inside the cutoff, and now agree with TensorFlow there. Bulk results are not visibly + affected. +- CPU: after a call that stopped with the error for two atoms at the same position, the next call on the same + calculator returned wrong forces (the bond forces of the failed call were added; energies were right). + +### Changed + +- **Faster GPU kernels**, mainly for the GRACE-OFF models: + - GRACE-1L: GPU kernels of their own for FC widths 20 and 48 and for radial widths up to 32 and 48 (before: + zero-padded to 32 or 64). + - Models with lmax 3 get the wave-per-atom bond backward and, on AMD CDNA GPUs, the matrix-core basis kernels + (before: lmax 4 only). + - The specialised CG-product kernels are chosen product by product instead of for a whole model shape, so models + whose products match only partly (the GRACE-OFF models, GRACE-2L-OMAT, GRACE-2L-OAM) use them too. + - AMD GPUs: the GRACE-2L layer-2 backward of models with 48 layer-2 channels and lmax 4 fits more teams per compute + unit. + +Time per atom and step (µs; Python, fixed positions), about 5,000 atoms of water (GRACE-2L-OMAT: bcc W), before and +after these kernels: + +| Model | RTX 4070 SUPER | MI250X (one GCD) | +|---|---|---| +| GRACE-OFF-1L-small | 0.85 → 0.54 (−36 %) | 1.35 → 0.70 (−48 %) | +| GRACE-OFF-1L-large | 3.81 → 2.67 (−30 %) | 3.08 → 2.13 (−31 %) | +| GRACE-OFF-2L-small | 2.04 → 1.96 (−4 %) | 2.84 → 2.28 (−20 %) | +| GRACE-OFF-2L-medium | 3.56 → 3.45 (−3 %) | 4.50 → 3.74 (−17 %) | +| GRACE-OFF-2L-large | 4.85 → 4.64 (−4 %) | 5.68 → 4.60 (−19 %) | +| GRACE-2L-OMAT | 3.72 → 3.50 (−6 %) | 3.94 → 3.07 (−22 %) | + +Results change at the level of fp32 rounding only. + +### LAMMPS (`grace-runtime` branch of the LAMMPS fork) + +- Builds grace-runtime 0.1.4: the models, fixes and GPU kernels above. + +### Documentation + +- Models: fits with `max_order` 3; exporting a model published as `saved_model/` only; the GRACE-1L widths with GPU + kernels of their own. +- Benchmarks: the time-per-atom chart names its benchmark system. + +### Changed defaults + +- NVIDIA GPUs: GRACE-1L models with lmax 3 use the wave-per-atom bond backward (`GRACE_FUSED_WAVE_BWD`, which still + switches it either way). +- GPU padding of GRACE-1L fits: FC widths up to 20 pad to 20 (was 32), from 33 to 48 pad to 48 (was 64); radial + widths up to 32 run unpadded (was: padded to 32 unless they divide 256), from 33 to 48 pad to 48 (was 64). The + padding warning names the new widths. + ## [0.1.3](https://github.com/ICAMS/grace-runtime/releases/tag/0.1.3) (2026-11-03) Fixes, and the LAMMPS fork on the current stable LAMMPS. diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a3f49a..6c3dbbb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,7 +46,7 @@ if(GRACE_WITH_KOKKOS) include(cmake/GraceHipAtomics.cmake) set(GRACE_KK_TESTS test_kk_1l_compile test_kk_2l_compile test_kk_3l_compile test_kk_csr test_kk_csr_3l test_kk_2l_large test_kk_neighbors test_kk_coupling test_kk_large test_kk_gemm test_kk_device - test_kk_launch_check test_kk_d3) + test_kk_launch_check test_kk_d3 test_kk_order3 test_kk_cg_tables) foreach(t ${GRACE_KK_TESTS}) add_executable(${t} tests/kk/${t}.cpp) target_link_libraries(${t} PRIVATE grace::libgrace Kokkos::kokkos) diff --git a/docs/lammps.md b/docs/lammps.md index 5c964d1..c74c745 100644 --- a/docs/lammps.md +++ b/docs/lammps.md @@ -30,7 +30,7 @@ cd lammps ## 2. Build The pair styles are part of the `ML-PACE` package. When CMake configures the build, it downloads grace-runtime -0.1.3 from GitHub, so the configure step needs network access. It also downloads the ML-PACE library. Pick one of the +0.1.4 from GitHub, so the configure step needs network access. It also downloads the ML-PACE library. Pick one of the three recipes; run each from the `lammps` folder. ### CPU @@ -136,10 +136,10 @@ Other AMD GPUs ([GPU backends](backends.md#amd-rocm)): ### Without network access -Download grace-runtime 0.1.3 on a machine with network access, copy it over and pass its path: +Download grace-runtime 0.1.4 on a machine with network access, copy it over and pass its path: ```bash -git clone --depth 1 -b 0.1.3 https://github.com/ICAMS/grace-runtime.git +git clone --depth 1 -b 0.1.4 https://github.com/ICAMS/grace-runtime.git cmake -S cmake -B build-cpu ... -D LOCAL_GRACE_RUNTIME=$PWD/grace-runtime ``` diff --git a/docs/models.md b/docs/models.md index 657ec2c..869ebbb 100644 --- a/docs/models.md +++ b/docs/models.md @@ -25,13 +25,30 @@ grace_utils -p model.yaml -c CHECKPOINT export_kokkos -o model.npz Fits of the early GRACE-1L/2L presets export the same way. Their files are format 2; an older grace-runtime refuses them and asks for an update. +GRACE-1L and GRACE-2L fits with `max_order` 3 (no AAAA / BBBB products; for example the small GRACE-OFF models) run as +well as those with `max_order` 4, with the same results; the exported file has no AAAA / BBBB arrays and grace-runtime +adds an inactive stage when it loads it. Such models have no uncertainty head. Other values of `max_order` are refused +by `export_kokkos`. GRACE-2L fits with `max_order` 3 need a tensorpotential newer than 0.6.2.1 to export. + +A model published as `model.yaml` and `saved_model/` without its training checkpoints needs a checkpoint first (with a +tensorpotential newer than 0.6.2.1): + +```bash +grace_utils -p model.yaml saved_model_to_checkpoint -s saved_model -o checkpoint +grace_utils -p model.yaml -c checkpoint export_kokkos -o model.npz +``` + +(`export_kokkos` refuses a checkpoint that does not hold the model's weights, such as the files in +`saved_model/variables/`.) + On a GPU, GRACE-2L fits up to the widths of the registry models run on the fast kernels, narrower layers zero-padded with the same results and a warning (lmax at most 4; not models with an uncertainty head): a fit of the current presets with at most 42 layer-1 and 32 layer-2 radial channels, 64 layer-2 product functions and `n_mlp_dens` at most 16, and any fit with at most 32 layer-1 and 48 layer-2 radial channels, 48 layer-2 product functions and `n_mlp_dens` at most -12. GRACE-1L fits with up to 64 radial channels and FC outputs run zero-padded the same way. Wider GRACE-2L fits stop -with an error that names their widths, also with `device="auto"`; with `GRACE_GENERIC_KERNELS=1` set in the environment -they run on generic GPU kernels, several times slower, with a warning. Please open an +12. GRACE-1L fits with up to 64 radial channels and FC outputs run on the fast kernels too: FC widths 20, 32, 48 and 64 +and radial widths up to 32, 48 and 64 on kernels of their own, other widths zero-padded the same way. Wider GRACE-2L +fits stop with an error that names their widths, also with `device="auto"`; with `GRACE_GENERIC_KERNELS=1` set in the +environment they run on generic GPU kernels, several times slower, with a warning. Please open an [issue](https://github.com/ICAMS/grace-runtime/issues) with the widths the message names so that fast kernels can be added. diff --git a/libgrace/include/grace/fused_cpu_types.h b/libgrace/include/grace/fused_cpu_types.h index 5af4176..d2053e9 100644 --- a/libgrace/include/grace/fused_cpu_types.h +++ b/libgrace/include/grace/fused_cpu_types.h @@ -148,11 +148,13 @@ struct RowLocks { }; // per-thread force rows [nmax][3] (no atomics: neighbours of one thread's atoms are often owned by another). -// Kept all-zero between computes: reduce() adds them to atom->f in contiguous chunks and clears them. +// Kept all-zero between computes: reduce() adds them to atom->f in contiguous chunks and clears them. A compute that +// throws between ensure() and reduce() (the zero-bond error) leaves them dirty; the next ensure() clears them. // Each thread first touches its own rows (SpreadBuf), which it then writes all compute long. struct ThreadForces { SpreadBuf buf; int nth = 1, nmax = 0; + bool dirty = false; // set by ensure(), cleared by reduce() void ensure(int nthreads, int nmax_) { if (nthreads != nth || nmax_ > nmax) { @@ -161,7 +163,9 @@ struct ThreadForces { buf.assign((size_t) nthreads * nmax_ * 3, 0.0, nthreads); nth = nthreads; nmax = nmax_; - } + } else if (dirty) + buf.assign(buf.size(), 0.0, nthreads); + dirty = true; } double *of(int tid) { return buf.data() + (size_t) tid * nmax * 3; } void reduce(double *f, int nall) // f: atom->f[0] (contiguous [nmax][3]) @@ -181,6 +185,7 @@ struct ThreadForces { std::memset(src + q0, 0, (q1 - q0) * sizeof(double)); } } + dirty = false; } }; diff --git a/libgrace/include/grace/kk/g2l_shape_smaxl.h b/libgrace/include/grace/kk/cg_tables.h similarity index 62% rename from libgrace/include/grace/kk/g2l_shape_smaxl.h rename to libgrace/include/grace/kk/cg_tables.h index 9c3332b..6b1acb9 100644 --- a/libgrace/include/grace/kk/g2l_shape_smaxl.h +++ b/libgrace/include/grace/kk/cg_tables.h @@ -1,21 +1,32 @@ // SPDX-License-Identifier: LicenseRef-ASL (Academic Software Licence, see LICENSE.md) -// Generated from GRACE-2L-SMAX-OMAT-large/kokkos.npz -- do not edit. -#ifndef LMP_PAIR_GRACE_2L_FUSED_SHAPE_SMAXL_H -#define LMP_PAIR_GRACE_2L_FUSED_SHAPE_SMAXL_H +// Generated by gen_cg_tables.py -- do not edit. Shape-specialised CG products, one struct per distinct CG +// table; per engine product the tables seen there (cgt::Tables). Read by grace_1l_fused_kk_impl.h and +// grace_2l_fused_kk_impl.h. +#pragma once #include namespace grace { namespace kk { -namespace G2LShape_SMAXL { +namespace cgt { -constexpr int nt_AA = 623; -constexpr int tab_AA[623][3] = {{0,0,0}, {1,1,1}, {2,2,1}, {3,3,1}, {4,4,2}, {5,5,2}, {6,6,2}, {7,7,2}, {8,8,2}, {9,9,3}, {10,10,3}, {11,11,3}, {12,12,3}, {13,13,3}, {14,14,3}, {15,15,3}, {16,16,4}, {17,17,4}, {18,18,4}, {19,19,4}, {20,20,4}, {21,21,4}, {22,22,4}, {23,23,4}, {24,24,4}, {1,0,5}, {2,0,6}, {3,0,7}, {4,3,8}, {5,2,8}, {6,1,8}, {8,1,8}, {5,1,9}, {6,2,9}, {7,3,9}, {4,1,10}, {6,3,10}, {7,2,10}, {8,3,10}, {9,8,11}, {10,7,11}, {11,6,11}, {11,8,11}, {12,5,11}, {13,4,11}, {14,5,11}, {15,4,11}, {10,4,12}, {11,5,12}, {12,6,12}, {13,7,12}, {14,8,12}, {9,4,13}, {10,5,13}, {11,4,13}, {12,7,13}, {13,6,13}, {13,8,13}, {14,7,13}, {15,8,13}, {16,15,14}, {17,14,14}, {18,13,14}, {18,15,14}, {19,12,14}, {19,14,14}, {20,11,14}, {21,10,14}, {22,9,14}, {22,11,14}, {23,10,14}, {24,9,14}, {17,9,15}, {18,10,15}, {19,11,15}, {20,12,15}, {21,13,15}, {22,14,15}, {23,15,15}, {16,9,16}, {17,10,16}, {18,9,16}, {18,11,16}, {19,10,16}, {20,13,16}, {21,12,16}, {21,14,16}, {22,13,16}, {22,15,16}, {23,14,16}, {24,15,16}, {3,1,17}, {2,1,18}, {1,1,19}, {2,2,19}, {3,3,19}, {3,2,20}, {1,1,21}, {3,3,21}, {4,0,22}, {5,0,23}, {6,0,24}, {7,0,25}, {8,0,26}, {6,4,27}, {7,5,27}, {7,4,28}, {6,5,28}, {8,5,28}, {4,4,29}, {5,5,29}, {6,6,29}, {7,7,29}, {8,8,29}, {5,4,30}, {7,6,30}, {8,7,30}, {5,5,31}, {8,6,31}, {7,7,31}, {9,3,32}, {10,2,32}, {11,3,32}, {13,1,32}, {15,1,32}, {10,3,33}, {11,2,33}, {12,1,33}, {14,1,33}, {11,1,34}, {12,2,34}, {13,3,34}, {10,1,35}, {12,3,35}, {13,2,35}, {14,3,35}, {9,1,36}, {11,1,36}, {13,3,36}, {14,2,36}, {15,3,36}, {13,9,37}, {12,10,37}, {13,11,37}, {15,11,37}, {14,9,38}, {13,10,38}, {15,10,38}, {12,11,38}, {14,11,38}, {9,9,39}, {11,11,39}, {12,12,39}, {13,13,39}, {15,15,39}, {10,9,40}, {11,10,40}, {13,12,40}, {14,13,40}, {15,14,40}, {11,9,41}, {11,11,41}, {14,12,41}, {13,13,41}, {15,13,41}, {16,8,42}, {17,7,42}, {18,6,42}, {19,7,42}, {20,4,42}, {21,5,42}, {23,5,42}, {24,4,42}, {17,8,43}, {18,7,43}, {19,6,43}, {19,8,43}, {20,5,43}, {21,4,43}, {22,5,43}, {23,4,43}, {18,4,44}, {19,5,44}, {20,6,44}, {21,7,44}, {22,8,44}, {17,4,45}, {18,5,45}, {19,4,45}, {20,7,45}, {21,6,45}, {21,8,45}, {22,7,45}, {23,8,45}, {16,4,46}, {17,5,46}, {19,5,46}, {20,8,46}, {21,7,46}, {22,6,46}, {23,7,46}, {24,8,46}, {22,16,47}, {21,17,47}, {20,18,47}, {24,18,47}, {21,19,47}, {23,19,47}, {23,16,48}, {22,17,48}, {24,17,48}, {21,18,48}, {23,18,48}, {20,19,48}, {22,19,48}, {16,16,49}, {17,17,49}, {18,18,49}, {19,19,49}, {20,20,49}, {21,21,49}, {22,22,49}, {23,23,49}, {24,24,49}, {17,16,50}, {18,17,50}, {19,18,50}, {21,20,50}, {22,21,50}, {23,22,50}, {24,23,50}, {18,16,51}, {19,17,51}, {19,19,51}, {22,20,51}, {21,21,51}, {23,21,51}, {24,22,51}, {4,3,52}, {8,1,52}, {4,2,53}, {5,3,53}, {7,1,53}, {4,3,54}, {5,2,54}, {6,1,54}, {8,1,54}, {5,1,55}, {6,2,55}, {7,3,55}, {4,1,56}, {6,3,56}, {7,2,56}, {8,3,56}, {5,1,57}, {7,3,57}, {8,2,57}, {4,1,58}, {8,3,58}, {9,0,59}, {10,0,60}, {11,0,61}, {12,0,62}, {13,0,63}, {14,0,64}, {15,0,65}, {9,6,66}, {10,7,66}, {11,8,66}, {13,4,66}, {14,5,66}, {9,7,67}, {11,7,67}, {12,4,67}, {13,5,67}, {15,5,67}, {9,8,68}, {10,7,68}, {11,6,68}, {11,8,68}, {12,5,68}, {13,4,68}, {14,5,68}, {15,4,68}, {10,4,69}, {11,5,69}, {12,6,69}, {13,7,69}, {14,8,69}, {9,4,70}, {10,5,70}, {11,4,70}, {12,7,70}, {13,6,70}, {13,8,70}, {14,7,70}, {15,8,70}, {9,5,71}, {11,5,71}, {12,8,71}, {13,7,71}, {15,7,71}, {10,5,72}, {11,4,72}, {13,8,72}, {14,7,72}, {15,6,72}, {16,3,73}, {17,2,73}, {18,3,73}, {22,1,73}, {24,1,73}, {17,3,74}, {18,2,74}, {19,3,74}, {21,1,74}, {23,1,74}, {18,3,75}, {19,2,75}, {20,1,75}, {22,1,75}, {19,1,76}, {20,2,76}, {21,3,76}, {18,1,77}, {20,3,77}, {21,2,77}, {22,3,77}, {17,1,78}, {19,1,78}, {21,3,78}, {22,2,78}, {23,3,78}, {16,1,79}, {18,1,79}, {22,3,79}, {23,2,79}, {24,3,79}, {16,13,80}, {17,12,80}, {18,13,80}, {19,14,80}, {20,9,80}, {21,10,80}, {22,11,80}, {24,11,80}, {16,14,81}, {17,13,81}, {18,12,81}, {19,13,81}, {19,15,81}, {20,10,81}, {21,9,81}, {21,11,81}, {23,11,81}, {24,10,81}, {16,15,82}, {17,14,82}, {18,13,82}, {18,15,82}, {19,12,82}, {19,14,82}, {20,11,82}, {21,10,82}, {22,9,82}, {22,11,82}, {23,10,82}, {24,9,82}, {17,9,83}, {18,10,83}, {19,11,83}, {20,12,83}, {21,13,83}, {22,14,83}, {23,15,83}, {16,9,84}, {17,10,84}, {18,9,84}, {18,11,84}, {19,10,84}, {20,13,84}, {21,12,84}, {21,14,84}, {22,13,84}, {22,15,84}, {23,14,84}, {24,15,84}, {16,10,85}, {17,11,85}, {19,9,85}, {19,11,85}, {20,14,85}, {21,13,85}, {21,15,85}, {22,12,85}, {23,13,85}, {24,14,85}, {16,11,86}, {18,11,86}, {19,10,86}, {20,15,86}, {21,14,86}, {22,13,86}, {23,12,86}, {24,13,86}, {8,4,87}, {7,4,88}, {8,5,88}, {6,4,89}, {7,5,89}, {7,4,90}, {6,5,90}, {8,5,90}, {4,4,91}, {5,5,91}, {6,6,91}, {7,7,91}, {8,8,91}, {5,4,92}, {7,6,92}, {8,7,92}, {5,5,93}, {8,6,93}, {7,7,93}, {5,4,94}, {8,7,94}, {4,4,95}, {8,8,95}, {9,3,96}, {15,1,96}, {9,2,97}, {10,3,97}, {14,1,97}, {9,3,98}, {10,2,98}, {11,3,98}, {13,1,98}, {15,1,98}, {10,3,99}, {11,2,99}, {12,1,99}, {14,1,99}, {11,1,100}, {12,2,100}, {13,3,100}, {10,1,101}, {12,3,101}, {13,2,101}, {14,3,101}, {9,1,102}, {11,1,102}, {13,3,102}, {14,2,102}, {15,3,102}, {10,1,103}, {14,3,103}, {15,2,103}, {9,1,104}, {15,3,104}, {13,9,105}, {14,10,105}, {15,11,105}, {12,9,106}, {13,10,106}, {14,11,106}, {13,9,107}, {12,10,107}, {13,11,107}, {15,11,107}, {14,9,108}, {13,10,108}, {15,10,108}, {12,11,108}, {14,11,108}, {9,9,109}, {10,10,109}, {11,11,109}, {12,12,109}, {13,13,109}, {14,14,109}, {15,15,109}, {10,9,110}, {11,10,110}, {13,12,110}, {14,13,110}, {15,14,110}, {11,9,111}, {11,11,111}, {14,12,111}, {13,13,111}, {15,13,111}, {11,10,112}, {15,12,112}, {14,13,112}, {11,9,113}, {10,10,113}, {15,13,113}, {14,14,113}, {16,0,114}, {17,0,115}, {18,0,116}, {19,0,117}, {20,0,118}, {21,0,119}, {22,0,120}, {23,0,121}, {24,0,122}, {16,6,123}, {17,7,123}, {18,8,123}, {22,4,123}, {23,5,123}, {16,7,124}, {17,6,124}, {18,7,124}, {19,8,124}, {21,4,124}, {22,5,124}, {24,5,124}, {16,8,125}, {17,7,125}, {18,6,125}, {19,7,125}, {20,4,125}, {21,5,125}, {23,5,125}, {24,4,125}, {17,8,126}, {18,7,126}, {19,6,126}, {19,8,126}, {20,5,126}, {21,4,126}, {22,5,126}, {23,4,126}, {18,4,127}, {19,5,127}, {20,6,127}, {21,7,127}, {22,8,127}, {17,4,128}, {18,5,128}, {19,4,128}, {20,7,128}, {21,6,128}, {21,8,128}, {22,7,128}, {23,8,128}, {16,4,129}, {17,5,129}, {19,5,129}, {20,8,129}, {21,7,129}, {22,6,129}, {23,7,129}, {24,8,129}, {16,5,130}, {18,5,130}, {19,4,130}, {21,8,130}, {22,7,130}, {23,6,130}, {24,7,130}, {17,5,131}, {18,4,131}, {22,8,131}, {23,7,131}, {24,6,131}, {20,16,132}, {21,17,132}, {22,18,132}, {23,19,132}, {21,16,133}, {20,17,133}, {21,18,133}, {22,19,133}, {24,19,133}, {22,16,134}, {21,17,134}, {20,18,134}, {24,18,134}, {21,19,134}, {23,19,134}, {23,16,135}, {22,17,135}, {24,17,135}, {21,18,135}, {23,18,135}, {20,19,135}, {22,19,135}, {16,16,136}, {17,17,136}, {18,18,136}, {19,19,136}, {20,20,136}, {21,21,136}, {22,22,136}, {23,23,136}, {24,24,136}, {17,16,137}, {18,17,137}, {19,18,137}, {21,20,137}, {22,21,137}, {23,22,137}, {24,23,137}, {18,16,138}, {19,17,138}, {19,19,138}, {22,20,138}, {21,21,138}, {23,21,138}, {24,22,138}, {19,16,139}, {19,18,139}, {23,20,139}, {22,21,139}, {24,21,139}, {19,17,140}, {18,18,140}, {24,20,140}, {23,21,140}, {22,22,140}}; -constexpr double cg_AA[623] = {1.0, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 1.29099440574646, 1.29099440574646, -0.3726779818534851, 0.7453559637069702, -0.3726779818534851, 1.29099440574646, -0.64549720287323, 0.64549720287323, 1.0, 1.0, 1.0, 1.0, 1.0, -0.8944271802902222, 0.7745966911315918, 0.7745966911315918, 0.4472135901451111, -0.7745966911315918, -0.4472135901451111, 0.22360679507255554, 0.4472135901451111, 0.22360679507255554, -0.4472135901451111, 0.7745966911315918, 0.4472135901451111, 0.7745966911315918, -0.3872983455657959, -0.8944271802902222, 0.3872983455657959, 0.44543540477752686, 0.36369648575782776, -0.11501092463731766, -0.11501092463731766, -0.44543540477752686, 0.36369648575782776, 0.46004369854927063, -0.28171807527542114, -0.36369648575782776, 0.39840954542160034, 0.48795002698898315, 0.39840954542160034, 0.36369648575782776, -0.28171807527542114, 0.46004369854927063, 0.36369648575782776, 0.44543540477752686, 0.11501092463731766, -0.11501092463731766, 0.36369648575782776, 0.44543540477752686, -0.3571428656578064, -0.7142857313156128, 0.5532833337783813, 0.3571428656578064, 0.5646924376487732, 0.4374088943004608, -0.5646924376487732, 0.22587697207927704, -0.4374088943004608, -0.3992978632450104, 0.2395787090063095, 0.31943827867507935, 0.2395787090063095, -0.3992978632450104, 0.5646924376487732, 0.4374088943004608, 0.22587697207927704, 0.4374088943004608, 0.5646924376487732, -0.3571428656578064, -0.2766416668891907, -0.7142857313156128, 0.2766416668891907, -0.3571428656578064, 0.32867109775543213, 0.23240555822849274, 0.21516573429107666, -0.08784104883670807, 0.0555555559694767, -0.08784104883670807, -0.23240555822849274, -0.32867109775543213, 0.23240555822849274, 0.24845199286937714, 0.3042903244495392, 0.08784104883670807, -0.2222222238779068, -0.08784104883670807, -0.24845199286937714, -0.23240555822849274, 0.21516573429107666, 0.3042903244495392, 0.3333333432674408, 0.3042903244495392, 0.21516573429107666, 0.23240555822849274, 0.24845199286937714, -0.08784104883670807, -0.2222222238779068, 0.3042903244495392, -0.08784104883670807, 0.24845199286937714, 0.23240555822849274, 0.32867109775543213, 0.23240555822849274, 0.08784104883670807, 0.0555555559694767, -0.08784104883670807, 0.21516573429107666, 0.23240555822849274, 0.32867109775543213, -0.22771002352237701, -0.34156501293182373, -0.5773502588272095, 0.22771002352237701, 0.4303314685821533, 0.34156501293182373, 0.4260064363479614, 0.4025382399559021, -0.4260064363479614, 0.273861289024353, -0.4025382399559021, 0.13608276844024658, -0.273861289024353, -0.3478327989578247, -0.08695819973945618, 0.09938079863786697, 0.21118420362472534, 0.24845199286937714, 0.21118420362472534, 0.09938079863786697, -0.08695819973945618, -0.3478327989578247, 0.4260064363479614, 0.4025382399559021, 0.273861289024353, 0.13608276844024658, 0.273861289024353, 0.4025382399559021, 0.4260064363479614, -0.22771002352237701, -0.34156501293182373, -0.21516573429107666, -0.5773502588272095, 0.21516573429107666, -0.34156501293182373, -0.22771002352237701, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, 0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.5577733516693115, 0.6440612077713013, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.55901700258255, 0.3952847123146057, -0.25, -0.25, 0.3952847123146057, 0.3952847123146057, 0.3061862289905548, -0.5, 0.3061862289905548, -0.3952847123146057, -0.25, 0.3061862289905548, 0.3354102075099945, -0.3872983455657959, 0.15811388194561005, 0.3872983455657959, -0.3061862289905548, 0.25, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3061862289905548, 0.3872983455657959, 0.15811388194561005, 0.3354102075099945, 0.3872983455657959, 0.3061862289905548, -0.25, 0.3952847123146057, -0.3061862289905548, -0.5, 0.3061862289905548, 0.3952847123146057, -0.3952847123146057, 0.25, -0.25, 0.3952847123146057, -0.55901700258255, 0.47628965973854065, 0.3367876708507538, -0.09001028537750244, -0.09001028537750244, -0.47628965973854065, 0.4124789535999298, 0.44095855951309204, -0.15590238571166992, -0.15590238571166992, -0.4124789535999298, 0.3486083447933197, 0.4930066466331482, -0.31180477142333984, -0.3486083447933197, 0.4025382399559021, 0.5091750621795654, 0.4025382399559021, 0.3486083447933197, -0.31180477142333984, 0.4930066466331482, 0.3486083447933197, 0.4124789535999298, 0.15590238571166992, -0.15590238571166992, 0.44095855951309204, 0.4124789535999298, 0.47628965973854065, 0.09001028537750244, -0.09001028537750244, 0.3367876708507538, 0.47628965973854065, -0.2545875310897827, -0.44095855951309204, 0.28867512941360474, -0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, 0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.09622504562139511, 0.2222222238779068, 0.21516573429107666, -0.3888888955116272, -0.21516573429107666, 0.2222222238779068, -0.146986186504364, -0.32867109775543213, -0.2545875310897827, 0.146986186504364, 0.24845199286937714, -0.28867512941360474, 0.21516573429107666, -0.2222222238779068, 0.0555555559694767, 0.2222222238779068, 0.28867512941360474, -0.24845199286937714, -0.146986186504364, 0.2545875310897827, -0.44095855951309204, -0.09622504562139511, 0.21516573429107666, 0.3333333432674408, 0.21516573429107666, -0.09622504562139511, -0.44095855951309204, -0.2545875310897827, 0.146986186504364, 0.28867512941360474, 0.24845199286937714, 0.2222222238779068, 0.0555555559694767, 0.21516573429107666, 0.2222222238779068, 0.24845199286937714, 0.28867512941360474, 0.146986186504364, -0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.21516573429107666, -0.2222222238779068, -0.3888888955116272, 0.2222222238779068, -0.21516573429107666, -0.09622504562139511, 0.146986186504364, 0.32867109775543213, -0.2545875310897827, -0.28867512941360474, 0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, -0.44095855951309204, -0.2545875310897827, 1.1832159757614136, 0.8366600275039673, 0.8366600275039673, 0.7745966911315918, 0.8944271802902222, -0.3162277638912201, 1.095445156097412, 0.3162277638912201, 0.10000000149011612, -0.4000000059604645, 0.6000000238418579, -0.4000000059604645, 0.10000000149011612, -0.3162277638912201, 1.095445156097412, -0.3162277638912201, -0.4472135901451111, 0.7745966911315918, 0.4472135901451111, -0.8366600275039673, 0.8366600275039673, -0.5916079878807068, 0.5916079878807068, 0.6123724579811096, 0.6123724579811096, 0.4330126941204071, 0.5303300619125366, 0.5303300619125366, -0.1157275140285492, 0.5669466853141785, 0.4482107162475586, 0.4482107162475586, 0.1157275140285492, -0.20044593513011932, 0.6338657140731812, 0.5175491571426392, 0.20044593513011932, -0.40089187026023865, 0.6546536684036255, -0.40089187026023865, -0.20044593513011932, 0.5175491571426392, 0.6338657140731812, -0.20044593513011932, -0.1157275140285492, -0.4482107162475586, 0.4482107162475586, 0.5669466853141785, -0.1157275140285492, -0.5303300619125366, 0.5303300619125366, 0.4330126941204071, -0.6123724579811096, 0.6123724579811096, -0.6546536684036255, 0.8451542258262634, -0.6546536684036255, -1.133893370628357, 0.37796446681022644, 0.37796446681022644, 0.7423074841499329, -0.2474358230829239, 0.6388765573501587, -0.7423074841499329, -0.5532833337783813, 0.5714285969734192, 0.5532833337783813, 0.5532833337783813, -0.5714285969734192, 0.2142857164144516, -0.5, 0.0714285746216774, 0.4285714328289032, 0.0714285746216774, -0.5, 0.2142857164144516, -0.5532833337783813, 0.5714285969734192, 0.5532833337783813, 0.5714285969734192, -0.5532833337783813, 0.7423074841499329, -0.31943827867507935, -0.2474358230829239, 0.31943827867507935, 0.7423074841499329, -0.37796446681022644, -1.133893370628357, 0.37796446681022644, 0.6546536684036255, -0.4225771129131317, -0.6546536684036255, 0.4225771129131317, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.6260990500450134, 0.38340580463409424, -0.20493902266025543, -0.20493902266025543, 0.38340580463409424, 0.38340580463409424, -0.15652476251125336, 0.36228442192077637, -0.30740851163864136, -0.30740851163864136, 0.36228442192077637, -0.38340580463409424, -0.20493902266025543, 0.36228442192077637, 0.17888544499874115, 0.24647514522075653, -0.5196152329444885, 0.24647514522075653, -0.36228442192077637, 0.20493902266025543, -0.30740851163864136, 0.24647514522075653, 0.3801315426826477, -0.3872983455657959, 0.12247448414564133, 0.3872983455657959, -0.24647514522075653, 0.30740851163864136, -0.5196152329444885, 0.12247448414564133, 0.4472135901451111, 0.12247448414564133, -0.5196152329444885, -0.30740851163864136, 0.24647514522075653, 0.3872983455657959, 0.12247448414564133, 0.3801315426826477, 0.3872983455657959, 0.24647514522075653, -0.30740851163864136, -0.20493902266025543, 0.36228442192077637, -0.24647514522075653, -0.5196152329444885, 0.24647514522075653, 0.17888544499874115, 0.36228442192077637, -0.20493902266025543, 0.38340580463409424, -0.36228442192077637, 0.30740851163864136, -0.30740851163864136, 0.36228442192077637, -0.15652476251125336, 0.38340580463409424, -0.38340580463409424, 0.20493902266025543, -0.20493902266025543, 0.38340580463409424, -0.6260990500450134, 0.5185185074806213, -0.5797213315963745, 0.6573421955108643, -0.5797213315963745, -0.5797213315963745, -0.7777777910232544, 0.21911406517028809, 0.21911406517028809, 0.5797213315963745, 0.6573421955108643, 0.21911406517028809, -0.40740740299224854, -0.6573421955108643, 0.4969039857387543, -0.21911406517028809, -0.5797213315963745, 0.21911406517028809, 0.5797213315963745, 0.4969039857387543, -0.21911406517028809, 0.3333333432674408, -0.4969039857387543, 0.25925925374031067, -0.3888888955116272, -0.20370370149612427, 0.1666666716337204, 0.3333333432674408, 0.1666666716337204, -0.20370370149612427, -0.3888888955116272, 0.25925925374031067, -0.5797213315963745, 0.21911406517028809, 0.4969039857387543, 0.3333333432674408, 0.4969039857387543, 0.21911406517028809, -0.5797213315963745, 0.6573421955108643, 0.21911406517028809, -0.24845199286937714, -0.40740740299224854, 0.24845199286937714, 0.21911406517028809, 0.6573421955108643, -0.5797213315963745, -0.21911406517028809, -0.7777777910232544, 0.21911406517028809, -0.5797213315963745, 0.5797213315963745, -0.32867109775543213, 0.5185185074806213, -0.5797213315963745, 0.32867109775543213}; +template struct Tables {}; -template -KOKKOS_INLINE_FUNCTION void fwd_AA(const V &L, const V &R, const V &out, const int ii, const int k) -{ +// self product, 623 terms: GRACE-1L-OAM AA, GRACE-1L-OMAT AA, GRACE-1L-OMAT-large-base AA, GRACE-1L-OMAT-large-ft-AM +// AA, GRACE-1L-OMAT-large-ft-E AA, GRACE-1L-OMAT-medium-base AA, GRACE-1L-OMAT-medium-ft-AM AA, +// GRACE-1L-OMAT-medium-ft-E AA, GRACE-1L-SMAX-OMAT-large AA, GRACE-1L-SMAX-large AA, GRACE-2L-OAM AA, GRACE-2L-OAM +// BB, GRACE-2L-OMAT AA, GRACE-2L-OMAT BB, GRACE-2L-OMAT-large-base AA, GRACE-2L-OMAT-large-ft-AM AA, +// GRACE-2L-OMAT-large-ft-E AA, GRACE-2L-OMAT-medium-base AA, GRACE-2L-OMAT-medium-ft-AM AA, +// GRACE-2L-OMAT-medium-ft-E AA, GRACE-2L-SMAX-OMAT-large AA, GRACE-2L-SMAX-OMAT-medium AA, GRACE-2L-SMAX-large AA, +// GRACE-2L-SMAX-medium AA, GRACE-OFF-1L-medium AA, GRACE-OFF-1L-large AA, GRACE-OFF-2L-large AA +struct T623_cc13851a { + static constexpr int nt = 623, nl = 25; + static constexpr int tab[623][3] = {{0,0,0}, {1,1,1}, {2,2,1}, {3,3,1}, {4,4,2}, {5,5,2}, {6,6,2}, {7,7,2}, {8,8,2}, {9,9,3}, {10,10,3}, {11,11,3}, {12,12,3}, {13,13,3}, {14,14,3}, {15,15,3}, {16,16,4}, {17,17,4}, {18,18,4}, {19,19,4}, {20,20,4}, {21,21,4}, {22,22,4}, {23,23,4}, {24,24,4}, {1,0,5}, {2,0,6}, {3,0,7}, {4,3,8}, {5,2,8}, {6,1,8}, {8,1,8}, {5,1,9}, {6,2,9}, {7,3,9}, {4,1,10}, {6,3,10}, {7,2,10}, {8,3,10}, {9,8,11}, {10,7,11}, {11,6,11}, {11,8,11}, {12,5,11}, {13,4,11}, {14,5,11}, {15,4,11}, {10,4,12}, {11,5,12}, {12,6,12}, {13,7,12}, {14,8,12}, {9,4,13}, {10,5,13}, {11,4,13}, {12,7,13}, {13,6,13}, {13,8,13}, {14,7,13}, {15,8,13}, {16,15,14}, {17,14,14}, {18,13,14}, {18,15,14}, {19,12,14}, {19,14,14}, {20,11,14}, {21,10,14}, {22,9,14}, {22,11,14}, {23,10,14}, {24,9,14}, {17,9,15}, {18,10,15}, {19,11,15}, {20,12,15}, {21,13,15}, {22,14,15}, {23,15,15}, {16,9,16}, {17,10,16}, {18,9,16}, {18,11,16}, {19,10,16}, {20,13,16}, {21,12,16}, {21,14,16}, {22,13,16}, {22,15,16}, {23,14,16}, {24,15,16}, {3,1,17}, {2,1,18}, {1,1,19}, {2,2,19}, {3,3,19}, {3,2,20}, {1,1,21}, {3,3,21}, {4,0,22}, {5,0,23}, {6,0,24}, {7,0,25}, {8,0,26}, {6,4,27}, {7,5,27}, {7,4,28}, {6,5,28}, {8,5,28}, {4,4,29}, {5,5,29}, {6,6,29}, {7,7,29}, {8,8,29}, {5,4,30}, {7,6,30}, {8,7,30}, {5,5,31}, {8,6,31}, {7,7,31}, {9,3,32}, {10,2,32}, {11,3,32}, {13,1,32}, {15,1,32}, {10,3,33}, {11,2,33}, {12,1,33}, {14,1,33}, {11,1,34}, {12,2,34}, {13,3,34}, {10,1,35}, {12,3,35}, {13,2,35}, {14,3,35}, {9,1,36}, {11,1,36}, {13,3,36}, {14,2,36}, {15,3,36}, {13,9,37}, {12,10,37}, {13,11,37}, {15,11,37}, {14,9,38}, {13,10,38}, {15,10,38}, {12,11,38}, {14,11,38}, {9,9,39}, {11,11,39}, {12,12,39}, {13,13,39}, {15,15,39}, {10,9,40}, {11,10,40}, {13,12,40}, {14,13,40}, {15,14,40}, {11,9,41}, {11,11,41}, {14,12,41}, {13,13,41}, {15,13,41}, {16,8,42}, {17,7,42}, {18,6,42}, {19,7,42}, {20,4,42}, {21,5,42}, {23,5,42}, {24,4,42}, {17,8,43}, {18,7,43}, {19,6,43}, {19,8,43}, {20,5,43}, {21,4,43}, {22,5,43}, {23,4,43}, {18,4,44}, {19,5,44}, {20,6,44}, {21,7,44}, {22,8,44}, {17,4,45}, {18,5,45}, {19,4,45}, {20,7,45}, {21,6,45}, {21,8,45}, {22,7,45}, {23,8,45}, {16,4,46}, {17,5,46}, {19,5,46}, {20,8,46}, {21,7,46}, {22,6,46}, {23,7,46}, {24,8,46}, {22,16,47}, {21,17,47}, {20,18,47}, {24,18,47}, {21,19,47}, {23,19,47}, {23,16,48}, {22,17,48}, {24,17,48}, {21,18,48}, {23,18,48}, {20,19,48}, {22,19,48}, {16,16,49}, {17,17,49}, {18,18,49}, {19,19,49}, {20,20,49}, {21,21,49}, {22,22,49}, {23,23,49}, {24,24,49}, {17,16,50}, {18,17,50}, {19,18,50}, {21,20,50}, {22,21,50}, {23,22,50}, {24,23,50}, {18,16,51}, {19,17,51}, {19,19,51}, {22,20,51}, {21,21,51}, {23,21,51}, {24,22,51}, {4,3,52}, {8,1,52}, {4,2,53}, {5,3,53}, {7,1,53}, {4,3,54}, {5,2,54}, {6,1,54}, {8,1,54}, {5,1,55}, {6,2,55}, {7,3,55}, {4,1,56}, {6,3,56}, {7,2,56}, {8,3,56}, {5,1,57}, {7,3,57}, {8,2,57}, {4,1,58}, {8,3,58}, {9,0,59}, {10,0,60}, {11,0,61}, {12,0,62}, {13,0,63}, {14,0,64}, {15,0,65}, {9,6,66}, {10,7,66}, {11,8,66}, {13,4,66}, {14,5,66}, {9,7,67}, {11,7,67}, {12,4,67}, {13,5,67}, {15,5,67}, {9,8,68}, {10,7,68}, {11,6,68}, {11,8,68}, {12,5,68}, {13,4,68}, {14,5,68}, {15,4,68}, {10,4,69}, {11,5,69}, {12,6,69}, {13,7,69}, {14,8,69}, {9,4,70}, {10,5,70}, {11,4,70}, {12,7,70}, {13,6,70}, {13,8,70}, {14,7,70}, {15,8,70}, {9,5,71}, {11,5,71}, {12,8,71}, {13,7,71}, {15,7,71}, {10,5,72}, {11,4,72}, {13,8,72}, {14,7,72}, {15,6,72}, {16,3,73}, {17,2,73}, {18,3,73}, {22,1,73}, {24,1,73}, {17,3,74}, {18,2,74}, {19,3,74}, {21,1,74}, {23,1,74}, {18,3,75}, {19,2,75}, {20,1,75}, {22,1,75}, {19,1,76}, {20,2,76}, {21,3,76}, {18,1,77}, {20,3,77}, {21,2,77}, {22,3,77}, {17,1,78}, {19,1,78}, {21,3,78}, {22,2,78}, {23,3,78}, {16,1,79}, {18,1,79}, {22,3,79}, {23,2,79}, {24,3,79}, {16,13,80}, {17,12,80}, {18,13,80}, {19,14,80}, {20,9,80}, {21,10,80}, {22,11,80}, {24,11,80}, {16,14,81}, {17,13,81}, {18,12,81}, {19,13,81}, {19,15,81}, {20,10,81}, {21,9,81}, {21,11,81}, {23,11,81}, {24,10,81}, {16,15,82}, {17,14,82}, {18,13,82}, {18,15,82}, {19,12,82}, {19,14,82}, {20,11,82}, {21,10,82}, {22,9,82}, {22,11,82}, {23,10,82}, {24,9,82}, {17,9,83}, {18,10,83}, {19,11,83}, {20,12,83}, {21,13,83}, {22,14,83}, {23,15,83}, {16,9,84}, {17,10,84}, {18,9,84}, {18,11,84}, {19,10,84}, {20,13,84}, {21,12,84}, {21,14,84}, {22,13,84}, {22,15,84}, {23,14,84}, {24,15,84}, {16,10,85}, {17,11,85}, {19,9,85}, {19,11,85}, {20,14,85}, {21,13,85}, {21,15,85}, {22,12,85}, {23,13,85}, {24,14,85}, {16,11,86}, {18,11,86}, {19,10,86}, {20,15,86}, {21,14,86}, {22,13,86}, {23,12,86}, {24,13,86}, {8,4,87}, {7,4,88}, {8,5,88}, {6,4,89}, {7,5,89}, {7,4,90}, {6,5,90}, {8,5,90}, {4,4,91}, {5,5,91}, {6,6,91}, {7,7,91}, {8,8,91}, {5,4,92}, {7,6,92}, {8,7,92}, {5,5,93}, {8,6,93}, {7,7,93}, {5,4,94}, {8,7,94}, {4,4,95}, {8,8,95}, {9,3,96}, {15,1,96}, {9,2,97}, {10,3,97}, {14,1,97}, {9,3,98}, {10,2,98}, {11,3,98}, {13,1,98}, {15,1,98}, {10,3,99}, {11,2,99}, {12,1,99}, {14,1,99}, {11,1,100}, {12,2,100}, {13,3,100}, {10,1,101}, {12,3,101}, {13,2,101}, {14,3,101}, {9,1,102}, {11,1,102}, {13,3,102}, {14,2,102}, {15,3,102}, {10,1,103}, {14,3,103}, {15,2,103}, {9,1,104}, {15,3,104}, {13,9,105}, {14,10,105}, {15,11,105}, {12,9,106}, {13,10,106}, {14,11,106}, {13,9,107}, {12,10,107}, {13,11,107}, {15,11,107}, {14,9,108}, {13,10,108}, {15,10,108}, {12,11,108}, {14,11,108}, {9,9,109}, {10,10,109}, {11,11,109}, {12,12,109}, {13,13,109}, {14,14,109}, {15,15,109}, {10,9,110}, {11,10,110}, {13,12,110}, {14,13,110}, {15,14,110}, {11,9,111}, {11,11,111}, {14,12,111}, {13,13,111}, {15,13,111}, {11,10,112}, {15,12,112}, {14,13,112}, {11,9,113}, {10,10,113}, {15,13,113}, {14,14,113}, {16,0,114}, {17,0,115}, {18,0,116}, {19,0,117}, {20,0,118}, {21,0,119}, {22,0,120}, {23,0,121}, {24,0,122}, {16,6,123}, {17,7,123}, {18,8,123}, {22,4,123}, {23,5,123}, {16,7,124}, {17,6,124}, {18,7,124}, {19,8,124}, {21,4,124}, {22,5,124}, {24,5,124}, {16,8,125}, {17,7,125}, {18,6,125}, {19,7,125}, {20,4,125}, {21,5,125}, {23,5,125}, {24,4,125}, {17,8,126}, {18,7,126}, {19,6,126}, {19,8,126}, {20,5,126}, {21,4,126}, {22,5,126}, {23,4,126}, {18,4,127}, {19,5,127}, {20,6,127}, {21,7,127}, {22,8,127}, {17,4,128}, {18,5,128}, {19,4,128}, {20,7,128}, {21,6,128}, {21,8,128}, {22,7,128}, {23,8,128}, {16,4,129}, {17,5,129}, {19,5,129}, {20,8,129}, {21,7,129}, {22,6,129}, {23,7,129}, {24,8,129}, {16,5,130}, {18,5,130}, {19,4,130}, {21,8,130}, {22,7,130}, {23,6,130}, {24,7,130}, {17,5,131}, {18,4,131}, {22,8,131}, {23,7,131}, {24,6,131}, {20,16,132}, {21,17,132}, {22,18,132}, {23,19,132}, {21,16,133}, {20,17,133}, {21,18,133}, {22,19,133}, {24,19,133}, {22,16,134}, {21,17,134}, {20,18,134}, {24,18,134}, {21,19,134}, {23,19,134}, {23,16,135}, {22,17,135}, {24,17,135}, {21,18,135}, {23,18,135}, {20,19,135}, {22,19,135}, {16,16,136}, {17,17,136}, {18,18,136}, {19,19,136}, {20,20,136}, {21,21,136}, {22,22,136}, {23,23,136}, {24,24,136}, {17,16,137}, {18,17,137}, {19,18,137}, {21,20,137}, {22,21,137}, {23,22,137}, {24,23,137}, {18,16,138}, {19,17,138}, {19,19,138}, {22,20,138}, {21,21,138}, {23,21,138}, {24,22,138}, {19,16,139}, {19,18,139}, {23,20,139}, {22,21,139}, {24,21,139}, {19,17,140}, {18,18,140}, {24,20,140}, {23,21,140}, {22,22,140}}; + static constexpr double cg[623] = {1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 1.2909944487358054, 1.2909944487358056, -0.3726779962499649, 0.7453559924999299, -0.3726779962499649, 1.2909944487358056, -0.6454972243679027, 0.6454972243679027, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, -0.8944271909999157, 0.7745966692414832, 0.7745966692414832, 0.44721359549995787, -0.7745966692414832, -0.44721359549995787, 0.22360679774997894, 0.447213595499958, 0.22360679774997894, -0.44721359549995787, 0.7745966692414832, 0.44721359549995787, 0.7745966692414832, -0.3872983346207416, -0.8944271909999157, 0.3872983346207416, 0.44543540318737396, 0.363696483726654, -0.11501092655705904, -0.11501092655705904, -0.44543540318737396, 0.363696483726654, 0.46004370622823615, -0.28171808490950556, -0.363696483726654, 0.3984095364447979, 0.4879500364742666, 0.3984095364447979, 0.363696483726654, -0.28171808490950556, 0.46004370622823615, 0.363696483726654, 0.44543540318737396, 0.11501092655705904, -0.11501092655705904, 0.363696483726654, 0.44543540318737396, -0.3571428571428571, -0.7142857142857142, 0.5532833351724881, 0.3571428571428571, 0.5646924393157818, 0.4374088826398531, -0.5646924393157818, 0.22587697572631277, -0.4374088826398531, -0.39929785312496235, 0.23957871187497742, 0.31943828249996997, 0.23957871187497742, -0.39929785312496235, 0.5646924393157818, 0.4374088826398531, 0.22587697572631277, 0.4374088826398531, 0.5646924393157818, -0.3571428571428571, -0.27664166758624403, -0.7142857142857142, 0.27664166758624403, -0.3571428571428571, 0.3286710990610897, 0.23240556292613204, 0.2151657414559676, -0.0878410461157883, 0.05555555555555555, -0.0878410461157883, -0.23240556292613204, -0.3286710990610897, 0.23240556292613204, 0.2484519974999766, 0.30429030972509225, 0.0878410461157883, -0.2222222222222222, -0.0878410461157883, -0.2484519974999766, -0.23240556292613204, 0.2151657414559676, 0.30429030972509225, 0.33333333333333337, 0.30429030972509225, 0.2151657414559676, 0.23240556292613204, 0.2484519974999766, -0.0878410461157883, -0.2222222222222222, 0.30429030972509225, -0.0878410461157883, 0.2484519974999766, 0.23240556292613204, 0.3286710990610897, 0.23240556292613204, 0.0878410461157883, 0.05555555555555555, -0.0878410461157883, 0.2151657414559676, 0.23240556292613204, 0.3286710990610897, -0.22771001702132432, -0.3415650255319865, -0.5773502691896256, 0.22771001702132432, 0.430331482911935, 0.3415650255319865, 0.426006433615129, 0.40253824294970647, -0.426006433615129, 0.2738612787525829, -0.40253824294970647, 0.13608276348795428, -0.2738612787525829, -0.34783279649996723, -0.08695819912499181, 0.09938079899999062, 0.21118419787498008, 0.2484519974999766, 0.21118419787498008, 0.09938079899999062, -0.08695819912499181, -0.34783279649996723, 0.426006433615129, 0.40253824294970647, 0.2738612787525829, 0.13608276348795428, 0.2738612787525829, 0.40253824294970647, 0.426006433615129, -0.22771001702132432, -0.3415650255319865, -0.2151657414559675, -0.5773502691896256, 0.2151657414559675, -0.3415650255319865, -0.22771001702132432, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, 0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.557773351022717, 0.6440611887195306, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.24999999999999994, 0.39528470752104733, 0.39528470752104733, 0.30618621784789724, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, -0.24999999999999994, 0.30618621784789724, 0.33541019662496846, -0.3872983346207416, 0.15811388300841894, 0.3872983346207416, -0.30618621784789724, 0.24999999999999994, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.30618621784789724, 0.3872983346207416, 0.15811388300841894, 0.33541019662496846, 0.3872983346207416, 0.30618621784789724, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, -0.4999999999999999, 0.30618621784789724, 0.39528470752104733, -0.39528470752104733, 0.24999999999999994, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.4762896722078401, 0.3367876570272817, -0.09001028747788692, -0.09001028747788692, -0.4762896722078401, 0.4124789556921526, 0.4409585518440983, -0.15590239111558082, -0.15590239111558082, -0.4124789556921526, 0.3486083443891981, 0.4930066485916346, -0.31180478223116176, -0.3486083443891981, 0.4025382429497066, 0.5091750772173156, 0.4025382429497066, 0.3486083443891981, -0.31180478223116176, 0.4930066485916346, 0.3486083443891981, 0.4124789556921526, 0.15590239111558082, -0.15590239111558082, 0.4409585518440983, 0.4124789556921526, 0.4762896722078401, 0.09001028747788692, -0.09001028747788692, 0.3367876570272817, 0.4762896722078401, -0.2545875386086577, -0.4409585518440983, 0.28867513459481275, -0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, 0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.0962250448649376, 0.22222222222222215, 0.21516574145596756, -0.3888888888888888, -0.21516574145596756, 0.22222222222222215, -0.14698618394803278, -0.3286710990610897, -0.2545875386086577, 0.14698618394803278, 0.24845199749997657, -0.28867513459481275, 0.21516574145596756, -0.22222222222222215, 0.05555555555555554, 0.22222222222222215, 0.28867513459481275, -0.24845199749997657, -0.14698618394803278, 0.2545875386086577, -0.4409585518440983, -0.0962250448649376, 0.21516574145596756, 0.3333333333333333, 0.21516574145596756, -0.0962250448649376, -0.4409585518440983, -0.2545875386086577, 0.14698618394803278, 0.28867513459481275, 0.24845199749997657, 0.22222222222222215, 0.05555555555555554, 0.21516574145596756, 0.22222222222222215, 0.24845199749997657, 0.28867513459481275, 0.14698618394803278, -0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.21516574145596756, -0.22222222222222215, -0.3888888888888888, 0.22222222222222215, -0.21516574145596756, -0.0962250448649376, 0.14698618394803278, 0.3286710990610897, -0.2545875386086577, -0.28867513459481275, 0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, -0.4409585518440983, -0.2545875386086577, 1.183215956619923, 0.8366600265340753, 0.8366600265340753, 0.7745966692414833, 0.8944271909999157, -0.3162277660168379, 1.095445115010332, 0.3162277660168379, 0.09999999999999999, -0.39999999999999997, 0.6000000000000001, -0.39999999999999997, 0.09999999999999999, -0.3162277660168379, 1.095445115010332, -0.3162277660168379, -0.44721359549995787, 0.7745966692414833, 0.44721359549995787, -0.8366600265340753, 0.8366600265340753, -0.5916079783099615, 0.5916079783099615, 0.6123724356957945, 0.6123724356957945, 0.43301270189221924, 0.5303300858899105, 0.5303300858899105, -0.11572751247156893, 0.5669467095138407, 0.44821072850039756, 0.44821072850039756, 0.11572751247156893, -0.20044593143431824, 0.6338656910463873, 0.5175491695067655, 0.20044593143431824, -0.40089186286863654, 0.6546536707079772, -0.40089186286863654, -0.20044593143431824, 0.5175491695067655, 0.6338656910463873, -0.20044593143431824, -0.11572751247156893, -0.44821072850039756, 0.44821072850039756, 0.5669467095138407, -0.11572751247156893, -0.5303300858899105, 0.5303300858899105, 0.43301270189221924, -0.6123724356957945, 0.6123724356957945, -0.654653670707977, 0.8451542547285164, -0.654653670707977, -1.1338934190276815, 0.37796447300922714, 0.37796447300922714, 0.7423074889580901, -0.2474358296526967, 0.6388765649999396, -0.7423074889580901, -0.553283335172488, 0.5714285714285712, 0.553283335172488, 0.5532833351724881, -0.5714285714285712, 0.21428571428571427, -0.49999999999999994, 0.07142857142857141, 0.42857142857142855, 0.07142857142857141, -0.49999999999999994, 0.21428571428571427, -0.553283335172488, 0.5714285714285712, 0.5532833351724881, 0.5714285714285712, -0.553283335172488, 0.7423074889580901, -0.3194382824999698, -0.2474358296526967, 0.3194382824999698, 0.7423074889580901, -0.37796447300922714, -1.1338934190276815, 0.37796447300922714, 0.654653670707977, -0.4225771273642582, -0.654653670707977, 0.4225771273642582, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, -0.626099033699941, 0.38340579025361615, -0.2049390153191919, -0.2049390153191919, 0.38340579025361615, 0.38340579025361615, -0.15652475842498526, 0.3622844186547358, -0.3074085229787879, -0.3074085229787879, 0.3622844186547358, -0.38340579025361615, -0.2049390153191919, 0.3622844186547358, 0.17888543819998312, 0.2464751508773247, -0.519615242270663, 0.2464751508773247, -0.3622844186547358, 0.2049390153191919, -0.3074085229787879, 0.2464751508773247, 0.38013155617496414, -0.3872983346207416, 0.12247448713915886, 0.3872983346207416, -0.2464751508773247, 0.3074085229787879, -0.519615242270663, 0.12247448713915886, 0.44721359549995787, 0.12247448713915886, -0.519615242270663, -0.3074085229787879, 0.2464751508773247, 0.3872983346207416, 0.12247448713915886, 0.38013155617496414, 0.3872983346207416, 0.2464751508773247, -0.3074085229787879, -0.2049390153191919, 0.3622844186547358, -0.2464751508773247, -0.519615242270663, 0.2464751508773247, 0.17888543819998312, 0.3622844186547358, -0.2049390153191919, 0.38340579025361615, -0.3622844186547358, 0.3074085229787879, -0.3074085229787879, 0.3622844186547358, -0.15652475842498526, 0.38340579025361615, -0.38340579025361615, 0.2049390153191919, -0.2049390153191919, 0.38340579025361615, -0.626099033699941, 0.5185185185185184, -0.5797213274999453, 0.6573421981221794, -0.5797213274999453, -0.5797213274999453, -0.7777777777777777, 0.21911406604072645, 0.21911406604072645, 0.5797213274999453, 0.6573421981221794, 0.21911406604072645, -0.40740740740740733, -0.6573421981221794, 0.4969039949999531, -0.21911406604072645, -0.5797213274999453, 0.21911406604072645, 0.5797213274999453, 0.4969039949999531, -0.21911406604072645, 0.33333333333333326, -0.4969039949999531, 0.2592592592592592, -0.38888888888888884, -0.20370370370370366, 0.16666666666666663, 0.3333333333333333, 0.16666666666666663, -0.20370370370370366, -0.38888888888888884, 0.2592592592592592, -0.5797213274999453, 0.21911406604072645, 0.4969039949999531, 0.33333333333333326, 0.4969039949999531, 0.21911406604072645, -0.5797213274999453, 0.6573421981221794, 0.21911406604072645, -0.24845199749997654, -0.40740740740740733, 0.24845199749997654, 0.21911406604072645, 0.6573421981221794, -0.5797213274999453, -0.21911406604072645, -0.7777777777777777, 0.21911406604072645, -0.5797213274999453, 0.5797213274999453, -0.3286710990610897, 0.5185185185185184, -0.5797213274999453, 0.3286710990610897}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { const float a0 = L(ii, k, 0); const float a1 = L(ii, k, 1); const float a2 = L(ii, k, 2); @@ -182,11 +193,12 @@ KOKKOS_INLINE_FUNCTION void fwd_AA(const V &L, const V &R, const V &out, const i out(ii, k, 138) = 0.6573421955108643f * a18 * a16 + 0.21911406517028809f * a19 * a17 + -0.24845199286937714f * a19 * a19 + -0.40740740299224854f * a22 * a20 + 0.24845199286937714f * a21 * a21 + 0.21911406517028809f * a23 * a21 + 0.6573421955108643f * a24 * a22; out(ii, k, 139) = -0.5797213315963745f * a19 * a16 + -0.21911406517028809f * a19 * a18 + -0.7777777910232544f * a23 * a20 + 0.21911406517028809f * a22 * a21 + -0.5797213315963745f * a24 * a21; out(ii, k, 140) = 0.5797213315963745f * a19 * a17 + -0.32867109775543213f * a18 * a18 + 0.5185185074806213f * a24 * a20 + -0.5797213315963745f * a23 * a21 + 0.32867109775543213f * a22 * a22; -} + } -template -KOKKOS_INLINE_FUNCTION void rev_AA(const V &F, const V &, const V &D, const V &dF, const V &, const int ii, const int k) -{ + template + KOKKOS_INLINE_FUNCTION static void rev(const V &F, const V &, const V &D, const V &dF, const V &, + const int ii, const int k) + { const float f0 = F(ii, k, 0); const float f1 = F(ii, k, 1); const float f2 = F(ii, k, 2); @@ -1766,41 +1778,76 @@ KOKKOS_INLINE_FUNCTION void rev_AA(const V &F, const V &, const V &D, const V &d g22 += 0.32867109775543213f * d * f22; g22 += 0.32867109775543213f * d * f22; } - dF(ii, k, 0) = g0; - dF(ii, k, 1) = g1; - dF(ii, k, 2) = g2; - dF(ii, k, 3) = g3; - dF(ii, k, 4) = g4; - dF(ii, k, 5) = g5; - dF(ii, k, 6) = g6; - dF(ii, k, 7) = g7; - dF(ii, k, 8) = g8; - dF(ii, k, 9) = g9; - dF(ii, k, 10) = g10; - dF(ii, k, 11) = g11; - dF(ii, k, 12) = g12; - dF(ii, k, 13) = g13; - dF(ii, k, 14) = g14; - dF(ii, k, 15) = g15; - dF(ii, k, 16) = g16; - dF(ii, k, 17) = g17; - dF(ii, k, 18) = g18; - dF(ii, k, 19) = g19; - dF(ii, k, 20) = g20; - dF(ii, k, 21) = g21; - dF(ii, k, 22) = g22; - dF(ii, k, 23) = g23; - dF(ii, k, 24) = g24; + if constexpr (ACC) { + dF(ii, k, 0) += g0; + dF(ii, k, 1) += g1; + dF(ii, k, 2) += g2; + dF(ii, k, 3) += g3; + dF(ii, k, 4) += g4; + dF(ii, k, 5) += g5; + dF(ii, k, 6) += g6; + dF(ii, k, 7) += g7; + dF(ii, k, 8) += g8; + dF(ii, k, 9) += g9; + dF(ii, k, 10) += g10; + dF(ii, k, 11) += g11; + dF(ii, k, 12) += g12; + dF(ii, k, 13) += g13; + dF(ii, k, 14) += g14; + dF(ii, k, 15) += g15; + dF(ii, k, 16) += g16; + dF(ii, k, 17) += g17; + dF(ii, k, 18) += g18; + dF(ii, k, 19) += g19; + dF(ii, k, 20) += g20; + dF(ii, k, 21) += g21; + dF(ii, k, 22) += g22; + dF(ii, k, 23) += g23; + dF(ii, k, 24) += g24; + } else { + dF(ii, k, 0) = g0; + dF(ii, k, 1) = g1; + dF(ii, k, 2) = g2; + dF(ii, k, 3) = g3; + dF(ii, k, 4) = g4; + dF(ii, k, 5) = g5; + dF(ii, k, 6) = g6; + dF(ii, k, 7) = g7; + dF(ii, k, 8) = g8; + dF(ii, k, 9) = g9; + dF(ii, k, 10) = g10; + dF(ii, k, 11) = g11; + dF(ii, k, 12) = g12; + dF(ii, k, 13) = g13; + dF(ii, k, 14) = g14; + dF(ii, k, 15) = g15; + dF(ii, k, 16) = g16; + dF(ii, k, 17) = g17; + dF(ii, k, 18) = g18; + dF(ii, k, 19) = g19; + dF(ii, k, 20) = g20; + dF(ii, k, 21) = g21; + dF(ii, k, 22) = g22; + dF(ii, k, 23) = g23; + dF(ii, k, 24) = g24; + } + } } -} -constexpr int nt_AAA = 3161; -constexpr int tab_AAA[3161][3] = {{0,0,0}, {1,0,1}, {8,1,2}, {9,2,2}, {10,3,2}, {2,0,3}, {27,4,4}, {28,5,4}, {29,6,4}, {30,7,4}, {31,8,4}, {11,1,5}, {12,2,5}, {13,3,5}, {3,0,6}, {37,4,7}, {38,5,7}, {39,6,7}, {40,7,7}, {41,8,7}, {42,4,8}, {43,5,8}, {44,6,8}, {45,7,8}, {46,8,8}, {14,1,9}, {15,2,9}, {16,3,9}, {80,9,10}, {81,10,10}, {82,11,10}, {83,12,10}, {84,13,10}, {85,14,10}, {86,15,10}, {4,0,11}, {47,4,12}, {48,5,12}, {49,6,12}, {50,7,12}, {51,8,12}, {132,16,13}, {133,17,13}, {134,18,13}, {135,19,13}, {136,20,13}, {137,21,13}, {138,22,13}, {139,23,13}, {140,24,13}, {0,1,14}, {0,2,15}, {0,3,16}, {1,1,17}, {1,2,18}, {1,3,19}, {8,0,20}, {9,0,21}, {10,0,22}, {8,6,23}, {8,8,23}, {9,5,23}, {10,4,23}, {8,5,24}, {9,6,24}, {10,7,24}, {8,4,25}, {9,7,25}, {10,6,25}, {10,8,25}, {52,8,26}, {53,7,26}, {54,6,26}, {54,8,26}, {55,5,26}, {56,4,26}, {57,5,26}, {58,4,26}, {53,4,27}, {54,5,27}, {55,6,27}, {56,7,27}, {57,8,27}, {52,4,28}, {53,5,28}, {54,4,28}, {55,7,28}, {56,6,28}, {56,8,28}, {57,7,28}, {58,8,28}, {2,1,29}, {2,2,30}, {2,3,31}, {27,3,32}, {28,2,32}, {29,1,32}, {31,1,32}, {28,1,33}, {29,2,33}, {30,3,33}, {27,1,34}, {29,3,34}, {30,2,34}, {31,3,34}, {27,13,35}, {27,15,35}, {28,12,35}, {28,14,35}, {29,11,35}, {30,10,35}, {31,9,35}, {31,11,35}, {27,10,36}, {28,11,36}, {29,12,36}, {30,13,36}, {31,14,36}, {27,9,37}, {27,11,37}, {28,10,37}, {29,13,37}, {30,12,37}, {30,14,37}, {31,13,37}, {31,15,37}, {87,15,38}, {88,14,38}, {89,13,38}, {89,15,38}, {90,12,38}, {90,14,38}, {91,11,38}, {92,10,38}, {93,9,38}, {93,11,38}, {94,10,38}, {95,9,38}, {88,9,39}, {89,10,39}, {90,11,39}, {91,12,39}, {92,13,39}, {93,14,39}, {94,15,39}, {87,9,40}, {88,10,40}, {89,9,40}, {89,11,40}, {90,10,40}, {91,13,40}, {92,12,40}, {92,14,40}, {93,13,40}, {93,15,40}, {94,14,40}, {95,15,40}, {32,3,41}, {33,2,41}, {34,1,41}, {36,1,41}, {33,1,42}, {34,2,42}, {35,3,42}, {32,1,43}, {34,3,43}, {35,2,43}, {36,3,43}, {32,13,44}, {32,15,44}, {33,12,44}, {33,14,44}, {34,11,44}, {35,10,44}, {36,9,44}, {36,11,44}, {32,10,45}, {33,11,45}, {34,12,45}, {35,13,45}, {36,14,45}, {32,9,46}, {32,11,46}, {33,10,46}, {34,13,46}, {35,12,46}, {35,14,46}, {36,13,46}, {36,15,46}, {96,15,47}, {97,14,47}, {98,13,47}, {98,15,47}, {99,12,47}, {99,14,47}, {100,11,47}, {101,10,47}, {102,9,47}, {102,11,47}, {103,10,47}, {104,9,47}, {97,9,48}, {98,10,48}, {99,11,48}, {100,12,48}, {101,13,48}, {102,14,48}, {103,15,48}, {96,9,49}, {97,10,49}, {98,9,49}, {98,11,49}, {99,10,49}, {100,13,49}, {101,12,49}, {101,14,49}, {102,13,49}, {102,15,49}, {103,14,49}, {104,15,49}, {11,0,50}, {12,0,51}, {13,0,52}, {11,6,53}, {11,8,53}, {12,5,53}, {13,4,53}, {11,5,54}, {12,6,54}, {13,7,54}, {11,4,55}, {12,7,55}, {13,6,55}, {13,8,55}, {66,8,56}, {67,7,56}, {68,6,56}, {68,8,56}, {69,5,56}, {70,4,56}, {71,5,56}, {72,4,56}, {67,4,57}, {68,5,57}, {69,6,57}, {70,7,57}, {71,8,57}, {66,4,58}, {67,5,58}, {68,4,58}, {69,7,58}, {70,6,58}, {70,8,58}, {71,7,58}, {72,8,58}, {66,22,59}, {66,24,59}, {67,21,59}, {67,23,59}, {68,20,59}, {68,22,59}, {69,19,59}, {70,18,59}, {71,17,59}, {71,19,59}, {72,16,59}, {72,18,59}, {66,17,60}, {67,18,60}, {68,19,60}, {69,20,60}, {70,21,60}, {71,22,60}, {72,23,60}, {66,16,61}, {66,18,61}, {67,17,61}, {67,19,61}, {68,18,61}, {69,21,61}, {70,20,61}, {70,22,61}, {71,21,61}, {71,23,61}, {72,22,61}, {72,24,61}, {3,1,62}, {3,2,63}, {3,3,64}, {37,3,65}, {38,2,65}, {39,1,65}, {41,1,65}, {38,1,66}, {39,2,66}, {40,3,66}, {37,1,67}, {39,3,67}, {40,2,67}, {41,3,67}, {37,13,68}, {37,15,68}, {38,12,68}, {38,14,68}, {39,11,68}, {40,10,68}, {41,9,68}, {41,11,68}, {37,10,69}, {38,11,69}, {39,12,69}, {40,13,69}, {41,14,69}, {37,9,70}, {37,11,70}, {38,10,70}, {39,13,70}, {40,12,70}, {40,14,70}, {41,13,70}, {41,15,70}, {73,22,71}, {73,24,71}, {74,21,71}, {74,23,71}, {75,20,71}, {75,22,71}, {76,19,71}, {77,18,71}, {78,17,71}, {78,19,71}, {79,16,71}, {79,18,71}, {73,17,72}, {74,18,72}, {75,19,72}, {76,20,72}, {77,21,72}, {78,22,72}, {79,23,72}, {73,16,73}, {73,18,73}, {74,17,73}, {74,19,73}, {75,18,73}, {76,21,73}, {77,20,73}, {77,22,73}, {78,21,73}, {78,23,73}, {79,22,73}, {79,24,73}, {42,3,74}, {43,2,74}, {44,1,74}, {46,1,74}, {43,1,75}, {44,2,75}, {45,3,75}, {42,1,76}, {44,3,76}, {45,2,76}, {46,3,76}, {42,13,77}, {42,15,77}, {43,12,77}, {43,14,77}, {44,11,77}, {45,10,77}, {46,9,77}, {46,11,77}, {42,10,78}, {43,11,78}, {44,12,78}, {45,13,78}, {46,14,78}, {42,9,79}, {42,11,79}, {43,10,79}, {44,13,79}, {45,12,79}, {45,14,79}, {46,13,79}, {46,15,79}, {123,15,80}, {124,14,80}, {125,13,80}, {125,15,80}, {126,12,80}, {126,14,80}, {127,11,80}, {128,10,80}, {129,9,80}, {129,11,80}, {130,10,80}, {131,9,80}, {124,9,81}, {125,10,81}, {126,11,81}, {127,12,81}, {128,13,81}, {129,14,81}, {130,15,81}, {123,9,82}, {124,10,82}, {125,9,82}, {125,11,82}, {126,10,82}, {127,13,82}, {128,12,82}, {128,14,82}, {129,13,82}, {129,15,82}, {130,14,82}, {131,15,82}, {14,0,83}, {15,0,84}, {16,0,85}, {14,6,86}, {14,8,86}, {15,5,86}, {16,4,86}, {14,5,87}, {15,6,87}, {16,7,87}, {14,4,88}, {15,7,88}, {16,6,88}, {16,8,88}, {80,8,89}, {81,7,89}, {82,6,89}, {82,8,89}, {83,5,89}, {84,4,89}, {85,5,89}, {86,4,89}, {81,4,90}, {82,5,90}, {83,6,90}, {84,7,90}, {85,8,90}, {80,4,91}, {81,5,91}, {82,4,91}, {83,7,91}, {84,6,91}, {84,8,91}, {85,7,91}, {86,8,91}, {80,22,92}, {80,24,92}, {81,21,92}, {81,23,92}, {82,20,92}, {82,22,92}, {83,19,92}, {84,18,92}, {85,17,92}, {85,19,92}, {86,16,92}, {86,18,92}, {80,17,93}, {81,18,93}, {82,19,93}, {83,20,93}, {84,21,93}, {85,22,93}, {86,23,93}, {80,16,94}, {80,18,94}, {81,17,94}, {81,19,94}, {82,18,94}, {83,21,94}, {84,20,94}, {84,22,94}, {85,21,94}, {85,23,94}, {86,22,94}, {86,24,94}, {4,1,95}, {4,2,96}, {4,3,97}, {47,3,98}, {48,2,98}, {49,1,98}, {51,1,98}, {48,1,99}, {49,2,99}, {50,3,99}, {47,1,100}, {49,3,100}, {50,2,100}, {51,3,100}, {47,13,101}, {47,15,101}, {48,12,101}, {48,14,101}, {49,11,101}, {50,10,101}, {51,9,101}, {51,11,101}, {47,10,102}, {48,11,102}, {49,12,102}, {50,13,102}, {51,14,102}, {47,9,103}, {47,11,103}, {48,10,103}, {49,13,103}, {50,12,103}, {50,14,103}, {51,13,103}, {51,15,103}, {132,15,104}, {133,14,104}, {134,13,104}, {134,15,104}, {135,12,104}, {135,14,104}, {136,11,104}, {137,10,104}, {138,9,104}, {138,11,104}, {139,10,104}, {140,9,104}, {133,9,105}, {134,10,105}, {135,11,105}, {136,12,105}, {137,13,105}, {138,14,105}, {139,15,105}, {132,9,106}, {133,10,106}, {134,9,106}, {134,11,106}, {135,10,106}, {136,13,106}, {137,12,106}, {137,14,106}, {138,13,106}, {138,15,106}, {139,14,106}, {140,15,106}, {0,4,107}, {0,5,108}, {0,6,109}, {0,7,110}, {0,8,111}, {1,4,112}, {1,5,113}, {1,6,114}, {1,7,115}, {1,8,116}, {17,0,117}, {18,0,118}, {19,0,119}, {20,0,120}, {21,0,121}, {17,6,122}, {18,7,122}, {19,4,122}, {20,5,122}, {17,7,123}, {18,6,123}, {18,8,123}, {19,5,123}, {20,4,123}, {21,5,123}, {17,4,124}, {18,5,124}, {19,6,124}, {20,7,124}, {21,8,124}, {17,5,125}, {18,4,125}, {19,7,125}, {20,6,125}, {20,8,125}, {21,7,125}, {18,5,126}, {19,8,126}, {20,7,126}, {21,6,126}, {8,3,127}, {10,1,127}, {8,2,128}, {9,1,128}, {8,1,129}, {9,2,129}, {10,3,129}, {9,3,130}, {10,2,130}, {8,1,131}, {10,3,131}, {8,13,132}, {8,15,132}, {9,10,132}, {10,9,132}, {10,11,132}, {8,12,133}, {8,14,133}, {9,11,133}, {10,10,133}, {8,11,134}, {9,12,134}, {10,13,134}, {8,10,135}, {9,13,135}, {10,12,135}, {10,14,135}, {8,9,136}, {8,11,136}, {9,14,136}, {10,13,136}, {10,15,136}, {52,3,137}, {53,2,137}, {54,3,137}, {56,1,137}, {58,1,137}, {53,3,138}, {54,2,138}, {55,1,138}, {57,1,138}, {54,1,139}, {55,2,139}, {56,3,139}, {53,1,140}, {55,3,140}, {56,2,140}, {57,3,140}, {52,1,141}, {54,1,141}, {56,3,141}, {57,2,141}, {58,3,141}, {52,13,142}, {53,12,142}, {54,13,142}, {54,15,142}, {55,10,142}, {56,9,142}, {56,11,142}, {58,11,142}, {52,14,143}, {53,13,143}, {53,15,143}, {54,12,143}, {54,14,143}, {55,11,143}, {56,10,143}, {57,9,143}, {57,11,143}, {58,10,143}, {52,9,144}, {54,11,144}, {55,12,144}, {56,13,144}, {58,15,144}, {52,10,145}, {53,9,145}, {53,11,145}, {54,10,145}, {55,13,145}, {56,12,145}, {56,14,145}, {57,13,145}, {57,15,145}, {58,14,145}, {52,11,146}, {54,9,146}, {54,11,146}, {55,14,146}, {56,13,146}, {56,15,146}, {57,12,146}, {58,13,146}, {2,4,147}, {2,5,148}, {2,6,149}, {2,7,150}, {2,8,151}, {27,0,152}, {28,0,153}, {29,0,154}, {30,0,155}, {31,0,156}, {27,20,157}, {27,24,157}, {28,21,157}, {28,23,157}, {29,18,157}, {30,17,157}, {30,19,157}, {31,16,157}, {27,21,158}, {27,23,158}, {28,20,158}, {28,22,158}, {29,19,158}, {30,18,158}, {31,17,158}, {31,19,158}, {27,18,159}, {28,19,159}, {29,20,159}, {30,21,159}, {31,22,159}, {27,17,160}, {27,19,160}, {28,18,160}, {29,21,160}, {30,20,160}, {30,22,160}, {31,21,160}, {31,23,160}, {27,16,161}, {28,17,161}, {28,19,161}, {29,22,161}, {30,21,161}, {30,23,161}, {31,20,161}, {31,24,161}, {87,22,162}, {88,21,162}, {89,20,162}, {89,24,162}, {90,21,162}, {90,23,162}, {91,18,162}, {92,17,162}, {92,19,162}, {93,16,162}, {94,19,162}, {95,18,162}, {87,23,163}, {88,22,163}, {88,24,163}, {89,21,163}, {89,23,163}, {90,20,163}, {90,22,163}, {91,19,163}, {92,18,163}, {93,17,163}, {93,19,163}, {94,16,163}, {94,18,163}, {95,17,163}, {87,16,164}, {88,17,164}, {89,18,164}, {90,19,164}, {91,20,164}, {92,21,164}, {93,22,164}, {94,23,164}, {95,24,164}, {87,17,165}, {88,16,165}, {88,18,165}, {89,17,165}, {89,19,165}, {90,18,165}, {91,21,165}, {92,20,165}, {92,22,165}, {93,21,165}, {93,23,165}, {94,22,165}, {94,24,165}, {95,23,165}, {87,18,166}, {88,19,166}, {89,16,166}, {90,17,166}, {90,19,166}, {91,22,166}, {92,21,166}, {92,23,166}, {93,20,166}, {93,24,166}, {94,21,166}, {95,22,166}, {32,0,167}, {33,0,168}, {34,0,169}, {35,0,170}, {36,0,171}, {32,6,172}, {33,7,172}, {34,4,172}, {35,5,172}, {32,7,173}, {33,6,173}, {33,8,173}, {34,5,173}, {35,4,173}, {36,5,173}, {32,4,174}, {33,5,174}, {34,6,174}, {35,7,174}, {36,8,174}, {32,5,175}, {33,4,175}, {34,7,175}, {35,6,175}, {35,8,175}, {36,7,175}, {33,5,176}, {34,8,176}, {35,7,176}, {36,6,176}, {32,20,177}, {32,24,177}, {33,21,177}, {33,23,177}, {34,18,177}, {35,17,177}, {35,19,177}, {36,16,177}, {32,21,178}, {32,23,178}, {33,20,178}, {33,22,178}, {34,19,178}, {35,18,178}, {36,17,178}, {36,19,178}, {32,18,179}, {33,19,179}, {34,20,179}, {35,21,179}, {36,22,179}, {32,17,180}, {32,19,180}, {33,18,180}, {34,21,180}, {35,20,180}, {35,22,180}, {36,21,180}, {36,23,180}, {32,16,181}, {33,17,181}, {33,19,181}, {34,22,181}, {35,21,181}, {35,23,181}, {36,20,181}, {36,24,181}, {96,8,182}, {97,7,182}, {98,6,182}, {99,7,182}, {100,4,182}, {101,5,182}, {103,5,182}, {104,4,182}, {97,8,183}, {98,7,183}, {99,6,183}, {99,8,183}, {100,5,183}, {101,4,183}, {102,5,183}, {103,4,183}, {98,4,184}, {99,5,184}, {100,6,184}, {101,7,184}, {102,8,184}, {97,4,185}, {98,5,185}, {99,4,185}, {100,7,185}, {101,6,185}, {101,8,185}, {102,7,185}, {103,8,185}, {96,4,186}, {97,5,186}, {99,5,186}, {100,8,186}, {101,7,186}, {102,6,186}, {103,7,186}, {104,8,186}, {96,22,187}, {97,21,187}, {98,20,187}, {98,24,187}, {99,21,187}, {99,23,187}, {100,18,187}, {101,17,187}, {101,19,187}, {102,16,187}, {103,19,187}, {104,18,187}, {96,23,188}, {97,22,188}, {97,24,188}, {98,21,188}, {98,23,188}, {99,20,188}, {99,22,188}, {100,19,188}, {101,18,188}, {102,17,188}, {102,19,188}, {103,16,188}, {103,18,188}, {104,17,188}, {96,16,189}, {97,17,189}, {98,18,189}, {99,19,189}, {100,20,189}, {101,21,189}, {102,22,189}, {103,23,189}, {104,24,189}, {96,17,190}, {97,16,190}, {97,18,190}, {98,17,190}, {98,19,190}, {99,18,190}, {100,21,190}, {101,20,190}, {101,22,190}, {102,21,190}, {102,23,190}, {103,22,190}, {103,24,190}, {104,23,190}, {96,18,191}, {97,19,191}, {98,16,191}, {99,17,191}, {99,19,191}, {100,22,191}, {101,21,191}, {101,23,191}, {102,20,191}, {102,24,191}, {103,21,191}, {104,22,191}, {11,3,192}, {13,1,192}, {11,2,193}, {12,1,193}, {11,1,194}, {12,2,194}, {13,3,194}, {12,3,195}, {13,2,195}, {11,1,196}, {13,3,196}, {11,13,197}, {11,15,197}, {12,10,197}, {13,9,197}, {13,11,197}, {11,12,198}, {11,14,198}, {12,11,198}, {13,10,198}, {11,11,199}, {12,12,199}, {13,13,199}, {11,10,200}, {12,13,200}, {13,12,200}, {13,14,200}, {11,9,201}, {11,11,201}, {12,14,201}, {13,13,201}, {13,15,201}, {66,3,202}, {67,2,202}, {68,3,202}, {70,1,202}, {72,1,202}, {67,3,203}, {68,2,203}, {69,1,203}, {71,1,203}, {68,1,204}, {69,2,204}, {70,3,204}, {67,1,205}, {69,3,205}, {70,2,205}, {71,3,205}, {66,1,206}, {68,1,206}, {70,3,206}, {71,2,206}, {72,3,206}, {66,13,207}, {67,12,207}, {68,13,207}, {68,15,207}, {69,10,207}, {70,9,207}, {70,11,207}, {72,11,207}, {66,14,208}, {67,13,208}, {67,15,208}, {68,12,208}, {68,14,208}, {69,11,208}, {70,10,208}, {71,9,208}, {71,11,208}, {72,10,208}, {66,9,209}, {68,11,209}, {69,12,209}, {70,13,209}, {72,15,209}, {66,10,210}, {67,9,210}, {67,11,210}, {68,10,210}, {69,13,210}, {70,12,210}, {70,14,210}, {71,13,210}, {71,15,210}, {72,14,210}, {66,11,211}, {68,9,211}, {68,11,211}, {69,14,211}, {70,13,211}, {70,15,211}, {71,12,211}, {72,13,211}, {3,4,212}, {3,5,213}, {3,6,214}, {3,7,215}, {3,8,216}, {37,0,217}, {38,0,218}, {39,0,219}, {40,0,220}, {41,0,221}, {37,6,222}, {38,7,222}, {39,4,222}, {40,5,222}, {37,7,223}, {38,6,223}, {38,8,223}, {39,5,223}, {40,4,223}, {41,5,223}, {37,4,224}, {38,5,224}, {39,6,224}, {40,7,224}, {41,8,224}, {37,5,225}, {38,4,225}, {39,7,225}, {40,6,225}, {40,8,225}, {41,7,225}, {38,5,226}, {39,8,226}, {40,7,226}, {41,6,226}, {37,20,227}, {37,24,227}, {38,21,227}, {38,23,227}, {39,18,227}, {40,17,227}, {40,19,227}, {41,16,227}, {37,21,228}, {37,23,228}, {38,20,228}, {38,22,228}, {39,19,228}, {40,18,228}, {41,17,228}, {41,19,228}, {37,18,229}, {38,19,229}, {39,20,229}, {40,21,229}, {41,22,229}, {37,17,230}, {37,19,230}, {38,18,230}, {39,21,230}, {40,20,230}, {40,22,230}, {41,21,230}, {41,23,230}, {37,16,231}, {38,17,231}, {38,19,231}, {39,22,231}, {40,21,231}, {40,23,231}, {41,20,231}, {41,24,231}, {105,8,232}, {106,7,232}, {107,6,232}, {108,7,232}, {109,4,232}, {110,5,232}, {112,5,232}, {113,4,232}, {106,8,233}, {107,7,233}, {108,6,233}, {108,8,233}, {109,5,233}, {110,4,233}, {111,5,233}, {112,4,233}, {107,4,234}, {108,5,234}, {109,6,234}, {110,7,234}, {111,8,234}, {106,4,235}, {107,5,235}, {108,4,235}, {109,7,235}, {110,6,235}, {110,8,235}, {111,7,235}, {112,8,235}, {105,4,236}, {106,5,236}, {108,5,236}, {109,8,236}, {110,7,236}, {111,6,236}, {112,7,236}, {113,8,236}, {105,22,237}, {106,21,237}, {107,20,237}, {107,24,237}, {108,21,237}, {108,23,237}, {109,18,237}, {110,17,237}, {110,19,237}, {111,16,237}, {112,19,237}, {113,18,237}, {105,23,238}, {106,22,238}, {106,24,238}, {107,21,238}, {107,23,238}, {108,20,238}, {108,22,238}, {109,19,238}, {110,18,238}, {111,17,238}, {111,19,238}, {112,16,238}, {112,18,238}, {113,17,238}, {105,16,239}, {106,17,239}, {107,18,239}, {108,19,239}, {109,20,239}, {110,21,239}, {111,22,239}, {112,23,239}, {113,24,239}, {105,17,240}, {106,16,240}, {106,18,240}, {107,17,240}, {107,19,240}, {108,18,240}, {109,21,240}, {110,20,240}, {110,22,240}, {111,21,240}, {111,23,240}, {112,22,240}, {112,24,240}, {113,23,240}, {105,18,241}, {106,19,241}, {107,16,241}, {108,17,241}, {108,19,241}, {109,22,241}, {110,21,241}, {110,23,241}, {111,20,241}, {111,24,241}, {112,21,241}, {113,22,241}, {73,3,242}, {74,2,242}, {75,3,242}, {77,1,242}, {79,1,242}, {74,3,243}, {75,2,243}, {76,1,243}, {78,1,243}, {75,1,244}, {76,2,244}, {77,3,244}, {74,1,245}, {76,3,245}, {77,2,245}, {78,3,245}, {73,1,246}, {75,1,246}, {77,3,246}, {78,2,246}, {79,3,246}, {73,13,247}, {74,12,247}, {75,13,247}, {75,15,247}, {76,10,247}, {77,9,247}, {77,11,247}, {79,11,247}, {73,14,248}, {74,13,248}, {74,15,248}, {75,12,248}, {75,14,248}, {76,11,248}, {77,10,248}, {78,9,248}, {78,11,248}, {79,10,248}, {73,9,249}, {75,11,249}, {76,12,249}, {77,13,249}, {79,15,249}, {73,10,250}, {74,9,250}, {74,11,250}, {75,10,250}, {76,13,250}, {77,12,250}, {77,14,250}, {78,13,250}, {78,15,250}, {79,14,250}, {73,11,251}, {75,9,251}, {75,11,251}, {76,14,251}, {77,13,251}, {77,15,251}, {78,12,251}, {79,13,251}, {42,0,252}, {43,0,253}, {44,0,254}, {45,0,255}, {46,0,256}, {42,6,257}, {43,7,257}, {44,4,257}, {45,5,257}, {42,7,258}, {43,6,258}, {43,8,258}, {44,5,258}, {45,4,258}, {46,5,258}, {42,4,259}, {43,5,259}, {44,6,259}, {45,7,259}, {46,8,259}, {42,5,260}, {43,4,260}, {44,7,260}, {45,6,260}, {45,8,260}, {46,7,260}, {43,5,261}, {44,8,261}, {45,7,261}, {46,6,261}, {42,20,262}, {42,24,262}, {43,21,262}, {43,23,262}, {44,18,262}, {45,17,262}, {45,19,262}, {46,16,262}, {42,21,263}, {42,23,263}, {43,20,263}, {43,22,263}, {44,19,263}, {45,18,263}, {46,17,263}, {46,19,263}, {42,18,264}, {43,19,264}, {44,20,264}, {45,21,264}, {46,22,264}, {42,17,265}, {42,19,265}, {43,18,265}, {44,21,265}, {45,20,265}, {45,22,265}, {46,21,265}, {46,23,265}, {42,16,266}, {43,17,266}, {43,19,266}, {44,22,266}, {45,21,266}, {45,23,266}, {46,20,266}, {46,24,266}, {123,8,267}, {124,7,267}, {125,6,267}, {126,7,267}, {127,4,267}, {128,5,267}, {130,5,267}, {131,4,267}, {124,8,268}, {125,7,268}, {126,6,268}, {126,8,268}, {127,5,268}, {128,4,268}, {129,5,268}, {130,4,268}, {125,4,269}, {126,5,269}, {127,6,269}, {128,7,269}, {129,8,269}, {124,4,270}, {125,5,270}, {126,4,270}, {127,7,270}, {128,6,270}, {128,8,270}, {129,7,270}, {130,8,270}, {123,4,271}, {124,5,271}, {126,5,271}, {127,8,271}, {128,7,271}, {129,6,271}, {130,7,271}, {131,8,271}, {123,22,272}, {124,21,272}, {125,20,272}, {125,24,272}, {126,21,272}, {126,23,272}, {127,18,272}, {128,17,272}, {128,19,272}, {129,16,272}, {130,19,272}, {131,18,272}, {123,23,273}, {124,22,273}, {124,24,273}, {125,21,273}, {125,23,273}, {126,20,273}, {126,22,273}, {127,19,273}, {128,18,273}, {129,17,273}, {129,19,273}, {130,16,273}, {130,18,273}, {131,17,273}, {123,16,274}, {124,17,274}, {125,18,274}, {126,19,274}, {127,20,274}, {128,21,274}, {129,22,274}, {130,23,274}, {131,24,274}, {123,17,275}, {124,16,275}, {124,18,275}, {125,17,275}, {125,19,275}, {126,18,275}, {127,21,275}, {128,20,275}, {128,22,275}, {129,21,275}, {129,23,275}, {130,22,275}, {130,24,275}, {131,23,275}, {123,18,276}, {124,19,276}, {125,16,276}, {126,17,276}, {126,19,276}, {127,22,276}, {128,21,276}, {128,23,276}, {129,20,276}, {129,24,276}, {130,21,276}, {131,22,276}, {14,3,277}, {16,1,277}, {14,2,278}, {15,1,278}, {14,1,279}, {15,2,279}, {16,3,279}, {15,3,280}, {16,2,280}, {14,1,281}, {16,3,281}, {14,13,282}, {14,15,282}, {15,10,282}, {16,9,282}, {16,11,282}, {14,12,283}, {14,14,283}, {15,11,283}, {16,10,283}, {14,11,284}, {15,12,284}, {16,13,284}, {14,10,285}, {15,13,285}, {16,12,285}, {16,14,285}, {14,9,286}, {14,11,286}, {15,14,286}, {16,13,286}, {16,15,286}, {80,3,287}, {81,2,287}, {82,3,287}, {84,1,287}, {86,1,287}, {81,3,288}, {82,2,288}, {83,1,288}, {85,1,288}, {82,1,289}, {83,2,289}, {84,3,289}, {81,1,290}, {83,3,290}, {84,2,290}, {85,3,290}, {80,1,291}, {82,1,291}, {84,3,291}, {85,2,291}, {86,3,291}, {80,13,292}, {81,12,292}, {82,13,292}, {82,15,292}, {83,10,292}, {84,9,292}, {84,11,292}, {86,11,292}, {80,14,293}, {81,13,293}, {81,15,293}, {82,12,293}, {82,14,293}, {83,11,293}, {84,10,293}, {85,9,293}, {85,11,293}, {86,10,293}, {80,9,294}, {82,11,294}, {83,12,294}, {84,13,294}, {86,15,294}, {80,10,295}, {81,9,295}, {81,11,295}, {82,10,295}, {83,13,295}, {84,12,295}, {84,14,295}, {85,13,295}, {85,15,295}, {86,14,295}, {80,11,296}, {82,9,296}, {82,11,296}, {83,14,296}, {84,13,296}, {84,15,296}, {85,12,296}, {86,13,296}, {4,4,297}, {4,5,298}, {4,6,299}, {4,7,300}, {4,8,301}, {47,0,302}, {48,0,303}, {49,0,304}, {50,0,305}, {51,0,306}, {47,6,307}, {48,7,307}, {49,4,307}, {50,5,307}, {47,7,308}, {48,6,308}, {48,8,308}, {49,5,308}, {50,4,308}, {51,5,308}, {47,4,309}, {48,5,309}, {49,6,309}, {50,7,309}, {51,8,309}, {47,5,310}, {48,4,310}, {49,7,310}, {50,6,310}, {50,8,310}, {51,7,310}, {48,5,311}, {49,8,311}, {50,7,311}, {51,6,311}, {47,20,312}, {47,24,312}, {48,21,312}, {48,23,312}, {49,18,312}, {50,17,312}, {50,19,312}, {51,16,312}, {47,21,313}, {47,23,313}, {48,20,313}, {48,22,313}, {49,19,313}, {50,18,313}, {51,17,313}, {51,19,313}, {47,18,314}, {48,19,314}, {49,20,314}, {50,21,314}, {51,22,314}, {47,17,315}, {47,19,315}, {48,18,315}, {49,21,315}, {50,20,315}, {50,22,315}, {51,21,315}, {51,23,315}, {47,16,316}, {48,17,316}, {48,19,316}, {49,22,316}, {50,21,316}, {50,23,316}, {51,20,316}, {51,24,316}, {132,8,317}, {133,7,317}, {134,6,317}, {135,7,317}, {136,4,317}, {137,5,317}, {139,5,317}, {140,4,317}, {133,8,318}, {134,7,318}, {135,6,318}, {135,8,318}, {136,5,318}, {137,4,318}, {138,5,318}, {139,4,318}, {134,4,319}, {135,5,319}, {136,6,319}, {137,7,319}, {138,8,319}, {133,4,320}, {134,5,320}, {135,4,320}, {136,7,320}, {137,6,320}, {137,8,320}, {138,7,320}, {139,8,320}, {132,4,321}, {133,5,321}, {135,5,321}, {136,8,321}, {137,7,321}, {138,6,321}, {139,7,321}, {140,8,321}, {0,9,322}, {0,10,323}, {0,11,324}, {0,12,325}, {0,13,326}, {0,14,327}, {0,15,328}, {1,9,329}, {1,10,330}, {1,11,331}, {1,12,332}, {1,13,333}, {1,14,334}, {1,15,335}, {17,3,336}, {21,1,336}, {17,2,337}, {18,3,337}, {20,1,337}, {17,3,338}, {18,2,338}, {19,1,338}, {21,1,338}, {18,1,339}, {19,2,339}, {20,3,339}, {17,1,340}, {19,3,340}, {20,2,340}, {21,3,340}, {18,1,341}, {20,3,341}, {21,2,341}, {17,1,342}, {21,3,342}, {17,13,343}, {18,14,343}, {19,9,343}, {20,10,343}, {21,11,343}, {17,12,344}, {18,13,344}, {18,15,344}, {20,9,344}, {20,11,344}, {17,13,345}, {17,15,345}, {18,12,345}, {18,14,345}, {19,11,345}, {20,10,345}, {21,9,345}, {21,11,345}, {17,10,346}, {18,11,346}, {19,12,346}, {20,13,346}, {21,14,346}, {17,9,347}, {17,11,347}, {18,10,347}, {19,13,347}, {20,12,347}, {20,14,347}, {21,13,347}, {21,15,347}, {18,9,348}, {18,11,348}, {20,13,348}, {20,15,348}, {21,12,348}, {17,11,349}, {18,10,349}, {19,15,349}, {20,14,349}, {21,13,349}, {8,8,350}, {10,4,350}, {8,7,351}, {9,4,351}, {10,5,351}, {8,6,352}, {8,8,352}, {9,5,352}, {10,4,352}, {8,5,353}, {9,6,353}, {10,7,353}, {8,4,354}, {9,7,354}, {10,6,354}, {10,8,354}, {8,5,355}, {9,8,355}, {10,7,355}, {8,4,356}, {10,8,356}, {8,22,357}, {8,24,357}, {9,17,357}, {10,16,357}, {10,18,357}, {8,21,358}, {8,23,358}, {9,18,358}, {10,17,358}, {10,19,358}, {8,20,359}, {8,22,359}, {9,19,359}, {10,18,359}, {8,19,360}, {9,20,360}, {10,21,360}, {8,18,361}, {9,21,361}, {10,20,361}, {10,22,361}, {8,17,362}, {8,19,362}, {9,22,362}, {10,21,362}, {10,23,362}, {8,16,363}, {8,18,363}, {9,23,363}, {10,22,363}, {10,24,363}, {52,0,364}, {53,0,365}, {54,0,366}, {55,0,367}, {56,0,368}, {57,0,369}, {58,0,370}, {52,6,371}, {53,7,371}, {54,8,371}, {56,4,371}, {57,5,371}, {52,7,372}, {54,7,372}, {55,4,372}, {56,5,372}, {58,5,372}, {52,8,373}, {53,7,373}, {54,6,373}, {54,8,373}, {55,5,373}, {56,4,373}, {57,5,373}, {58,4,373}, {53,4,374}, {54,5,374}, {55,6,374}, {56,7,374}, {57,8,374}, {52,4,375}, {53,5,375}, {54,4,375}, {55,7,375}, {56,6,375}, {56,8,375}, {57,7,375}, {58,8,375}, {52,5,376}, {54,5,376}, {55,8,376}, {56,7,376}, {58,7,376}, {53,5,377}, {54,4,377}, {56,8,377}, {57,7,377}, {58,6,377}, {52,20,378}, {53,21,378}, {54,22,378}, {54,24,378}, {55,17,378}, {56,16,378}, {56,18,378}, {57,19,378}, {52,21,379}, {53,20,379}, {53,24,379}, {54,21,379}, {54,23,379}, {55,18,379}, {56,17,379}, {56,19,379}, {57,16,379}, {58,19,379}, {52,22,380}, {52,24,380}, {53,21,380}, {53,23,380}, {54,20,380}, {54,22,380}, {55,19,380}, {56,18,380}, {57,17,380}, {57,19,380}, {58,16,380}, {58,18,380}, {52,17,381}, {53,18,381}, {54,19,381}, {55,20,381}, {56,21,381}, {57,22,381}, {58,23,381}, {52,16,382}, {52,18,382}, {53,17,382}, {53,19,382}, {54,18,382}, {55,21,382}, {56,20,382}, {56,22,382}, {57,21,382}, {57,23,382}, {58,22,382}, {58,24,382}, {52,19,383}, {53,16,383}, {54,17,383}, {54,19,383}, {55,22,383}, {56,21,383}, {56,23,383}, {57,20,383}, {57,24,383}, {58,21,383}, {53,19,384}, {54,16,384}, {54,18,384}, {55,23,384}, {56,22,384}, {56,24,384}, {57,21,384}, {58,20,384}, {2,9,385}, {2,10,386}, {2,11,387}, {2,12,388}, {2,13,389}, {2,14,390}, {2,15,391}, {27,3,392}, {31,1,392}, {27,2,393}, {28,3,393}, {30,1,393}, {27,3,394}, {28,2,394}, {29,1,394}, {31,1,394}, {28,1,395}, {29,2,395}, {30,3,395}, {27,1,396}, {29,3,396}, {30,2,396}, {31,3,396}, {28,1,397}, {30,3,397}, {31,2,397}, {27,1,398}, {31,3,398}, {27,13,399}, {28,14,399}, {29,9,399}, {30,10,399}, {31,11,399}, {27,12,400}, {28,13,400}, {28,15,400}, {30,9,400}, {30,11,400}, {27,13,401}, {27,15,401}, {28,12,401}, {28,14,401}, {29,11,401}, {30,10,401}, {31,9,401}, {31,11,401}, {27,10,402}, {28,11,402}, {29,12,402}, {30,13,402}, {31,14,402}, {27,9,403}, {27,11,403}, {28,10,403}, {29,13,403}, {30,12,403}, {30,14,403}, {31,13,403}, {31,15,403}, {28,9,404}, {28,11,404}, {30,13,404}, {30,15,404}, {31,12,404}, {27,11,405}, {28,10,405}, {29,15,405}, {30,14,405}, {31,13,405}, {87,3,406}, {88,2,406}, {89,3,406}, {93,1,406}, {95,1,406}, {88,3,407}, {89,2,407}, {90,3,407}, {92,1,407}, {94,1,407}, {89,3,408}, {90,2,408}, {91,1,408}, {93,1,408}, {90,1,409}, {91,2,409}, {92,3,409}, {89,1,410}, {91,3,410}, {92,2,410}, {93,3,410}, {88,1,411}, {90,1,411}, {92,3,411}, {93,2,411}, {94,3,411}, {87,1,412}, {89,1,412}, {93,3,412}, {94,2,412}, {95,3,412}, {87,13,413}, {88,12,413}, {89,13,413}, {90,14,413}, {91,9,413}, {92,10,413}, {93,11,413}, {95,11,413}, {87,14,414}, {88,13,414}, {89,12,414}, {90,13,414}, {90,15,414}, {91,10,414}, {92,9,414}, {92,11,414}, {94,11,414}, {95,10,414}, {87,15,415}, {88,14,415}, {89,13,415}, {89,15,415}, {90,12,415}, {90,14,415}, {91,11,415}, {92,10,415}, {93,9,415}, {93,11,415}, {94,10,415}, {95,9,415}, {88,9,416}, {89,10,416}, {90,11,416}, {91,12,416}, {92,13,416}, {93,14,416}, {94,15,416}, {87,9,417}, {88,10,417}, {89,9,417}, {89,11,417}, {90,10,417}, {91,13,417}, {92,12,417}, {92,14,417}, {93,13,417}, {93,15,417}, {94,14,417}, {95,15,417}, {87,10,418}, {88,11,418}, {90,9,418}, {90,11,418}, {91,14,418}, {92,13,418}, {92,15,418}, {93,12,418}, {94,13,418}, {95,14,418}, {87,11,419}, {89,11,419}, {90,10,419}, {91,15,419}, {92,14,419}, {93,13,419}, {94,12,419}, {95,13,419}, {32,3,420}, {36,1,420}, {32,2,421}, {33,3,421}, {35,1,421}, {32,3,422}, {33,2,422}, {34,1,422}, {36,1,422}, {33,1,423}, {34,2,423}, {35,3,423}, {32,1,424}, {34,3,424}, {35,2,424}, {36,3,424}, {33,1,425}, {35,3,425}, {36,2,425}, {32,1,426}, {36,3,426}, {32,13,427}, {33,14,427}, {34,9,427}, {35,10,427}, {36,11,427}, {32,12,428}, {33,13,428}, {33,15,428}, {35,9,428}, {35,11,428}, {32,13,429}, {32,15,429}, {33,12,429}, {33,14,429}, {34,11,429}, {35,10,429}, {36,9,429}, {36,11,429}, {32,10,430}, {33,11,430}, {34,12,430}, {35,13,430}, {36,14,430}, {32,9,431}, {32,11,431}, {33,10,431}, {34,13,431}, {35,12,431}, {35,14,431}, {36,13,431}, {36,15,431}, {33,9,432}, {33,11,432}, {35,13,432}, {35,15,432}, {36,12,432}, {32,11,433}, {33,10,433}, {34,15,433}, {35,14,433}, {36,13,433}, {96,3,434}, {97,2,434}, {98,3,434}, {102,1,434}, {104,1,434}, {97,3,435}, {98,2,435}, {99,3,435}, {101,1,435}, {103,1,435}, {98,3,436}, {99,2,436}, {100,1,436}, {102,1,436}, {99,1,437}, {100,2,437}, {101,3,437}, {98,1,438}, {100,3,438}, {101,2,438}, {102,3,438}, {97,1,439}, {99,1,439}, {101,3,439}, {102,2,439}, {103,3,439}, {96,1,440}, {98,1,440}, {102,3,440}, {103,2,440}, {104,3,440}, {96,13,441}, {97,12,441}, {98,13,441}, {99,14,441}, {100,9,441}, {101,10,441}, {102,11,441}, {104,11,441}, {96,14,442}, {97,13,442}, {98,12,442}, {99,13,442}, {99,15,442}, {100,10,442}, {101,9,442}, {101,11,442}, {103,11,442}, {104,10,442}, {96,15,443}, {97,14,443}, {98,13,443}, {98,15,443}, {99,12,443}, {99,14,443}, {100,11,443}, {101,10,443}, {102,9,443}, {102,11,443}, {103,10,443}, {104,9,443}, {97,9,444}, {98,10,444}, {99,11,444}, {100,12,444}, {101,13,444}, {102,14,444}, {103,15,444}, {96,9,445}, {97,10,445}, {98,9,445}, {98,11,445}, {99,10,445}, {100,13,445}, {101,12,445}, {101,14,445}, {102,13,445}, {102,15,445}, {103,14,445}, {104,15,445}, {96,10,446}, {97,11,446}, {99,9,446}, {99,11,446}, {100,14,446}, {101,13,446}, {101,15,446}, {102,12,446}, {103,13,446}, {104,14,446}, {96,11,447}, {98,11,447}, {99,10,447}, {100,15,447}, {101,14,447}, {102,13,447}, {103,12,447}, {104,13,447}, {11,8,448}, {13,4,448}, {11,7,449}, {12,4,449}, {13,5,449}, {11,6,450}, {11,8,450}, {12,5,450}, {13,4,450}, {11,5,451}, {12,6,451}, {13,7,451}, {11,4,452}, {12,7,452}, {13,6,452}, {13,8,452}, {11,5,453}, {12,8,453}, {13,7,453}, {11,4,454}, {13,8,454}, {11,22,455}, {11,24,455}, {12,17,455}, {13,16,455}, {13,18,455}, {11,21,456}, {11,23,456}, {12,18,456}, {13,17,456}, {13,19,456}, {11,20,457}, {11,22,457}, {12,19,457}, {13,18,457}, {11,19,458}, {12,20,458}, {13,21,458}, {11,18,459}, {12,21,459}, {13,20,459}, {13,22,459}, {11,17,460}, {11,19,460}, {12,22,460}, {13,21,460}, {13,23,460}, {11,16,461}, {11,18,461}, {12,23,461}, {13,22,461}, {13,24,461}, {66,0,462}, {67,0,463}, {68,0,464}, {69,0,465}, {70,0,466}, {71,0,467}, {72,0,468}, {66,6,469}, {67,7,469}, {68,8,469}, {70,4,469}, {71,5,469}, {66,7,470}, {68,7,470}, {69,4,470}, {70,5,470}, {72,5,470}, {66,8,471}, {67,7,471}, {68,6,471}, {68,8,471}, {69,5,471}, {70,4,471}, {71,5,471}, {72,4,471}, {67,4,472}, {68,5,472}, {69,6,472}, {70,7,472}, {71,8,472}, {66,4,473}, {67,5,473}, {68,4,473}, {69,7,473}, {70,6,473}, {70,8,473}, {71,7,473}, {72,8,473}, {66,5,474}, {68,5,474}, {69,8,474}, {70,7,474}, {72,7,474}, {67,5,475}, {68,4,475}, {70,8,475}, {71,7,475}, {72,6,475}, {66,20,476}, {67,21,476}, {68,22,476}, {68,24,476}, {69,17,476}, {70,16,476}, {70,18,476}, {71,19,476}, {66,21,477}, {67,20,477}, {67,24,477}, {68,21,477}, {68,23,477}, {69,18,477}, {70,17,477}, {70,19,477}, {71,16,477}, {72,19,477}, {66,22,478}, {66,24,478}, {67,21,478}, {67,23,478}, {68,20,478}, {68,22,478}, {69,19,478}, {70,18,478}, {71,17,478}, {71,19,478}, {72,16,478}, {72,18,478}, {66,17,479}, {67,18,479}, {68,19,479}, {69,20,479}, {70,21,479}, {71,22,479}, {72,23,479}, {66,16,480}, {66,18,480}, {67,17,480}, {67,19,480}, {68,18,480}, {69,21,480}, {70,20,480}, {70,22,480}, {71,21,480}, {71,23,480}, {72,22,480}, {72,24,480}, {66,19,481}, {67,16,481}, {68,17,481}, {68,19,481}, {69,22,481}, {70,21,481}, {70,23,481}, {71,20,481}, {71,24,481}, {72,21,481}, {67,19,482}, {68,16,482}, {68,18,482}, {69,23,482}, {70,22,482}, {70,24,482}, {71,21,482}, {72,20,482}, {3,9,483}, {3,10,484}, {3,11,485}, {3,12,486}, {3,13,487}, {3,14,488}, {3,15,489}, {37,3,490}, {41,1,490}, {37,2,491}, {38,3,491}, {40,1,491}, {37,3,492}, {38,2,492}, {39,1,492}, {41,1,492}, {38,1,493}, {39,2,493}, {40,3,493}, {37,1,494}, {39,3,494}, {40,2,494}, {41,3,494}, {38,1,495}, {40,3,495}, {41,2,495}, {37,1,496}, {41,3,496}, {37,13,497}, {38,14,497}, {39,9,497}, {40,10,497}, {41,11,497}, {37,12,498}, {38,13,498}, {38,15,498}, {40,9,498}, {40,11,498}, {37,13,499}, {37,15,499}, {38,12,499}, {38,14,499}, {39,11,499}, {40,10,499}, {41,9,499}, {41,11,499}, {37,10,500}, {38,11,500}, {39,12,500}, {40,13,500}, {41,14,500}, {37,9,501}, {37,11,501}, {38,10,501}, {39,13,501}, {40,12,501}, {40,14,501}, {41,13,501}, {41,15,501}, {38,9,502}, {38,11,502}, {40,13,502}, {40,15,502}, {41,12,502}, {37,11,503}, {38,10,503}, {39,15,503}, {40,14,503}, {41,13,503}, {105,3,504}, {106,2,504}, {107,3,504}, {111,1,504}, {113,1,504}, {106,3,505}, {107,2,505}, {108,3,505}, {110,1,505}, {112,1,505}, {107,3,506}, {108,2,506}, {109,1,506}, {111,1,506}, {108,1,507}, {109,2,507}, {110,3,507}, {107,1,508}, {109,3,508}, {110,2,508}, {111,3,508}, {106,1,509}, {108,1,509}, {110,3,509}, {111,2,509}, {112,3,509}, {105,1,510}, {107,1,510}, {111,3,510}, {112,2,510}, {113,3,510}, {105,13,511}, {106,12,511}, {107,13,511}, {108,14,511}, {109,9,511}, {110,10,511}, {111,11,511}, {113,11,511}, {105,14,512}, {106,13,512}, {107,12,512}, {108,13,512}, {108,15,512}, {109,10,512}, {110,9,512}, {110,11,512}, {112,11,512}, {113,10,512}, {105,15,513}, {106,14,513}, {107,13,513}, {107,15,513}, {108,12,513}, {108,14,513}, {109,11,513}, {110,10,513}, {111,9,513}, {111,11,513}, {112,10,513}, {113,9,513}, {106,9,514}, {107,10,514}, {108,11,514}, {109,12,514}, {110,13,514}, {111,14,514}, {112,15,514}, {105,9,515}, {106,10,515}, {107,9,515}, {107,11,515}, {108,10,515}, {109,13,515}, {110,12,515}, {110,14,515}, {111,13,515}, {111,15,515}, {112,14,515}, {113,15,515}, {105,10,516}, {106,11,516}, {108,9,516}, {108,11,516}, {109,14,516}, {110,13,516}, {110,15,516}, {111,12,516}, {112,13,516}, {113,14,516}, {105,11,517}, {107,11,517}, {108,10,517}, {109,15,517}, {110,14,517}, {111,13,517}, {112,12,517}, {113,13,517}, {73,0,518}, {74,0,519}, {75,0,520}, {76,0,521}, {77,0,522}, {78,0,523}, {79,0,524}, {73,6,525}, {74,7,525}, {75,8,525}, {77,4,525}, {78,5,525}, {73,7,526}, {75,7,526}, {76,4,526}, {77,5,526}, {79,5,526}, {73,8,527}, {74,7,527}, {75,6,527}, {75,8,527}, {76,5,527}, {77,4,527}, {78,5,527}, {79,4,527}, {74,4,528}, {75,5,528}, {76,6,528}, {77,7,528}, {78,8,528}, {73,4,529}, {74,5,529}, {75,4,529}, {76,7,529}, {77,6,529}, {77,8,529}, {78,7,529}, {79,8,529}, {73,5,530}, {75,5,530}, {76,8,530}, {77,7,530}, {79,7,530}, {74,5,531}, {75,4,531}, {77,8,531}, {78,7,531}, {79,6,531}, {73,20,532}, {74,21,532}, {75,22,532}, {75,24,532}, {76,17,532}, {77,16,532}, {77,18,532}, {78,19,532}, {73,21,533}, {74,20,533}, {74,24,533}, {75,21,533}, {75,23,533}, {76,18,533}, {77,17,533}, {77,19,533}, {78,16,533}, {79,19,533}, {73,22,534}, {73,24,534}, {74,21,534}, {74,23,534}, {75,20,534}, {75,22,534}, {76,19,534}, {77,18,534}, {78,17,534}, {78,19,534}, {79,16,534}, {79,18,534}, {73,17,535}, {74,18,535}, {75,19,535}, {76,20,535}, {77,21,535}, {78,22,535}, {79,23,535}, {73,16,536}, {73,18,536}, {74,17,536}, {74,19,536}, {75,18,536}, {76,21,536}, {77,20,536}, {77,22,536}, {78,21,536}, {78,23,536}, {79,22,536}, {79,24,536}, {73,19,537}, {74,16,537}, {75,17,537}, {75,19,537}, {76,22,537}, {77,21,537}, {77,23,537}, {78,20,537}, {78,24,537}, {79,21,537}, {74,19,538}, {75,16,538}, {75,18,538}, {76,23,538}, {77,22,538}, {77,24,538}, {78,21,538}, {79,20,538}, {42,3,539}, {46,1,539}, {42,2,540}, {43,3,540}, {45,1,540}, {42,3,541}, {43,2,541}, {44,1,541}, {46,1,541}, {43,1,542}, {44,2,542}, {45,3,542}, {42,1,543}, {44,3,543}, {45,2,543}, {46,3,543}, {43,1,544}, {45,3,544}, {46,2,544}, {42,1,545}, {46,3,545}, {42,13,546}, {43,14,546}, {44,9,546}, {45,10,546}, {46,11,546}, {42,12,547}, {43,13,547}, {43,15,547}, {45,9,547}, {45,11,547}, {42,13,548}, {42,15,548}, {43,12,548}, {43,14,548}, {44,11,548}, {45,10,548}, {46,9,548}, {46,11,548}, {42,10,549}, {43,11,549}, {44,12,549}, {45,13,549}, {46,14,549}, {42,9,550}, {42,11,550}, {43,10,550}, {44,13,550}, {45,12,550}, {45,14,550}, {46,13,550}, {46,15,550}, {43,9,551}, {43,11,551}, {45,13,551}, {45,15,551}, {46,12,551}, {42,11,552}, {43,10,552}, {44,15,552}, {45,14,552}, {46,13,552}, {123,3,553}, {124,2,553}, {125,3,553}, {129,1,553}, {131,1,553}, {124,3,554}, {125,2,554}, {126,3,554}, {128,1,554}, {130,1,554}, {125,3,555}, {126,2,555}, {127,1,555}, {129,1,555}, {126,1,556}, {127,2,556}, {128,3,556}, {125,1,557}, {127,3,557}, {128,2,557}, {129,3,557}, {124,1,558}, {126,1,558}, {128,3,558}, {129,2,558}, {130,3,558}, {123,1,559}, {125,1,559}, {129,3,559}, {130,2,559}, {131,3,559}, {123,13,560}, {124,12,560}, {125,13,560}, {126,14,560}, {127,9,560}, {128,10,560}, {129,11,560}, {131,11,560}, {123,14,561}, {124,13,561}, {125,12,561}, {126,13,561}, {126,15,561}, {127,10,561}, {128,9,561}, {128,11,561}, {130,11,561}, {131,10,561}, {123,15,562}, {124,14,562}, {125,13,562}, {125,15,562}, {126,12,562}, {126,14,562}, {127,11,562}, {128,10,562}, {129,9,562}, {129,11,562}, {130,10,562}, {131,9,562}, {124,9,563}, {125,10,563}, {126,11,563}, {127,12,563}, {128,13,563}, {129,14,563}, {130,15,563}, {123,9,564}, {124,10,564}, {125,9,564}, {125,11,564}, {126,10,564}, {127,13,564}, {128,12,564}, {128,14,564}, {129,13,564}, {129,15,564}, {130,14,564}, {131,15,564}, {123,10,565}, {124,11,565}, {126,9,565}, {126,11,565}, {127,14,565}, {128,13,565}, {128,15,565}, {129,12,565}, {130,13,565}, {131,14,565}, {123,11,566}, {125,11,566}, {126,10,566}, {127,15,566}, {128,14,566}, {129,13,566}, {130,12,566}, {131,13,566}, {14,8,567}, {16,4,567}, {14,7,568}, {15,4,568}, {16,5,568}, {14,6,569}, {14,8,569}, {15,5,569}, {16,4,569}, {14,5,570}, {15,6,570}, {16,7,570}, {14,4,571}, {15,7,571}, {16,6,571}, {16,8,571}, {14,5,572}, {15,8,572}, {16,7,572}, {14,4,573}, {16,8,573}, {14,22,574}, {14,24,574}, {15,17,574}, {16,16,574}, {16,18,574}, {14,21,575}, {14,23,575}, {15,18,575}, {16,17,575}, {16,19,575}, {14,20,576}, {14,22,576}, {15,19,576}, {16,18,576}, {14,19,577}, {15,20,577}, {16,21,577}, {14,18,578}, {15,21,578}, {16,20,578}, {16,22,578}, {14,17,579}, {14,19,579}, {15,22,579}, {16,21,579}, {16,23,579}, {14,16,580}, {14,18,580}, {15,23,580}, {16,22,580}, {16,24,580}, {80,0,581}, {81,0,582}, {82,0,583}, {83,0,584}, {84,0,585}, {85,0,586}, {86,0,587}, {80,6,588}, {81,7,588}, {82,8,588}, {84,4,588}, {85,5,588}, {80,7,589}, {82,7,589}, {83,4,589}, {84,5,589}, {86,5,589}, {80,8,590}, {81,7,590}, {82,6,590}, {82,8,590}, {83,5,590}, {84,4,590}, {85,5,590}, {86,4,590}, {81,4,591}, {82,5,591}, {83,6,591}, {84,7,591}, {85,8,591}, {80,4,592}, {81,5,592}, {82,4,592}, {83,7,592}, {84,6,592}, {84,8,592}, {85,7,592}, {86,8,592}, {80,5,593}, {82,5,593}, {83,8,593}, {84,7,593}, {86,7,593}, {81,5,594}, {82,4,594}, {84,8,594}, {85,7,594}, {86,6,594}, {80,20,595}, {81,21,595}, {82,22,595}, {82,24,595}, {83,17,595}, {84,16,595}, {84,18,595}, {85,19,595}, {80,21,596}, {81,20,596}, {81,24,596}, {82,21,596}, {82,23,596}, {83,18,596}, {84,17,596}, {84,19,596}, {85,16,596}, {86,19,596}, {80,22,597}, {80,24,597}, {81,21,597}, {81,23,597}, {82,20,597}, {82,22,597}, {83,19,597}, {84,18,597}, {85,17,597}, {85,19,597}, {86,16,597}, {86,18,597}, {80,17,598}, {81,18,598}, {82,19,598}, {83,20,598}, {84,21,598}, {85,22,598}, {86,23,598}, {80,16,599}, {80,18,599}, {81,17,599}, {81,19,599}, {82,18,599}, {83,21,599}, {84,20,599}, {84,22,599}, {85,21,599}, {85,23,599}, {86,22,599}, {86,24,599}, {80,19,600}, {81,16,600}, {82,17,600}, {82,19,600}, {83,22,600}, {84,21,600}, {84,23,600}, {85,20,600}, {85,24,600}, {86,21,600}, {81,19,601}, {82,16,601}, {82,18,601}, {83,23,601}, {84,22,601}, {84,24,601}, {85,21,601}, {86,20,601}, {4,9,602}, {4,10,603}, {4,11,604}, {4,12,605}, {4,13,606}, {4,14,607}, {4,15,608}, {47,3,609}, {51,1,609}, {47,2,610}, {48,3,610}, {50,1,610}, {47,3,611}, {48,2,611}, {49,1,611}, {51,1,611}, {48,1,612}, {49,2,612}, {50,3,612}, {47,1,613}, {49,3,613}, {50,2,613}, {51,3,613}, {48,1,614}, {50,3,614}, {51,2,614}, {47,1,615}, {51,3,615}, {47,13,616}, {48,14,616}, {49,9,616}, {50,10,616}, {51,11,616}, {47,12,617}, {48,13,617}, {48,15,617}, {50,9,617}, {50,11,617}, {47,13,618}, {47,15,618}, {48,12,618}, {48,14,618}, {49,11,618}, {50,10,618}, {51,9,618}, {51,11,618}, {47,10,619}, {48,11,619}, {49,12,619}, {50,13,619}, {51,14,619}, {47,9,620}, {47,11,620}, {48,10,620}, {49,13,620}, {50,12,620}, {50,14,620}, {51,13,620}, {51,15,620}, {48,9,621}, {48,11,621}, {50,13,621}, {50,15,621}, {51,12,621}, {47,11,622}, {48,10,622}, {49,15,622}, {50,14,622}, {51,13,622}, {132,3,623}, {133,2,623}, {134,3,623}, {138,1,623}, {140,1,623}, {133,3,624}, {134,2,624}, {135,3,624}, {137,1,624}, {139,1,624}, {134,3,625}, {135,2,625}, {136,1,625}, {138,1,625}, {135,1,626}, {136,2,626}, {137,3,626}, {134,1,627}, {136,3,627}, {137,2,627}, {138,3,627}, {133,1,628}, {135,1,628}, {137,3,628}, {138,2,628}, {139,3,628}, {132,1,629}, {134,1,629}, {138,3,629}, {139,2,629}, {140,3,629}, {132,13,630}, {133,12,630}, {134,13,630}, {135,14,630}, {136,9,630}, {137,10,630}, {138,11,630}, {140,11,630}, {132,14,631}, {133,13,631}, {134,12,631}, {135,13,631}, {135,15,631}, {136,10,631}, {137,9,631}, {137,11,631}, {139,11,631}, {140,10,631}, {132,15,632}, {133,14,632}, {134,13,632}, {134,15,632}, {135,12,632}, {135,14,632}, {136,11,632}, {137,10,632}, {138,9,632}, {138,11,632}, {139,10,632}, {140,9,632}, {133,9,633}, {134,10,633}, {135,11,633}, {136,12,633}, {137,13,633}, {138,14,633}, {139,15,633}, {132,9,634}, {133,10,634}, {134,9,634}, {134,11,634}, {135,10,634}, {136,13,634}, {137,12,634}, {137,14,634}, {138,13,634}, {138,15,634}, {139,14,634}, {140,15,634}, {132,10,635}, {133,11,635}, {135,9,635}, {135,11,635}, {136,14,635}, {137,13,635}, {137,15,635}, {138,12,635}, {139,13,635}, {140,14,635}, {132,11,636}, {134,11,636}, {135,10,636}, {136,15,636}, {137,14,636}, {138,13,636}, {139,12,636}, {140,13,636}}; -constexpr double cg_AAA[3161] = {1.0, 1.0, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.0690065547823906, -0.26726123690605164, -0.16903084516525269, -0.2182178944349289, 0.23904572427272797, 0.2182178944349289, 0.26726123690605164, 0.0690065547823906, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, -0.0690065547823906, 0.2182178944349289, 0.23904572427272797, -0.16903084516525269, 0.2182178944349289, -0.0690065547823906, 0.26726123690605164, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.0690065547823906, -0.26726123690605164, -0.16903084516525269, -0.2182178944349289, 0.23904572427272797, 0.2182178944349289, 0.26726123690605164, 0.0690065547823906, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, -0.0690065547823906, 0.2182178944349289, 0.23904572427272797, -0.16903084516525269, 0.2182178944349289, -0.0690065547823906, 0.26726123690605164, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 1.0, 1.0, 1.0, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, -0.03857583925127983, -0.20412415266036987, -0.06681530922651291, -0.1767766922712326, -0.13363061845302582, -0.14940357208251953, 0.17251639068126678, 0.14940357208251953, 0.1767766922712326, 0.06681530922651291, 0.20412415266036987, 0.03857583925127983, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, -0.03857583925127983, 0.1767766922712326, -0.06681530922651291, 0.14940357208251953, 0.17251639068126678, -0.13363061845302582, 0.14940357208251953, -0.06681530922651291, 0.1767766922712326, -0.03857583925127983, 0.20412415266036987, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.0690065547823906, -0.26726123690605164, -0.16903084516525269, -0.2182178944349289, 0.23904572427272797, 0.2182178944349289, 0.26726123690605164, 0.0690065547823906, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, -0.0690065547823906, 0.2182178944349289, 0.23904572427272797, -0.16903084516525269, 0.2182178944349289, -0.0690065547823906, 0.26726123690605164, -0.03857583925127983, -0.20412415266036987, -0.06681530922651291, -0.1767766922712326, -0.13363061845302582, -0.14940357208251953, 0.17251639068126678, 0.14940357208251953, 0.1767766922712326, 0.06681530922651291, 0.20412415266036987, 0.03857583925127983, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, -0.03857583925127983, 0.1767766922712326, -0.06681530922651291, 0.14940357208251953, 0.17251639068126678, -0.13363061845302582, 0.14940357208251953, -0.06681530922651291, 0.1767766922712326, -0.03857583925127983, 0.20412415266036987, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.0690065547823906, -0.26726123690605164, -0.16903084516525269, -0.2182178944349289, 0.23904572427272797, 0.2182178944349289, 0.26726123690605164, 0.0690065547823906, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, -0.0690065547823906, 0.2182178944349289, 0.23904572427272797, -0.16903084516525269, 0.2182178944349289, -0.0690065547823906, 0.26726123690605164, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 1.0, 1.0, 1.0, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, -0.03857583925127983, -0.20412415266036987, -0.06681530922651291, -0.1767766922712326, -0.13363061845302582, -0.14940357208251953, 0.17251639068126678, 0.14940357208251953, 0.1767766922712326, 0.06681530922651291, 0.20412415266036987, 0.03857583925127983, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, -0.03857583925127983, 0.1767766922712326, -0.06681530922651291, 0.14940357208251953, 0.17251639068126678, -0.13363061845302582, 0.14940357208251953, -0.06681530922651291, 0.1767766922712326, -0.03857583925127983, 0.20412415266036987, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.0690065547823906, -0.26726123690605164, -0.16903084516525269, -0.2182178944349289, 0.23904572427272797, 0.2182178944349289, 0.26726123690605164, 0.0690065547823906, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, -0.0690065547823906, 0.2182178944349289, 0.23904572427272797, -0.16903084516525269, 0.2182178944349289, -0.0690065547823906, 0.26726123690605164, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.4472135901451111, 0.3872983455657959, -0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.22360679507255554, -0.3872983455657959, 0.22360679507255554, 0.3872983455657959, -0.3872983455657959, -0.4472135901451111, 0.22360679507255554, 0.4472135901451111, 0.22360679507255554, -0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.22360679507255554, 0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.3872983455657959, -0.4472135901451111, 0.3872983455657959, -0.4472135901451111, 0.64549720287323, 0.64549720287323, 0.64549720287323, 0.64549720287323, -0.3726779818534851, 0.7453559637069702, -0.3726779818534851, 0.64549720287323, 0.64549720287323, -0.64549720287323, 0.64549720287323, -0.11501092463731766, -0.44543540477752686, 0.36369648575782776, 0.44543540477752686, -0.11501092463731766, -0.28171807527542114, -0.36369648575782776, 0.46004369854927063, 0.36369648575782776, 0.39840954542160034, 0.48795002698898315, 0.39840954542160034, 0.36369648575782776, 0.46004369854927063, -0.28171807527542114, 0.36369648575782776, 0.44543540477752686, 0.11501092463731766, 0.36369648575782776, -0.11501092463731766, 0.44543540477752686, 0.44543540477752686, 0.36369648575782776, -0.11501092463731766, -0.11501092463731766, -0.44543540477752686, 0.36369648575782776, 0.46004369854927063, -0.28171807527542114, -0.36369648575782776, 0.39840954542160034, 0.48795002698898315, 0.39840954542160034, 0.36369648575782776, -0.28171807527542114, 0.46004369854927063, 0.36369648575782776, 0.44543540477752686, 0.11501092463731766, -0.11501092463731766, 0.36369648575782776, 0.44543540477752686, -0.1785714328289032, -0.3571428656578064, 0.2766416668891907, 0.1785714328289032, -0.3571428656578064, -0.1785714328289032, 0.2766416668891907, 0.1785714328289032, 0.2823462188243866, 0.2187044471502304, -0.2823462188243866, 0.11293848603963852, -0.2187044471502304, 0.11293848603963852, 0.2187044471502304, 0.2823462188243866, -0.2187044471502304, -0.2823462188243866, -0.3992978632450104, 0.2395787090063095, 0.31943827867507935, 0.2395787090063095, -0.3992978632450104, 0.2823462188243866, 0.2823462188243866, 0.2187044471502304, 0.2187044471502304, 0.11293848603963852, 0.11293848603963852, 0.2187044471502304, 0.2187044471502304, 0.2823462188243866, 0.2823462188243866, -0.1785714328289032, -0.1785714328289032, -0.2766416668891907, -0.3571428656578064, 0.2766416668891907, -0.1785714328289032, -0.3571428656578064, -0.1785714328289032, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0555555559694767, -0.32867109775543213, -0.08784104883670807, -0.23240555822849274, 0.21516573429107666, 0.23240555822849274, -0.08784104883670807, 0.32867109775543213, -0.08784104883670807, -0.23240555822849274, -0.2222222238779068, -0.24845199286937714, 0.3042903244495392, 0.24845199286937714, 0.23240555822849274, 0.08784104883670807, 0.21516573429107666, 0.3042903244495392, 0.3333333432674408, 0.3042903244495392, 0.21516573429107666, 0.23240555822849274, -0.08784104883670807, 0.24845199286937714, 0.3042903244495392, -0.2222222238779068, 0.24845199286937714, -0.08784104883670807, 0.23240555822849274, 0.32867109775543213, 0.23240555822849274, 0.08784104883670807, 0.21516573429107666, -0.08784104883670807, 0.23240555822849274, 0.0555555559694767, 0.32867109775543213, -0.11385501176118851, -0.17078250646591187, -0.28867512941360474, 0.11385501176118851, 0.21516573429107666, 0.17078250646591187, -0.28867512941360474, -0.17078250646591187, 0.21516573429107666, -0.11385501176118851, 0.17078250646591187, 0.11385501176118851, 0.2130032181739807, 0.20126911997795105, -0.2130032181739807, 0.1369306445121765, -0.20126911997795105, 0.06804138422012329, -0.1369306445121765, 0.06804138422012329, 0.1369306445121765, 0.20126911997795105, -0.1369306445121765, 0.2130032181739807, -0.20126911997795105, -0.2130032181739807, -0.3478327989578247, -0.08695819973945618, 0.09938079863786697, 0.21118420362472534, 0.24845199286937714, 0.21118420362472534, 0.09938079863786697, -0.08695819973945618, -0.3478327989578247, 0.2130032181739807, 0.2130032181739807, 0.20126911997795105, 0.20126911997795105, 0.1369306445121765, 0.1369306445121765, 0.06804138422012329, 0.06804138422012329, 0.1369306445121765, 0.1369306445121765, 0.20126911997795105, 0.20126911997795105, 0.2130032181739807, 0.2130032181739807, -0.11385501176118851, -0.17078250646591187, -0.11385501176118851, -0.17078250646591187, -0.21516573429107666, -0.28867512941360474, 0.21516573429107666, -0.17078250646591187, -0.28867512941360474, -0.11385501176118851, -0.17078250646591187, -0.11385501176118851, 1.0, 1.0, 1.0, 1.0, 1.0, -0.4472135901451111, 0.3872983455657959, -0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.22360679507255554, -0.3872983455657959, 0.22360679507255554, 0.3872983455657959, -0.3872983455657959, -0.4472135901451111, 0.22360679507255554, 0.4472135901451111, 0.22360679507255554, -0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.22360679507255554, 0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.3872983455657959, -0.4472135901451111, 0.3872983455657959, -0.4472135901451111, 0.0555555559694767, -0.32867109775543213, -0.08784104883670807, -0.23240555822849274, 0.21516573429107666, 0.23240555822849274, -0.08784104883670807, 0.32867109775543213, -0.08784104883670807, -0.23240555822849274, -0.2222222238779068, -0.24845199286937714, 0.3042903244495392, 0.24845199286937714, 0.23240555822849274, 0.08784104883670807, 0.21516573429107666, 0.3042903244495392, 0.3333333432674408, 0.3042903244495392, 0.21516573429107666, 0.23240555822849274, -0.08784104883670807, 0.24845199286937714, 0.3042903244495392, -0.2222222238779068, 0.24845199286937714, -0.08784104883670807, 0.23240555822849274, 0.32867109775543213, 0.23240555822849274, 0.08784104883670807, 0.21516573429107666, -0.08784104883670807, 0.23240555822849274, 0.0555555559694767, 0.32867109775543213, 0.32867109775543213, 0.23240555822849274, 0.21516573429107666, -0.08784104883670807, 0.0555555559694767, -0.08784104883670807, -0.23240555822849274, -0.32867109775543213, 0.23240555822849274, 0.24845199286937714, 0.3042903244495392, 0.08784104883670807, -0.2222222238779068, -0.08784104883670807, -0.24845199286937714, -0.23240555822849274, 0.21516573429107666, 0.3042903244495392, 0.3333333432674408, 0.3042903244495392, 0.21516573429107666, 0.23240555822849274, 0.24845199286937714, -0.08784104883670807, -0.2222222238779068, 0.3042903244495392, -0.08784104883670807, 0.24845199286937714, 0.23240555822849274, 0.32867109775543213, 0.23240555822849274, 0.08784104883670807, 0.0555555559694767, -0.08784104883670807, 0.21516573429107666, 0.23240555822849274, 0.32867109775543213, -0.11385501176118851, -0.17078250646591187, -0.28867512941360474, 0.11385501176118851, 0.21516573429107666, 0.17078250646591187, -0.28867512941360474, -0.17078250646591187, 0.21516573429107666, -0.11385501176118851, 0.17078250646591187, 0.11385501176118851, 0.2130032181739807, 0.20126911997795105, -0.2130032181739807, 0.1369306445121765, -0.20126911997795105, 0.06804138422012329, -0.1369306445121765, 0.06804138422012329, 0.1369306445121765, 0.20126911997795105, -0.1369306445121765, 0.2130032181739807, -0.20126911997795105, -0.2130032181739807, -0.3478327989578247, -0.08695819973945618, 0.09938079863786697, 0.21118420362472534, 0.24845199286937714, 0.21118420362472534, 0.09938079863786697, -0.08695819973945618, -0.3478327989578247, 0.2130032181739807, 0.2130032181739807, 0.20126911997795105, 0.20126911997795105, 0.1369306445121765, 0.1369306445121765, 0.06804138422012329, 0.06804138422012329, 0.1369306445121765, 0.1369306445121765, 0.20126911997795105, 0.20126911997795105, 0.2130032181739807, 0.2130032181739807, -0.11385501176118851, -0.17078250646591187, -0.11385501176118851, -0.17078250646591187, -0.21516573429107666, -0.28867512941360474, 0.21516573429107666, -0.17078250646591187, -0.28867512941360474, -0.11385501176118851, -0.17078250646591187, -0.11385501176118851, 0.64549720287323, 0.64549720287323, 0.64549720287323, 0.64549720287323, -0.3726779818534851, 0.7453559637069702, -0.3726779818534851, 0.64549720287323, 0.64549720287323, -0.64549720287323, 0.64549720287323, -0.11501092463731766, -0.44543540477752686, 0.36369648575782776, 0.44543540477752686, -0.11501092463731766, -0.28171807527542114, -0.36369648575782776, 0.46004369854927063, 0.36369648575782776, 0.39840954542160034, 0.48795002698898315, 0.39840954542160034, 0.36369648575782776, 0.46004369854927063, -0.28171807527542114, 0.36369648575782776, 0.44543540477752686, 0.11501092463731766, 0.36369648575782776, -0.11501092463731766, 0.44543540477752686, 0.44543540477752686, 0.36369648575782776, -0.11501092463731766, -0.11501092463731766, -0.44543540477752686, 0.36369648575782776, 0.46004369854927063, -0.28171807527542114, -0.36369648575782776, 0.39840954542160034, 0.48795002698898315, 0.39840954542160034, 0.36369648575782776, -0.28171807527542114, 0.46004369854927063, 0.36369648575782776, 0.44543540477752686, 0.11501092463731766, -0.11501092463731766, 0.36369648575782776, 0.44543540477752686, -0.1785714328289032, -0.3571428656578064, 0.2766416668891907, 0.1785714328289032, -0.3571428656578064, -0.1785714328289032, 0.2766416668891907, 0.1785714328289032, 0.2823462188243866, 0.2187044471502304, -0.2823462188243866, 0.11293848603963852, -0.2187044471502304, 0.11293848603963852, 0.2187044471502304, 0.2823462188243866, -0.2187044471502304, -0.2823462188243866, -0.3992978632450104, 0.2395787090063095, 0.31943827867507935, 0.2395787090063095, -0.3992978632450104, 0.2823462188243866, 0.2823462188243866, 0.2187044471502304, 0.2187044471502304, 0.11293848603963852, 0.11293848603963852, 0.2187044471502304, 0.2187044471502304, 0.2823462188243866, 0.2823462188243866, -0.1785714328289032, -0.1785714328289032, -0.2766416668891907, -0.3571428656578064, 0.2766416668891907, -0.1785714328289032, -0.3571428656578064, -0.1785714328289032, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.4472135901451111, 0.3872983455657959, -0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.22360679507255554, -0.3872983455657959, 0.22360679507255554, 0.3872983455657959, -0.3872983455657959, -0.4472135901451111, 0.22360679507255554, 0.4472135901451111, 0.22360679507255554, -0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.22360679507255554, 0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.3872983455657959, -0.4472135901451111, 0.3872983455657959, -0.4472135901451111, 0.0555555559694767, -0.32867109775543213, -0.08784104883670807, -0.23240555822849274, 0.21516573429107666, 0.23240555822849274, -0.08784104883670807, 0.32867109775543213, -0.08784104883670807, -0.23240555822849274, -0.2222222238779068, -0.24845199286937714, 0.3042903244495392, 0.24845199286937714, 0.23240555822849274, 0.08784104883670807, 0.21516573429107666, 0.3042903244495392, 0.3333333432674408, 0.3042903244495392, 0.21516573429107666, 0.23240555822849274, -0.08784104883670807, 0.24845199286937714, 0.3042903244495392, -0.2222222238779068, 0.24845199286937714, -0.08784104883670807, 0.23240555822849274, 0.32867109775543213, 0.23240555822849274, 0.08784104883670807, 0.21516573429107666, -0.08784104883670807, 0.23240555822849274, 0.0555555559694767, 0.32867109775543213, 0.32867109775543213, 0.23240555822849274, 0.21516573429107666, -0.08784104883670807, 0.0555555559694767, -0.08784104883670807, -0.23240555822849274, -0.32867109775543213, 0.23240555822849274, 0.24845199286937714, 0.3042903244495392, 0.08784104883670807, -0.2222222238779068, -0.08784104883670807, -0.24845199286937714, -0.23240555822849274, 0.21516573429107666, 0.3042903244495392, 0.3333333432674408, 0.3042903244495392, 0.21516573429107666, 0.23240555822849274, 0.24845199286937714, -0.08784104883670807, -0.2222222238779068, 0.3042903244495392, -0.08784104883670807, 0.24845199286937714, 0.23240555822849274, 0.32867109775543213, 0.23240555822849274, 0.08784104883670807, 0.0555555559694767, -0.08784104883670807, 0.21516573429107666, 0.23240555822849274, 0.32867109775543213, -0.11385501176118851, -0.17078250646591187, -0.28867512941360474, 0.11385501176118851, 0.21516573429107666, 0.17078250646591187, -0.28867512941360474, -0.17078250646591187, 0.21516573429107666, -0.11385501176118851, 0.17078250646591187, 0.11385501176118851, 0.2130032181739807, 0.20126911997795105, -0.2130032181739807, 0.1369306445121765, -0.20126911997795105, 0.06804138422012329, -0.1369306445121765, 0.06804138422012329, 0.1369306445121765, 0.20126911997795105, -0.1369306445121765, 0.2130032181739807, -0.20126911997795105, -0.2130032181739807, -0.3478327989578247, -0.08695819973945618, 0.09938079863786697, 0.21118420362472534, 0.24845199286937714, 0.21118420362472534, 0.09938079863786697, -0.08695819973945618, -0.3478327989578247, 0.2130032181739807, 0.2130032181739807, 0.20126911997795105, 0.20126911997795105, 0.1369306445121765, 0.1369306445121765, 0.06804138422012329, 0.06804138422012329, 0.1369306445121765, 0.1369306445121765, 0.20126911997795105, 0.20126911997795105, 0.2130032181739807, 0.2130032181739807, -0.11385501176118851, -0.17078250646591187, -0.11385501176118851, -0.17078250646591187, -0.21516573429107666, -0.28867512941360474, 0.21516573429107666, -0.17078250646591187, -0.28867512941360474, -0.11385501176118851, -0.17078250646591187, -0.11385501176118851, 0.44543540477752686, 0.36369648575782776, -0.11501092463731766, -0.11501092463731766, -0.44543540477752686, 0.36369648575782776, 0.46004369854927063, -0.28171807527542114, -0.36369648575782776, 0.39840954542160034, 0.48795002698898315, 0.39840954542160034, 0.36369648575782776, -0.28171807527542114, 0.46004369854927063, 0.36369648575782776, 0.44543540477752686, 0.11501092463731766, -0.11501092463731766, 0.36369648575782776, 0.44543540477752686, -0.1785714328289032, -0.3571428656578064, 0.2766416668891907, 0.1785714328289032, -0.3571428656578064, -0.1785714328289032, 0.2766416668891907, 0.1785714328289032, 0.2823462188243866, 0.2187044471502304, -0.2823462188243866, 0.11293848603963852, -0.2187044471502304, 0.11293848603963852, 0.2187044471502304, 0.2823462188243866, -0.2187044471502304, -0.2823462188243866, -0.3992978632450104, 0.2395787090063095, 0.31943827867507935, 0.2395787090063095, -0.3992978632450104, 0.2823462188243866, 0.2823462188243866, 0.2187044471502304, 0.2187044471502304, 0.11293848603963852, 0.11293848603963852, 0.2187044471502304, 0.2187044471502304, 0.2823462188243866, 0.2823462188243866, -0.1785714328289032, -0.1785714328289032, -0.2766416668891907, -0.3571428656578064, 0.2766416668891907, -0.1785714328289032, -0.3571428656578064, -0.1785714328289032, 1.0, 1.0, 1.0, 1.0, 1.0, -0.4472135901451111, 0.3872983455657959, -0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.22360679507255554, -0.3872983455657959, 0.22360679507255554, 0.3872983455657959, -0.3872983455657959, -0.4472135901451111, 0.22360679507255554, 0.4472135901451111, 0.22360679507255554, -0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.22360679507255554, 0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.3872983455657959, -0.4472135901451111, 0.3872983455657959, -0.4472135901451111, 0.0555555559694767, -0.32867109775543213, -0.08784104883670807, -0.23240555822849274, 0.21516573429107666, 0.23240555822849274, -0.08784104883670807, 0.32867109775543213, -0.08784104883670807, -0.23240555822849274, -0.2222222238779068, -0.24845199286937714, 0.3042903244495392, 0.24845199286937714, 0.23240555822849274, 0.08784104883670807, 0.21516573429107666, 0.3042903244495392, 0.3333333432674408, 0.3042903244495392, 0.21516573429107666, 0.23240555822849274, -0.08784104883670807, 0.24845199286937714, 0.3042903244495392, -0.2222222238779068, 0.24845199286937714, -0.08784104883670807, 0.23240555822849274, 0.32867109775543213, 0.23240555822849274, 0.08784104883670807, 0.21516573429107666, -0.08784104883670807, 0.23240555822849274, 0.0555555559694767, 0.32867109775543213, 0.32867109775543213, 0.23240555822849274, 0.21516573429107666, -0.08784104883670807, 0.0555555559694767, -0.08784104883670807, -0.23240555822849274, -0.32867109775543213, 0.23240555822849274, 0.24845199286937714, 0.3042903244495392, 0.08784104883670807, -0.2222222238779068, -0.08784104883670807, -0.24845199286937714, -0.23240555822849274, 0.21516573429107666, 0.3042903244495392, 0.3333333432674408, 0.3042903244495392, 0.21516573429107666, 0.23240555822849274, 0.24845199286937714, -0.08784104883670807, -0.2222222238779068, 0.3042903244495392, -0.08784104883670807, 0.24845199286937714, 0.23240555822849274, 0.32867109775543213, 0.23240555822849274, 0.08784104883670807, 0.0555555559694767, -0.08784104883670807, 0.21516573429107666, 0.23240555822849274, 0.32867109775543213, -0.11385501176118851, -0.17078250646591187, -0.28867512941360474, 0.11385501176118851, 0.21516573429107666, 0.17078250646591187, -0.28867512941360474, -0.17078250646591187, 0.21516573429107666, -0.11385501176118851, 0.17078250646591187, 0.11385501176118851, 0.2130032181739807, 0.20126911997795105, -0.2130032181739807, 0.1369306445121765, -0.20126911997795105, 0.06804138422012329, -0.1369306445121765, 0.06804138422012329, 0.1369306445121765, 0.20126911997795105, -0.1369306445121765, 0.2130032181739807, -0.20126911997795105, -0.2130032181739807, -0.3478327989578247, -0.08695819973945618, 0.09938079863786697, 0.21118420362472534, 0.24845199286937714, 0.21118420362472534, 0.09938079863786697, -0.08695819973945618, -0.3478327989578247, 0.2130032181739807, 0.2130032181739807, 0.20126911997795105, 0.20126911997795105, 0.1369306445121765, 0.1369306445121765, 0.06804138422012329, 0.06804138422012329, 0.1369306445121765, 0.1369306445121765, 0.20126911997795105, 0.20126911997795105, 0.2130032181739807, 0.2130032181739807, -0.11385501176118851, -0.17078250646591187, -0.11385501176118851, -0.17078250646591187, -0.21516573429107666, -0.28867512941360474, 0.21516573429107666, -0.17078250646591187, -0.28867512941360474, -0.11385501176118851, -0.17078250646591187, -0.11385501176118851, 0.64549720287323, 0.64549720287323, 0.64549720287323, 0.64549720287323, -0.3726779818534851, 0.7453559637069702, -0.3726779818534851, 0.64549720287323, 0.64549720287323, -0.64549720287323, 0.64549720287323, -0.11501092463731766, -0.44543540477752686, 0.36369648575782776, 0.44543540477752686, -0.11501092463731766, -0.28171807527542114, -0.36369648575782776, 0.46004369854927063, 0.36369648575782776, 0.39840954542160034, 0.48795002698898315, 0.39840954542160034, 0.36369648575782776, 0.46004369854927063, -0.28171807527542114, 0.36369648575782776, 0.44543540477752686, 0.11501092463731766, 0.36369648575782776, -0.11501092463731766, 0.44543540477752686, 0.44543540477752686, 0.36369648575782776, -0.11501092463731766, -0.11501092463731766, -0.44543540477752686, 0.36369648575782776, 0.46004369854927063, -0.28171807527542114, -0.36369648575782776, 0.39840954542160034, 0.48795002698898315, 0.39840954542160034, 0.36369648575782776, -0.28171807527542114, 0.46004369854927063, 0.36369648575782776, 0.44543540477752686, 0.11501092463731766, -0.11501092463731766, 0.36369648575782776, 0.44543540477752686, -0.1785714328289032, -0.3571428656578064, 0.2766416668891907, 0.1785714328289032, -0.3571428656578064, -0.1785714328289032, 0.2766416668891907, 0.1785714328289032, 0.2823462188243866, 0.2187044471502304, -0.2823462188243866, 0.11293848603963852, -0.2187044471502304, 0.11293848603963852, 0.2187044471502304, 0.2823462188243866, -0.2187044471502304, -0.2823462188243866, -0.3992978632450104, 0.2395787090063095, 0.31943827867507935, 0.2395787090063095, -0.3992978632450104, 0.2823462188243866, 0.2823462188243866, 0.2187044471502304, 0.2187044471502304, 0.11293848603963852, 0.11293848603963852, 0.2187044471502304, 0.2187044471502304, 0.2823462188243866, 0.2823462188243866, -0.1785714328289032, -0.1785714328289032, -0.2766416668891907, -0.3571428656578064, 0.2766416668891907, -0.1785714328289032, -0.3571428656578064, -0.1785714328289032, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.4472135901451111, 0.3872983455657959, -0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.22360679507255554, -0.3872983455657959, 0.22360679507255554, 0.3872983455657959, -0.3872983455657959, -0.4472135901451111, 0.22360679507255554, 0.4472135901451111, 0.22360679507255554, -0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.22360679507255554, 0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.3872983455657959, -0.4472135901451111, 0.3872983455657959, -0.4472135901451111, 0.0555555559694767, -0.32867109775543213, -0.08784104883670807, -0.23240555822849274, 0.21516573429107666, 0.23240555822849274, -0.08784104883670807, 0.32867109775543213, -0.08784104883670807, -0.23240555822849274, -0.2222222238779068, -0.24845199286937714, 0.3042903244495392, 0.24845199286937714, 0.23240555822849274, 0.08784104883670807, 0.21516573429107666, 0.3042903244495392, 0.3333333432674408, 0.3042903244495392, 0.21516573429107666, 0.23240555822849274, -0.08784104883670807, 0.24845199286937714, 0.3042903244495392, -0.2222222238779068, 0.24845199286937714, -0.08784104883670807, 0.23240555822849274, 0.32867109775543213, 0.23240555822849274, 0.08784104883670807, 0.21516573429107666, -0.08784104883670807, 0.23240555822849274, 0.0555555559694767, 0.32867109775543213, 0.32867109775543213, 0.23240555822849274, 0.21516573429107666, -0.08784104883670807, 0.0555555559694767, -0.08784104883670807, -0.23240555822849274, -0.32867109775543213, 0.23240555822849274, 0.24845199286937714, 0.3042903244495392, 0.08784104883670807, -0.2222222238779068, -0.08784104883670807, -0.24845199286937714, -0.23240555822849274, 0.21516573429107666, 0.3042903244495392, 0.3333333432674408, 0.3042903244495392, 0.21516573429107666, 0.23240555822849274, 0.24845199286937714, -0.08784104883670807, -0.2222222238779068, 0.3042903244495392, -0.08784104883670807, 0.24845199286937714, 0.23240555822849274, 0.32867109775543213, 0.23240555822849274, 0.08784104883670807, 0.0555555559694767, -0.08784104883670807, 0.21516573429107666, 0.23240555822849274, 0.32867109775543213, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, 0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.5577733516693115, 0.6440612077713013, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, -0.25, 0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, -0.5, 0.3061862289905548, -0.3952847123146057, 0.3952847123146057, 0.3061862289905548, 0.3872983455657959, 0.25, 0.15811388194561005, -0.3061862289905548, 0.3354102075099945, 0.3061862289905548, -0.25, -0.3872983455657959, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3872983455657959, 0.3061862289905548, 0.3354102075099945, 0.15811388194561005, 0.3061862289905548, 0.3872983455657959, -0.25, 0.3952847123146057, -0.3061862289905548, 0.3061862289905548, 0.3952847123146057, -0.5, 0.25, -0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, 0.5577733516693115, 0.16101530194282532, 0.6440612077713013, -0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, -0.09001028537750244, -0.47628965973854065, 0.3367876708507538, 0.47628965973854065, -0.09001028537750244, -0.15590238571166992, -0.4124789535999298, 0.44095855951309204, 0.4124789535999298, -0.15590238571166992, -0.31180477142333984, -0.3486083447933197, 0.4930066466331482, 0.3486083447933197, 0.4025382399559021, 0.5091750621795654, 0.4025382399559021, 0.3486083447933197, 0.4930066466331482, -0.31180477142333984, 0.3486083447933197, 0.4124789535999298, 0.15590238571166992, 0.44095855951309204, -0.15590238571166992, 0.4124789535999298, 0.47628965973854065, 0.09001028537750244, 0.3367876708507538, -0.09001028537750244, 0.47628965973854065, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.55901700258255, 0.3952847123146057, -0.25, -0.25, 0.3952847123146057, 0.3952847123146057, 0.3061862289905548, -0.5, 0.3061862289905548, -0.3952847123146057, -0.25, 0.3061862289905548, 0.3354102075099945, -0.3872983455657959, 0.15811388194561005, 0.3872983455657959, -0.3061862289905548, 0.25, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3061862289905548, 0.3872983455657959, 0.15811388194561005, 0.3354102075099945, 0.3872983455657959, 0.3061862289905548, -0.25, 0.3952847123146057, -0.3061862289905548, -0.5, 0.3061862289905548, 0.3952847123146057, -0.3952847123146057, 0.25, -0.25, 0.3952847123146057, -0.55901700258255, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, 0.2545875310897827, -0.44095855951309204, -0.2545875310897827, 0.28867512941360474, -0.21516573429107666, -0.21516573429107666, -0.3888888955116272, -0.32867109775543213, 0.2222222238779068, -0.146986186504364, -0.09622504562139511, 0.146986186504364, 0.2222222238779068, 0.32867109775543213, 0.21516573429107666, 0.28867512941360474, 0.2545875310897827, 0.2222222238779068, -0.146986186504364, 0.0555555559694767, -0.24845199286937714, 0.21516573429107666, 0.24845199286937714, 0.146986186504364, -0.2222222238779068, -0.2545875310897827, -0.28867512941360474, -0.44095855951309204, -0.09622504562139511, 0.21516573429107666, 0.3333333432674408, 0.21516573429107666, -0.09622504562139511, -0.44095855951309204, -0.2545875310897827, 0.28867512941360474, 0.146986186504364, 0.2222222238779068, 0.24845199286937714, 0.21516573429107666, 0.0555555559694767, 0.24845199286937714, 0.2222222238779068, 0.146986186504364, 0.28867512941360474, -0.2545875310897827, -0.21516573429107666, 0.32867109775543213, 0.146986186504364, -0.2222222238779068, -0.09622504562139511, 0.2222222238779068, 0.146986186504364, -0.3888888955116272, 0.32867109775543213, -0.21516573429107666, 0.21516573429107666, -0.2545875310897827, -0.28867512941360474, -0.44095855951309204, 0.28867512941360474, -0.2545875310897827, -0.21516573429107666, 0.1666666716337204, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, 0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.5577733516693115, 0.6440612077713013, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, -0.25, 0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, -0.5, 0.3061862289905548, -0.3952847123146057, 0.3952847123146057, 0.3061862289905548, 0.3872983455657959, 0.25, 0.15811388194561005, -0.3061862289905548, 0.3354102075099945, 0.3061862289905548, -0.25, -0.3872983455657959, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3872983455657959, 0.3061862289905548, 0.3354102075099945, 0.15811388194561005, 0.3061862289905548, 0.3872983455657959, -0.25, 0.3952847123146057, -0.3061862289905548, 0.3061862289905548, 0.3952847123146057, -0.5, 0.25, -0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, 0.47628965973854065, 0.3367876708507538, -0.09001028537750244, -0.09001028537750244, -0.47628965973854065, 0.4124789535999298, 0.44095855951309204, -0.15590238571166992, -0.15590238571166992, -0.4124789535999298, 0.3486083447933197, 0.4930066466331482, -0.31180477142333984, -0.3486083447933197, 0.4025382399559021, 0.5091750621795654, 0.4025382399559021, 0.3486083447933197, -0.31180477142333984, 0.4930066466331482, 0.3486083447933197, 0.4124789535999298, 0.15590238571166992, -0.15590238571166992, 0.44095855951309204, 0.4124789535999298, 0.47628965973854065, 0.09001028537750244, -0.09001028537750244, 0.3367876708507538, 0.47628965973854065, -0.2545875310897827, -0.44095855951309204, 0.28867512941360474, -0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, 0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.09622504562139511, 0.2222222238779068, 0.21516573429107666, -0.3888888955116272, -0.21516573429107666, 0.2222222238779068, -0.146986186504364, -0.32867109775543213, -0.2545875310897827, 0.146986186504364, 0.24845199286937714, -0.28867512941360474, 0.21516573429107666, -0.2222222238779068, 0.0555555559694767, 0.2222222238779068, 0.28867512941360474, -0.24845199286937714, -0.146986186504364, 0.2545875310897827, -0.44095855951309204, -0.09622504562139511, 0.21516573429107666, 0.3333333432674408, 0.21516573429107666, -0.09622504562139511, -0.44095855951309204, -0.2545875310897827, 0.146986186504364, 0.28867512941360474, 0.24845199286937714, 0.2222222238779068, 0.0555555559694767, 0.21516573429107666, 0.2222222238779068, 0.24845199286937714, 0.28867512941360474, 0.146986186504364, -0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.21516573429107666, -0.2222222238779068, -0.3888888955116272, 0.2222222238779068, -0.21516573429107666, -0.09622504562139511, 0.146986186504364, 0.32867109775543213, -0.2545875310897827, -0.28867512941360474, 0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, -0.44095855951309204, -0.2545875310897827, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, 0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.5577733516693115, 0.6440612077713013, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, -0.25, 0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, -0.5, 0.3061862289905548, -0.3952847123146057, 0.3952847123146057, 0.3061862289905548, 0.3872983455657959, 0.25, 0.15811388194561005, -0.3061862289905548, 0.3354102075099945, 0.3061862289905548, -0.25, -0.3872983455657959, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3872983455657959, 0.3061862289905548, 0.3354102075099945, 0.15811388194561005, 0.3061862289905548, 0.3872983455657959, -0.25, 0.3952847123146057, -0.3061862289905548, 0.3061862289905548, 0.3952847123146057, -0.5, 0.25, -0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, 0.47628965973854065, 0.3367876708507538, -0.09001028537750244, -0.09001028537750244, -0.47628965973854065, 0.4124789535999298, 0.44095855951309204, -0.15590238571166992, -0.15590238571166992, -0.4124789535999298, 0.3486083447933197, 0.4930066466331482, -0.31180477142333984, -0.3486083447933197, 0.4025382399559021, 0.5091750621795654, 0.4025382399559021, 0.3486083447933197, -0.31180477142333984, 0.4930066466331482, 0.3486083447933197, 0.4124789535999298, 0.15590238571166992, -0.15590238571166992, 0.44095855951309204, 0.4124789535999298, 0.47628965973854065, 0.09001028537750244, -0.09001028537750244, 0.3367876708507538, 0.47628965973854065, -0.2545875310897827, -0.44095855951309204, 0.28867512941360474, -0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, 0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.09622504562139511, 0.2222222238779068, 0.21516573429107666, -0.3888888955116272, -0.21516573429107666, 0.2222222238779068, -0.146986186504364, -0.32867109775543213, -0.2545875310897827, 0.146986186504364, 0.24845199286937714, -0.28867512941360474, 0.21516573429107666, -0.2222222238779068, 0.0555555559694767, 0.2222222238779068, 0.28867512941360474, -0.24845199286937714, -0.146986186504364, 0.2545875310897827, -0.44095855951309204, -0.09622504562139511, 0.21516573429107666, 0.3333333432674408, 0.21516573429107666, -0.09622504562139511, -0.44095855951309204, -0.2545875310897827, 0.146986186504364, 0.28867512941360474, 0.24845199286937714, 0.2222222238779068, 0.0555555559694767, 0.21516573429107666, 0.2222222238779068, 0.24845199286937714, 0.28867512941360474, 0.146986186504364, -0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.21516573429107666, -0.2222222238779068, -0.3888888955116272, 0.2222222238779068, -0.21516573429107666, -0.09622504562139511, 0.146986186504364, 0.32867109775543213, -0.2545875310897827, -0.28867512941360474, 0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, -0.44095855951309204, -0.2545875310897827, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, 0.5577733516693115, 0.16101530194282532, 0.6440612077713013, -0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, -0.09001028537750244, -0.47628965973854065, 0.3367876708507538, 0.47628965973854065, -0.09001028537750244, -0.15590238571166992, -0.4124789535999298, 0.44095855951309204, 0.4124789535999298, -0.15590238571166992, -0.31180477142333984, -0.3486083447933197, 0.4930066466331482, 0.3486083447933197, 0.4025382399559021, 0.5091750621795654, 0.4025382399559021, 0.3486083447933197, 0.4930066466331482, -0.31180477142333984, 0.3486083447933197, 0.4124789535999298, 0.15590238571166992, 0.44095855951309204, -0.15590238571166992, 0.4124789535999298, 0.47628965973854065, 0.09001028537750244, 0.3367876708507538, -0.09001028537750244, 0.47628965973854065, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.55901700258255, 0.3952847123146057, -0.25, -0.25, 0.3952847123146057, 0.3952847123146057, 0.3061862289905548, -0.5, 0.3061862289905548, -0.3952847123146057, -0.25, 0.3061862289905548, 0.3354102075099945, -0.3872983455657959, 0.15811388194561005, 0.3872983455657959, -0.3061862289905548, 0.25, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3061862289905548, 0.3872983455657959, 0.15811388194561005, 0.3354102075099945, 0.3872983455657959, 0.3061862289905548, -0.25, 0.3952847123146057, -0.3061862289905548, -0.5, 0.3061862289905548, 0.3952847123146057, -0.3952847123146057, 0.25, -0.25, 0.3952847123146057, -0.55901700258255, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, 0.2545875310897827, -0.44095855951309204, -0.2545875310897827, 0.28867512941360474, -0.21516573429107666, -0.21516573429107666, -0.3888888955116272, -0.32867109775543213, 0.2222222238779068, -0.146986186504364, -0.09622504562139511, 0.146986186504364, 0.2222222238779068, 0.32867109775543213, 0.21516573429107666, 0.28867512941360474, 0.2545875310897827, 0.2222222238779068, -0.146986186504364, 0.0555555559694767, -0.24845199286937714, 0.21516573429107666, 0.24845199286937714, 0.146986186504364, -0.2222222238779068, -0.2545875310897827, -0.28867512941360474, -0.44095855951309204, -0.09622504562139511, 0.21516573429107666, 0.3333333432674408, 0.21516573429107666, -0.09622504562139511, -0.44095855951309204, -0.2545875310897827, 0.28867512941360474, 0.146986186504364, 0.2222222238779068, 0.24845199286937714, 0.21516573429107666, 0.0555555559694767, 0.24845199286937714, 0.2222222238779068, 0.146986186504364, 0.28867512941360474, -0.2545875310897827, -0.21516573429107666, 0.32867109775543213, 0.146986186504364, -0.2222222238779068, -0.09622504562139511, 0.2222222238779068, 0.146986186504364, -0.3888888955116272, 0.32867109775543213, -0.21516573429107666, 0.21516573429107666, -0.2545875310897827, -0.28867512941360474, -0.44095855951309204, 0.28867512941360474, -0.2545875310897827, -0.21516573429107666, 0.1666666716337204, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, 0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.5577733516693115, 0.6440612077713013, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, -0.25, 0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, -0.5, 0.3061862289905548, -0.3952847123146057, 0.3952847123146057, 0.3061862289905548, 0.3872983455657959, 0.25, 0.15811388194561005, -0.3061862289905548, 0.3354102075099945, 0.3061862289905548, -0.25, -0.3872983455657959, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3872983455657959, 0.3061862289905548, 0.3354102075099945, 0.15811388194561005, 0.3061862289905548, 0.3872983455657959, -0.25, 0.3952847123146057, -0.3061862289905548, 0.3061862289905548, 0.3952847123146057, -0.5, 0.25, -0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, 0.47628965973854065, 0.3367876708507538, -0.09001028537750244, -0.09001028537750244, -0.47628965973854065, 0.4124789535999298, 0.44095855951309204, -0.15590238571166992, -0.15590238571166992, -0.4124789535999298, 0.3486083447933197, 0.4930066466331482, -0.31180477142333984, -0.3486083447933197, 0.4025382399559021, 0.5091750621795654, 0.4025382399559021, 0.3486083447933197, -0.31180477142333984, 0.4930066466331482, 0.3486083447933197, 0.4124789535999298, 0.15590238571166992, -0.15590238571166992, 0.44095855951309204, 0.4124789535999298, 0.47628965973854065, 0.09001028537750244, -0.09001028537750244, 0.3367876708507538, 0.47628965973854065, -0.2545875310897827, -0.44095855951309204, 0.28867512941360474, -0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, 0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.09622504562139511, 0.2222222238779068, 0.21516573429107666, -0.3888888955116272, -0.21516573429107666, 0.2222222238779068, -0.146986186504364, -0.32867109775543213, -0.2545875310897827, 0.146986186504364, 0.24845199286937714, -0.28867512941360474, 0.21516573429107666, -0.2222222238779068, 0.0555555559694767, 0.2222222238779068, 0.28867512941360474, -0.24845199286937714, -0.146986186504364, 0.2545875310897827, -0.44095855951309204, -0.09622504562139511, 0.21516573429107666, 0.3333333432674408, 0.21516573429107666, -0.09622504562139511, -0.44095855951309204, -0.2545875310897827, 0.146986186504364, 0.28867512941360474, 0.24845199286937714, 0.2222222238779068, 0.0555555559694767, 0.21516573429107666, 0.2222222238779068, 0.24845199286937714, 0.28867512941360474, 0.146986186504364, -0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.21516573429107666, -0.2222222238779068, -0.3888888955116272, 0.2222222238779068, -0.21516573429107666, -0.09622504562139511, 0.146986186504364, 0.32867109775543213, -0.2545875310897827, -0.28867512941360474, 0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, -0.44095855951309204, -0.2545875310897827, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.55901700258255, 0.3952847123146057, -0.25, -0.25, 0.3952847123146057, 0.3952847123146057, 0.3061862289905548, -0.5, 0.3061862289905548, -0.3952847123146057, -0.25, 0.3061862289905548, 0.3354102075099945, -0.3872983455657959, 0.15811388194561005, 0.3872983455657959, -0.3061862289905548, 0.25, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3061862289905548, 0.3872983455657959, 0.15811388194561005, 0.3354102075099945, 0.3872983455657959, 0.3061862289905548, -0.25, 0.3952847123146057, -0.3061862289905548, -0.5, 0.3061862289905548, 0.3952847123146057, -0.3952847123146057, 0.25, -0.25, 0.3952847123146057, -0.55901700258255, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, 0.2545875310897827, -0.44095855951309204, -0.2545875310897827, 0.28867512941360474, -0.21516573429107666, -0.21516573429107666, -0.3888888955116272, -0.32867109775543213, 0.2222222238779068, -0.146986186504364, -0.09622504562139511, 0.146986186504364, 0.2222222238779068, 0.32867109775543213, 0.21516573429107666, 0.28867512941360474, 0.2545875310897827, 0.2222222238779068, -0.146986186504364, 0.0555555559694767, -0.24845199286937714, 0.21516573429107666, 0.24845199286937714, 0.146986186504364, -0.2222222238779068, -0.2545875310897827, -0.28867512941360474, -0.44095855951309204, -0.09622504562139511, 0.21516573429107666, 0.3333333432674408, 0.21516573429107666, -0.09622504562139511, -0.44095855951309204, -0.2545875310897827, 0.28867512941360474, 0.146986186504364, 0.2222222238779068, 0.24845199286937714, 0.21516573429107666, 0.0555555559694767, 0.24845199286937714, 0.2222222238779068, 0.146986186504364, 0.28867512941360474, -0.2545875310897827, -0.21516573429107666, 0.32867109775543213, 0.146986186504364, -0.2222222238779068, -0.09622504562139511, 0.2222222238779068, 0.146986186504364, -0.3888888955116272, 0.32867109775543213, -0.21516573429107666, 0.21516573429107666, -0.2545875310897827, -0.28867512941360474, -0.44095855951309204, 0.28867512941360474, -0.2545875310897827, -0.21516573429107666, 0.1666666716337204, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, 0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.5577733516693115, 0.6440612077713013, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, -0.25, 0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, -0.5, 0.3061862289905548, -0.3952847123146057, 0.3952847123146057, 0.3061862289905548, 0.3872983455657959, 0.25, 0.15811388194561005, -0.3061862289905548, 0.3354102075099945, 0.3061862289905548, -0.25, -0.3872983455657959, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3872983455657959, 0.3061862289905548, 0.3354102075099945, 0.15811388194561005, 0.3061862289905548, 0.3872983455657959, -0.25, 0.3952847123146057, -0.3061862289905548, 0.3061862289905548, 0.3952847123146057, -0.5, 0.25, -0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, 0.47628965973854065, 0.3367876708507538, -0.09001028537750244, -0.09001028537750244, -0.47628965973854065, 0.4124789535999298, 0.44095855951309204, -0.15590238571166992, -0.15590238571166992, -0.4124789535999298, 0.3486083447933197, 0.4930066466331482, -0.31180477142333984, -0.3486083447933197, 0.4025382399559021, 0.5091750621795654, 0.4025382399559021, 0.3486083447933197, -0.31180477142333984, 0.4930066466331482, 0.3486083447933197, 0.4124789535999298, 0.15590238571166992, -0.15590238571166992, 0.44095855951309204, 0.4124789535999298, 0.47628965973854065, 0.09001028537750244, -0.09001028537750244, 0.3367876708507538, 0.47628965973854065, -0.2545875310897827, -0.44095855951309204, 0.28867512941360474, -0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, 0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.09622504562139511, 0.2222222238779068, 0.21516573429107666, -0.3888888955116272, -0.21516573429107666, 0.2222222238779068, -0.146986186504364, -0.32867109775543213, -0.2545875310897827, 0.146986186504364, 0.24845199286937714, -0.28867512941360474, 0.21516573429107666, -0.2222222238779068, 0.0555555559694767, 0.2222222238779068, 0.28867512941360474, -0.24845199286937714, -0.146986186504364, 0.2545875310897827, -0.44095855951309204, -0.09622504562139511, 0.21516573429107666, 0.3333333432674408, 0.21516573429107666, -0.09622504562139511, -0.44095855951309204, -0.2545875310897827, 0.146986186504364, 0.28867512941360474, 0.24845199286937714, 0.2222222238779068, 0.0555555559694767, 0.21516573429107666, 0.2222222238779068, 0.24845199286937714, 0.28867512941360474, 0.146986186504364, -0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.21516573429107666, -0.2222222238779068, -0.3888888955116272, 0.2222222238779068, -0.21516573429107666, -0.09622504562139511, 0.146986186504364, 0.32867109775543213, -0.2545875310897827, -0.28867512941360474, 0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, -0.44095855951309204, -0.2545875310897827, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, 0.5577733516693115, 0.16101530194282532, 0.6440612077713013, -0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, -0.09001028537750244, -0.47628965973854065, 0.3367876708507538, 0.47628965973854065, -0.09001028537750244, -0.15590238571166992, -0.4124789535999298, 0.44095855951309204, 0.4124789535999298, -0.15590238571166992, -0.31180477142333984, -0.3486083447933197, 0.4930066466331482, 0.3486083447933197, 0.4025382399559021, 0.5091750621795654, 0.4025382399559021, 0.3486083447933197, 0.4930066466331482, -0.31180477142333984, 0.3486083447933197, 0.4124789535999298, 0.15590238571166992, 0.44095855951309204, -0.15590238571166992, 0.4124789535999298, 0.47628965973854065, 0.09001028537750244, 0.3367876708507538, -0.09001028537750244, 0.47628965973854065, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.55901700258255, 0.3952847123146057, -0.25, -0.25, 0.3952847123146057, 0.3952847123146057, 0.3061862289905548, -0.5, 0.3061862289905548, -0.3952847123146057, -0.25, 0.3061862289905548, 0.3354102075099945, -0.3872983455657959, 0.15811388194561005, 0.3872983455657959, -0.3061862289905548, 0.25, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3061862289905548, 0.3872983455657959, 0.15811388194561005, 0.3354102075099945, 0.3872983455657959, 0.3061862289905548, -0.25, 0.3952847123146057, -0.3061862289905548, -0.5, 0.3061862289905548, 0.3952847123146057, -0.3952847123146057, 0.25, -0.25, 0.3952847123146057, -0.55901700258255, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, 0.2545875310897827, -0.44095855951309204, -0.2545875310897827, 0.28867512941360474, -0.21516573429107666, -0.21516573429107666, -0.3888888955116272, -0.32867109775543213, 0.2222222238779068, -0.146986186504364, -0.09622504562139511, 0.146986186504364, 0.2222222238779068, 0.32867109775543213, 0.21516573429107666, 0.28867512941360474, 0.2545875310897827, 0.2222222238779068, -0.146986186504364, 0.0555555559694767, -0.24845199286937714, 0.21516573429107666, 0.24845199286937714, 0.146986186504364, -0.2222222238779068, -0.2545875310897827, -0.28867512941360474, -0.44095855951309204, -0.09622504562139511, 0.21516573429107666, 0.3333333432674408, 0.21516573429107666, -0.09622504562139511, -0.44095855951309204, -0.2545875310897827, 0.28867512941360474, 0.146986186504364, 0.2222222238779068, 0.24845199286937714, 0.21516573429107666, 0.0555555559694767, 0.24845199286937714, 0.2222222238779068, 0.146986186504364, 0.28867512941360474, -0.2545875310897827, -0.21516573429107666, 0.32867109775543213, 0.146986186504364, -0.2222222238779068, -0.09622504562139511, 0.2222222238779068, 0.146986186504364, -0.3888888955116272, 0.32867109775543213, -0.21516573429107666, 0.21516573429107666, -0.2545875310897827, -0.28867512941360474, -0.44095855951309204, 0.28867512941360474, -0.2545875310897827, -0.21516573429107666, 0.1666666716337204, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, 0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.5577733516693115, 0.6440612077713013, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, -0.25, 0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, -0.5, 0.3061862289905548, -0.3952847123146057, 0.3952847123146057, 0.3061862289905548, 0.3872983455657959, 0.25, 0.15811388194561005, -0.3061862289905548, 0.3354102075099945, 0.3061862289905548, -0.25, -0.3872983455657959, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3872983455657959, 0.3061862289905548, 0.3354102075099945, 0.15811388194561005, 0.3061862289905548, 0.3872983455657959, -0.25, 0.3952847123146057, -0.3061862289905548, 0.3061862289905548, 0.3952847123146057, -0.5, 0.25, -0.3952847123146057, -0.55901700258255, 0.3952847123146057, -0.25, 0.47628965973854065, 0.3367876708507538, -0.09001028537750244, -0.09001028537750244, -0.47628965973854065, 0.4124789535999298, 0.44095855951309204, -0.15590238571166992, -0.15590238571166992, -0.4124789535999298, 0.3486083447933197, 0.4930066466331482, -0.31180477142333984, -0.3486083447933197, 0.4025382399559021, 0.5091750621795654, 0.4025382399559021, 0.3486083447933197, -0.31180477142333984, 0.4930066466331482, 0.3486083447933197, 0.4124789535999298, 0.15590238571166992, -0.15590238571166992, 0.44095855951309204, 0.4124789535999298, 0.47628965973854065, 0.09001028537750244, -0.09001028537750244, 0.3367876708507538, 0.47628965973854065, -0.2545875310897827, -0.44095855951309204, 0.28867512941360474, -0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, 0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.09622504562139511, 0.2222222238779068, 0.21516573429107666, -0.3888888955116272, -0.21516573429107666, 0.2222222238779068, -0.146986186504364, -0.32867109775543213, -0.2545875310897827, 0.146986186504364, 0.24845199286937714, -0.28867512941360474, 0.21516573429107666, -0.2222222238779068, 0.0555555559694767, 0.2222222238779068, 0.28867512941360474, -0.24845199286937714, -0.146986186504364, 0.2545875310897827, -0.44095855951309204, -0.09622504562139511, 0.21516573429107666, 0.3333333432674408, 0.21516573429107666, -0.09622504562139511, -0.44095855951309204, -0.2545875310897827, 0.146986186504364, 0.28867512941360474, 0.24845199286937714, 0.2222222238779068, 0.0555555559694767, 0.21516573429107666, 0.2222222238779068, 0.24845199286937714, 0.28867512941360474, 0.146986186504364, -0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.21516573429107666, -0.2222222238779068, -0.3888888955116272, 0.2222222238779068, -0.21516573429107666, -0.09622504562139511, 0.146986186504364, 0.32867109775543213, -0.2545875310897827, -0.28867512941360474, 0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, -0.44095855951309204, -0.2545875310897827}; +}; -template -KOKKOS_INLINE_FUNCTION void fwd_AAA(const V &L, const V &R, const V &out, const int ii, const int k) -{ +// mixed product, 50 terms: GRACE-1L-OAM AAA, GRACE-1L-OMAT AAA, GRACE-1L-OMAT-large-base AAA, +// GRACE-1L-OMAT-large-ft-AM AAA, GRACE-1L-OMAT-large-ft-E AAA, GRACE-1L-OMAT-medium-base AAA, +// GRACE-1L-OMAT-medium-ft-AM AAA, GRACE-1L-OMAT-medium-ft-E AAA, GRACE-1L-SMAX-OMAT-large AAA, GRACE-1L-SMAX-large +// AAA, GRACE-2L-OAM BBB, GRACE-2L-OMAT BBB, GRACE-OFF-1L-medium AAA, GRACE-OFF-1L-large AAA +struct T50_e9b986c4 { + static constexpr int nt = 50, nl = 141; + static constexpr int tab[50][3] = {{0,0,0}, {1,0,1}, {8,1,2}, {9,2,2}, {10,3,2}, {2,0,3}, {27,4,4}, {28,5,4}, {29,6,4}, {30,7,4}, {31,8,4}, {11,1,5}, {12,2,5}, {13,3,5}, {3,0,6}, {37,4,7}, {38,5,7}, {39,6,7}, {40,7,7}, {41,8,7}, {42,4,8}, {43,5,8}, {44,6,8}, {45,7,8}, {46,8,8}, {14,1,9}, {15,2,9}, {16,3,9}, {80,9,10}, {81,10,10}, {82,11,10}, {83,12,10}, {84,13,10}, {85,14,10}, {86,15,10}, {4,0,11}, {47,4,12}, {48,5,12}, {49,6,12}, {50,7,12}, {51,8,12}, {132,16,13}, {133,17,13}, {134,18,13}, {135,19,13}, {136,20,13}, {137,21,13}, {138,22,13}, {139,23,13}, {140,24,13}}; + static constexpr double cg[50] = {1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { const float a0 = L(ii, k, 0); const float a1 = L(ii, k, 1); const float a2 = L(ii, k, 2); @@ -1815,21 +1862,11 @@ KOKKOS_INLINE_FUNCTION void fwd_AAA(const V &L, const V &R, const V &out, const const float a14 = L(ii, k, 14); const float a15 = L(ii, k, 15); const float a16 = L(ii, k, 16); - const float a17 = L(ii, k, 17); - const float a18 = L(ii, k, 18); - const float a19 = L(ii, k, 19); - const float a20 = L(ii, k, 20); - const float a21 = L(ii, k, 21); const float a27 = L(ii, k, 27); const float a28 = L(ii, k, 28); const float a29 = L(ii, k, 29); const float a30 = L(ii, k, 30); const float a31 = L(ii, k, 31); - const float a32 = L(ii, k, 32); - const float a33 = L(ii, k, 33); - const float a34 = L(ii, k, 34); - const float a35 = L(ii, k, 35); - const float a36 = L(ii, k, 36); const float a37 = L(ii, k, 37); const float a38 = L(ii, k, 38); const float a39 = L(ii, k, 39); @@ -1845,27 +1882,6 @@ KOKKOS_INLINE_FUNCTION void fwd_AAA(const V &L, const V &R, const V &out, const const float a49 = L(ii, k, 49); const float a50 = L(ii, k, 50); const float a51 = L(ii, k, 51); - const float a52 = L(ii, k, 52); - const float a53 = L(ii, k, 53); - const float a54 = L(ii, k, 54); - const float a55 = L(ii, k, 55); - const float a56 = L(ii, k, 56); - const float a57 = L(ii, k, 57); - const float a58 = L(ii, k, 58); - const float a66 = L(ii, k, 66); - const float a67 = L(ii, k, 67); - const float a68 = L(ii, k, 68); - const float a69 = L(ii, k, 69); - const float a70 = L(ii, k, 70); - const float a71 = L(ii, k, 71); - const float a72 = L(ii, k, 72); - const float a73 = L(ii, k, 73); - const float a74 = L(ii, k, 74); - const float a75 = L(ii, k, 75); - const float a76 = L(ii, k, 76); - const float a77 = L(ii, k, 77); - const float a78 = L(ii, k, 78); - const float a79 = L(ii, k, 79); const float a80 = L(ii, k, 80); const float a81 = L(ii, k, 81); const float a82 = L(ii, k, 82); @@ -1873,42 +1889,6 @@ KOKKOS_INLINE_FUNCTION void fwd_AAA(const V &L, const V &R, const V &out, const const float a84 = L(ii, k, 84); const float a85 = L(ii, k, 85); const float a86 = L(ii, k, 86); - const float a87 = L(ii, k, 87); - const float a88 = L(ii, k, 88); - const float a89 = L(ii, k, 89); - const float a90 = L(ii, k, 90); - const float a91 = L(ii, k, 91); - const float a92 = L(ii, k, 92); - const float a93 = L(ii, k, 93); - const float a94 = L(ii, k, 94); - const float a95 = L(ii, k, 95); - const float a96 = L(ii, k, 96); - const float a97 = L(ii, k, 97); - const float a98 = L(ii, k, 98); - const float a99 = L(ii, k, 99); - const float a100 = L(ii, k, 100); - const float a101 = L(ii, k, 101); - const float a102 = L(ii, k, 102); - const float a103 = L(ii, k, 103); - const float a104 = L(ii, k, 104); - const float a105 = L(ii, k, 105); - const float a106 = L(ii, k, 106); - const float a107 = L(ii, k, 107); - const float a108 = L(ii, k, 108); - const float a109 = L(ii, k, 109); - const float a110 = L(ii, k, 110); - const float a111 = L(ii, k, 111); - const float a112 = L(ii, k, 112); - const float a113 = L(ii, k, 113); - const float a123 = L(ii, k, 123); - const float a124 = L(ii, k, 124); - const float a125 = L(ii, k, 125); - const float a126 = L(ii, k, 126); - const float a127 = L(ii, k, 127); - const float a128 = L(ii, k, 128); - const float a129 = L(ii, k, 129); - const float a130 = L(ii, k, 130); - const float a131 = L(ii, k, 131); const float a132 = L(ii, k, 132); const float a133 = L(ii, k, 133); const float a134 = L(ii, k, 134); @@ -1957,187 +1937,4818 @@ KOKKOS_INLINE_FUNCTION void fwd_AAA(const V &L, const V &R, const V &out, const out(ii, k, 11) = 1.0f * a4 * b0; out(ii, k, 12) = 0.20000000298023224f * a47 * b4 + 0.20000000298023224f * a48 * b5 + 0.20000000298023224f * a49 * b6 + 0.20000000298023224f * a50 * b7 + 0.20000000298023224f * a51 * b8; out(ii, k, 13) = 0.1111111119389534f * a132 * b16 + 0.1111111119389534f * a133 * b17 + 0.1111111119389534f * a134 * b18 + 0.1111111119389534f * a135 * b19 + 0.1111111119389534f * a136 * b20 + 0.1111111119389534f * a137 * b21 + 0.1111111119389534f * a138 * b22 + 0.1111111119389534f * a139 * b23 + 0.1111111119389534f * a140 * b24; - out(ii, k, 14) = 1.0f * a0 * b1; - out(ii, k, 15) = 1.0f * a0 * b2; - out(ii, k, 16) = 1.0f * a0 * b3; - out(ii, k, 17) = 1.0f * a1 * b1; - out(ii, k, 18) = 1.0f * a1 * b2; - out(ii, k, 19) = 1.0f * a1 * b3; - out(ii, k, 20) = 1.0f * a8 * b0; - out(ii, k, 21) = 1.0f * a9 * b0; - out(ii, k, 22) = 1.0f * a10 * b0; - out(ii, k, 23) = -0.22360679507255554f * a8 * b6 + -0.3872983455657959f * a8 * b8 + 0.3872983455657959f * a9 * b5 + 0.3872983455657959f * a10 * b4; - out(ii, k, 24) = 0.3872983455657959f * a8 * b5 + 0.4472135901451111f * a9 * b6 + 0.3872983455657959f * a10 * b7; - out(ii, k, 25) = 0.3872983455657959f * a8 * b4 + 0.3872983455657959f * a9 * b7 + -0.22360679507255554f * a10 * b6 + 0.3872983455657959f * a10 * b8; - out(ii, k, 26) = 0.26726123690605164f * a52 * b8 + 0.2182178944349289f * a53 * b7 + 0.23904572427272797f * a54 * b6 + 0.0690065547823906f * a54 * b8 + -0.16903084516525269f * a55 * b5 + -0.0690065547823906f * a56 * b4 + -0.2182178944349289f * a57 * b5 + -0.26726123690605164f * a58 * b4; - out(ii, k, 27) = 0.2182178944349289f * a53 * b4 + 0.2760262191295624f * a54 * b5 + 0.29277002811431885f * a55 * b6 + 0.2760262191295624f * a56 * b7 + 0.2182178944349289f * a57 * b8; - out(ii, k, 28) = 0.26726123690605164f * a52 * b4 + 0.2182178944349289f * a53 * b5 + -0.0690065547823906f * a54 * b4 + -0.16903084516525269f * a55 * b7 + 0.23904572427272797f * a56 * b6 + -0.0690065547823906f * a56 * b8 + 0.2182178944349289f * a57 * b7 + 0.26726123690605164f * a58 * b8; - out(ii, k, 29) = 1.0f * a2 * b1; - out(ii, k, 30) = 1.0f * a2 * b2; - out(ii, k, 31) = 1.0f * a2 * b3; - out(ii, k, 32) = 0.3872983455657959f * a27 * b3 + 0.3872983455657959f * a28 * b2 + -0.22360679507255554f * a29 * b1 + -0.3872983455657959f * a31 * b1; - out(ii, k, 33) = 0.3872983455657959f * a28 * b1 + 0.4472135901451111f * a29 * b2 + 0.3872983455657959f * a30 * b3; - out(ii, k, 34) = 0.3872983455657959f * a27 * b1 + -0.22360679507255554f * a29 * b3 + 0.3872983455657959f * a30 * b2 + 0.3872983455657959f * a31 * b3; - out(ii, k, 35) = -0.0690065547823906f * a27 * b13 + -0.26726123690605164f * a27 * b15 + -0.16903084516525269f * a28 * b12 + -0.2182178944349289f * a28 * b14 + 0.23904572427272797f * a29 * b11 + 0.2182178944349289f * a30 * b10 + 0.26726123690605164f * a31 * b9 + 0.0690065547823906f * a31 * b11; - out(ii, k, 36) = 0.2182178944349289f * a27 * b10 + 0.2760262191295624f * a28 * b11 + 0.29277002811431885f * a29 * b12 + 0.2760262191295624f * a30 * b13 + 0.2182178944349289f * a31 * b14; - out(ii, k, 37) = 0.26726123690605164f * a27 * b9 + -0.0690065547823906f * a27 * b11 + 0.2182178944349289f * a28 * b10 + 0.23904572427272797f * a29 * b13 + -0.16903084516525269f * a30 * b12 + 0.2182178944349289f * a30 * b14 + -0.0690065547823906f * a31 * b13 + 0.26726123690605164f * a31 * b15; - out(ii, k, 38) = 0.20412415266036987f * a87 * b15 + 0.1767766922712326f * a88 * b14 + 0.14940357208251953f * a89 * b13 + 0.03857583925127983f * a89 * b15 + 0.17251639068126678f * a90 * b12 + 0.06681530922651291f * a90 * b14 + -0.13363061845302582f * a91 * b11 + -0.06681530922651291f * a92 * b10 + -0.03857583925127983f * a93 * b9 + -0.14940357208251953f * a93 * b11 + -0.1767766922712326f * a94 * b10 + -0.20412415266036987f * a95 * b9; - out(ii, k, 39) = 0.14433756470680237f * a88 * b9 + 0.18898223340511322f * a89 * b10 + 0.21128855645656586f * a90 * b11 + 0.2182178944349289f * a91 * b12 + 0.21128855645656586f * a92 * b13 + 0.18898223340511322f * a93 * b14 + 0.14433756470680237f * a94 * b15; - out(ii, k, 40) = 0.20412415266036987f * a87 * b9 + 0.1767766922712326f * a88 * b10 + -0.03857583925127983f * a89 * b9 + 0.14940357208251953f * a89 * b11 + -0.06681530922651291f * a90 * b10 + -0.13363061845302582f * a91 * b13 + 0.17251639068126678f * a92 * b12 + -0.06681530922651291f * a92 * b14 + 0.14940357208251953f * a93 * b13 + -0.03857583925127983f * a93 * b15 + 0.1767766922712326f * a94 * b14 + 0.20412415266036987f * a95 * b15; - out(ii, k, 41) = 0.3872983455657959f * a32 * b3 + 0.3872983455657959f * a33 * b2 + -0.22360679507255554f * a34 * b1 + -0.3872983455657959f * a36 * b1; - out(ii, k, 42) = 0.3872983455657959f * a33 * b1 + 0.4472135901451111f * a34 * b2 + 0.3872983455657959f * a35 * b3; - out(ii, k, 43) = 0.3872983455657959f * a32 * b1 + -0.22360679507255554f * a34 * b3 + 0.3872983455657959f * a35 * b2 + 0.3872983455657959f * a36 * b3; - out(ii, k, 44) = -0.0690065547823906f * a32 * b13 + -0.26726123690605164f * a32 * b15 + -0.16903084516525269f * a33 * b12 + -0.2182178944349289f * a33 * b14 + 0.23904572427272797f * a34 * b11 + 0.2182178944349289f * a35 * b10 + 0.26726123690605164f * a36 * b9 + 0.0690065547823906f * a36 * b11; - out(ii, k, 45) = 0.2182178944349289f * a32 * b10 + 0.2760262191295624f * a33 * b11 + 0.29277002811431885f * a34 * b12 + 0.2760262191295624f * a35 * b13 + 0.2182178944349289f * a36 * b14; - out(ii, k, 46) = 0.26726123690605164f * a32 * b9 + -0.0690065547823906f * a32 * b11 + 0.2182178944349289f * a33 * b10 + 0.23904572427272797f * a34 * b13 + -0.16903084516525269f * a35 * b12 + 0.2182178944349289f * a35 * b14 + -0.0690065547823906f * a36 * b13 + 0.26726123690605164f * a36 * b15; - out(ii, k, 47) = 0.20412415266036987f * a96 * b15 + 0.1767766922712326f * a97 * b14 + 0.14940357208251953f * a98 * b13 + 0.03857583925127983f * a98 * b15 + 0.17251639068126678f * a99 * b12 + 0.06681530922651291f * a99 * b14 + -0.13363061845302582f * a100 * b11 + -0.06681530922651291f * a101 * b10 + -0.03857583925127983f * a102 * b9 + -0.14940357208251953f * a102 * b11 + -0.1767766922712326f * a103 * b10 + -0.20412415266036987f * a104 * b9; - out(ii, k, 48) = 0.14433756470680237f * a97 * b9 + 0.18898223340511322f * a98 * b10 + 0.21128855645656586f * a99 * b11 + 0.2182178944349289f * a100 * b12 + 0.21128855645656586f * a101 * b13 + 0.18898223340511322f * a102 * b14 + 0.14433756470680237f * a103 * b15; - out(ii, k, 49) = 0.20412415266036987f * a96 * b9 + 0.1767766922712326f * a97 * b10 + -0.03857583925127983f * a98 * b9 + 0.14940357208251953f * a98 * b11 + -0.06681530922651291f * a99 * b10 + -0.13363061845302582f * a100 * b13 + 0.17251639068126678f * a101 * b12 + -0.06681530922651291f * a101 * b14 + 0.14940357208251953f * a102 * b13 + -0.03857583925127983f * a102 * b15 + 0.1767766922712326f * a103 * b14 + 0.20412415266036987f * a104 * b15; - out(ii, k, 50) = 1.0f * a11 * b0; - out(ii, k, 51) = 1.0f * a12 * b0; - out(ii, k, 52) = 1.0f * a13 * b0; - out(ii, k, 53) = -0.22360679507255554f * a11 * b6 + -0.3872983455657959f * a11 * b8 + 0.3872983455657959f * a12 * b5 + 0.3872983455657959f * a13 * b4; - out(ii, k, 54) = 0.3872983455657959f * a11 * b5 + 0.4472135901451111f * a12 * b6 + 0.3872983455657959f * a13 * b7; - out(ii, k, 55) = 0.3872983455657959f * a11 * b4 + 0.3872983455657959f * a12 * b7 + -0.22360679507255554f * a13 * b6 + 0.3872983455657959f * a13 * b8; - out(ii, k, 56) = 0.26726123690605164f * a66 * b8 + 0.2182178944349289f * a67 * b7 + 0.23904572427272797f * a68 * b6 + 0.0690065547823906f * a68 * b8 + -0.16903084516525269f * a69 * b5 + -0.0690065547823906f * a70 * b4 + -0.2182178944349289f * a71 * b5 + -0.26726123690605164f * a72 * b4; - out(ii, k, 57) = 0.2182178944349289f * a67 * b4 + 0.2760262191295624f * a68 * b5 + 0.29277002811431885f * a69 * b6 + 0.2760262191295624f * a70 * b7 + 0.2182178944349289f * a71 * b8; - out(ii, k, 58) = 0.26726123690605164f * a66 * b4 + 0.2182178944349289f * a67 * b5 + -0.0690065547823906f * a68 * b4 + -0.16903084516525269f * a69 * b7 + 0.23904572427272797f * a70 * b6 + -0.0690065547823906f * a70 * b8 + 0.2182178944349289f * a71 * b7 + 0.26726123690605164f * a72 * b8; - out(ii, k, 59) = -0.03857583925127983f * a66 * b22 + -0.20412415266036987f * a66 * b24 + -0.06681530922651291f * a67 * b21 + -0.1767766922712326f * a67 * b23 + -0.13363061845302582f * a68 * b20 + -0.14940357208251953f * a68 * b22 + 0.17251639068126678f * a69 * b19 + 0.14940357208251953f * a70 * b18 + 0.1767766922712326f * a71 * b17 + 0.06681530922651291f * a71 * b19 + 0.20412415266036987f * a72 * b16 + 0.03857583925127983f * a72 * b18; - out(ii, k, 60) = 0.14433756470680237f * a66 * b17 + 0.18898223340511322f * a67 * b18 + 0.21128855645656586f * a68 * b19 + 0.2182178944349289f * a69 * b20 + 0.21128855645656586f * a70 * b21 + 0.18898223340511322f * a71 * b22 + 0.14433756470680237f * a72 * b23; - out(ii, k, 61) = 0.20412415266036987f * a66 * b16 + -0.03857583925127983f * a66 * b18 + 0.1767766922712326f * a67 * b17 + -0.06681530922651291f * a67 * b19 + 0.14940357208251953f * a68 * b18 + 0.17251639068126678f * a69 * b21 + -0.13363061845302582f * a70 * b20 + 0.14940357208251953f * a70 * b22 + -0.06681530922651291f * a71 * b21 + 0.1767766922712326f * a71 * b23 + -0.03857583925127983f * a72 * b22 + 0.20412415266036987f * a72 * b24; - out(ii, k, 62) = 1.0f * a3 * b1; - out(ii, k, 63) = 1.0f * a3 * b2; - out(ii, k, 64) = 1.0f * a3 * b3; - out(ii, k, 65) = 0.3872983455657959f * a37 * b3 + 0.3872983455657959f * a38 * b2 + -0.22360679507255554f * a39 * b1 + -0.3872983455657959f * a41 * b1; - out(ii, k, 66) = 0.3872983455657959f * a38 * b1 + 0.4472135901451111f * a39 * b2 + 0.3872983455657959f * a40 * b3; - out(ii, k, 67) = 0.3872983455657959f * a37 * b1 + -0.22360679507255554f * a39 * b3 + 0.3872983455657959f * a40 * b2 + 0.3872983455657959f * a41 * b3; - out(ii, k, 68) = -0.0690065547823906f * a37 * b13 + -0.26726123690605164f * a37 * b15 + -0.16903084516525269f * a38 * b12 + -0.2182178944349289f * a38 * b14 + 0.23904572427272797f * a39 * b11 + 0.2182178944349289f * a40 * b10 + 0.26726123690605164f * a41 * b9 + 0.0690065547823906f * a41 * b11; - out(ii, k, 69) = 0.2182178944349289f * a37 * b10 + 0.2760262191295624f * a38 * b11 + 0.29277002811431885f * a39 * b12 + 0.2760262191295624f * a40 * b13 + 0.2182178944349289f * a41 * b14; - out(ii, k, 70) = 0.26726123690605164f * a37 * b9 + -0.0690065547823906f * a37 * b11 + 0.2182178944349289f * a38 * b10 + 0.23904572427272797f * a39 * b13 + -0.16903084516525269f * a40 * b12 + 0.2182178944349289f * a40 * b14 + -0.0690065547823906f * a41 * b13 + 0.26726123690605164f * a41 * b15; - out(ii, k, 71) = -0.03857583925127983f * a73 * b22 + -0.20412415266036987f * a73 * b24 + -0.06681530922651291f * a74 * b21 + -0.1767766922712326f * a74 * b23 + -0.13363061845302582f * a75 * b20 + -0.14940357208251953f * a75 * b22 + 0.17251639068126678f * a76 * b19 + 0.14940357208251953f * a77 * b18 + 0.1767766922712326f * a78 * b17 + 0.06681530922651291f * a78 * b19 + 0.20412415266036987f * a79 * b16 + 0.03857583925127983f * a79 * b18; - out(ii, k, 72) = 0.14433756470680237f * a73 * b17 + 0.18898223340511322f * a74 * b18 + 0.21128855645656586f * a75 * b19 + 0.2182178944349289f * a76 * b20 + 0.21128855645656586f * a77 * b21 + 0.18898223340511322f * a78 * b22 + 0.14433756470680237f * a79 * b23; - out(ii, k, 73) = 0.20412415266036987f * a73 * b16 + -0.03857583925127983f * a73 * b18 + 0.1767766922712326f * a74 * b17 + -0.06681530922651291f * a74 * b19 + 0.14940357208251953f * a75 * b18 + 0.17251639068126678f * a76 * b21 + -0.13363061845302582f * a77 * b20 + 0.14940357208251953f * a77 * b22 + -0.06681530922651291f * a78 * b21 + 0.1767766922712326f * a78 * b23 + -0.03857583925127983f * a79 * b22 + 0.20412415266036987f * a79 * b24; - out(ii, k, 74) = 0.3872983455657959f * a42 * b3 + 0.3872983455657959f * a43 * b2 + -0.22360679507255554f * a44 * b1 + -0.3872983455657959f * a46 * b1; - out(ii, k, 75) = 0.3872983455657959f * a43 * b1 + 0.4472135901451111f * a44 * b2 + 0.3872983455657959f * a45 * b3; - out(ii, k, 76) = 0.3872983455657959f * a42 * b1 + -0.22360679507255554f * a44 * b3 + 0.3872983455657959f * a45 * b2 + 0.3872983455657959f * a46 * b3; - out(ii, k, 77) = -0.0690065547823906f * a42 * b13 + -0.26726123690605164f * a42 * b15 + -0.16903084516525269f * a43 * b12 + -0.2182178944349289f * a43 * b14 + 0.23904572427272797f * a44 * b11 + 0.2182178944349289f * a45 * b10 + 0.26726123690605164f * a46 * b9 + 0.0690065547823906f * a46 * b11; - out(ii, k, 78) = 0.2182178944349289f * a42 * b10 + 0.2760262191295624f * a43 * b11 + 0.29277002811431885f * a44 * b12 + 0.2760262191295624f * a45 * b13 + 0.2182178944349289f * a46 * b14; - out(ii, k, 79) = 0.26726123690605164f * a42 * b9 + -0.0690065547823906f * a42 * b11 + 0.2182178944349289f * a43 * b10 + 0.23904572427272797f * a44 * b13 + -0.16903084516525269f * a45 * b12 + 0.2182178944349289f * a45 * b14 + -0.0690065547823906f * a46 * b13 + 0.26726123690605164f * a46 * b15; - out(ii, k, 80) = 0.20412415266036987f * a123 * b15 + 0.1767766922712326f * a124 * b14 + 0.14940357208251953f * a125 * b13 + 0.03857583925127983f * a125 * b15 + 0.17251639068126678f * a126 * b12 + 0.06681530922651291f * a126 * b14 + -0.13363061845302582f * a127 * b11 + -0.06681530922651291f * a128 * b10 + -0.03857583925127983f * a129 * b9 + -0.14940357208251953f * a129 * b11 + -0.1767766922712326f * a130 * b10 + -0.20412415266036987f * a131 * b9; - out(ii, k, 81) = 0.14433756470680237f * a124 * b9 + 0.18898223340511322f * a125 * b10 + 0.21128855645656586f * a126 * b11 + 0.2182178944349289f * a127 * b12 + 0.21128855645656586f * a128 * b13 + 0.18898223340511322f * a129 * b14 + 0.14433756470680237f * a130 * b15; - out(ii, k, 82) = 0.20412415266036987f * a123 * b9 + 0.1767766922712326f * a124 * b10 + -0.03857583925127983f * a125 * b9 + 0.14940357208251953f * a125 * b11 + -0.06681530922651291f * a126 * b10 + -0.13363061845302582f * a127 * b13 + 0.17251639068126678f * a128 * b12 + -0.06681530922651291f * a128 * b14 + 0.14940357208251953f * a129 * b13 + -0.03857583925127983f * a129 * b15 + 0.1767766922712326f * a130 * b14 + 0.20412415266036987f * a131 * b15; - out(ii, k, 83) = 1.0f * a14 * b0; - out(ii, k, 84) = 1.0f * a15 * b0; - out(ii, k, 85) = 1.0f * a16 * b0; - out(ii, k, 86) = -0.22360679507255554f * a14 * b6 + -0.3872983455657959f * a14 * b8 + 0.3872983455657959f * a15 * b5 + 0.3872983455657959f * a16 * b4; - out(ii, k, 87) = 0.3872983455657959f * a14 * b5 + 0.4472135901451111f * a15 * b6 + 0.3872983455657959f * a16 * b7; - out(ii, k, 88) = 0.3872983455657959f * a14 * b4 + 0.3872983455657959f * a15 * b7 + -0.22360679507255554f * a16 * b6 + 0.3872983455657959f * a16 * b8; - out(ii, k, 89) = 0.26726123690605164f * a80 * b8 + 0.2182178944349289f * a81 * b7 + 0.23904572427272797f * a82 * b6 + 0.0690065547823906f * a82 * b8 + -0.16903084516525269f * a83 * b5 + -0.0690065547823906f * a84 * b4 + -0.2182178944349289f * a85 * b5 + -0.26726123690605164f * a86 * b4; - out(ii, k, 90) = 0.2182178944349289f * a81 * b4 + 0.2760262191295624f * a82 * b5 + 0.29277002811431885f * a83 * b6 + 0.2760262191295624f * a84 * b7 + 0.2182178944349289f * a85 * b8; - out(ii, k, 91) = 0.26726123690605164f * a80 * b4 + 0.2182178944349289f * a81 * b5 + -0.0690065547823906f * a82 * b4 + -0.16903084516525269f * a83 * b7 + 0.23904572427272797f * a84 * b6 + -0.0690065547823906f * a84 * b8 + 0.2182178944349289f * a85 * b7 + 0.26726123690605164f * a86 * b8; - out(ii, k, 92) = -0.03857583925127983f * a80 * b22 + -0.20412415266036987f * a80 * b24 + -0.06681530922651291f * a81 * b21 + -0.1767766922712326f * a81 * b23 + -0.13363061845302582f * a82 * b20 + -0.14940357208251953f * a82 * b22 + 0.17251639068126678f * a83 * b19 + 0.14940357208251953f * a84 * b18 + 0.1767766922712326f * a85 * b17 + 0.06681530922651291f * a85 * b19 + 0.20412415266036987f * a86 * b16 + 0.03857583925127983f * a86 * b18; - out(ii, k, 93) = 0.14433756470680237f * a80 * b17 + 0.18898223340511322f * a81 * b18 + 0.21128855645656586f * a82 * b19 + 0.2182178944349289f * a83 * b20 + 0.21128855645656586f * a84 * b21 + 0.18898223340511322f * a85 * b22 + 0.14433756470680237f * a86 * b23; - out(ii, k, 94) = 0.20412415266036987f * a80 * b16 + -0.03857583925127983f * a80 * b18 + 0.1767766922712326f * a81 * b17 + -0.06681530922651291f * a81 * b19 + 0.14940357208251953f * a82 * b18 + 0.17251639068126678f * a83 * b21 + -0.13363061845302582f * a84 * b20 + 0.14940357208251953f * a84 * b22 + -0.06681530922651291f * a85 * b21 + 0.1767766922712326f * a85 * b23 + -0.03857583925127983f * a86 * b22 + 0.20412415266036987f * a86 * b24; - out(ii, k, 95) = 1.0f * a4 * b1; - out(ii, k, 96) = 1.0f * a4 * b2; - out(ii, k, 97) = 1.0f * a4 * b3; - out(ii, k, 98) = 0.3872983455657959f * a47 * b3 + 0.3872983455657959f * a48 * b2 + -0.22360679507255554f * a49 * b1 + -0.3872983455657959f * a51 * b1; - out(ii, k, 99) = 0.3872983455657959f * a48 * b1 + 0.4472135901451111f * a49 * b2 + 0.3872983455657959f * a50 * b3; - out(ii, k, 100) = 0.3872983455657959f * a47 * b1 + -0.22360679507255554f * a49 * b3 + 0.3872983455657959f * a50 * b2 + 0.3872983455657959f * a51 * b3; - out(ii, k, 101) = -0.0690065547823906f * a47 * b13 + -0.26726123690605164f * a47 * b15 + -0.16903084516525269f * a48 * b12 + -0.2182178944349289f * a48 * b14 + 0.23904572427272797f * a49 * b11 + 0.2182178944349289f * a50 * b10 + 0.26726123690605164f * a51 * b9 + 0.0690065547823906f * a51 * b11; - out(ii, k, 102) = 0.2182178944349289f * a47 * b10 + 0.2760262191295624f * a48 * b11 + 0.29277002811431885f * a49 * b12 + 0.2760262191295624f * a50 * b13 + 0.2182178944349289f * a51 * b14; - out(ii, k, 103) = 0.26726123690605164f * a47 * b9 + -0.0690065547823906f * a47 * b11 + 0.2182178944349289f * a48 * b10 + 0.23904572427272797f * a49 * b13 + -0.16903084516525269f * a50 * b12 + 0.2182178944349289f * a50 * b14 + -0.0690065547823906f * a51 * b13 + 0.26726123690605164f * a51 * b15; - out(ii, k, 104) = 0.20412415266036987f * a132 * b15 + 0.1767766922712326f * a133 * b14 + 0.14940357208251953f * a134 * b13 + 0.03857583925127983f * a134 * b15 + 0.17251639068126678f * a135 * b12 + 0.06681530922651291f * a135 * b14 + -0.13363061845302582f * a136 * b11 + -0.06681530922651291f * a137 * b10 + -0.03857583925127983f * a138 * b9 + -0.14940357208251953f * a138 * b11 + -0.1767766922712326f * a139 * b10 + -0.20412415266036987f * a140 * b9; - out(ii, k, 105) = 0.14433756470680237f * a133 * b9 + 0.18898223340511322f * a134 * b10 + 0.21128855645656586f * a135 * b11 + 0.2182178944349289f * a136 * b12 + 0.21128855645656586f * a137 * b13 + 0.18898223340511322f * a138 * b14 + 0.14433756470680237f * a139 * b15; - out(ii, k, 106) = 0.20412415266036987f * a132 * b9 + 0.1767766922712326f * a133 * b10 + -0.03857583925127983f * a134 * b9 + 0.14940357208251953f * a134 * b11 + -0.06681530922651291f * a135 * b10 + -0.13363061845302582f * a136 * b13 + 0.17251639068126678f * a137 * b12 + -0.06681530922651291f * a137 * b14 + 0.14940357208251953f * a138 * b13 + -0.03857583925127983f * a138 * b15 + 0.1767766922712326f * a139 * b14 + 0.20412415266036987f * a140 * b15; - out(ii, k, 107) = 1.0f * a0 * b4; - out(ii, k, 108) = 1.0f * a0 * b5; - out(ii, k, 109) = 1.0f * a0 * b6; - out(ii, k, 110) = 1.0f * a0 * b7; - out(ii, k, 111) = 1.0f * a0 * b8; - out(ii, k, 112) = 1.0f * a1 * b4; - out(ii, k, 113) = 1.0f * a1 * b5; - out(ii, k, 114) = 1.0f * a1 * b6; - out(ii, k, 115) = 1.0f * a1 * b7; - out(ii, k, 116) = 1.0f * a1 * b8; - out(ii, k, 117) = 1.0f * a17 * b0; - out(ii, k, 118) = 1.0f * a18 * b0; - out(ii, k, 119) = 1.0f * a19 * b0; - out(ii, k, 120) = 1.0f * a20 * b0; - out(ii, k, 121) = 1.0f * a21 * b0; - out(ii, k, 122) = -0.4472135901451111f * a17 * b6 + 0.3872983455657959f * a18 * b7 + -0.4472135901451111f * a19 * b4 + 0.3872983455657959f * a20 * b5; - out(ii, k, 123) = 0.3872983455657959f * a17 * b7 + 0.22360679507255554f * a18 * b6 + -0.3872983455657959f * a18 * b8 + 0.22360679507255554f * a19 * b5 + 0.3872983455657959f * a20 * b4 + -0.3872983455657959f * a21 * b5; - out(ii, k, 124) = -0.4472135901451111f * a17 * b4 + 0.22360679507255554f * a18 * b5 + 0.4472135901451111f * a19 * b6 + 0.22360679507255554f * a20 * b7 + -0.4472135901451111f * a21 * b8; - out(ii, k, 125) = 0.3872983455657959f * a17 * b5 + 0.3872983455657959f * a18 * b4 + 0.22360679507255554f * a19 * b7 + 0.22360679507255554f * a20 * b6 + 0.3872983455657959f * a20 * b8 + 0.3872983455657959f * a21 * b7; - out(ii, k, 126) = -0.3872983455657959f * a18 * b5 + -0.4472135901451111f * a19 * b8 + 0.3872983455657959f * a20 * b7 + -0.4472135901451111f * a21 * b6; - out(ii, k, 127) = 0.64549720287323f * a8 * b3 + 0.64549720287323f * a10 * b1; - out(ii, k, 128) = 0.64549720287323f * a8 * b2 + 0.64549720287323f * a9 * b1; - out(ii, k, 129) = -0.3726779818534851f * a8 * b1 + 0.7453559637069702f * a9 * b2 + -0.3726779818534851f * a10 * b3; - out(ii, k, 130) = 0.64549720287323f * a9 * b3 + 0.64549720287323f * a10 * b2; - out(ii, k, 131) = -0.64549720287323f * a8 * b1 + 0.64549720287323f * a10 * b3; - out(ii, k, 132) = -0.11501092463731766f * a8 * b13 + -0.44543540477752686f * a8 * b15 + 0.36369648575782776f * a9 * b10 + 0.44543540477752686f * a10 * b9 + -0.11501092463731766f * a10 * b11; - out(ii, k, 133) = -0.28171807527542114f * a8 * b12 + -0.36369648575782776f * a8 * b14 + 0.46004369854927063f * a9 * b11 + 0.36369648575782776f * a10 * b10; - out(ii, k, 134) = 0.39840954542160034f * a8 * b11 + 0.48795002698898315f * a9 * b12 + 0.39840954542160034f * a10 * b13; - out(ii, k, 135) = 0.36369648575782776f * a8 * b10 + 0.46004369854927063f * a9 * b13 + -0.28171807527542114f * a10 * b12 + 0.36369648575782776f * a10 * b14; - out(ii, k, 136) = 0.44543540477752686f * a8 * b9 + 0.11501092463731766f * a8 * b11 + 0.36369648575782776f * a9 * b14 + -0.11501092463731766f * a10 * b13 + 0.44543540477752686f * a10 * b15; - out(ii, k, 137) = 0.44543540477752686f * a52 * b3 + 0.36369648575782776f * a53 * b2 + -0.11501092463731766f * a54 * b3 + -0.11501092463731766f * a56 * b1 + -0.44543540477752686f * a58 * b1; - out(ii, k, 138) = 0.36369648575782776f * a53 * b3 + 0.46004369854927063f * a54 * b2 + -0.28171807527542114f * a55 * b1 + -0.36369648575782776f * a57 * b1; - out(ii, k, 139) = 0.39840954542160034f * a54 * b1 + 0.48795002698898315f * a55 * b2 + 0.39840954542160034f * a56 * b3; - out(ii, k, 140) = 0.36369648575782776f * a53 * b1 + -0.28171807527542114f * a55 * b3 + 0.46004369854927063f * a56 * b2 + 0.36369648575782776f * a57 * b3; - out(ii, k, 141) = 0.44543540477752686f * a52 * b1 + 0.11501092463731766f * a54 * b1 + -0.11501092463731766f * a56 * b3 + 0.36369648575782776f * a57 * b2 + 0.44543540477752686f * a58 * b3; - out(ii, k, 142) = -0.1785714328289032f * a52 * b13 + -0.3571428656578064f * a53 * b12 + 0.2766416668891907f * a54 * b13 + 0.1785714328289032f * a54 * b15 + -0.3571428656578064f * a55 * b10 + -0.1785714328289032f * a56 * b9 + 0.2766416668891907f * a56 * b11 + 0.1785714328289032f * a58 * b11; - out(ii, k, 143) = 0.2823462188243866f * a52 * b14 + 0.2187044471502304f * a53 * b13 + -0.2823462188243866f * a53 * b15 + 0.11293848603963852f * a54 * b12 + -0.2187044471502304f * a54 * b14 + 0.11293848603963852f * a55 * b11 + 0.2187044471502304f * a56 * b10 + 0.2823462188243866f * a57 * b9 + -0.2187044471502304f * a57 * b11 + -0.2823462188243866f * a58 * b10; - out(ii, k, 144) = -0.3992978632450104f * a52 * b9 + 0.2395787090063095f * a54 * b11 + 0.31943827867507935f * a55 * b12 + 0.2395787090063095f * a56 * b13 + -0.3992978632450104f * a58 * b15; - out(ii, k, 145) = 0.2823462188243866f * a52 * b10 + 0.2823462188243866f * a53 * b9 + 0.2187044471502304f * a53 * b11 + 0.2187044471502304f * a54 * b10 + 0.11293848603963852f * a55 * b13 + 0.11293848603963852f * a56 * b12 + 0.2187044471502304f * a56 * b14 + 0.2187044471502304f * a57 * b13 + 0.2823462188243866f * a57 * b15 + 0.2823462188243866f * a58 * b14; - out(ii, k, 146) = -0.1785714328289032f * a52 * b11 + -0.1785714328289032f * a54 * b9 + -0.2766416668891907f * a54 * b11 + -0.3571428656578064f * a55 * b14 + 0.2766416668891907f * a56 * b13 + -0.1785714328289032f * a56 * b15 + -0.3571428656578064f * a57 * b12 + -0.1785714328289032f * a58 * b13; - out(ii, k, 147) = 1.0f * a2 * b4; - out(ii, k, 148) = 1.0f * a2 * b5; - out(ii, k, 149) = 1.0f * a2 * b6; - out(ii, k, 150) = 1.0f * a2 * b7; - out(ii, k, 151) = 1.0f * a2 * b8; - out(ii, k, 152) = 1.0f * a27 * b0; - out(ii, k, 153) = 1.0f * a28 * b0; - out(ii, k, 154) = 1.0f * a29 * b0; - out(ii, k, 155) = 1.0f * a30 * b0; - out(ii, k, 156) = 1.0f * a31 * b0; - out(ii, k, 157) = 0.0555555559694767f * a27 * b20 + -0.32867109775543213f * a27 * b24 + -0.08784104883670807f * a28 * b21 + -0.23240555822849274f * a28 * b23 + 0.21516573429107666f * a29 * b18 + 0.23240555822849274f * a30 * b17 + -0.08784104883670807f * a30 * b19 + 0.32867109775543213f * a31 * b16; - out(ii, k, 158) = -0.08784104883670807f * a27 * b21 + -0.23240555822849274f * a27 * b23 + -0.2222222238779068f * a28 * b20 + -0.24845199286937714f * a28 * b22 + 0.3042903244495392f * a29 * b19 + 0.24845199286937714f * a30 * b18 + 0.23240555822849274f * a31 * b17 + 0.08784104883670807f * a31 * b19; - out(ii, k, 159) = 0.21516573429107666f * a27 * b18 + 0.3042903244495392f * a28 * b19 + 0.3333333432674408f * a29 * b20 + 0.3042903244495392f * a30 * b21 + 0.21516573429107666f * a31 * b22; - out(ii, k, 160) = 0.23240555822849274f * a27 * b17 + -0.08784104883670807f * a27 * b19 + 0.24845199286937714f * a28 * b18 + 0.3042903244495392f * a29 * b21 + -0.2222222238779068f * a30 * b20 + 0.24845199286937714f * a30 * b22 + -0.08784104883670807f * a31 * b21 + 0.23240555822849274f * a31 * b23; - out(ii, k, 161) = 0.32867109775543213f * a27 * b16 + 0.23240555822849274f * a28 * b17 + 0.08784104883670807f * a28 * b19 + 0.21516573429107666f * a29 * b22 + -0.08784104883670807f * a30 * b21 + 0.23240555822849274f * a30 * b23 + 0.0555555559694767f * a31 * b20 + 0.32867109775543213f * a31 * b24; - out(ii, k, 162) = -0.11385501176118851f * a87 * b22 + -0.17078250646591187f * a88 * b21 + -0.28867512941360474f * a89 * b20 + 0.11385501176118851f * a89 * b24 + 0.21516573429107666f * a90 * b21 + 0.17078250646591187f * a90 * b23 + -0.28867512941360474f * a91 * b18 + -0.17078250646591187f * a92 * b17 + 0.21516573429107666f * a92 * b19 + -0.11385501176118851f * a93 * b16 + 0.17078250646591187f * a94 * b19 + 0.11385501176118851f * a95 * b18; - out(ii, k, 163) = 0.2130032181739807f * a87 * b23 + 0.20126911997795105f * a88 * b22 + -0.2130032181739807f * a88 * b24 + 0.1369306445121765f * a89 * b21 + -0.20126911997795105f * a89 * b23 + 0.06804138422012329f * a90 * b20 + -0.1369306445121765f * a90 * b22 + 0.06804138422012329f * a91 * b19 + 0.1369306445121765f * a92 * b18 + 0.20126911997795105f * a93 * b17 + -0.1369306445121765f * a93 * b19 + 0.2130032181739807f * a94 * b16 + -0.20126911997795105f * a94 * b18 + -0.2130032181739807f * a95 * b17; - out(ii, k, 164) = -0.3478327989578247f * a87 * b16 + -0.08695819973945618f * a88 * b17 + 0.09938079863786697f * a89 * b18 + 0.21118420362472534f * a90 * b19 + 0.24845199286937714f * a91 * b20 + 0.21118420362472534f * a92 * b21 + 0.09938079863786697f * a93 * b22 + -0.08695819973945618f * a94 * b23 + -0.3478327989578247f * a95 * b24; - out(ii, k, 165) = 0.2130032181739807f * a87 * b17 + 0.2130032181739807f * a88 * b16 + 0.20126911997795105f * a88 * b18 + 0.20126911997795105f * a89 * b17 + 0.1369306445121765f * a89 * b19 + 0.1369306445121765f * a90 * b18 + 0.06804138422012329f * a91 * b21 + 0.06804138422012329f * a92 * b20 + 0.1369306445121765f * a92 * b22 + 0.1369306445121765f * a93 * b21 + 0.20126911997795105f * a93 * b23 + 0.20126911997795105f * a94 * b22 + 0.2130032181739807f * a94 * b24 + 0.2130032181739807f * a95 * b23; - out(ii, k, 166) = -0.11385501176118851f * a87 * b18 + -0.17078250646591187f * a88 * b19 + -0.11385501176118851f * a89 * b16 + -0.17078250646591187f * a90 * b17 + -0.21516573429107666f * a90 * b19 + -0.28867512941360474f * a91 * b22 + 0.21516573429107666f * a92 * b21 + -0.17078250646591187f * a92 * b23 + -0.28867512941360474f * a93 * b20 + -0.11385501176118851f * a93 * b24 + -0.17078250646591187f * a94 * b21 + -0.11385501176118851f * a95 * b22; - out(ii, k, 167) = 1.0f * a32 * b0; - out(ii, k, 168) = 1.0f * a33 * b0; - out(ii, k, 169) = 1.0f * a34 * b0; - out(ii, k, 170) = 1.0f * a35 * b0; - out(ii, k, 171) = 1.0f * a36 * b0; - out(ii, k, 172) = -0.4472135901451111f * a32 * b6 + 0.3872983455657959f * a33 * b7 + -0.4472135901451111f * a34 * b4 + 0.3872983455657959f * a35 * b5; - out(ii, k, 173) = 0.3872983455657959f * a32 * b7 + 0.22360679507255554f * a33 * b6 + -0.3872983455657959f * a33 * b8 + 0.22360679507255554f * a34 * b5 + 0.3872983455657959f * a35 * b4 + -0.3872983455657959f * a36 * b5; - out(ii, k, 174) = -0.4472135901451111f * a32 * b4 + 0.22360679507255554f * a33 * b5 + 0.4472135901451111f * a34 * b6 + 0.22360679507255554f * a35 * b7 + -0.4472135901451111f * a36 * b8; - out(ii, k, 175) = 0.3872983455657959f * a32 * b5 + 0.3872983455657959f * a33 * b4 + 0.22360679507255554f * a34 * b7 + 0.22360679507255554f * a35 * b6 + 0.3872983455657959f * a35 * b8 + 0.3872983455657959f * a36 * b7; - out(ii, k, 176) = -0.3872983455657959f * a33 * b5 + -0.4472135901451111f * a34 * b8 + 0.3872983455657959f * a35 * b7 + -0.4472135901451111f * a36 * b6; - out(ii, k, 177) = 0.0555555559694767f * a32 * b20 + -0.32867109775543213f * a32 * b24 + -0.08784104883670807f * a33 * b21 + -0.23240555822849274f * a33 * b23 + 0.21516573429107666f * a34 * b18 + 0.23240555822849274f * a35 * b17 + -0.08784104883670807f * a35 * b19 + 0.32867109775543213f * a36 * b16; - out(ii, k, 178) = -0.08784104883670807f * a32 * b21 + -0.23240555822849274f * a32 * b23 + -0.2222222238779068f * a33 * b20 + -0.24845199286937714f * a33 * b22 + 0.3042903244495392f * a34 * b19 + 0.24845199286937714f * a35 * b18 + 0.23240555822849274f * a36 * b17 + 0.08784104883670807f * a36 * b19; - out(ii, k, 179) = 0.21516573429107666f * a32 * b18 + 0.3042903244495392f * a33 * b19 + 0.3333333432674408f * a34 * b20 + 0.3042903244495392f * a35 * b21 + 0.21516573429107666f * a36 * b22; - out(ii, k, 180) = 0.23240555822849274f * a32 * b17 + -0.08784104883670807f * a32 * b19 + 0.24845199286937714f * a33 * b18 + 0.3042903244495392f * a34 * b21 + -0.2222222238779068f * a35 * b20 + 0.24845199286937714f * a35 * b22 + -0.08784104883670807f * a36 * b21 + 0.23240555822849274f * a36 * b23; - out(ii, k, 181) = 0.32867109775543213f * a32 * b16 + 0.23240555822849274f * a33 * b17 + 0.08784104883670807f * a33 * b19 + 0.21516573429107666f * a34 * b22 + -0.08784104883670807f * a35 * b21 + 0.23240555822849274f * a35 * b23 + 0.0555555559694767f * a36 * b20 + 0.32867109775543213f * a36 * b24; - out(ii, k, 182) = 0.32867109775543213f * a96 * b8 + 0.23240555822849274f * a97 * b7 + 0.21516573429107666f * a98 * b6 + -0.08784104883670807f * a99 * b7 + 0.0555555559694767f * a100 * b4 + -0.08784104883670807f * a101 * b5 + -0.23240555822849274f * a103 * b5 + -0.32867109775543213f * a104 * b4; - out(ii, k, 183) = 0.23240555822849274f * a97 * b8 + 0.24845199286937714f * a98 * b7 + 0.3042903244495392f * a99 * b6 + 0.08784104883670807f * a99 * b8 + -0.2222222238779068f * a100 * b5 + -0.08784104883670807f * a101 * b4 + -0.24845199286937714f * a102 * b5 + -0.23240555822849274f * a103 * b4; - out(ii, k, 184) = 0.21516573429107666f * a98 * b4 + 0.3042903244495392f * a99 * b5 + 0.3333333432674408f * a100 * b6 + 0.3042903244495392f * a101 * b7 + 0.21516573429107666f * a102 * b8; - out(ii, k, 185) = 0.23240555822849274f * a97 * b4 + 0.24845199286937714f * a98 * b5 + -0.08784104883670807f * a99 * b4 + -0.2222222238779068f * a100 * b7 + 0.3042903244495392f * a101 * b6 + -0.08784104883670807f * a101 * b8 + 0.24845199286937714f * a102 * b7 + 0.23240555822849274f * a103 * b8; - out(ii, k, 186) = 0.32867109775543213f * a96 * b4 + 0.23240555822849274f * a97 * b5 + 0.08784104883670807f * a99 * b5 + 0.0555555559694767f * a100 * b8 + -0.08784104883670807f * a101 * b7 + 0.21516573429107666f * a102 * b6 + 0.23240555822849274f * a103 * b7 + 0.32867109775543213f * a104 * b8; - out(ii, k, 187) = -0.11385501176118851f * a96 * b22 + -0.17078250646591187f * a97 * b21 + -0.28867512941360474f * a98 * b20 + 0.11385501176118851f * a98 * b24 + 0.21516573429107666f * a99 * b21 + 0.17078250646591187f * a99 * b23 + -0.28867512941360474f * a100 * b18 + -0.17078250646591187f * a101 * b17 + 0.21516573429107666f * a101 * b19 + -0.11385501176118851f * a102 * b16 + 0.17078250646591187f * a103 * b19 + 0.11385501176118851f * a104 * b18; - out(ii, k, 188) = 0.2130032181739807f * a96 * b23 + 0.20126911997795105f * a97 * b22 + -0.2130032181739807f * a97 * b24 + 0.1369306445121765f * a98 * b21 + -0.20126911997795105f * a98 * b23 + 0.06804138422012329f * a99 * b20 + -0.1369306445121765f * a99 * b22 + 0.06804138422012329f * a100 * b19 + 0.1369306445121765f * a101 * b18 + 0.20126911997795105f * a102 * b17 + -0.1369306445121765f * a102 * b19 + 0.2130032181739807f * a103 * b16 + -0.20126911997795105f * a103 * b18 + -0.2130032181739807f * a104 * b17; - out(ii, k, 189) = -0.3478327989578247f * a96 * b16 + -0.08695819973945618f * a97 * b17 + 0.09938079863786697f * a98 * b18 + 0.21118420362472534f * a99 * b19 + 0.24845199286937714f * a100 * b20 + 0.21118420362472534f * a101 * b21 + 0.09938079863786697f * a102 * b22 + -0.08695819973945618f * a103 * b23 + -0.3478327989578247f * a104 * b24; - out(ii, k, 190) = 0.2130032181739807f * a96 * b17 + 0.2130032181739807f * a97 * b16 + 0.20126911997795105f * a97 * b18 + 0.20126911997795105f * a98 * b17 + 0.1369306445121765f * a98 * b19 + 0.1369306445121765f * a99 * b18 + 0.06804138422012329f * a100 * b21 + 0.06804138422012329f * a101 * b20 + 0.1369306445121765f * a101 * b22 + 0.1369306445121765f * a102 * b21 + 0.20126911997795105f * a102 * b23 + 0.20126911997795105f * a103 * b22 + 0.2130032181739807f * a103 * b24 + 0.2130032181739807f * a104 * b23; - out(ii, k, 191) = -0.11385501176118851f * a96 * b18 + -0.17078250646591187f * a97 * b19 + -0.11385501176118851f * a98 * b16 + -0.17078250646591187f * a99 * b17 + -0.21516573429107666f * a99 * b19 + -0.28867512941360474f * a100 * b22 + 0.21516573429107666f * a101 * b21 + -0.17078250646591187f * a101 * b23 + -0.28867512941360474f * a102 * b20 + -0.11385501176118851f * a102 * b24 + -0.17078250646591187f * a103 * b21 + -0.11385501176118851f * a104 * b22; - out(ii, k, 192) = 0.64549720287323f * a11 * b3 + 0.64549720287323f * a13 * b1; - out(ii, k, 193) = 0.64549720287323f * a11 * b2 + 0.64549720287323f * a12 * b1; - out(ii, k, 194) = -0.3726779818534851f * a11 * b1 + 0.7453559637069702f * a12 * b2 + -0.3726779818534851f * a13 * b3; + } + + template + KOKKOS_INLINE_FUNCTION static void rev(const V &L, const V &R, const V &D, const V &dL, + const V &dR, const int ii, const int k) + { + static_assert(!ACC, "mixed products assign dL"); + { + const float b0 = R(ii, k, 0); + const float b1 = R(ii, k, 1); + const float b2 = R(ii, k, 2); + const float b3 = R(ii, k, 3); + const float b4 = R(ii, k, 4); + const float b5 = R(ii, k, 5); + const float b6 = R(ii, k, 6); + const float b7 = R(ii, k, 7); + const float b8 = R(ii, k, 8); + const float b9 = R(ii, k, 9); + const float b10 = R(ii, k, 10); + const float b11 = R(ii, k, 11); + const float b12 = R(ii, k, 12); + const float b13 = R(ii, k, 13); + const float b14 = R(ii, k, 14); + const float b15 = R(ii, k, 15); + const float b16 = R(ii, k, 16); + const float b17 = R(ii, k, 17); + const float b18 = R(ii, k, 18); + const float b19 = R(ii, k, 19); + const float b20 = R(ii, k, 20); + const float b21 = R(ii, k, 21); + const float b22 = R(ii, k, 22); + const float b23 = R(ii, k, 23); + const float b24 = R(ii, k, 24); + { + float g0 = 0.0f; + float g1 = 0.0f; + float g2 = 0.0f; + float g3 = 0.0f; + float g4 = 0.0f; + float g5 = 0.0f; + float g6 = 0.0f; + float g7 = 0.0f; + float g8 = 0.0f; + float g9 = 0.0f; + float g10 = 0.0f; + float g11 = 0.0f; + float g12 = 0.0f; + float g13 = 0.0f; + float g14 = 0.0f; + float g15 = 0.0f; + float g16 = 0.0f; + float g17 = 0.0f; + float g18 = 0.0f; + float g19 = 0.0f; + float g20 = 0.0f; + float g21 = 0.0f; + float g22 = 0.0f; + float g23 = 0.0f; + float g24 = 0.0f; + float g25 = 0.0f; + float g26 = 0.0f; + float g27 = 0.0f; + float g28 = 0.0f; + float g29 = 0.0f; + float g30 = 0.0f; + float g31 = 0.0f; + float g32 = 0.0f; + float g33 = 0.0f; + float g34 = 0.0f; + float g35 = 0.0f; + float g36 = 0.0f; + float g37 = 0.0f; + float g38 = 0.0f; + float g39 = 0.0f; + float g40 = 0.0f; + float g41 = 0.0f; + float g42 = 0.0f; + float g43 = 0.0f; + float g44 = 0.0f; + float g45 = 0.0f; + float g46 = 0.0f; + float g47 = 0.0f; + float g48 = 0.0f; + float g49 = 0.0f; + float g50 = 0.0f; + float g51 = 0.0f; + float g52 = 0.0f; + float g53 = 0.0f; + float g54 = 0.0f; + float g55 = 0.0f; + float g56 = 0.0f; + float g57 = 0.0f; + float g58 = 0.0f; + float g59 = 0.0f; + float g60 = 0.0f; + float g61 = 0.0f; + float g62 = 0.0f; + float g63 = 0.0f; + float g64 = 0.0f; + float g65 = 0.0f; + float g66 = 0.0f; + float g67 = 0.0f; + float g68 = 0.0f; + float g69 = 0.0f; + float g70 = 0.0f; + float g71 = 0.0f; + float g72 = 0.0f; + float g73 = 0.0f; + float g74 = 0.0f; + float g75 = 0.0f; + float g76 = 0.0f; + float g77 = 0.0f; + float g78 = 0.0f; + float g79 = 0.0f; + float g80 = 0.0f; + float g81 = 0.0f; + float g82 = 0.0f; + float g83 = 0.0f; + float g84 = 0.0f; + float g85 = 0.0f; + float g86 = 0.0f; + float g87 = 0.0f; + float g88 = 0.0f; + float g89 = 0.0f; + float g90 = 0.0f; + float g91 = 0.0f; + float g92 = 0.0f; + float g93 = 0.0f; + float g94 = 0.0f; + float g95 = 0.0f; + float g96 = 0.0f; + float g97 = 0.0f; + float g98 = 0.0f; + float g99 = 0.0f; + float g100 = 0.0f; + float g101 = 0.0f; + float g102 = 0.0f; + float g103 = 0.0f; + float g104 = 0.0f; + float g105 = 0.0f; + float g106 = 0.0f; + float g107 = 0.0f; + float g108 = 0.0f; + float g109 = 0.0f; + float g110 = 0.0f; + float g111 = 0.0f; + float g112 = 0.0f; + float g113 = 0.0f; + float g114 = 0.0f; + float g115 = 0.0f; + float g116 = 0.0f; + float g117 = 0.0f; + float g118 = 0.0f; + float g119 = 0.0f; + float g120 = 0.0f; + float g121 = 0.0f; + float g122 = 0.0f; + float g123 = 0.0f; + float g124 = 0.0f; + float g125 = 0.0f; + float g126 = 0.0f; + float g127 = 0.0f; + float g128 = 0.0f; + float g129 = 0.0f; + float g130 = 0.0f; + float g131 = 0.0f; + float g132 = 0.0f; + float g133 = 0.0f; + float g134 = 0.0f; + float g135 = 0.0f; + float g136 = 0.0f; + float g137 = 0.0f; + float g138 = 0.0f; + float g139 = 0.0f; + float g140 = 0.0f; + { const float d = D(ii, k, 0); + g0 += 1.0f * d * b0; + } + { const float d = D(ii, k, 1); + g1 += 1.0f * d * b0; + } + { const float d = D(ii, k, 2); + g8 += 0.3333333432674408f * d * b1; + g9 += 0.3333333432674408f * d * b2; + g10 += 0.3333333432674408f * d * b3; + } + { const float d = D(ii, k, 3); + g2 += 1.0f * d * b0; + } + { const float d = D(ii, k, 4); + g27 += 0.20000000298023224f * d * b4; + g28 += 0.20000000298023224f * d * b5; + g29 += 0.20000000298023224f * d * b6; + g30 += 0.20000000298023224f * d * b7; + g31 += 0.20000000298023224f * d * b8; + } + { const float d = D(ii, k, 5); + g11 += 0.3333333432674408f * d * b1; + g12 += 0.3333333432674408f * d * b2; + g13 += 0.3333333432674408f * d * b3; + } + { const float d = D(ii, k, 6); + g3 += 1.0f * d * b0; + } + { const float d = D(ii, k, 7); + g37 += 0.20000000298023224f * d * b4; + g38 += 0.20000000298023224f * d * b5; + g39 += 0.20000000298023224f * d * b6; + g40 += 0.20000000298023224f * d * b7; + g41 += 0.20000000298023224f * d * b8; + } + { const float d = D(ii, k, 8); + g42 += 0.20000000298023224f * d * b4; + g43 += 0.20000000298023224f * d * b5; + g44 += 0.20000000298023224f * d * b6; + g45 += 0.20000000298023224f * d * b7; + g46 += 0.20000000298023224f * d * b8; + } + { const float d = D(ii, k, 9); + g14 += 0.3333333432674408f * d * b1; + g15 += 0.3333333432674408f * d * b2; + g16 += 0.3333333432674408f * d * b3; + } + { const float d = D(ii, k, 10); + g80 += 0.1428571492433548f * d * b9; + g81 += 0.1428571492433548f * d * b10; + g82 += 0.1428571492433548f * d * b11; + g83 += 0.1428571492433548f * d * b12; + g84 += 0.1428571492433548f * d * b13; + g85 += 0.1428571492433548f * d * b14; + g86 += 0.1428571492433548f * d * b15; + } + { const float d = D(ii, k, 11); + g4 += 1.0f * d * b0; + } + { const float d = D(ii, k, 12); + g47 += 0.20000000298023224f * d * b4; + g48 += 0.20000000298023224f * d * b5; + g49 += 0.20000000298023224f * d * b6; + g50 += 0.20000000298023224f * d * b7; + g51 += 0.20000000298023224f * d * b8; + } + { const float d = D(ii, k, 13); + g132 += 0.1111111119389534f * d * b16; + g133 += 0.1111111119389534f * d * b17; + g134 += 0.1111111119389534f * d * b18; + g135 += 0.1111111119389534f * d * b19; + g136 += 0.1111111119389534f * d * b20; + g137 += 0.1111111119389534f * d * b21; + g138 += 0.1111111119389534f * d * b22; + g139 += 0.1111111119389534f * d * b23; + g140 += 0.1111111119389534f * d * b24; + } + dL(ii, k, 0) = g0; + dL(ii, k, 1) = g1; + dL(ii, k, 2) = g2; + dL(ii, k, 3) = g3; + dL(ii, k, 4) = g4; + dL(ii, k, 5) = g5; + dL(ii, k, 6) = g6; + dL(ii, k, 7) = g7; + dL(ii, k, 8) = g8; + dL(ii, k, 9) = g9; + dL(ii, k, 10) = g10; + dL(ii, k, 11) = g11; + dL(ii, k, 12) = g12; + dL(ii, k, 13) = g13; + dL(ii, k, 14) = g14; + dL(ii, k, 15) = g15; + dL(ii, k, 16) = g16; + dL(ii, k, 17) = g17; + dL(ii, k, 18) = g18; + dL(ii, k, 19) = g19; + dL(ii, k, 20) = g20; + dL(ii, k, 21) = g21; + dL(ii, k, 22) = g22; + dL(ii, k, 23) = g23; + dL(ii, k, 24) = g24; + dL(ii, k, 25) = g25; + dL(ii, k, 26) = g26; + dL(ii, k, 27) = g27; + dL(ii, k, 28) = g28; + dL(ii, k, 29) = g29; + dL(ii, k, 30) = g30; + dL(ii, k, 31) = g31; + dL(ii, k, 32) = g32; + dL(ii, k, 33) = g33; + dL(ii, k, 34) = g34; + dL(ii, k, 35) = g35; + dL(ii, k, 36) = g36; + dL(ii, k, 37) = g37; + dL(ii, k, 38) = g38; + dL(ii, k, 39) = g39; + dL(ii, k, 40) = g40; + dL(ii, k, 41) = g41; + dL(ii, k, 42) = g42; + dL(ii, k, 43) = g43; + dL(ii, k, 44) = g44; + dL(ii, k, 45) = g45; + dL(ii, k, 46) = g46; + dL(ii, k, 47) = g47; + dL(ii, k, 48) = g48; + dL(ii, k, 49) = g49; + dL(ii, k, 50) = g50; + dL(ii, k, 51) = g51; + dL(ii, k, 52) = g52; + dL(ii, k, 53) = g53; + dL(ii, k, 54) = g54; + dL(ii, k, 55) = g55; + dL(ii, k, 56) = g56; + dL(ii, k, 57) = g57; + dL(ii, k, 58) = g58; + dL(ii, k, 59) = g59; + dL(ii, k, 60) = g60; + dL(ii, k, 61) = g61; + dL(ii, k, 62) = g62; + dL(ii, k, 63) = g63; + dL(ii, k, 64) = g64; + dL(ii, k, 65) = g65; + dL(ii, k, 66) = g66; + dL(ii, k, 67) = g67; + dL(ii, k, 68) = g68; + dL(ii, k, 69) = g69; + dL(ii, k, 70) = g70; + dL(ii, k, 71) = g71; + dL(ii, k, 72) = g72; + dL(ii, k, 73) = g73; + dL(ii, k, 74) = g74; + dL(ii, k, 75) = g75; + dL(ii, k, 76) = g76; + dL(ii, k, 77) = g77; + dL(ii, k, 78) = g78; + dL(ii, k, 79) = g79; + dL(ii, k, 80) = g80; + dL(ii, k, 81) = g81; + dL(ii, k, 82) = g82; + dL(ii, k, 83) = g83; + dL(ii, k, 84) = g84; + dL(ii, k, 85) = g85; + dL(ii, k, 86) = g86; + dL(ii, k, 87) = g87; + dL(ii, k, 88) = g88; + dL(ii, k, 89) = g89; + dL(ii, k, 90) = g90; + dL(ii, k, 91) = g91; + dL(ii, k, 92) = g92; + dL(ii, k, 93) = g93; + dL(ii, k, 94) = g94; + dL(ii, k, 95) = g95; + dL(ii, k, 96) = g96; + dL(ii, k, 97) = g97; + dL(ii, k, 98) = g98; + dL(ii, k, 99) = g99; + dL(ii, k, 100) = g100; + dL(ii, k, 101) = g101; + dL(ii, k, 102) = g102; + dL(ii, k, 103) = g103; + dL(ii, k, 104) = g104; + dL(ii, k, 105) = g105; + dL(ii, k, 106) = g106; + dL(ii, k, 107) = g107; + dL(ii, k, 108) = g108; + dL(ii, k, 109) = g109; + dL(ii, k, 110) = g110; + dL(ii, k, 111) = g111; + dL(ii, k, 112) = g112; + dL(ii, k, 113) = g113; + dL(ii, k, 114) = g114; + dL(ii, k, 115) = g115; + dL(ii, k, 116) = g116; + dL(ii, k, 117) = g117; + dL(ii, k, 118) = g118; + dL(ii, k, 119) = g119; + dL(ii, k, 120) = g120; + dL(ii, k, 121) = g121; + dL(ii, k, 122) = g122; + dL(ii, k, 123) = g123; + dL(ii, k, 124) = g124; + dL(ii, k, 125) = g125; + dL(ii, k, 126) = g126; + dL(ii, k, 127) = g127; + dL(ii, k, 128) = g128; + dL(ii, k, 129) = g129; + dL(ii, k, 130) = g130; + dL(ii, k, 131) = g131; + dL(ii, k, 132) = g132; + dL(ii, k, 133) = g133; + dL(ii, k, 134) = g134; + dL(ii, k, 135) = g135; + dL(ii, k, 136) = g136; + dL(ii, k, 137) = g137; + dL(ii, k, 138) = g138; + dL(ii, k, 139) = g139; + dL(ii, k, 140) = g140; + } + } + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a4 = L(ii, k, 4); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a13 = L(ii, k, 13); + const float a14 = L(ii, k, 14); + const float a15 = L(ii, k, 15); + const float a16 = L(ii, k, 16); + const float a27 = L(ii, k, 27); + const float a28 = L(ii, k, 28); + const float a29 = L(ii, k, 29); + const float a30 = L(ii, k, 30); + const float a31 = L(ii, k, 31); + const float a37 = L(ii, k, 37); + const float a38 = L(ii, k, 38); + const float a39 = L(ii, k, 39); + const float a40 = L(ii, k, 40); + const float a41 = L(ii, k, 41); + const float a42 = L(ii, k, 42); + const float a43 = L(ii, k, 43); + const float a44 = L(ii, k, 44); + const float a45 = L(ii, k, 45); + const float a46 = L(ii, k, 46); + const float a47 = L(ii, k, 47); + const float a48 = L(ii, k, 48); + const float a49 = L(ii, k, 49); + const float a50 = L(ii, k, 50); + const float a51 = L(ii, k, 51); + const float a80 = L(ii, k, 80); + const float a81 = L(ii, k, 81); + const float a82 = L(ii, k, 82); + const float a83 = L(ii, k, 83); + const float a84 = L(ii, k, 84); + const float a85 = L(ii, k, 85); + const float a86 = L(ii, k, 86); + const float a132 = L(ii, k, 132); + const float a133 = L(ii, k, 133); + const float a134 = L(ii, k, 134); + const float a135 = L(ii, k, 135); + const float a136 = L(ii, k, 136); + const float a137 = L(ii, k, 137); + const float a138 = L(ii, k, 138); + const float a139 = L(ii, k, 139); + const float a140 = L(ii, k, 140); + float h0 = 0.0f; + float h1 = 0.0f; + float h2 = 0.0f; + float h3 = 0.0f; + float h4 = 0.0f; + float h5 = 0.0f; + float h6 = 0.0f; + float h7 = 0.0f; + float h8 = 0.0f; + float h9 = 0.0f; + float h10 = 0.0f; + float h11 = 0.0f; + float h12 = 0.0f; + float h13 = 0.0f; + float h14 = 0.0f; + float h15 = 0.0f; + float h16 = 0.0f; + float h17 = 0.0f; + float h18 = 0.0f; + float h19 = 0.0f; + float h20 = 0.0f; + float h21 = 0.0f; + float h22 = 0.0f; + float h23 = 0.0f; + float h24 = 0.0f; + { const float d = D(ii, k, 0); + h0 += 1.0f * d * a0; + } + { const float d = D(ii, k, 1); + h0 += 1.0f * d * a1; + } + { const float d = D(ii, k, 2); + h1 += 0.3333333432674408f * d * a8; + h2 += 0.3333333432674408f * d * a9; + h3 += 0.3333333432674408f * d * a10; + } + { const float d = D(ii, k, 3); + h0 += 1.0f * d * a2; + } + { const float d = D(ii, k, 4); + h4 += 0.20000000298023224f * d * a27; + h5 += 0.20000000298023224f * d * a28; + h6 += 0.20000000298023224f * d * a29; + h7 += 0.20000000298023224f * d * a30; + h8 += 0.20000000298023224f * d * a31; + } + { const float d = D(ii, k, 5); + h1 += 0.3333333432674408f * d * a11; + h2 += 0.3333333432674408f * d * a12; + h3 += 0.3333333432674408f * d * a13; + } + { const float d = D(ii, k, 6); + h0 += 1.0f * d * a3; + } + { const float d = D(ii, k, 7); + h4 += 0.20000000298023224f * d * a37; + h5 += 0.20000000298023224f * d * a38; + h6 += 0.20000000298023224f * d * a39; + h7 += 0.20000000298023224f * d * a40; + h8 += 0.20000000298023224f * d * a41; + } + { const float d = D(ii, k, 8); + h4 += 0.20000000298023224f * d * a42; + h5 += 0.20000000298023224f * d * a43; + h6 += 0.20000000298023224f * d * a44; + h7 += 0.20000000298023224f * d * a45; + h8 += 0.20000000298023224f * d * a46; + } + { const float d = D(ii, k, 9); + h1 += 0.3333333432674408f * d * a14; + h2 += 0.3333333432674408f * d * a15; + h3 += 0.3333333432674408f * d * a16; + } + { const float d = D(ii, k, 10); + h9 += 0.1428571492433548f * d * a80; + h10 += 0.1428571492433548f * d * a81; + h11 += 0.1428571492433548f * d * a82; + h12 += 0.1428571492433548f * d * a83; + h13 += 0.1428571492433548f * d * a84; + h14 += 0.1428571492433548f * d * a85; + h15 += 0.1428571492433548f * d * a86; + } + { const float d = D(ii, k, 11); + h0 += 1.0f * d * a4; + } + { const float d = D(ii, k, 12); + h4 += 0.20000000298023224f * d * a47; + h5 += 0.20000000298023224f * d * a48; + h6 += 0.20000000298023224f * d * a49; + h7 += 0.20000000298023224f * d * a50; + h8 += 0.20000000298023224f * d * a51; + } + { const float d = D(ii, k, 13); + h16 += 0.1111111119389534f * d * a132; + h17 += 0.1111111119389534f * d * a133; + h18 += 0.1111111119389534f * d * a134; + h19 += 0.1111111119389534f * d * a135; + h20 += 0.1111111119389534f * d * a136; + h21 += 0.1111111119389534f * d * a137; + h22 += 0.1111111119389534f * d * a138; + h23 += 0.1111111119389534f * d * a139; + h24 += 0.1111111119389534f * d * a140; + } + dR(ii, k, 0) += h0; + dR(ii, k, 1) += h1; + dR(ii, k, 2) += h2; + dR(ii, k, 3) += h3; + dR(ii, k, 4) += h4; + dR(ii, k, 5) += h5; + dR(ii, k, 6) += h6; + dR(ii, k, 7) += h7; + dR(ii, k, 8) += h8; + dR(ii, k, 9) += h9; + dR(ii, k, 10) += h10; + dR(ii, k, 11) += h11; + dR(ii, k, 12) += h12; + dR(ii, k, 13) += h13; + dR(ii, k, 14) += h14; + dR(ii, k, 15) += h15; + dR(ii, k, 16) += h16; + dR(ii, k, 17) += h17; + dR(ii, k, 18) += h18; + dR(ii, k, 19) += h19; + dR(ii, k, 20) += h20; + dR(ii, k, 21) += h21; + dR(ii, k, 22) += h22; + dR(ii, k, 23) += h23; + dR(ii, k, 24) += h24; + } + } + +}; + +// self product, 335 terms: GRACE-1L-OAM AAAA, GRACE-1L-OMAT AAAA, GRACE-1L-OMAT-large-base AAAA, +// GRACE-1L-OMAT-large-ft-AM AAAA, GRACE-1L-OMAT-large-ft-E AAAA, GRACE-1L-OMAT-medium-base AAAA, +// GRACE-1L-OMAT-medium-ft-AM AAAA, GRACE-1L-OMAT-medium-ft-E AAAA, GRACE-1L-SMAX-OMAT-large AAAA, +// GRACE-1L-SMAX-large AAAA, GRACE-2L-OAM AAAA, GRACE-2L-OAM BBBB, GRACE-2L-OMAT AAAA, GRACE-2L-OMAT BBBB, +// GRACE-OFF-1L-medium AAAA, GRACE-OFF-1L-large AAAA, GRACE-OFF-2L-large AAAA +struct T335_9257c91a { + static constexpr int nt = 335, nl = 141; + static constexpr int tab[335][3] = {{0,0,0}, {1,0,1}, {2,0,2}, {3,0,3}, {4,0,4}, {8,5,5}, {9,6,5}, {10,7,5}, {11,5,6}, {12,6,6}, {13,7,6}, {14,5,7}, {15,6,7}, {16,7,7}, {1,1,8}, {2,1,9}, {3,1,10}, {4,1,11}, {27,17,12}, {28,18,12}, {29,19,12}, {30,20,12}, {31,21,12}, {32,17,13}, {33,18,13}, {34,19,13}, {35,20,13}, {36,21,13}, {37,17,14}, {38,18,14}, {39,19,14}, {40,20,14}, {41,21,14}, {42,17,15}, {43,18,15}, {44,19,15}, {45,20,15}, {46,21,15}, {47,17,16}, {48,18,16}, {49,19,16}, {50,20,16}, {51,21,16}, {27,22,17}, {28,23,17}, {29,24,17}, {30,25,17}, {31,26,17}, {37,22,18}, {38,23,18}, {39,24,18}, {40,25,18}, {41,26,18}, {42,22,19}, {43,23,19}, {44,24,19}, {45,25,19}, {46,26,19}, {47,22,20}, {48,23,20}, {49,24,20}, {50,25,20}, {51,26,20}, {8,8,21}, {9,9,21}, {10,10,21}, {11,8,22}, {12,9,22}, {13,10,22}, {14,8,23}, {15,9,23}, {16,10,23}, {52,52,24}, {53,53,24}, {54,54,24}, {55,55,24}, {56,56,24}, {57,57,24}, {58,58,24}, {66,52,25}, {67,53,25}, {68,54,25}, {69,55,25}, {70,56,25}, {71,57,25}, {72,58,25}, {80,52,26}, {81,53,26}, {82,54,26}, {83,55,26}, {84,56,26}, {85,57,26}, {86,58,26}, {2,2,27}, {3,2,28}, {4,2,29}, {32,27,30}, {33,28,30}, {34,29,30}, {35,30,30}, {36,31,30}, {37,27,31}, {38,28,31}, {39,29,31}, {40,30,31}, {41,31,31}, {42,27,32}, {43,28,32}, {44,29,32}, {45,30,32}, {46,31,32}, {47,27,33}, {48,28,33}, {49,29,33}, {50,30,33}, {51,31,33}, {96,87,34}, {97,88,34}, {98,89,34}, {99,90,34}, {100,91,34}, {101,92,34}, {102,93,34}, {103,94,34}, {104,95,34}, {105,87,35}, {106,88,35}, {107,89,35}, {108,90,35}, {109,91,35}, {110,92,35}, {111,93,35}, {112,94,35}, {113,95,35}, {132,87,36}, {133,88,36}, {134,89,36}, {135,90,36}, {136,91,36}, {137,92,36}, {138,93,36}, {139,94,36}, {140,95,36}, {80,59,37}, {81,60,37}, {82,61,37}, {83,62,37}, {84,63,37}, {85,64,37}, {86,65,37}, {32,32,38}, {33,33,38}, {34,34,38}, {35,35,38}, {36,36,38}, {37,32,39}, {38,33,39}, {39,34,39}, {40,35,39}, {41,36,39}, {42,32,40}, {43,33,40}, {44,34,40}, {45,35,40}, {46,36,40}, {47,32,41}, {48,33,41}, {49,34,41}, {50,35,41}, {51,36,41}, {96,96,42}, {97,97,42}, {98,98,42}, {99,99,42}, {100,100,42}, {101,101,42}, {102,102,42}, {103,103,42}, {104,104,42}, {123,96,43}, {124,97,43}, {125,98,43}, {126,99,43}, {127,100,43}, {128,101,43}, {129,102,43}, {130,103,43}, {131,104,43}, {132,96,44}, {133,97,44}, {134,98,44}, {135,99,44}, {136,100,44}, {137,101,44}, {138,102,44}, {139,103,44}, {140,104,44}, {11,11,45}, {12,12,45}, {13,13,45}, {14,11,46}, {15,12,46}, {16,13,46}, {66,66,47}, {67,67,47}, {68,68,47}, {69,69,47}, {70,70,47}, {71,71,47}, {72,72,47}, {73,66,48}, {74,67,48}, {75,68,48}, {76,69,48}, {77,70,48}, {78,71,48}, {79,72,48}, {80,66,49}, {81,67,49}, {82,68,49}, {83,69,49}, {84,70,49}, {85,71,49}, {86,72,49}, {3,3,50}, {4,3,51}, {37,37,52}, {38,38,52}, {39,39,52}, {40,40,52}, {41,41,52}, {42,37,53}, {43,38,53}, {44,39,53}, {45,40,53}, {46,41,53}, {47,37,54}, {48,38,54}, {49,39,54}, {50,40,54}, {51,41,54}, {105,105,55}, {106,106,55}, {107,107,55}, {108,108,55}, {109,109,55}, {110,110,55}, {111,111,55}, {112,112,55}, {113,113,55}, {123,105,56}, {124,106,56}, {125,107,56}, {126,108,56}, {127,109,56}, {128,110,56}, {129,111,56}, {130,112,56}, {131,113,56}, {132,105,57}, {133,106,57}, {134,107,57}, {135,108,57}, {136,109,57}, {137,110,57}, {138,111,57}, {139,112,57}, {140,113,57}, {132,114,58}, {133,115,58}, {134,116,58}, {135,117,58}, {136,118,58}, {137,119,58}, {138,120,58}, {139,121,58}, {140,122,58}, {73,73,59}, {74,74,59}, {75,75,59}, {76,76,59}, {77,77,59}, {78,78,59}, {79,79,59}, {80,73,60}, {81,74,60}, {82,75,60}, {83,76,60}, {84,77,60}, {85,78,60}, {86,79,60}, {42,42,61}, {43,43,61}, {44,44,61}, {45,45,61}, {46,46,61}, {47,42,62}, {48,43,62}, {49,44,62}, {50,45,62}, {51,46,62}, {123,123,63}, {124,124,63}, {125,125,63}, {126,126,63}, {127,127,63}, {128,128,63}, {129,129,63}, {130,130,63}, {131,131,63}, {14,14,64}, {15,15,64}, {16,16,64}, {80,80,65}, {81,81,65}, {82,82,65}, {83,83,65}, {84,84,65}, {85,85,65}, {86,86,65}, {4,4,66}, {47,47,67}, {48,48,67}, {49,49,67}, {50,50,67}, {51,51,67}, {132,132,68}, {133,133,68}, {134,134,68}, {135,135,68}, {136,136,68}, {137,137,68}, {138,138,68}, {139,139,68}, {140,140,68}}; + static constexpr double cg[335] = {1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a4 = L(ii, k, 4); + const float a5 = L(ii, k, 5); + const float a6 = L(ii, k, 6); + const float a7 = L(ii, k, 7); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a13 = L(ii, k, 13); + const float a14 = L(ii, k, 14); + const float a15 = L(ii, k, 15); + const float a16 = L(ii, k, 16); + const float a17 = L(ii, k, 17); + const float a18 = L(ii, k, 18); + const float a19 = L(ii, k, 19); + const float a20 = L(ii, k, 20); + const float a21 = L(ii, k, 21); + const float a22 = L(ii, k, 22); + const float a23 = L(ii, k, 23); + const float a24 = L(ii, k, 24); + const float a25 = L(ii, k, 25); + const float a26 = L(ii, k, 26); + const float a27 = L(ii, k, 27); + const float a28 = L(ii, k, 28); + const float a29 = L(ii, k, 29); + const float a30 = L(ii, k, 30); + const float a31 = L(ii, k, 31); + const float a32 = L(ii, k, 32); + const float a33 = L(ii, k, 33); + const float a34 = L(ii, k, 34); + const float a35 = L(ii, k, 35); + const float a36 = L(ii, k, 36); + const float a37 = L(ii, k, 37); + const float a38 = L(ii, k, 38); + const float a39 = L(ii, k, 39); + const float a40 = L(ii, k, 40); + const float a41 = L(ii, k, 41); + const float a42 = L(ii, k, 42); + const float a43 = L(ii, k, 43); + const float a44 = L(ii, k, 44); + const float a45 = L(ii, k, 45); + const float a46 = L(ii, k, 46); + const float a47 = L(ii, k, 47); + const float a48 = L(ii, k, 48); + const float a49 = L(ii, k, 49); + const float a50 = L(ii, k, 50); + const float a51 = L(ii, k, 51); + const float a52 = L(ii, k, 52); + const float a53 = L(ii, k, 53); + const float a54 = L(ii, k, 54); + const float a55 = L(ii, k, 55); + const float a56 = L(ii, k, 56); + const float a57 = L(ii, k, 57); + const float a58 = L(ii, k, 58); + const float a59 = L(ii, k, 59); + const float a60 = L(ii, k, 60); + const float a61 = L(ii, k, 61); + const float a62 = L(ii, k, 62); + const float a63 = L(ii, k, 63); + const float a64 = L(ii, k, 64); + const float a65 = L(ii, k, 65); + const float a66 = L(ii, k, 66); + const float a67 = L(ii, k, 67); + const float a68 = L(ii, k, 68); + const float a69 = L(ii, k, 69); + const float a70 = L(ii, k, 70); + const float a71 = L(ii, k, 71); + const float a72 = L(ii, k, 72); + const float a73 = L(ii, k, 73); + const float a74 = L(ii, k, 74); + const float a75 = L(ii, k, 75); + const float a76 = L(ii, k, 76); + const float a77 = L(ii, k, 77); + const float a78 = L(ii, k, 78); + const float a79 = L(ii, k, 79); + const float a80 = L(ii, k, 80); + const float a81 = L(ii, k, 81); + const float a82 = L(ii, k, 82); + const float a83 = L(ii, k, 83); + const float a84 = L(ii, k, 84); + const float a85 = L(ii, k, 85); + const float a86 = L(ii, k, 86); + const float a87 = L(ii, k, 87); + const float a88 = L(ii, k, 88); + const float a89 = L(ii, k, 89); + const float a90 = L(ii, k, 90); + const float a91 = L(ii, k, 91); + const float a92 = L(ii, k, 92); + const float a93 = L(ii, k, 93); + const float a94 = L(ii, k, 94); + const float a95 = L(ii, k, 95); + const float a96 = L(ii, k, 96); + const float a97 = L(ii, k, 97); + const float a98 = L(ii, k, 98); + const float a99 = L(ii, k, 99); + const float a100 = L(ii, k, 100); + const float a101 = L(ii, k, 101); + const float a102 = L(ii, k, 102); + const float a103 = L(ii, k, 103); + const float a104 = L(ii, k, 104); + const float a105 = L(ii, k, 105); + const float a106 = L(ii, k, 106); + const float a107 = L(ii, k, 107); + const float a108 = L(ii, k, 108); + const float a109 = L(ii, k, 109); + const float a110 = L(ii, k, 110); + const float a111 = L(ii, k, 111); + const float a112 = L(ii, k, 112); + const float a113 = L(ii, k, 113); + const float a114 = L(ii, k, 114); + const float a115 = L(ii, k, 115); + const float a116 = L(ii, k, 116); + const float a117 = L(ii, k, 117); + const float a118 = L(ii, k, 118); + const float a119 = L(ii, k, 119); + const float a120 = L(ii, k, 120); + const float a121 = L(ii, k, 121); + const float a122 = L(ii, k, 122); + const float a123 = L(ii, k, 123); + const float a124 = L(ii, k, 124); + const float a125 = L(ii, k, 125); + const float a126 = L(ii, k, 126); + const float a127 = L(ii, k, 127); + const float a128 = L(ii, k, 128); + const float a129 = L(ii, k, 129); + const float a130 = L(ii, k, 130); + const float a131 = L(ii, k, 131); + const float a132 = L(ii, k, 132); + const float a133 = L(ii, k, 133); + const float a134 = L(ii, k, 134); + const float a135 = L(ii, k, 135); + const float a136 = L(ii, k, 136); + const float a137 = L(ii, k, 137); + const float a138 = L(ii, k, 138); + const float a139 = L(ii, k, 139); + const float a140 = L(ii, k, 140); + out(ii, k, 0) = 1.0f * a0 * a0; + out(ii, k, 1) = 1.0f * a1 * a0; + out(ii, k, 2) = 1.0f * a2 * a0; + out(ii, k, 3) = 1.0f * a3 * a0; + out(ii, k, 4) = 1.0f * a4 * a0; + out(ii, k, 5) = 0.3333333432674408f * a8 * a5 + 0.3333333432674408f * a9 * a6 + 0.3333333432674408f * a10 * a7; + out(ii, k, 6) = 0.3333333432674408f * a11 * a5 + 0.3333333432674408f * a12 * a6 + 0.3333333432674408f * a13 * a7; + out(ii, k, 7) = 0.3333333432674408f * a14 * a5 + 0.3333333432674408f * a15 * a6 + 0.3333333432674408f * a16 * a7; + out(ii, k, 8) = 1.0f * a1 * a1; + out(ii, k, 9) = 1.0f * a2 * a1; + out(ii, k, 10) = 1.0f * a3 * a1; + out(ii, k, 11) = 1.0f * a4 * a1; + out(ii, k, 12) = 0.20000000298023224f * a27 * a17 + 0.20000000298023224f * a28 * a18 + 0.20000000298023224f * a29 * a19 + 0.20000000298023224f * a30 * a20 + 0.20000000298023224f * a31 * a21; + out(ii, k, 13) = 0.20000000298023224f * a32 * a17 + 0.20000000298023224f * a33 * a18 + 0.20000000298023224f * a34 * a19 + 0.20000000298023224f * a35 * a20 + 0.20000000298023224f * a36 * a21; + out(ii, k, 14) = 0.20000000298023224f * a37 * a17 + 0.20000000298023224f * a38 * a18 + 0.20000000298023224f * a39 * a19 + 0.20000000298023224f * a40 * a20 + 0.20000000298023224f * a41 * a21; + out(ii, k, 15) = 0.20000000298023224f * a42 * a17 + 0.20000000298023224f * a43 * a18 + 0.20000000298023224f * a44 * a19 + 0.20000000298023224f * a45 * a20 + 0.20000000298023224f * a46 * a21; + out(ii, k, 16) = 0.20000000298023224f * a47 * a17 + 0.20000000298023224f * a48 * a18 + 0.20000000298023224f * a49 * a19 + 0.20000000298023224f * a50 * a20 + 0.20000000298023224f * a51 * a21; + out(ii, k, 17) = 0.20000000298023224f * a27 * a22 + 0.20000000298023224f * a28 * a23 + 0.20000000298023224f * a29 * a24 + 0.20000000298023224f * a30 * a25 + 0.20000000298023224f * a31 * a26; + out(ii, k, 18) = 0.20000000298023224f * a37 * a22 + 0.20000000298023224f * a38 * a23 + 0.20000000298023224f * a39 * a24 + 0.20000000298023224f * a40 * a25 + 0.20000000298023224f * a41 * a26; + out(ii, k, 19) = 0.20000000298023224f * a42 * a22 + 0.20000000298023224f * a43 * a23 + 0.20000000298023224f * a44 * a24 + 0.20000000298023224f * a45 * a25 + 0.20000000298023224f * a46 * a26; + out(ii, k, 20) = 0.20000000298023224f * a47 * a22 + 0.20000000298023224f * a48 * a23 + 0.20000000298023224f * a49 * a24 + 0.20000000298023224f * a50 * a25 + 0.20000000298023224f * a51 * a26; + out(ii, k, 21) = 0.3333333432674408f * a8 * a8 + 0.3333333432674408f * a9 * a9 + 0.3333333432674408f * a10 * a10; + out(ii, k, 22) = 0.3333333432674408f * a11 * a8 + 0.3333333432674408f * a12 * a9 + 0.3333333432674408f * a13 * a10; + out(ii, k, 23) = 0.3333333432674408f * a14 * a8 + 0.3333333432674408f * a15 * a9 + 0.3333333432674408f * a16 * a10; + out(ii, k, 24) = 0.1428571492433548f * a52 * a52 + 0.1428571492433548f * a53 * a53 + 0.1428571492433548f * a54 * a54 + 0.1428571492433548f * a55 * a55 + 0.1428571492433548f * a56 * a56 + 0.1428571492433548f * a57 * a57 + 0.1428571492433548f * a58 * a58; + out(ii, k, 25) = 0.1428571492433548f * a66 * a52 + 0.1428571492433548f * a67 * a53 + 0.1428571492433548f * a68 * a54 + 0.1428571492433548f * a69 * a55 + 0.1428571492433548f * a70 * a56 + 0.1428571492433548f * a71 * a57 + 0.1428571492433548f * a72 * a58; + out(ii, k, 26) = 0.1428571492433548f * a80 * a52 + 0.1428571492433548f * a81 * a53 + 0.1428571492433548f * a82 * a54 + 0.1428571492433548f * a83 * a55 + 0.1428571492433548f * a84 * a56 + 0.1428571492433548f * a85 * a57 + 0.1428571492433548f * a86 * a58; + out(ii, k, 27) = 1.0f * a2 * a2; + out(ii, k, 28) = 1.0f * a3 * a2; + out(ii, k, 29) = 1.0f * a4 * a2; + out(ii, k, 30) = 0.20000000298023224f * a32 * a27 + 0.20000000298023224f * a33 * a28 + 0.20000000298023224f * a34 * a29 + 0.20000000298023224f * a35 * a30 + 0.20000000298023224f * a36 * a31; + out(ii, k, 31) = 0.20000000298023224f * a37 * a27 + 0.20000000298023224f * a38 * a28 + 0.20000000298023224f * a39 * a29 + 0.20000000298023224f * a40 * a30 + 0.20000000298023224f * a41 * a31; + out(ii, k, 32) = 0.20000000298023224f * a42 * a27 + 0.20000000298023224f * a43 * a28 + 0.20000000298023224f * a44 * a29 + 0.20000000298023224f * a45 * a30 + 0.20000000298023224f * a46 * a31; + out(ii, k, 33) = 0.20000000298023224f * a47 * a27 + 0.20000000298023224f * a48 * a28 + 0.20000000298023224f * a49 * a29 + 0.20000000298023224f * a50 * a30 + 0.20000000298023224f * a51 * a31; + out(ii, k, 34) = 0.1111111119389534f * a96 * a87 + 0.1111111119389534f * a97 * a88 + 0.1111111119389534f * a98 * a89 + 0.1111111119389534f * a99 * a90 + 0.1111111119389534f * a100 * a91 + 0.1111111119389534f * a101 * a92 + 0.1111111119389534f * a102 * a93 + 0.1111111119389534f * a103 * a94 + 0.1111111119389534f * a104 * a95; + out(ii, k, 35) = 0.1111111119389534f * a105 * a87 + 0.1111111119389534f * a106 * a88 + 0.1111111119389534f * a107 * a89 + 0.1111111119389534f * a108 * a90 + 0.1111111119389534f * a109 * a91 + 0.1111111119389534f * a110 * a92 + 0.1111111119389534f * a111 * a93 + 0.1111111119389534f * a112 * a94 + 0.1111111119389534f * a113 * a95; + out(ii, k, 36) = 0.1111111119389534f * a132 * a87 + 0.1111111119389534f * a133 * a88 + 0.1111111119389534f * a134 * a89 + 0.1111111119389534f * a135 * a90 + 0.1111111119389534f * a136 * a91 + 0.1111111119389534f * a137 * a92 + 0.1111111119389534f * a138 * a93 + 0.1111111119389534f * a139 * a94 + 0.1111111119389534f * a140 * a95; + out(ii, k, 37) = 0.1428571492433548f * a80 * a59 + 0.1428571492433548f * a81 * a60 + 0.1428571492433548f * a82 * a61 + 0.1428571492433548f * a83 * a62 + 0.1428571492433548f * a84 * a63 + 0.1428571492433548f * a85 * a64 + 0.1428571492433548f * a86 * a65; + out(ii, k, 38) = 0.20000000298023224f * a32 * a32 + 0.20000000298023224f * a33 * a33 + 0.20000000298023224f * a34 * a34 + 0.20000000298023224f * a35 * a35 + 0.20000000298023224f * a36 * a36; + out(ii, k, 39) = 0.20000000298023224f * a37 * a32 + 0.20000000298023224f * a38 * a33 + 0.20000000298023224f * a39 * a34 + 0.20000000298023224f * a40 * a35 + 0.20000000298023224f * a41 * a36; + out(ii, k, 40) = 0.20000000298023224f * a42 * a32 + 0.20000000298023224f * a43 * a33 + 0.20000000298023224f * a44 * a34 + 0.20000000298023224f * a45 * a35 + 0.20000000298023224f * a46 * a36; + out(ii, k, 41) = 0.20000000298023224f * a47 * a32 + 0.20000000298023224f * a48 * a33 + 0.20000000298023224f * a49 * a34 + 0.20000000298023224f * a50 * a35 + 0.20000000298023224f * a51 * a36; + out(ii, k, 42) = 0.1111111119389534f * a96 * a96 + 0.1111111119389534f * a97 * a97 + 0.1111111119389534f * a98 * a98 + 0.1111111119389534f * a99 * a99 + 0.1111111119389534f * a100 * a100 + 0.1111111119389534f * a101 * a101 + 0.1111111119389534f * a102 * a102 + 0.1111111119389534f * a103 * a103 + 0.1111111119389534f * a104 * a104; + out(ii, k, 43) = 0.1111111119389534f * a123 * a96 + 0.1111111119389534f * a124 * a97 + 0.1111111119389534f * a125 * a98 + 0.1111111119389534f * a126 * a99 + 0.1111111119389534f * a127 * a100 + 0.1111111119389534f * a128 * a101 + 0.1111111119389534f * a129 * a102 + 0.1111111119389534f * a130 * a103 + 0.1111111119389534f * a131 * a104; + out(ii, k, 44) = 0.1111111119389534f * a132 * a96 + 0.1111111119389534f * a133 * a97 + 0.1111111119389534f * a134 * a98 + 0.1111111119389534f * a135 * a99 + 0.1111111119389534f * a136 * a100 + 0.1111111119389534f * a137 * a101 + 0.1111111119389534f * a138 * a102 + 0.1111111119389534f * a139 * a103 + 0.1111111119389534f * a140 * a104; + out(ii, k, 45) = 0.3333333432674408f * a11 * a11 + 0.3333333432674408f * a12 * a12 + 0.3333333432674408f * a13 * a13; + out(ii, k, 46) = 0.3333333432674408f * a14 * a11 + 0.3333333432674408f * a15 * a12 + 0.3333333432674408f * a16 * a13; + out(ii, k, 47) = 0.1428571492433548f * a66 * a66 + 0.1428571492433548f * a67 * a67 + 0.1428571492433548f * a68 * a68 + 0.1428571492433548f * a69 * a69 + 0.1428571492433548f * a70 * a70 + 0.1428571492433548f * a71 * a71 + 0.1428571492433548f * a72 * a72; + out(ii, k, 48) = 0.1428571492433548f * a73 * a66 + 0.1428571492433548f * a74 * a67 + 0.1428571492433548f * a75 * a68 + 0.1428571492433548f * a76 * a69 + 0.1428571492433548f * a77 * a70 + 0.1428571492433548f * a78 * a71 + 0.1428571492433548f * a79 * a72; + out(ii, k, 49) = 0.1428571492433548f * a80 * a66 + 0.1428571492433548f * a81 * a67 + 0.1428571492433548f * a82 * a68 + 0.1428571492433548f * a83 * a69 + 0.1428571492433548f * a84 * a70 + 0.1428571492433548f * a85 * a71 + 0.1428571492433548f * a86 * a72; + out(ii, k, 50) = 1.0f * a3 * a3; + out(ii, k, 51) = 1.0f * a4 * a3; + out(ii, k, 52) = 0.20000000298023224f * a37 * a37 + 0.20000000298023224f * a38 * a38 + 0.20000000298023224f * a39 * a39 + 0.20000000298023224f * a40 * a40 + 0.20000000298023224f * a41 * a41; + out(ii, k, 53) = 0.20000000298023224f * a42 * a37 + 0.20000000298023224f * a43 * a38 + 0.20000000298023224f * a44 * a39 + 0.20000000298023224f * a45 * a40 + 0.20000000298023224f * a46 * a41; + out(ii, k, 54) = 0.20000000298023224f * a47 * a37 + 0.20000000298023224f * a48 * a38 + 0.20000000298023224f * a49 * a39 + 0.20000000298023224f * a50 * a40 + 0.20000000298023224f * a51 * a41; + out(ii, k, 55) = 0.1111111119389534f * a105 * a105 + 0.1111111119389534f * a106 * a106 + 0.1111111119389534f * a107 * a107 + 0.1111111119389534f * a108 * a108 + 0.1111111119389534f * a109 * a109 + 0.1111111119389534f * a110 * a110 + 0.1111111119389534f * a111 * a111 + 0.1111111119389534f * a112 * a112 + 0.1111111119389534f * a113 * a113; + out(ii, k, 56) = 0.1111111119389534f * a123 * a105 + 0.1111111119389534f * a124 * a106 + 0.1111111119389534f * a125 * a107 + 0.1111111119389534f * a126 * a108 + 0.1111111119389534f * a127 * a109 + 0.1111111119389534f * a128 * a110 + 0.1111111119389534f * a129 * a111 + 0.1111111119389534f * a130 * a112 + 0.1111111119389534f * a131 * a113; + out(ii, k, 57) = 0.1111111119389534f * a132 * a105 + 0.1111111119389534f * a133 * a106 + 0.1111111119389534f * a134 * a107 + 0.1111111119389534f * a135 * a108 + 0.1111111119389534f * a136 * a109 + 0.1111111119389534f * a137 * a110 + 0.1111111119389534f * a138 * a111 + 0.1111111119389534f * a139 * a112 + 0.1111111119389534f * a140 * a113; + out(ii, k, 58) = 0.1111111119389534f * a132 * a114 + 0.1111111119389534f * a133 * a115 + 0.1111111119389534f * a134 * a116 + 0.1111111119389534f * a135 * a117 + 0.1111111119389534f * a136 * a118 + 0.1111111119389534f * a137 * a119 + 0.1111111119389534f * a138 * a120 + 0.1111111119389534f * a139 * a121 + 0.1111111119389534f * a140 * a122; + out(ii, k, 59) = 0.1428571492433548f * a73 * a73 + 0.1428571492433548f * a74 * a74 + 0.1428571492433548f * a75 * a75 + 0.1428571492433548f * a76 * a76 + 0.1428571492433548f * a77 * a77 + 0.1428571492433548f * a78 * a78 + 0.1428571492433548f * a79 * a79; + out(ii, k, 60) = 0.1428571492433548f * a80 * a73 + 0.1428571492433548f * a81 * a74 + 0.1428571492433548f * a82 * a75 + 0.1428571492433548f * a83 * a76 + 0.1428571492433548f * a84 * a77 + 0.1428571492433548f * a85 * a78 + 0.1428571492433548f * a86 * a79; + out(ii, k, 61) = 0.20000000298023224f * a42 * a42 + 0.20000000298023224f * a43 * a43 + 0.20000000298023224f * a44 * a44 + 0.20000000298023224f * a45 * a45 + 0.20000000298023224f * a46 * a46; + out(ii, k, 62) = 0.20000000298023224f * a47 * a42 + 0.20000000298023224f * a48 * a43 + 0.20000000298023224f * a49 * a44 + 0.20000000298023224f * a50 * a45 + 0.20000000298023224f * a51 * a46; + out(ii, k, 63) = 0.1111111119389534f * a123 * a123 + 0.1111111119389534f * a124 * a124 + 0.1111111119389534f * a125 * a125 + 0.1111111119389534f * a126 * a126 + 0.1111111119389534f * a127 * a127 + 0.1111111119389534f * a128 * a128 + 0.1111111119389534f * a129 * a129 + 0.1111111119389534f * a130 * a130 + 0.1111111119389534f * a131 * a131; + out(ii, k, 64) = 0.3333333432674408f * a14 * a14 + 0.3333333432674408f * a15 * a15 + 0.3333333432674408f * a16 * a16; + out(ii, k, 65) = 0.1428571492433548f * a80 * a80 + 0.1428571492433548f * a81 * a81 + 0.1428571492433548f * a82 * a82 + 0.1428571492433548f * a83 * a83 + 0.1428571492433548f * a84 * a84 + 0.1428571492433548f * a85 * a85 + 0.1428571492433548f * a86 * a86; + out(ii, k, 66) = 1.0f * a4 * a4; + out(ii, k, 67) = 0.20000000298023224f * a47 * a47 + 0.20000000298023224f * a48 * a48 + 0.20000000298023224f * a49 * a49 + 0.20000000298023224f * a50 * a50 + 0.20000000298023224f * a51 * a51; + out(ii, k, 68) = 0.1111111119389534f * a132 * a132 + 0.1111111119389534f * a133 * a133 + 0.1111111119389534f * a134 * a134 + 0.1111111119389534f * a135 * a135 + 0.1111111119389534f * a136 * a136 + 0.1111111119389534f * a137 * a137 + 0.1111111119389534f * a138 * a138 + 0.1111111119389534f * a139 * a139 + 0.1111111119389534f * a140 * a140; + } + + template + KOKKOS_INLINE_FUNCTION static void rev(const V &F, const V &, const V &D, const V &dF, const V &, + const int ii, const int k) + { + const float f0 = F(ii, k, 0); + const float f1 = F(ii, k, 1); + const float f2 = F(ii, k, 2); + const float f3 = F(ii, k, 3); + const float f4 = F(ii, k, 4); + const float f5 = F(ii, k, 5); + const float f6 = F(ii, k, 6); + const float f7 = F(ii, k, 7); + const float f8 = F(ii, k, 8); + const float f9 = F(ii, k, 9); + const float f10 = F(ii, k, 10); + const float f11 = F(ii, k, 11); + const float f12 = F(ii, k, 12); + const float f13 = F(ii, k, 13); + const float f14 = F(ii, k, 14); + const float f15 = F(ii, k, 15); + const float f16 = F(ii, k, 16); + const float f17 = F(ii, k, 17); + const float f18 = F(ii, k, 18); + const float f19 = F(ii, k, 19); + const float f20 = F(ii, k, 20); + const float f21 = F(ii, k, 21); + const float f22 = F(ii, k, 22); + const float f23 = F(ii, k, 23); + const float f24 = F(ii, k, 24); + const float f25 = F(ii, k, 25); + const float f26 = F(ii, k, 26); + const float f27 = F(ii, k, 27); + const float f28 = F(ii, k, 28); + const float f29 = F(ii, k, 29); + const float f30 = F(ii, k, 30); + const float f31 = F(ii, k, 31); + const float f32 = F(ii, k, 32); + const float f33 = F(ii, k, 33); + const float f34 = F(ii, k, 34); + const float f35 = F(ii, k, 35); + const float f36 = F(ii, k, 36); + const float f37 = F(ii, k, 37); + const float f38 = F(ii, k, 38); + const float f39 = F(ii, k, 39); + const float f40 = F(ii, k, 40); + const float f41 = F(ii, k, 41); + const float f42 = F(ii, k, 42); + const float f43 = F(ii, k, 43); + const float f44 = F(ii, k, 44); + const float f45 = F(ii, k, 45); + const float f46 = F(ii, k, 46); + const float f47 = F(ii, k, 47); + const float f48 = F(ii, k, 48); + const float f49 = F(ii, k, 49); + const float f50 = F(ii, k, 50); + const float f51 = F(ii, k, 51); + const float f52 = F(ii, k, 52); + const float f53 = F(ii, k, 53); + const float f54 = F(ii, k, 54); + const float f55 = F(ii, k, 55); + const float f56 = F(ii, k, 56); + const float f57 = F(ii, k, 57); + const float f58 = F(ii, k, 58); + const float f59 = F(ii, k, 59); + const float f60 = F(ii, k, 60); + const float f61 = F(ii, k, 61); + const float f62 = F(ii, k, 62); + const float f63 = F(ii, k, 63); + const float f64 = F(ii, k, 64); + const float f65 = F(ii, k, 65); + const float f66 = F(ii, k, 66); + const float f67 = F(ii, k, 67); + const float f68 = F(ii, k, 68); + const float f69 = F(ii, k, 69); + const float f70 = F(ii, k, 70); + const float f71 = F(ii, k, 71); + const float f72 = F(ii, k, 72); + const float f73 = F(ii, k, 73); + const float f74 = F(ii, k, 74); + const float f75 = F(ii, k, 75); + const float f76 = F(ii, k, 76); + const float f77 = F(ii, k, 77); + const float f78 = F(ii, k, 78); + const float f79 = F(ii, k, 79); + const float f80 = F(ii, k, 80); + const float f81 = F(ii, k, 81); + const float f82 = F(ii, k, 82); + const float f83 = F(ii, k, 83); + const float f84 = F(ii, k, 84); + const float f85 = F(ii, k, 85); + const float f86 = F(ii, k, 86); + const float f87 = F(ii, k, 87); + const float f88 = F(ii, k, 88); + const float f89 = F(ii, k, 89); + const float f90 = F(ii, k, 90); + const float f91 = F(ii, k, 91); + const float f92 = F(ii, k, 92); + const float f93 = F(ii, k, 93); + const float f94 = F(ii, k, 94); + const float f95 = F(ii, k, 95); + const float f96 = F(ii, k, 96); + const float f97 = F(ii, k, 97); + const float f98 = F(ii, k, 98); + const float f99 = F(ii, k, 99); + const float f100 = F(ii, k, 100); + const float f101 = F(ii, k, 101); + const float f102 = F(ii, k, 102); + const float f103 = F(ii, k, 103); + const float f104 = F(ii, k, 104); + const float f105 = F(ii, k, 105); + const float f106 = F(ii, k, 106); + const float f107 = F(ii, k, 107); + const float f108 = F(ii, k, 108); + const float f109 = F(ii, k, 109); + const float f110 = F(ii, k, 110); + const float f111 = F(ii, k, 111); + const float f112 = F(ii, k, 112); + const float f113 = F(ii, k, 113); + const float f114 = F(ii, k, 114); + const float f115 = F(ii, k, 115); + const float f116 = F(ii, k, 116); + const float f117 = F(ii, k, 117); + const float f118 = F(ii, k, 118); + const float f119 = F(ii, k, 119); + const float f120 = F(ii, k, 120); + const float f121 = F(ii, k, 121); + const float f122 = F(ii, k, 122); + const float f123 = F(ii, k, 123); + const float f124 = F(ii, k, 124); + const float f125 = F(ii, k, 125); + const float f126 = F(ii, k, 126); + const float f127 = F(ii, k, 127); + const float f128 = F(ii, k, 128); + const float f129 = F(ii, k, 129); + const float f130 = F(ii, k, 130); + const float f131 = F(ii, k, 131); + const float f132 = F(ii, k, 132); + const float f133 = F(ii, k, 133); + const float f134 = F(ii, k, 134); + const float f135 = F(ii, k, 135); + const float f136 = F(ii, k, 136); + const float f137 = F(ii, k, 137); + const float f138 = F(ii, k, 138); + const float f139 = F(ii, k, 139); + const float f140 = F(ii, k, 140); + { + float g0 = 0.0f; + float g1 = 0.0f; + float g2 = 0.0f; + float g3 = 0.0f; + float g4 = 0.0f; + float g5 = 0.0f; + float g6 = 0.0f; + float g7 = 0.0f; + float g8 = 0.0f; + float g9 = 0.0f; + float g10 = 0.0f; + float g11 = 0.0f; + float g12 = 0.0f; + float g13 = 0.0f; + float g14 = 0.0f; + float g15 = 0.0f; + float g16 = 0.0f; + float g17 = 0.0f; + float g18 = 0.0f; + float g19 = 0.0f; + float g20 = 0.0f; + float g21 = 0.0f; + float g22 = 0.0f; + float g23 = 0.0f; + float g24 = 0.0f; + float g25 = 0.0f; + float g26 = 0.0f; + float g27 = 0.0f; + float g28 = 0.0f; + float g29 = 0.0f; + float g30 = 0.0f; + float g31 = 0.0f; + float g32 = 0.0f; + float g33 = 0.0f; + float g34 = 0.0f; + float g35 = 0.0f; + float g36 = 0.0f; + float g37 = 0.0f; + float g38 = 0.0f; + float g39 = 0.0f; + float g40 = 0.0f; + float g41 = 0.0f; + float g42 = 0.0f; + float g43 = 0.0f; + float g44 = 0.0f; + float g45 = 0.0f; + float g46 = 0.0f; + float g47 = 0.0f; + { const float d = D(ii, k, 0); + g0 += 1.0f * d * f0; + g0 += 1.0f * d * f0; + } + { const float d = D(ii, k, 1); + g1 += 1.0f * d * f0; + g0 += 1.0f * d * f1; + } + { const float d = D(ii, k, 2); + g2 += 1.0f * d * f0; + g0 += 1.0f * d * f2; + } + { const float d = D(ii, k, 3); + g3 += 1.0f * d * f0; + g0 += 1.0f * d * f3; + } + { const float d = D(ii, k, 4); + g4 += 1.0f * d * f0; + g0 += 1.0f * d * f4; + } + { const float d = D(ii, k, 5); + g8 += 0.3333333432674408f * d * f5; + g5 += 0.3333333432674408f * d * f8; + g9 += 0.3333333432674408f * d * f6; + g6 += 0.3333333432674408f * d * f9; + g10 += 0.3333333432674408f * d * f7; + g7 += 0.3333333432674408f * d * f10; + } + { const float d = D(ii, k, 6); + g11 += 0.3333333432674408f * d * f5; + g5 += 0.3333333432674408f * d * f11; + g12 += 0.3333333432674408f * d * f6; + g6 += 0.3333333432674408f * d * f12; + g13 += 0.3333333432674408f * d * f7; + g7 += 0.3333333432674408f * d * f13; + } + { const float d = D(ii, k, 7); + g14 += 0.3333333432674408f * d * f5; + g5 += 0.3333333432674408f * d * f14; + g15 += 0.3333333432674408f * d * f6; + g6 += 0.3333333432674408f * d * f15; + g16 += 0.3333333432674408f * d * f7; + g7 += 0.3333333432674408f * d * f16; + } + { const float d = D(ii, k, 8); + g1 += 1.0f * d * f1; + g1 += 1.0f * d * f1; + } + { const float d = D(ii, k, 9); + g2 += 1.0f * d * f1; + g1 += 1.0f * d * f2; + } + { const float d = D(ii, k, 10); + g3 += 1.0f * d * f1; + g1 += 1.0f * d * f3; + } + { const float d = D(ii, k, 11); + g4 += 1.0f * d * f1; + g1 += 1.0f * d * f4; + } + { const float d = D(ii, k, 12); + g27 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f27; + g28 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f28; + g29 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f29; + g30 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f30; + g31 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f31; + } + { const float d = D(ii, k, 13); + g32 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f32; + g33 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f33; + g34 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f34; + g35 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f35; + g36 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f36; + } + { const float d = D(ii, k, 14); + g37 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f37; + g38 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f41; + } + { const float d = D(ii, k, 15); + g42 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 16); + g47 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f47; + g18 += 0.20000000298023224f * d * f48; + g19 += 0.20000000298023224f * d * f49; + g20 += 0.20000000298023224f * d * f50; + g21 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 17); + g27 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f27; + g28 += 0.20000000298023224f * d * f23; + g23 += 0.20000000298023224f * d * f28; + g29 += 0.20000000298023224f * d * f24; + g24 += 0.20000000298023224f * d * f29; + g30 += 0.20000000298023224f * d * f25; + g25 += 0.20000000298023224f * d * f30; + g31 += 0.20000000298023224f * d * f26; + g26 += 0.20000000298023224f * d * f31; + } + { const float d = D(ii, k, 18); + g37 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f37; + g38 += 0.20000000298023224f * d * f23; + g23 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f24; + g24 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f25; + g25 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f26; + g26 += 0.20000000298023224f * d * f41; + } + { const float d = D(ii, k, 19); + g42 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f23; + g23 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f24; + g24 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f25; + g25 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f26; + g26 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 20); + g47 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f47; + g23 += 0.20000000298023224f * d * f48; + g24 += 0.20000000298023224f * d * f49; + g25 += 0.20000000298023224f * d * f50; + g26 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 21); + g8 += 0.3333333432674408f * d * f8; + g8 += 0.3333333432674408f * d * f8; + g9 += 0.3333333432674408f * d * f9; + g9 += 0.3333333432674408f * d * f9; + g10 += 0.3333333432674408f * d * f10; + g10 += 0.3333333432674408f * d * f10; + } + { const float d = D(ii, k, 22); + g11 += 0.3333333432674408f * d * f8; + g8 += 0.3333333432674408f * d * f11; + g12 += 0.3333333432674408f * d * f9; + g9 += 0.3333333432674408f * d * f12; + g13 += 0.3333333432674408f * d * f10; + g10 += 0.3333333432674408f * d * f13; + } + { const float d = D(ii, k, 23); + g14 += 0.3333333432674408f * d * f8; + g8 += 0.3333333432674408f * d * f14; + g15 += 0.3333333432674408f * d * f9; + g9 += 0.3333333432674408f * d * f15; + g16 += 0.3333333432674408f * d * f10; + g10 += 0.3333333432674408f * d * f16; + } + { const float d = D(ii, k, 27); + g2 += 1.0f * d * f2; + g2 += 1.0f * d * f2; + } + { const float d = D(ii, k, 28); + g3 += 1.0f * d * f2; + g2 += 1.0f * d * f3; + } + { const float d = D(ii, k, 29); + g4 += 1.0f * d * f2; + g2 += 1.0f * d * f4; + } + { const float d = D(ii, k, 30); + g32 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f32; + g33 += 0.20000000298023224f * d * f28; + g28 += 0.20000000298023224f * d * f33; + g34 += 0.20000000298023224f * d * f29; + g29 += 0.20000000298023224f * d * f34; + g35 += 0.20000000298023224f * d * f30; + g30 += 0.20000000298023224f * d * f35; + g36 += 0.20000000298023224f * d * f31; + g31 += 0.20000000298023224f * d * f36; + } + { const float d = D(ii, k, 31); + g37 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f37; + g38 += 0.20000000298023224f * d * f28; + g28 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f29; + g29 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f30; + g30 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f31; + g31 += 0.20000000298023224f * d * f41; + } + { const float d = D(ii, k, 32); + g42 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f28; + g28 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f29; + g29 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f30; + g30 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f31; + g31 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 33); + g47 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f47; + g28 += 0.20000000298023224f * d * f48; + g29 += 0.20000000298023224f * d * f49; + g30 += 0.20000000298023224f * d * f50; + g31 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 38); + g32 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f32; + g33 += 0.20000000298023224f * d * f33; + g33 += 0.20000000298023224f * d * f33; + g34 += 0.20000000298023224f * d * f34; + g34 += 0.20000000298023224f * d * f34; + g35 += 0.20000000298023224f * d * f35; + g35 += 0.20000000298023224f * d * f35; + g36 += 0.20000000298023224f * d * f36; + g36 += 0.20000000298023224f * d * f36; + } + { const float d = D(ii, k, 39); + g37 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f37; + g38 += 0.20000000298023224f * d * f33; + g33 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f34; + g34 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f35; + g35 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f36; + g36 += 0.20000000298023224f * d * f41; + } + { const float d = D(ii, k, 40); + g42 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f33; + g33 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f34; + g34 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f35; + g35 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f36; + g36 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 41); + g47 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f47; + g33 += 0.20000000298023224f * d * f48; + g34 += 0.20000000298023224f * d * f49; + g35 += 0.20000000298023224f * d * f50; + g36 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 45); + g11 += 0.3333333432674408f * d * f11; + g11 += 0.3333333432674408f * d * f11; + g12 += 0.3333333432674408f * d * f12; + g12 += 0.3333333432674408f * d * f12; + g13 += 0.3333333432674408f * d * f13; + g13 += 0.3333333432674408f * d * f13; + } + { const float d = D(ii, k, 46); + g14 += 0.3333333432674408f * d * f11; + g11 += 0.3333333432674408f * d * f14; + g15 += 0.3333333432674408f * d * f12; + g12 += 0.3333333432674408f * d * f15; + g16 += 0.3333333432674408f * d * f13; + g13 += 0.3333333432674408f * d * f16; + } + { const float d = D(ii, k, 50); + g3 += 1.0f * d * f3; + g3 += 1.0f * d * f3; + } + { const float d = D(ii, k, 51); + g4 += 1.0f * d * f3; + g3 += 1.0f * d * f4; + } + { const float d = D(ii, k, 52); + g37 += 0.20000000298023224f * d * f37; + g37 += 0.20000000298023224f * d * f37; + g38 += 0.20000000298023224f * d * f38; + g38 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f39; + g39 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f40; + g40 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f41; + g41 += 0.20000000298023224f * d * f41; + } + { const float d = D(ii, k, 53); + g42 += 0.20000000298023224f * d * f37; + g37 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f38; + g38 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f39; + g39 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f40; + g40 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f41; + g41 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 54); + g47 += 0.20000000298023224f * d * f37; + g37 += 0.20000000298023224f * d * f47; + g38 += 0.20000000298023224f * d * f48; + g39 += 0.20000000298023224f * d * f49; + g40 += 0.20000000298023224f * d * f50; + g41 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 61); + g42 += 0.20000000298023224f * d * f42; + g42 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f43; + g43 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f44; + g44 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f45; + g45 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f46; + g46 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 62); + g47 += 0.20000000298023224f * d * f42; + g42 += 0.20000000298023224f * d * f47; + g43 += 0.20000000298023224f * d * f48; + g44 += 0.20000000298023224f * d * f49; + g45 += 0.20000000298023224f * d * f50; + g46 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 64); + g14 += 0.3333333432674408f * d * f14; + g14 += 0.3333333432674408f * d * f14; + g15 += 0.3333333432674408f * d * f15; + g15 += 0.3333333432674408f * d * f15; + g16 += 0.3333333432674408f * d * f16; + g16 += 0.3333333432674408f * d * f16; + } + { const float d = D(ii, k, 66); + g4 += 1.0f * d * f4; + g4 += 1.0f * d * f4; + } + { const float d = D(ii, k, 67); + g47 += 0.20000000298023224f * d * f47; + g47 += 0.20000000298023224f * d * f47; + } + if constexpr (ACC) { + dF(ii, k, 0) += g0; + dF(ii, k, 1) += g1; + dF(ii, k, 2) += g2; + dF(ii, k, 3) += g3; + dF(ii, k, 4) += g4; + dF(ii, k, 5) += g5; + dF(ii, k, 6) += g6; + dF(ii, k, 7) += g7; + dF(ii, k, 8) += g8; + dF(ii, k, 9) += g9; + dF(ii, k, 10) += g10; + dF(ii, k, 11) += g11; + dF(ii, k, 12) += g12; + dF(ii, k, 13) += g13; + dF(ii, k, 14) += g14; + dF(ii, k, 15) += g15; + dF(ii, k, 16) += g16; + dF(ii, k, 17) += g17; + dF(ii, k, 18) += g18; + dF(ii, k, 19) += g19; + dF(ii, k, 20) += g20; + dF(ii, k, 21) += g21; + dF(ii, k, 22) += g22; + dF(ii, k, 23) += g23; + dF(ii, k, 24) += g24; + dF(ii, k, 25) += g25; + dF(ii, k, 26) += g26; + dF(ii, k, 27) += g27; + dF(ii, k, 28) += g28; + dF(ii, k, 29) += g29; + dF(ii, k, 30) += g30; + dF(ii, k, 31) += g31; + dF(ii, k, 32) += g32; + dF(ii, k, 33) += g33; + dF(ii, k, 34) += g34; + dF(ii, k, 35) += g35; + dF(ii, k, 36) += g36; + dF(ii, k, 37) += g37; + dF(ii, k, 38) += g38; + dF(ii, k, 39) += g39; + dF(ii, k, 40) += g40; + dF(ii, k, 41) += g41; + dF(ii, k, 42) += g42; + dF(ii, k, 43) += g43; + dF(ii, k, 44) += g44; + dF(ii, k, 45) += g45; + dF(ii, k, 46) += g46; + dF(ii, k, 47) += g47; + } else { + dF(ii, k, 0) = g0; + dF(ii, k, 1) = g1; + dF(ii, k, 2) = g2; + dF(ii, k, 3) = g3; + dF(ii, k, 4) = g4; + dF(ii, k, 5) = g5; + dF(ii, k, 6) = g6; + dF(ii, k, 7) = g7; + dF(ii, k, 8) = g8; + dF(ii, k, 9) = g9; + dF(ii, k, 10) = g10; + dF(ii, k, 11) = g11; + dF(ii, k, 12) = g12; + dF(ii, k, 13) = g13; + dF(ii, k, 14) = g14; + dF(ii, k, 15) = g15; + dF(ii, k, 16) = g16; + dF(ii, k, 17) = g17; + dF(ii, k, 18) = g18; + dF(ii, k, 19) = g19; + dF(ii, k, 20) = g20; + dF(ii, k, 21) = g21; + dF(ii, k, 22) = g22; + dF(ii, k, 23) = g23; + dF(ii, k, 24) = g24; + dF(ii, k, 25) = g25; + dF(ii, k, 26) = g26; + dF(ii, k, 27) = g27; + dF(ii, k, 28) = g28; + dF(ii, k, 29) = g29; + dF(ii, k, 30) = g30; + dF(ii, k, 31) = g31; + dF(ii, k, 32) = g32; + dF(ii, k, 33) = g33; + dF(ii, k, 34) = g34; + dF(ii, k, 35) = g35; + dF(ii, k, 36) = g36; + dF(ii, k, 37) = g37; + dF(ii, k, 38) = g38; + dF(ii, k, 39) = g39; + dF(ii, k, 40) = g40; + dF(ii, k, 41) = g41; + dF(ii, k, 42) = g42; + dF(ii, k, 43) = g43; + dF(ii, k, 44) = g44; + dF(ii, k, 45) = g45; + dF(ii, k, 46) = g46; + dF(ii, k, 47) = g47; + } + } + { + float g48 = 0.0f; + float g49 = 0.0f; + float g50 = 0.0f; + float g51 = 0.0f; + float g52 = 0.0f; + float g53 = 0.0f; + float g54 = 0.0f; + float g55 = 0.0f; + float g56 = 0.0f; + float g57 = 0.0f; + float g58 = 0.0f; + float g59 = 0.0f; + float g60 = 0.0f; + float g61 = 0.0f; + float g62 = 0.0f; + float g63 = 0.0f; + float g64 = 0.0f; + float g65 = 0.0f; + float g66 = 0.0f; + float g67 = 0.0f; + float g68 = 0.0f; + float g69 = 0.0f; + float g70 = 0.0f; + float g71 = 0.0f; + float g72 = 0.0f; + float g73 = 0.0f; + float g74 = 0.0f; + float g75 = 0.0f; + float g76 = 0.0f; + float g77 = 0.0f; + float g78 = 0.0f; + float g79 = 0.0f; + float g80 = 0.0f; + float g81 = 0.0f; + float g82 = 0.0f; + float g83 = 0.0f; + float g84 = 0.0f; + float g85 = 0.0f; + float g86 = 0.0f; + float g87 = 0.0f; + float g88 = 0.0f; + float g89 = 0.0f; + float g90 = 0.0f; + float g91 = 0.0f; + float g92 = 0.0f; + float g93 = 0.0f; + float g94 = 0.0f; + float g95 = 0.0f; + { const float d = D(ii, k, 16); + g48 += 0.20000000298023224f * d * f18; + g49 += 0.20000000298023224f * d * f19; + g50 += 0.20000000298023224f * d * f20; + g51 += 0.20000000298023224f * d * f21; + } + { const float d = D(ii, k, 20); + g48 += 0.20000000298023224f * d * f23; + g49 += 0.20000000298023224f * d * f24; + g50 += 0.20000000298023224f * d * f25; + g51 += 0.20000000298023224f * d * f26; + } + { const float d = D(ii, k, 24); + g52 += 0.1428571492433548f * d * f52; + g52 += 0.1428571492433548f * d * f52; + g53 += 0.1428571492433548f * d * f53; + g53 += 0.1428571492433548f * d * f53; + g54 += 0.1428571492433548f * d * f54; + g54 += 0.1428571492433548f * d * f54; + g55 += 0.1428571492433548f * d * f55; + g55 += 0.1428571492433548f * d * f55; + g56 += 0.1428571492433548f * d * f56; + g56 += 0.1428571492433548f * d * f56; + g57 += 0.1428571492433548f * d * f57; + g57 += 0.1428571492433548f * d * f57; + g58 += 0.1428571492433548f * d * f58; + g58 += 0.1428571492433548f * d * f58; + } + { const float d = D(ii, k, 25); + g66 += 0.1428571492433548f * d * f52; + g52 += 0.1428571492433548f * d * f66; + g67 += 0.1428571492433548f * d * f53; + g53 += 0.1428571492433548f * d * f67; + g68 += 0.1428571492433548f * d * f54; + g54 += 0.1428571492433548f * d * f68; + g69 += 0.1428571492433548f * d * f55; + g55 += 0.1428571492433548f * d * f69; + g70 += 0.1428571492433548f * d * f56; + g56 += 0.1428571492433548f * d * f70; + g71 += 0.1428571492433548f * d * f57; + g57 += 0.1428571492433548f * d * f71; + g72 += 0.1428571492433548f * d * f58; + g58 += 0.1428571492433548f * d * f72; + } + { const float d = D(ii, k, 26); + g80 += 0.1428571492433548f * d * f52; + g52 += 0.1428571492433548f * d * f80; + g81 += 0.1428571492433548f * d * f53; + g53 += 0.1428571492433548f * d * f81; + g82 += 0.1428571492433548f * d * f54; + g54 += 0.1428571492433548f * d * f82; + g83 += 0.1428571492433548f * d * f55; + g55 += 0.1428571492433548f * d * f83; + g84 += 0.1428571492433548f * d * f56; + g56 += 0.1428571492433548f * d * f84; + g85 += 0.1428571492433548f * d * f57; + g57 += 0.1428571492433548f * d * f85; + g86 += 0.1428571492433548f * d * f58; + g58 += 0.1428571492433548f * d * f86; + } + { const float d = D(ii, k, 33); + g48 += 0.20000000298023224f * d * f28; + g49 += 0.20000000298023224f * d * f29; + g50 += 0.20000000298023224f * d * f30; + g51 += 0.20000000298023224f * d * f31; + } + { const float d = D(ii, k, 34); + g87 += 0.1111111119389534f * d * f96; + g88 += 0.1111111119389534f * d * f97; + g89 += 0.1111111119389534f * d * f98; + g90 += 0.1111111119389534f * d * f99; + g91 += 0.1111111119389534f * d * f100; + g92 += 0.1111111119389534f * d * f101; + g93 += 0.1111111119389534f * d * f102; + g94 += 0.1111111119389534f * d * f103; + g95 += 0.1111111119389534f * d * f104; + } + { const float d = D(ii, k, 35); + g87 += 0.1111111119389534f * d * f105; + g88 += 0.1111111119389534f * d * f106; + g89 += 0.1111111119389534f * d * f107; + g90 += 0.1111111119389534f * d * f108; + g91 += 0.1111111119389534f * d * f109; + g92 += 0.1111111119389534f * d * f110; + g93 += 0.1111111119389534f * d * f111; + g94 += 0.1111111119389534f * d * f112; + g95 += 0.1111111119389534f * d * f113; + } + { const float d = D(ii, k, 36); + g87 += 0.1111111119389534f * d * f132; + g88 += 0.1111111119389534f * d * f133; + g89 += 0.1111111119389534f * d * f134; + g90 += 0.1111111119389534f * d * f135; + g91 += 0.1111111119389534f * d * f136; + g92 += 0.1111111119389534f * d * f137; + g93 += 0.1111111119389534f * d * f138; + g94 += 0.1111111119389534f * d * f139; + g95 += 0.1111111119389534f * d * f140; + } + { const float d = D(ii, k, 37); + g80 += 0.1428571492433548f * d * f59; + g59 += 0.1428571492433548f * d * f80; + g81 += 0.1428571492433548f * d * f60; + g60 += 0.1428571492433548f * d * f81; + g82 += 0.1428571492433548f * d * f61; + g61 += 0.1428571492433548f * d * f82; + g83 += 0.1428571492433548f * d * f62; + g62 += 0.1428571492433548f * d * f83; + g84 += 0.1428571492433548f * d * f63; + g63 += 0.1428571492433548f * d * f84; + g85 += 0.1428571492433548f * d * f64; + g64 += 0.1428571492433548f * d * f85; + g86 += 0.1428571492433548f * d * f65; + g65 += 0.1428571492433548f * d * f86; + } + { const float d = D(ii, k, 41); + g48 += 0.20000000298023224f * d * f33; + g49 += 0.20000000298023224f * d * f34; + g50 += 0.20000000298023224f * d * f35; + g51 += 0.20000000298023224f * d * f36; + } + { const float d = D(ii, k, 47); + g66 += 0.1428571492433548f * d * f66; + g66 += 0.1428571492433548f * d * f66; + g67 += 0.1428571492433548f * d * f67; + g67 += 0.1428571492433548f * d * f67; + g68 += 0.1428571492433548f * d * f68; + g68 += 0.1428571492433548f * d * f68; + g69 += 0.1428571492433548f * d * f69; + g69 += 0.1428571492433548f * d * f69; + g70 += 0.1428571492433548f * d * f70; + g70 += 0.1428571492433548f * d * f70; + g71 += 0.1428571492433548f * d * f71; + g71 += 0.1428571492433548f * d * f71; + g72 += 0.1428571492433548f * d * f72; + g72 += 0.1428571492433548f * d * f72; + } + { const float d = D(ii, k, 48); + g73 += 0.1428571492433548f * d * f66; + g66 += 0.1428571492433548f * d * f73; + g74 += 0.1428571492433548f * d * f67; + g67 += 0.1428571492433548f * d * f74; + g75 += 0.1428571492433548f * d * f68; + g68 += 0.1428571492433548f * d * f75; + g76 += 0.1428571492433548f * d * f69; + g69 += 0.1428571492433548f * d * f76; + g77 += 0.1428571492433548f * d * f70; + g70 += 0.1428571492433548f * d * f77; + g78 += 0.1428571492433548f * d * f71; + g71 += 0.1428571492433548f * d * f78; + g79 += 0.1428571492433548f * d * f72; + g72 += 0.1428571492433548f * d * f79; + } + { const float d = D(ii, k, 49); + g80 += 0.1428571492433548f * d * f66; + g66 += 0.1428571492433548f * d * f80; + g81 += 0.1428571492433548f * d * f67; + g67 += 0.1428571492433548f * d * f81; + g82 += 0.1428571492433548f * d * f68; + g68 += 0.1428571492433548f * d * f82; + g83 += 0.1428571492433548f * d * f69; + g69 += 0.1428571492433548f * d * f83; + g84 += 0.1428571492433548f * d * f70; + g70 += 0.1428571492433548f * d * f84; + g85 += 0.1428571492433548f * d * f71; + g71 += 0.1428571492433548f * d * f85; + g86 += 0.1428571492433548f * d * f72; + g72 += 0.1428571492433548f * d * f86; + } + { const float d = D(ii, k, 54); + g48 += 0.20000000298023224f * d * f38; + g49 += 0.20000000298023224f * d * f39; + g50 += 0.20000000298023224f * d * f40; + g51 += 0.20000000298023224f * d * f41; + } + { const float d = D(ii, k, 59); + g73 += 0.1428571492433548f * d * f73; + g73 += 0.1428571492433548f * d * f73; + g74 += 0.1428571492433548f * d * f74; + g74 += 0.1428571492433548f * d * f74; + g75 += 0.1428571492433548f * d * f75; + g75 += 0.1428571492433548f * d * f75; + g76 += 0.1428571492433548f * d * f76; + g76 += 0.1428571492433548f * d * f76; + g77 += 0.1428571492433548f * d * f77; + g77 += 0.1428571492433548f * d * f77; + g78 += 0.1428571492433548f * d * f78; + g78 += 0.1428571492433548f * d * f78; + g79 += 0.1428571492433548f * d * f79; + g79 += 0.1428571492433548f * d * f79; + } + { const float d = D(ii, k, 60); + g80 += 0.1428571492433548f * d * f73; + g73 += 0.1428571492433548f * d * f80; + g81 += 0.1428571492433548f * d * f74; + g74 += 0.1428571492433548f * d * f81; + g82 += 0.1428571492433548f * d * f75; + g75 += 0.1428571492433548f * d * f82; + g83 += 0.1428571492433548f * d * f76; + g76 += 0.1428571492433548f * d * f83; + g84 += 0.1428571492433548f * d * f77; + g77 += 0.1428571492433548f * d * f84; + g85 += 0.1428571492433548f * d * f78; + g78 += 0.1428571492433548f * d * f85; + g86 += 0.1428571492433548f * d * f79; + g79 += 0.1428571492433548f * d * f86; + } + { const float d = D(ii, k, 62); + g48 += 0.20000000298023224f * d * f43; + g49 += 0.20000000298023224f * d * f44; + g50 += 0.20000000298023224f * d * f45; + g51 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 65); + g80 += 0.1428571492433548f * d * f80; + g80 += 0.1428571492433548f * d * f80; + g81 += 0.1428571492433548f * d * f81; + g81 += 0.1428571492433548f * d * f81; + g82 += 0.1428571492433548f * d * f82; + g82 += 0.1428571492433548f * d * f82; + g83 += 0.1428571492433548f * d * f83; + g83 += 0.1428571492433548f * d * f83; + g84 += 0.1428571492433548f * d * f84; + g84 += 0.1428571492433548f * d * f84; + g85 += 0.1428571492433548f * d * f85; + g85 += 0.1428571492433548f * d * f85; + g86 += 0.1428571492433548f * d * f86; + g86 += 0.1428571492433548f * d * f86; + } + { const float d = D(ii, k, 67); + g48 += 0.20000000298023224f * d * f48; + g48 += 0.20000000298023224f * d * f48; + g49 += 0.20000000298023224f * d * f49; + g49 += 0.20000000298023224f * d * f49; + g50 += 0.20000000298023224f * d * f50; + g50 += 0.20000000298023224f * d * f50; + g51 += 0.20000000298023224f * d * f51; + g51 += 0.20000000298023224f * d * f51; + } + if constexpr (ACC) { + dF(ii, k, 48) += g48; + dF(ii, k, 49) += g49; + dF(ii, k, 50) += g50; + dF(ii, k, 51) += g51; + dF(ii, k, 52) += g52; + dF(ii, k, 53) += g53; + dF(ii, k, 54) += g54; + dF(ii, k, 55) += g55; + dF(ii, k, 56) += g56; + dF(ii, k, 57) += g57; + dF(ii, k, 58) += g58; + dF(ii, k, 59) += g59; + dF(ii, k, 60) += g60; + dF(ii, k, 61) += g61; + dF(ii, k, 62) += g62; + dF(ii, k, 63) += g63; + dF(ii, k, 64) += g64; + dF(ii, k, 65) += g65; + dF(ii, k, 66) += g66; + dF(ii, k, 67) += g67; + dF(ii, k, 68) += g68; + dF(ii, k, 69) += g69; + dF(ii, k, 70) += g70; + dF(ii, k, 71) += g71; + dF(ii, k, 72) += g72; + dF(ii, k, 73) += g73; + dF(ii, k, 74) += g74; + dF(ii, k, 75) += g75; + dF(ii, k, 76) += g76; + dF(ii, k, 77) += g77; + dF(ii, k, 78) += g78; + dF(ii, k, 79) += g79; + dF(ii, k, 80) += g80; + dF(ii, k, 81) += g81; + dF(ii, k, 82) += g82; + dF(ii, k, 83) += g83; + dF(ii, k, 84) += g84; + dF(ii, k, 85) += g85; + dF(ii, k, 86) += g86; + dF(ii, k, 87) += g87; + dF(ii, k, 88) += g88; + dF(ii, k, 89) += g89; + dF(ii, k, 90) += g90; + dF(ii, k, 91) += g91; + dF(ii, k, 92) += g92; + dF(ii, k, 93) += g93; + dF(ii, k, 94) += g94; + dF(ii, k, 95) += g95; + } else { + dF(ii, k, 48) = g48; + dF(ii, k, 49) = g49; + dF(ii, k, 50) = g50; + dF(ii, k, 51) = g51; + dF(ii, k, 52) = g52; + dF(ii, k, 53) = g53; + dF(ii, k, 54) = g54; + dF(ii, k, 55) = g55; + dF(ii, k, 56) = g56; + dF(ii, k, 57) = g57; + dF(ii, k, 58) = g58; + dF(ii, k, 59) = g59; + dF(ii, k, 60) = g60; + dF(ii, k, 61) = g61; + dF(ii, k, 62) = g62; + dF(ii, k, 63) = g63; + dF(ii, k, 64) = g64; + dF(ii, k, 65) = g65; + dF(ii, k, 66) = g66; + dF(ii, k, 67) = g67; + dF(ii, k, 68) = g68; + dF(ii, k, 69) = g69; + dF(ii, k, 70) = g70; + dF(ii, k, 71) = g71; + dF(ii, k, 72) = g72; + dF(ii, k, 73) = g73; + dF(ii, k, 74) = g74; + dF(ii, k, 75) = g75; + dF(ii, k, 76) = g76; + dF(ii, k, 77) = g77; + dF(ii, k, 78) = g78; + dF(ii, k, 79) = g79; + dF(ii, k, 80) = g80; + dF(ii, k, 81) = g81; + dF(ii, k, 82) = g82; + dF(ii, k, 83) = g83; + dF(ii, k, 84) = g84; + dF(ii, k, 85) = g85; + dF(ii, k, 86) = g86; + dF(ii, k, 87) = g87; + dF(ii, k, 88) = g88; + dF(ii, k, 89) = g89; + dF(ii, k, 90) = g90; + dF(ii, k, 91) = g91; + dF(ii, k, 92) = g92; + dF(ii, k, 93) = g93; + dF(ii, k, 94) = g94; + dF(ii, k, 95) = g95; + } + } + { + float g96 = 0.0f; + float g97 = 0.0f; + float g98 = 0.0f; + float g99 = 0.0f; + float g100 = 0.0f; + float g101 = 0.0f; + float g102 = 0.0f; + float g103 = 0.0f; + float g104 = 0.0f; + float g105 = 0.0f; + float g106 = 0.0f; + float g107 = 0.0f; + float g108 = 0.0f; + float g109 = 0.0f; + float g110 = 0.0f; + float g111 = 0.0f; + float g112 = 0.0f; + float g113 = 0.0f; + float g114 = 0.0f; + float g115 = 0.0f; + float g116 = 0.0f; + float g117 = 0.0f; + float g118 = 0.0f; + float g119 = 0.0f; + float g120 = 0.0f; + float g121 = 0.0f; + float g122 = 0.0f; + float g123 = 0.0f; + float g124 = 0.0f; + float g125 = 0.0f; + float g126 = 0.0f; + float g127 = 0.0f; + float g128 = 0.0f; + float g129 = 0.0f; + float g130 = 0.0f; + float g131 = 0.0f; + float g132 = 0.0f; + float g133 = 0.0f; + float g134 = 0.0f; + float g135 = 0.0f; + float g136 = 0.0f; + float g137 = 0.0f; + float g138 = 0.0f; + float g139 = 0.0f; + float g140 = 0.0f; + { const float d = D(ii, k, 34); + g96 += 0.1111111119389534f * d * f87; + g97 += 0.1111111119389534f * d * f88; + g98 += 0.1111111119389534f * d * f89; + g99 += 0.1111111119389534f * d * f90; + g100 += 0.1111111119389534f * d * f91; + g101 += 0.1111111119389534f * d * f92; + g102 += 0.1111111119389534f * d * f93; + g103 += 0.1111111119389534f * d * f94; + g104 += 0.1111111119389534f * d * f95; + } + { const float d = D(ii, k, 35); + g105 += 0.1111111119389534f * d * f87; + g106 += 0.1111111119389534f * d * f88; + g107 += 0.1111111119389534f * d * f89; + g108 += 0.1111111119389534f * d * f90; + g109 += 0.1111111119389534f * d * f91; + g110 += 0.1111111119389534f * d * f92; + g111 += 0.1111111119389534f * d * f93; + g112 += 0.1111111119389534f * d * f94; + g113 += 0.1111111119389534f * d * f95; + } + { const float d = D(ii, k, 36); + g132 += 0.1111111119389534f * d * f87; + g133 += 0.1111111119389534f * d * f88; + g134 += 0.1111111119389534f * d * f89; + g135 += 0.1111111119389534f * d * f90; + g136 += 0.1111111119389534f * d * f91; + g137 += 0.1111111119389534f * d * f92; + g138 += 0.1111111119389534f * d * f93; + g139 += 0.1111111119389534f * d * f94; + g140 += 0.1111111119389534f * d * f95; + } + { const float d = D(ii, k, 42); + g96 += 0.1111111119389534f * d * f96; + g96 += 0.1111111119389534f * d * f96; + g97 += 0.1111111119389534f * d * f97; + g97 += 0.1111111119389534f * d * f97; + g98 += 0.1111111119389534f * d * f98; + g98 += 0.1111111119389534f * d * f98; + g99 += 0.1111111119389534f * d * f99; + g99 += 0.1111111119389534f * d * f99; + g100 += 0.1111111119389534f * d * f100; + g100 += 0.1111111119389534f * d * f100; + g101 += 0.1111111119389534f * d * f101; + g101 += 0.1111111119389534f * d * f101; + g102 += 0.1111111119389534f * d * f102; + g102 += 0.1111111119389534f * d * f102; + g103 += 0.1111111119389534f * d * f103; + g103 += 0.1111111119389534f * d * f103; + g104 += 0.1111111119389534f * d * f104; + g104 += 0.1111111119389534f * d * f104; + } + { const float d = D(ii, k, 43); + g123 += 0.1111111119389534f * d * f96; + g96 += 0.1111111119389534f * d * f123; + g124 += 0.1111111119389534f * d * f97; + g97 += 0.1111111119389534f * d * f124; + g125 += 0.1111111119389534f * d * f98; + g98 += 0.1111111119389534f * d * f125; + g126 += 0.1111111119389534f * d * f99; + g99 += 0.1111111119389534f * d * f126; + g127 += 0.1111111119389534f * d * f100; + g100 += 0.1111111119389534f * d * f127; + g128 += 0.1111111119389534f * d * f101; + g101 += 0.1111111119389534f * d * f128; + g129 += 0.1111111119389534f * d * f102; + g102 += 0.1111111119389534f * d * f129; + g130 += 0.1111111119389534f * d * f103; + g103 += 0.1111111119389534f * d * f130; + g131 += 0.1111111119389534f * d * f104; + g104 += 0.1111111119389534f * d * f131; + } + { const float d = D(ii, k, 44); + g132 += 0.1111111119389534f * d * f96; + g96 += 0.1111111119389534f * d * f132; + g133 += 0.1111111119389534f * d * f97; + g97 += 0.1111111119389534f * d * f133; + g134 += 0.1111111119389534f * d * f98; + g98 += 0.1111111119389534f * d * f134; + g135 += 0.1111111119389534f * d * f99; + g99 += 0.1111111119389534f * d * f135; + g136 += 0.1111111119389534f * d * f100; + g100 += 0.1111111119389534f * d * f136; + g137 += 0.1111111119389534f * d * f101; + g101 += 0.1111111119389534f * d * f137; + g138 += 0.1111111119389534f * d * f102; + g102 += 0.1111111119389534f * d * f138; + g139 += 0.1111111119389534f * d * f103; + g103 += 0.1111111119389534f * d * f139; + g140 += 0.1111111119389534f * d * f104; + g104 += 0.1111111119389534f * d * f140; + } + { const float d = D(ii, k, 55); + g105 += 0.1111111119389534f * d * f105; + g105 += 0.1111111119389534f * d * f105; + g106 += 0.1111111119389534f * d * f106; + g106 += 0.1111111119389534f * d * f106; + g107 += 0.1111111119389534f * d * f107; + g107 += 0.1111111119389534f * d * f107; + g108 += 0.1111111119389534f * d * f108; + g108 += 0.1111111119389534f * d * f108; + g109 += 0.1111111119389534f * d * f109; + g109 += 0.1111111119389534f * d * f109; + g110 += 0.1111111119389534f * d * f110; + g110 += 0.1111111119389534f * d * f110; + g111 += 0.1111111119389534f * d * f111; + g111 += 0.1111111119389534f * d * f111; + g112 += 0.1111111119389534f * d * f112; + g112 += 0.1111111119389534f * d * f112; + g113 += 0.1111111119389534f * d * f113; + g113 += 0.1111111119389534f * d * f113; + } + { const float d = D(ii, k, 56); + g123 += 0.1111111119389534f * d * f105; + g105 += 0.1111111119389534f * d * f123; + g124 += 0.1111111119389534f * d * f106; + g106 += 0.1111111119389534f * d * f124; + g125 += 0.1111111119389534f * d * f107; + g107 += 0.1111111119389534f * d * f125; + g126 += 0.1111111119389534f * d * f108; + g108 += 0.1111111119389534f * d * f126; + g127 += 0.1111111119389534f * d * f109; + g109 += 0.1111111119389534f * d * f127; + g128 += 0.1111111119389534f * d * f110; + g110 += 0.1111111119389534f * d * f128; + g129 += 0.1111111119389534f * d * f111; + g111 += 0.1111111119389534f * d * f129; + g130 += 0.1111111119389534f * d * f112; + g112 += 0.1111111119389534f * d * f130; + g131 += 0.1111111119389534f * d * f113; + g113 += 0.1111111119389534f * d * f131; + } + { const float d = D(ii, k, 57); + g132 += 0.1111111119389534f * d * f105; + g105 += 0.1111111119389534f * d * f132; + g133 += 0.1111111119389534f * d * f106; + g106 += 0.1111111119389534f * d * f133; + g134 += 0.1111111119389534f * d * f107; + g107 += 0.1111111119389534f * d * f134; + g135 += 0.1111111119389534f * d * f108; + g108 += 0.1111111119389534f * d * f135; + g136 += 0.1111111119389534f * d * f109; + g109 += 0.1111111119389534f * d * f136; + g137 += 0.1111111119389534f * d * f110; + g110 += 0.1111111119389534f * d * f137; + g138 += 0.1111111119389534f * d * f111; + g111 += 0.1111111119389534f * d * f138; + g139 += 0.1111111119389534f * d * f112; + g112 += 0.1111111119389534f * d * f139; + g140 += 0.1111111119389534f * d * f113; + g113 += 0.1111111119389534f * d * f140; + } + { const float d = D(ii, k, 58); + g132 += 0.1111111119389534f * d * f114; + g114 += 0.1111111119389534f * d * f132; + g133 += 0.1111111119389534f * d * f115; + g115 += 0.1111111119389534f * d * f133; + g134 += 0.1111111119389534f * d * f116; + g116 += 0.1111111119389534f * d * f134; + g135 += 0.1111111119389534f * d * f117; + g117 += 0.1111111119389534f * d * f135; + g136 += 0.1111111119389534f * d * f118; + g118 += 0.1111111119389534f * d * f136; + g137 += 0.1111111119389534f * d * f119; + g119 += 0.1111111119389534f * d * f137; + g138 += 0.1111111119389534f * d * f120; + g120 += 0.1111111119389534f * d * f138; + g139 += 0.1111111119389534f * d * f121; + g121 += 0.1111111119389534f * d * f139; + g140 += 0.1111111119389534f * d * f122; + g122 += 0.1111111119389534f * d * f140; + } + { const float d = D(ii, k, 63); + g123 += 0.1111111119389534f * d * f123; + g123 += 0.1111111119389534f * d * f123; + g124 += 0.1111111119389534f * d * f124; + g124 += 0.1111111119389534f * d * f124; + g125 += 0.1111111119389534f * d * f125; + g125 += 0.1111111119389534f * d * f125; + g126 += 0.1111111119389534f * d * f126; + g126 += 0.1111111119389534f * d * f126; + g127 += 0.1111111119389534f * d * f127; + g127 += 0.1111111119389534f * d * f127; + g128 += 0.1111111119389534f * d * f128; + g128 += 0.1111111119389534f * d * f128; + g129 += 0.1111111119389534f * d * f129; + g129 += 0.1111111119389534f * d * f129; + g130 += 0.1111111119389534f * d * f130; + g130 += 0.1111111119389534f * d * f130; + g131 += 0.1111111119389534f * d * f131; + g131 += 0.1111111119389534f * d * f131; + } + { const float d = D(ii, k, 68); + g132 += 0.1111111119389534f * d * f132; + g132 += 0.1111111119389534f * d * f132; + g133 += 0.1111111119389534f * d * f133; + g133 += 0.1111111119389534f * d * f133; + g134 += 0.1111111119389534f * d * f134; + g134 += 0.1111111119389534f * d * f134; + g135 += 0.1111111119389534f * d * f135; + g135 += 0.1111111119389534f * d * f135; + g136 += 0.1111111119389534f * d * f136; + g136 += 0.1111111119389534f * d * f136; + g137 += 0.1111111119389534f * d * f137; + g137 += 0.1111111119389534f * d * f137; + g138 += 0.1111111119389534f * d * f138; + g138 += 0.1111111119389534f * d * f138; + g139 += 0.1111111119389534f * d * f139; + g139 += 0.1111111119389534f * d * f139; + g140 += 0.1111111119389534f * d * f140; + g140 += 0.1111111119389534f * d * f140; + } + if constexpr (ACC) { + dF(ii, k, 96) += g96; + dF(ii, k, 97) += g97; + dF(ii, k, 98) += g98; + dF(ii, k, 99) += g99; + dF(ii, k, 100) += g100; + dF(ii, k, 101) += g101; + dF(ii, k, 102) += g102; + dF(ii, k, 103) += g103; + dF(ii, k, 104) += g104; + dF(ii, k, 105) += g105; + dF(ii, k, 106) += g106; + dF(ii, k, 107) += g107; + dF(ii, k, 108) += g108; + dF(ii, k, 109) += g109; + dF(ii, k, 110) += g110; + dF(ii, k, 111) += g111; + dF(ii, k, 112) += g112; + dF(ii, k, 113) += g113; + dF(ii, k, 114) += g114; + dF(ii, k, 115) += g115; + dF(ii, k, 116) += g116; + dF(ii, k, 117) += g117; + dF(ii, k, 118) += g118; + dF(ii, k, 119) += g119; + dF(ii, k, 120) += g120; + dF(ii, k, 121) += g121; + dF(ii, k, 122) += g122; + dF(ii, k, 123) += g123; + dF(ii, k, 124) += g124; + dF(ii, k, 125) += g125; + dF(ii, k, 126) += g126; + dF(ii, k, 127) += g127; + dF(ii, k, 128) += g128; + dF(ii, k, 129) += g129; + dF(ii, k, 130) += g130; + dF(ii, k, 131) += g131; + dF(ii, k, 132) += g132; + dF(ii, k, 133) += g133; + dF(ii, k, 134) += g134; + dF(ii, k, 135) += g135; + dF(ii, k, 136) += g136; + dF(ii, k, 137) += g137; + dF(ii, k, 138) += g138; + dF(ii, k, 139) += g139; + dF(ii, k, 140) += g140; + } else { + dF(ii, k, 96) = g96; + dF(ii, k, 97) = g97; + dF(ii, k, 98) = g98; + dF(ii, k, 99) = g99; + dF(ii, k, 100) = g100; + dF(ii, k, 101) = g101; + dF(ii, k, 102) = g102; + dF(ii, k, 103) = g103; + dF(ii, k, 104) = g104; + dF(ii, k, 105) = g105; + dF(ii, k, 106) = g106; + dF(ii, k, 107) = g107; + dF(ii, k, 108) = g108; + dF(ii, k, 109) = g109; + dF(ii, k, 110) = g110; + dF(ii, k, 111) = g111; + dF(ii, k, 112) = g112; + dF(ii, k, 113) = g113; + dF(ii, k, 114) = g114; + dF(ii, k, 115) = g115; + dF(ii, k, 116) = g116; + dF(ii, k, 117) = g117; + dF(ii, k, 118) = g118; + dF(ii, k, 119) = g119; + dF(ii, k, 120) = g120; + dF(ii, k, 121) = g121; + dF(ii, k, 122) = g122; + dF(ii, k, 123) = g123; + dF(ii, k, 124) = g124; + dF(ii, k, 125) = g125; + dF(ii, k, 126) = g126; + dF(ii, k, 127) = g127; + dF(ii, k, 128) = g128; + dF(ii, k, 129) = g129; + dF(ii, k, 130) = g130; + dF(ii, k, 131) = g131; + dF(ii, k, 132) = g132; + dF(ii, k, 133) = g133; + dF(ii, k, 134) = g134; + dF(ii, k, 135) = g135; + dF(ii, k, 136) = g136; + dF(ii, k, 137) = g137; + dF(ii, k, 138) = g138; + dF(ii, k, 139) = g139; + dF(ii, k, 140) = g140; + } + } + } + +}; + +// mixed product, 547 terms: GRACE-2L-OAM AAA, GRACE-2L-OMAT AAA, GRACE-2L-OMAT-medium-base AAA, +// GRACE-2L-OMAT-medium-ft-AM AAA, GRACE-2L-OMAT-medium-ft-E AAA, GRACE-2L-SMAX-OMAT-medium AAA, GRACE-2L-SMAX-medium +// AAA, GRACE-OFF-2L-large AAA +struct T547_27bdfa4d { + static constexpr int nt = 547, nl = 141; + static constexpr int tab[547][3] = {{0,0,0}, {1,0,1}, {8,1,2}, {9,2,2}, {10,3,2}, {2,0,3}, {27,4,4}, {28,5,4}, {29,6,4}, {30,7,4}, {31,8,4}, {11,1,5}, {12,2,5}, {13,3,5}, {3,0,6}, {37,4,7}, {38,5,7}, {39,6,7}, {40,7,7}, {41,8,7}, {42,4,8}, {43,5,8}, {44,6,8}, {45,7,8}, {46,8,8}, {14,1,9}, {15,2,9}, {16,3,9}, {80,9,10}, {81,10,10}, {82,11,10}, {83,12,10}, {84,13,10}, {85,14,10}, {86,15,10}, {4,0,11}, {47,4,12}, {48,5,12}, {49,6,12}, {50,7,12}, {51,8,12}, {132,16,13}, {133,17,13}, {134,18,13}, {135,19,13}, {136,20,13}, {137,21,13}, {138,22,13}, {139,23,13}, {140,24,13}, {0,1,14}, {0,2,15}, {0,3,16}, {1,1,17}, {1,2,18}, {1,3,19}, {8,0,20}, {9,0,21}, {10,0,22}, {8,6,23}, {8,8,23}, {9,5,23}, {10,4,23}, {8,5,24}, {9,6,24}, {10,7,24}, {8,4,25}, {9,7,25}, {10,6,25}, {10,8,25}, {52,8,26}, {53,7,26}, {54,6,26}, {54,8,26}, {55,5,26}, {56,4,26}, {57,5,26}, {58,4,26}, {53,4,27}, {54,5,27}, {55,6,27}, {56,7,27}, {57,8,27}, {52,4,28}, {53,5,28}, {54,4,28}, {55,7,28}, {56,6,28}, {56,8,28}, {57,7,28}, {58,8,28}, {2,1,29}, {2,2,30}, {2,3,31}, {27,3,32}, {28,2,32}, {29,1,32}, {31,1,32}, {28,1,33}, {29,2,33}, {30,3,33}, {27,1,34}, {29,3,34}, {30,2,34}, {31,3,34}, {27,13,35}, {27,15,35}, {28,12,35}, {28,14,35}, {29,11,35}, {30,10,35}, {31,9,35}, {31,11,35}, {27,10,36}, {28,11,36}, {29,12,36}, {30,13,36}, {31,14,36}, {27,9,37}, {27,11,37}, {28,10,37}, {29,13,37}, {30,12,37}, {30,14,37}, {31,13,37}, {31,15,37}, {87,15,38}, {88,14,38}, {89,13,38}, {89,15,38}, {90,12,38}, {90,14,38}, {91,11,38}, {92,10,38}, {93,9,38}, {93,11,38}, {94,10,38}, {95,9,38}, {88,9,39}, {89,10,39}, {90,11,39}, {91,12,39}, {92,13,39}, {93,14,39}, {94,15,39}, {87,9,40}, {88,10,40}, {89,9,40}, {89,11,40}, {90,10,40}, {91,13,40}, {92,12,40}, {92,14,40}, {93,13,40}, {93,15,40}, {94,14,40}, {95,15,40}, {32,3,41}, {33,2,41}, {34,1,41}, {36,1,41}, {33,1,42}, {34,2,42}, {35,3,42}, {32,1,43}, {34,3,43}, {35,2,43}, {36,3,43}, {32,13,44}, {32,15,44}, {33,12,44}, {33,14,44}, {34,11,44}, {35,10,44}, {36,9,44}, {36,11,44}, {32,10,45}, {33,11,45}, {34,12,45}, {35,13,45}, {36,14,45}, {32,9,46}, {32,11,46}, {33,10,46}, {34,13,46}, {35,12,46}, {35,14,46}, {36,13,46}, {36,15,46}, {96,15,47}, {97,14,47}, {98,13,47}, {98,15,47}, {99,12,47}, {99,14,47}, {100,11,47}, {101,10,47}, {102,9,47}, {102,11,47}, {103,10,47}, {104,9,47}, {97,9,48}, {98,10,48}, {99,11,48}, {100,12,48}, {101,13,48}, {102,14,48}, {103,15,48}, {96,9,49}, {97,10,49}, {98,9,49}, {98,11,49}, {99,10,49}, {100,13,49}, {101,12,49}, {101,14,49}, {102,13,49}, {102,15,49}, {103,14,49}, {104,15,49}, {11,0,50}, {12,0,51}, {13,0,52}, {11,6,53}, {11,8,53}, {12,5,53}, {13,4,53}, {11,5,54}, {12,6,54}, {13,7,54}, {11,4,55}, {12,7,55}, {13,6,55}, {13,8,55}, {66,8,56}, {67,7,56}, {68,6,56}, {68,8,56}, {69,5,56}, {70,4,56}, {71,5,56}, {72,4,56}, {67,4,57}, {68,5,57}, {69,6,57}, {70,7,57}, {71,8,57}, {66,4,58}, {67,5,58}, {68,4,58}, {69,7,58}, {70,6,58}, {70,8,58}, {71,7,58}, {72,8,58}, {66,22,59}, {66,24,59}, {67,21,59}, {67,23,59}, {68,20,59}, {68,22,59}, {69,19,59}, {70,18,59}, {71,17,59}, {71,19,59}, {72,16,59}, {72,18,59}, {66,17,60}, {67,18,60}, {68,19,60}, {69,20,60}, {70,21,60}, {71,22,60}, {72,23,60}, {66,16,61}, {66,18,61}, {67,17,61}, {67,19,61}, {68,18,61}, {69,21,61}, {70,20,61}, {70,22,61}, {71,21,61}, {71,23,61}, {72,22,61}, {72,24,61}, {3,1,62}, {3,2,63}, {3,3,64}, {37,3,65}, {38,2,65}, {39,1,65}, {41,1,65}, {38,1,66}, {39,2,66}, {40,3,66}, {37,1,67}, {39,3,67}, {40,2,67}, {41,3,67}, {37,13,68}, {37,15,68}, {38,12,68}, {38,14,68}, {39,11,68}, {40,10,68}, {41,9,68}, {41,11,68}, {37,10,69}, {38,11,69}, {39,12,69}, {40,13,69}, {41,14,69}, {37,9,70}, {37,11,70}, {38,10,70}, {39,13,70}, {40,12,70}, {40,14,70}, {41,13,70}, {41,15,70}, {73,22,71}, {73,24,71}, {74,21,71}, {74,23,71}, {75,20,71}, {75,22,71}, {76,19,71}, {77,18,71}, {78,17,71}, {78,19,71}, {79,16,71}, {79,18,71}, {73,17,72}, {74,18,72}, {75,19,72}, {76,20,72}, {77,21,72}, {78,22,72}, {79,23,72}, {73,16,73}, {73,18,73}, {74,17,73}, {74,19,73}, {75,18,73}, {76,21,73}, {77,20,73}, {77,22,73}, {78,21,73}, {78,23,73}, {79,22,73}, {79,24,73}, {42,3,74}, {43,2,74}, {44,1,74}, {46,1,74}, {43,1,75}, {44,2,75}, {45,3,75}, {42,1,76}, {44,3,76}, {45,2,76}, {46,3,76}, {42,13,77}, {42,15,77}, {43,12,77}, {43,14,77}, {44,11,77}, {45,10,77}, {46,9,77}, {46,11,77}, {42,10,78}, {43,11,78}, {44,12,78}, {45,13,78}, {46,14,78}, {42,9,79}, {42,11,79}, {43,10,79}, {44,13,79}, {45,12,79}, {45,14,79}, {46,13,79}, {46,15,79}, {123,15,80}, {124,14,80}, {125,13,80}, {125,15,80}, {126,12,80}, {126,14,80}, {127,11,80}, {128,10,80}, {129,9,80}, {129,11,80}, {130,10,80}, {131,9,80}, {124,9,81}, {125,10,81}, {126,11,81}, {127,12,81}, {128,13,81}, {129,14,81}, {130,15,81}, {123,9,82}, {124,10,82}, {125,9,82}, {125,11,82}, {126,10,82}, {127,13,82}, {128,12,82}, {128,14,82}, {129,13,82}, {129,15,82}, {130,14,82}, {131,15,82}, {14,0,83}, {15,0,84}, {16,0,85}, {14,6,86}, {14,8,86}, {15,5,86}, {16,4,86}, {14,5,87}, {15,6,87}, {16,7,87}, {14,4,88}, {15,7,88}, {16,6,88}, {16,8,88}, {80,8,89}, {81,7,89}, {82,6,89}, {82,8,89}, {83,5,89}, {84,4,89}, {85,5,89}, {86,4,89}, {81,4,90}, {82,5,90}, {83,6,90}, {84,7,90}, {85,8,90}, {80,4,91}, {81,5,91}, {82,4,91}, {83,7,91}, {84,6,91}, {84,8,91}, {85,7,91}, {86,8,91}, {80,22,92}, {80,24,92}, {81,21,92}, {81,23,92}, {82,20,92}, {82,22,92}, {83,19,92}, {84,18,92}, {85,17,92}, {85,19,92}, {86,16,92}, {86,18,92}, {80,17,93}, {81,18,93}, {82,19,93}, {83,20,93}, {84,21,93}, {85,22,93}, {86,23,93}, {80,16,94}, {80,18,94}, {81,17,94}, {81,19,94}, {82,18,94}, {83,21,94}, {84,20,94}, {84,22,94}, {85,21,94}, {85,23,94}, {86,22,94}, {86,24,94}, {4,1,95}, {4,2,96}, {4,3,97}, {47,3,98}, {48,2,98}, {49,1,98}, {51,1,98}, {48,1,99}, {49,2,99}, {50,3,99}, {47,1,100}, {49,3,100}, {50,2,100}, {51,3,100}, {47,13,101}, {47,15,101}, {48,12,101}, {48,14,101}, {49,11,101}, {50,10,101}, {51,9,101}, {51,11,101}, {47,10,102}, {48,11,102}, {49,12,102}, {50,13,102}, {51,14,102}, {47,9,103}, {47,11,103}, {48,10,103}, {49,13,103}, {50,12,103}, {50,14,103}, {51,13,103}, {51,15,103}, {132,15,104}, {133,14,104}, {134,13,104}, {134,15,104}, {135,12,104}, {135,14,104}, {136,11,104}, {137,10,104}, {138,9,104}, {138,11,104}, {139,10,104}, {140,9,104}, {133,9,105}, {134,10,105}, {135,11,105}, {136,12,105}, {137,13,105}, {138,14,105}, {139,15,105}, {132,9,106}, {133,10,106}, {134,9,106}, {134,11,106}, {135,10,106}, {136,13,106}, {137,12,106}, {137,14,106}, {138,13,106}, {138,15,106}, {139,14,106}, {140,15,106}}; + static constexpr double cg[547] = {1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, -0.03857583749052297, -0.20412414523193143, -0.06681531047810609, -0.17677669529663684, -0.13363062095621217, -0.14940357616679917, 0.17251638983558854, 0.14940357616679917, 0.17677669529663684, 0.06681531047810609, 0.20412414523193143, 0.03857583749052297, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, -0.03857583749052297, 0.17677669529663684, -0.06681531047810609, 0.14940357616679917, 0.17251638983558854, -0.13363062095621217, 0.14940357616679917, -0.06681531047810609, 0.17677669529663684, -0.03857583749052297, 0.20412414523193143, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, -0.03857583749052297, -0.20412414523193143, -0.06681531047810609, -0.17677669529663684, -0.13363062095621217, -0.14940357616679917, 0.17251638983558854, 0.14940357616679917, 0.17677669529663684, 0.06681531047810609, 0.20412414523193143, 0.03857583749052297, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, -0.03857583749052297, 0.17677669529663684, -0.06681531047810609, 0.14940357616679917, 0.17251638983558854, -0.13363062095621217, 0.14940357616679917, -0.06681531047810609, 0.17677669529663684, -0.03857583749052297, 0.20412414523193143, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, -0.03857583749052297, -0.20412414523193143, -0.06681531047810609, -0.17677669529663684, -0.13363062095621217, -0.14940357616679917, 0.17251638983558854, 0.14940357616679917, 0.17677669529663684, 0.06681531047810609, 0.20412414523193143, 0.03857583749052297, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, -0.03857583749052297, 0.17677669529663684, -0.06681531047810609, 0.14940357616679917, 0.17251638983558854, -0.13363062095621217, 0.14940357616679917, -0.06681531047810609, 0.17677669529663684, -0.03857583749052297, 0.20412414523193143, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a4 = L(ii, k, 4); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a13 = L(ii, k, 13); + const float a14 = L(ii, k, 14); + const float a15 = L(ii, k, 15); + const float a16 = L(ii, k, 16); + const float a27 = L(ii, k, 27); + const float a28 = L(ii, k, 28); + const float a29 = L(ii, k, 29); + const float a30 = L(ii, k, 30); + const float a31 = L(ii, k, 31); + const float a32 = L(ii, k, 32); + const float a33 = L(ii, k, 33); + const float a34 = L(ii, k, 34); + const float a35 = L(ii, k, 35); + const float a36 = L(ii, k, 36); + const float a37 = L(ii, k, 37); + const float a38 = L(ii, k, 38); + const float a39 = L(ii, k, 39); + const float a40 = L(ii, k, 40); + const float a41 = L(ii, k, 41); + const float a42 = L(ii, k, 42); + const float a43 = L(ii, k, 43); + const float a44 = L(ii, k, 44); + const float a45 = L(ii, k, 45); + const float a46 = L(ii, k, 46); + const float a47 = L(ii, k, 47); + const float a48 = L(ii, k, 48); + const float a49 = L(ii, k, 49); + const float a50 = L(ii, k, 50); + const float a51 = L(ii, k, 51); + const float a52 = L(ii, k, 52); + const float a53 = L(ii, k, 53); + const float a54 = L(ii, k, 54); + const float a55 = L(ii, k, 55); + const float a56 = L(ii, k, 56); + const float a57 = L(ii, k, 57); + const float a58 = L(ii, k, 58); + const float a66 = L(ii, k, 66); + const float a67 = L(ii, k, 67); + const float a68 = L(ii, k, 68); + const float a69 = L(ii, k, 69); + const float a70 = L(ii, k, 70); + const float a71 = L(ii, k, 71); + const float a72 = L(ii, k, 72); + const float a73 = L(ii, k, 73); + const float a74 = L(ii, k, 74); + const float a75 = L(ii, k, 75); + const float a76 = L(ii, k, 76); + const float a77 = L(ii, k, 77); + const float a78 = L(ii, k, 78); + const float a79 = L(ii, k, 79); + const float a80 = L(ii, k, 80); + const float a81 = L(ii, k, 81); + const float a82 = L(ii, k, 82); + const float a83 = L(ii, k, 83); + const float a84 = L(ii, k, 84); + const float a85 = L(ii, k, 85); + const float a86 = L(ii, k, 86); + const float a87 = L(ii, k, 87); + const float a88 = L(ii, k, 88); + const float a89 = L(ii, k, 89); + const float a90 = L(ii, k, 90); + const float a91 = L(ii, k, 91); + const float a92 = L(ii, k, 92); + const float a93 = L(ii, k, 93); + const float a94 = L(ii, k, 94); + const float a95 = L(ii, k, 95); + const float a96 = L(ii, k, 96); + const float a97 = L(ii, k, 97); + const float a98 = L(ii, k, 98); + const float a99 = L(ii, k, 99); + const float a100 = L(ii, k, 100); + const float a101 = L(ii, k, 101); + const float a102 = L(ii, k, 102); + const float a103 = L(ii, k, 103); + const float a104 = L(ii, k, 104); + const float a123 = L(ii, k, 123); + const float a124 = L(ii, k, 124); + const float a125 = L(ii, k, 125); + const float a126 = L(ii, k, 126); + const float a127 = L(ii, k, 127); + const float a128 = L(ii, k, 128); + const float a129 = L(ii, k, 129); + const float a130 = L(ii, k, 130); + const float a131 = L(ii, k, 131); + const float a132 = L(ii, k, 132); + const float a133 = L(ii, k, 133); + const float a134 = L(ii, k, 134); + const float a135 = L(ii, k, 135); + const float a136 = L(ii, k, 136); + const float a137 = L(ii, k, 137); + const float a138 = L(ii, k, 138); + const float a139 = L(ii, k, 139); + const float a140 = L(ii, k, 140); + const float b0 = R(ii, k, 0); + const float b1 = R(ii, k, 1); + const float b2 = R(ii, k, 2); + const float b3 = R(ii, k, 3); + const float b4 = R(ii, k, 4); + const float b5 = R(ii, k, 5); + const float b6 = R(ii, k, 6); + const float b7 = R(ii, k, 7); + const float b8 = R(ii, k, 8); + const float b9 = R(ii, k, 9); + const float b10 = R(ii, k, 10); + const float b11 = R(ii, k, 11); + const float b12 = R(ii, k, 12); + const float b13 = R(ii, k, 13); + const float b14 = R(ii, k, 14); + const float b15 = R(ii, k, 15); + const float b16 = R(ii, k, 16); + const float b17 = R(ii, k, 17); + const float b18 = R(ii, k, 18); + const float b19 = R(ii, k, 19); + const float b20 = R(ii, k, 20); + const float b21 = R(ii, k, 21); + const float b22 = R(ii, k, 22); + const float b23 = R(ii, k, 23); + const float b24 = R(ii, k, 24); + out(ii, k, 0) = 1.0f * a0 * b0; + out(ii, k, 1) = 1.0f * a1 * b0; + out(ii, k, 2) = 0.3333333432674408f * a8 * b1 + 0.3333333432674408f * a9 * b2 + 0.3333333432674408f * a10 * b3; + out(ii, k, 3) = 1.0f * a2 * b0; + out(ii, k, 4) = 0.20000000298023224f * a27 * b4 + 0.20000000298023224f * a28 * b5 + 0.20000000298023224f * a29 * b6 + 0.20000000298023224f * a30 * b7 + 0.20000000298023224f * a31 * b8; + out(ii, k, 5) = 0.3333333432674408f * a11 * b1 + 0.3333333432674408f * a12 * b2 + 0.3333333432674408f * a13 * b3; + out(ii, k, 6) = 1.0f * a3 * b0; + out(ii, k, 7) = 0.20000000298023224f * a37 * b4 + 0.20000000298023224f * a38 * b5 + 0.20000000298023224f * a39 * b6 + 0.20000000298023224f * a40 * b7 + 0.20000000298023224f * a41 * b8; + out(ii, k, 8) = 0.20000000298023224f * a42 * b4 + 0.20000000298023224f * a43 * b5 + 0.20000000298023224f * a44 * b6 + 0.20000000298023224f * a45 * b7 + 0.20000000298023224f * a46 * b8; + out(ii, k, 9) = 0.3333333432674408f * a14 * b1 + 0.3333333432674408f * a15 * b2 + 0.3333333432674408f * a16 * b3; + out(ii, k, 10) = 0.1428571492433548f * a80 * b9 + 0.1428571492433548f * a81 * b10 + 0.1428571492433548f * a82 * b11 + 0.1428571492433548f * a83 * b12 + 0.1428571492433548f * a84 * b13 + 0.1428571492433548f * a85 * b14 + 0.1428571492433548f * a86 * b15; + out(ii, k, 11) = 1.0f * a4 * b0; + out(ii, k, 12) = 0.20000000298023224f * a47 * b4 + 0.20000000298023224f * a48 * b5 + 0.20000000298023224f * a49 * b6 + 0.20000000298023224f * a50 * b7 + 0.20000000298023224f * a51 * b8; + out(ii, k, 13) = 0.1111111119389534f * a132 * b16 + 0.1111111119389534f * a133 * b17 + 0.1111111119389534f * a134 * b18 + 0.1111111119389534f * a135 * b19 + 0.1111111119389534f * a136 * b20 + 0.1111111119389534f * a137 * b21 + 0.1111111119389534f * a138 * b22 + 0.1111111119389534f * a139 * b23 + 0.1111111119389534f * a140 * b24; + out(ii, k, 14) = 1.0f * a0 * b1; + out(ii, k, 15) = 1.0f * a0 * b2; + out(ii, k, 16) = 1.0f * a0 * b3; + out(ii, k, 17) = 1.0f * a1 * b1; + out(ii, k, 18) = 1.0f * a1 * b2; + out(ii, k, 19) = 1.0f * a1 * b3; + out(ii, k, 20) = 1.0f * a8 * b0; + out(ii, k, 21) = 1.0f * a9 * b0; + out(ii, k, 22) = 1.0f * a10 * b0; + out(ii, k, 23) = -0.22360679507255554f * a8 * b6 + -0.3872983455657959f * a8 * b8 + 0.3872983455657959f * a9 * b5 + 0.3872983455657959f * a10 * b4; + out(ii, k, 24) = 0.3872983455657959f * a8 * b5 + 0.4472135901451111f * a9 * b6 + 0.3872983455657959f * a10 * b7; + out(ii, k, 25) = 0.3872983455657959f * a8 * b4 + 0.3872983455657959f * a9 * b7 + -0.22360679507255554f * a10 * b6 + 0.3872983455657959f * a10 * b8; + out(ii, k, 26) = 0.26726123690605164f * a52 * b8 + 0.2182178944349289f * a53 * b7 + 0.23904572427272797f * a54 * b6 + 0.0690065547823906f * a54 * b8 + -0.16903084516525269f * a55 * b5 + -0.0690065547823906f * a56 * b4 + -0.2182178944349289f * a57 * b5 + -0.26726123690605164f * a58 * b4; + out(ii, k, 27) = 0.2182178944349289f * a53 * b4 + 0.2760262191295624f * a54 * b5 + 0.29277002811431885f * a55 * b6 + 0.2760262191295624f * a56 * b7 + 0.2182178944349289f * a57 * b8; + out(ii, k, 28) = 0.26726123690605164f * a52 * b4 + 0.2182178944349289f * a53 * b5 + -0.0690065547823906f * a54 * b4 + -0.16903084516525269f * a55 * b7 + 0.23904572427272797f * a56 * b6 + -0.0690065547823906f * a56 * b8 + 0.2182178944349289f * a57 * b7 + 0.26726123690605164f * a58 * b8; + out(ii, k, 29) = 1.0f * a2 * b1; + out(ii, k, 30) = 1.0f * a2 * b2; + out(ii, k, 31) = 1.0f * a2 * b3; + out(ii, k, 32) = 0.3872983455657959f * a27 * b3 + 0.3872983455657959f * a28 * b2 + -0.22360679507255554f * a29 * b1 + -0.3872983455657959f * a31 * b1; + out(ii, k, 33) = 0.3872983455657959f * a28 * b1 + 0.4472135901451111f * a29 * b2 + 0.3872983455657959f * a30 * b3; + out(ii, k, 34) = 0.3872983455657959f * a27 * b1 + -0.22360679507255554f * a29 * b3 + 0.3872983455657959f * a30 * b2 + 0.3872983455657959f * a31 * b3; + out(ii, k, 35) = -0.0690065547823906f * a27 * b13 + -0.26726123690605164f * a27 * b15 + -0.16903084516525269f * a28 * b12 + -0.2182178944349289f * a28 * b14 + 0.23904572427272797f * a29 * b11 + 0.2182178944349289f * a30 * b10 + 0.26726123690605164f * a31 * b9 + 0.0690065547823906f * a31 * b11; + out(ii, k, 36) = 0.2182178944349289f * a27 * b10 + 0.2760262191295624f * a28 * b11 + 0.29277002811431885f * a29 * b12 + 0.2760262191295624f * a30 * b13 + 0.2182178944349289f * a31 * b14; + out(ii, k, 37) = 0.26726123690605164f * a27 * b9 + -0.0690065547823906f * a27 * b11 + 0.2182178944349289f * a28 * b10 + 0.23904572427272797f * a29 * b13 + -0.16903084516525269f * a30 * b12 + 0.2182178944349289f * a30 * b14 + -0.0690065547823906f * a31 * b13 + 0.26726123690605164f * a31 * b15; + out(ii, k, 38) = 0.20412415266036987f * a87 * b15 + 0.1767766922712326f * a88 * b14 + 0.14940357208251953f * a89 * b13 + 0.03857583925127983f * a89 * b15 + 0.17251639068126678f * a90 * b12 + 0.06681530922651291f * a90 * b14 + -0.13363061845302582f * a91 * b11 + -0.06681530922651291f * a92 * b10 + -0.03857583925127983f * a93 * b9 + -0.14940357208251953f * a93 * b11 + -0.1767766922712326f * a94 * b10 + -0.20412415266036987f * a95 * b9; + out(ii, k, 39) = 0.14433756470680237f * a88 * b9 + 0.18898223340511322f * a89 * b10 + 0.21128855645656586f * a90 * b11 + 0.2182178944349289f * a91 * b12 + 0.21128855645656586f * a92 * b13 + 0.18898223340511322f * a93 * b14 + 0.14433756470680237f * a94 * b15; + out(ii, k, 40) = 0.20412415266036987f * a87 * b9 + 0.1767766922712326f * a88 * b10 + -0.03857583925127983f * a89 * b9 + 0.14940357208251953f * a89 * b11 + -0.06681530922651291f * a90 * b10 + -0.13363061845302582f * a91 * b13 + 0.17251639068126678f * a92 * b12 + -0.06681530922651291f * a92 * b14 + 0.14940357208251953f * a93 * b13 + -0.03857583925127983f * a93 * b15 + 0.1767766922712326f * a94 * b14 + 0.20412415266036987f * a95 * b15; + out(ii, k, 41) = 0.3872983455657959f * a32 * b3 + 0.3872983455657959f * a33 * b2 + -0.22360679507255554f * a34 * b1 + -0.3872983455657959f * a36 * b1; + out(ii, k, 42) = 0.3872983455657959f * a33 * b1 + 0.4472135901451111f * a34 * b2 + 0.3872983455657959f * a35 * b3; + out(ii, k, 43) = 0.3872983455657959f * a32 * b1 + -0.22360679507255554f * a34 * b3 + 0.3872983455657959f * a35 * b2 + 0.3872983455657959f * a36 * b3; + out(ii, k, 44) = -0.0690065547823906f * a32 * b13 + -0.26726123690605164f * a32 * b15 + -0.16903084516525269f * a33 * b12 + -0.2182178944349289f * a33 * b14 + 0.23904572427272797f * a34 * b11 + 0.2182178944349289f * a35 * b10 + 0.26726123690605164f * a36 * b9 + 0.0690065547823906f * a36 * b11; + out(ii, k, 45) = 0.2182178944349289f * a32 * b10 + 0.2760262191295624f * a33 * b11 + 0.29277002811431885f * a34 * b12 + 0.2760262191295624f * a35 * b13 + 0.2182178944349289f * a36 * b14; + out(ii, k, 46) = 0.26726123690605164f * a32 * b9 + -0.0690065547823906f * a32 * b11 + 0.2182178944349289f * a33 * b10 + 0.23904572427272797f * a34 * b13 + -0.16903084516525269f * a35 * b12 + 0.2182178944349289f * a35 * b14 + -0.0690065547823906f * a36 * b13 + 0.26726123690605164f * a36 * b15; + out(ii, k, 47) = 0.20412415266036987f * a96 * b15 + 0.1767766922712326f * a97 * b14 + 0.14940357208251953f * a98 * b13 + 0.03857583925127983f * a98 * b15 + 0.17251639068126678f * a99 * b12 + 0.06681530922651291f * a99 * b14 + -0.13363061845302582f * a100 * b11 + -0.06681530922651291f * a101 * b10 + -0.03857583925127983f * a102 * b9 + -0.14940357208251953f * a102 * b11 + -0.1767766922712326f * a103 * b10 + -0.20412415266036987f * a104 * b9; + out(ii, k, 48) = 0.14433756470680237f * a97 * b9 + 0.18898223340511322f * a98 * b10 + 0.21128855645656586f * a99 * b11 + 0.2182178944349289f * a100 * b12 + 0.21128855645656586f * a101 * b13 + 0.18898223340511322f * a102 * b14 + 0.14433756470680237f * a103 * b15; + out(ii, k, 49) = 0.20412415266036987f * a96 * b9 + 0.1767766922712326f * a97 * b10 + -0.03857583925127983f * a98 * b9 + 0.14940357208251953f * a98 * b11 + -0.06681530922651291f * a99 * b10 + -0.13363061845302582f * a100 * b13 + 0.17251639068126678f * a101 * b12 + -0.06681530922651291f * a101 * b14 + 0.14940357208251953f * a102 * b13 + -0.03857583925127983f * a102 * b15 + 0.1767766922712326f * a103 * b14 + 0.20412415266036987f * a104 * b15; + out(ii, k, 50) = 1.0f * a11 * b0; + out(ii, k, 51) = 1.0f * a12 * b0; + out(ii, k, 52) = 1.0f * a13 * b0; + out(ii, k, 53) = -0.22360679507255554f * a11 * b6 + -0.3872983455657959f * a11 * b8 + 0.3872983455657959f * a12 * b5 + 0.3872983455657959f * a13 * b4; + out(ii, k, 54) = 0.3872983455657959f * a11 * b5 + 0.4472135901451111f * a12 * b6 + 0.3872983455657959f * a13 * b7; + out(ii, k, 55) = 0.3872983455657959f * a11 * b4 + 0.3872983455657959f * a12 * b7 + -0.22360679507255554f * a13 * b6 + 0.3872983455657959f * a13 * b8; + out(ii, k, 56) = 0.26726123690605164f * a66 * b8 + 0.2182178944349289f * a67 * b7 + 0.23904572427272797f * a68 * b6 + 0.0690065547823906f * a68 * b8 + -0.16903084516525269f * a69 * b5 + -0.0690065547823906f * a70 * b4 + -0.2182178944349289f * a71 * b5 + -0.26726123690605164f * a72 * b4; + out(ii, k, 57) = 0.2182178944349289f * a67 * b4 + 0.2760262191295624f * a68 * b5 + 0.29277002811431885f * a69 * b6 + 0.2760262191295624f * a70 * b7 + 0.2182178944349289f * a71 * b8; + out(ii, k, 58) = 0.26726123690605164f * a66 * b4 + 0.2182178944349289f * a67 * b5 + -0.0690065547823906f * a68 * b4 + -0.16903084516525269f * a69 * b7 + 0.23904572427272797f * a70 * b6 + -0.0690065547823906f * a70 * b8 + 0.2182178944349289f * a71 * b7 + 0.26726123690605164f * a72 * b8; + out(ii, k, 59) = -0.03857583925127983f * a66 * b22 + -0.20412415266036987f * a66 * b24 + -0.06681530922651291f * a67 * b21 + -0.1767766922712326f * a67 * b23 + -0.13363061845302582f * a68 * b20 + -0.14940357208251953f * a68 * b22 + 0.17251639068126678f * a69 * b19 + 0.14940357208251953f * a70 * b18 + 0.1767766922712326f * a71 * b17 + 0.06681530922651291f * a71 * b19 + 0.20412415266036987f * a72 * b16 + 0.03857583925127983f * a72 * b18; + out(ii, k, 60) = 0.14433756470680237f * a66 * b17 + 0.18898223340511322f * a67 * b18 + 0.21128855645656586f * a68 * b19 + 0.2182178944349289f * a69 * b20 + 0.21128855645656586f * a70 * b21 + 0.18898223340511322f * a71 * b22 + 0.14433756470680237f * a72 * b23; + out(ii, k, 61) = 0.20412415266036987f * a66 * b16 + -0.03857583925127983f * a66 * b18 + 0.1767766922712326f * a67 * b17 + -0.06681530922651291f * a67 * b19 + 0.14940357208251953f * a68 * b18 + 0.17251639068126678f * a69 * b21 + -0.13363061845302582f * a70 * b20 + 0.14940357208251953f * a70 * b22 + -0.06681530922651291f * a71 * b21 + 0.1767766922712326f * a71 * b23 + -0.03857583925127983f * a72 * b22 + 0.20412415266036987f * a72 * b24; + out(ii, k, 62) = 1.0f * a3 * b1; + out(ii, k, 63) = 1.0f * a3 * b2; + out(ii, k, 64) = 1.0f * a3 * b3; + out(ii, k, 65) = 0.3872983455657959f * a37 * b3 + 0.3872983455657959f * a38 * b2 + -0.22360679507255554f * a39 * b1 + -0.3872983455657959f * a41 * b1; + out(ii, k, 66) = 0.3872983455657959f * a38 * b1 + 0.4472135901451111f * a39 * b2 + 0.3872983455657959f * a40 * b3; + out(ii, k, 67) = 0.3872983455657959f * a37 * b1 + -0.22360679507255554f * a39 * b3 + 0.3872983455657959f * a40 * b2 + 0.3872983455657959f * a41 * b3; + out(ii, k, 68) = -0.0690065547823906f * a37 * b13 + -0.26726123690605164f * a37 * b15 + -0.16903084516525269f * a38 * b12 + -0.2182178944349289f * a38 * b14 + 0.23904572427272797f * a39 * b11 + 0.2182178944349289f * a40 * b10 + 0.26726123690605164f * a41 * b9 + 0.0690065547823906f * a41 * b11; + out(ii, k, 69) = 0.2182178944349289f * a37 * b10 + 0.2760262191295624f * a38 * b11 + 0.29277002811431885f * a39 * b12 + 0.2760262191295624f * a40 * b13 + 0.2182178944349289f * a41 * b14; + out(ii, k, 70) = 0.26726123690605164f * a37 * b9 + -0.0690065547823906f * a37 * b11 + 0.2182178944349289f * a38 * b10 + 0.23904572427272797f * a39 * b13 + -0.16903084516525269f * a40 * b12 + 0.2182178944349289f * a40 * b14 + -0.0690065547823906f * a41 * b13 + 0.26726123690605164f * a41 * b15; + out(ii, k, 71) = -0.03857583925127983f * a73 * b22 + -0.20412415266036987f * a73 * b24 + -0.06681530922651291f * a74 * b21 + -0.1767766922712326f * a74 * b23 + -0.13363061845302582f * a75 * b20 + -0.14940357208251953f * a75 * b22 + 0.17251639068126678f * a76 * b19 + 0.14940357208251953f * a77 * b18 + 0.1767766922712326f * a78 * b17 + 0.06681530922651291f * a78 * b19 + 0.20412415266036987f * a79 * b16 + 0.03857583925127983f * a79 * b18; + out(ii, k, 72) = 0.14433756470680237f * a73 * b17 + 0.18898223340511322f * a74 * b18 + 0.21128855645656586f * a75 * b19 + 0.2182178944349289f * a76 * b20 + 0.21128855645656586f * a77 * b21 + 0.18898223340511322f * a78 * b22 + 0.14433756470680237f * a79 * b23; + out(ii, k, 73) = 0.20412415266036987f * a73 * b16 + -0.03857583925127983f * a73 * b18 + 0.1767766922712326f * a74 * b17 + -0.06681530922651291f * a74 * b19 + 0.14940357208251953f * a75 * b18 + 0.17251639068126678f * a76 * b21 + -0.13363061845302582f * a77 * b20 + 0.14940357208251953f * a77 * b22 + -0.06681530922651291f * a78 * b21 + 0.1767766922712326f * a78 * b23 + -0.03857583925127983f * a79 * b22 + 0.20412415266036987f * a79 * b24; + out(ii, k, 74) = 0.3872983455657959f * a42 * b3 + 0.3872983455657959f * a43 * b2 + -0.22360679507255554f * a44 * b1 + -0.3872983455657959f * a46 * b1; + out(ii, k, 75) = 0.3872983455657959f * a43 * b1 + 0.4472135901451111f * a44 * b2 + 0.3872983455657959f * a45 * b3; + out(ii, k, 76) = 0.3872983455657959f * a42 * b1 + -0.22360679507255554f * a44 * b3 + 0.3872983455657959f * a45 * b2 + 0.3872983455657959f * a46 * b3; + out(ii, k, 77) = -0.0690065547823906f * a42 * b13 + -0.26726123690605164f * a42 * b15 + -0.16903084516525269f * a43 * b12 + -0.2182178944349289f * a43 * b14 + 0.23904572427272797f * a44 * b11 + 0.2182178944349289f * a45 * b10 + 0.26726123690605164f * a46 * b9 + 0.0690065547823906f * a46 * b11; + out(ii, k, 78) = 0.2182178944349289f * a42 * b10 + 0.2760262191295624f * a43 * b11 + 0.29277002811431885f * a44 * b12 + 0.2760262191295624f * a45 * b13 + 0.2182178944349289f * a46 * b14; + out(ii, k, 79) = 0.26726123690605164f * a42 * b9 + -0.0690065547823906f * a42 * b11 + 0.2182178944349289f * a43 * b10 + 0.23904572427272797f * a44 * b13 + -0.16903084516525269f * a45 * b12 + 0.2182178944349289f * a45 * b14 + -0.0690065547823906f * a46 * b13 + 0.26726123690605164f * a46 * b15; + out(ii, k, 80) = 0.20412415266036987f * a123 * b15 + 0.1767766922712326f * a124 * b14 + 0.14940357208251953f * a125 * b13 + 0.03857583925127983f * a125 * b15 + 0.17251639068126678f * a126 * b12 + 0.06681530922651291f * a126 * b14 + -0.13363061845302582f * a127 * b11 + -0.06681530922651291f * a128 * b10 + -0.03857583925127983f * a129 * b9 + -0.14940357208251953f * a129 * b11 + -0.1767766922712326f * a130 * b10 + -0.20412415266036987f * a131 * b9; + out(ii, k, 81) = 0.14433756470680237f * a124 * b9 + 0.18898223340511322f * a125 * b10 + 0.21128855645656586f * a126 * b11 + 0.2182178944349289f * a127 * b12 + 0.21128855645656586f * a128 * b13 + 0.18898223340511322f * a129 * b14 + 0.14433756470680237f * a130 * b15; + out(ii, k, 82) = 0.20412415266036987f * a123 * b9 + 0.1767766922712326f * a124 * b10 + -0.03857583925127983f * a125 * b9 + 0.14940357208251953f * a125 * b11 + -0.06681530922651291f * a126 * b10 + -0.13363061845302582f * a127 * b13 + 0.17251639068126678f * a128 * b12 + -0.06681530922651291f * a128 * b14 + 0.14940357208251953f * a129 * b13 + -0.03857583925127983f * a129 * b15 + 0.1767766922712326f * a130 * b14 + 0.20412415266036987f * a131 * b15; + out(ii, k, 83) = 1.0f * a14 * b0; + out(ii, k, 84) = 1.0f * a15 * b0; + out(ii, k, 85) = 1.0f * a16 * b0; + out(ii, k, 86) = -0.22360679507255554f * a14 * b6 + -0.3872983455657959f * a14 * b8 + 0.3872983455657959f * a15 * b5 + 0.3872983455657959f * a16 * b4; + out(ii, k, 87) = 0.3872983455657959f * a14 * b5 + 0.4472135901451111f * a15 * b6 + 0.3872983455657959f * a16 * b7; + out(ii, k, 88) = 0.3872983455657959f * a14 * b4 + 0.3872983455657959f * a15 * b7 + -0.22360679507255554f * a16 * b6 + 0.3872983455657959f * a16 * b8; + out(ii, k, 89) = 0.26726123690605164f * a80 * b8 + 0.2182178944349289f * a81 * b7 + 0.23904572427272797f * a82 * b6 + 0.0690065547823906f * a82 * b8 + -0.16903084516525269f * a83 * b5 + -0.0690065547823906f * a84 * b4 + -0.2182178944349289f * a85 * b5 + -0.26726123690605164f * a86 * b4; + out(ii, k, 90) = 0.2182178944349289f * a81 * b4 + 0.2760262191295624f * a82 * b5 + 0.29277002811431885f * a83 * b6 + 0.2760262191295624f * a84 * b7 + 0.2182178944349289f * a85 * b8; + out(ii, k, 91) = 0.26726123690605164f * a80 * b4 + 0.2182178944349289f * a81 * b5 + -0.0690065547823906f * a82 * b4 + -0.16903084516525269f * a83 * b7 + 0.23904572427272797f * a84 * b6 + -0.0690065547823906f * a84 * b8 + 0.2182178944349289f * a85 * b7 + 0.26726123690605164f * a86 * b8; + out(ii, k, 92) = -0.03857583925127983f * a80 * b22 + -0.20412415266036987f * a80 * b24 + -0.06681530922651291f * a81 * b21 + -0.1767766922712326f * a81 * b23 + -0.13363061845302582f * a82 * b20 + -0.14940357208251953f * a82 * b22 + 0.17251639068126678f * a83 * b19 + 0.14940357208251953f * a84 * b18 + 0.1767766922712326f * a85 * b17 + 0.06681530922651291f * a85 * b19 + 0.20412415266036987f * a86 * b16 + 0.03857583925127983f * a86 * b18; + out(ii, k, 93) = 0.14433756470680237f * a80 * b17 + 0.18898223340511322f * a81 * b18 + 0.21128855645656586f * a82 * b19 + 0.2182178944349289f * a83 * b20 + 0.21128855645656586f * a84 * b21 + 0.18898223340511322f * a85 * b22 + 0.14433756470680237f * a86 * b23; + out(ii, k, 94) = 0.20412415266036987f * a80 * b16 + -0.03857583925127983f * a80 * b18 + 0.1767766922712326f * a81 * b17 + -0.06681530922651291f * a81 * b19 + 0.14940357208251953f * a82 * b18 + 0.17251639068126678f * a83 * b21 + -0.13363061845302582f * a84 * b20 + 0.14940357208251953f * a84 * b22 + -0.06681530922651291f * a85 * b21 + 0.1767766922712326f * a85 * b23 + -0.03857583925127983f * a86 * b22 + 0.20412415266036987f * a86 * b24; + out(ii, k, 95) = 1.0f * a4 * b1; + out(ii, k, 96) = 1.0f * a4 * b2; + out(ii, k, 97) = 1.0f * a4 * b3; + out(ii, k, 98) = 0.3872983455657959f * a47 * b3 + 0.3872983455657959f * a48 * b2 + -0.22360679507255554f * a49 * b1 + -0.3872983455657959f * a51 * b1; + out(ii, k, 99) = 0.3872983455657959f * a48 * b1 + 0.4472135901451111f * a49 * b2 + 0.3872983455657959f * a50 * b3; + out(ii, k, 100) = 0.3872983455657959f * a47 * b1 + -0.22360679507255554f * a49 * b3 + 0.3872983455657959f * a50 * b2 + 0.3872983455657959f * a51 * b3; + out(ii, k, 101) = -0.0690065547823906f * a47 * b13 + -0.26726123690605164f * a47 * b15 + -0.16903084516525269f * a48 * b12 + -0.2182178944349289f * a48 * b14 + 0.23904572427272797f * a49 * b11 + 0.2182178944349289f * a50 * b10 + 0.26726123690605164f * a51 * b9 + 0.0690065547823906f * a51 * b11; + out(ii, k, 102) = 0.2182178944349289f * a47 * b10 + 0.2760262191295624f * a48 * b11 + 0.29277002811431885f * a49 * b12 + 0.2760262191295624f * a50 * b13 + 0.2182178944349289f * a51 * b14; + out(ii, k, 103) = 0.26726123690605164f * a47 * b9 + -0.0690065547823906f * a47 * b11 + 0.2182178944349289f * a48 * b10 + 0.23904572427272797f * a49 * b13 + -0.16903084516525269f * a50 * b12 + 0.2182178944349289f * a50 * b14 + -0.0690065547823906f * a51 * b13 + 0.26726123690605164f * a51 * b15; + out(ii, k, 104) = 0.20412415266036987f * a132 * b15 + 0.1767766922712326f * a133 * b14 + 0.14940357208251953f * a134 * b13 + 0.03857583925127983f * a134 * b15 + 0.17251639068126678f * a135 * b12 + 0.06681530922651291f * a135 * b14 + -0.13363061845302582f * a136 * b11 + -0.06681530922651291f * a137 * b10 + -0.03857583925127983f * a138 * b9 + -0.14940357208251953f * a138 * b11 + -0.1767766922712326f * a139 * b10 + -0.20412415266036987f * a140 * b9; + out(ii, k, 105) = 0.14433756470680237f * a133 * b9 + 0.18898223340511322f * a134 * b10 + 0.21128855645656586f * a135 * b11 + 0.2182178944349289f * a136 * b12 + 0.21128855645656586f * a137 * b13 + 0.18898223340511322f * a138 * b14 + 0.14433756470680237f * a139 * b15; + out(ii, k, 106) = 0.20412415266036987f * a132 * b9 + 0.1767766922712326f * a133 * b10 + -0.03857583925127983f * a134 * b9 + 0.14940357208251953f * a134 * b11 + -0.06681530922651291f * a135 * b10 + -0.13363061845302582f * a136 * b13 + 0.17251639068126678f * a137 * b12 + -0.06681530922651291f * a137 * b14 + 0.14940357208251953f * a138 * b13 + -0.03857583925127983f * a138 * b15 + 0.1767766922712326f * a139 * b14 + 0.20412415266036987f * a140 * b15; + } + + template + KOKKOS_INLINE_FUNCTION static void rev(const V &L, const V &R, const V &D, const V &dL, + const V &dR, const int ii, const int k) + { + static_assert(!ACC, "mixed products assign dL"); + { + const float b0 = R(ii, k, 0); + const float b1 = R(ii, k, 1); + const float b2 = R(ii, k, 2); + const float b3 = R(ii, k, 3); + const float b4 = R(ii, k, 4); + const float b5 = R(ii, k, 5); + const float b6 = R(ii, k, 6); + const float b7 = R(ii, k, 7); + const float b8 = R(ii, k, 8); + const float b9 = R(ii, k, 9); + const float b10 = R(ii, k, 10); + const float b11 = R(ii, k, 11); + const float b12 = R(ii, k, 12); + const float b13 = R(ii, k, 13); + const float b14 = R(ii, k, 14); + const float b15 = R(ii, k, 15); + const float b16 = R(ii, k, 16); + const float b17 = R(ii, k, 17); + const float b18 = R(ii, k, 18); + const float b19 = R(ii, k, 19); + const float b20 = R(ii, k, 20); + const float b21 = R(ii, k, 21); + const float b22 = R(ii, k, 22); + const float b23 = R(ii, k, 23); + const float b24 = R(ii, k, 24); + { + float g0 = 0.0f; + float g1 = 0.0f; + float g2 = 0.0f; + float g3 = 0.0f; + float g4 = 0.0f; + float g5 = 0.0f; + float g6 = 0.0f; + float g7 = 0.0f; + float g8 = 0.0f; + float g9 = 0.0f; + float g10 = 0.0f; + float g11 = 0.0f; + float g12 = 0.0f; + float g13 = 0.0f; + float g14 = 0.0f; + float g15 = 0.0f; + float g16 = 0.0f; + float g17 = 0.0f; + float g18 = 0.0f; + float g19 = 0.0f; + float g20 = 0.0f; + float g21 = 0.0f; + float g22 = 0.0f; + float g23 = 0.0f; + float g24 = 0.0f; + float g25 = 0.0f; + float g26 = 0.0f; + float g27 = 0.0f; + float g28 = 0.0f; + float g29 = 0.0f; + float g30 = 0.0f; + float g31 = 0.0f; + float g32 = 0.0f; + float g33 = 0.0f; + float g34 = 0.0f; + float g35 = 0.0f; + float g36 = 0.0f; + float g37 = 0.0f; + float g38 = 0.0f; + float g39 = 0.0f; + float g40 = 0.0f; + float g41 = 0.0f; + float g42 = 0.0f; + float g43 = 0.0f; + float g44 = 0.0f; + float g45 = 0.0f; + float g46 = 0.0f; + float g47 = 0.0f; + float g48 = 0.0f; + float g49 = 0.0f; + float g50 = 0.0f; + float g51 = 0.0f; + float g52 = 0.0f; + float g53 = 0.0f; + float g54 = 0.0f; + float g55 = 0.0f; + float g56 = 0.0f; + float g57 = 0.0f; + float g58 = 0.0f; + float g59 = 0.0f; + float g60 = 0.0f; + float g61 = 0.0f; + float g62 = 0.0f; + float g63 = 0.0f; + float g64 = 0.0f; + float g65 = 0.0f; + float g66 = 0.0f; + float g67 = 0.0f; + float g68 = 0.0f; + float g69 = 0.0f; + float g70 = 0.0f; + float g71 = 0.0f; + float g72 = 0.0f; + float g73 = 0.0f; + float g74 = 0.0f; + float g75 = 0.0f; + float g76 = 0.0f; + float g77 = 0.0f; + float g78 = 0.0f; + float g79 = 0.0f; + float g80 = 0.0f; + float g81 = 0.0f; + float g82 = 0.0f; + float g83 = 0.0f; + float g84 = 0.0f; + float g85 = 0.0f; + float g86 = 0.0f; + float g87 = 0.0f; + float g88 = 0.0f; + float g89 = 0.0f; + float g90 = 0.0f; + float g91 = 0.0f; + float g92 = 0.0f; + float g93 = 0.0f; + float g94 = 0.0f; + float g95 = 0.0f; + float g96 = 0.0f; + float g97 = 0.0f; + float g98 = 0.0f; + float g99 = 0.0f; + float g100 = 0.0f; + float g101 = 0.0f; + float g102 = 0.0f; + float g103 = 0.0f; + float g104 = 0.0f; + float g105 = 0.0f; + float g106 = 0.0f; + float g107 = 0.0f; + float g108 = 0.0f; + float g109 = 0.0f; + float g110 = 0.0f; + float g111 = 0.0f; + float g112 = 0.0f; + float g113 = 0.0f; + float g114 = 0.0f; + float g115 = 0.0f; + float g116 = 0.0f; + float g117 = 0.0f; + float g118 = 0.0f; + float g119 = 0.0f; + float g120 = 0.0f; + float g121 = 0.0f; + float g122 = 0.0f; + float g123 = 0.0f; + float g124 = 0.0f; + float g125 = 0.0f; + float g126 = 0.0f; + float g127 = 0.0f; + float g128 = 0.0f; + float g129 = 0.0f; + float g130 = 0.0f; + float g131 = 0.0f; + float g132 = 0.0f; + float g133 = 0.0f; + float g134 = 0.0f; + float g135 = 0.0f; + float g136 = 0.0f; + float g137 = 0.0f; + float g138 = 0.0f; + float g139 = 0.0f; + float g140 = 0.0f; + { const float d = D(ii, k, 0); + g0 += 1.0f * d * b0; + } + { const float d = D(ii, k, 1); + g1 += 1.0f * d * b0; + } + { const float d = D(ii, k, 2); + g8 += 0.3333333432674408f * d * b1; + g9 += 0.3333333432674408f * d * b2; + g10 += 0.3333333432674408f * d * b3; + } + { const float d = D(ii, k, 3); + g2 += 1.0f * d * b0; + } + { const float d = D(ii, k, 4); + g27 += 0.20000000298023224f * d * b4; + g28 += 0.20000000298023224f * d * b5; + g29 += 0.20000000298023224f * d * b6; + g30 += 0.20000000298023224f * d * b7; + g31 += 0.20000000298023224f * d * b8; + } + { const float d = D(ii, k, 5); + g11 += 0.3333333432674408f * d * b1; + g12 += 0.3333333432674408f * d * b2; + g13 += 0.3333333432674408f * d * b3; + } + { const float d = D(ii, k, 6); + g3 += 1.0f * d * b0; + } + { const float d = D(ii, k, 7); + g37 += 0.20000000298023224f * d * b4; + g38 += 0.20000000298023224f * d * b5; + g39 += 0.20000000298023224f * d * b6; + g40 += 0.20000000298023224f * d * b7; + g41 += 0.20000000298023224f * d * b8; + } + { const float d = D(ii, k, 8); + g42 += 0.20000000298023224f * d * b4; + g43 += 0.20000000298023224f * d * b5; + g44 += 0.20000000298023224f * d * b6; + g45 += 0.20000000298023224f * d * b7; + g46 += 0.20000000298023224f * d * b8; + } + { const float d = D(ii, k, 9); + g14 += 0.3333333432674408f * d * b1; + g15 += 0.3333333432674408f * d * b2; + g16 += 0.3333333432674408f * d * b3; + } + { const float d = D(ii, k, 10); + g80 += 0.1428571492433548f * d * b9; + g81 += 0.1428571492433548f * d * b10; + g82 += 0.1428571492433548f * d * b11; + g83 += 0.1428571492433548f * d * b12; + g84 += 0.1428571492433548f * d * b13; + g85 += 0.1428571492433548f * d * b14; + g86 += 0.1428571492433548f * d * b15; + } + { const float d = D(ii, k, 11); + g4 += 1.0f * d * b0; + } + { const float d = D(ii, k, 12); + g47 += 0.20000000298023224f * d * b4; + g48 += 0.20000000298023224f * d * b5; + g49 += 0.20000000298023224f * d * b6; + g50 += 0.20000000298023224f * d * b7; + g51 += 0.20000000298023224f * d * b8; + } + { const float d = D(ii, k, 13); + g132 += 0.1111111119389534f * d * b16; + g133 += 0.1111111119389534f * d * b17; + g134 += 0.1111111119389534f * d * b18; + g135 += 0.1111111119389534f * d * b19; + g136 += 0.1111111119389534f * d * b20; + g137 += 0.1111111119389534f * d * b21; + g138 += 0.1111111119389534f * d * b22; + g139 += 0.1111111119389534f * d * b23; + g140 += 0.1111111119389534f * d * b24; + } + { const float d = D(ii, k, 14); + g0 += 1.0f * d * b1; + } + { const float d = D(ii, k, 15); + g0 += 1.0f * d * b2; + } + { const float d = D(ii, k, 16); + g0 += 1.0f * d * b3; + } + { const float d = D(ii, k, 17); + g1 += 1.0f * d * b1; + } + { const float d = D(ii, k, 18); + g1 += 1.0f * d * b2; + } + { const float d = D(ii, k, 19); + g1 += 1.0f * d * b3; + } + { const float d = D(ii, k, 20); + g8 += 1.0f * d * b0; + } + { const float d = D(ii, k, 21); + g9 += 1.0f * d * b0; + } + { const float d = D(ii, k, 22); + g10 += 1.0f * d * b0; + } + { const float d = D(ii, k, 23); + g8 += -0.22360679507255554f * d * b6; + g8 += -0.3872983455657959f * d * b8; + g9 += 0.3872983455657959f * d * b5; + g10 += 0.3872983455657959f * d * b4; + } + { const float d = D(ii, k, 24); + g8 += 0.3872983455657959f * d * b5; + g9 += 0.4472135901451111f * d * b6; + g10 += 0.3872983455657959f * d * b7; + } + { const float d = D(ii, k, 25); + g8 += 0.3872983455657959f * d * b4; + g9 += 0.3872983455657959f * d * b7; + g10 += -0.22360679507255554f * d * b6; + g10 += 0.3872983455657959f * d * b8; + } + { const float d = D(ii, k, 26); + g52 += 0.26726123690605164f * d * b8; + g53 += 0.2182178944349289f * d * b7; + g54 += 0.23904572427272797f * d * b6; + g54 += 0.0690065547823906f * d * b8; + g55 += -0.16903084516525269f * d * b5; + g56 += -0.0690065547823906f * d * b4; + g57 += -0.2182178944349289f * d * b5; + g58 += -0.26726123690605164f * d * b4; + } + { const float d = D(ii, k, 27); + g53 += 0.2182178944349289f * d * b4; + g54 += 0.2760262191295624f * d * b5; + g55 += 0.29277002811431885f * d * b6; + g56 += 0.2760262191295624f * d * b7; + g57 += 0.2182178944349289f * d * b8; + } + { const float d = D(ii, k, 28); + g52 += 0.26726123690605164f * d * b4; + g53 += 0.2182178944349289f * d * b5; + g54 += -0.0690065547823906f * d * b4; + g55 += -0.16903084516525269f * d * b7; + g56 += 0.23904572427272797f * d * b6; + g56 += -0.0690065547823906f * d * b8; + g57 += 0.2182178944349289f * d * b7; + g58 += 0.26726123690605164f * d * b8; + } + { const float d = D(ii, k, 29); + g2 += 1.0f * d * b1; + } + { const float d = D(ii, k, 30); + g2 += 1.0f * d * b2; + } + { const float d = D(ii, k, 31); + g2 += 1.0f * d * b3; + } + { const float d = D(ii, k, 32); + g27 += 0.3872983455657959f * d * b3; + g28 += 0.3872983455657959f * d * b2; + g29 += -0.22360679507255554f * d * b1; + g31 += -0.3872983455657959f * d * b1; + } + { const float d = D(ii, k, 33); + g28 += 0.3872983455657959f * d * b1; + g29 += 0.4472135901451111f * d * b2; + g30 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 34); + g27 += 0.3872983455657959f * d * b1; + g29 += -0.22360679507255554f * d * b3; + g30 += 0.3872983455657959f * d * b2; + g31 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 35); + g27 += -0.0690065547823906f * d * b13; + g27 += -0.26726123690605164f * d * b15; + g28 += -0.16903084516525269f * d * b12; + g28 += -0.2182178944349289f * d * b14; + g29 += 0.23904572427272797f * d * b11; + g30 += 0.2182178944349289f * d * b10; + g31 += 0.26726123690605164f * d * b9; + g31 += 0.0690065547823906f * d * b11; + } + { const float d = D(ii, k, 36); + g27 += 0.2182178944349289f * d * b10; + g28 += 0.2760262191295624f * d * b11; + g29 += 0.29277002811431885f * d * b12; + g30 += 0.2760262191295624f * d * b13; + g31 += 0.2182178944349289f * d * b14; + } + { const float d = D(ii, k, 37); + g27 += 0.26726123690605164f * d * b9; + g27 += -0.0690065547823906f * d * b11; + g28 += 0.2182178944349289f * d * b10; + g29 += 0.23904572427272797f * d * b13; + g30 += -0.16903084516525269f * d * b12; + g30 += 0.2182178944349289f * d * b14; + g31 += -0.0690065547823906f * d * b13; + g31 += 0.26726123690605164f * d * b15; + } + { const float d = D(ii, k, 38); + g87 += 0.20412415266036987f * d * b15; + g88 += 0.1767766922712326f * d * b14; + g89 += 0.14940357208251953f * d * b13; + g89 += 0.03857583925127983f * d * b15; + g90 += 0.17251639068126678f * d * b12; + g90 += 0.06681530922651291f * d * b14; + g91 += -0.13363061845302582f * d * b11; + g92 += -0.06681530922651291f * d * b10; + g93 += -0.03857583925127983f * d * b9; + g93 += -0.14940357208251953f * d * b11; + g94 += -0.1767766922712326f * d * b10; + g95 += -0.20412415266036987f * d * b9; + } + { const float d = D(ii, k, 39); + g88 += 0.14433756470680237f * d * b9; + g89 += 0.18898223340511322f * d * b10; + g90 += 0.21128855645656586f * d * b11; + g91 += 0.2182178944349289f * d * b12; + g92 += 0.21128855645656586f * d * b13; + g93 += 0.18898223340511322f * d * b14; + g94 += 0.14433756470680237f * d * b15; + } + { const float d = D(ii, k, 40); + g87 += 0.20412415266036987f * d * b9; + g88 += 0.1767766922712326f * d * b10; + g89 += -0.03857583925127983f * d * b9; + g89 += 0.14940357208251953f * d * b11; + g90 += -0.06681530922651291f * d * b10; + g91 += -0.13363061845302582f * d * b13; + g92 += 0.17251639068126678f * d * b12; + g92 += -0.06681530922651291f * d * b14; + g93 += 0.14940357208251953f * d * b13; + g93 += -0.03857583925127983f * d * b15; + g94 += 0.1767766922712326f * d * b14; + g95 += 0.20412415266036987f * d * b15; + } + { const float d = D(ii, k, 41); + g32 += 0.3872983455657959f * d * b3; + g33 += 0.3872983455657959f * d * b2; + g34 += -0.22360679507255554f * d * b1; + g36 += -0.3872983455657959f * d * b1; + } + { const float d = D(ii, k, 42); + g33 += 0.3872983455657959f * d * b1; + g34 += 0.4472135901451111f * d * b2; + g35 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 43); + g32 += 0.3872983455657959f * d * b1; + g34 += -0.22360679507255554f * d * b3; + g35 += 0.3872983455657959f * d * b2; + g36 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 44); + g32 += -0.0690065547823906f * d * b13; + g32 += -0.26726123690605164f * d * b15; + g33 += -0.16903084516525269f * d * b12; + g33 += -0.2182178944349289f * d * b14; + g34 += 0.23904572427272797f * d * b11; + g35 += 0.2182178944349289f * d * b10; + g36 += 0.26726123690605164f * d * b9; + g36 += 0.0690065547823906f * d * b11; + } + { const float d = D(ii, k, 45); + g32 += 0.2182178944349289f * d * b10; + g33 += 0.2760262191295624f * d * b11; + g34 += 0.29277002811431885f * d * b12; + g35 += 0.2760262191295624f * d * b13; + g36 += 0.2182178944349289f * d * b14; + } + { const float d = D(ii, k, 46); + g32 += 0.26726123690605164f * d * b9; + g32 += -0.0690065547823906f * d * b11; + g33 += 0.2182178944349289f * d * b10; + g34 += 0.23904572427272797f * d * b13; + g35 += -0.16903084516525269f * d * b12; + g35 += 0.2182178944349289f * d * b14; + g36 += -0.0690065547823906f * d * b13; + g36 += 0.26726123690605164f * d * b15; + } + { const float d = D(ii, k, 47); + g96 += 0.20412415266036987f * d * b15; + g97 += 0.1767766922712326f * d * b14; + g98 += 0.14940357208251953f * d * b13; + g98 += 0.03857583925127983f * d * b15; + g99 += 0.17251639068126678f * d * b12; + g99 += 0.06681530922651291f * d * b14; + g100 += -0.13363061845302582f * d * b11; + g101 += -0.06681530922651291f * d * b10; + g102 += -0.03857583925127983f * d * b9; + g102 += -0.14940357208251953f * d * b11; + g103 += -0.1767766922712326f * d * b10; + g104 += -0.20412415266036987f * d * b9; + } + { const float d = D(ii, k, 48); + g97 += 0.14433756470680237f * d * b9; + g98 += 0.18898223340511322f * d * b10; + g99 += 0.21128855645656586f * d * b11; + g100 += 0.2182178944349289f * d * b12; + g101 += 0.21128855645656586f * d * b13; + g102 += 0.18898223340511322f * d * b14; + g103 += 0.14433756470680237f * d * b15; + } + { const float d = D(ii, k, 49); + g96 += 0.20412415266036987f * d * b9; + g97 += 0.1767766922712326f * d * b10; + g98 += -0.03857583925127983f * d * b9; + g98 += 0.14940357208251953f * d * b11; + g99 += -0.06681530922651291f * d * b10; + g100 += -0.13363061845302582f * d * b13; + g101 += 0.17251639068126678f * d * b12; + g101 += -0.06681530922651291f * d * b14; + g102 += 0.14940357208251953f * d * b13; + g102 += -0.03857583925127983f * d * b15; + g103 += 0.1767766922712326f * d * b14; + g104 += 0.20412415266036987f * d * b15; + } + { const float d = D(ii, k, 50); + g11 += 1.0f * d * b0; + } + { const float d = D(ii, k, 51); + g12 += 1.0f * d * b0; + } + { const float d = D(ii, k, 52); + g13 += 1.0f * d * b0; + } + { const float d = D(ii, k, 53); + g11 += -0.22360679507255554f * d * b6; + g11 += -0.3872983455657959f * d * b8; + g12 += 0.3872983455657959f * d * b5; + g13 += 0.3872983455657959f * d * b4; + } + { const float d = D(ii, k, 54); + g11 += 0.3872983455657959f * d * b5; + g12 += 0.4472135901451111f * d * b6; + g13 += 0.3872983455657959f * d * b7; + } + { const float d = D(ii, k, 55); + g11 += 0.3872983455657959f * d * b4; + g12 += 0.3872983455657959f * d * b7; + g13 += -0.22360679507255554f * d * b6; + g13 += 0.3872983455657959f * d * b8; + } + { const float d = D(ii, k, 56); + g66 += 0.26726123690605164f * d * b8; + g67 += 0.2182178944349289f * d * b7; + g68 += 0.23904572427272797f * d * b6; + g68 += 0.0690065547823906f * d * b8; + g69 += -0.16903084516525269f * d * b5; + g70 += -0.0690065547823906f * d * b4; + g71 += -0.2182178944349289f * d * b5; + g72 += -0.26726123690605164f * d * b4; + } + { const float d = D(ii, k, 57); + g67 += 0.2182178944349289f * d * b4; + g68 += 0.2760262191295624f * d * b5; + g69 += 0.29277002811431885f * d * b6; + g70 += 0.2760262191295624f * d * b7; + g71 += 0.2182178944349289f * d * b8; + } + { const float d = D(ii, k, 58); + g66 += 0.26726123690605164f * d * b4; + g67 += 0.2182178944349289f * d * b5; + g68 += -0.0690065547823906f * d * b4; + g69 += -0.16903084516525269f * d * b7; + g70 += 0.23904572427272797f * d * b6; + g70 += -0.0690065547823906f * d * b8; + g71 += 0.2182178944349289f * d * b7; + g72 += 0.26726123690605164f * d * b8; + } + { const float d = D(ii, k, 59); + g66 += -0.03857583925127983f * d * b22; + g66 += -0.20412415266036987f * d * b24; + g67 += -0.06681530922651291f * d * b21; + g67 += -0.1767766922712326f * d * b23; + g68 += -0.13363061845302582f * d * b20; + g68 += -0.14940357208251953f * d * b22; + g69 += 0.17251639068126678f * d * b19; + g70 += 0.14940357208251953f * d * b18; + g71 += 0.1767766922712326f * d * b17; + g71 += 0.06681530922651291f * d * b19; + g72 += 0.20412415266036987f * d * b16; + g72 += 0.03857583925127983f * d * b18; + } + { const float d = D(ii, k, 60); + g66 += 0.14433756470680237f * d * b17; + g67 += 0.18898223340511322f * d * b18; + g68 += 0.21128855645656586f * d * b19; + g69 += 0.2182178944349289f * d * b20; + g70 += 0.21128855645656586f * d * b21; + g71 += 0.18898223340511322f * d * b22; + g72 += 0.14433756470680237f * d * b23; + } + { const float d = D(ii, k, 61); + g66 += 0.20412415266036987f * d * b16; + g66 += -0.03857583925127983f * d * b18; + g67 += 0.1767766922712326f * d * b17; + g67 += -0.06681530922651291f * d * b19; + g68 += 0.14940357208251953f * d * b18; + g69 += 0.17251639068126678f * d * b21; + g70 += -0.13363061845302582f * d * b20; + g70 += 0.14940357208251953f * d * b22; + g71 += -0.06681530922651291f * d * b21; + g71 += 0.1767766922712326f * d * b23; + g72 += -0.03857583925127983f * d * b22; + g72 += 0.20412415266036987f * d * b24; + } + { const float d = D(ii, k, 62); + g3 += 1.0f * d * b1; + } + { const float d = D(ii, k, 63); + g3 += 1.0f * d * b2; + } + { const float d = D(ii, k, 64); + g3 += 1.0f * d * b3; + } + { const float d = D(ii, k, 65); + g37 += 0.3872983455657959f * d * b3; + g38 += 0.3872983455657959f * d * b2; + g39 += -0.22360679507255554f * d * b1; + g41 += -0.3872983455657959f * d * b1; + } + { const float d = D(ii, k, 66); + g38 += 0.3872983455657959f * d * b1; + g39 += 0.4472135901451111f * d * b2; + g40 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 67); + g37 += 0.3872983455657959f * d * b1; + g39 += -0.22360679507255554f * d * b3; + g40 += 0.3872983455657959f * d * b2; + g41 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 68); + g37 += -0.0690065547823906f * d * b13; + g37 += -0.26726123690605164f * d * b15; + g38 += -0.16903084516525269f * d * b12; + g38 += -0.2182178944349289f * d * b14; + g39 += 0.23904572427272797f * d * b11; + g40 += 0.2182178944349289f * d * b10; + g41 += 0.26726123690605164f * d * b9; + g41 += 0.0690065547823906f * d * b11; + } + { const float d = D(ii, k, 69); + g37 += 0.2182178944349289f * d * b10; + g38 += 0.2760262191295624f * d * b11; + g39 += 0.29277002811431885f * d * b12; + g40 += 0.2760262191295624f * d * b13; + g41 += 0.2182178944349289f * d * b14; + } + { const float d = D(ii, k, 70); + g37 += 0.26726123690605164f * d * b9; + g37 += -0.0690065547823906f * d * b11; + g38 += 0.2182178944349289f * d * b10; + g39 += 0.23904572427272797f * d * b13; + g40 += -0.16903084516525269f * d * b12; + g40 += 0.2182178944349289f * d * b14; + g41 += -0.0690065547823906f * d * b13; + g41 += 0.26726123690605164f * d * b15; + } + { const float d = D(ii, k, 71); + g73 += -0.03857583925127983f * d * b22; + g73 += -0.20412415266036987f * d * b24; + g74 += -0.06681530922651291f * d * b21; + g74 += -0.1767766922712326f * d * b23; + g75 += -0.13363061845302582f * d * b20; + g75 += -0.14940357208251953f * d * b22; + g76 += 0.17251639068126678f * d * b19; + g77 += 0.14940357208251953f * d * b18; + g78 += 0.1767766922712326f * d * b17; + g78 += 0.06681530922651291f * d * b19; + g79 += 0.20412415266036987f * d * b16; + g79 += 0.03857583925127983f * d * b18; + } + { const float d = D(ii, k, 72); + g73 += 0.14433756470680237f * d * b17; + g74 += 0.18898223340511322f * d * b18; + g75 += 0.21128855645656586f * d * b19; + g76 += 0.2182178944349289f * d * b20; + g77 += 0.21128855645656586f * d * b21; + g78 += 0.18898223340511322f * d * b22; + g79 += 0.14433756470680237f * d * b23; + } + { const float d = D(ii, k, 73); + g73 += 0.20412415266036987f * d * b16; + g73 += -0.03857583925127983f * d * b18; + g74 += 0.1767766922712326f * d * b17; + g74 += -0.06681530922651291f * d * b19; + g75 += 0.14940357208251953f * d * b18; + g76 += 0.17251639068126678f * d * b21; + g77 += -0.13363061845302582f * d * b20; + g77 += 0.14940357208251953f * d * b22; + g78 += -0.06681530922651291f * d * b21; + g78 += 0.1767766922712326f * d * b23; + g79 += -0.03857583925127983f * d * b22; + g79 += 0.20412415266036987f * d * b24; + } + { const float d = D(ii, k, 74); + g42 += 0.3872983455657959f * d * b3; + g43 += 0.3872983455657959f * d * b2; + g44 += -0.22360679507255554f * d * b1; + g46 += -0.3872983455657959f * d * b1; + } + { const float d = D(ii, k, 75); + g43 += 0.3872983455657959f * d * b1; + g44 += 0.4472135901451111f * d * b2; + g45 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 76); + g42 += 0.3872983455657959f * d * b1; + g44 += -0.22360679507255554f * d * b3; + g45 += 0.3872983455657959f * d * b2; + g46 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 77); + g42 += -0.0690065547823906f * d * b13; + g42 += -0.26726123690605164f * d * b15; + g43 += -0.16903084516525269f * d * b12; + g43 += -0.2182178944349289f * d * b14; + g44 += 0.23904572427272797f * d * b11; + g45 += 0.2182178944349289f * d * b10; + g46 += 0.26726123690605164f * d * b9; + g46 += 0.0690065547823906f * d * b11; + } + { const float d = D(ii, k, 78); + g42 += 0.2182178944349289f * d * b10; + g43 += 0.2760262191295624f * d * b11; + g44 += 0.29277002811431885f * d * b12; + g45 += 0.2760262191295624f * d * b13; + g46 += 0.2182178944349289f * d * b14; + } + { const float d = D(ii, k, 79); + g42 += 0.26726123690605164f * d * b9; + g42 += -0.0690065547823906f * d * b11; + g43 += 0.2182178944349289f * d * b10; + g44 += 0.23904572427272797f * d * b13; + g45 += -0.16903084516525269f * d * b12; + g45 += 0.2182178944349289f * d * b14; + g46 += -0.0690065547823906f * d * b13; + g46 += 0.26726123690605164f * d * b15; + } + { const float d = D(ii, k, 80); + g123 += 0.20412415266036987f * d * b15; + g124 += 0.1767766922712326f * d * b14; + g125 += 0.14940357208251953f * d * b13; + g125 += 0.03857583925127983f * d * b15; + g126 += 0.17251639068126678f * d * b12; + g126 += 0.06681530922651291f * d * b14; + g127 += -0.13363061845302582f * d * b11; + g128 += -0.06681530922651291f * d * b10; + g129 += -0.03857583925127983f * d * b9; + g129 += -0.14940357208251953f * d * b11; + g130 += -0.1767766922712326f * d * b10; + g131 += -0.20412415266036987f * d * b9; + } + { const float d = D(ii, k, 81); + g124 += 0.14433756470680237f * d * b9; + g125 += 0.18898223340511322f * d * b10; + g126 += 0.21128855645656586f * d * b11; + g127 += 0.2182178944349289f * d * b12; + g128 += 0.21128855645656586f * d * b13; + g129 += 0.18898223340511322f * d * b14; + g130 += 0.14433756470680237f * d * b15; + } + { const float d = D(ii, k, 82); + g123 += 0.20412415266036987f * d * b9; + g124 += 0.1767766922712326f * d * b10; + g125 += -0.03857583925127983f * d * b9; + g125 += 0.14940357208251953f * d * b11; + g126 += -0.06681530922651291f * d * b10; + g127 += -0.13363061845302582f * d * b13; + g128 += 0.17251639068126678f * d * b12; + g128 += -0.06681530922651291f * d * b14; + g129 += 0.14940357208251953f * d * b13; + g129 += -0.03857583925127983f * d * b15; + g130 += 0.1767766922712326f * d * b14; + g131 += 0.20412415266036987f * d * b15; + } + { const float d = D(ii, k, 83); + g14 += 1.0f * d * b0; + } + { const float d = D(ii, k, 84); + g15 += 1.0f * d * b0; + } + { const float d = D(ii, k, 85); + g16 += 1.0f * d * b0; + } + { const float d = D(ii, k, 86); + g14 += -0.22360679507255554f * d * b6; + g14 += -0.3872983455657959f * d * b8; + g15 += 0.3872983455657959f * d * b5; + g16 += 0.3872983455657959f * d * b4; + } + { const float d = D(ii, k, 87); + g14 += 0.3872983455657959f * d * b5; + g15 += 0.4472135901451111f * d * b6; + g16 += 0.3872983455657959f * d * b7; + } + { const float d = D(ii, k, 88); + g14 += 0.3872983455657959f * d * b4; + g15 += 0.3872983455657959f * d * b7; + g16 += -0.22360679507255554f * d * b6; + g16 += 0.3872983455657959f * d * b8; + } + { const float d = D(ii, k, 89); + g80 += 0.26726123690605164f * d * b8; + g81 += 0.2182178944349289f * d * b7; + g82 += 0.23904572427272797f * d * b6; + g82 += 0.0690065547823906f * d * b8; + g83 += -0.16903084516525269f * d * b5; + g84 += -0.0690065547823906f * d * b4; + g85 += -0.2182178944349289f * d * b5; + g86 += -0.26726123690605164f * d * b4; + } + { const float d = D(ii, k, 90); + g81 += 0.2182178944349289f * d * b4; + g82 += 0.2760262191295624f * d * b5; + g83 += 0.29277002811431885f * d * b6; + g84 += 0.2760262191295624f * d * b7; + g85 += 0.2182178944349289f * d * b8; + } + { const float d = D(ii, k, 91); + g80 += 0.26726123690605164f * d * b4; + g81 += 0.2182178944349289f * d * b5; + g82 += -0.0690065547823906f * d * b4; + g83 += -0.16903084516525269f * d * b7; + g84 += 0.23904572427272797f * d * b6; + g84 += -0.0690065547823906f * d * b8; + g85 += 0.2182178944349289f * d * b7; + g86 += 0.26726123690605164f * d * b8; + } + { const float d = D(ii, k, 92); + g80 += -0.03857583925127983f * d * b22; + g80 += -0.20412415266036987f * d * b24; + g81 += -0.06681530922651291f * d * b21; + g81 += -0.1767766922712326f * d * b23; + g82 += -0.13363061845302582f * d * b20; + g82 += -0.14940357208251953f * d * b22; + g83 += 0.17251639068126678f * d * b19; + g84 += 0.14940357208251953f * d * b18; + g85 += 0.1767766922712326f * d * b17; + g85 += 0.06681530922651291f * d * b19; + g86 += 0.20412415266036987f * d * b16; + g86 += 0.03857583925127983f * d * b18; + } + { const float d = D(ii, k, 93); + g80 += 0.14433756470680237f * d * b17; + g81 += 0.18898223340511322f * d * b18; + g82 += 0.21128855645656586f * d * b19; + g83 += 0.2182178944349289f * d * b20; + g84 += 0.21128855645656586f * d * b21; + g85 += 0.18898223340511322f * d * b22; + g86 += 0.14433756470680237f * d * b23; + } + { const float d = D(ii, k, 94); + g80 += 0.20412415266036987f * d * b16; + g80 += -0.03857583925127983f * d * b18; + g81 += 0.1767766922712326f * d * b17; + g81 += -0.06681530922651291f * d * b19; + g82 += 0.14940357208251953f * d * b18; + g83 += 0.17251639068126678f * d * b21; + g84 += -0.13363061845302582f * d * b20; + g84 += 0.14940357208251953f * d * b22; + g85 += -0.06681530922651291f * d * b21; + g85 += 0.1767766922712326f * d * b23; + g86 += -0.03857583925127983f * d * b22; + g86 += 0.20412415266036987f * d * b24; + } + { const float d = D(ii, k, 95); + g4 += 1.0f * d * b1; + } + { const float d = D(ii, k, 96); + g4 += 1.0f * d * b2; + } + { const float d = D(ii, k, 97); + g4 += 1.0f * d * b3; + } + { const float d = D(ii, k, 98); + g47 += 0.3872983455657959f * d * b3; + g48 += 0.3872983455657959f * d * b2; + g49 += -0.22360679507255554f * d * b1; + g51 += -0.3872983455657959f * d * b1; + } + { const float d = D(ii, k, 99); + g48 += 0.3872983455657959f * d * b1; + g49 += 0.4472135901451111f * d * b2; + g50 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 100); + g47 += 0.3872983455657959f * d * b1; + g49 += -0.22360679507255554f * d * b3; + g50 += 0.3872983455657959f * d * b2; + g51 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 101); + g47 += -0.0690065547823906f * d * b13; + g47 += -0.26726123690605164f * d * b15; + g48 += -0.16903084516525269f * d * b12; + g48 += -0.2182178944349289f * d * b14; + g49 += 0.23904572427272797f * d * b11; + g50 += 0.2182178944349289f * d * b10; + g51 += 0.26726123690605164f * d * b9; + g51 += 0.0690065547823906f * d * b11; + } + { const float d = D(ii, k, 102); + g47 += 0.2182178944349289f * d * b10; + g48 += 0.2760262191295624f * d * b11; + g49 += 0.29277002811431885f * d * b12; + g50 += 0.2760262191295624f * d * b13; + g51 += 0.2182178944349289f * d * b14; + } + { const float d = D(ii, k, 103); + g47 += 0.26726123690605164f * d * b9; + g47 += -0.0690065547823906f * d * b11; + g48 += 0.2182178944349289f * d * b10; + g49 += 0.23904572427272797f * d * b13; + g50 += -0.16903084516525269f * d * b12; + g50 += 0.2182178944349289f * d * b14; + g51 += -0.0690065547823906f * d * b13; + g51 += 0.26726123690605164f * d * b15; + } + { const float d = D(ii, k, 104); + g132 += 0.20412415266036987f * d * b15; + g133 += 0.1767766922712326f * d * b14; + g134 += 0.14940357208251953f * d * b13; + g134 += 0.03857583925127983f * d * b15; + g135 += 0.17251639068126678f * d * b12; + g135 += 0.06681530922651291f * d * b14; + g136 += -0.13363061845302582f * d * b11; + g137 += -0.06681530922651291f * d * b10; + g138 += -0.03857583925127983f * d * b9; + g138 += -0.14940357208251953f * d * b11; + g139 += -0.1767766922712326f * d * b10; + g140 += -0.20412415266036987f * d * b9; + } + { const float d = D(ii, k, 105); + g133 += 0.14433756470680237f * d * b9; + g134 += 0.18898223340511322f * d * b10; + g135 += 0.21128855645656586f * d * b11; + g136 += 0.2182178944349289f * d * b12; + g137 += 0.21128855645656586f * d * b13; + g138 += 0.18898223340511322f * d * b14; + g139 += 0.14433756470680237f * d * b15; + } + { const float d = D(ii, k, 106); + g132 += 0.20412415266036987f * d * b9; + g133 += 0.1767766922712326f * d * b10; + g134 += -0.03857583925127983f * d * b9; + g134 += 0.14940357208251953f * d * b11; + g135 += -0.06681530922651291f * d * b10; + g136 += -0.13363061845302582f * d * b13; + g137 += 0.17251639068126678f * d * b12; + g137 += -0.06681530922651291f * d * b14; + g138 += 0.14940357208251953f * d * b13; + g138 += -0.03857583925127983f * d * b15; + g139 += 0.1767766922712326f * d * b14; + g140 += 0.20412415266036987f * d * b15; + } + dL(ii, k, 0) = g0; + dL(ii, k, 1) = g1; + dL(ii, k, 2) = g2; + dL(ii, k, 3) = g3; + dL(ii, k, 4) = g4; + dL(ii, k, 5) = g5; + dL(ii, k, 6) = g6; + dL(ii, k, 7) = g7; + dL(ii, k, 8) = g8; + dL(ii, k, 9) = g9; + dL(ii, k, 10) = g10; + dL(ii, k, 11) = g11; + dL(ii, k, 12) = g12; + dL(ii, k, 13) = g13; + dL(ii, k, 14) = g14; + dL(ii, k, 15) = g15; + dL(ii, k, 16) = g16; + dL(ii, k, 17) = g17; + dL(ii, k, 18) = g18; + dL(ii, k, 19) = g19; + dL(ii, k, 20) = g20; + dL(ii, k, 21) = g21; + dL(ii, k, 22) = g22; + dL(ii, k, 23) = g23; + dL(ii, k, 24) = g24; + dL(ii, k, 25) = g25; + dL(ii, k, 26) = g26; + dL(ii, k, 27) = g27; + dL(ii, k, 28) = g28; + dL(ii, k, 29) = g29; + dL(ii, k, 30) = g30; + dL(ii, k, 31) = g31; + dL(ii, k, 32) = g32; + dL(ii, k, 33) = g33; + dL(ii, k, 34) = g34; + dL(ii, k, 35) = g35; + dL(ii, k, 36) = g36; + dL(ii, k, 37) = g37; + dL(ii, k, 38) = g38; + dL(ii, k, 39) = g39; + dL(ii, k, 40) = g40; + dL(ii, k, 41) = g41; + dL(ii, k, 42) = g42; + dL(ii, k, 43) = g43; + dL(ii, k, 44) = g44; + dL(ii, k, 45) = g45; + dL(ii, k, 46) = g46; + dL(ii, k, 47) = g47; + dL(ii, k, 48) = g48; + dL(ii, k, 49) = g49; + dL(ii, k, 50) = g50; + dL(ii, k, 51) = g51; + dL(ii, k, 52) = g52; + dL(ii, k, 53) = g53; + dL(ii, k, 54) = g54; + dL(ii, k, 55) = g55; + dL(ii, k, 56) = g56; + dL(ii, k, 57) = g57; + dL(ii, k, 58) = g58; + dL(ii, k, 59) = g59; + dL(ii, k, 60) = g60; + dL(ii, k, 61) = g61; + dL(ii, k, 62) = g62; + dL(ii, k, 63) = g63; + dL(ii, k, 64) = g64; + dL(ii, k, 65) = g65; + dL(ii, k, 66) = g66; + dL(ii, k, 67) = g67; + dL(ii, k, 68) = g68; + dL(ii, k, 69) = g69; + dL(ii, k, 70) = g70; + dL(ii, k, 71) = g71; + dL(ii, k, 72) = g72; + dL(ii, k, 73) = g73; + dL(ii, k, 74) = g74; + dL(ii, k, 75) = g75; + dL(ii, k, 76) = g76; + dL(ii, k, 77) = g77; + dL(ii, k, 78) = g78; + dL(ii, k, 79) = g79; + dL(ii, k, 80) = g80; + dL(ii, k, 81) = g81; + dL(ii, k, 82) = g82; + dL(ii, k, 83) = g83; + dL(ii, k, 84) = g84; + dL(ii, k, 85) = g85; + dL(ii, k, 86) = g86; + dL(ii, k, 87) = g87; + dL(ii, k, 88) = g88; + dL(ii, k, 89) = g89; + dL(ii, k, 90) = g90; + dL(ii, k, 91) = g91; + dL(ii, k, 92) = g92; + dL(ii, k, 93) = g93; + dL(ii, k, 94) = g94; + dL(ii, k, 95) = g95; + dL(ii, k, 96) = g96; + dL(ii, k, 97) = g97; + dL(ii, k, 98) = g98; + dL(ii, k, 99) = g99; + dL(ii, k, 100) = g100; + dL(ii, k, 101) = g101; + dL(ii, k, 102) = g102; + dL(ii, k, 103) = g103; + dL(ii, k, 104) = g104; + dL(ii, k, 105) = g105; + dL(ii, k, 106) = g106; + dL(ii, k, 107) = g107; + dL(ii, k, 108) = g108; + dL(ii, k, 109) = g109; + dL(ii, k, 110) = g110; + dL(ii, k, 111) = g111; + dL(ii, k, 112) = g112; + dL(ii, k, 113) = g113; + dL(ii, k, 114) = g114; + dL(ii, k, 115) = g115; + dL(ii, k, 116) = g116; + dL(ii, k, 117) = g117; + dL(ii, k, 118) = g118; + dL(ii, k, 119) = g119; + dL(ii, k, 120) = g120; + dL(ii, k, 121) = g121; + dL(ii, k, 122) = g122; + dL(ii, k, 123) = g123; + dL(ii, k, 124) = g124; + dL(ii, k, 125) = g125; + dL(ii, k, 126) = g126; + dL(ii, k, 127) = g127; + dL(ii, k, 128) = g128; + dL(ii, k, 129) = g129; + dL(ii, k, 130) = g130; + dL(ii, k, 131) = g131; + dL(ii, k, 132) = g132; + dL(ii, k, 133) = g133; + dL(ii, k, 134) = g134; + dL(ii, k, 135) = g135; + dL(ii, k, 136) = g136; + dL(ii, k, 137) = g137; + dL(ii, k, 138) = g138; + dL(ii, k, 139) = g139; + dL(ii, k, 140) = g140; + } + } + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a4 = L(ii, k, 4); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a13 = L(ii, k, 13); + const float a14 = L(ii, k, 14); + const float a15 = L(ii, k, 15); + const float a16 = L(ii, k, 16); + const float a27 = L(ii, k, 27); + const float a28 = L(ii, k, 28); + const float a29 = L(ii, k, 29); + const float a30 = L(ii, k, 30); + const float a31 = L(ii, k, 31); + const float a32 = L(ii, k, 32); + const float a33 = L(ii, k, 33); + const float a34 = L(ii, k, 34); + const float a35 = L(ii, k, 35); + const float a36 = L(ii, k, 36); + const float a37 = L(ii, k, 37); + const float a38 = L(ii, k, 38); + const float a39 = L(ii, k, 39); + const float a40 = L(ii, k, 40); + const float a41 = L(ii, k, 41); + const float a42 = L(ii, k, 42); + const float a43 = L(ii, k, 43); + const float a44 = L(ii, k, 44); + const float a45 = L(ii, k, 45); + const float a46 = L(ii, k, 46); + const float a47 = L(ii, k, 47); + const float a48 = L(ii, k, 48); + const float a49 = L(ii, k, 49); + const float a50 = L(ii, k, 50); + const float a51 = L(ii, k, 51); + const float a52 = L(ii, k, 52); + const float a53 = L(ii, k, 53); + const float a54 = L(ii, k, 54); + const float a55 = L(ii, k, 55); + const float a56 = L(ii, k, 56); + const float a57 = L(ii, k, 57); + const float a58 = L(ii, k, 58); + const float a66 = L(ii, k, 66); + const float a67 = L(ii, k, 67); + const float a68 = L(ii, k, 68); + const float a69 = L(ii, k, 69); + const float a70 = L(ii, k, 70); + const float a71 = L(ii, k, 71); + const float a72 = L(ii, k, 72); + const float a73 = L(ii, k, 73); + const float a74 = L(ii, k, 74); + const float a75 = L(ii, k, 75); + const float a76 = L(ii, k, 76); + const float a77 = L(ii, k, 77); + const float a78 = L(ii, k, 78); + const float a79 = L(ii, k, 79); + const float a80 = L(ii, k, 80); + const float a81 = L(ii, k, 81); + const float a82 = L(ii, k, 82); + const float a83 = L(ii, k, 83); + const float a84 = L(ii, k, 84); + const float a85 = L(ii, k, 85); + const float a86 = L(ii, k, 86); + const float a87 = L(ii, k, 87); + const float a88 = L(ii, k, 88); + const float a89 = L(ii, k, 89); + const float a90 = L(ii, k, 90); + const float a91 = L(ii, k, 91); + const float a92 = L(ii, k, 92); + const float a93 = L(ii, k, 93); + const float a94 = L(ii, k, 94); + const float a95 = L(ii, k, 95); + const float a96 = L(ii, k, 96); + const float a97 = L(ii, k, 97); + const float a98 = L(ii, k, 98); + const float a99 = L(ii, k, 99); + const float a100 = L(ii, k, 100); + const float a101 = L(ii, k, 101); + const float a102 = L(ii, k, 102); + const float a103 = L(ii, k, 103); + const float a104 = L(ii, k, 104); + const float a123 = L(ii, k, 123); + const float a124 = L(ii, k, 124); + const float a125 = L(ii, k, 125); + const float a126 = L(ii, k, 126); + const float a127 = L(ii, k, 127); + const float a128 = L(ii, k, 128); + const float a129 = L(ii, k, 129); + const float a130 = L(ii, k, 130); + const float a131 = L(ii, k, 131); + const float a132 = L(ii, k, 132); + const float a133 = L(ii, k, 133); + const float a134 = L(ii, k, 134); + const float a135 = L(ii, k, 135); + const float a136 = L(ii, k, 136); + const float a137 = L(ii, k, 137); + const float a138 = L(ii, k, 138); + const float a139 = L(ii, k, 139); + const float a140 = L(ii, k, 140); + float h0 = 0.0f; + float h1 = 0.0f; + float h2 = 0.0f; + float h3 = 0.0f; + float h4 = 0.0f; + float h5 = 0.0f; + float h6 = 0.0f; + float h7 = 0.0f; + float h8 = 0.0f; + float h9 = 0.0f; + float h10 = 0.0f; + float h11 = 0.0f; + float h12 = 0.0f; + float h13 = 0.0f; + float h14 = 0.0f; + float h15 = 0.0f; + float h16 = 0.0f; + float h17 = 0.0f; + float h18 = 0.0f; + float h19 = 0.0f; + float h20 = 0.0f; + float h21 = 0.0f; + float h22 = 0.0f; + float h23 = 0.0f; + float h24 = 0.0f; + { const float d = D(ii, k, 0); + h0 += 1.0f * d * a0; + } + { const float d = D(ii, k, 1); + h0 += 1.0f * d * a1; + } + { const float d = D(ii, k, 2); + h1 += 0.3333333432674408f * d * a8; + h2 += 0.3333333432674408f * d * a9; + h3 += 0.3333333432674408f * d * a10; + } + { const float d = D(ii, k, 3); + h0 += 1.0f * d * a2; + } + { const float d = D(ii, k, 4); + h4 += 0.20000000298023224f * d * a27; + h5 += 0.20000000298023224f * d * a28; + h6 += 0.20000000298023224f * d * a29; + h7 += 0.20000000298023224f * d * a30; + h8 += 0.20000000298023224f * d * a31; + } + { const float d = D(ii, k, 5); + h1 += 0.3333333432674408f * d * a11; + h2 += 0.3333333432674408f * d * a12; + h3 += 0.3333333432674408f * d * a13; + } + { const float d = D(ii, k, 6); + h0 += 1.0f * d * a3; + } + { const float d = D(ii, k, 7); + h4 += 0.20000000298023224f * d * a37; + h5 += 0.20000000298023224f * d * a38; + h6 += 0.20000000298023224f * d * a39; + h7 += 0.20000000298023224f * d * a40; + h8 += 0.20000000298023224f * d * a41; + } + { const float d = D(ii, k, 8); + h4 += 0.20000000298023224f * d * a42; + h5 += 0.20000000298023224f * d * a43; + h6 += 0.20000000298023224f * d * a44; + h7 += 0.20000000298023224f * d * a45; + h8 += 0.20000000298023224f * d * a46; + } + { const float d = D(ii, k, 9); + h1 += 0.3333333432674408f * d * a14; + h2 += 0.3333333432674408f * d * a15; + h3 += 0.3333333432674408f * d * a16; + } + { const float d = D(ii, k, 10); + h9 += 0.1428571492433548f * d * a80; + h10 += 0.1428571492433548f * d * a81; + h11 += 0.1428571492433548f * d * a82; + h12 += 0.1428571492433548f * d * a83; + h13 += 0.1428571492433548f * d * a84; + h14 += 0.1428571492433548f * d * a85; + h15 += 0.1428571492433548f * d * a86; + } + { const float d = D(ii, k, 11); + h0 += 1.0f * d * a4; + } + { const float d = D(ii, k, 12); + h4 += 0.20000000298023224f * d * a47; + h5 += 0.20000000298023224f * d * a48; + h6 += 0.20000000298023224f * d * a49; + h7 += 0.20000000298023224f * d * a50; + h8 += 0.20000000298023224f * d * a51; + } + { const float d = D(ii, k, 13); + h16 += 0.1111111119389534f * d * a132; + h17 += 0.1111111119389534f * d * a133; + h18 += 0.1111111119389534f * d * a134; + h19 += 0.1111111119389534f * d * a135; + h20 += 0.1111111119389534f * d * a136; + h21 += 0.1111111119389534f * d * a137; + h22 += 0.1111111119389534f * d * a138; + h23 += 0.1111111119389534f * d * a139; + h24 += 0.1111111119389534f * d * a140; + } + { const float d = D(ii, k, 14); + h1 += 1.0f * d * a0; + } + { const float d = D(ii, k, 15); + h2 += 1.0f * d * a0; + } + { const float d = D(ii, k, 16); + h3 += 1.0f * d * a0; + } + { const float d = D(ii, k, 17); + h1 += 1.0f * d * a1; + } + { const float d = D(ii, k, 18); + h2 += 1.0f * d * a1; + } + { const float d = D(ii, k, 19); + h3 += 1.0f * d * a1; + } + { const float d = D(ii, k, 20); + h0 += 1.0f * d * a8; + } + { const float d = D(ii, k, 21); + h0 += 1.0f * d * a9; + } + { const float d = D(ii, k, 22); + h0 += 1.0f * d * a10; + } + { const float d = D(ii, k, 23); + h6 += -0.22360679507255554f * d * a8; + h8 += -0.3872983455657959f * d * a8; + h5 += 0.3872983455657959f * d * a9; + h4 += 0.3872983455657959f * d * a10; + } + { const float d = D(ii, k, 24); + h5 += 0.3872983455657959f * d * a8; + h6 += 0.4472135901451111f * d * a9; + h7 += 0.3872983455657959f * d * a10; + } + { const float d = D(ii, k, 25); + h4 += 0.3872983455657959f * d * a8; + h7 += 0.3872983455657959f * d * a9; + h6 += -0.22360679507255554f * d * a10; + h8 += 0.3872983455657959f * d * a10; + } + { const float d = D(ii, k, 26); + h8 += 0.26726123690605164f * d * a52; + h7 += 0.2182178944349289f * d * a53; + h6 += 0.23904572427272797f * d * a54; + h8 += 0.0690065547823906f * d * a54; + h5 += -0.16903084516525269f * d * a55; + h4 += -0.0690065547823906f * d * a56; + h5 += -0.2182178944349289f * d * a57; + h4 += -0.26726123690605164f * d * a58; + } + { const float d = D(ii, k, 27); + h4 += 0.2182178944349289f * d * a53; + h5 += 0.2760262191295624f * d * a54; + h6 += 0.29277002811431885f * d * a55; + h7 += 0.2760262191295624f * d * a56; + h8 += 0.2182178944349289f * d * a57; + } + { const float d = D(ii, k, 28); + h4 += 0.26726123690605164f * d * a52; + h5 += 0.2182178944349289f * d * a53; + h4 += -0.0690065547823906f * d * a54; + h7 += -0.16903084516525269f * d * a55; + h6 += 0.23904572427272797f * d * a56; + h8 += -0.0690065547823906f * d * a56; + h7 += 0.2182178944349289f * d * a57; + h8 += 0.26726123690605164f * d * a58; + } + { const float d = D(ii, k, 29); + h1 += 1.0f * d * a2; + } + { const float d = D(ii, k, 30); + h2 += 1.0f * d * a2; + } + { const float d = D(ii, k, 31); + h3 += 1.0f * d * a2; + } + { const float d = D(ii, k, 32); + h3 += 0.3872983455657959f * d * a27; + h2 += 0.3872983455657959f * d * a28; + h1 += -0.22360679507255554f * d * a29; + h1 += -0.3872983455657959f * d * a31; + } + { const float d = D(ii, k, 33); + h1 += 0.3872983455657959f * d * a28; + h2 += 0.4472135901451111f * d * a29; + h3 += 0.3872983455657959f * d * a30; + } + { const float d = D(ii, k, 34); + h1 += 0.3872983455657959f * d * a27; + h3 += -0.22360679507255554f * d * a29; + h2 += 0.3872983455657959f * d * a30; + h3 += 0.3872983455657959f * d * a31; + } + { const float d = D(ii, k, 35); + h13 += -0.0690065547823906f * d * a27; + h15 += -0.26726123690605164f * d * a27; + h12 += -0.16903084516525269f * d * a28; + h14 += -0.2182178944349289f * d * a28; + h11 += 0.23904572427272797f * d * a29; + h10 += 0.2182178944349289f * d * a30; + h9 += 0.26726123690605164f * d * a31; + h11 += 0.0690065547823906f * d * a31; + } + { const float d = D(ii, k, 36); + h10 += 0.2182178944349289f * d * a27; + h11 += 0.2760262191295624f * d * a28; + h12 += 0.29277002811431885f * d * a29; + h13 += 0.2760262191295624f * d * a30; + h14 += 0.2182178944349289f * d * a31; + } + { const float d = D(ii, k, 37); + h9 += 0.26726123690605164f * d * a27; + h11 += -0.0690065547823906f * d * a27; + h10 += 0.2182178944349289f * d * a28; + h13 += 0.23904572427272797f * d * a29; + h12 += -0.16903084516525269f * d * a30; + h14 += 0.2182178944349289f * d * a30; + h13 += -0.0690065547823906f * d * a31; + h15 += 0.26726123690605164f * d * a31; + } + { const float d = D(ii, k, 38); + h15 += 0.20412415266036987f * d * a87; + h14 += 0.1767766922712326f * d * a88; + h13 += 0.14940357208251953f * d * a89; + h15 += 0.03857583925127983f * d * a89; + h12 += 0.17251639068126678f * d * a90; + h14 += 0.06681530922651291f * d * a90; + h11 += -0.13363061845302582f * d * a91; + h10 += -0.06681530922651291f * d * a92; + h9 += -0.03857583925127983f * d * a93; + h11 += -0.14940357208251953f * d * a93; + h10 += -0.1767766922712326f * d * a94; + h9 += -0.20412415266036987f * d * a95; + } + { const float d = D(ii, k, 39); + h9 += 0.14433756470680237f * d * a88; + h10 += 0.18898223340511322f * d * a89; + h11 += 0.21128855645656586f * d * a90; + h12 += 0.2182178944349289f * d * a91; + h13 += 0.21128855645656586f * d * a92; + h14 += 0.18898223340511322f * d * a93; + h15 += 0.14433756470680237f * d * a94; + } + { const float d = D(ii, k, 40); + h9 += 0.20412415266036987f * d * a87; + h10 += 0.1767766922712326f * d * a88; + h9 += -0.03857583925127983f * d * a89; + h11 += 0.14940357208251953f * d * a89; + h10 += -0.06681530922651291f * d * a90; + h13 += -0.13363061845302582f * d * a91; + h12 += 0.17251639068126678f * d * a92; + h14 += -0.06681530922651291f * d * a92; + h13 += 0.14940357208251953f * d * a93; + h15 += -0.03857583925127983f * d * a93; + h14 += 0.1767766922712326f * d * a94; + h15 += 0.20412415266036987f * d * a95; + } + { const float d = D(ii, k, 41); + h3 += 0.3872983455657959f * d * a32; + h2 += 0.3872983455657959f * d * a33; + h1 += -0.22360679507255554f * d * a34; + h1 += -0.3872983455657959f * d * a36; + } + { const float d = D(ii, k, 42); + h1 += 0.3872983455657959f * d * a33; + h2 += 0.4472135901451111f * d * a34; + h3 += 0.3872983455657959f * d * a35; + } + { const float d = D(ii, k, 43); + h1 += 0.3872983455657959f * d * a32; + h3 += -0.22360679507255554f * d * a34; + h2 += 0.3872983455657959f * d * a35; + h3 += 0.3872983455657959f * d * a36; + } + { const float d = D(ii, k, 44); + h13 += -0.0690065547823906f * d * a32; + h15 += -0.26726123690605164f * d * a32; + h12 += -0.16903084516525269f * d * a33; + h14 += -0.2182178944349289f * d * a33; + h11 += 0.23904572427272797f * d * a34; + h10 += 0.2182178944349289f * d * a35; + h9 += 0.26726123690605164f * d * a36; + h11 += 0.0690065547823906f * d * a36; + } + { const float d = D(ii, k, 45); + h10 += 0.2182178944349289f * d * a32; + h11 += 0.2760262191295624f * d * a33; + h12 += 0.29277002811431885f * d * a34; + h13 += 0.2760262191295624f * d * a35; + h14 += 0.2182178944349289f * d * a36; + } + { const float d = D(ii, k, 46); + h9 += 0.26726123690605164f * d * a32; + h11 += -0.0690065547823906f * d * a32; + h10 += 0.2182178944349289f * d * a33; + h13 += 0.23904572427272797f * d * a34; + h12 += -0.16903084516525269f * d * a35; + h14 += 0.2182178944349289f * d * a35; + h13 += -0.0690065547823906f * d * a36; + h15 += 0.26726123690605164f * d * a36; + } + { const float d = D(ii, k, 47); + h15 += 0.20412415266036987f * d * a96; + h14 += 0.1767766922712326f * d * a97; + h13 += 0.14940357208251953f * d * a98; + h15 += 0.03857583925127983f * d * a98; + h12 += 0.17251639068126678f * d * a99; + h14 += 0.06681530922651291f * d * a99; + h11 += -0.13363061845302582f * d * a100; + h10 += -0.06681530922651291f * d * a101; + h9 += -0.03857583925127983f * d * a102; + h11 += -0.14940357208251953f * d * a102; + h10 += -0.1767766922712326f * d * a103; + h9 += -0.20412415266036987f * d * a104; + } + { const float d = D(ii, k, 48); + h9 += 0.14433756470680237f * d * a97; + h10 += 0.18898223340511322f * d * a98; + h11 += 0.21128855645656586f * d * a99; + h12 += 0.2182178944349289f * d * a100; + h13 += 0.21128855645656586f * d * a101; + h14 += 0.18898223340511322f * d * a102; + h15 += 0.14433756470680237f * d * a103; + } + { const float d = D(ii, k, 49); + h9 += 0.20412415266036987f * d * a96; + h10 += 0.1767766922712326f * d * a97; + h9 += -0.03857583925127983f * d * a98; + h11 += 0.14940357208251953f * d * a98; + h10 += -0.06681530922651291f * d * a99; + h13 += -0.13363061845302582f * d * a100; + h12 += 0.17251639068126678f * d * a101; + h14 += -0.06681530922651291f * d * a101; + h13 += 0.14940357208251953f * d * a102; + h15 += -0.03857583925127983f * d * a102; + h14 += 0.1767766922712326f * d * a103; + h15 += 0.20412415266036987f * d * a104; + } + { const float d = D(ii, k, 50); + h0 += 1.0f * d * a11; + } + { const float d = D(ii, k, 51); + h0 += 1.0f * d * a12; + } + { const float d = D(ii, k, 52); + h0 += 1.0f * d * a13; + } + { const float d = D(ii, k, 53); + h6 += -0.22360679507255554f * d * a11; + h8 += -0.3872983455657959f * d * a11; + h5 += 0.3872983455657959f * d * a12; + h4 += 0.3872983455657959f * d * a13; + } + { const float d = D(ii, k, 54); + h5 += 0.3872983455657959f * d * a11; + h6 += 0.4472135901451111f * d * a12; + h7 += 0.3872983455657959f * d * a13; + } + { const float d = D(ii, k, 55); + h4 += 0.3872983455657959f * d * a11; + h7 += 0.3872983455657959f * d * a12; + h6 += -0.22360679507255554f * d * a13; + h8 += 0.3872983455657959f * d * a13; + } + { const float d = D(ii, k, 56); + h8 += 0.26726123690605164f * d * a66; + h7 += 0.2182178944349289f * d * a67; + h6 += 0.23904572427272797f * d * a68; + h8 += 0.0690065547823906f * d * a68; + h5 += -0.16903084516525269f * d * a69; + h4 += -0.0690065547823906f * d * a70; + h5 += -0.2182178944349289f * d * a71; + h4 += -0.26726123690605164f * d * a72; + } + { const float d = D(ii, k, 57); + h4 += 0.2182178944349289f * d * a67; + h5 += 0.2760262191295624f * d * a68; + h6 += 0.29277002811431885f * d * a69; + h7 += 0.2760262191295624f * d * a70; + h8 += 0.2182178944349289f * d * a71; + } + { const float d = D(ii, k, 58); + h4 += 0.26726123690605164f * d * a66; + h5 += 0.2182178944349289f * d * a67; + h4 += -0.0690065547823906f * d * a68; + h7 += -0.16903084516525269f * d * a69; + h6 += 0.23904572427272797f * d * a70; + h8 += -0.0690065547823906f * d * a70; + h7 += 0.2182178944349289f * d * a71; + h8 += 0.26726123690605164f * d * a72; + } + { const float d = D(ii, k, 59); + h22 += -0.03857583925127983f * d * a66; + h24 += -0.20412415266036987f * d * a66; + h21 += -0.06681530922651291f * d * a67; + h23 += -0.1767766922712326f * d * a67; + h20 += -0.13363061845302582f * d * a68; + h22 += -0.14940357208251953f * d * a68; + h19 += 0.17251639068126678f * d * a69; + h18 += 0.14940357208251953f * d * a70; + h17 += 0.1767766922712326f * d * a71; + h19 += 0.06681530922651291f * d * a71; + h16 += 0.20412415266036987f * d * a72; + h18 += 0.03857583925127983f * d * a72; + } + { const float d = D(ii, k, 60); + h17 += 0.14433756470680237f * d * a66; + h18 += 0.18898223340511322f * d * a67; + h19 += 0.21128855645656586f * d * a68; + h20 += 0.2182178944349289f * d * a69; + h21 += 0.21128855645656586f * d * a70; + h22 += 0.18898223340511322f * d * a71; + h23 += 0.14433756470680237f * d * a72; + } + { const float d = D(ii, k, 61); + h16 += 0.20412415266036987f * d * a66; + h18 += -0.03857583925127983f * d * a66; + h17 += 0.1767766922712326f * d * a67; + h19 += -0.06681530922651291f * d * a67; + h18 += 0.14940357208251953f * d * a68; + h21 += 0.17251639068126678f * d * a69; + h20 += -0.13363061845302582f * d * a70; + h22 += 0.14940357208251953f * d * a70; + h21 += -0.06681530922651291f * d * a71; + h23 += 0.1767766922712326f * d * a71; + h22 += -0.03857583925127983f * d * a72; + h24 += 0.20412415266036987f * d * a72; + } + { const float d = D(ii, k, 62); + h1 += 1.0f * d * a3; + } + { const float d = D(ii, k, 63); + h2 += 1.0f * d * a3; + } + { const float d = D(ii, k, 64); + h3 += 1.0f * d * a3; + } + { const float d = D(ii, k, 65); + h3 += 0.3872983455657959f * d * a37; + h2 += 0.3872983455657959f * d * a38; + h1 += -0.22360679507255554f * d * a39; + h1 += -0.3872983455657959f * d * a41; + } + { const float d = D(ii, k, 66); + h1 += 0.3872983455657959f * d * a38; + h2 += 0.4472135901451111f * d * a39; + h3 += 0.3872983455657959f * d * a40; + } + { const float d = D(ii, k, 67); + h1 += 0.3872983455657959f * d * a37; + h3 += -0.22360679507255554f * d * a39; + h2 += 0.3872983455657959f * d * a40; + h3 += 0.3872983455657959f * d * a41; + } + { const float d = D(ii, k, 68); + h13 += -0.0690065547823906f * d * a37; + h15 += -0.26726123690605164f * d * a37; + h12 += -0.16903084516525269f * d * a38; + h14 += -0.2182178944349289f * d * a38; + h11 += 0.23904572427272797f * d * a39; + h10 += 0.2182178944349289f * d * a40; + h9 += 0.26726123690605164f * d * a41; + h11 += 0.0690065547823906f * d * a41; + } + { const float d = D(ii, k, 69); + h10 += 0.2182178944349289f * d * a37; + h11 += 0.2760262191295624f * d * a38; + h12 += 0.29277002811431885f * d * a39; + h13 += 0.2760262191295624f * d * a40; + h14 += 0.2182178944349289f * d * a41; + } + { const float d = D(ii, k, 70); + h9 += 0.26726123690605164f * d * a37; + h11 += -0.0690065547823906f * d * a37; + h10 += 0.2182178944349289f * d * a38; + h13 += 0.23904572427272797f * d * a39; + h12 += -0.16903084516525269f * d * a40; + h14 += 0.2182178944349289f * d * a40; + h13 += -0.0690065547823906f * d * a41; + h15 += 0.26726123690605164f * d * a41; + } + { const float d = D(ii, k, 71); + h22 += -0.03857583925127983f * d * a73; + h24 += -0.20412415266036987f * d * a73; + h21 += -0.06681530922651291f * d * a74; + h23 += -0.1767766922712326f * d * a74; + h20 += -0.13363061845302582f * d * a75; + h22 += -0.14940357208251953f * d * a75; + h19 += 0.17251639068126678f * d * a76; + h18 += 0.14940357208251953f * d * a77; + h17 += 0.1767766922712326f * d * a78; + h19 += 0.06681530922651291f * d * a78; + h16 += 0.20412415266036987f * d * a79; + h18 += 0.03857583925127983f * d * a79; + } + { const float d = D(ii, k, 72); + h17 += 0.14433756470680237f * d * a73; + h18 += 0.18898223340511322f * d * a74; + h19 += 0.21128855645656586f * d * a75; + h20 += 0.2182178944349289f * d * a76; + h21 += 0.21128855645656586f * d * a77; + h22 += 0.18898223340511322f * d * a78; + h23 += 0.14433756470680237f * d * a79; + } + { const float d = D(ii, k, 73); + h16 += 0.20412415266036987f * d * a73; + h18 += -0.03857583925127983f * d * a73; + h17 += 0.1767766922712326f * d * a74; + h19 += -0.06681530922651291f * d * a74; + h18 += 0.14940357208251953f * d * a75; + h21 += 0.17251639068126678f * d * a76; + h20 += -0.13363061845302582f * d * a77; + h22 += 0.14940357208251953f * d * a77; + h21 += -0.06681530922651291f * d * a78; + h23 += 0.1767766922712326f * d * a78; + h22 += -0.03857583925127983f * d * a79; + h24 += 0.20412415266036987f * d * a79; + } + { const float d = D(ii, k, 74); + h3 += 0.3872983455657959f * d * a42; + h2 += 0.3872983455657959f * d * a43; + h1 += -0.22360679507255554f * d * a44; + h1 += -0.3872983455657959f * d * a46; + } + { const float d = D(ii, k, 75); + h1 += 0.3872983455657959f * d * a43; + h2 += 0.4472135901451111f * d * a44; + h3 += 0.3872983455657959f * d * a45; + } + { const float d = D(ii, k, 76); + h1 += 0.3872983455657959f * d * a42; + h3 += -0.22360679507255554f * d * a44; + h2 += 0.3872983455657959f * d * a45; + h3 += 0.3872983455657959f * d * a46; + } + { const float d = D(ii, k, 77); + h13 += -0.0690065547823906f * d * a42; + h15 += -0.26726123690605164f * d * a42; + h12 += -0.16903084516525269f * d * a43; + h14 += -0.2182178944349289f * d * a43; + h11 += 0.23904572427272797f * d * a44; + h10 += 0.2182178944349289f * d * a45; + h9 += 0.26726123690605164f * d * a46; + h11 += 0.0690065547823906f * d * a46; + } + { const float d = D(ii, k, 78); + h10 += 0.2182178944349289f * d * a42; + h11 += 0.2760262191295624f * d * a43; + h12 += 0.29277002811431885f * d * a44; + h13 += 0.2760262191295624f * d * a45; + h14 += 0.2182178944349289f * d * a46; + } + { const float d = D(ii, k, 79); + h9 += 0.26726123690605164f * d * a42; + h11 += -0.0690065547823906f * d * a42; + h10 += 0.2182178944349289f * d * a43; + h13 += 0.23904572427272797f * d * a44; + h12 += -0.16903084516525269f * d * a45; + h14 += 0.2182178944349289f * d * a45; + h13 += -0.0690065547823906f * d * a46; + h15 += 0.26726123690605164f * d * a46; + } + { const float d = D(ii, k, 80); + h15 += 0.20412415266036987f * d * a123; + h14 += 0.1767766922712326f * d * a124; + h13 += 0.14940357208251953f * d * a125; + h15 += 0.03857583925127983f * d * a125; + h12 += 0.17251639068126678f * d * a126; + h14 += 0.06681530922651291f * d * a126; + h11 += -0.13363061845302582f * d * a127; + h10 += -0.06681530922651291f * d * a128; + h9 += -0.03857583925127983f * d * a129; + h11 += -0.14940357208251953f * d * a129; + h10 += -0.1767766922712326f * d * a130; + h9 += -0.20412415266036987f * d * a131; + } + { const float d = D(ii, k, 81); + h9 += 0.14433756470680237f * d * a124; + h10 += 0.18898223340511322f * d * a125; + h11 += 0.21128855645656586f * d * a126; + h12 += 0.2182178944349289f * d * a127; + h13 += 0.21128855645656586f * d * a128; + h14 += 0.18898223340511322f * d * a129; + h15 += 0.14433756470680237f * d * a130; + } + { const float d = D(ii, k, 82); + h9 += 0.20412415266036987f * d * a123; + h10 += 0.1767766922712326f * d * a124; + h9 += -0.03857583925127983f * d * a125; + h11 += 0.14940357208251953f * d * a125; + h10 += -0.06681530922651291f * d * a126; + h13 += -0.13363061845302582f * d * a127; + h12 += 0.17251639068126678f * d * a128; + h14 += -0.06681530922651291f * d * a128; + h13 += 0.14940357208251953f * d * a129; + h15 += -0.03857583925127983f * d * a129; + h14 += 0.1767766922712326f * d * a130; + h15 += 0.20412415266036987f * d * a131; + } + { const float d = D(ii, k, 83); + h0 += 1.0f * d * a14; + } + { const float d = D(ii, k, 84); + h0 += 1.0f * d * a15; + } + { const float d = D(ii, k, 85); + h0 += 1.0f * d * a16; + } + { const float d = D(ii, k, 86); + h6 += -0.22360679507255554f * d * a14; + h8 += -0.3872983455657959f * d * a14; + h5 += 0.3872983455657959f * d * a15; + h4 += 0.3872983455657959f * d * a16; + } + { const float d = D(ii, k, 87); + h5 += 0.3872983455657959f * d * a14; + h6 += 0.4472135901451111f * d * a15; + h7 += 0.3872983455657959f * d * a16; + } + { const float d = D(ii, k, 88); + h4 += 0.3872983455657959f * d * a14; + h7 += 0.3872983455657959f * d * a15; + h6 += -0.22360679507255554f * d * a16; + h8 += 0.3872983455657959f * d * a16; + } + { const float d = D(ii, k, 89); + h8 += 0.26726123690605164f * d * a80; + h7 += 0.2182178944349289f * d * a81; + h6 += 0.23904572427272797f * d * a82; + h8 += 0.0690065547823906f * d * a82; + h5 += -0.16903084516525269f * d * a83; + h4 += -0.0690065547823906f * d * a84; + h5 += -0.2182178944349289f * d * a85; + h4 += -0.26726123690605164f * d * a86; + } + { const float d = D(ii, k, 90); + h4 += 0.2182178944349289f * d * a81; + h5 += 0.2760262191295624f * d * a82; + h6 += 0.29277002811431885f * d * a83; + h7 += 0.2760262191295624f * d * a84; + h8 += 0.2182178944349289f * d * a85; + } + { const float d = D(ii, k, 91); + h4 += 0.26726123690605164f * d * a80; + h5 += 0.2182178944349289f * d * a81; + h4 += -0.0690065547823906f * d * a82; + h7 += -0.16903084516525269f * d * a83; + h6 += 0.23904572427272797f * d * a84; + h8 += -0.0690065547823906f * d * a84; + h7 += 0.2182178944349289f * d * a85; + h8 += 0.26726123690605164f * d * a86; + } + { const float d = D(ii, k, 92); + h22 += -0.03857583925127983f * d * a80; + h24 += -0.20412415266036987f * d * a80; + h21 += -0.06681530922651291f * d * a81; + h23 += -0.1767766922712326f * d * a81; + h20 += -0.13363061845302582f * d * a82; + h22 += -0.14940357208251953f * d * a82; + h19 += 0.17251639068126678f * d * a83; + h18 += 0.14940357208251953f * d * a84; + h17 += 0.1767766922712326f * d * a85; + h19 += 0.06681530922651291f * d * a85; + h16 += 0.20412415266036987f * d * a86; + h18 += 0.03857583925127983f * d * a86; + } + { const float d = D(ii, k, 93); + h17 += 0.14433756470680237f * d * a80; + h18 += 0.18898223340511322f * d * a81; + h19 += 0.21128855645656586f * d * a82; + h20 += 0.2182178944349289f * d * a83; + h21 += 0.21128855645656586f * d * a84; + h22 += 0.18898223340511322f * d * a85; + h23 += 0.14433756470680237f * d * a86; + } + { const float d = D(ii, k, 94); + h16 += 0.20412415266036987f * d * a80; + h18 += -0.03857583925127983f * d * a80; + h17 += 0.1767766922712326f * d * a81; + h19 += -0.06681530922651291f * d * a81; + h18 += 0.14940357208251953f * d * a82; + h21 += 0.17251639068126678f * d * a83; + h20 += -0.13363061845302582f * d * a84; + h22 += 0.14940357208251953f * d * a84; + h21 += -0.06681530922651291f * d * a85; + h23 += 0.1767766922712326f * d * a85; + h22 += -0.03857583925127983f * d * a86; + h24 += 0.20412415266036987f * d * a86; + } + { const float d = D(ii, k, 95); + h1 += 1.0f * d * a4; + } + { const float d = D(ii, k, 96); + h2 += 1.0f * d * a4; + } + { const float d = D(ii, k, 97); + h3 += 1.0f * d * a4; + } + { const float d = D(ii, k, 98); + h3 += 0.3872983455657959f * d * a47; + h2 += 0.3872983455657959f * d * a48; + h1 += -0.22360679507255554f * d * a49; + h1 += -0.3872983455657959f * d * a51; + } + { const float d = D(ii, k, 99); + h1 += 0.3872983455657959f * d * a48; + h2 += 0.4472135901451111f * d * a49; + h3 += 0.3872983455657959f * d * a50; + } + { const float d = D(ii, k, 100); + h1 += 0.3872983455657959f * d * a47; + h3 += -0.22360679507255554f * d * a49; + h2 += 0.3872983455657959f * d * a50; + h3 += 0.3872983455657959f * d * a51; + } + { const float d = D(ii, k, 101); + h13 += -0.0690065547823906f * d * a47; + h15 += -0.26726123690605164f * d * a47; + h12 += -0.16903084516525269f * d * a48; + h14 += -0.2182178944349289f * d * a48; + h11 += 0.23904572427272797f * d * a49; + h10 += 0.2182178944349289f * d * a50; + h9 += 0.26726123690605164f * d * a51; + h11 += 0.0690065547823906f * d * a51; + } + { const float d = D(ii, k, 102); + h10 += 0.2182178944349289f * d * a47; + h11 += 0.2760262191295624f * d * a48; + h12 += 0.29277002811431885f * d * a49; + h13 += 0.2760262191295624f * d * a50; + h14 += 0.2182178944349289f * d * a51; + } + { const float d = D(ii, k, 103); + h9 += 0.26726123690605164f * d * a47; + h11 += -0.0690065547823906f * d * a47; + h10 += 0.2182178944349289f * d * a48; + h13 += 0.23904572427272797f * d * a49; + h12 += -0.16903084516525269f * d * a50; + h14 += 0.2182178944349289f * d * a50; + h13 += -0.0690065547823906f * d * a51; + h15 += 0.26726123690605164f * d * a51; + } + { const float d = D(ii, k, 104); + h15 += 0.20412415266036987f * d * a132; + h14 += 0.1767766922712326f * d * a133; + h13 += 0.14940357208251953f * d * a134; + h15 += 0.03857583925127983f * d * a134; + h12 += 0.17251639068126678f * d * a135; + h14 += 0.06681530922651291f * d * a135; + h11 += -0.13363061845302582f * d * a136; + h10 += -0.06681530922651291f * d * a137; + h9 += -0.03857583925127983f * d * a138; + h11 += -0.14940357208251953f * d * a138; + h10 += -0.1767766922712326f * d * a139; + h9 += -0.20412415266036987f * d * a140; + } + { const float d = D(ii, k, 105); + h9 += 0.14433756470680237f * d * a133; + h10 += 0.18898223340511322f * d * a134; + h11 += 0.21128855645656586f * d * a135; + h12 += 0.2182178944349289f * d * a136; + h13 += 0.21128855645656586f * d * a137; + h14 += 0.18898223340511322f * d * a138; + h15 += 0.14433756470680237f * d * a139; + } + { const float d = D(ii, k, 106); + h9 += 0.20412415266036987f * d * a132; + h10 += 0.1767766922712326f * d * a133; + h9 += -0.03857583925127983f * d * a134; + h11 += 0.14940357208251953f * d * a134; + h10 += -0.06681530922651291f * d * a135; + h13 += -0.13363061845302582f * d * a136; + h12 += 0.17251639068126678f * d * a137; + h14 += -0.06681530922651291f * d * a137; + h13 += 0.14940357208251953f * d * a138; + h15 += -0.03857583925127983f * d * a138; + h14 += 0.1767766922712326f * d * a139; + h15 += 0.20412415266036987f * d * a140; + } + dR(ii, k, 0) += h0; + dR(ii, k, 1) += h1; + dR(ii, k, 2) += h2; + dR(ii, k, 3) += h3; + dR(ii, k, 4) += h4; + dR(ii, k, 5) += h5; + dR(ii, k, 6) += h6; + dR(ii, k, 7) += h7; + dR(ii, k, 8) += h8; + dR(ii, k, 9) += h9; + dR(ii, k, 10) += h10; + dR(ii, k, 11) += h11; + dR(ii, k, 12) += h12; + dR(ii, k, 13) += h13; + dR(ii, k, 14) += h14; + dR(ii, k, 15) += h15; + dR(ii, k, 16) += h16; + dR(ii, k, 17) += h17; + dR(ii, k, 18) += h18; + dR(ii, k, 19) += h19; + dR(ii, k, 20) += h20; + dR(ii, k, 21) += h21; + dR(ii, k, 22) += h22; + dR(ii, k, 23) += h23; + dR(ii, k, 24) += h24; + } + } + +}; + +// mixed product, 3161 terms: GRACE-2L-OMAT-large-base AAA, GRACE-2L-OMAT-large-ft-AM AAA, GRACE-2L-OMAT-large-ft-E +// AAA, GRACE-2L-SMAX-OMAT-large AAA, GRACE-2L-SMAX-large AAA +struct T3161_a6496249 { + static constexpr int nt = 3161, nl = 141; + static constexpr int tab[3161][3] = {{0,0,0}, {1,0,1}, {8,1,2}, {9,2,2}, {10,3,2}, {2,0,3}, {27,4,4}, {28,5,4}, {29,6,4}, {30,7,4}, {31,8,4}, {11,1,5}, {12,2,5}, {13,3,5}, {3,0,6}, {37,4,7}, {38,5,7}, {39,6,7}, {40,7,7}, {41,8,7}, {42,4,8}, {43,5,8}, {44,6,8}, {45,7,8}, {46,8,8}, {14,1,9}, {15,2,9}, {16,3,9}, {80,9,10}, {81,10,10}, {82,11,10}, {83,12,10}, {84,13,10}, {85,14,10}, {86,15,10}, {4,0,11}, {47,4,12}, {48,5,12}, {49,6,12}, {50,7,12}, {51,8,12}, {132,16,13}, {133,17,13}, {134,18,13}, {135,19,13}, {136,20,13}, {137,21,13}, {138,22,13}, {139,23,13}, {140,24,13}, {0,1,14}, {0,2,15}, {0,3,16}, {1,1,17}, {1,2,18}, {1,3,19}, {8,0,20}, {9,0,21}, {10,0,22}, {8,6,23}, {8,8,23}, {9,5,23}, {10,4,23}, {8,5,24}, {9,6,24}, {10,7,24}, {8,4,25}, {9,7,25}, {10,6,25}, {10,8,25}, {52,8,26}, {53,7,26}, {54,6,26}, {54,8,26}, {55,5,26}, {56,4,26}, {57,5,26}, {58,4,26}, {53,4,27}, {54,5,27}, {55,6,27}, {56,7,27}, {57,8,27}, {52,4,28}, {53,5,28}, {54,4,28}, {55,7,28}, {56,6,28}, {56,8,28}, {57,7,28}, {58,8,28}, {2,1,29}, {2,2,30}, {2,3,31}, {27,3,32}, {28,2,32}, {29,1,32}, {31,1,32}, {28,1,33}, {29,2,33}, {30,3,33}, {27,1,34}, {29,3,34}, {30,2,34}, {31,3,34}, {27,13,35}, {27,15,35}, {28,12,35}, {28,14,35}, {29,11,35}, {30,10,35}, {31,9,35}, {31,11,35}, {27,10,36}, {28,11,36}, {29,12,36}, {30,13,36}, {31,14,36}, {27,9,37}, {27,11,37}, {28,10,37}, {29,13,37}, {30,12,37}, {30,14,37}, {31,13,37}, {31,15,37}, {87,15,38}, {88,14,38}, {89,13,38}, {89,15,38}, {90,12,38}, {90,14,38}, {91,11,38}, {92,10,38}, {93,9,38}, {93,11,38}, {94,10,38}, {95,9,38}, {88,9,39}, {89,10,39}, {90,11,39}, {91,12,39}, {92,13,39}, {93,14,39}, {94,15,39}, {87,9,40}, {88,10,40}, {89,9,40}, {89,11,40}, {90,10,40}, {91,13,40}, {92,12,40}, {92,14,40}, {93,13,40}, {93,15,40}, {94,14,40}, {95,15,40}, {32,3,41}, {33,2,41}, {34,1,41}, {36,1,41}, {33,1,42}, {34,2,42}, {35,3,42}, {32,1,43}, {34,3,43}, {35,2,43}, {36,3,43}, {32,13,44}, {32,15,44}, {33,12,44}, {33,14,44}, {34,11,44}, {35,10,44}, {36,9,44}, {36,11,44}, {32,10,45}, {33,11,45}, {34,12,45}, {35,13,45}, {36,14,45}, {32,9,46}, {32,11,46}, {33,10,46}, {34,13,46}, {35,12,46}, {35,14,46}, {36,13,46}, {36,15,46}, {96,15,47}, {97,14,47}, {98,13,47}, {98,15,47}, {99,12,47}, {99,14,47}, {100,11,47}, {101,10,47}, {102,9,47}, {102,11,47}, {103,10,47}, {104,9,47}, {97,9,48}, {98,10,48}, {99,11,48}, {100,12,48}, {101,13,48}, {102,14,48}, {103,15,48}, {96,9,49}, {97,10,49}, {98,9,49}, {98,11,49}, {99,10,49}, {100,13,49}, {101,12,49}, {101,14,49}, {102,13,49}, {102,15,49}, {103,14,49}, {104,15,49}, {11,0,50}, {12,0,51}, {13,0,52}, {11,6,53}, {11,8,53}, {12,5,53}, {13,4,53}, {11,5,54}, {12,6,54}, {13,7,54}, {11,4,55}, {12,7,55}, {13,6,55}, {13,8,55}, {66,8,56}, {67,7,56}, {68,6,56}, {68,8,56}, {69,5,56}, {70,4,56}, {71,5,56}, {72,4,56}, {67,4,57}, {68,5,57}, {69,6,57}, {70,7,57}, {71,8,57}, {66,4,58}, {67,5,58}, {68,4,58}, {69,7,58}, {70,6,58}, {70,8,58}, {71,7,58}, {72,8,58}, {66,22,59}, {66,24,59}, {67,21,59}, {67,23,59}, {68,20,59}, {68,22,59}, {69,19,59}, {70,18,59}, {71,17,59}, {71,19,59}, {72,16,59}, {72,18,59}, {66,17,60}, {67,18,60}, {68,19,60}, {69,20,60}, {70,21,60}, {71,22,60}, {72,23,60}, {66,16,61}, {66,18,61}, {67,17,61}, {67,19,61}, {68,18,61}, {69,21,61}, {70,20,61}, {70,22,61}, {71,21,61}, {71,23,61}, {72,22,61}, {72,24,61}, {3,1,62}, {3,2,63}, {3,3,64}, {37,3,65}, {38,2,65}, {39,1,65}, {41,1,65}, {38,1,66}, {39,2,66}, {40,3,66}, {37,1,67}, {39,3,67}, {40,2,67}, {41,3,67}, {37,13,68}, {37,15,68}, {38,12,68}, {38,14,68}, {39,11,68}, {40,10,68}, {41,9,68}, {41,11,68}, {37,10,69}, {38,11,69}, {39,12,69}, {40,13,69}, {41,14,69}, {37,9,70}, {37,11,70}, {38,10,70}, {39,13,70}, {40,12,70}, {40,14,70}, {41,13,70}, {41,15,70}, {73,22,71}, {73,24,71}, {74,21,71}, {74,23,71}, {75,20,71}, {75,22,71}, {76,19,71}, {77,18,71}, {78,17,71}, {78,19,71}, {79,16,71}, {79,18,71}, {73,17,72}, {74,18,72}, {75,19,72}, {76,20,72}, {77,21,72}, {78,22,72}, {79,23,72}, {73,16,73}, {73,18,73}, {74,17,73}, {74,19,73}, {75,18,73}, {76,21,73}, {77,20,73}, {77,22,73}, {78,21,73}, {78,23,73}, {79,22,73}, {79,24,73}, {42,3,74}, {43,2,74}, {44,1,74}, {46,1,74}, {43,1,75}, {44,2,75}, {45,3,75}, {42,1,76}, {44,3,76}, {45,2,76}, {46,3,76}, {42,13,77}, {42,15,77}, {43,12,77}, {43,14,77}, {44,11,77}, {45,10,77}, {46,9,77}, {46,11,77}, {42,10,78}, {43,11,78}, {44,12,78}, {45,13,78}, {46,14,78}, {42,9,79}, {42,11,79}, {43,10,79}, {44,13,79}, {45,12,79}, {45,14,79}, {46,13,79}, {46,15,79}, {123,15,80}, {124,14,80}, {125,13,80}, {125,15,80}, {126,12,80}, {126,14,80}, {127,11,80}, {128,10,80}, {129,9,80}, {129,11,80}, {130,10,80}, {131,9,80}, {124,9,81}, {125,10,81}, {126,11,81}, {127,12,81}, {128,13,81}, {129,14,81}, {130,15,81}, {123,9,82}, {124,10,82}, {125,9,82}, {125,11,82}, {126,10,82}, {127,13,82}, {128,12,82}, {128,14,82}, {129,13,82}, {129,15,82}, {130,14,82}, {131,15,82}, {14,0,83}, {15,0,84}, {16,0,85}, {14,6,86}, {14,8,86}, {15,5,86}, {16,4,86}, {14,5,87}, {15,6,87}, {16,7,87}, {14,4,88}, {15,7,88}, {16,6,88}, {16,8,88}, {80,8,89}, {81,7,89}, {82,6,89}, {82,8,89}, {83,5,89}, {84,4,89}, {85,5,89}, {86,4,89}, {81,4,90}, {82,5,90}, {83,6,90}, {84,7,90}, {85,8,90}, {80,4,91}, {81,5,91}, {82,4,91}, {83,7,91}, {84,6,91}, {84,8,91}, {85,7,91}, {86,8,91}, {80,22,92}, {80,24,92}, {81,21,92}, {81,23,92}, {82,20,92}, {82,22,92}, {83,19,92}, {84,18,92}, {85,17,92}, {85,19,92}, {86,16,92}, {86,18,92}, {80,17,93}, {81,18,93}, {82,19,93}, {83,20,93}, {84,21,93}, {85,22,93}, {86,23,93}, {80,16,94}, {80,18,94}, {81,17,94}, {81,19,94}, {82,18,94}, {83,21,94}, {84,20,94}, {84,22,94}, {85,21,94}, {85,23,94}, {86,22,94}, {86,24,94}, {4,1,95}, {4,2,96}, {4,3,97}, {47,3,98}, {48,2,98}, {49,1,98}, {51,1,98}, {48,1,99}, {49,2,99}, {50,3,99}, {47,1,100}, {49,3,100}, {50,2,100}, {51,3,100}, {47,13,101}, {47,15,101}, {48,12,101}, {48,14,101}, {49,11,101}, {50,10,101}, {51,9,101}, {51,11,101}, {47,10,102}, {48,11,102}, {49,12,102}, {50,13,102}, {51,14,102}, {47,9,103}, {47,11,103}, {48,10,103}, {49,13,103}, {50,12,103}, {50,14,103}, {51,13,103}, {51,15,103}, {132,15,104}, {133,14,104}, {134,13,104}, {134,15,104}, {135,12,104}, {135,14,104}, {136,11,104}, {137,10,104}, {138,9,104}, {138,11,104}, {139,10,104}, {140,9,104}, {133,9,105}, {134,10,105}, {135,11,105}, {136,12,105}, {137,13,105}, {138,14,105}, {139,15,105}, {132,9,106}, {133,10,106}, {134,9,106}, {134,11,106}, {135,10,106}, {136,13,106}, {137,12,106}, {137,14,106}, {138,13,106}, {138,15,106}, {139,14,106}, {140,15,106}, {0,4,107}, {0,5,108}, {0,6,109}, {0,7,110}, {0,8,111}, {1,4,112}, {1,5,113}, {1,6,114}, {1,7,115}, {1,8,116}, {17,0,117}, {18,0,118}, {19,0,119}, {20,0,120}, {21,0,121}, {17,6,122}, {18,7,122}, {19,4,122}, {20,5,122}, {17,7,123}, {18,6,123}, {18,8,123}, {19,5,123}, {20,4,123}, {21,5,123}, {17,4,124}, {18,5,124}, {19,6,124}, {20,7,124}, {21,8,124}, {17,5,125}, {18,4,125}, {19,7,125}, {20,6,125}, {20,8,125}, {21,7,125}, {18,5,126}, {19,8,126}, {20,7,126}, {21,6,126}, {8,3,127}, {10,1,127}, {8,2,128}, {9,1,128}, {8,1,129}, {9,2,129}, {10,3,129}, {9,3,130}, {10,2,130}, {8,1,131}, {10,3,131}, {8,13,132}, {8,15,132}, {9,10,132}, {10,9,132}, {10,11,132}, {8,12,133}, {8,14,133}, {9,11,133}, {10,10,133}, {8,11,134}, {9,12,134}, {10,13,134}, {8,10,135}, {9,13,135}, {10,12,135}, {10,14,135}, {8,9,136}, {8,11,136}, {9,14,136}, {10,13,136}, {10,15,136}, {52,3,137}, {53,2,137}, {54,3,137}, {56,1,137}, {58,1,137}, {53,3,138}, {54,2,138}, {55,1,138}, {57,1,138}, {54,1,139}, {55,2,139}, {56,3,139}, {53,1,140}, {55,3,140}, {56,2,140}, {57,3,140}, {52,1,141}, {54,1,141}, {56,3,141}, {57,2,141}, {58,3,141}, {52,13,142}, {53,12,142}, {54,13,142}, {54,15,142}, {55,10,142}, {56,9,142}, {56,11,142}, {58,11,142}, {52,14,143}, {53,13,143}, {53,15,143}, {54,12,143}, {54,14,143}, {55,11,143}, {56,10,143}, {57,9,143}, {57,11,143}, {58,10,143}, {52,9,144}, {54,11,144}, {55,12,144}, {56,13,144}, {58,15,144}, {52,10,145}, {53,9,145}, {53,11,145}, {54,10,145}, {55,13,145}, {56,12,145}, {56,14,145}, {57,13,145}, {57,15,145}, {58,14,145}, {52,11,146}, {54,9,146}, {54,11,146}, {55,14,146}, {56,13,146}, {56,15,146}, {57,12,146}, {58,13,146}, {2,4,147}, {2,5,148}, {2,6,149}, {2,7,150}, {2,8,151}, {27,0,152}, {28,0,153}, {29,0,154}, {30,0,155}, {31,0,156}, {27,20,157}, {27,24,157}, {28,21,157}, {28,23,157}, {29,18,157}, {30,17,157}, {30,19,157}, {31,16,157}, {27,21,158}, {27,23,158}, {28,20,158}, {28,22,158}, {29,19,158}, {30,18,158}, {31,17,158}, {31,19,158}, {27,18,159}, {28,19,159}, {29,20,159}, {30,21,159}, {31,22,159}, {27,17,160}, {27,19,160}, {28,18,160}, {29,21,160}, {30,20,160}, {30,22,160}, {31,21,160}, {31,23,160}, {27,16,161}, {28,17,161}, {28,19,161}, {29,22,161}, {30,21,161}, {30,23,161}, {31,20,161}, {31,24,161}, {87,22,162}, {88,21,162}, {89,20,162}, {89,24,162}, {90,21,162}, {90,23,162}, {91,18,162}, {92,17,162}, {92,19,162}, {93,16,162}, {94,19,162}, {95,18,162}, {87,23,163}, {88,22,163}, {88,24,163}, {89,21,163}, {89,23,163}, {90,20,163}, {90,22,163}, {91,19,163}, {92,18,163}, {93,17,163}, {93,19,163}, {94,16,163}, {94,18,163}, {95,17,163}, {87,16,164}, {88,17,164}, {89,18,164}, {90,19,164}, {91,20,164}, {92,21,164}, {93,22,164}, {94,23,164}, {95,24,164}, {87,17,165}, {88,16,165}, {88,18,165}, {89,17,165}, {89,19,165}, {90,18,165}, {91,21,165}, {92,20,165}, {92,22,165}, {93,21,165}, {93,23,165}, {94,22,165}, {94,24,165}, {95,23,165}, {87,18,166}, {88,19,166}, {89,16,166}, {90,17,166}, {90,19,166}, {91,22,166}, {92,21,166}, {92,23,166}, {93,20,166}, {93,24,166}, {94,21,166}, {95,22,166}, {32,0,167}, {33,0,168}, {34,0,169}, {35,0,170}, {36,0,171}, {32,6,172}, {33,7,172}, {34,4,172}, {35,5,172}, {32,7,173}, {33,6,173}, {33,8,173}, {34,5,173}, {35,4,173}, {36,5,173}, {32,4,174}, {33,5,174}, {34,6,174}, {35,7,174}, {36,8,174}, {32,5,175}, {33,4,175}, {34,7,175}, {35,6,175}, {35,8,175}, {36,7,175}, {33,5,176}, {34,8,176}, {35,7,176}, {36,6,176}, {32,20,177}, {32,24,177}, {33,21,177}, {33,23,177}, {34,18,177}, {35,17,177}, {35,19,177}, {36,16,177}, {32,21,178}, {32,23,178}, {33,20,178}, {33,22,178}, {34,19,178}, {35,18,178}, {36,17,178}, {36,19,178}, {32,18,179}, {33,19,179}, {34,20,179}, {35,21,179}, {36,22,179}, {32,17,180}, {32,19,180}, {33,18,180}, {34,21,180}, {35,20,180}, {35,22,180}, {36,21,180}, {36,23,180}, {32,16,181}, {33,17,181}, {33,19,181}, {34,22,181}, {35,21,181}, {35,23,181}, {36,20,181}, {36,24,181}, {96,8,182}, {97,7,182}, {98,6,182}, {99,7,182}, {100,4,182}, {101,5,182}, {103,5,182}, {104,4,182}, {97,8,183}, {98,7,183}, {99,6,183}, {99,8,183}, {100,5,183}, {101,4,183}, {102,5,183}, {103,4,183}, {98,4,184}, {99,5,184}, {100,6,184}, {101,7,184}, {102,8,184}, {97,4,185}, {98,5,185}, {99,4,185}, {100,7,185}, {101,6,185}, {101,8,185}, {102,7,185}, {103,8,185}, {96,4,186}, {97,5,186}, {99,5,186}, {100,8,186}, {101,7,186}, {102,6,186}, {103,7,186}, {104,8,186}, {96,22,187}, {97,21,187}, {98,20,187}, {98,24,187}, {99,21,187}, {99,23,187}, {100,18,187}, {101,17,187}, {101,19,187}, {102,16,187}, {103,19,187}, {104,18,187}, {96,23,188}, {97,22,188}, {97,24,188}, {98,21,188}, {98,23,188}, {99,20,188}, {99,22,188}, {100,19,188}, {101,18,188}, {102,17,188}, {102,19,188}, {103,16,188}, {103,18,188}, {104,17,188}, {96,16,189}, {97,17,189}, {98,18,189}, {99,19,189}, {100,20,189}, {101,21,189}, {102,22,189}, {103,23,189}, {104,24,189}, {96,17,190}, {97,16,190}, {97,18,190}, {98,17,190}, {98,19,190}, {99,18,190}, {100,21,190}, {101,20,190}, {101,22,190}, {102,21,190}, {102,23,190}, {103,22,190}, {103,24,190}, {104,23,190}, {96,18,191}, {97,19,191}, {98,16,191}, {99,17,191}, {99,19,191}, {100,22,191}, {101,21,191}, {101,23,191}, {102,20,191}, {102,24,191}, {103,21,191}, {104,22,191}, {11,3,192}, {13,1,192}, {11,2,193}, {12,1,193}, {11,1,194}, {12,2,194}, {13,3,194}, {12,3,195}, {13,2,195}, {11,1,196}, {13,3,196}, {11,13,197}, {11,15,197}, {12,10,197}, {13,9,197}, {13,11,197}, {11,12,198}, {11,14,198}, {12,11,198}, {13,10,198}, {11,11,199}, {12,12,199}, {13,13,199}, {11,10,200}, {12,13,200}, {13,12,200}, {13,14,200}, {11,9,201}, {11,11,201}, {12,14,201}, {13,13,201}, {13,15,201}, {66,3,202}, {67,2,202}, {68,3,202}, {70,1,202}, {72,1,202}, {67,3,203}, {68,2,203}, {69,1,203}, {71,1,203}, {68,1,204}, {69,2,204}, {70,3,204}, {67,1,205}, {69,3,205}, {70,2,205}, {71,3,205}, {66,1,206}, {68,1,206}, {70,3,206}, {71,2,206}, {72,3,206}, {66,13,207}, {67,12,207}, {68,13,207}, {68,15,207}, {69,10,207}, {70,9,207}, {70,11,207}, {72,11,207}, {66,14,208}, {67,13,208}, {67,15,208}, {68,12,208}, {68,14,208}, {69,11,208}, {70,10,208}, {71,9,208}, {71,11,208}, {72,10,208}, {66,9,209}, {68,11,209}, {69,12,209}, {70,13,209}, {72,15,209}, {66,10,210}, {67,9,210}, {67,11,210}, {68,10,210}, {69,13,210}, {70,12,210}, {70,14,210}, {71,13,210}, {71,15,210}, {72,14,210}, {66,11,211}, {68,9,211}, {68,11,211}, {69,14,211}, {70,13,211}, {70,15,211}, {71,12,211}, {72,13,211}, {3,4,212}, {3,5,213}, {3,6,214}, {3,7,215}, {3,8,216}, {37,0,217}, {38,0,218}, {39,0,219}, {40,0,220}, {41,0,221}, {37,6,222}, {38,7,222}, {39,4,222}, {40,5,222}, {37,7,223}, {38,6,223}, {38,8,223}, {39,5,223}, {40,4,223}, {41,5,223}, {37,4,224}, {38,5,224}, {39,6,224}, {40,7,224}, {41,8,224}, {37,5,225}, {38,4,225}, {39,7,225}, {40,6,225}, {40,8,225}, {41,7,225}, {38,5,226}, {39,8,226}, {40,7,226}, {41,6,226}, {37,20,227}, {37,24,227}, {38,21,227}, {38,23,227}, {39,18,227}, {40,17,227}, {40,19,227}, {41,16,227}, {37,21,228}, {37,23,228}, {38,20,228}, {38,22,228}, {39,19,228}, {40,18,228}, {41,17,228}, {41,19,228}, {37,18,229}, {38,19,229}, {39,20,229}, {40,21,229}, {41,22,229}, {37,17,230}, {37,19,230}, {38,18,230}, {39,21,230}, {40,20,230}, {40,22,230}, {41,21,230}, {41,23,230}, {37,16,231}, {38,17,231}, {38,19,231}, {39,22,231}, {40,21,231}, {40,23,231}, {41,20,231}, {41,24,231}, {105,8,232}, {106,7,232}, {107,6,232}, {108,7,232}, {109,4,232}, {110,5,232}, {112,5,232}, {113,4,232}, {106,8,233}, {107,7,233}, {108,6,233}, {108,8,233}, {109,5,233}, {110,4,233}, {111,5,233}, {112,4,233}, {107,4,234}, {108,5,234}, {109,6,234}, {110,7,234}, {111,8,234}, {106,4,235}, {107,5,235}, {108,4,235}, {109,7,235}, {110,6,235}, {110,8,235}, {111,7,235}, {112,8,235}, {105,4,236}, {106,5,236}, {108,5,236}, {109,8,236}, {110,7,236}, {111,6,236}, {112,7,236}, {113,8,236}, {105,22,237}, {106,21,237}, {107,20,237}, {107,24,237}, {108,21,237}, {108,23,237}, {109,18,237}, {110,17,237}, {110,19,237}, {111,16,237}, {112,19,237}, {113,18,237}, {105,23,238}, {106,22,238}, {106,24,238}, {107,21,238}, {107,23,238}, {108,20,238}, {108,22,238}, {109,19,238}, {110,18,238}, {111,17,238}, {111,19,238}, {112,16,238}, {112,18,238}, {113,17,238}, {105,16,239}, {106,17,239}, {107,18,239}, {108,19,239}, {109,20,239}, {110,21,239}, {111,22,239}, {112,23,239}, {113,24,239}, {105,17,240}, {106,16,240}, {106,18,240}, {107,17,240}, {107,19,240}, {108,18,240}, {109,21,240}, {110,20,240}, {110,22,240}, {111,21,240}, {111,23,240}, {112,22,240}, {112,24,240}, {113,23,240}, {105,18,241}, {106,19,241}, {107,16,241}, {108,17,241}, {108,19,241}, {109,22,241}, {110,21,241}, {110,23,241}, {111,20,241}, {111,24,241}, {112,21,241}, {113,22,241}, {73,3,242}, {74,2,242}, {75,3,242}, {77,1,242}, {79,1,242}, {74,3,243}, {75,2,243}, {76,1,243}, {78,1,243}, {75,1,244}, {76,2,244}, {77,3,244}, {74,1,245}, {76,3,245}, {77,2,245}, {78,3,245}, {73,1,246}, {75,1,246}, {77,3,246}, {78,2,246}, {79,3,246}, {73,13,247}, {74,12,247}, {75,13,247}, {75,15,247}, {76,10,247}, {77,9,247}, {77,11,247}, {79,11,247}, {73,14,248}, {74,13,248}, {74,15,248}, {75,12,248}, {75,14,248}, {76,11,248}, {77,10,248}, {78,9,248}, {78,11,248}, {79,10,248}, {73,9,249}, {75,11,249}, {76,12,249}, {77,13,249}, {79,15,249}, {73,10,250}, {74,9,250}, {74,11,250}, {75,10,250}, {76,13,250}, {77,12,250}, {77,14,250}, {78,13,250}, {78,15,250}, {79,14,250}, {73,11,251}, {75,9,251}, {75,11,251}, {76,14,251}, {77,13,251}, {77,15,251}, {78,12,251}, {79,13,251}, {42,0,252}, {43,0,253}, {44,0,254}, {45,0,255}, {46,0,256}, {42,6,257}, {43,7,257}, {44,4,257}, {45,5,257}, {42,7,258}, {43,6,258}, {43,8,258}, {44,5,258}, {45,4,258}, {46,5,258}, {42,4,259}, {43,5,259}, {44,6,259}, {45,7,259}, {46,8,259}, {42,5,260}, {43,4,260}, {44,7,260}, {45,6,260}, {45,8,260}, {46,7,260}, {43,5,261}, {44,8,261}, {45,7,261}, {46,6,261}, {42,20,262}, {42,24,262}, {43,21,262}, {43,23,262}, {44,18,262}, {45,17,262}, {45,19,262}, {46,16,262}, {42,21,263}, {42,23,263}, {43,20,263}, {43,22,263}, {44,19,263}, {45,18,263}, {46,17,263}, {46,19,263}, {42,18,264}, {43,19,264}, {44,20,264}, {45,21,264}, {46,22,264}, {42,17,265}, {42,19,265}, {43,18,265}, {44,21,265}, {45,20,265}, {45,22,265}, {46,21,265}, {46,23,265}, {42,16,266}, {43,17,266}, {43,19,266}, {44,22,266}, {45,21,266}, {45,23,266}, {46,20,266}, {46,24,266}, {123,8,267}, {124,7,267}, {125,6,267}, {126,7,267}, {127,4,267}, {128,5,267}, {130,5,267}, {131,4,267}, {124,8,268}, {125,7,268}, {126,6,268}, {126,8,268}, {127,5,268}, {128,4,268}, {129,5,268}, {130,4,268}, {125,4,269}, {126,5,269}, {127,6,269}, {128,7,269}, {129,8,269}, {124,4,270}, {125,5,270}, {126,4,270}, {127,7,270}, {128,6,270}, {128,8,270}, {129,7,270}, {130,8,270}, {123,4,271}, {124,5,271}, {126,5,271}, {127,8,271}, {128,7,271}, {129,6,271}, {130,7,271}, {131,8,271}, {123,22,272}, {124,21,272}, {125,20,272}, {125,24,272}, {126,21,272}, {126,23,272}, {127,18,272}, {128,17,272}, {128,19,272}, {129,16,272}, {130,19,272}, {131,18,272}, {123,23,273}, {124,22,273}, {124,24,273}, {125,21,273}, {125,23,273}, {126,20,273}, {126,22,273}, {127,19,273}, {128,18,273}, {129,17,273}, {129,19,273}, {130,16,273}, {130,18,273}, {131,17,273}, {123,16,274}, {124,17,274}, {125,18,274}, {126,19,274}, {127,20,274}, {128,21,274}, {129,22,274}, {130,23,274}, {131,24,274}, {123,17,275}, {124,16,275}, {124,18,275}, {125,17,275}, {125,19,275}, {126,18,275}, {127,21,275}, {128,20,275}, {128,22,275}, {129,21,275}, {129,23,275}, {130,22,275}, {130,24,275}, {131,23,275}, {123,18,276}, {124,19,276}, {125,16,276}, {126,17,276}, {126,19,276}, {127,22,276}, {128,21,276}, {128,23,276}, {129,20,276}, {129,24,276}, {130,21,276}, {131,22,276}, {14,3,277}, {16,1,277}, {14,2,278}, {15,1,278}, {14,1,279}, {15,2,279}, {16,3,279}, {15,3,280}, {16,2,280}, {14,1,281}, {16,3,281}, {14,13,282}, {14,15,282}, {15,10,282}, {16,9,282}, {16,11,282}, {14,12,283}, {14,14,283}, {15,11,283}, {16,10,283}, {14,11,284}, {15,12,284}, {16,13,284}, {14,10,285}, {15,13,285}, {16,12,285}, {16,14,285}, {14,9,286}, {14,11,286}, {15,14,286}, {16,13,286}, {16,15,286}, {80,3,287}, {81,2,287}, {82,3,287}, {84,1,287}, {86,1,287}, {81,3,288}, {82,2,288}, {83,1,288}, {85,1,288}, {82,1,289}, {83,2,289}, {84,3,289}, {81,1,290}, {83,3,290}, {84,2,290}, {85,3,290}, {80,1,291}, {82,1,291}, {84,3,291}, {85,2,291}, {86,3,291}, {80,13,292}, {81,12,292}, {82,13,292}, {82,15,292}, {83,10,292}, {84,9,292}, {84,11,292}, {86,11,292}, {80,14,293}, {81,13,293}, {81,15,293}, {82,12,293}, {82,14,293}, {83,11,293}, {84,10,293}, {85,9,293}, {85,11,293}, {86,10,293}, {80,9,294}, {82,11,294}, {83,12,294}, {84,13,294}, {86,15,294}, {80,10,295}, {81,9,295}, {81,11,295}, {82,10,295}, {83,13,295}, {84,12,295}, {84,14,295}, {85,13,295}, {85,15,295}, {86,14,295}, {80,11,296}, {82,9,296}, {82,11,296}, {83,14,296}, {84,13,296}, {84,15,296}, {85,12,296}, {86,13,296}, {4,4,297}, {4,5,298}, {4,6,299}, {4,7,300}, {4,8,301}, {47,0,302}, {48,0,303}, {49,0,304}, {50,0,305}, {51,0,306}, {47,6,307}, {48,7,307}, {49,4,307}, {50,5,307}, {47,7,308}, {48,6,308}, {48,8,308}, {49,5,308}, {50,4,308}, {51,5,308}, {47,4,309}, {48,5,309}, {49,6,309}, {50,7,309}, {51,8,309}, {47,5,310}, {48,4,310}, {49,7,310}, {50,6,310}, {50,8,310}, {51,7,310}, {48,5,311}, {49,8,311}, {50,7,311}, {51,6,311}, {47,20,312}, {47,24,312}, {48,21,312}, {48,23,312}, {49,18,312}, {50,17,312}, {50,19,312}, {51,16,312}, {47,21,313}, {47,23,313}, {48,20,313}, {48,22,313}, {49,19,313}, {50,18,313}, {51,17,313}, {51,19,313}, {47,18,314}, {48,19,314}, {49,20,314}, {50,21,314}, {51,22,314}, {47,17,315}, {47,19,315}, {48,18,315}, {49,21,315}, {50,20,315}, {50,22,315}, {51,21,315}, {51,23,315}, {47,16,316}, {48,17,316}, {48,19,316}, {49,22,316}, {50,21,316}, {50,23,316}, {51,20,316}, {51,24,316}, {132,8,317}, {133,7,317}, {134,6,317}, {135,7,317}, {136,4,317}, {137,5,317}, {139,5,317}, {140,4,317}, {133,8,318}, {134,7,318}, {135,6,318}, {135,8,318}, {136,5,318}, {137,4,318}, {138,5,318}, {139,4,318}, {134,4,319}, {135,5,319}, {136,6,319}, {137,7,319}, {138,8,319}, {133,4,320}, {134,5,320}, {135,4,320}, {136,7,320}, {137,6,320}, {137,8,320}, {138,7,320}, {139,8,320}, {132,4,321}, {133,5,321}, {135,5,321}, {136,8,321}, {137,7,321}, {138,6,321}, {139,7,321}, {140,8,321}, {0,9,322}, {0,10,323}, {0,11,324}, {0,12,325}, {0,13,326}, {0,14,327}, {0,15,328}, {1,9,329}, {1,10,330}, {1,11,331}, {1,12,332}, {1,13,333}, {1,14,334}, {1,15,335}, {17,3,336}, {21,1,336}, {17,2,337}, {18,3,337}, {20,1,337}, {17,3,338}, {18,2,338}, {19,1,338}, {21,1,338}, {18,1,339}, {19,2,339}, {20,3,339}, {17,1,340}, {19,3,340}, {20,2,340}, {21,3,340}, {18,1,341}, {20,3,341}, {21,2,341}, {17,1,342}, {21,3,342}, {17,13,343}, {18,14,343}, {19,9,343}, {20,10,343}, {21,11,343}, {17,12,344}, {18,13,344}, {18,15,344}, {20,9,344}, {20,11,344}, {17,13,345}, {17,15,345}, {18,12,345}, {18,14,345}, {19,11,345}, {20,10,345}, {21,9,345}, {21,11,345}, {17,10,346}, {18,11,346}, {19,12,346}, {20,13,346}, {21,14,346}, {17,9,347}, {17,11,347}, {18,10,347}, {19,13,347}, {20,12,347}, {20,14,347}, {21,13,347}, {21,15,347}, {18,9,348}, {18,11,348}, {20,13,348}, {20,15,348}, {21,12,348}, {17,11,349}, {18,10,349}, {19,15,349}, {20,14,349}, {21,13,349}, {8,8,350}, {10,4,350}, {8,7,351}, {9,4,351}, {10,5,351}, {8,6,352}, {8,8,352}, {9,5,352}, {10,4,352}, {8,5,353}, {9,6,353}, {10,7,353}, {8,4,354}, {9,7,354}, {10,6,354}, {10,8,354}, {8,5,355}, {9,8,355}, {10,7,355}, {8,4,356}, {10,8,356}, {8,22,357}, {8,24,357}, {9,17,357}, {10,16,357}, {10,18,357}, {8,21,358}, {8,23,358}, {9,18,358}, {10,17,358}, {10,19,358}, {8,20,359}, {8,22,359}, {9,19,359}, {10,18,359}, {8,19,360}, {9,20,360}, {10,21,360}, {8,18,361}, {9,21,361}, {10,20,361}, {10,22,361}, {8,17,362}, {8,19,362}, {9,22,362}, {10,21,362}, {10,23,362}, {8,16,363}, {8,18,363}, {9,23,363}, {10,22,363}, {10,24,363}, {52,0,364}, {53,0,365}, {54,0,366}, {55,0,367}, {56,0,368}, {57,0,369}, {58,0,370}, {52,6,371}, {53,7,371}, {54,8,371}, {56,4,371}, {57,5,371}, {52,7,372}, {54,7,372}, {55,4,372}, {56,5,372}, {58,5,372}, {52,8,373}, {53,7,373}, {54,6,373}, {54,8,373}, {55,5,373}, {56,4,373}, {57,5,373}, {58,4,373}, {53,4,374}, {54,5,374}, {55,6,374}, {56,7,374}, {57,8,374}, {52,4,375}, {53,5,375}, {54,4,375}, {55,7,375}, {56,6,375}, {56,8,375}, {57,7,375}, {58,8,375}, {52,5,376}, {54,5,376}, {55,8,376}, {56,7,376}, {58,7,376}, {53,5,377}, {54,4,377}, {56,8,377}, {57,7,377}, {58,6,377}, {52,20,378}, {53,21,378}, {54,22,378}, {54,24,378}, {55,17,378}, {56,16,378}, {56,18,378}, {57,19,378}, {52,21,379}, {53,20,379}, {53,24,379}, {54,21,379}, {54,23,379}, {55,18,379}, {56,17,379}, {56,19,379}, {57,16,379}, {58,19,379}, {52,22,380}, {52,24,380}, {53,21,380}, {53,23,380}, {54,20,380}, {54,22,380}, {55,19,380}, {56,18,380}, {57,17,380}, {57,19,380}, {58,16,380}, {58,18,380}, {52,17,381}, {53,18,381}, {54,19,381}, {55,20,381}, {56,21,381}, {57,22,381}, {58,23,381}, {52,16,382}, {52,18,382}, {53,17,382}, {53,19,382}, {54,18,382}, {55,21,382}, {56,20,382}, {56,22,382}, {57,21,382}, {57,23,382}, {58,22,382}, {58,24,382}, {52,19,383}, {53,16,383}, {54,17,383}, {54,19,383}, {55,22,383}, {56,21,383}, {56,23,383}, {57,20,383}, {57,24,383}, {58,21,383}, {53,19,384}, {54,16,384}, {54,18,384}, {55,23,384}, {56,22,384}, {56,24,384}, {57,21,384}, {58,20,384}, {2,9,385}, {2,10,386}, {2,11,387}, {2,12,388}, {2,13,389}, {2,14,390}, {2,15,391}, {27,3,392}, {31,1,392}, {27,2,393}, {28,3,393}, {30,1,393}, {27,3,394}, {28,2,394}, {29,1,394}, {31,1,394}, {28,1,395}, {29,2,395}, {30,3,395}, {27,1,396}, {29,3,396}, {30,2,396}, {31,3,396}, {28,1,397}, {30,3,397}, {31,2,397}, {27,1,398}, {31,3,398}, {27,13,399}, {28,14,399}, {29,9,399}, {30,10,399}, {31,11,399}, {27,12,400}, {28,13,400}, {28,15,400}, {30,9,400}, {30,11,400}, {27,13,401}, {27,15,401}, {28,12,401}, {28,14,401}, {29,11,401}, {30,10,401}, {31,9,401}, {31,11,401}, {27,10,402}, {28,11,402}, {29,12,402}, {30,13,402}, {31,14,402}, {27,9,403}, {27,11,403}, {28,10,403}, {29,13,403}, {30,12,403}, {30,14,403}, {31,13,403}, {31,15,403}, {28,9,404}, {28,11,404}, {30,13,404}, {30,15,404}, {31,12,404}, {27,11,405}, {28,10,405}, {29,15,405}, {30,14,405}, {31,13,405}, {87,3,406}, {88,2,406}, {89,3,406}, {93,1,406}, {95,1,406}, {88,3,407}, {89,2,407}, {90,3,407}, {92,1,407}, {94,1,407}, {89,3,408}, {90,2,408}, {91,1,408}, {93,1,408}, {90,1,409}, {91,2,409}, {92,3,409}, {89,1,410}, {91,3,410}, {92,2,410}, {93,3,410}, {88,1,411}, {90,1,411}, {92,3,411}, {93,2,411}, {94,3,411}, {87,1,412}, {89,1,412}, {93,3,412}, {94,2,412}, {95,3,412}, {87,13,413}, {88,12,413}, {89,13,413}, {90,14,413}, {91,9,413}, {92,10,413}, {93,11,413}, {95,11,413}, {87,14,414}, {88,13,414}, {89,12,414}, {90,13,414}, {90,15,414}, {91,10,414}, {92,9,414}, {92,11,414}, {94,11,414}, {95,10,414}, {87,15,415}, {88,14,415}, {89,13,415}, {89,15,415}, {90,12,415}, {90,14,415}, {91,11,415}, {92,10,415}, {93,9,415}, {93,11,415}, {94,10,415}, {95,9,415}, {88,9,416}, {89,10,416}, {90,11,416}, {91,12,416}, {92,13,416}, {93,14,416}, {94,15,416}, {87,9,417}, {88,10,417}, {89,9,417}, {89,11,417}, {90,10,417}, {91,13,417}, {92,12,417}, {92,14,417}, {93,13,417}, {93,15,417}, {94,14,417}, {95,15,417}, {87,10,418}, {88,11,418}, {90,9,418}, {90,11,418}, {91,14,418}, {92,13,418}, {92,15,418}, {93,12,418}, {94,13,418}, {95,14,418}, {87,11,419}, {89,11,419}, {90,10,419}, {91,15,419}, {92,14,419}, {93,13,419}, {94,12,419}, {95,13,419}, {32,3,420}, {36,1,420}, {32,2,421}, {33,3,421}, {35,1,421}, {32,3,422}, {33,2,422}, {34,1,422}, {36,1,422}, {33,1,423}, {34,2,423}, {35,3,423}, {32,1,424}, {34,3,424}, {35,2,424}, {36,3,424}, {33,1,425}, {35,3,425}, {36,2,425}, {32,1,426}, {36,3,426}, {32,13,427}, {33,14,427}, {34,9,427}, {35,10,427}, {36,11,427}, {32,12,428}, {33,13,428}, {33,15,428}, {35,9,428}, {35,11,428}, {32,13,429}, {32,15,429}, {33,12,429}, {33,14,429}, {34,11,429}, {35,10,429}, {36,9,429}, {36,11,429}, {32,10,430}, {33,11,430}, {34,12,430}, {35,13,430}, {36,14,430}, {32,9,431}, {32,11,431}, {33,10,431}, {34,13,431}, {35,12,431}, {35,14,431}, {36,13,431}, {36,15,431}, {33,9,432}, {33,11,432}, {35,13,432}, {35,15,432}, {36,12,432}, {32,11,433}, {33,10,433}, {34,15,433}, {35,14,433}, {36,13,433}, {96,3,434}, {97,2,434}, {98,3,434}, {102,1,434}, {104,1,434}, {97,3,435}, {98,2,435}, {99,3,435}, {101,1,435}, {103,1,435}, {98,3,436}, {99,2,436}, {100,1,436}, {102,1,436}, {99,1,437}, {100,2,437}, {101,3,437}, {98,1,438}, {100,3,438}, {101,2,438}, {102,3,438}, {97,1,439}, {99,1,439}, {101,3,439}, {102,2,439}, {103,3,439}, {96,1,440}, {98,1,440}, {102,3,440}, {103,2,440}, {104,3,440}, {96,13,441}, {97,12,441}, {98,13,441}, {99,14,441}, {100,9,441}, {101,10,441}, {102,11,441}, {104,11,441}, {96,14,442}, {97,13,442}, {98,12,442}, {99,13,442}, {99,15,442}, {100,10,442}, {101,9,442}, {101,11,442}, {103,11,442}, {104,10,442}, {96,15,443}, {97,14,443}, {98,13,443}, {98,15,443}, {99,12,443}, {99,14,443}, {100,11,443}, {101,10,443}, {102,9,443}, {102,11,443}, {103,10,443}, {104,9,443}, {97,9,444}, {98,10,444}, {99,11,444}, {100,12,444}, {101,13,444}, {102,14,444}, {103,15,444}, {96,9,445}, {97,10,445}, {98,9,445}, {98,11,445}, {99,10,445}, {100,13,445}, {101,12,445}, {101,14,445}, {102,13,445}, {102,15,445}, {103,14,445}, {104,15,445}, {96,10,446}, {97,11,446}, {99,9,446}, {99,11,446}, {100,14,446}, {101,13,446}, {101,15,446}, {102,12,446}, {103,13,446}, {104,14,446}, {96,11,447}, {98,11,447}, {99,10,447}, {100,15,447}, {101,14,447}, {102,13,447}, {103,12,447}, {104,13,447}, {11,8,448}, {13,4,448}, {11,7,449}, {12,4,449}, {13,5,449}, {11,6,450}, {11,8,450}, {12,5,450}, {13,4,450}, {11,5,451}, {12,6,451}, {13,7,451}, {11,4,452}, {12,7,452}, {13,6,452}, {13,8,452}, {11,5,453}, {12,8,453}, {13,7,453}, {11,4,454}, {13,8,454}, {11,22,455}, {11,24,455}, {12,17,455}, {13,16,455}, {13,18,455}, {11,21,456}, {11,23,456}, {12,18,456}, {13,17,456}, {13,19,456}, {11,20,457}, {11,22,457}, {12,19,457}, {13,18,457}, {11,19,458}, {12,20,458}, {13,21,458}, {11,18,459}, {12,21,459}, {13,20,459}, {13,22,459}, {11,17,460}, {11,19,460}, {12,22,460}, {13,21,460}, {13,23,460}, {11,16,461}, {11,18,461}, {12,23,461}, {13,22,461}, {13,24,461}, {66,0,462}, {67,0,463}, {68,0,464}, {69,0,465}, {70,0,466}, {71,0,467}, {72,0,468}, {66,6,469}, {67,7,469}, {68,8,469}, {70,4,469}, {71,5,469}, {66,7,470}, {68,7,470}, {69,4,470}, {70,5,470}, {72,5,470}, {66,8,471}, {67,7,471}, {68,6,471}, {68,8,471}, {69,5,471}, {70,4,471}, {71,5,471}, {72,4,471}, {67,4,472}, {68,5,472}, {69,6,472}, {70,7,472}, {71,8,472}, {66,4,473}, {67,5,473}, {68,4,473}, {69,7,473}, {70,6,473}, {70,8,473}, {71,7,473}, {72,8,473}, {66,5,474}, {68,5,474}, {69,8,474}, {70,7,474}, {72,7,474}, {67,5,475}, {68,4,475}, {70,8,475}, {71,7,475}, {72,6,475}, {66,20,476}, {67,21,476}, {68,22,476}, {68,24,476}, {69,17,476}, {70,16,476}, {70,18,476}, {71,19,476}, {66,21,477}, {67,20,477}, {67,24,477}, {68,21,477}, {68,23,477}, {69,18,477}, {70,17,477}, {70,19,477}, {71,16,477}, {72,19,477}, {66,22,478}, {66,24,478}, {67,21,478}, {67,23,478}, {68,20,478}, {68,22,478}, {69,19,478}, {70,18,478}, {71,17,478}, {71,19,478}, {72,16,478}, {72,18,478}, {66,17,479}, {67,18,479}, {68,19,479}, {69,20,479}, {70,21,479}, {71,22,479}, {72,23,479}, {66,16,480}, {66,18,480}, {67,17,480}, {67,19,480}, {68,18,480}, {69,21,480}, {70,20,480}, {70,22,480}, {71,21,480}, {71,23,480}, {72,22,480}, {72,24,480}, {66,19,481}, {67,16,481}, {68,17,481}, {68,19,481}, {69,22,481}, {70,21,481}, {70,23,481}, {71,20,481}, {71,24,481}, {72,21,481}, {67,19,482}, {68,16,482}, {68,18,482}, {69,23,482}, {70,22,482}, {70,24,482}, {71,21,482}, {72,20,482}, {3,9,483}, {3,10,484}, {3,11,485}, {3,12,486}, {3,13,487}, {3,14,488}, {3,15,489}, {37,3,490}, {41,1,490}, {37,2,491}, {38,3,491}, {40,1,491}, {37,3,492}, {38,2,492}, {39,1,492}, {41,1,492}, {38,1,493}, {39,2,493}, {40,3,493}, {37,1,494}, {39,3,494}, {40,2,494}, {41,3,494}, {38,1,495}, {40,3,495}, {41,2,495}, {37,1,496}, {41,3,496}, {37,13,497}, {38,14,497}, {39,9,497}, {40,10,497}, {41,11,497}, {37,12,498}, {38,13,498}, {38,15,498}, {40,9,498}, {40,11,498}, {37,13,499}, {37,15,499}, {38,12,499}, {38,14,499}, {39,11,499}, {40,10,499}, {41,9,499}, {41,11,499}, {37,10,500}, {38,11,500}, {39,12,500}, {40,13,500}, {41,14,500}, {37,9,501}, {37,11,501}, {38,10,501}, {39,13,501}, {40,12,501}, {40,14,501}, {41,13,501}, {41,15,501}, {38,9,502}, {38,11,502}, {40,13,502}, {40,15,502}, {41,12,502}, {37,11,503}, {38,10,503}, {39,15,503}, {40,14,503}, {41,13,503}, {105,3,504}, {106,2,504}, {107,3,504}, {111,1,504}, {113,1,504}, {106,3,505}, {107,2,505}, {108,3,505}, {110,1,505}, {112,1,505}, {107,3,506}, {108,2,506}, {109,1,506}, {111,1,506}, {108,1,507}, {109,2,507}, {110,3,507}, {107,1,508}, {109,3,508}, {110,2,508}, {111,3,508}, {106,1,509}, {108,1,509}, {110,3,509}, {111,2,509}, {112,3,509}, {105,1,510}, {107,1,510}, {111,3,510}, {112,2,510}, {113,3,510}, {105,13,511}, {106,12,511}, {107,13,511}, {108,14,511}, {109,9,511}, {110,10,511}, {111,11,511}, {113,11,511}, {105,14,512}, {106,13,512}, {107,12,512}, {108,13,512}, {108,15,512}, {109,10,512}, {110,9,512}, {110,11,512}, {112,11,512}, {113,10,512}, {105,15,513}, {106,14,513}, {107,13,513}, {107,15,513}, {108,12,513}, {108,14,513}, {109,11,513}, {110,10,513}, {111,9,513}, {111,11,513}, {112,10,513}, {113,9,513}, {106,9,514}, {107,10,514}, {108,11,514}, {109,12,514}, {110,13,514}, {111,14,514}, {112,15,514}, {105,9,515}, {106,10,515}, {107,9,515}, {107,11,515}, {108,10,515}, {109,13,515}, {110,12,515}, {110,14,515}, {111,13,515}, {111,15,515}, {112,14,515}, {113,15,515}, {105,10,516}, {106,11,516}, {108,9,516}, {108,11,516}, {109,14,516}, {110,13,516}, {110,15,516}, {111,12,516}, {112,13,516}, {113,14,516}, {105,11,517}, {107,11,517}, {108,10,517}, {109,15,517}, {110,14,517}, {111,13,517}, {112,12,517}, {113,13,517}, {73,0,518}, {74,0,519}, {75,0,520}, {76,0,521}, {77,0,522}, {78,0,523}, {79,0,524}, {73,6,525}, {74,7,525}, {75,8,525}, {77,4,525}, {78,5,525}, {73,7,526}, {75,7,526}, {76,4,526}, {77,5,526}, {79,5,526}, {73,8,527}, {74,7,527}, {75,6,527}, {75,8,527}, {76,5,527}, {77,4,527}, {78,5,527}, {79,4,527}, {74,4,528}, {75,5,528}, {76,6,528}, {77,7,528}, {78,8,528}, {73,4,529}, {74,5,529}, {75,4,529}, {76,7,529}, {77,6,529}, {77,8,529}, {78,7,529}, {79,8,529}, {73,5,530}, {75,5,530}, {76,8,530}, {77,7,530}, {79,7,530}, {74,5,531}, {75,4,531}, {77,8,531}, {78,7,531}, {79,6,531}, {73,20,532}, {74,21,532}, {75,22,532}, {75,24,532}, {76,17,532}, {77,16,532}, {77,18,532}, {78,19,532}, {73,21,533}, {74,20,533}, {74,24,533}, {75,21,533}, {75,23,533}, {76,18,533}, {77,17,533}, {77,19,533}, {78,16,533}, {79,19,533}, {73,22,534}, {73,24,534}, {74,21,534}, {74,23,534}, {75,20,534}, {75,22,534}, {76,19,534}, {77,18,534}, {78,17,534}, {78,19,534}, {79,16,534}, {79,18,534}, {73,17,535}, {74,18,535}, {75,19,535}, {76,20,535}, {77,21,535}, {78,22,535}, {79,23,535}, {73,16,536}, {73,18,536}, {74,17,536}, {74,19,536}, {75,18,536}, {76,21,536}, {77,20,536}, {77,22,536}, {78,21,536}, {78,23,536}, {79,22,536}, {79,24,536}, {73,19,537}, {74,16,537}, {75,17,537}, {75,19,537}, {76,22,537}, {77,21,537}, {77,23,537}, {78,20,537}, {78,24,537}, {79,21,537}, {74,19,538}, {75,16,538}, {75,18,538}, {76,23,538}, {77,22,538}, {77,24,538}, {78,21,538}, {79,20,538}, {42,3,539}, {46,1,539}, {42,2,540}, {43,3,540}, {45,1,540}, {42,3,541}, {43,2,541}, {44,1,541}, {46,1,541}, {43,1,542}, {44,2,542}, {45,3,542}, {42,1,543}, {44,3,543}, {45,2,543}, {46,3,543}, {43,1,544}, {45,3,544}, {46,2,544}, {42,1,545}, {46,3,545}, {42,13,546}, {43,14,546}, {44,9,546}, {45,10,546}, {46,11,546}, {42,12,547}, {43,13,547}, {43,15,547}, {45,9,547}, {45,11,547}, {42,13,548}, {42,15,548}, {43,12,548}, {43,14,548}, {44,11,548}, {45,10,548}, {46,9,548}, {46,11,548}, {42,10,549}, {43,11,549}, {44,12,549}, {45,13,549}, {46,14,549}, {42,9,550}, {42,11,550}, {43,10,550}, {44,13,550}, {45,12,550}, {45,14,550}, {46,13,550}, {46,15,550}, {43,9,551}, {43,11,551}, {45,13,551}, {45,15,551}, {46,12,551}, {42,11,552}, {43,10,552}, {44,15,552}, {45,14,552}, {46,13,552}, {123,3,553}, {124,2,553}, {125,3,553}, {129,1,553}, {131,1,553}, {124,3,554}, {125,2,554}, {126,3,554}, {128,1,554}, {130,1,554}, {125,3,555}, {126,2,555}, {127,1,555}, {129,1,555}, {126,1,556}, {127,2,556}, {128,3,556}, {125,1,557}, {127,3,557}, {128,2,557}, {129,3,557}, {124,1,558}, {126,1,558}, {128,3,558}, {129,2,558}, {130,3,558}, {123,1,559}, {125,1,559}, {129,3,559}, {130,2,559}, {131,3,559}, {123,13,560}, {124,12,560}, {125,13,560}, {126,14,560}, {127,9,560}, {128,10,560}, {129,11,560}, {131,11,560}, {123,14,561}, {124,13,561}, {125,12,561}, {126,13,561}, {126,15,561}, {127,10,561}, {128,9,561}, {128,11,561}, {130,11,561}, {131,10,561}, {123,15,562}, {124,14,562}, {125,13,562}, {125,15,562}, {126,12,562}, {126,14,562}, {127,11,562}, {128,10,562}, {129,9,562}, {129,11,562}, {130,10,562}, {131,9,562}, {124,9,563}, {125,10,563}, {126,11,563}, {127,12,563}, {128,13,563}, {129,14,563}, {130,15,563}, {123,9,564}, {124,10,564}, {125,9,564}, {125,11,564}, {126,10,564}, {127,13,564}, {128,12,564}, {128,14,564}, {129,13,564}, {129,15,564}, {130,14,564}, {131,15,564}, {123,10,565}, {124,11,565}, {126,9,565}, {126,11,565}, {127,14,565}, {128,13,565}, {128,15,565}, {129,12,565}, {130,13,565}, {131,14,565}, {123,11,566}, {125,11,566}, {126,10,566}, {127,15,566}, {128,14,566}, {129,13,566}, {130,12,566}, {131,13,566}, {14,8,567}, {16,4,567}, {14,7,568}, {15,4,568}, {16,5,568}, {14,6,569}, {14,8,569}, {15,5,569}, {16,4,569}, {14,5,570}, {15,6,570}, {16,7,570}, {14,4,571}, {15,7,571}, {16,6,571}, {16,8,571}, {14,5,572}, {15,8,572}, {16,7,572}, {14,4,573}, {16,8,573}, {14,22,574}, {14,24,574}, {15,17,574}, {16,16,574}, {16,18,574}, {14,21,575}, {14,23,575}, {15,18,575}, {16,17,575}, {16,19,575}, {14,20,576}, {14,22,576}, {15,19,576}, {16,18,576}, {14,19,577}, {15,20,577}, {16,21,577}, {14,18,578}, {15,21,578}, {16,20,578}, {16,22,578}, {14,17,579}, {14,19,579}, {15,22,579}, {16,21,579}, {16,23,579}, {14,16,580}, {14,18,580}, {15,23,580}, {16,22,580}, {16,24,580}, {80,0,581}, {81,0,582}, {82,0,583}, {83,0,584}, {84,0,585}, {85,0,586}, {86,0,587}, {80,6,588}, {81,7,588}, {82,8,588}, {84,4,588}, {85,5,588}, {80,7,589}, {82,7,589}, {83,4,589}, {84,5,589}, {86,5,589}, {80,8,590}, {81,7,590}, {82,6,590}, {82,8,590}, {83,5,590}, {84,4,590}, {85,5,590}, {86,4,590}, {81,4,591}, {82,5,591}, {83,6,591}, {84,7,591}, {85,8,591}, {80,4,592}, {81,5,592}, {82,4,592}, {83,7,592}, {84,6,592}, {84,8,592}, {85,7,592}, {86,8,592}, {80,5,593}, {82,5,593}, {83,8,593}, {84,7,593}, {86,7,593}, {81,5,594}, {82,4,594}, {84,8,594}, {85,7,594}, {86,6,594}, {80,20,595}, {81,21,595}, {82,22,595}, {82,24,595}, {83,17,595}, {84,16,595}, {84,18,595}, {85,19,595}, {80,21,596}, {81,20,596}, {81,24,596}, {82,21,596}, {82,23,596}, {83,18,596}, {84,17,596}, {84,19,596}, {85,16,596}, {86,19,596}, {80,22,597}, {80,24,597}, {81,21,597}, {81,23,597}, {82,20,597}, {82,22,597}, {83,19,597}, {84,18,597}, {85,17,597}, {85,19,597}, {86,16,597}, {86,18,597}, {80,17,598}, {81,18,598}, {82,19,598}, {83,20,598}, {84,21,598}, {85,22,598}, {86,23,598}, {80,16,599}, {80,18,599}, {81,17,599}, {81,19,599}, {82,18,599}, {83,21,599}, {84,20,599}, {84,22,599}, {85,21,599}, {85,23,599}, {86,22,599}, {86,24,599}, {80,19,600}, {81,16,600}, {82,17,600}, {82,19,600}, {83,22,600}, {84,21,600}, {84,23,600}, {85,20,600}, {85,24,600}, {86,21,600}, {81,19,601}, {82,16,601}, {82,18,601}, {83,23,601}, {84,22,601}, {84,24,601}, {85,21,601}, {86,20,601}, {4,9,602}, {4,10,603}, {4,11,604}, {4,12,605}, {4,13,606}, {4,14,607}, {4,15,608}, {47,3,609}, {51,1,609}, {47,2,610}, {48,3,610}, {50,1,610}, {47,3,611}, {48,2,611}, {49,1,611}, {51,1,611}, {48,1,612}, {49,2,612}, {50,3,612}, {47,1,613}, {49,3,613}, {50,2,613}, {51,3,613}, {48,1,614}, {50,3,614}, {51,2,614}, {47,1,615}, {51,3,615}, {47,13,616}, {48,14,616}, {49,9,616}, {50,10,616}, {51,11,616}, {47,12,617}, {48,13,617}, {48,15,617}, {50,9,617}, {50,11,617}, {47,13,618}, {47,15,618}, {48,12,618}, {48,14,618}, {49,11,618}, {50,10,618}, {51,9,618}, {51,11,618}, {47,10,619}, {48,11,619}, {49,12,619}, {50,13,619}, {51,14,619}, {47,9,620}, {47,11,620}, {48,10,620}, {49,13,620}, {50,12,620}, {50,14,620}, {51,13,620}, {51,15,620}, {48,9,621}, {48,11,621}, {50,13,621}, {50,15,621}, {51,12,621}, {47,11,622}, {48,10,622}, {49,15,622}, {50,14,622}, {51,13,622}, {132,3,623}, {133,2,623}, {134,3,623}, {138,1,623}, {140,1,623}, {133,3,624}, {134,2,624}, {135,3,624}, {137,1,624}, {139,1,624}, {134,3,625}, {135,2,625}, {136,1,625}, {138,1,625}, {135,1,626}, {136,2,626}, {137,3,626}, {134,1,627}, {136,3,627}, {137,2,627}, {138,3,627}, {133,1,628}, {135,1,628}, {137,3,628}, {138,2,628}, {139,3,628}, {132,1,629}, {134,1,629}, {138,3,629}, {139,2,629}, {140,3,629}, {132,13,630}, {133,12,630}, {134,13,630}, {135,14,630}, {136,9,630}, {137,10,630}, {138,11,630}, {140,11,630}, {132,14,631}, {133,13,631}, {134,12,631}, {135,13,631}, {135,15,631}, {136,10,631}, {137,9,631}, {137,11,631}, {139,11,631}, {140,10,631}, {132,15,632}, {133,14,632}, {134,13,632}, {134,15,632}, {135,12,632}, {135,14,632}, {136,11,632}, {137,10,632}, {138,9,632}, {138,11,632}, {139,10,632}, {140,9,632}, {133,9,633}, {134,10,633}, {135,11,633}, {136,12,633}, {137,13,633}, {138,14,633}, {139,15,633}, {132,9,634}, {133,10,634}, {134,9,634}, {134,11,634}, {135,10,634}, {136,13,634}, {137,12,634}, {137,14,634}, {138,13,634}, {138,15,634}, {139,14,634}, {140,15,634}, {132,10,635}, {133,11,635}, {135,9,635}, {135,11,635}, {136,14,635}, {137,13,635}, {137,15,635}, {138,12,635}, {139,13,635}, {140,14,635}, {132,11,636}, {134,11,636}, {135,10,636}, {136,15,636}, {137,14,636}, {138,13,636}, {139,12,636}, {140,13,636}}; + static constexpr double cg[3161] = {1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, -0.03857583749052297, -0.20412414523193143, -0.06681531047810609, -0.17677669529663684, -0.13363062095621217, -0.14940357616679917, 0.17251638983558854, 0.14940357616679917, 0.17677669529663684, 0.06681531047810609, 0.20412414523193143, 0.03857583749052297, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, -0.03857583749052297, 0.17677669529663684, -0.06681531047810609, 0.14940357616679917, 0.17251638983558854, -0.13363062095621217, 0.14940357616679917, -0.06681531047810609, 0.17677669529663684, -0.03857583749052297, 0.20412414523193143, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, -0.03857583749052297, -0.20412414523193143, -0.06681531047810609, -0.17677669529663684, -0.13363062095621217, -0.14940357616679917, 0.17251638983558854, 0.14940357616679917, 0.17677669529663684, 0.06681531047810609, 0.20412414523193143, 0.03857583749052297, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, -0.03857583749052297, 0.17677669529663684, -0.06681531047810609, 0.14940357616679917, 0.17251638983558854, -0.13363062095621217, 0.14940357616679917, -0.06681531047810609, 0.17677669529663684, -0.03857583749052297, 0.20412414523193143, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, -0.03857583749052297, -0.20412414523193143, -0.06681531047810609, -0.17677669529663684, -0.13363062095621217, -0.14940357616679917, 0.17251638983558854, 0.14940357616679917, 0.17677669529663684, 0.06681531047810609, 0.20412414523193143, 0.03857583749052297, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, -0.03857583749052297, 0.17677669529663684, -0.06681531047810609, 0.14940357616679917, 0.17251638983558854, -0.13363062095621217, 0.14940357616679917, -0.06681531047810609, 0.17677669529663684, -0.03857583749052297, 0.20412414523193143, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, -0.44721359549995787, 0.3872983346207416, -0.44721359549995787, 0.3872983346207416, 0.3872983346207416, 0.22360679774997894, -0.3872983346207416, 0.22360679774997894, 0.3872983346207416, -0.3872983346207416, -0.44721359549995787, 0.22360679774997894, 0.447213595499958, 0.22360679774997894, -0.44721359549995787, 0.3872983346207416, 0.3872983346207416, 0.22360679774997894, 0.22360679774997894, 0.3872983346207416, 0.3872983346207416, -0.3872983346207416, -0.44721359549995787, 0.3872983346207416, -0.44721359549995787, 0.6454972243679027, 0.6454972243679027, 0.6454972243679028, 0.6454972243679028, -0.3726779962499649, 0.7453559924999299, -0.3726779962499649, 0.6454972243679028, 0.6454972243679028, -0.6454972243679027, 0.6454972243679027, -0.11501092655705904, -0.44543540318737396, 0.363696483726654, 0.44543540318737396, -0.11501092655705904, -0.28171808490950556, -0.363696483726654, 0.46004370622823615, 0.363696483726654, 0.3984095364447979, 0.4879500364742666, 0.3984095364447979, 0.363696483726654, 0.46004370622823615, -0.28171808490950556, 0.363696483726654, 0.44543540318737396, 0.11501092655705904, 0.363696483726654, -0.11501092655705904, 0.44543540318737396, 0.44543540318737396, 0.363696483726654, -0.11501092655705904, -0.11501092655705904, -0.44543540318737396, 0.363696483726654, 0.46004370622823615, -0.28171808490950556, -0.363696483726654, 0.3984095364447979, 0.4879500364742666, 0.3984095364447979, 0.363696483726654, -0.28171808490950556, 0.46004370622823615, 0.363696483726654, 0.44543540318737396, 0.11501092655705904, -0.11501092655705904, 0.363696483726654, 0.44543540318737396, -0.17857142857142855, -0.3571428571428571, 0.27664166758624403, 0.17857142857142855, -0.3571428571428571, -0.17857142857142855, 0.27664166758624403, 0.17857142857142855, 0.2823462196578909, 0.21870444131992656, -0.2823462196578909, 0.11293848786315638, -0.21870444131992656, 0.11293848786315638, 0.21870444131992656, 0.2823462196578909, -0.21870444131992656, -0.2823462196578909, -0.39929785312496235, 0.23957871187497742, 0.31943828249996997, 0.23957871187497742, -0.39929785312496235, 0.2823462196578909, 0.2823462196578909, 0.21870444131992656, 0.21870444131992656, 0.11293848786315638, 0.11293848786315638, 0.21870444131992656, 0.21870444131992656, 0.2823462196578909, 0.2823462196578909, -0.17857142857142855, -0.17857142857142855, -0.27664166758624403, -0.3571428571428571, 0.27664166758624403, -0.17857142857142855, -0.3571428571428571, -0.17857142857142855, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, 0.05555555555555555, -0.3286710990610897, -0.0878410461157883, -0.23240556292613204, 0.2151657414559676, 0.23240556292613204, -0.0878410461157883, 0.3286710990610897, -0.0878410461157883, -0.23240556292613204, -0.2222222222222222, -0.2484519974999766, 0.30429030972509225, 0.2484519974999766, 0.23240556292613204, 0.0878410461157883, 0.2151657414559676, 0.30429030972509225, 0.33333333333333337, 0.30429030972509225, 0.2151657414559676, 0.23240556292613204, -0.0878410461157883, 0.2484519974999766, 0.30429030972509225, -0.2222222222222222, 0.2484519974999766, -0.0878410461157883, 0.23240556292613204, 0.3286710990610897, 0.23240556292613204, 0.0878410461157883, 0.2151657414559676, -0.0878410461157883, 0.23240556292613204, 0.05555555555555555, 0.3286710990610897, -0.11385500851066216, -0.17078251276599324, -0.2886751345948128, 0.11385500851066216, 0.2151657414559675, 0.17078251276599324, -0.2886751345948128, -0.17078251276599324, 0.2151657414559675, -0.11385500851066216, 0.17078251276599324, 0.11385500851066216, 0.2130032168075645, 0.20126912147485324, -0.2130032168075645, 0.13693063937629146, -0.20126912147485324, 0.06804138174397714, -0.13693063937629146, 0.06804138174397714, 0.13693063937629146, 0.20126912147485324, -0.13693063937629146, 0.2130032168075645, -0.20126912147485324, -0.2130032168075645, -0.34783279649996723, -0.08695819912499181, 0.09938079899999062, 0.21118419787498008, 0.2484519974999766, 0.21118419787498008, 0.09938079899999062, -0.08695819912499181, -0.34783279649996723, 0.2130032168075645, 0.2130032168075645, 0.20126912147485324, 0.20126912147485324, 0.13693063937629146, 0.13693063937629146, 0.06804138174397714, 0.06804138174397714, 0.13693063937629146, 0.13693063937629146, 0.20126912147485324, 0.20126912147485324, 0.2130032168075645, 0.2130032168075645, -0.11385500851066216, -0.17078251276599324, -0.11385500851066216, -0.17078251276599324, -0.2151657414559675, -0.2886751345948128, 0.2151657414559675, -0.17078251276599324, -0.2886751345948128, -0.11385500851066216, -0.17078251276599324, -0.11385500851066216, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, -0.44721359549995787, 0.3872983346207416, -0.44721359549995787, 0.3872983346207416, 0.3872983346207416, 0.22360679774997894, -0.3872983346207416, 0.22360679774997894, 0.3872983346207416, -0.3872983346207416, -0.44721359549995787, 0.22360679774997894, 0.447213595499958, 0.22360679774997894, -0.44721359549995787, 0.3872983346207416, 0.3872983346207416, 0.22360679774997894, 0.22360679774997894, 0.3872983346207416, 0.3872983346207416, -0.3872983346207416, -0.44721359549995787, 0.3872983346207416, -0.44721359549995787, 0.05555555555555555, -0.3286710990610897, -0.0878410461157883, -0.23240556292613204, 0.2151657414559676, 0.23240556292613204, -0.0878410461157883, 0.3286710990610897, -0.0878410461157883, -0.23240556292613204, -0.2222222222222222, -0.2484519974999766, 0.30429030972509225, 0.2484519974999766, 0.23240556292613204, 0.0878410461157883, 0.2151657414559676, 0.30429030972509225, 0.33333333333333337, 0.30429030972509225, 0.2151657414559676, 0.23240556292613204, -0.0878410461157883, 0.2484519974999766, 0.30429030972509225, -0.2222222222222222, 0.2484519974999766, -0.0878410461157883, 0.23240556292613204, 0.3286710990610897, 0.23240556292613204, 0.0878410461157883, 0.2151657414559676, -0.0878410461157883, 0.23240556292613204, 0.05555555555555555, 0.3286710990610897, 0.3286710990610897, 0.23240556292613204, 0.2151657414559676, -0.0878410461157883, 0.05555555555555555, -0.0878410461157883, -0.23240556292613204, -0.3286710990610897, 0.23240556292613204, 0.2484519974999766, 0.30429030972509225, 0.0878410461157883, -0.2222222222222222, -0.0878410461157883, -0.2484519974999766, -0.23240556292613204, 0.2151657414559676, 0.30429030972509225, 0.33333333333333337, 0.30429030972509225, 0.2151657414559676, 0.23240556292613204, 0.2484519974999766, -0.0878410461157883, -0.2222222222222222, 0.30429030972509225, -0.0878410461157883, 0.2484519974999766, 0.23240556292613204, 0.3286710990610897, 0.23240556292613204, 0.0878410461157883, 0.05555555555555555, -0.0878410461157883, 0.2151657414559676, 0.23240556292613204, 0.3286710990610897, -0.11385500851066216, -0.17078251276599324, -0.2886751345948128, 0.11385500851066216, 0.2151657414559675, 0.17078251276599324, -0.2886751345948128, -0.17078251276599324, 0.2151657414559675, -0.11385500851066216, 0.17078251276599324, 0.11385500851066216, 0.2130032168075645, 0.20126912147485324, -0.2130032168075645, 0.13693063937629146, -0.20126912147485324, 0.06804138174397714, -0.13693063937629146, 0.06804138174397714, 0.13693063937629146, 0.20126912147485324, -0.13693063937629146, 0.2130032168075645, -0.20126912147485324, -0.2130032168075645, -0.34783279649996723, -0.08695819912499181, 0.09938079899999062, 0.21118419787498008, 0.2484519974999766, 0.21118419787498008, 0.09938079899999062, -0.08695819912499181, -0.34783279649996723, 0.2130032168075645, 0.2130032168075645, 0.20126912147485324, 0.20126912147485324, 0.13693063937629146, 0.13693063937629146, 0.06804138174397714, 0.06804138174397714, 0.13693063937629146, 0.13693063937629146, 0.20126912147485324, 0.20126912147485324, 0.2130032168075645, 0.2130032168075645, -0.11385500851066216, -0.17078251276599324, -0.11385500851066216, -0.17078251276599324, -0.2151657414559675, -0.2886751345948128, 0.2151657414559675, -0.17078251276599324, -0.2886751345948128, -0.11385500851066216, -0.17078251276599324, -0.11385500851066216, 0.6454972243679027, 0.6454972243679027, 0.6454972243679028, 0.6454972243679028, -0.3726779962499649, 0.7453559924999299, -0.3726779962499649, 0.6454972243679028, 0.6454972243679028, -0.6454972243679027, 0.6454972243679027, -0.11501092655705904, -0.44543540318737396, 0.363696483726654, 0.44543540318737396, -0.11501092655705904, -0.28171808490950556, -0.363696483726654, 0.46004370622823615, 0.363696483726654, 0.3984095364447979, 0.4879500364742666, 0.3984095364447979, 0.363696483726654, 0.46004370622823615, -0.28171808490950556, 0.363696483726654, 0.44543540318737396, 0.11501092655705904, 0.363696483726654, -0.11501092655705904, 0.44543540318737396, 0.44543540318737396, 0.363696483726654, -0.11501092655705904, -0.11501092655705904, -0.44543540318737396, 0.363696483726654, 0.46004370622823615, -0.28171808490950556, -0.363696483726654, 0.3984095364447979, 0.4879500364742666, 0.3984095364447979, 0.363696483726654, -0.28171808490950556, 0.46004370622823615, 0.363696483726654, 0.44543540318737396, 0.11501092655705904, -0.11501092655705904, 0.363696483726654, 0.44543540318737396, -0.17857142857142855, -0.3571428571428571, 0.27664166758624403, 0.17857142857142855, -0.3571428571428571, -0.17857142857142855, 0.27664166758624403, 0.17857142857142855, 0.2823462196578909, 0.21870444131992656, -0.2823462196578909, 0.11293848786315638, -0.21870444131992656, 0.11293848786315638, 0.21870444131992656, 0.2823462196578909, -0.21870444131992656, -0.2823462196578909, -0.39929785312496235, 0.23957871187497742, 0.31943828249996997, 0.23957871187497742, -0.39929785312496235, 0.2823462196578909, 0.2823462196578909, 0.21870444131992656, 0.21870444131992656, 0.11293848786315638, 0.11293848786315638, 0.21870444131992656, 0.21870444131992656, 0.2823462196578909, 0.2823462196578909, -0.17857142857142855, -0.17857142857142855, -0.27664166758624403, -0.3571428571428571, 0.27664166758624403, -0.17857142857142855, -0.3571428571428571, -0.17857142857142855, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, -0.44721359549995787, 0.3872983346207416, -0.44721359549995787, 0.3872983346207416, 0.3872983346207416, 0.22360679774997894, -0.3872983346207416, 0.22360679774997894, 0.3872983346207416, -0.3872983346207416, -0.44721359549995787, 0.22360679774997894, 0.447213595499958, 0.22360679774997894, -0.44721359549995787, 0.3872983346207416, 0.3872983346207416, 0.22360679774997894, 0.22360679774997894, 0.3872983346207416, 0.3872983346207416, -0.3872983346207416, -0.44721359549995787, 0.3872983346207416, -0.44721359549995787, 0.05555555555555555, -0.3286710990610897, -0.0878410461157883, -0.23240556292613204, 0.2151657414559676, 0.23240556292613204, -0.0878410461157883, 0.3286710990610897, -0.0878410461157883, -0.23240556292613204, -0.2222222222222222, -0.2484519974999766, 0.30429030972509225, 0.2484519974999766, 0.23240556292613204, 0.0878410461157883, 0.2151657414559676, 0.30429030972509225, 0.33333333333333337, 0.30429030972509225, 0.2151657414559676, 0.23240556292613204, -0.0878410461157883, 0.2484519974999766, 0.30429030972509225, -0.2222222222222222, 0.2484519974999766, -0.0878410461157883, 0.23240556292613204, 0.3286710990610897, 0.23240556292613204, 0.0878410461157883, 0.2151657414559676, -0.0878410461157883, 0.23240556292613204, 0.05555555555555555, 0.3286710990610897, 0.3286710990610897, 0.23240556292613204, 0.2151657414559676, -0.0878410461157883, 0.05555555555555555, -0.0878410461157883, -0.23240556292613204, -0.3286710990610897, 0.23240556292613204, 0.2484519974999766, 0.30429030972509225, 0.0878410461157883, -0.2222222222222222, -0.0878410461157883, -0.2484519974999766, -0.23240556292613204, 0.2151657414559676, 0.30429030972509225, 0.33333333333333337, 0.30429030972509225, 0.2151657414559676, 0.23240556292613204, 0.2484519974999766, -0.0878410461157883, -0.2222222222222222, 0.30429030972509225, -0.0878410461157883, 0.2484519974999766, 0.23240556292613204, 0.3286710990610897, 0.23240556292613204, 0.0878410461157883, 0.05555555555555555, -0.0878410461157883, 0.2151657414559676, 0.23240556292613204, 0.3286710990610897, -0.11385500851066216, -0.17078251276599324, -0.2886751345948128, 0.11385500851066216, 0.2151657414559675, 0.17078251276599324, -0.2886751345948128, -0.17078251276599324, 0.2151657414559675, -0.11385500851066216, 0.17078251276599324, 0.11385500851066216, 0.2130032168075645, 0.20126912147485324, -0.2130032168075645, 0.13693063937629146, -0.20126912147485324, 0.06804138174397714, -0.13693063937629146, 0.06804138174397714, 0.13693063937629146, 0.20126912147485324, -0.13693063937629146, 0.2130032168075645, -0.20126912147485324, -0.2130032168075645, -0.34783279649996723, -0.08695819912499181, 0.09938079899999062, 0.21118419787498008, 0.2484519974999766, 0.21118419787498008, 0.09938079899999062, -0.08695819912499181, -0.34783279649996723, 0.2130032168075645, 0.2130032168075645, 0.20126912147485324, 0.20126912147485324, 0.13693063937629146, 0.13693063937629146, 0.06804138174397714, 0.06804138174397714, 0.13693063937629146, 0.13693063937629146, 0.20126912147485324, 0.20126912147485324, 0.2130032168075645, 0.2130032168075645, -0.11385500851066216, -0.17078251276599324, -0.11385500851066216, -0.17078251276599324, -0.2151657414559675, -0.2886751345948128, 0.2151657414559675, -0.17078251276599324, -0.2886751345948128, -0.11385500851066216, -0.17078251276599324, -0.11385500851066216, 0.44543540318737396, 0.363696483726654, -0.11501092655705904, -0.11501092655705904, -0.44543540318737396, 0.363696483726654, 0.46004370622823615, -0.28171808490950556, -0.363696483726654, 0.3984095364447979, 0.4879500364742666, 0.3984095364447979, 0.363696483726654, -0.28171808490950556, 0.46004370622823615, 0.363696483726654, 0.44543540318737396, 0.11501092655705904, -0.11501092655705904, 0.363696483726654, 0.44543540318737396, -0.17857142857142855, -0.3571428571428571, 0.27664166758624403, 0.17857142857142855, -0.3571428571428571, -0.17857142857142855, 0.27664166758624403, 0.17857142857142855, 0.2823462196578909, 0.21870444131992656, -0.2823462196578909, 0.11293848786315638, -0.21870444131992656, 0.11293848786315638, 0.21870444131992656, 0.2823462196578909, -0.21870444131992656, -0.2823462196578909, -0.39929785312496235, 0.23957871187497742, 0.31943828249996997, 0.23957871187497742, -0.39929785312496235, 0.2823462196578909, 0.2823462196578909, 0.21870444131992656, 0.21870444131992656, 0.11293848786315638, 0.11293848786315638, 0.21870444131992656, 0.21870444131992656, 0.2823462196578909, 0.2823462196578909, -0.17857142857142855, -0.17857142857142855, -0.27664166758624403, -0.3571428571428571, 0.27664166758624403, -0.17857142857142855, -0.3571428571428571, -0.17857142857142855, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, -0.44721359549995787, 0.3872983346207416, -0.44721359549995787, 0.3872983346207416, 0.3872983346207416, 0.22360679774997894, -0.3872983346207416, 0.22360679774997894, 0.3872983346207416, -0.3872983346207416, -0.44721359549995787, 0.22360679774997894, 0.447213595499958, 0.22360679774997894, -0.44721359549995787, 0.3872983346207416, 0.3872983346207416, 0.22360679774997894, 0.22360679774997894, 0.3872983346207416, 0.3872983346207416, -0.3872983346207416, -0.44721359549995787, 0.3872983346207416, -0.44721359549995787, 0.05555555555555555, -0.3286710990610897, -0.0878410461157883, -0.23240556292613204, 0.2151657414559676, 0.23240556292613204, -0.0878410461157883, 0.3286710990610897, -0.0878410461157883, -0.23240556292613204, -0.2222222222222222, -0.2484519974999766, 0.30429030972509225, 0.2484519974999766, 0.23240556292613204, 0.0878410461157883, 0.2151657414559676, 0.30429030972509225, 0.33333333333333337, 0.30429030972509225, 0.2151657414559676, 0.23240556292613204, -0.0878410461157883, 0.2484519974999766, 0.30429030972509225, -0.2222222222222222, 0.2484519974999766, -0.0878410461157883, 0.23240556292613204, 0.3286710990610897, 0.23240556292613204, 0.0878410461157883, 0.2151657414559676, -0.0878410461157883, 0.23240556292613204, 0.05555555555555555, 0.3286710990610897, 0.3286710990610897, 0.23240556292613204, 0.2151657414559676, -0.0878410461157883, 0.05555555555555555, -0.0878410461157883, -0.23240556292613204, -0.3286710990610897, 0.23240556292613204, 0.2484519974999766, 0.30429030972509225, 0.0878410461157883, -0.2222222222222222, -0.0878410461157883, -0.2484519974999766, -0.23240556292613204, 0.2151657414559676, 0.30429030972509225, 0.33333333333333337, 0.30429030972509225, 0.2151657414559676, 0.23240556292613204, 0.2484519974999766, -0.0878410461157883, -0.2222222222222222, 0.30429030972509225, -0.0878410461157883, 0.2484519974999766, 0.23240556292613204, 0.3286710990610897, 0.23240556292613204, 0.0878410461157883, 0.05555555555555555, -0.0878410461157883, 0.2151657414559676, 0.23240556292613204, 0.3286710990610897, -0.11385500851066216, -0.17078251276599324, -0.2886751345948128, 0.11385500851066216, 0.2151657414559675, 0.17078251276599324, -0.2886751345948128, -0.17078251276599324, 0.2151657414559675, -0.11385500851066216, 0.17078251276599324, 0.11385500851066216, 0.2130032168075645, 0.20126912147485324, -0.2130032168075645, 0.13693063937629146, -0.20126912147485324, 0.06804138174397714, -0.13693063937629146, 0.06804138174397714, 0.13693063937629146, 0.20126912147485324, -0.13693063937629146, 0.2130032168075645, -0.20126912147485324, -0.2130032168075645, -0.34783279649996723, -0.08695819912499181, 0.09938079899999062, 0.21118419787498008, 0.2484519974999766, 0.21118419787498008, 0.09938079899999062, -0.08695819912499181, -0.34783279649996723, 0.2130032168075645, 0.2130032168075645, 0.20126912147485324, 0.20126912147485324, 0.13693063937629146, 0.13693063937629146, 0.06804138174397714, 0.06804138174397714, 0.13693063937629146, 0.13693063937629146, 0.20126912147485324, 0.20126912147485324, 0.2130032168075645, 0.2130032168075645, -0.11385500851066216, -0.17078251276599324, -0.11385500851066216, -0.17078251276599324, -0.2151657414559675, -0.2886751345948128, 0.2151657414559675, -0.17078251276599324, -0.2886751345948128, -0.11385500851066216, -0.17078251276599324, -0.11385500851066216, 0.6454972243679027, 0.6454972243679027, 0.6454972243679028, 0.6454972243679028, -0.3726779962499649, 0.7453559924999299, -0.3726779962499649, 0.6454972243679028, 0.6454972243679028, -0.6454972243679027, 0.6454972243679027, -0.11501092655705904, -0.44543540318737396, 0.363696483726654, 0.44543540318737396, -0.11501092655705904, -0.28171808490950556, -0.363696483726654, 0.46004370622823615, 0.363696483726654, 0.3984095364447979, 0.4879500364742666, 0.3984095364447979, 0.363696483726654, 0.46004370622823615, -0.28171808490950556, 0.363696483726654, 0.44543540318737396, 0.11501092655705904, 0.363696483726654, -0.11501092655705904, 0.44543540318737396, 0.44543540318737396, 0.363696483726654, -0.11501092655705904, -0.11501092655705904, -0.44543540318737396, 0.363696483726654, 0.46004370622823615, -0.28171808490950556, -0.363696483726654, 0.3984095364447979, 0.4879500364742666, 0.3984095364447979, 0.363696483726654, -0.28171808490950556, 0.46004370622823615, 0.363696483726654, 0.44543540318737396, 0.11501092655705904, -0.11501092655705904, 0.363696483726654, 0.44543540318737396, -0.17857142857142855, -0.3571428571428571, 0.27664166758624403, 0.17857142857142855, -0.3571428571428571, -0.17857142857142855, 0.27664166758624403, 0.17857142857142855, 0.2823462196578909, 0.21870444131992656, -0.2823462196578909, 0.11293848786315638, -0.21870444131992656, 0.11293848786315638, 0.21870444131992656, 0.2823462196578909, -0.21870444131992656, -0.2823462196578909, -0.39929785312496235, 0.23957871187497742, 0.31943828249996997, 0.23957871187497742, -0.39929785312496235, 0.2823462196578909, 0.2823462196578909, 0.21870444131992656, 0.21870444131992656, 0.11293848786315638, 0.11293848786315638, 0.21870444131992656, 0.21870444131992656, 0.2823462196578909, 0.2823462196578909, -0.17857142857142855, -0.17857142857142855, -0.27664166758624403, -0.3571428571428571, 0.27664166758624403, -0.17857142857142855, -0.3571428571428571, -0.17857142857142855, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, -0.44721359549995787, 0.3872983346207416, -0.44721359549995787, 0.3872983346207416, 0.3872983346207416, 0.22360679774997894, -0.3872983346207416, 0.22360679774997894, 0.3872983346207416, -0.3872983346207416, -0.44721359549995787, 0.22360679774997894, 0.447213595499958, 0.22360679774997894, -0.44721359549995787, 0.3872983346207416, 0.3872983346207416, 0.22360679774997894, 0.22360679774997894, 0.3872983346207416, 0.3872983346207416, -0.3872983346207416, -0.44721359549995787, 0.3872983346207416, -0.44721359549995787, 0.05555555555555555, -0.3286710990610897, -0.0878410461157883, -0.23240556292613204, 0.2151657414559676, 0.23240556292613204, -0.0878410461157883, 0.3286710990610897, -0.0878410461157883, -0.23240556292613204, -0.2222222222222222, -0.2484519974999766, 0.30429030972509225, 0.2484519974999766, 0.23240556292613204, 0.0878410461157883, 0.2151657414559676, 0.30429030972509225, 0.33333333333333337, 0.30429030972509225, 0.2151657414559676, 0.23240556292613204, -0.0878410461157883, 0.2484519974999766, 0.30429030972509225, -0.2222222222222222, 0.2484519974999766, -0.0878410461157883, 0.23240556292613204, 0.3286710990610897, 0.23240556292613204, 0.0878410461157883, 0.2151657414559676, -0.0878410461157883, 0.23240556292613204, 0.05555555555555555, 0.3286710990610897, 0.3286710990610897, 0.23240556292613204, 0.2151657414559676, -0.0878410461157883, 0.05555555555555555, -0.0878410461157883, -0.23240556292613204, -0.3286710990610897, 0.23240556292613204, 0.2484519974999766, 0.30429030972509225, 0.0878410461157883, -0.2222222222222222, -0.0878410461157883, -0.2484519974999766, -0.23240556292613204, 0.2151657414559676, 0.30429030972509225, 0.33333333333333337, 0.30429030972509225, 0.2151657414559676, 0.23240556292613204, 0.2484519974999766, -0.0878410461157883, -0.2222222222222222, 0.30429030972509225, -0.0878410461157883, 0.2484519974999766, 0.23240556292613204, 0.3286710990610897, 0.23240556292613204, 0.0878410461157883, 0.05555555555555555, -0.0878410461157883, 0.2151657414559676, 0.23240556292613204, 0.3286710990610897, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, 0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.557773351022717, 0.6440611887195306, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, 0.39528470752104733, 0.30618621784789724, 0.3872983346207416, 0.24999999999999994, 0.15811388300841894, -0.30618621784789724, 0.33541019662496846, 0.30618621784789724, -0.24999999999999994, -0.3872983346207416, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.3872983346207416, 0.30618621784789724, 0.33541019662496846, 0.15811388300841894, 0.30618621784789724, 0.3872983346207416, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, 0.30618621784789724, 0.39528470752104733, -0.4999999999999999, 0.24999999999999994, -0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, 0.557773351022717, 0.1610152971798826, 0.6440611887195306, -0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, -0.09001028747788692, -0.4762896722078401, 0.3367876570272817, 0.4762896722078401, -0.09001028747788692, -0.15590239111558082, -0.4124789556921526, 0.4409585518440983, 0.4124789556921526, -0.15590239111558082, -0.31180478223116176, -0.3486083443891981, 0.4930066485916346, 0.3486083443891981, 0.4025382429497066, 0.5091750772173156, 0.4025382429497066, 0.3486083443891981, 0.4930066485916346, -0.31180478223116176, 0.3486083443891981, 0.4124789556921526, 0.15590239111558082, 0.4409585518440983, -0.15590239111558082, 0.4124789556921526, 0.4762896722078401, 0.09001028747788692, 0.3367876570272817, -0.09001028747788692, 0.4762896722078401, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.24999999999999994, 0.39528470752104733, 0.39528470752104733, 0.30618621784789724, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, -0.24999999999999994, 0.30618621784789724, 0.33541019662496846, -0.3872983346207416, 0.15811388300841894, 0.3872983346207416, -0.30618621784789724, 0.24999999999999994, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.30618621784789724, 0.3872983346207416, 0.15811388300841894, 0.33541019662496846, 0.3872983346207416, 0.30618621784789724, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, -0.4999999999999999, 0.30618621784789724, 0.39528470752104733, -0.39528470752104733, 0.24999999999999994, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, 0.2545875386086577, -0.4409585518440983, -0.2545875386086577, 0.28867513459481275, -0.21516574145596756, -0.21516574145596756, -0.3888888888888888, -0.3286710990610897, 0.22222222222222215, -0.14698618394803278, -0.0962250448649376, 0.14698618394803278, 0.22222222222222215, 0.3286710990610897, 0.21516574145596756, 0.28867513459481275, 0.2545875386086577, 0.22222222222222215, -0.14698618394803278, 0.05555555555555554, -0.24845199749997657, 0.21516574145596756, 0.24845199749997657, 0.14698618394803278, -0.22222222222222215, -0.2545875386086577, -0.28867513459481275, -0.4409585518440983, -0.0962250448649376, 0.21516574145596756, 0.3333333333333333, 0.21516574145596756, -0.0962250448649376, -0.4409585518440983, -0.2545875386086577, 0.28867513459481275, 0.14698618394803278, 0.22222222222222215, 0.24845199749997657, 0.21516574145596756, 0.05555555555555554, 0.24845199749997657, 0.22222222222222215, 0.14698618394803278, 0.28867513459481275, -0.2545875386086577, -0.21516574145596756, 0.3286710990610897, 0.14698618394803278, -0.22222222222222215, -0.0962250448649376, 0.22222222222222215, 0.14698618394803278, -0.3888888888888888, 0.3286710990610897, -0.21516574145596756, 0.21516574145596756, -0.2545875386086577, -0.28867513459481275, -0.4409585518440983, 0.28867513459481275, -0.2545875386086577, -0.21516574145596756, 0.16666666666666663, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, 0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.557773351022717, 0.6440611887195306, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, 0.39528470752104733, 0.30618621784789724, 0.3872983346207416, 0.24999999999999994, 0.15811388300841894, -0.30618621784789724, 0.33541019662496846, 0.30618621784789724, -0.24999999999999994, -0.3872983346207416, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.3872983346207416, 0.30618621784789724, 0.33541019662496846, 0.15811388300841894, 0.30618621784789724, 0.3872983346207416, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, 0.30618621784789724, 0.39528470752104733, -0.4999999999999999, 0.24999999999999994, -0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, 0.4762896722078401, 0.3367876570272817, -0.09001028747788692, -0.09001028747788692, -0.4762896722078401, 0.4124789556921526, 0.4409585518440983, -0.15590239111558082, -0.15590239111558082, -0.4124789556921526, 0.3486083443891981, 0.4930066485916346, -0.31180478223116176, -0.3486083443891981, 0.4025382429497066, 0.5091750772173156, 0.4025382429497066, 0.3486083443891981, -0.31180478223116176, 0.4930066485916346, 0.3486083443891981, 0.4124789556921526, 0.15590239111558082, -0.15590239111558082, 0.4409585518440983, 0.4124789556921526, 0.4762896722078401, 0.09001028747788692, -0.09001028747788692, 0.3367876570272817, 0.4762896722078401, -0.2545875386086577, -0.4409585518440983, 0.28867513459481275, -0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, 0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.0962250448649376, 0.22222222222222215, 0.21516574145596756, -0.3888888888888888, -0.21516574145596756, 0.22222222222222215, -0.14698618394803278, -0.3286710990610897, -0.2545875386086577, 0.14698618394803278, 0.24845199749997657, -0.28867513459481275, 0.21516574145596756, -0.22222222222222215, 0.05555555555555554, 0.22222222222222215, 0.28867513459481275, -0.24845199749997657, -0.14698618394803278, 0.2545875386086577, -0.4409585518440983, -0.0962250448649376, 0.21516574145596756, 0.3333333333333333, 0.21516574145596756, -0.0962250448649376, -0.4409585518440983, -0.2545875386086577, 0.14698618394803278, 0.28867513459481275, 0.24845199749997657, 0.22222222222222215, 0.05555555555555554, 0.21516574145596756, 0.22222222222222215, 0.24845199749997657, 0.28867513459481275, 0.14698618394803278, -0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.21516574145596756, -0.22222222222222215, -0.3888888888888888, 0.22222222222222215, -0.21516574145596756, -0.0962250448649376, 0.14698618394803278, 0.3286710990610897, -0.2545875386086577, -0.28867513459481275, 0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, -0.4409585518440983, -0.2545875386086577, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, 0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.557773351022717, 0.6440611887195306, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, 0.39528470752104733, 0.30618621784789724, 0.3872983346207416, 0.24999999999999994, 0.15811388300841894, -0.30618621784789724, 0.33541019662496846, 0.30618621784789724, -0.24999999999999994, -0.3872983346207416, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.3872983346207416, 0.30618621784789724, 0.33541019662496846, 0.15811388300841894, 0.30618621784789724, 0.3872983346207416, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, 0.30618621784789724, 0.39528470752104733, -0.4999999999999999, 0.24999999999999994, -0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, 0.4762896722078401, 0.3367876570272817, -0.09001028747788692, -0.09001028747788692, -0.4762896722078401, 0.4124789556921526, 0.4409585518440983, -0.15590239111558082, -0.15590239111558082, -0.4124789556921526, 0.3486083443891981, 0.4930066485916346, -0.31180478223116176, -0.3486083443891981, 0.4025382429497066, 0.5091750772173156, 0.4025382429497066, 0.3486083443891981, -0.31180478223116176, 0.4930066485916346, 0.3486083443891981, 0.4124789556921526, 0.15590239111558082, -0.15590239111558082, 0.4409585518440983, 0.4124789556921526, 0.4762896722078401, 0.09001028747788692, -0.09001028747788692, 0.3367876570272817, 0.4762896722078401, -0.2545875386086577, -0.4409585518440983, 0.28867513459481275, -0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, 0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.0962250448649376, 0.22222222222222215, 0.21516574145596756, -0.3888888888888888, -0.21516574145596756, 0.22222222222222215, -0.14698618394803278, -0.3286710990610897, -0.2545875386086577, 0.14698618394803278, 0.24845199749997657, -0.28867513459481275, 0.21516574145596756, -0.22222222222222215, 0.05555555555555554, 0.22222222222222215, 0.28867513459481275, -0.24845199749997657, -0.14698618394803278, 0.2545875386086577, -0.4409585518440983, -0.0962250448649376, 0.21516574145596756, 0.3333333333333333, 0.21516574145596756, -0.0962250448649376, -0.4409585518440983, -0.2545875386086577, 0.14698618394803278, 0.28867513459481275, 0.24845199749997657, 0.22222222222222215, 0.05555555555555554, 0.21516574145596756, 0.22222222222222215, 0.24845199749997657, 0.28867513459481275, 0.14698618394803278, -0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.21516574145596756, -0.22222222222222215, -0.3888888888888888, 0.22222222222222215, -0.21516574145596756, -0.0962250448649376, 0.14698618394803278, 0.3286710990610897, -0.2545875386086577, -0.28867513459481275, 0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, -0.4409585518440983, -0.2545875386086577, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, 0.557773351022717, 0.1610152971798826, 0.6440611887195306, -0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, -0.09001028747788692, -0.4762896722078401, 0.3367876570272817, 0.4762896722078401, -0.09001028747788692, -0.15590239111558082, -0.4124789556921526, 0.4409585518440983, 0.4124789556921526, -0.15590239111558082, -0.31180478223116176, -0.3486083443891981, 0.4930066485916346, 0.3486083443891981, 0.4025382429497066, 0.5091750772173156, 0.4025382429497066, 0.3486083443891981, 0.4930066485916346, -0.31180478223116176, 0.3486083443891981, 0.4124789556921526, 0.15590239111558082, 0.4409585518440983, -0.15590239111558082, 0.4124789556921526, 0.4762896722078401, 0.09001028747788692, 0.3367876570272817, -0.09001028747788692, 0.4762896722078401, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.24999999999999994, 0.39528470752104733, 0.39528470752104733, 0.30618621784789724, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, -0.24999999999999994, 0.30618621784789724, 0.33541019662496846, -0.3872983346207416, 0.15811388300841894, 0.3872983346207416, -0.30618621784789724, 0.24999999999999994, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.30618621784789724, 0.3872983346207416, 0.15811388300841894, 0.33541019662496846, 0.3872983346207416, 0.30618621784789724, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, -0.4999999999999999, 0.30618621784789724, 0.39528470752104733, -0.39528470752104733, 0.24999999999999994, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, 0.2545875386086577, -0.4409585518440983, -0.2545875386086577, 0.28867513459481275, -0.21516574145596756, -0.21516574145596756, -0.3888888888888888, -0.3286710990610897, 0.22222222222222215, -0.14698618394803278, -0.0962250448649376, 0.14698618394803278, 0.22222222222222215, 0.3286710990610897, 0.21516574145596756, 0.28867513459481275, 0.2545875386086577, 0.22222222222222215, -0.14698618394803278, 0.05555555555555554, -0.24845199749997657, 0.21516574145596756, 0.24845199749997657, 0.14698618394803278, -0.22222222222222215, -0.2545875386086577, -0.28867513459481275, -0.4409585518440983, -0.0962250448649376, 0.21516574145596756, 0.3333333333333333, 0.21516574145596756, -0.0962250448649376, -0.4409585518440983, -0.2545875386086577, 0.28867513459481275, 0.14698618394803278, 0.22222222222222215, 0.24845199749997657, 0.21516574145596756, 0.05555555555555554, 0.24845199749997657, 0.22222222222222215, 0.14698618394803278, 0.28867513459481275, -0.2545875386086577, -0.21516574145596756, 0.3286710990610897, 0.14698618394803278, -0.22222222222222215, -0.0962250448649376, 0.22222222222222215, 0.14698618394803278, -0.3888888888888888, 0.3286710990610897, -0.21516574145596756, 0.21516574145596756, -0.2545875386086577, -0.28867513459481275, -0.4409585518440983, 0.28867513459481275, -0.2545875386086577, -0.21516574145596756, 0.16666666666666663, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, 0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.557773351022717, 0.6440611887195306, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, 0.39528470752104733, 0.30618621784789724, 0.3872983346207416, 0.24999999999999994, 0.15811388300841894, -0.30618621784789724, 0.33541019662496846, 0.30618621784789724, -0.24999999999999994, -0.3872983346207416, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.3872983346207416, 0.30618621784789724, 0.33541019662496846, 0.15811388300841894, 0.30618621784789724, 0.3872983346207416, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, 0.30618621784789724, 0.39528470752104733, -0.4999999999999999, 0.24999999999999994, -0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, 0.4762896722078401, 0.3367876570272817, -0.09001028747788692, -0.09001028747788692, -0.4762896722078401, 0.4124789556921526, 0.4409585518440983, -0.15590239111558082, -0.15590239111558082, -0.4124789556921526, 0.3486083443891981, 0.4930066485916346, -0.31180478223116176, -0.3486083443891981, 0.4025382429497066, 0.5091750772173156, 0.4025382429497066, 0.3486083443891981, -0.31180478223116176, 0.4930066485916346, 0.3486083443891981, 0.4124789556921526, 0.15590239111558082, -0.15590239111558082, 0.4409585518440983, 0.4124789556921526, 0.4762896722078401, 0.09001028747788692, -0.09001028747788692, 0.3367876570272817, 0.4762896722078401, -0.2545875386086577, -0.4409585518440983, 0.28867513459481275, -0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, 0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.0962250448649376, 0.22222222222222215, 0.21516574145596756, -0.3888888888888888, -0.21516574145596756, 0.22222222222222215, -0.14698618394803278, -0.3286710990610897, -0.2545875386086577, 0.14698618394803278, 0.24845199749997657, -0.28867513459481275, 0.21516574145596756, -0.22222222222222215, 0.05555555555555554, 0.22222222222222215, 0.28867513459481275, -0.24845199749997657, -0.14698618394803278, 0.2545875386086577, -0.4409585518440983, -0.0962250448649376, 0.21516574145596756, 0.3333333333333333, 0.21516574145596756, -0.0962250448649376, -0.4409585518440983, -0.2545875386086577, 0.14698618394803278, 0.28867513459481275, 0.24845199749997657, 0.22222222222222215, 0.05555555555555554, 0.21516574145596756, 0.22222222222222215, 0.24845199749997657, 0.28867513459481275, 0.14698618394803278, -0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.21516574145596756, -0.22222222222222215, -0.3888888888888888, 0.22222222222222215, -0.21516574145596756, -0.0962250448649376, 0.14698618394803278, 0.3286710990610897, -0.2545875386086577, -0.28867513459481275, 0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, -0.4409585518440983, -0.2545875386086577, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.24999999999999994, 0.39528470752104733, 0.39528470752104733, 0.30618621784789724, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, -0.24999999999999994, 0.30618621784789724, 0.33541019662496846, -0.3872983346207416, 0.15811388300841894, 0.3872983346207416, -0.30618621784789724, 0.24999999999999994, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.30618621784789724, 0.3872983346207416, 0.15811388300841894, 0.33541019662496846, 0.3872983346207416, 0.30618621784789724, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, -0.4999999999999999, 0.30618621784789724, 0.39528470752104733, -0.39528470752104733, 0.24999999999999994, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, 0.2545875386086577, -0.4409585518440983, -0.2545875386086577, 0.28867513459481275, -0.21516574145596756, -0.21516574145596756, -0.3888888888888888, -0.3286710990610897, 0.22222222222222215, -0.14698618394803278, -0.0962250448649376, 0.14698618394803278, 0.22222222222222215, 0.3286710990610897, 0.21516574145596756, 0.28867513459481275, 0.2545875386086577, 0.22222222222222215, -0.14698618394803278, 0.05555555555555554, -0.24845199749997657, 0.21516574145596756, 0.24845199749997657, 0.14698618394803278, -0.22222222222222215, -0.2545875386086577, -0.28867513459481275, -0.4409585518440983, -0.0962250448649376, 0.21516574145596756, 0.3333333333333333, 0.21516574145596756, -0.0962250448649376, -0.4409585518440983, -0.2545875386086577, 0.28867513459481275, 0.14698618394803278, 0.22222222222222215, 0.24845199749997657, 0.21516574145596756, 0.05555555555555554, 0.24845199749997657, 0.22222222222222215, 0.14698618394803278, 0.28867513459481275, -0.2545875386086577, -0.21516574145596756, 0.3286710990610897, 0.14698618394803278, -0.22222222222222215, -0.0962250448649376, 0.22222222222222215, 0.14698618394803278, -0.3888888888888888, 0.3286710990610897, -0.21516574145596756, 0.21516574145596756, -0.2545875386086577, -0.28867513459481275, -0.4409585518440983, 0.28867513459481275, -0.2545875386086577, -0.21516574145596756, 0.16666666666666663, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, 0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.557773351022717, 0.6440611887195306, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, 0.39528470752104733, 0.30618621784789724, 0.3872983346207416, 0.24999999999999994, 0.15811388300841894, -0.30618621784789724, 0.33541019662496846, 0.30618621784789724, -0.24999999999999994, -0.3872983346207416, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.3872983346207416, 0.30618621784789724, 0.33541019662496846, 0.15811388300841894, 0.30618621784789724, 0.3872983346207416, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, 0.30618621784789724, 0.39528470752104733, -0.4999999999999999, 0.24999999999999994, -0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, 0.4762896722078401, 0.3367876570272817, -0.09001028747788692, -0.09001028747788692, -0.4762896722078401, 0.4124789556921526, 0.4409585518440983, -0.15590239111558082, -0.15590239111558082, -0.4124789556921526, 0.3486083443891981, 0.4930066485916346, -0.31180478223116176, -0.3486083443891981, 0.4025382429497066, 0.5091750772173156, 0.4025382429497066, 0.3486083443891981, -0.31180478223116176, 0.4930066485916346, 0.3486083443891981, 0.4124789556921526, 0.15590239111558082, -0.15590239111558082, 0.4409585518440983, 0.4124789556921526, 0.4762896722078401, 0.09001028747788692, -0.09001028747788692, 0.3367876570272817, 0.4762896722078401, -0.2545875386086577, -0.4409585518440983, 0.28867513459481275, -0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, 0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.0962250448649376, 0.22222222222222215, 0.21516574145596756, -0.3888888888888888, -0.21516574145596756, 0.22222222222222215, -0.14698618394803278, -0.3286710990610897, -0.2545875386086577, 0.14698618394803278, 0.24845199749997657, -0.28867513459481275, 0.21516574145596756, -0.22222222222222215, 0.05555555555555554, 0.22222222222222215, 0.28867513459481275, -0.24845199749997657, -0.14698618394803278, 0.2545875386086577, -0.4409585518440983, -0.0962250448649376, 0.21516574145596756, 0.3333333333333333, 0.21516574145596756, -0.0962250448649376, -0.4409585518440983, -0.2545875386086577, 0.14698618394803278, 0.28867513459481275, 0.24845199749997657, 0.22222222222222215, 0.05555555555555554, 0.21516574145596756, 0.22222222222222215, 0.24845199749997657, 0.28867513459481275, 0.14698618394803278, -0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.21516574145596756, -0.22222222222222215, -0.3888888888888888, 0.22222222222222215, -0.21516574145596756, -0.0962250448649376, 0.14698618394803278, 0.3286710990610897, -0.2545875386086577, -0.28867513459481275, 0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, -0.4409585518440983, -0.2545875386086577, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, 0.557773351022717, 0.1610152971798826, 0.6440611887195306, -0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, -0.09001028747788692, -0.4762896722078401, 0.3367876570272817, 0.4762896722078401, -0.09001028747788692, -0.15590239111558082, -0.4124789556921526, 0.4409585518440983, 0.4124789556921526, -0.15590239111558082, -0.31180478223116176, -0.3486083443891981, 0.4930066485916346, 0.3486083443891981, 0.4025382429497066, 0.5091750772173156, 0.4025382429497066, 0.3486083443891981, 0.4930066485916346, -0.31180478223116176, 0.3486083443891981, 0.4124789556921526, 0.15590239111558082, 0.4409585518440983, -0.15590239111558082, 0.4124789556921526, 0.4762896722078401, 0.09001028747788692, 0.3367876570272817, -0.09001028747788692, 0.4762896722078401, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.24999999999999994, 0.39528470752104733, 0.39528470752104733, 0.30618621784789724, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, -0.24999999999999994, 0.30618621784789724, 0.33541019662496846, -0.3872983346207416, 0.15811388300841894, 0.3872983346207416, -0.30618621784789724, 0.24999999999999994, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.30618621784789724, 0.3872983346207416, 0.15811388300841894, 0.33541019662496846, 0.3872983346207416, 0.30618621784789724, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, -0.4999999999999999, 0.30618621784789724, 0.39528470752104733, -0.39528470752104733, 0.24999999999999994, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, 0.2545875386086577, -0.4409585518440983, -0.2545875386086577, 0.28867513459481275, -0.21516574145596756, -0.21516574145596756, -0.3888888888888888, -0.3286710990610897, 0.22222222222222215, -0.14698618394803278, -0.0962250448649376, 0.14698618394803278, 0.22222222222222215, 0.3286710990610897, 0.21516574145596756, 0.28867513459481275, 0.2545875386086577, 0.22222222222222215, -0.14698618394803278, 0.05555555555555554, -0.24845199749997657, 0.21516574145596756, 0.24845199749997657, 0.14698618394803278, -0.22222222222222215, -0.2545875386086577, -0.28867513459481275, -0.4409585518440983, -0.0962250448649376, 0.21516574145596756, 0.3333333333333333, 0.21516574145596756, -0.0962250448649376, -0.4409585518440983, -0.2545875386086577, 0.28867513459481275, 0.14698618394803278, 0.22222222222222215, 0.24845199749997657, 0.21516574145596756, 0.05555555555555554, 0.24845199749997657, 0.22222222222222215, 0.14698618394803278, 0.28867513459481275, -0.2545875386086577, -0.21516574145596756, 0.3286710990610897, 0.14698618394803278, -0.22222222222222215, -0.0962250448649376, 0.22222222222222215, 0.14698618394803278, -0.3888888888888888, 0.3286710990610897, -0.21516574145596756, 0.21516574145596756, -0.2545875386086577, -0.28867513459481275, -0.4409585518440983, 0.28867513459481275, -0.2545875386086577, -0.21516574145596756, 0.16666666666666663, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, 0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.557773351022717, 0.6440611887195306, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, 0.39528470752104733, 0.30618621784789724, 0.3872983346207416, 0.24999999999999994, 0.15811388300841894, -0.30618621784789724, 0.33541019662496846, 0.30618621784789724, -0.24999999999999994, -0.3872983346207416, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.3872983346207416, 0.30618621784789724, 0.33541019662496846, 0.15811388300841894, 0.30618621784789724, 0.3872983346207416, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, 0.30618621784789724, 0.39528470752104733, -0.4999999999999999, 0.24999999999999994, -0.39528470752104733, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, 0.4762896722078401, 0.3367876570272817, -0.09001028747788692, -0.09001028747788692, -0.4762896722078401, 0.4124789556921526, 0.4409585518440983, -0.15590239111558082, -0.15590239111558082, -0.4124789556921526, 0.3486083443891981, 0.4930066485916346, -0.31180478223116176, -0.3486083443891981, 0.4025382429497066, 0.5091750772173156, 0.4025382429497066, 0.3486083443891981, -0.31180478223116176, 0.4930066485916346, 0.3486083443891981, 0.4124789556921526, 0.15590239111558082, -0.15590239111558082, 0.4409585518440983, 0.4124789556921526, 0.4762896722078401, 0.09001028747788692, -0.09001028747788692, 0.3367876570272817, 0.4762896722078401, -0.2545875386086577, -0.4409585518440983, 0.28867513459481275, -0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, 0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.0962250448649376, 0.22222222222222215, 0.21516574145596756, -0.3888888888888888, -0.21516574145596756, 0.22222222222222215, -0.14698618394803278, -0.3286710990610897, -0.2545875386086577, 0.14698618394803278, 0.24845199749997657, -0.28867513459481275, 0.21516574145596756, -0.22222222222222215, 0.05555555555555554, 0.22222222222222215, 0.28867513459481275, -0.24845199749997657, -0.14698618394803278, 0.2545875386086577, -0.4409585518440983, -0.0962250448649376, 0.21516574145596756, 0.3333333333333333, 0.21516574145596756, -0.0962250448649376, -0.4409585518440983, -0.2545875386086577, 0.14698618394803278, 0.28867513459481275, 0.24845199749997657, 0.22222222222222215, 0.05555555555555554, 0.21516574145596756, 0.22222222222222215, 0.24845199749997657, 0.28867513459481275, 0.14698618394803278, -0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.21516574145596756, -0.22222222222222215, -0.3888888888888888, 0.22222222222222215, -0.21516574145596756, -0.0962250448649376, 0.14698618394803278, 0.3286710990610897, -0.2545875386086577, -0.28867513459481275, 0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, -0.4409585518440983, -0.2545875386086577}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a4 = L(ii, k, 4); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a13 = L(ii, k, 13); + const float a14 = L(ii, k, 14); + const float a15 = L(ii, k, 15); + const float a16 = L(ii, k, 16); + const float a17 = L(ii, k, 17); + const float a18 = L(ii, k, 18); + const float a19 = L(ii, k, 19); + const float a20 = L(ii, k, 20); + const float a21 = L(ii, k, 21); + const float a27 = L(ii, k, 27); + const float a28 = L(ii, k, 28); + const float a29 = L(ii, k, 29); + const float a30 = L(ii, k, 30); + const float a31 = L(ii, k, 31); + const float a32 = L(ii, k, 32); + const float a33 = L(ii, k, 33); + const float a34 = L(ii, k, 34); + const float a35 = L(ii, k, 35); + const float a36 = L(ii, k, 36); + const float a37 = L(ii, k, 37); + const float a38 = L(ii, k, 38); + const float a39 = L(ii, k, 39); + const float a40 = L(ii, k, 40); + const float a41 = L(ii, k, 41); + const float a42 = L(ii, k, 42); + const float a43 = L(ii, k, 43); + const float a44 = L(ii, k, 44); + const float a45 = L(ii, k, 45); + const float a46 = L(ii, k, 46); + const float a47 = L(ii, k, 47); + const float a48 = L(ii, k, 48); + const float a49 = L(ii, k, 49); + const float a50 = L(ii, k, 50); + const float a51 = L(ii, k, 51); + const float a52 = L(ii, k, 52); + const float a53 = L(ii, k, 53); + const float a54 = L(ii, k, 54); + const float a55 = L(ii, k, 55); + const float a56 = L(ii, k, 56); + const float a57 = L(ii, k, 57); + const float a58 = L(ii, k, 58); + const float a66 = L(ii, k, 66); + const float a67 = L(ii, k, 67); + const float a68 = L(ii, k, 68); + const float a69 = L(ii, k, 69); + const float a70 = L(ii, k, 70); + const float a71 = L(ii, k, 71); + const float a72 = L(ii, k, 72); + const float a73 = L(ii, k, 73); + const float a74 = L(ii, k, 74); + const float a75 = L(ii, k, 75); + const float a76 = L(ii, k, 76); + const float a77 = L(ii, k, 77); + const float a78 = L(ii, k, 78); + const float a79 = L(ii, k, 79); + const float a80 = L(ii, k, 80); + const float a81 = L(ii, k, 81); + const float a82 = L(ii, k, 82); + const float a83 = L(ii, k, 83); + const float a84 = L(ii, k, 84); + const float a85 = L(ii, k, 85); + const float a86 = L(ii, k, 86); + const float a87 = L(ii, k, 87); + const float a88 = L(ii, k, 88); + const float a89 = L(ii, k, 89); + const float a90 = L(ii, k, 90); + const float a91 = L(ii, k, 91); + const float a92 = L(ii, k, 92); + const float a93 = L(ii, k, 93); + const float a94 = L(ii, k, 94); + const float a95 = L(ii, k, 95); + const float a96 = L(ii, k, 96); + const float a97 = L(ii, k, 97); + const float a98 = L(ii, k, 98); + const float a99 = L(ii, k, 99); + const float a100 = L(ii, k, 100); + const float a101 = L(ii, k, 101); + const float a102 = L(ii, k, 102); + const float a103 = L(ii, k, 103); + const float a104 = L(ii, k, 104); + const float a105 = L(ii, k, 105); + const float a106 = L(ii, k, 106); + const float a107 = L(ii, k, 107); + const float a108 = L(ii, k, 108); + const float a109 = L(ii, k, 109); + const float a110 = L(ii, k, 110); + const float a111 = L(ii, k, 111); + const float a112 = L(ii, k, 112); + const float a113 = L(ii, k, 113); + const float a123 = L(ii, k, 123); + const float a124 = L(ii, k, 124); + const float a125 = L(ii, k, 125); + const float a126 = L(ii, k, 126); + const float a127 = L(ii, k, 127); + const float a128 = L(ii, k, 128); + const float a129 = L(ii, k, 129); + const float a130 = L(ii, k, 130); + const float a131 = L(ii, k, 131); + const float a132 = L(ii, k, 132); + const float a133 = L(ii, k, 133); + const float a134 = L(ii, k, 134); + const float a135 = L(ii, k, 135); + const float a136 = L(ii, k, 136); + const float a137 = L(ii, k, 137); + const float a138 = L(ii, k, 138); + const float a139 = L(ii, k, 139); + const float a140 = L(ii, k, 140); + const float b0 = R(ii, k, 0); + const float b1 = R(ii, k, 1); + const float b2 = R(ii, k, 2); + const float b3 = R(ii, k, 3); + const float b4 = R(ii, k, 4); + const float b5 = R(ii, k, 5); + const float b6 = R(ii, k, 6); + const float b7 = R(ii, k, 7); + const float b8 = R(ii, k, 8); + const float b9 = R(ii, k, 9); + const float b10 = R(ii, k, 10); + const float b11 = R(ii, k, 11); + const float b12 = R(ii, k, 12); + const float b13 = R(ii, k, 13); + const float b14 = R(ii, k, 14); + const float b15 = R(ii, k, 15); + const float b16 = R(ii, k, 16); + const float b17 = R(ii, k, 17); + const float b18 = R(ii, k, 18); + const float b19 = R(ii, k, 19); + const float b20 = R(ii, k, 20); + const float b21 = R(ii, k, 21); + const float b22 = R(ii, k, 22); + const float b23 = R(ii, k, 23); + const float b24 = R(ii, k, 24); + out(ii, k, 0) = 1.0f * a0 * b0; + out(ii, k, 1) = 1.0f * a1 * b0; + out(ii, k, 2) = 0.3333333432674408f * a8 * b1 + 0.3333333432674408f * a9 * b2 + 0.3333333432674408f * a10 * b3; + out(ii, k, 3) = 1.0f * a2 * b0; + out(ii, k, 4) = 0.20000000298023224f * a27 * b4 + 0.20000000298023224f * a28 * b5 + 0.20000000298023224f * a29 * b6 + 0.20000000298023224f * a30 * b7 + 0.20000000298023224f * a31 * b8; + out(ii, k, 5) = 0.3333333432674408f * a11 * b1 + 0.3333333432674408f * a12 * b2 + 0.3333333432674408f * a13 * b3; + out(ii, k, 6) = 1.0f * a3 * b0; + out(ii, k, 7) = 0.20000000298023224f * a37 * b4 + 0.20000000298023224f * a38 * b5 + 0.20000000298023224f * a39 * b6 + 0.20000000298023224f * a40 * b7 + 0.20000000298023224f * a41 * b8; + out(ii, k, 8) = 0.20000000298023224f * a42 * b4 + 0.20000000298023224f * a43 * b5 + 0.20000000298023224f * a44 * b6 + 0.20000000298023224f * a45 * b7 + 0.20000000298023224f * a46 * b8; + out(ii, k, 9) = 0.3333333432674408f * a14 * b1 + 0.3333333432674408f * a15 * b2 + 0.3333333432674408f * a16 * b3; + out(ii, k, 10) = 0.1428571492433548f * a80 * b9 + 0.1428571492433548f * a81 * b10 + 0.1428571492433548f * a82 * b11 + 0.1428571492433548f * a83 * b12 + 0.1428571492433548f * a84 * b13 + 0.1428571492433548f * a85 * b14 + 0.1428571492433548f * a86 * b15; + out(ii, k, 11) = 1.0f * a4 * b0; + out(ii, k, 12) = 0.20000000298023224f * a47 * b4 + 0.20000000298023224f * a48 * b5 + 0.20000000298023224f * a49 * b6 + 0.20000000298023224f * a50 * b7 + 0.20000000298023224f * a51 * b8; + out(ii, k, 13) = 0.1111111119389534f * a132 * b16 + 0.1111111119389534f * a133 * b17 + 0.1111111119389534f * a134 * b18 + 0.1111111119389534f * a135 * b19 + 0.1111111119389534f * a136 * b20 + 0.1111111119389534f * a137 * b21 + 0.1111111119389534f * a138 * b22 + 0.1111111119389534f * a139 * b23 + 0.1111111119389534f * a140 * b24; + out(ii, k, 14) = 1.0f * a0 * b1; + out(ii, k, 15) = 1.0f * a0 * b2; + out(ii, k, 16) = 1.0f * a0 * b3; + out(ii, k, 17) = 1.0f * a1 * b1; + out(ii, k, 18) = 1.0f * a1 * b2; + out(ii, k, 19) = 1.0f * a1 * b3; + out(ii, k, 20) = 1.0f * a8 * b0; + out(ii, k, 21) = 1.0f * a9 * b0; + out(ii, k, 22) = 1.0f * a10 * b0; + out(ii, k, 23) = -0.22360679507255554f * a8 * b6 + -0.3872983455657959f * a8 * b8 + 0.3872983455657959f * a9 * b5 + 0.3872983455657959f * a10 * b4; + out(ii, k, 24) = 0.3872983455657959f * a8 * b5 + 0.4472135901451111f * a9 * b6 + 0.3872983455657959f * a10 * b7; + out(ii, k, 25) = 0.3872983455657959f * a8 * b4 + 0.3872983455657959f * a9 * b7 + -0.22360679507255554f * a10 * b6 + 0.3872983455657959f * a10 * b8; + out(ii, k, 26) = 0.26726123690605164f * a52 * b8 + 0.2182178944349289f * a53 * b7 + 0.23904572427272797f * a54 * b6 + 0.0690065547823906f * a54 * b8 + -0.16903084516525269f * a55 * b5 + -0.0690065547823906f * a56 * b4 + -0.2182178944349289f * a57 * b5 + -0.26726123690605164f * a58 * b4; + out(ii, k, 27) = 0.2182178944349289f * a53 * b4 + 0.2760262191295624f * a54 * b5 + 0.29277002811431885f * a55 * b6 + 0.2760262191295624f * a56 * b7 + 0.2182178944349289f * a57 * b8; + out(ii, k, 28) = 0.26726123690605164f * a52 * b4 + 0.2182178944349289f * a53 * b5 + -0.0690065547823906f * a54 * b4 + -0.16903084516525269f * a55 * b7 + 0.23904572427272797f * a56 * b6 + -0.0690065547823906f * a56 * b8 + 0.2182178944349289f * a57 * b7 + 0.26726123690605164f * a58 * b8; + out(ii, k, 29) = 1.0f * a2 * b1; + out(ii, k, 30) = 1.0f * a2 * b2; + out(ii, k, 31) = 1.0f * a2 * b3; + out(ii, k, 32) = 0.3872983455657959f * a27 * b3 + 0.3872983455657959f * a28 * b2 + -0.22360679507255554f * a29 * b1 + -0.3872983455657959f * a31 * b1; + out(ii, k, 33) = 0.3872983455657959f * a28 * b1 + 0.4472135901451111f * a29 * b2 + 0.3872983455657959f * a30 * b3; + out(ii, k, 34) = 0.3872983455657959f * a27 * b1 + -0.22360679507255554f * a29 * b3 + 0.3872983455657959f * a30 * b2 + 0.3872983455657959f * a31 * b3; + out(ii, k, 35) = -0.0690065547823906f * a27 * b13 + -0.26726123690605164f * a27 * b15 + -0.16903084516525269f * a28 * b12 + -0.2182178944349289f * a28 * b14 + 0.23904572427272797f * a29 * b11 + 0.2182178944349289f * a30 * b10 + 0.26726123690605164f * a31 * b9 + 0.0690065547823906f * a31 * b11; + out(ii, k, 36) = 0.2182178944349289f * a27 * b10 + 0.2760262191295624f * a28 * b11 + 0.29277002811431885f * a29 * b12 + 0.2760262191295624f * a30 * b13 + 0.2182178944349289f * a31 * b14; + out(ii, k, 37) = 0.26726123690605164f * a27 * b9 + -0.0690065547823906f * a27 * b11 + 0.2182178944349289f * a28 * b10 + 0.23904572427272797f * a29 * b13 + -0.16903084516525269f * a30 * b12 + 0.2182178944349289f * a30 * b14 + -0.0690065547823906f * a31 * b13 + 0.26726123690605164f * a31 * b15; + out(ii, k, 38) = 0.20412415266036987f * a87 * b15 + 0.1767766922712326f * a88 * b14 + 0.14940357208251953f * a89 * b13 + 0.03857583925127983f * a89 * b15 + 0.17251639068126678f * a90 * b12 + 0.06681530922651291f * a90 * b14 + -0.13363061845302582f * a91 * b11 + -0.06681530922651291f * a92 * b10 + -0.03857583925127983f * a93 * b9 + -0.14940357208251953f * a93 * b11 + -0.1767766922712326f * a94 * b10 + -0.20412415266036987f * a95 * b9; + out(ii, k, 39) = 0.14433756470680237f * a88 * b9 + 0.18898223340511322f * a89 * b10 + 0.21128855645656586f * a90 * b11 + 0.2182178944349289f * a91 * b12 + 0.21128855645656586f * a92 * b13 + 0.18898223340511322f * a93 * b14 + 0.14433756470680237f * a94 * b15; + out(ii, k, 40) = 0.20412415266036987f * a87 * b9 + 0.1767766922712326f * a88 * b10 + -0.03857583925127983f * a89 * b9 + 0.14940357208251953f * a89 * b11 + -0.06681530922651291f * a90 * b10 + -0.13363061845302582f * a91 * b13 + 0.17251639068126678f * a92 * b12 + -0.06681530922651291f * a92 * b14 + 0.14940357208251953f * a93 * b13 + -0.03857583925127983f * a93 * b15 + 0.1767766922712326f * a94 * b14 + 0.20412415266036987f * a95 * b15; + out(ii, k, 41) = 0.3872983455657959f * a32 * b3 + 0.3872983455657959f * a33 * b2 + -0.22360679507255554f * a34 * b1 + -0.3872983455657959f * a36 * b1; + out(ii, k, 42) = 0.3872983455657959f * a33 * b1 + 0.4472135901451111f * a34 * b2 + 0.3872983455657959f * a35 * b3; + out(ii, k, 43) = 0.3872983455657959f * a32 * b1 + -0.22360679507255554f * a34 * b3 + 0.3872983455657959f * a35 * b2 + 0.3872983455657959f * a36 * b3; + out(ii, k, 44) = -0.0690065547823906f * a32 * b13 + -0.26726123690605164f * a32 * b15 + -0.16903084516525269f * a33 * b12 + -0.2182178944349289f * a33 * b14 + 0.23904572427272797f * a34 * b11 + 0.2182178944349289f * a35 * b10 + 0.26726123690605164f * a36 * b9 + 0.0690065547823906f * a36 * b11; + out(ii, k, 45) = 0.2182178944349289f * a32 * b10 + 0.2760262191295624f * a33 * b11 + 0.29277002811431885f * a34 * b12 + 0.2760262191295624f * a35 * b13 + 0.2182178944349289f * a36 * b14; + out(ii, k, 46) = 0.26726123690605164f * a32 * b9 + -0.0690065547823906f * a32 * b11 + 0.2182178944349289f * a33 * b10 + 0.23904572427272797f * a34 * b13 + -0.16903084516525269f * a35 * b12 + 0.2182178944349289f * a35 * b14 + -0.0690065547823906f * a36 * b13 + 0.26726123690605164f * a36 * b15; + out(ii, k, 47) = 0.20412415266036987f * a96 * b15 + 0.1767766922712326f * a97 * b14 + 0.14940357208251953f * a98 * b13 + 0.03857583925127983f * a98 * b15 + 0.17251639068126678f * a99 * b12 + 0.06681530922651291f * a99 * b14 + -0.13363061845302582f * a100 * b11 + -0.06681530922651291f * a101 * b10 + -0.03857583925127983f * a102 * b9 + -0.14940357208251953f * a102 * b11 + -0.1767766922712326f * a103 * b10 + -0.20412415266036987f * a104 * b9; + out(ii, k, 48) = 0.14433756470680237f * a97 * b9 + 0.18898223340511322f * a98 * b10 + 0.21128855645656586f * a99 * b11 + 0.2182178944349289f * a100 * b12 + 0.21128855645656586f * a101 * b13 + 0.18898223340511322f * a102 * b14 + 0.14433756470680237f * a103 * b15; + out(ii, k, 49) = 0.20412415266036987f * a96 * b9 + 0.1767766922712326f * a97 * b10 + -0.03857583925127983f * a98 * b9 + 0.14940357208251953f * a98 * b11 + -0.06681530922651291f * a99 * b10 + -0.13363061845302582f * a100 * b13 + 0.17251639068126678f * a101 * b12 + -0.06681530922651291f * a101 * b14 + 0.14940357208251953f * a102 * b13 + -0.03857583925127983f * a102 * b15 + 0.1767766922712326f * a103 * b14 + 0.20412415266036987f * a104 * b15; + out(ii, k, 50) = 1.0f * a11 * b0; + out(ii, k, 51) = 1.0f * a12 * b0; + out(ii, k, 52) = 1.0f * a13 * b0; + out(ii, k, 53) = -0.22360679507255554f * a11 * b6 + -0.3872983455657959f * a11 * b8 + 0.3872983455657959f * a12 * b5 + 0.3872983455657959f * a13 * b4; + out(ii, k, 54) = 0.3872983455657959f * a11 * b5 + 0.4472135901451111f * a12 * b6 + 0.3872983455657959f * a13 * b7; + out(ii, k, 55) = 0.3872983455657959f * a11 * b4 + 0.3872983455657959f * a12 * b7 + -0.22360679507255554f * a13 * b6 + 0.3872983455657959f * a13 * b8; + out(ii, k, 56) = 0.26726123690605164f * a66 * b8 + 0.2182178944349289f * a67 * b7 + 0.23904572427272797f * a68 * b6 + 0.0690065547823906f * a68 * b8 + -0.16903084516525269f * a69 * b5 + -0.0690065547823906f * a70 * b4 + -0.2182178944349289f * a71 * b5 + -0.26726123690605164f * a72 * b4; + out(ii, k, 57) = 0.2182178944349289f * a67 * b4 + 0.2760262191295624f * a68 * b5 + 0.29277002811431885f * a69 * b6 + 0.2760262191295624f * a70 * b7 + 0.2182178944349289f * a71 * b8; + out(ii, k, 58) = 0.26726123690605164f * a66 * b4 + 0.2182178944349289f * a67 * b5 + -0.0690065547823906f * a68 * b4 + -0.16903084516525269f * a69 * b7 + 0.23904572427272797f * a70 * b6 + -0.0690065547823906f * a70 * b8 + 0.2182178944349289f * a71 * b7 + 0.26726123690605164f * a72 * b8; + out(ii, k, 59) = -0.03857583925127983f * a66 * b22 + -0.20412415266036987f * a66 * b24 + -0.06681530922651291f * a67 * b21 + -0.1767766922712326f * a67 * b23 + -0.13363061845302582f * a68 * b20 + -0.14940357208251953f * a68 * b22 + 0.17251639068126678f * a69 * b19 + 0.14940357208251953f * a70 * b18 + 0.1767766922712326f * a71 * b17 + 0.06681530922651291f * a71 * b19 + 0.20412415266036987f * a72 * b16 + 0.03857583925127983f * a72 * b18; + out(ii, k, 60) = 0.14433756470680237f * a66 * b17 + 0.18898223340511322f * a67 * b18 + 0.21128855645656586f * a68 * b19 + 0.2182178944349289f * a69 * b20 + 0.21128855645656586f * a70 * b21 + 0.18898223340511322f * a71 * b22 + 0.14433756470680237f * a72 * b23; + out(ii, k, 61) = 0.20412415266036987f * a66 * b16 + -0.03857583925127983f * a66 * b18 + 0.1767766922712326f * a67 * b17 + -0.06681530922651291f * a67 * b19 + 0.14940357208251953f * a68 * b18 + 0.17251639068126678f * a69 * b21 + -0.13363061845302582f * a70 * b20 + 0.14940357208251953f * a70 * b22 + -0.06681530922651291f * a71 * b21 + 0.1767766922712326f * a71 * b23 + -0.03857583925127983f * a72 * b22 + 0.20412415266036987f * a72 * b24; + out(ii, k, 62) = 1.0f * a3 * b1; + out(ii, k, 63) = 1.0f * a3 * b2; + out(ii, k, 64) = 1.0f * a3 * b3; + out(ii, k, 65) = 0.3872983455657959f * a37 * b3 + 0.3872983455657959f * a38 * b2 + -0.22360679507255554f * a39 * b1 + -0.3872983455657959f * a41 * b1; + out(ii, k, 66) = 0.3872983455657959f * a38 * b1 + 0.4472135901451111f * a39 * b2 + 0.3872983455657959f * a40 * b3; + out(ii, k, 67) = 0.3872983455657959f * a37 * b1 + -0.22360679507255554f * a39 * b3 + 0.3872983455657959f * a40 * b2 + 0.3872983455657959f * a41 * b3; + out(ii, k, 68) = -0.0690065547823906f * a37 * b13 + -0.26726123690605164f * a37 * b15 + -0.16903084516525269f * a38 * b12 + -0.2182178944349289f * a38 * b14 + 0.23904572427272797f * a39 * b11 + 0.2182178944349289f * a40 * b10 + 0.26726123690605164f * a41 * b9 + 0.0690065547823906f * a41 * b11; + out(ii, k, 69) = 0.2182178944349289f * a37 * b10 + 0.2760262191295624f * a38 * b11 + 0.29277002811431885f * a39 * b12 + 0.2760262191295624f * a40 * b13 + 0.2182178944349289f * a41 * b14; + out(ii, k, 70) = 0.26726123690605164f * a37 * b9 + -0.0690065547823906f * a37 * b11 + 0.2182178944349289f * a38 * b10 + 0.23904572427272797f * a39 * b13 + -0.16903084516525269f * a40 * b12 + 0.2182178944349289f * a40 * b14 + -0.0690065547823906f * a41 * b13 + 0.26726123690605164f * a41 * b15; + out(ii, k, 71) = -0.03857583925127983f * a73 * b22 + -0.20412415266036987f * a73 * b24 + -0.06681530922651291f * a74 * b21 + -0.1767766922712326f * a74 * b23 + -0.13363061845302582f * a75 * b20 + -0.14940357208251953f * a75 * b22 + 0.17251639068126678f * a76 * b19 + 0.14940357208251953f * a77 * b18 + 0.1767766922712326f * a78 * b17 + 0.06681530922651291f * a78 * b19 + 0.20412415266036987f * a79 * b16 + 0.03857583925127983f * a79 * b18; + out(ii, k, 72) = 0.14433756470680237f * a73 * b17 + 0.18898223340511322f * a74 * b18 + 0.21128855645656586f * a75 * b19 + 0.2182178944349289f * a76 * b20 + 0.21128855645656586f * a77 * b21 + 0.18898223340511322f * a78 * b22 + 0.14433756470680237f * a79 * b23; + out(ii, k, 73) = 0.20412415266036987f * a73 * b16 + -0.03857583925127983f * a73 * b18 + 0.1767766922712326f * a74 * b17 + -0.06681530922651291f * a74 * b19 + 0.14940357208251953f * a75 * b18 + 0.17251639068126678f * a76 * b21 + -0.13363061845302582f * a77 * b20 + 0.14940357208251953f * a77 * b22 + -0.06681530922651291f * a78 * b21 + 0.1767766922712326f * a78 * b23 + -0.03857583925127983f * a79 * b22 + 0.20412415266036987f * a79 * b24; + out(ii, k, 74) = 0.3872983455657959f * a42 * b3 + 0.3872983455657959f * a43 * b2 + -0.22360679507255554f * a44 * b1 + -0.3872983455657959f * a46 * b1; + out(ii, k, 75) = 0.3872983455657959f * a43 * b1 + 0.4472135901451111f * a44 * b2 + 0.3872983455657959f * a45 * b3; + out(ii, k, 76) = 0.3872983455657959f * a42 * b1 + -0.22360679507255554f * a44 * b3 + 0.3872983455657959f * a45 * b2 + 0.3872983455657959f * a46 * b3; + out(ii, k, 77) = -0.0690065547823906f * a42 * b13 + -0.26726123690605164f * a42 * b15 + -0.16903084516525269f * a43 * b12 + -0.2182178944349289f * a43 * b14 + 0.23904572427272797f * a44 * b11 + 0.2182178944349289f * a45 * b10 + 0.26726123690605164f * a46 * b9 + 0.0690065547823906f * a46 * b11; + out(ii, k, 78) = 0.2182178944349289f * a42 * b10 + 0.2760262191295624f * a43 * b11 + 0.29277002811431885f * a44 * b12 + 0.2760262191295624f * a45 * b13 + 0.2182178944349289f * a46 * b14; + out(ii, k, 79) = 0.26726123690605164f * a42 * b9 + -0.0690065547823906f * a42 * b11 + 0.2182178944349289f * a43 * b10 + 0.23904572427272797f * a44 * b13 + -0.16903084516525269f * a45 * b12 + 0.2182178944349289f * a45 * b14 + -0.0690065547823906f * a46 * b13 + 0.26726123690605164f * a46 * b15; + out(ii, k, 80) = 0.20412415266036987f * a123 * b15 + 0.1767766922712326f * a124 * b14 + 0.14940357208251953f * a125 * b13 + 0.03857583925127983f * a125 * b15 + 0.17251639068126678f * a126 * b12 + 0.06681530922651291f * a126 * b14 + -0.13363061845302582f * a127 * b11 + -0.06681530922651291f * a128 * b10 + -0.03857583925127983f * a129 * b9 + -0.14940357208251953f * a129 * b11 + -0.1767766922712326f * a130 * b10 + -0.20412415266036987f * a131 * b9; + out(ii, k, 81) = 0.14433756470680237f * a124 * b9 + 0.18898223340511322f * a125 * b10 + 0.21128855645656586f * a126 * b11 + 0.2182178944349289f * a127 * b12 + 0.21128855645656586f * a128 * b13 + 0.18898223340511322f * a129 * b14 + 0.14433756470680237f * a130 * b15; + out(ii, k, 82) = 0.20412415266036987f * a123 * b9 + 0.1767766922712326f * a124 * b10 + -0.03857583925127983f * a125 * b9 + 0.14940357208251953f * a125 * b11 + -0.06681530922651291f * a126 * b10 + -0.13363061845302582f * a127 * b13 + 0.17251639068126678f * a128 * b12 + -0.06681530922651291f * a128 * b14 + 0.14940357208251953f * a129 * b13 + -0.03857583925127983f * a129 * b15 + 0.1767766922712326f * a130 * b14 + 0.20412415266036987f * a131 * b15; + out(ii, k, 83) = 1.0f * a14 * b0; + out(ii, k, 84) = 1.0f * a15 * b0; + out(ii, k, 85) = 1.0f * a16 * b0; + out(ii, k, 86) = -0.22360679507255554f * a14 * b6 + -0.3872983455657959f * a14 * b8 + 0.3872983455657959f * a15 * b5 + 0.3872983455657959f * a16 * b4; + out(ii, k, 87) = 0.3872983455657959f * a14 * b5 + 0.4472135901451111f * a15 * b6 + 0.3872983455657959f * a16 * b7; + out(ii, k, 88) = 0.3872983455657959f * a14 * b4 + 0.3872983455657959f * a15 * b7 + -0.22360679507255554f * a16 * b6 + 0.3872983455657959f * a16 * b8; + out(ii, k, 89) = 0.26726123690605164f * a80 * b8 + 0.2182178944349289f * a81 * b7 + 0.23904572427272797f * a82 * b6 + 0.0690065547823906f * a82 * b8 + -0.16903084516525269f * a83 * b5 + -0.0690065547823906f * a84 * b4 + -0.2182178944349289f * a85 * b5 + -0.26726123690605164f * a86 * b4; + out(ii, k, 90) = 0.2182178944349289f * a81 * b4 + 0.2760262191295624f * a82 * b5 + 0.29277002811431885f * a83 * b6 + 0.2760262191295624f * a84 * b7 + 0.2182178944349289f * a85 * b8; + out(ii, k, 91) = 0.26726123690605164f * a80 * b4 + 0.2182178944349289f * a81 * b5 + -0.0690065547823906f * a82 * b4 + -0.16903084516525269f * a83 * b7 + 0.23904572427272797f * a84 * b6 + -0.0690065547823906f * a84 * b8 + 0.2182178944349289f * a85 * b7 + 0.26726123690605164f * a86 * b8; + out(ii, k, 92) = -0.03857583925127983f * a80 * b22 + -0.20412415266036987f * a80 * b24 + -0.06681530922651291f * a81 * b21 + -0.1767766922712326f * a81 * b23 + -0.13363061845302582f * a82 * b20 + -0.14940357208251953f * a82 * b22 + 0.17251639068126678f * a83 * b19 + 0.14940357208251953f * a84 * b18 + 0.1767766922712326f * a85 * b17 + 0.06681530922651291f * a85 * b19 + 0.20412415266036987f * a86 * b16 + 0.03857583925127983f * a86 * b18; + out(ii, k, 93) = 0.14433756470680237f * a80 * b17 + 0.18898223340511322f * a81 * b18 + 0.21128855645656586f * a82 * b19 + 0.2182178944349289f * a83 * b20 + 0.21128855645656586f * a84 * b21 + 0.18898223340511322f * a85 * b22 + 0.14433756470680237f * a86 * b23; + out(ii, k, 94) = 0.20412415266036987f * a80 * b16 + -0.03857583925127983f * a80 * b18 + 0.1767766922712326f * a81 * b17 + -0.06681530922651291f * a81 * b19 + 0.14940357208251953f * a82 * b18 + 0.17251639068126678f * a83 * b21 + -0.13363061845302582f * a84 * b20 + 0.14940357208251953f * a84 * b22 + -0.06681530922651291f * a85 * b21 + 0.1767766922712326f * a85 * b23 + -0.03857583925127983f * a86 * b22 + 0.20412415266036987f * a86 * b24; + out(ii, k, 95) = 1.0f * a4 * b1; + out(ii, k, 96) = 1.0f * a4 * b2; + out(ii, k, 97) = 1.0f * a4 * b3; + out(ii, k, 98) = 0.3872983455657959f * a47 * b3 + 0.3872983455657959f * a48 * b2 + -0.22360679507255554f * a49 * b1 + -0.3872983455657959f * a51 * b1; + out(ii, k, 99) = 0.3872983455657959f * a48 * b1 + 0.4472135901451111f * a49 * b2 + 0.3872983455657959f * a50 * b3; + out(ii, k, 100) = 0.3872983455657959f * a47 * b1 + -0.22360679507255554f * a49 * b3 + 0.3872983455657959f * a50 * b2 + 0.3872983455657959f * a51 * b3; + out(ii, k, 101) = -0.0690065547823906f * a47 * b13 + -0.26726123690605164f * a47 * b15 + -0.16903084516525269f * a48 * b12 + -0.2182178944349289f * a48 * b14 + 0.23904572427272797f * a49 * b11 + 0.2182178944349289f * a50 * b10 + 0.26726123690605164f * a51 * b9 + 0.0690065547823906f * a51 * b11; + out(ii, k, 102) = 0.2182178944349289f * a47 * b10 + 0.2760262191295624f * a48 * b11 + 0.29277002811431885f * a49 * b12 + 0.2760262191295624f * a50 * b13 + 0.2182178944349289f * a51 * b14; + out(ii, k, 103) = 0.26726123690605164f * a47 * b9 + -0.0690065547823906f * a47 * b11 + 0.2182178944349289f * a48 * b10 + 0.23904572427272797f * a49 * b13 + -0.16903084516525269f * a50 * b12 + 0.2182178944349289f * a50 * b14 + -0.0690065547823906f * a51 * b13 + 0.26726123690605164f * a51 * b15; + out(ii, k, 104) = 0.20412415266036987f * a132 * b15 + 0.1767766922712326f * a133 * b14 + 0.14940357208251953f * a134 * b13 + 0.03857583925127983f * a134 * b15 + 0.17251639068126678f * a135 * b12 + 0.06681530922651291f * a135 * b14 + -0.13363061845302582f * a136 * b11 + -0.06681530922651291f * a137 * b10 + -0.03857583925127983f * a138 * b9 + -0.14940357208251953f * a138 * b11 + -0.1767766922712326f * a139 * b10 + -0.20412415266036987f * a140 * b9; + out(ii, k, 105) = 0.14433756470680237f * a133 * b9 + 0.18898223340511322f * a134 * b10 + 0.21128855645656586f * a135 * b11 + 0.2182178944349289f * a136 * b12 + 0.21128855645656586f * a137 * b13 + 0.18898223340511322f * a138 * b14 + 0.14433756470680237f * a139 * b15; + out(ii, k, 106) = 0.20412415266036987f * a132 * b9 + 0.1767766922712326f * a133 * b10 + -0.03857583925127983f * a134 * b9 + 0.14940357208251953f * a134 * b11 + -0.06681530922651291f * a135 * b10 + -0.13363061845302582f * a136 * b13 + 0.17251639068126678f * a137 * b12 + -0.06681530922651291f * a137 * b14 + 0.14940357208251953f * a138 * b13 + -0.03857583925127983f * a138 * b15 + 0.1767766922712326f * a139 * b14 + 0.20412415266036987f * a140 * b15; + out(ii, k, 107) = 1.0f * a0 * b4; + out(ii, k, 108) = 1.0f * a0 * b5; + out(ii, k, 109) = 1.0f * a0 * b6; + out(ii, k, 110) = 1.0f * a0 * b7; + out(ii, k, 111) = 1.0f * a0 * b8; + out(ii, k, 112) = 1.0f * a1 * b4; + out(ii, k, 113) = 1.0f * a1 * b5; + out(ii, k, 114) = 1.0f * a1 * b6; + out(ii, k, 115) = 1.0f * a1 * b7; + out(ii, k, 116) = 1.0f * a1 * b8; + out(ii, k, 117) = 1.0f * a17 * b0; + out(ii, k, 118) = 1.0f * a18 * b0; + out(ii, k, 119) = 1.0f * a19 * b0; + out(ii, k, 120) = 1.0f * a20 * b0; + out(ii, k, 121) = 1.0f * a21 * b0; + out(ii, k, 122) = -0.4472135901451111f * a17 * b6 + 0.3872983455657959f * a18 * b7 + -0.4472135901451111f * a19 * b4 + 0.3872983455657959f * a20 * b5; + out(ii, k, 123) = 0.3872983455657959f * a17 * b7 + 0.22360679507255554f * a18 * b6 + -0.3872983455657959f * a18 * b8 + 0.22360679507255554f * a19 * b5 + 0.3872983455657959f * a20 * b4 + -0.3872983455657959f * a21 * b5; + out(ii, k, 124) = -0.4472135901451111f * a17 * b4 + 0.22360679507255554f * a18 * b5 + 0.4472135901451111f * a19 * b6 + 0.22360679507255554f * a20 * b7 + -0.4472135901451111f * a21 * b8; + out(ii, k, 125) = 0.3872983455657959f * a17 * b5 + 0.3872983455657959f * a18 * b4 + 0.22360679507255554f * a19 * b7 + 0.22360679507255554f * a20 * b6 + 0.3872983455657959f * a20 * b8 + 0.3872983455657959f * a21 * b7; + out(ii, k, 126) = -0.3872983455657959f * a18 * b5 + -0.4472135901451111f * a19 * b8 + 0.3872983455657959f * a20 * b7 + -0.4472135901451111f * a21 * b6; + out(ii, k, 127) = 0.64549720287323f * a8 * b3 + 0.64549720287323f * a10 * b1; + out(ii, k, 128) = 0.64549720287323f * a8 * b2 + 0.64549720287323f * a9 * b1; + out(ii, k, 129) = -0.3726779818534851f * a8 * b1 + 0.7453559637069702f * a9 * b2 + -0.3726779818534851f * a10 * b3; + out(ii, k, 130) = 0.64549720287323f * a9 * b3 + 0.64549720287323f * a10 * b2; + out(ii, k, 131) = -0.64549720287323f * a8 * b1 + 0.64549720287323f * a10 * b3; + out(ii, k, 132) = -0.11501092463731766f * a8 * b13 + -0.44543540477752686f * a8 * b15 + 0.36369648575782776f * a9 * b10 + 0.44543540477752686f * a10 * b9 + -0.11501092463731766f * a10 * b11; + out(ii, k, 133) = -0.28171807527542114f * a8 * b12 + -0.36369648575782776f * a8 * b14 + 0.46004369854927063f * a9 * b11 + 0.36369648575782776f * a10 * b10; + out(ii, k, 134) = 0.39840954542160034f * a8 * b11 + 0.48795002698898315f * a9 * b12 + 0.39840954542160034f * a10 * b13; + out(ii, k, 135) = 0.36369648575782776f * a8 * b10 + 0.46004369854927063f * a9 * b13 + -0.28171807527542114f * a10 * b12 + 0.36369648575782776f * a10 * b14; + out(ii, k, 136) = 0.44543540477752686f * a8 * b9 + 0.11501092463731766f * a8 * b11 + 0.36369648575782776f * a9 * b14 + -0.11501092463731766f * a10 * b13 + 0.44543540477752686f * a10 * b15; + out(ii, k, 137) = 0.44543540477752686f * a52 * b3 + 0.36369648575782776f * a53 * b2 + -0.11501092463731766f * a54 * b3 + -0.11501092463731766f * a56 * b1 + -0.44543540477752686f * a58 * b1; + out(ii, k, 138) = 0.36369648575782776f * a53 * b3 + 0.46004369854927063f * a54 * b2 + -0.28171807527542114f * a55 * b1 + -0.36369648575782776f * a57 * b1; + out(ii, k, 139) = 0.39840954542160034f * a54 * b1 + 0.48795002698898315f * a55 * b2 + 0.39840954542160034f * a56 * b3; + out(ii, k, 140) = 0.36369648575782776f * a53 * b1 + -0.28171807527542114f * a55 * b3 + 0.46004369854927063f * a56 * b2 + 0.36369648575782776f * a57 * b3; + out(ii, k, 141) = 0.44543540477752686f * a52 * b1 + 0.11501092463731766f * a54 * b1 + -0.11501092463731766f * a56 * b3 + 0.36369648575782776f * a57 * b2 + 0.44543540477752686f * a58 * b3; + out(ii, k, 142) = -0.1785714328289032f * a52 * b13 + -0.3571428656578064f * a53 * b12 + 0.2766416668891907f * a54 * b13 + 0.1785714328289032f * a54 * b15 + -0.3571428656578064f * a55 * b10 + -0.1785714328289032f * a56 * b9 + 0.2766416668891907f * a56 * b11 + 0.1785714328289032f * a58 * b11; + out(ii, k, 143) = 0.2823462188243866f * a52 * b14 + 0.2187044471502304f * a53 * b13 + -0.2823462188243866f * a53 * b15 + 0.11293848603963852f * a54 * b12 + -0.2187044471502304f * a54 * b14 + 0.11293848603963852f * a55 * b11 + 0.2187044471502304f * a56 * b10 + 0.2823462188243866f * a57 * b9 + -0.2187044471502304f * a57 * b11 + -0.2823462188243866f * a58 * b10; + out(ii, k, 144) = -0.3992978632450104f * a52 * b9 + 0.2395787090063095f * a54 * b11 + 0.31943827867507935f * a55 * b12 + 0.2395787090063095f * a56 * b13 + -0.3992978632450104f * a58 * b15; + out(ii, k, 145) = 0.2823462188243866f * a52 * b10 + 0.2823462188243866f * a53 * b9 + 0.2187044471502304f * a53 * b11 + 0.2187044471502304f * a54 * b10 + 0.11293848603963852f * a55 * b13 + 0.11293848603963852f * a56 * b12 + 0.2187044471502304f * a56 * b14 + 0.2187044471502304f * a57 * b13 + 0.2823462188243866f * a57 * b15 + 0.2823462188243866f * a58 * b14; + out(ii, k, 146) = -0.1785714328289032f * a52 * b11 + -0.1785714328289032f * a54 * b9 + -0.2766416668891907f * a54 * b11 + -0.3571428656578064f * a55 * b14 + 0.2766416668891907f * a56 * b13 + -0.1785714328289032f * a56 * b15 + -0.3571428656578064f * a57 * b12 + -0.1785714328289032f * a58 * b13; + out(ii, k, 147) = 1.0f * a2 * b4; + out(ii, k, 148) = 1.0f * a2 * b5; + out(ii, k, 149) = 1.0f * a2 * b6; + out(ii, k, 150) = 1.0f * a2 * b7; + out(ii, k, 151) = 1.0f * a2 * b8; + out(ii, k, 152) = 1.0f * a27 * b0; + out(ii, k, 153) = 1.0f * a28 * b0; + out(ii, k, 154) = 1.0f * a29 * b0; + out(ii, k, 155) = 1.0f * a30 * b0; + out(ii, k, 156) = 1.0f * a31 * b0; + out(ii, k, 157) = 0.0555555559694767f * a27 * b20 + -0.32867109775543213f * a27 * b24 + -0.08784104883670807f * a28 * b21 + -0.23240555822849274f * a28 * b23 + 0.21516573429107666f * a29 * b18 + 0.23240555822849274f * a30 * b17 + -0.08784104883670807f * a30 * b19 + 0.32867109775543213f * a31 * b16; + out(ii, k, 158) = -0.08784104883670807f * a27 * b21 + -0.23240555822849274f * a27 * b23 + -0.2222222238779068f * a28 * b20 + -0.24845199286937714f * a28 * b22 + 0.3042903244495392f * a29 * b19 + 0.24845199286937714f * a30 * b18 + 0.23240555822849274f * a31 * b17 + 0.08784104883670807f * a31 * b19; + out(ii, k, 159) = 0.21516573429107666f * a27 * b18 + 0.3042903244495392f * a28 * b19 + 0.3333333432674408f * a29 * b20 + 0.3042903244495392f * a30 * b21 + 0.21516573429107666f * a31 * b22; + out(ii, k, 160) = 0.23240555822849274f * a27 * b17 + -0.08784104883670807f * a27 * b19 + 0.24845199286937714f * a28 * b18 + 0.3042903244495392f * a29 * b21 + -0.2222222238779068f * a30 * b20 + 0.24845199286937714f * a30 * b22 + -0.08784104883670807f * a31 * b21 + 0.23240555822849274f * a31 * b23; + out(ii, k, 161) = 0.32867109775543213f * a27 * b16 + 0.23240555822849274f * a28 * b17 + 0.08784104883670807f * a28 * b19 + 0.21516573429107666f * a29 * b22 + -0.08784104883670807f * a30 * b21 + 0.23240555822849274f * a30 * b23 + 0.0555555559694767f * a31 * b20 + 0.32867109775543213f * a31 * b24; + out(ii, k, 162) = -0.11385501176118851f * a87 * b22 + -0.17078250646591187f * a88 * b21 + -0.28867512941360474f * a89 * b20 + 0.11385501176118851f * a89 * b24 + 0.21516573429107666f * a90 * b21 + 0.17078250646591187f * a90 * b23 + -0.28867512941360474f * a91 * b18 + -0.17078250646591187f * a92 * b17 + 0.21516573429107666f * a92 * b19 + -0.11385501176118851f * a93 * b16 + 0.17078250646591187f * a94 * b19 + 0.11385501176118851f * a95 * b18; + out(ii, k, 163) = 0.2130032181739807f * a87 * b23 + 0.20126911997795105f * a88 * b22 + -0.2130032181739807f * a88 * b24 + 0.1369306445121765f * a89 * b21 + -0.20126911997795105f * a89 * b23 + 0.06804138422012329f * a90 * b20 + -0.1369306445121765f * a90 * b22 + 0.06804138422012329f * a91 * b19 + 0.1369306445121765f * a92 * b18 + 0.20126911997795105f * a93 * b17 + -0.1369306445121765f * a93 * b19 + 0.2130032181739807f * a94 * b16 + -0.20126911997795105f * a94 * b18 + -0.2130032181739807f * a95 * b17; + out(ii, k, 164) = -0.3478327989578247f * a87 * b16 + -0.08695819973945618f * a88 * b17 + 0.09938079863786697f * a89 * b18 + 0.21118420362472534f * a90 * b19 + 0.24845199286937714f * a91 * b20 + 0.21118420362472534f * a92 * b21 + 0.09938079863786697f * a93 * b22 + -0.08695819973945618f * a94 * b23 + -0.3478327989578247f * a95 * b24; + out(ii, k, 165) = 0.2130032181739807f * a87 * b17 + 0.2130032181739807f * a88 * b16 + 0.20126911997795105f * a88 * b18 + 0.20126911997795105f * a89 * b17 + 0.1369306445121765f * a89 * b19 + 0.1369306445121765f * a90 * b18 + 0.06804138422012329f * a91 * b21 + 0.06804138422012329f * a92 * b20 + 0.1369306445121765f * a92 * b22 + 0.1369306445121765f * a93 * b21 + 0.20126911997795105f * a93 * b23 + 0.20126911997795105f * a94 * b22 + 0.2130032181739807f * a94 * b24 + 0.2130032181739807f * a95 * b23; + out(ii, k, 166) = -0.11385501176118851f * a87 * b18 + -0.17078250646591187f * a88 * b19 + -0.11385501176118851f * a89 * b16 + -0.17078250646591187f * a90 * b17 + -0.21516573429107666f * a90 * b19 + -0.28867512941360474f * a91 * b22 + 0.21516573429107666f * a92 * b21 + -0.17078250646591187f * a92 * b23 + -0.28867512941360474f * a93 * b20 + -0.11385501176118851f * a93 * b24 + -0.17078250646591187f * a94 * b21 + -0.11385501176118851f * a95 * b22; + out(ii, k, 167) = 1.0f * a32 * b0; + out(ii, k, 168) = 1.0f * a33 * b0; + out(ii, k, 169) = 1.0f * a34 * b0; + out(ii, k, 170) = 1.0f * a35 * b0; + out(ii, k, 171) = 1.0f * a36 * b0; + out(ii, k, 172) = -0.4472135901451111f * a32 * b6 + 0.3872983455657959f * a33 * b7 + -0.4472135901451111f * a34 * b4 + 0.3872983455657959f * a35 * b5; + out(ii, k, 173) = 0.3872983455657959f * a32 * b7 + 0.22360679507255554f * a33 * b6 + -0.3872983455657959f * a33 * b8 + 0.22360679507255554f * a34 * b5 + 0.3872983455657959f * a35 * b4 + -0.3872983455657959f * a36 * b5; + out(ii, k, 174) = -0.4472135901451111f * a32 * b4 + 0.22360679507255554f * a33 * b5 + 0.4472135901451111f * a34 * b6 + 0.22360679507255554f * a35 * b7 + -0.4472135901451111f * a36 * b8; + out(ii, k, 175) = 0.3872983455657959f * a32 * b5 + 0.3872983455657959f * a33 * b4 + 0.22360679507255554f * a34 * b7 + 0.22360679507255554f * a35 * b6 + 0.3872983455657959f * a35 * b8 + 0.3872983455657959f * a36 * b7; + out(ii, k, 176) = -0.3872983455657959f * a33 * b5 + -0.4472135901451111f * a34 * b8 + 0.3872983455657959f * a35 * b7 + -0.4472135901451111f * a36 * b6; + out(ii, k, 177) = 0.0555555559694767f * a32 * b20 + -0.32867109775543213f * a32 * b24 + -0.08784104883670807f * a33 * b21 + -0.23240555822849274f * a33 * b23 + 0.21516573429107666f * a34 * b18 + 0.23240555822849274f * a35 * b17 + -0.08784104883670807f * a35 * b19 + 0.32867109775543213f * a36 * b16; + out(ii, k, 178) = -0.08784104883670807f * a32 * b21 + -0.23240555822849274f * a32 * b23 + -0.2222222238779068f * a33 * b20 + -0.24845199286937714f * a33 * b22 + 0.3042903244495392f * a34 * b19 + 0.24845199286937714f * a35 * b18 + 0.23240555822849274f * a36 * b17 + 0.08784104883670807f * a36 * b19; + out(ii, k, 179) = 0.21516573429107666f * a32 * b18 + 0.3042903244495392f * a33 * b19 + 0.3333333432674408f * a34 * b20 + 0.3042903244495392f * a35 * b21 + 0.21516573429107666f * a36 * b22; + out(ii, k, 180) = 0.23240555822849274f * a32 * b17 + -0.08784104883670807f * a32 * b19 + 0.24845199286937714f * a33 * b18 + 0.3042903244495392f * a34 * b21 + -0.2222222238779068f * a35 * b20 + 0.24845199286937714f * a35 * b22 + -0.08784104883670807f * a36 * b21 + 0.23240555822849274f * a36 * b23; + out(ii, k, 181) = 0.32867109775543213f * a32 * b16 + 0.23240555822849274f * a33 * b17 + 0.08784104883670807f * a33 * b19 + 0.21516573429107666f * a34 * b22 + -0.08784104883670807f * a35 * b21 + 0.23240555822849274f * a35 * b23 + 0.0555555559694767f * a36 * b20 + 0.32867109775543213f * a36 * b24; + out(ii, k, 182) = 0.32867109775543213f * a96 * b8 + 0.23240555822849274f * a97 * b7 + 0.21516573429107666f * a98 * b6 + -0.08784104883670807f * a99 * b7 + 0.0555555559694767f * a100 * b4 + -0.08784104883670807f * a101 * b5 + -0.23240555822849274f * a103 * b5 + -0.32867109775543213f * a104 * b4; + out(ii, k, 183) = 0.23240555822849274f * a97 * b8 + 0.24845199286937714f * a98 * b7 + 0.3042903244495392f * a99 * b6 + 0.08784104883670807f * a99 * b8 + -0.2222222238779068f * a100 * b5 + -0.08784104883670807f * a101 * b4 + -0.24845199286937714f * a102 * b5 + -0.23240555822849274f * a103 * b4; + out(ii, k, 184) = 0.21516573429107666f * a98 * b4 + 0.3042903244495392f * a99 * b5 + 0.3333333432674408f * a100 * b6 + 0.3042903244495392f * a101 * b7 + 0.21516573429107666f * a102 * b8; + out(ii, k, 185) = 0.23240555822849274f * a97 * b4 + 0.24845199286937714f * a98 * b5 + -0.08784104883670807f * a99 * b4 + -0.2222222238779068f * a100 * b7 + 0.3042903244495392f * a101 * b6 + -0.08784104883670807f * a101 * b8 + 0.24845199286937714f * a102 * b7 + 0.23240555822849274f * a103 * b8; + out(ii, k, 186) = 0.32867109775543213f * a96 * b4 + 0.23240555822849274f * a97 * b5 + 0.08784104883670807f * a99 * b5 + 0.0555555559694767f * a100 * b8 + -0.08784104883670807f * a101 * b7 + 0.21516573429107666f * a102 * b6 + 0.23240555822849274f * a103 * b7 + 0.32867109775543213f * a104 * b8; + out(ii, k, 187) = -0.11385501176118851f * a96 * b22 + -0.17078250646591187f * a97 * b21 + -0.28867512941360474f * a98 * b20 + 0.11385501176118851f * a98 * b24 + 0.21516573429107666f * a99 * b21 + 0.17078250646591187f * a99 * b23 + -0.28867512941360474f * a100 * b18 + -0.17078250646591187f * a101 * b17 + 0.21516573429107666f * a101 * b19 + -0.11385501176118851f * a102 * b16 + 0.17078250646591187f * a103 * b19 + 0.11385501176118851f * a104 * b18; + out(ii, k, 188) = 0.2130032181739807f * a96 * b23 + 0.20126911997795105f * a97 * b22 + -0.2130032181739807f * a97 * b24 + 0.1369306445121765f * a98 * b21 + -0.20126911997795105f * a98 * b23 + 0.06804138422012329f * a99 * b20 + -0.1369306445121765f * a99 * b22 + 0.06804138422012329f * a100 * b19 + 0.1369306445121765f * a101 * b18 + 0.20126911997795105f * a102 * b17 + -0.1369306445121765f * a102 * b19 + 0.2130032181739807f * a103 * b16 + -0.20126911997795105f * a103 * b18 + -0.2130032181739807f * a104 * b17; + out(ii, k, 189) = -0.3478327989578247f * a96 * b16 + -0.08695819973945618f * a97 * b17 + 0.09938079863786697f * a98 * b18 + 0.21118420362472534f * a99 * b19 + 0.24845199286937714f * a100 * b20 + 0.21118420362472534f * a101 * b21 + 0.09938079863786697f * a102 * b22 + -0.08695819973945618f * a103 * b23 + -0.3478327989578247f * a104 * b24; + out(ii, k, 190) = 0.2130032181739807f * a96 * b17 + 0.2130032181739807f * a97 * b16 + 0.20126911997795105f * a97 * b18 + 0.20126911997795105f * a98 * b17 + 0.1369306445121765f * a98 * b19 + 0.1369306445121765f * a99 * b18 + 0.06804138422012329f * a100 * b21 + 0.06804138422012329f * a101 * b20 + 0.1369306445121765f * a101 * b22 + 0.1369306445121765f * a102 * b21 + 0.20126911997795105f * a102 * b23 + 0.20126911997795105f * a103 * b22 + 0.2130032181739807f * a103 * b24 + 0.2130032181739807f * a104 * b23; + out(ii, k, 191) = -0.11385501176118851f * a96 * b18 + -0.17078250646591187f * a97 * b19 + -0.11385501176118851f * a98 * b16 + -0.17078250646591187f * a99 * b17 + -0.21516573429107666f * a99 * b19 + -0.28867512941360474f * a100 * b22 + 0.21516573429107666f * a101 * b21 + -0.17078250646591187f * a101 * b23 + -0.28867512941360474f * a102 * b20 + -0.11385501176118851f * a102 * b24 + -0.17078250646591187f * a103 * b21 + -0.11385501176118851f * a104 * b22; + out(ii, k, 192) = 0.64549720287323f * a11 * b3 + 0.64549720287323f * a13 * b1; + out(ii, k, 193) = 0.64549720287323f * a11 * b2 + 0.64549720287323f * a12 * b1; + out(ii, k, 194) = -0.3726779818534851f * a11 * b1 + 0.7453559637069702f * a12 * b2 + -0.3726779818534851f * a13 * b3; out(ii, k, 195) = 0.64549720287323f * a12 * b3 + 0.64549720287323f * a13 * b2; out(ii, k, 196) = -0.64549720287323f * a11 * b1 + 0.64549720287323f * a13 * b3; out(ii, k, 197) = -0.11501092463731766f * a11 * b13 + -0.44543540477752686f * a11 * b15 + 0.36369648575782776f * a12 * b10 + 0.44543540477752686f * a13 * b9 + -0.11501092463731766f * a13 * b11; @@ -2580,11 +7191,13 @@ KOKKOS_INLINE_FUNCTION void fwd_AAA(const V &L, const V &R, const V &out, const out(ii, k, 634) = -0.2545875310897827f * a132 * b9 + 0.146986186504364f * a133 * b10 + 0.28867512941360474f * a134 * b9 + 0.24845199286937714f * a134 * b11 + 0.2222222238779068f * a135 * b10 + 0.0555555559694767f * a136 * b13 + 0.21516573429107666f * a137 * b12 + 0.2222222238779068f * a137 * b14 + 0.24845199286937714f * a138 * b13 + 0.28867512941360474f * a138 * b15 + 0.146986186504364f * a139 * b14 + -0.2545875310897827f * a140 * b15; out(ii, k, 635) = 0.32867109775543213f * a132 * b10 + 0.146986186504364f * a133 * b11 + -0.21516573429107666f * a135 * b9 + -0.2222222238779068f * a135 * b11 + -0.3888888955116272f * a136 * b14 + 0.2222222238779068f * a137 * b13 + -0.21516573429107666f * a137 * b15 + -0.09622504562139511f * a138 * b12 + 0.146986186504364f * a139 * b13 + 0.32867109775543213f * a140 * b14; out(ii, k, 636) = -0.2545875310897827f * a132 * b11 + -0.28867512941360474f * a134 * b11 + 0.21516573429107666f * a135 * b10 + 0.1666666716337204f * a136 * b15 + -0.21516573429107666f * a137 * b14 + 0.28867512941360474f * a138 * b13 + -0.44095855951309204f * a139 * b12 + -0.2545875310897827f * a140 * b13; -} + } -template -KOKKOS_INLINE_FUNCTION void rev_AAA(const V &L, const V &R, const V &D, const V &dL, const V &dR, const int ii, const int k) -{ + template + KOKKOS_INLINE_FUNCTION static void rev(const V &L, const V &R, const V &D, const V &dL, + const V &dR, const int ii, const int k) + { + static_assert(!ACC, "mixed products assign dL"); { const float b0 = R(ii, k, 0); const float b1 = R(ii, k, 1); @@ -11935,15 +16548,21 @@ KOKKOS_INLINE_FUNCTION void rev_AAA(const V &L, const V &R, const V &D, const V dR(ii, k, 23) += h23; dR(ii, k, 24) += h24; } -} + } + +}; -constexpr int nt_AAAA = 2138; -constexpr int tab_AAAA[2138][3] = {{0,0,0}, {1,0,1}, {2,0,2}, {3,0,3}, {4,0,4}, {8,5,5}, {9,6,5}, {10,7,5}, {11,5,6}, {12,6,6}, {13,7,6}, {14,5,7}, {15,6,7}, {16,7,7}, {1,1,8}, {2,1,9}, {3,1,10}, {4,1,11}, {27,17,12}, {28,18,12}, {29,19,12}, {30,20,12}, {31,21,12}, {32,17,13}, {33,18,13}, {34,19,13}, {35,20,13}, {36,21,13}, {37,17,14}, {38,18,14}, {39,19,14}, {40,20,14}, {41,21,14}, {42,17,15}, {43,18,15}, {44,19,15}, {45,20,15}, {46,21,15}, {47,17,16}, {48,18,16}, {49,19,16}, {50,20,16}, {51,21,16}, {27,22,17}, {28,23,17}, {29,24,17}, {30,25,17}, {31,26,17}, {37,22,18}, {38,23,18}, {39,24,18}, {40,25,18}, {41,26,18}, {42,22,19}, {43,23,19}, {44,24,19}, {45,25,19}, {46,26,19}, {47,22,20}, {48,23,20}, {49,24,20}, {50,25,20}, {51,26,20}, {8,8,21}, {9,9,21}, {10,10,21}, {11,8,22}, {12,9,22}, {13,10,22}, {14,8,23}, {15,9,23}, {16,10,23}, {52,52,24}, {53,53,24}, {54,54,24}, {55,55,24}, {56,56,24}, {57,57,24}, {58,58,24}, {66,52,25}, {67,53,25}, {68,54,25}, {69,55,25}, {70,56,25}, {71,57,25}, {72,58,25}, {80,52,26}, {81,53,26}, {82,54,26}, {83,55,26}, {84,56,26}, {85,57,26}, {86,58,26}, {2,2,27}, {3,2,28}, {4,2,29}, {32,27,30}, {33,28,30}, {34,29,30}, {35,30,30}, {36,31,30}, {37,27,31}, {38,28,31}, {39,29,31}, {40,30,31}, {41,31,31}, {42,27,32}, {43,28,32}, {44,29,32}, {45,30,32}, {46,31,32}, {47,27,33}, {48,28,33}, {49,29,33}, {50,30,33}, {51,31,33}, {96,87,34}, {97,88,34}, {98,89,34}, {99,90,34}, {100,91,34}, {101,92,34}, {102,93,34}, {103,94,34}, {104,95,34}, {105,87,35}, {106,88,35}, {107,89,35}, {108,90,35}, {109,91,35}, {110,92,35}, {111,93,35}, {112,94,35}, {113,95,35}, {132,87,36}, {133,88,36}, {134,89,36}, {135,90,36}, {136,91,36}, {137,92,36}, {138,93,36}, {139,94,36}, {140,95,36}, {80,59,37}, {81,60,37}, {82,61,37}, {83,62,37}, {84,63,37}, {85,64,37}, {86,65,37}, {32,32,38}, {33,33,38}, {34,34,38}, {35,35,38}, {36,36,38}, {37,32,39}, {38,33,39}, {39,34,39}, {40,35,39}, {41,36,39}, {42,32,40}, {43,33,40}, {44,34,40}, {45,35,40}, {46,36,40}, {47,32,41}, {48,33,41}, {49,34,41}, {50,35,41}, {51,36,41}, {96,96,42}, {97,97,42}, {98,98,42}, {99,99,42}, {100,100,42}, {101,101,42}, {102,102,42}, {103,103,42}, {104,104,42}, {123,96,43}, {124,97,43}, {125,98,43}, {126,99,43}, {127,100,43}, {128,101,43}, {129,102,43}, {130,103,43}, {131,104,43}, {132,96,44}, {133,97,44}, {134,98,44}, {135,99,44}, {136,100,44}, {137,101,44}, {138,102,44}, {139,103,44}, {140,104,44}, {11,11,45}, {12,12,45}, {13,13,45}, {14,11,46}, {15,12,46}, {16,13,46}, {66,66,47}, {67,67,47}, {68,68,47}, {69,69,47}, {70,70,47}, {71,71,47}, {72,72,47}, {73,66,48}, {74,67,48}, {75,68,48}, {76,69,48}, {77,70,48}, {78,71,48}, {79,72,48}, {80,66,49}, {81,67,49}, {82,68,49}, {83,69,49}, {84,70,49}, {85,71,49}, {86,72,49}, {3,3,50}, {4,3,51}, {37,37,52}, {38,38,52}, {39,39,52}, {40,40,52}, {41,41,52}, {42,37,53}, {43,38,53}, {44,39,53}, {45,40,53}, {46,41,53}, {47,37,54}, {48,38,54}, {49,39,54}, {50,40,54}, {51,41,54}, {105,105,55}, {106,106,55}, {107,107,55}, {108,108,55}, {109,109,55}, {110,110,55}, {111,111,55}, {112,112,55}, {113,113,55}, {123,105,56}, {124,106,56}, {125,107,56}, {126,108,56}, {127,109,56}, {128,110,56}, {129,111,56}, {130,112,56}, {131,113,56}, {132,105,57}, {133,106,57}, {134,107,57}, {135,108,57}, {136,109,57}, {137,110,57}, {138,111,57}, {139,112,57}, {140,113,57}, {132,114,58}, {133,115,58}, {134,116,58}, {135,117,58}, {136,118,58}, {137,119,58}, {138,120,58}, {139,121,58}, {140,122,58}, {73,73,59}, {74,74,59}, {75,75,59}, {76,76,59}, {77,77,59}, {78,78,59}, {79,79,59}, {80,73,60}, {81,74,60}, {82,75,60}, {83,76,60}, {84,77,60}, {85,78,60}, {86,79,60}, {42,42,61}, {43,43,61}, {44,44,61}, {45,45,61}, {46,46,61}, {47,42,62}, {48,43,62}, {49,44,62}, {50,45,62}, {51,46,62}, {123,123,63}, {124,124,63}, {125,125,63}, {126,126,63}, {127,127,63}, {128,128,63}, {129,129,63}, {130,130,63}, {131,131,63}, {14,14,64}, {15,15,64}, {16,16,64}, {80,80,65}, {81,81,65}, {82,82,65}, {83,83,65}, {84,84,65}, {85,85,65}, {86,86,65}, {4,4,66}, {47,47,67}, {48,48,67}, {49,49,67}, {50,50,67}, {51,51,67}, {132,132,68}, {133,133,68}, {134,134,68}, {135,135,68}, {136,136,68}, {137,137,68}, {138,138,68}, {139,139,68}, {140,140,68}, {5,0,69}, {6,0,70}, {7,0,71}, {5,1,72}, {6,1,73}, {7,1,74}, {5,2,75}, {6,2,76}, {7,2,77}, {5,3,78}, {6,3,79}, {7,3,80}, {5,4,81}, {6,4,82}, {7,4,83}, {17,10,84}, {18,9,84}, {19,8,84}, {21,8,84}, {18,8,85}, {19,9,85}, {20,10,85}, {17,8,86}, {19,10,86}, {20,9,86}, {21,10,86}, {17,13,87}, {18,12,87}, {19,11,87}, {21,11,87}, {18,11,88}, {19,12,88}, {20,13,88}, {17,11,89}, {19,13,89}, {20,12,89}, {21,13,89}, {17,16,90}, {18,15,90}, {19,14,90}, {21,14,90}, {18,14,91}, {19,15,91}, {20,16,91}, {17,14,92}, {19,16,92}, {20,15,92}, {21,16,92}, {22,10,93}, {23,9,93}, {24,8,93}, {26,8,93}, {23,8,94}, {24,9,94}, {25,10,94}, {22,8,95}, {24,10,95}, {25,9,95}, {26,10,95}, {22,13,96}, {23,12,96}, {24,11,96}, {26,11,96}, {23,11,97}, {24,12,97}, {25,13,97}, {22,11,98}, {24,13,98}, {25,12,98}, {26,13,98}, {22,16,99}, {23,15,99}, {24,14,99}, {26,14,99}, {23,14,100}, {24,15,100}, {25,16,100}, {22,14,101}, {24,16,101}, {25,15,101}, {26,16,101}, {8,0,102}, {9,0,103}, {10,0,104}, {8,1,105}, {9,1,106}, {10,1,107}, {8,2,108}, {9,2,109}, {10,2,110}, {8,3,111}, {9,3,112}, {10,3,113}, {8,4,114}, {9,4,115}, {10,4,116}, {52,21,117}, {53,20,117}, {54,19,117}, {54,21,117}, {55,18,117}, {56,17,117}, {57,18,117}, {58,17,117}, {53,17,118}, {54,18,118}, {55,19,118}, {56,20,118}, {57,21,118}, {52,17,119}, {53,18,119}, {54,17,119}, {55,20,119}, {56,19,119}, {56,21,119}, {57,20,119}, {58,21,119}, {52,26,120}, {53,25,120}, {54,24,120}, {54,26,120}, {55,23,120}, {56,22,120}, {57,23,120}, {58,22,120}, {53,22,121}, {54,23,121}, {55,24,121}, {56,25,121}, {57,26,121}, {52,22,122}, {53,23,122}, {54,22,122}, {55,25,122}, {56,24,122}, {56,26,122}, {57,25,122}, {58,26,122}, {52,31,123}, {53,30,123}, {54,29,123}, {54,31,123}, {55,28,123}, {56,27,123}, {57,28,123}, {58,27,123}, {53,27,124}, {54,28,124}, {55,29,124}, {56,30,124}, {57,31,124}, {52,27,125}, {53,28,125}, {54,27,125}, {55,30,125}, {56,29,125}, {56,31,125}, {57,30,125}, {58,31,125}, {52,36,126}, {53,35,126}, {54,34,126}, {54,36,126}, {55,33,126}, {56,32,126}, {57,33,126}, {58,32,126}, {53,32,127}, {54,33,127}, {55,34,127}, {56,35,127}, {57,36,127}, {52,32,128}, {53,33,128}, {54,32,128}, {55,35,128}, {56,34,128}, {56,36,128}, {57,35,128}, {58,36,128}, {52,41,129}, {53,40,129}, {54,39,129}, {54,41,129}, {55,38,129}, {56,37,129}, {57,38,129}, {58,37,129}, {53,37,130}, {54,38,130}, {55,39,130}, {56,40,130}, {57,41,130}, {52,37,131}, {53,38,131}, {54,37,131}, {55,40,131}, {56,39,131}, {56,41,131}, {57,40,131}, {58,41,131}, {52,46,132}, {53,45,132}, {54,44,132}, {54,46,132}, {55,43,132}, {56,42,132}, {57,43,132}, {58,42,132}, {53,42,133}, {54,43,133}, {55,44,133}, {56,45,133}, {57,46,133}, {52,42,134}, {53,43,134}, {54,42,134}, {55,45,134}, {56,44,134}, {56,46,134}, {57,45,134}, {58,46,134}, {52,51,135}, {53,50,135}, {54,49,135}, {54,51,135}, {55,48,135}, {56,47,135}, {57,48,135}, {58,47,135}, {53,47,136}, {54,48,136}, {55,49,136}, {56,50,136}, {57,51,136}, {52,47,137}, {53,48,137}, {54,47,137}, {55,50,137}, {56,49,137}, {56,51,137}, {57,50,137}, {58,51,137}, {27,7,138}, {28,6,138}, {29,5,138}, {31,5,138}, {28,5,139}, {29,6,139}, {30,7,139}, {27,5,140}, {29,7,140}, {30,6,140}, {31,7,140}, {27,10,141}, {28,9,141}, {29,8,141}, {31,8,141}, {28,8,142}, {29,9,142}, {30,10,142}, {27,8,143}, {29,10,143}, {30,9,143}, {31,10,143}, {27,13,144}, {28,12,144}, {29,11,144}, {31,11,144}, {28,11,145}, {29,12,145}, {30,13,145}, {27,11,146}, {29,13,146}, {30,12,146}, {31,13,146}, {27,16,147}, {28,15,147}, {29,14,147}, {31,14,147}, {28,14,148}, {29,15,148}, {30,16,148}, {27,14,149}, {29,16,149}, {30,15,149}, {31,16,149}, {87,65,150}, {88,64,150}, {89,63,150}, {89,65,150}, {90,62,150}, {90,64,150}, {91,61,150}, {92,60,150}, {93,59,150}, {93,61,150}, {94,60,150}, {95,59,150}, {88,59,151}, {89,60,151}, {90,61,151}, {91,62,151}, {92,63,151}, {93,64,151}, {94,65,151}, {87,59,152}, {88,60,152}, {89,59,152}, {89,61,152}, {90,60,152}, {91,63,152}, {92,62,152}, {92,64,152}, {93,63,152}, {93,65,152}, {94,64,152}, {95,65,152}, {87,72,153}, {88,71,153}, {89,70,153}, {89,72,153}, {90,69,153}, {90,71,153}, {91,68,153}, {92,67,153}, {93,66,153}, {93,68,153}, {94,67,153}, {95,66,153}, {88,66,154}, {89,67,154}, {90,68,154}, {91,69,154}, {92,70,154}, {93,71,154}, {94,72,154}, {87,66,155}, {88,67,155}, {89,66,155}, {89,68,155}, {90,67,155}, {91,70,155}, {92,69,155}, {92,71,155}, {93,70,155}, {93,72,155}, {94,71,155}, {95,72,155}, {87,79,156}, {88,78,156}, {89,77,156}, {89,79,156}, {90,76,156}, {90,78,156}, {91,75,156}, {92,74,156}, {93,73,156}, {93,75,156}, {94,74,156}, {95,73,156}, {88,73,157}, {89,74,157}, {90,75,157}, {91,76,157}, {92,77,157}, {93,78,157}, {94,79,157}, {87,73,158}, {88,74,158}, {89,73,158}, {89,75,158}, {90,74,158}, {91,77,158}, {92,76,158}, {92,78,158}, {93,77,158}, {93,79,158}, {94,78,158}, {95,79,158}, {87,86,159}, {88,85,159}, {89,84,159}, {89,86,159}, {90,83,159}, {90,85,159}, {91,82,159}, {92,81,159}, {93,80,159}, {93,82,159}, {94,81,159}, {95,80,159}, {88,80,160}, {89,81,160}, {90,82,160}, {91,83,160}, {92,84,160}, {93,85,160}, {94,86,160}, {87,80,161}, {88,81,161}, {89,80,161}, {89,82,161}, {90,81,161}, {91,84,161}, {92,83,161}, {92,85,161}, {93,84,161}, {93,86,161}, {94,85,161}, {95,86,161}, {59,31,162}, {60,30,162}, {61,29,162}, {61,31,162}, {62,28,162}, {63,27,162}, {64,28,162}, {65,27,162}, {60,27,163}, {61,28,163}, {62,29,163}, {63,30,163}, {64,31,163}, {59,27,164}, {60,28,164}, {61,27,164}, {62,30,164}, {63,29,164}, {63,31,164}, {64,30,164}, {65,31,164}, {59,36,165}, {60,35,165}, {61,34,165}, {61,36,165}, {62,33,165}, {63,32,165}, {64,33,165}, {65,32,165}, {60,32,166}, {61,33,166}, {62,34,166}, {63,35,166}, {64,36,166}, {59,32,167}, {60,33,167}, {61,32,167}, {62,35,167}, {63,34,167}, {63,36,167}, {64,35,167}, {65,36,167}, {59,41,168}, {60,40,168}, {61,39,168}, {61,41,168}, {62,38,168}, {63,37,168}, {64,38,168}, {65,37,168}, {60,37,169}, {61,38,169}, {62,39,169}, {63,40,169}, {64,41,169}, {59,37,170}, {60,38,170}, {61,37,170}, {62,40,170}, {63,39,170}, {63,41,170}, {64,40,170}, {65,41,170}, {59,46,171}, {60,45,171}, {61,44,171}, {61,46,171}, {62,43,171}, {63,42,171}, {64,43,171}, {65,42,171}, {60,42,172}, {61,43,172}, {62,44,172}, {63,45,172}, {64,46,172}, {59,42,173}, {60,43,173}, {61,42,173}, {62,45,173}, {63,44,173}, {63,46,173}, {64,45,173}, {65,46,173}, {59,51,174}, {60,50,174}, {61,49,174}, {61,51,174}, {62,48,174}, {63,47,174}, {64,48,174}, {65,47,174}, {60,47,175}, {61,48,175}, {62,49,175}, {63,50,175}, {64,51,175}, {59,47,176}, {60,48,176}, {61,47,176}, {62,50,176}, {63,49,176}, {63,51,176}, {64,50,176}, {65,51,176}, {32,7,177}, {33,6,177}, {34,5,177}, {36,5,177}, {33,5,178}, {34,6,178}, {35,7,178}, {32,5,179}, {34,7,179}, {35,6,179}, {36,7,179}, {32,10,180}, {33,9,180}, {34,8,180}, {36,8,180}, {33,8,181}, {34,9,181}, {35,10,181}, {32,8,182}, {34,10,182}, {35,9,182}, {36,10,182}, {32,13,183}, {33,12,183}, {34,11,183}, {36,11,183}, {33,11,184}, {34,12,184}, {35,13,184}, {32,11,185}, {34,13,185}, {35,12,185}, {36,13,185}, {32,16,186}, {33,15,186}, {34,14,186}, {36,14,186}, {33,14,187}, {34,15,187}, {35,16,187}, {32,14,188}, {34,16,188}, {35,15,188}, {36,16,188}, {96,58,189}, {97,57,189}, {98,56,189}, {98,58,189}, {99,55,189}, {99,57,189}, {100,54,189}, {101,53,189}, {102,52,189}, {102,54,189}, {103,53,189}, {104,52,189}, {97,52,190}, {98,53,190}, {99,54,190}, {100,55,190}, {101,56,190}, {102,57,190}, {103,58,190}, {96,52,191}, {97,53,191}, {98,52,191}, {98,54,191}, {99,53,191}, {100,56,191}, {101,55,191}, {101,57,191}, {102,56,191}, {102,58,191}, {103,57,191}, {104,58,191}, {96,65,192}, {97,64,192}, {98,63,192}, {98,65,192}, {99,62,192}, {99,64,192}, {100,61,192}, {101,60,192}, {102,59,192}, {102,61,192}, {103,60,192}, {104,59,192}, {97,59,193}, {98,60,193}, {99,61,193}, {100,62,193}, {101,63,193}, {102,64,193}, {103,65,193}, {96,59,194}, {97,60,194}, {98,59,194}, {98,61,194}, {99,60,194}, {100,63,194}, {101,62,194}, {101,64,194}, {102,63,194}, {102,65,194}, {103,64,194}, {104,65,194}, {96,72,195}, {97,71,195}, {98,70,195}, {98,72,195}, {99,69,195}, {99,71,195}, {100,68,195}, {101,67,195}, {102,66,195}, {102,68,195}, {103,67,195}, {104,66,195}, {97,66,196}, {98,67,196}, {99,68,196}, {100,69,196}, {101,70,196}, {102,71,196}, {103,72,196}, {96,66,197}, {97,67,197}, {98,66,197}, {98,68,197}, {99,67,197}, {100,70,197}, {101,69,197}, {101,71,197}, {102,70,197}, {102,72,197}, {103,71,197}, {104,72,197}, {96,79,198}, {97,78,198}, {98,77,198}, {98,79,198}, {99,76,198}, {99,78,198}, {100,75,198}, {101,74,198}, {102,73,198}, {102,75,198}, {103,74,198}, {104,73,198}, {97,73,199}, {98,74,199}, {99,75,199}, {100,76,199}, {101,77,199}, {102,78,199}, {103,79,199}, {96,73,200}, {97,74,200}, {98,73,200}, {98,75,200}, {99,74,200}, {100,77,200}, {101,76,200}, {101,78,200}, {102,77,200}, {102,79,200}, {103,78,200}, {104,79,200}, {96,86,201}, {97,85,201}, {98,84,201}, {98,86,201}, {99,83,201}, {99,85,201}, {100,82,201}, {101,81,201}, {102,80,201}, {102,82,201}, {103,81,201}, {104,80,201}, {97,80,202}, {98,81,202}, {99,82,202}, {100,83,202}, {101,84,202}, {102,85,202}, {103,86,202}, {96,80,203}, {97,81,203}, {98,80,203}, {98,82,203}, {99,81,203}, {100,84,203}, {101,83,203}, {101,85,203}, {102,84,203}, {102,86,203}, {103,85,203}, {104,86,203}, {11,0,204}, {12,0,205}, {13,0,206}, {11,1,207}, {12,1,208}, {13,1,209}, {11,2,210}, {12,2,211}, {13,2,212}, {11,3,213}, {12,3,214}, {13,3,215}, {11,4,216}, {12,4,217}, {13,4,218}, {66,21,219}, {67,20,219}, {68,19,219}, {68,21,219}, {69,18,219}, {70,17,219}, {71,18,219}, {72,17,219}, {67,17,220}, {68,18,220}, {69,19,220}, {70,20,220}, {71,21,220}, {66,17,221}, {67,18,221}, {68,17,221}, {69,20,221}, {70,19,221}, {70,21,221}, {71,20,221}, {72,21,221}, {66,26,222}, {67,25,222}, {68,24,222}, {68,26,222}, {69,23,222}, {70,22,222}, {71,23,222}, {72,22,222}, {67,22,223}, {68,23,223}, {69,24,223}, {70,25,223}, {71,26,223}, {66,22,224}, {67,23,224}, {68,22,224}, {69,25,224}, {70,24,224}, {70,26,224}, {71,25,224}, {72,26,224}, {66,31,225}, {67,30,225}, {68,29,225}, {68,31,225}, {69,28,225}, {70,27,225}, {71,28,225}, {72,27,225}, {67,27,226}, {68,28,226}, {69,29,226}, {70,30,226}, {71,31,226}, {66,27,227}, {67,28,227}, {68,27,227}, {69,30,227}, {70,29,227}, {70,31,227}, {71,30,227}, {72,31,227}, {66,36,228}, {67,35,228}, {68,34,228}, {68,36,228}, {69,33,228}, {70,32,228}, {71,33,228}, {72,32,228}, {67,32,229}, {68,33,229}, {69,34,229}, {70,35,229}, {71,36,229}, {66,32,230}, {67,33,230}, {68,32,230}, {69,35,230}, {70,34,230}, {70,36,230}, {71,35,230}, {72,36,230}, {66,46,231}, {67,45,231}, {68,44,231}, {68,46,231}, {69,43,231}, {70,42,231}, {71,43,231}, {72,42,231}, {67,42,232}, {68,43,232}, {69,44,232}, {70,45,232}, {71,46,232}, {66,42,233}, {67,43,233}, {68,42,233}, {69,45,233}, {70,44,233}, {70,46,233}, {71,45,233}, {72,46,233}, {66,51,234}, {67,50,234}, {68,49,234}, {68,51,234}, {69,48,234}, {70,47,234}, {71,48,234}, {72,47,234}, {67,47,235}, {68,48,235}, {69,49,235}, {70,50,235}, {71,51,235}, {66,47,236}, {67,48,236}, {68,47,236}, {69,50,236}, {70,49,236}, {70,51,236}, {71,50,236}, {72,51,236}, {37,7,237}, {38,6,237}, {39,5,237}, {41,5,237}, {38,5,238}, {39,6,238}, {40,7,238}, {37,5,239}, {39,7,239}, {40,6,239}, {41,7,239}, {37,10,240}, {38,9,240}, {39,8,240}, {41,8,240}, {38,8,241}, {39,9,241}, {40,10,241}, {37,8,242}, {39,10,242}, {40,9,242}, {41,10,242}, {37,13,243}, {38,12,243}, {39,11,243}, {41,11,243}, {38,11,244}, {39,12,244}, {40,13,244}, {37,11,245}, {39,13,245}, {40,12,245}, {41,13,245}, {37,16,246}, {38,15,246}, {39,14,246}, {41,14,246}, {38,14,247}, {39,15,247}, {40,16,247}, {37,14,248}, {39,16,248}, {40,15,248}, {41,16,248}, {105,58,249}, {106,57,249}, {107,56,249}, {107,58,249}, {108,55,249}, {108,57,249}, {109,54,249}, {110,53,249}, {111,52,249}, {111,54,249}, {112,53,249}, {113,52,249}, {106,52,250}, {107,53,250}, {108,54,250}, {109,55,250}, {110,56,250}, {111,57,250}, {112,58,250}, {105,52,251}, {106,53,251}, {107,52,251}, {107,54,251}, {108,53,251}, {109,56,251}, {110,55,251}, {110,57,251}, {111,56,251}, {111,58,251}, {112,57,251}, {113,58,251}, {105,72,252}, {106,71,252}, {107,70,252}, {107,72,252}, {108,69,252}, {108,71,252}, {109,68,252}, {110,67,252}, {111,66,252}, {111,68,252}, {112,67,252}, {113,66,252}, {106,66,253}, {107,67,253}, {108,68,253}, {109,69,253}, {110,70,253}, {111,71,253}, {112,72,253}, {105,66,254}, {106,67,254}, {107,66,254}, {107,68,254}, {108,67,254}, {109,70,254}, {110,69,254}, {110,71,254}, {111,70,254}, {111,72,254}, {112,71,254}, {113,72,254}, {105,79,255}, {106,78,255}, {107,77,255}, {107,79,255}, {108,76,255}, {108,78,255}, {109,75,255}, {110,74,255}, {111,73,255}, {111,75,255}, {112,74,255}, {113,73,255}, {106,73,256}, {107,74,256}, {108,75,256}, {109,76,256}, {110,77,256}, {111,78,256}, {112,79,256}, {105,73,257}, {106,74,257}, {107,73,257}, {107,75,257}, {108,74,257}, {109,77,257}, {110,76,257}, {110,78,257}, {111,77,257}, {111,79,257}, {112,78,257}, {113,79,257}, {105,86,258}, {106,85,258}, {107,84,258}, {107,86,258}, {108,83,258}, {108,85,258}, {109,82,258}, {110,81,258}, {111,80,258}, {111,82,258}, {112,81,258}, {113,80,258}, {106,80,259}, {107,81,259}, {108,82,259}, {109,83,259}, {110,84,259}, {111,85,259}, {112,86,259}, {105,80,260}, {106,81,260}, {107,80,260}, {107,82,260}, {108,81,260}, {109,84,260}, {110,83,260}, {110,85,260}, {111,84,260}, {111,86,260}, {112,85,260}, {113,86,260}, {114,72,261}, {115,71,261}, {116,70,261}, {116,72,261}, {117,69,261}, {117,71,261}, {118,68,261}, {119,67,261}, {120,66,261}, {120,68,261}, {121,67,261}, {122,66,261}, {115,66,262}, {116,67,262}, {117,68,262}, {118,69,262}, {119,70,262}, {120,71,262}, {121,72,262}, {114,66,263}, {115,67,263}, {116,66,263}, {116,68,263}, {117,67,263}, {118,70,263}, {119,69,263}, {119,71,263}, {120,70,263}, {120,72,263}, {121,71,263}, {122,72,263}, {114,79,264}, {115,78,264}, {116,77,264}, {116,79,264}, {117,76,264}, {117,78,264}, {118,75,264}, {119,74,264}, {120,73,264}, {120,75,264}, {121,74,264}, {122,73,264}, {115,73,265}, {116,74,265}, {117,75,265}, {118,76,265}, {119,77,265}, {120,78,265}, {121,79,265}, {114,73,266}, {115,74,266}, {116,73,266}, {116,75,266}, {117,74,266}, {118,77,266}, {119,76,266}, {119,78,266}, {120,77,266}, {120,79,266}, {121,78,266}, {122,79,266}, {114,86,267}, {115,85,267}, {116,84,267}, {116,86,267}, {117,83,267}, {117,85,267}, {118,82,267}, {119,81,267}, {120,80,267}, {120,82,267}, {121,81,267}, {122,80,267}, {115,80,268}, {116,81,268}, {117,82,268}, {118,83,268}, {119,84,268}, {120,85,268}, {121,86,268}, {114,80,269}, {115,81,269}, {116,80,269}, {116,82,269}, {117,81,269}, {118,84,269}, {119,83,269}, {119,85,269}, {120,84,269}, {120,86,269}, {121,85,269}, {122,86,269}, {73,21,270}, {74,20,270}, {75,19,270}, {75,21,270}, {76,18,270}, {77,17,270}, {78,18,270}, {79,17,270}, {74,17,271}, {75,18,271}, {76,19,271}, {77,20,271}, {78,21,271}, {73,17,272}, {74,18,272}, {75,17,272}, {76,20,272}, {77,19,272}, {77,21,272}, {78,20,272}, {79,21,272}, {73,31,273}, {74,30,273}, {75,29,273}, {75,31,273}, {76,28,273}, {77,27,273}, {78,28,273}, {79,27,273}, {74,27,274}, {75,28,274}, {76,29,274}, {77,30,274}, {78,31,274}, {73,27,275}, {74,28,275}, {75,27,275}, {76,30,275}, {77,29,275}, {77,31,275}, {78,30,275}, {79,31,275}, {73,36,276}, {74,35,276}, {75,34,276}, {75,36,276}, {76,33,276}, {77,32,276}, {78,33,276}, {79,32,276}, {74,32,277}, {75,33,277}, {76,34,277}, {77,35,277}, {78,36,277}, {73,32,278}, {74,33,278}, {75,32,278}, {76,35,278}, {77,34,278}, {77,36,278}, {78,35,278}, {79,36,278}, {73,41,279}, {74,40,279}, {75,39,279}, {75,41,279}, {76,38,279}, {77,37,279}, {78,38,279}, {79,37,279}, {74,37,280}, {75,38,280}, {76,39,280}, {77,40,280}, {78,41,280}, {73,37,281}, {74,38,281}, {75,37,281}, {76,40,281}, {77,39,281}, {77,41,281}, {78,40,281}, {79,41,281}, {73,46,282}, {74,45,282}, {75,44,282}, {75,46,282}, {76,43,282}, {77,42,282}, {78,43,282}, {79,42,282}, {74,42,283}, {75,43,283}, {76,44,283}, {77,45,283}, {78,46,283}, {73,42,284}, {74,43,284}, {75,42,284}, {76,45,284}, {77,44,284}, {77,46,284}, {78,45,284}, {79,46,284}, {73,51,285}, {74,50,285}, {75,49,285}, {75,51,285}, {76,48,285}, {77,47,285}, {78,48,285}, {79,47,285}, {74,47,286}, {75,48,286}, {76,49,286}, {77,50,286}, {78,51,286}, {73,47,287}, {74,48,287}, {75,47,287}, {76,50,287}, {77,49,287}, {77,51,287}, {78,50,287}, {79,51,287}, {42,7,288}, {43,6,288}, {44,5,288}, {46,5,288}, {43,5,289}, {44,6,289}, {45,7,289}, {42,5,290}, {44,7,290}, {45,6,290}, {46,7,290}, {42,10,291}, {43,9,291}, {44,8,291}, {46,8,291}, {43,8,292}, {44,9,292}, {45,10,292}, {42,8,293}, {44,10,293}, {45,9,293}, {46,10,293}, {42,13,294}, {43,12,294}, {44,11,294}, {46,11,294}, {43,11,295}, {44,12,295}, {45,13,295}, {42,11,296}, {44,13,296}, {45,12,296}, {46,13,296}, {42,16,297}, {43,15,297}, {44,14,297}, {46,14,297}, {43,14,298}, {44,15,298}, {45,16,298}, {42,14,299}, {44,16,299}, {45,15,299}, {46,16,299}, {123,58,300}, {124,57,300}, {125,56,300}, {125,58,300}, {126,55,300}, {126,57,300}, {127,54,300}, {128,53,300}, {129,52,300}, {129,54,300}, {130,53,300}, {131,52,300}, {124,52,301}, {125,53,301}, {126,54,301}, {127,55,301}, {128,56,301}, {129,57,301}, {130,58,301}, {123,52,302}, {124,53,302}, {125,52,302}, {125,54,302}, {126,53,302}, {127,56,302}, {128,55,302}, {128,57,302}, {129,56,302}, {129,58,302}, {130,57,302}, {131,58,302}, {123,65,303}, {124,64,303}, {125,63,303}, {125,65,303}, {126,62,303}, {126,64,303}, {127,61,303}, {128,60,303}, {129,59,303}, {129,61,303}, {130,60,303}, {131,59,303}, {124,59,304}, {125,60,304}, {126,61,304}, {127,62,304}, {128,63,304}, {129,64,304}, {130,65,304}, {123,59,305}, {124,60,305}, {125,59,305}, {125,61,305}, {126,60,305}, {127,63,305}, {128,62,305}, {128,64,305}, {129,63,305}, {129,65,305}, {130,64,305}, {131,65,305}, {123,72,306}, {124,71,306}, {125,70,306}, {125,72,306}, {126,69,306}, {126,71,306}, {127,68,306}, {128,67,306}, {129,66,306}, {129,68,306}, {130,67,306}, {131,66,306}, {124,66,307}, {125,67,307}, {126,68,307}, {127,69,307}, {128,70,307}, {129,71,307}, {130,72,307}, {123,66,308}, {124,67,308}, {125,66,308}, {125,68,308}, {126,67,308}, {127,70,308}, {128,69,308}, {128,71,308}, {129,70,308}, {129,72,308}, {130,71,308}, {131,72,308}, {123,79,309}, {124,78,309}, {125,77,309}, {125,79,309}, {126,76,309}, {126,78,309}, {127,75,309}, {128,74,309}, {129,73,309}, {129,75,309}, {130,74,309}, {131,73,309}, {124,73,310}, {125,74,310}, {126,75,310}, {127,76,310}, {128,77,310}, {129,78,310}, {130,79,310}, {123,73,311}, {124,74,311}, {125,73,311}, {125,75,311}, {126,74,311}, {127,77,311}, {128,76,311}, {128,78,311}, {129,77,311}, {129,79,311}, {130,78,311}, {131,79,311}, {123,86,312}, {124,85,312}, {125,84,312}, {125,86,312}, {126,83,312}, {126,85,312}, {127,82,312}, {128,81,312}, {129,80,312}, {129,82,312}, {130,81,312}, {131,80,312}, {124,80,313}, {125,81,313}, {126,82,313}, {127,83,313}, {128,84,313}, {129,85,313}, {130,86,313}, {123,80,314}, {124,81,314}, {125,80,314}, {125,82,314}, {126,81,314}, {127,84,314}, {128,83,314}, {128,85,314}, {129,84,314}, {129,86,314}, {130,85,314}, {131,86,314}, {14,0,315}, {15,0,316}, {16,0,317}, {14,1,318}, {15,1,319}, {16,1,320}, {14,2,321}, {15,2,322}, {16,2,323}, {14,3,324}, {15,3,325}, {16,3,326}, {14,4,327}, {15,4,328}, {16,4,329}, {80,21,330}, {81,20,330}, {82,19,330}, {82,21,330}, {83,18,330}, {84,17,330}, {85,18,330}, {86,17,330}, {81,17,331}, {82,18,331}, {83,19,331}, {84,20,331}, {85,21,331}, {80,17,332}, {81,18,332}, {82,17,332}, {83,20,332}, {84,19,332}, {84,21,332}, {85,20,332}, {86,21,332}, {80,26,333}, {81,25,333}, {82,24,333}, {82,26,333}, {83,23,333}, {84,22,333}, {85,23,333}, {86,22,333}, {81,22,334}, {82,23,334}, {83,24,334}, {84,25,334}, {85,26,334}, {80,22,335}, {81,23,335}, {82,22,335}, {83,25,335}, {84,24,335}, {84,26,335}, {85,25,335}, {86,26,335}, {80,31,336}, {81,30,336}, {82,29,336}, {82,31,336}, {83,28,336}, {84,27,336}, {85,28,336}, {86,27,336}, {81,27,337}, {82,28,337}, {83,29,337}, {84,30,337}, {85,31,337}, {80,27,338}, {81,28,338}, {82,27,338}, {83,30,338}, {84,29,338}, {84,31,338}, {85,30,338}, {86,31,338}, {80,36,339}, {81,35,339}, {82,34,339}, {82,36,339}, {83,33,339}, {84,32,339}, {85,33,339}, {86,32,339}, {81,32,340}, {82,33,340}, {83,34,340}, {84,35,340}, {85,36,340}, {80,32,341}, {81,33,341}, {82,32,341}, {83,35,341}, {84,34,341}, {84,36,341}, {85,35,341}, {86,36,341}, {80,41,342}, {81,40,342}, {82,39,342}, {82,41,342}, {83,38,342}, {84,37,342}, {85,38,342}, {86,37,342}, {81,37,343}, {82,38,343}, {83,39,343}, {84,40,343}, {85,41,343}, {80,37,344}, {81,38,344}, {82,37,344}, {83,40,344}, {84,39,344}, {84,41,344}, {85,40,344}, {86,41,344}, {80,46,345}, {81,45,345}, {82,44,345}, {82,46,345}, {83,43,345}, {84,42,345}, {85,43,345}, {86,42,345}, {81,42,346}, {82,43,346}, {83,44,346}, {84,45,346}, {85,46,346}, {80,42,347}, {81,43,347}, {82,42,347}, {83,45,347}, {84,44,347}, {84,46,347}, {85,45,347}, {86,46,347}, {80,51,348}, {81,50,348}, {82,49,348}, {82,51,348}, {83,48,348}, {84,47,348}, {85,48,348}, {86,47,348}, {81,47,349}, {82,48,349}, {83,49,349}, {84,50,349}, {85,51,349}, {80,47,350}, {81,48,350}, {82,47,350}, {83,50,350}, {84,49,350}, {84,51,350}, {85,50,350}, {86,51,350}, {47,7,351}, {48,6,351}, {49,5,351}, {51,5,351}, {48,5,352}, {49,6,352}, {50,7,352}, {47,5,353}, {49,7,353}, {50,6,353}, {51,7,353}, {47,10,354}, {48,9,354}, {49,8,354}, {51,8,354}, {48,8,355}, {49,9,355}, {50,10,355}, {47,8,356}, {49,10,356}, {50,9,356}, {51,10,356}, {47,13,357}, {48,12,357}, {49,11,357}, {51,11,357}, {48,11,358}, {49,12,358}, {50,13,358}, {47,11,359}, {49,13,359}, {50,12,359}, {51,13,359}, {47,16,360}, {48,15,360}, {49,14,360}, {51,14,360}, {48,14,361}, {49,15,361}, {50,16,361}, {47,14,362}, {49,16,362}, {50,15,362}, {51,16,362}, {132,58,363}, {133,57,363}, {134,56,363}, {134,58,363}, {135,55,363}, {135,57,363}, {136,54,363}, {137,53,363}, {138,52,363}, {138,54,363}, {139,53,363}, {140,52,363}, {133,52,364}, {134,53,364}, {135,54,364}, {136,55,364}, {137,56,364}, {138,57,364}, {139,58,364}, {132,52,365}, {133,53,365}, {134,52,365}, {134,54,365}, {135,53,365}, {136,56,365}, {137,55,365}, {137,57,365}, {138,56,365}, {138,58,365}, {139,57,365}, {140,58,365}, {132,65,366}, {133,64,366}, {134,63,366}, {134,65,366}, {135,62,366}, {135,64,366}, {136,61,366}, {137,60,366}, {138,59,366}, {138,61,366}, {139,60,366}, {140,59,366}, {133,59,367}, {134,60,367}, {135,61,367}, {136,62,367}, {137,63,367}, {138,64,367}, {139,65,367}, {132,59,368}, {133,60,368}, {134,59,368}, {134,61,368}, {135,60,368}, {136,63,368}, {137,62,368}, {137,64,368}, {138,63,368}, {138,65,368}, {139,64,368}, {140,65,368}, {132,72,369}, {133,71,369}, {134,70,369}, {134,72,369}, {135,69,369}, {135,71,369}, {136,68,369}, {137,67,369}, {138,66,369}, {138,68,369}, {139,67,369}, {140,66,369}, {133,66,370}, {134,67,370}, {135,68,370}, {136,69,370}, {137,70,370}, {138,71,370}, {139,72,370}, {132,66,371}, {133,67,371}, {134,66,371}, {134,68,371}, {135,67,371}, {136,70,371}, {137,69,371}, {137,71,371}, {138,70,371}, {138,72,371}, {139,71,371}, {140,72,371}, {132,79,372}, {133,78,372}, {134,77,372}, {134,79,372}, {135,76,372}, {135,78,372}, {136,75,372}, {137,74,372}, {138,73,372}, {138,75,372}, {139,74,372}, {140,73,372}, {133,73,373}, {134,74,373}, {135,75,373}, {136,76,373}, {137,77,373}, {138,78,373}, {139,79,373}, {132,73,374}, {133,74,374}, {134,73,374}, {134,75,374}, {135,74,374}, {136,77,374}, {137,76,374}, {137,78,374}, {138,77,374}, {138,79,374}, {139,78,374}, {140,79,374}, {132,86,375}, {133,85,375}, {134,84,375}, {134,86,375}, {135,83,375}, {135,85,375}, {136,82,375}, {137,81,375}, {138,80,375}, {138,82,375}, {139,81,375}, {140,80,375}, {133,80,376}, {134,81,376}, {135,82,376}, {136,83,376}, {137,84,376}, {138,85,376}, {139,86,376}, {132,80,377}, {133,81,377}, {134,80,377}, {134,82,377}, {135,81,377}, {136,84,377}, {137,83,377}, {137,85,377}, {138,84,377}, {138,86,377}, {139,85,377}, {140,86,377}}; -constexpr double cg_AAAA[2138] = {1.0, 1.0, 1.0, 1.0, 1.0, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 1.0, 1.0, 1.0, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 1.0, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987}; +// self product, 2138 terms: GRACE-2L-OMAT-large-base AAAA, GRACE-2L-OMAT-large-ft-AM AAAA, GRACE-2L-OMAT-large-ft-E +// AAAA, GRACE-2L-OMAT-medium-base AAAA, GRACE-2L-OMAT-medium-ft-AM AAAA, GRACE-2L-OMAT-medium-ft-E AAAA, +// GRACE-2L-SMAX-OMAT-large AAAA, GRACE-2L-SMAX-OMAT-medium AAAA, GRACE-2L-SMAX-large AAAA, GRACE-2L-SMAX-medium AAAA +struct T2138_4190cb21 { + static constexpr int nt = 2138, nl = 141; + static constexpr int tab[2138][3] = {{0,0,0}, {1,0,1}, {2,0,2}, {3,0,3}, {4,0,4}, {8,5,5}, {9,6,5}, {10,7,5}, {11,5,6}, {12,6,6}, {13,7,6}, {14,5,7}, {15,6,7}, {16,7,7}, {1,1,8}, {2,1,9}, {3,1,10}, {4,1,11}, {27,17,12}, {28,18,12}, {29,19,12}, {30,20,12}, {31,21,12}, {32,17,13}, {33,18,13}, {34,19,13}, {35,20,13}, {36,21,13}, {37,17,14}, {38,18,14}, {39,19,14}, {40,20,14}, {41,21,14}, {42,17,15}, {43,18,15}, {44,19,15}, {45,20,15}, {46,21,15}, {47,17,16}, {48,18,16}, {49,19,16}, {50,20,16}, {51,21,16}, {27,22,17}, {28,23,17}, {29,24,17}, {30,25,17}, {31,26,17}, {37,22,18}, {38,23,18}, {39,24,18}, {40,25,18}, {41,26,18}, {42,22,19}, {43,23,19}, {44,24,19}, {45,25,19}, {46,26,19}, {47,22,20}, {48,23,20}, {49,24,20}, {50,25,20}, {51,26,20}, {8,8,21}, {9,9,21}, {10,10,21}, {11,8,22}, {12,9,22}, {13,10,22}, {14,8,23}, {15,9,23}, {16,10,23}, {52,52,24}, {53,53,24}, {54,54,24}, {55,55,24}, {56,56,24}, {57,57,24}, {58,58,24}, {66,52,25}, {67,53,25}, {68,54,25}, {69,55,25}, {70,56,25}, {71,57,25}, {72,58,25}, {80,52,26}, {81,53,26}, {82,54,26}, {83,55,26}, {84,56,26}, {85,57,26}, {86,58,26}, {2,2,27}, {3,2,28}, {4,2,29}, {32,27,30}, {33,28,30}, {34,29,30}, {35,30,30}, {36,31,30}, {37,27,31}, {38,28,31}, {39,29,31}, {40,30,31}, {41,31,31}, {42,27,32}, {43,28,32}, {44,29,32}, {45,30,32}, {46,31,32}, {47,27,33}, {48,28,33}, {49,29,33}, {50,30,33}, {51,31,33}, {96,87,34}, {97,88,34}, {98,89,34}, {99,90,34}, {100,91,34}, {101,92,34}, {102,93,34}, {103,94,34}, {104,95,34}, {105,87,35}, {106,88,35}, {107,89,35}, {108,90,35}, {109,91,35}, {110,92,35}, {111,93,35}, {112,94,35}, {113,95,35}, {132,87,36}, {133,88,36}, {134,89,36}, {135,90,36}, {136,91,36}, {137,92,36}, {138,93,36}, {139,94,36}, {140,95,36}, {80,59,37}, {81,60,37}, {82,61,37}, {83,62,37}, {84,63,37}, {85,64,37}, {86,65,37}, {32,32,38}, {33,33,38}, {34,34,38}, {35,35,38}, {36,36,38}, {37,32,39}, {38,33,39}, {39,34,39}, {40,35,39}, {41,36,39}, {42,32,40}, {43,33,40}, {44,34,40}, {45,35,40}, {46,36,40}, {47,32,41}, {48,33,41}, {49,34,41}, {50,35,41}, {51,36,41}, {96,96,42}, {97,97,42}, {98,98,42}, {99,99,42}, {100,100,42}, {101,101,42}, {102,102,42}, {103,103,42}, {104,104,42}, {123,96,43}, {124,97,43}, {125,98,43}, {126,99,43}, {127,100,43}, {128,101,43}, {129,102,43}, {130,103,43}, {131,104,43}, {132,96,44}, {133,97,44}, {134,98,44}, {135,99,44}, {136,100,44}, {137,101,44}, {138,102,44}, {139,103,44}, {140,104,44}, {11,11,45}, {12,12,45}, {13,13,45}, {14,11,46}, {15,12,46}, {16,13,46}, {66,66,47}, {67,67,47}, {68,68,47}, {69,69,47}, {70,70,47}, {71,71,47}, {72,72,47}, {73,66,48}, {74,67,48}, {75,68,48}, {76,69,48}, {77,70,48}, {78,71,48}, {79,72,48}, {80,66,49}, {81,67,49}, {82,68,49}, {83,69,49}, {84,70,49}, {85,71,49}, {86,72,49}, {3,3,50}, {4,3,51}, {37,37,52}, {38,38,52}, {39,39,52}, {40,40,52}, {41,41,52}, {42,37,53}, {43,38,53}, {44,39,53}, {45,40,53}, {46,41,53}, {47,37,54}, {48,38,54}, {49,39,54}, {50,40,54}, {51,41,54}, {105,105,55}, {106,106,55}, {107,107,55}, {108,108,55}, {109,109,55}, {110,110,55}, {111,111,55}, {112,112,55}, {113,113,55}, {123,105,56}, {124,106,56}, {125,107,56}, {126,108,56}, {127,109,56}, {128,110,56}, {129,111,56}, {130,112,56}, {131,113,56}, {132,105,57}, {133,106,57}, {134,107,57}, {135,108,57}, {136,109,57}, {137,110,57}, {138,111,57}, {139,112,57}, {140,113,57}, {132,114,58}, {133,115,58}, {134,116,58}, {135,117,58}, {136,118,58}, {137,119,58}, {138,120,58}, {139,121,58}, {140,122,58}, {73,73,59}, {74,74,59}, {75,75,59}, {76,76,59}, {77,77,59}, {78,78,59}, {79,79,59}, {80,73,60}, {81,74,60}, {82,75,60}, {83,76,60}, {84,77,60}, {85,78,60}, {86,79,60}, {42,42,61}, {43,43,61}, {44,44,61}, {45,45,61}, {46,46,61}, {47,42,62}, {48,43,62}, {49,44,62}, {50,45,62}, {51,46,62}, {123,123,63}, {124,124,63}, {125,125,63}, {126,126,63}, {127,127,63}, {128,128,63}, {129,129,63}, {130,130,63}, {131,131,63}, {14,14,64}, {15,15,64}, {16,16,64}, {80,80,65}, {81,81,65}, {82,82,65}, {83,83,65}, {84,84,65}, {85,85,65}, {86,86,65}, {4,4,66}, {47,47,67}, {48,48,67}, {49,49,67}, {50,50,67}, {51,51,67}, {132,132,68}, {133,133,68}, {134,134,68}, {135,135,68}, {136,136,68}, {137,137,68}, {138,138,68}, {139,139,68}, {140,140,68}, {5,0,69}, {6,0,70}, {7,0,71}, {5,1,72}, {6,1,73}, {7,1,74}, {5,2,75}, {6,2,76}, {7,2,77}, {5,3,78}, {6,3,79}, {7,3,80}, {5,4,81}, {6,4,82}, {7,4,83}, {17,10,84}, {18,9,84}, {19,8,84}, {21,8,84}, {18,8,85}, {19,9,85}, {20,10,85}, {17,8,86}, {19,10,86}, {20,9,86}, {21,10,86}, {17,13,87}, {18,12,87}, {19,11,87}, {21,11,87}, {18,11,88}, {19,12,88}, {20,13,88}, {17,11,89}, {19,13,89}, {20,12,89}, {21,13,89}, {17,16,90}, {18,15,90}, {19,14,90}, {21,14,90}, {18,14,91}, {19,15,91}, {20,16,91}, {17,14,92}, {19,16,92}, {20,15,92}, {21,16,92}, {22,10,93}, {23,9,93}, {24,8,93}, {26,8,93}, {23,8,94}, {24,9,94}, {25,10,94}, {22,8,95}, {24,10,95}, {25,9,95}, {26,10,95}, {22,13,96}, {23,12,96}, {24,11,96}, {26,11,96}, {23,11,97}, {24,12,97}, {25,13,97}, {22,11,98}, {24,13,98}, {25,12,98}, {26,13,98}, {22,16,99}, {23,15,99}, {24,14,99}, {26,14,99}, {23,14,100}, {24,15,100}, {25,16,100}, {22,14,101}, {24,16,101}, {25,15,101}, {26,16,101}, {8,0,102}, {9,0,103}, {10,0,104}, {8,1,105}, {9,1,106}, {10,1,107}, {8,2,108}, {9,2,109}, {10,2,110}, {8,3,111}, {9,3,112}, {10,3,113}, {8,4,114}, {9,4,115}, {10,4,116}, {52,21,117}, {53,20,117}, {54,19,117}, {54,21,117}, {55,18,117}, {56,17,117}, {57,18,117}, {58,17,117}, {53,17,118}, {54,18,118}, {55,19,118}, {56,20,118}, {57,21,118}, {52,17,119}, {53,18,119}, {54,17,119}, {55,20,119}, {56,19,119}, {56,21,119}, {57,20,119}, {58,21,119}, {52,26,120}, {53,25,120}, {54,24,120}, {54,26,120}, {55,23,120}, {56,22,120}, {57,23,120}, {58,22,120}, {53,22,121}, {54,23,121}, {55,24,121}, {56,25,121}, {57,26,121}, {52,22,122}, {53,23,122}, {54,22,122}, {55,25,122}, {56,24,122}, {56,26,122}, {57,25,122}, {58,26,122}, {52,31,123}, {53,30,123}, {54,29,123}, {54,31,123}, {55,28,123}, {56,27,123}, {57,28,123}, {58,27,123}, {53,27,124}, {54,28,124}, {55,29,124}, {56,30,124}, {57,31,124}, {52,27,125}, {53,28,125}, {54,27,125}, {55,30,125}, {56,29,125}, {56,31,125}, {57,30,125}, {58,31,125}, {52,36,126}, {53,35,126}, {54,34,126}, {54,36,126}, {55,33,126}, {56,32,126}, {57,33,126}, {58,32,126}, {53,32,127}, {54,33,127}, {55,34,127}, {56,35,127}, {57,36,127}, {52,32,128}, {53,33,128}, {54,32,128}, {55,35,128}, {56,34,128}, {56,36,128}, {57,35,128}, {58,36,128}, {52,41,129}, {53,40,129}, {54,39,129}, {54,41,129}, {55,38,129}, {56,37,129}, {57,38,129}, {58,37,129}, {53,37,130}, {54,38,130}, {55,39,130}, {56,40,130}, {57,41,130}, {52,37,131}, {53,38,131}, {54,37,131}, {55,40,131}, {56,39,131}, {56,41,131}, {57,40,131}, {58,41,131}, {52,46,132}, {53,45,132}, {54,44,132}, {54,46,132}, {55,43,132}, {56,42,132}, {57,43,132}, {58,42,132}, {53,42,133}, {54,43,133}, {55,44,133}, {56,45,133}, {57,46,133}, {52,42,134}, {53,43,134}, {54,42,134}, {55,45,134}, {56,44,134}, {56,46,134}, {57,45,134}, {58,46,134}, {52,51,135}, {53,50,135}, {54,49,135}, {54,51,135}, {55,48,135}, {56,47,135}, {57,48,135}, {58,47,135}, {53,47,136}, {54,48,136}, {55,49,136}, {56,50,136}, {57,51,136}, {52,47,137}, {53,48,137}, {54,47,137}, {55,50,137}, {56,49,137}, {56,51,137}, {57,50,137}, {58,51,137}, {27,7,138}, {28,6,138}, {29,5,138}, {31,5,138}, {28,5,139}, {29,6,139}, {30,7,139}, {27,5,140}, {29,7,140}, {30,6,140}, {31,7,140}, {27,10,141}, {28,9,141}, {29,8,141}, {31,8,141}, {28,8,142}, {29,9,142}, {30,10,142}, {27,8,143}, {29,10,143}, {30,9,143}, {31,10,143}, {27,13,144}, {28,12,144}, {29,11,144}, {31,11,144}, {28,11,145}, {29,12,145}, {30,13,145}, {27,11,146}, {29,13,146}, {30,12,146}, {31,13,146}, {27,16,147}, {28,15,147}, {29,14,147}, {31,14,147}, {28,14,148}, {29,15,148}, {30,16,148}, {27,14,149}, {29,16,149}, {30,15,149}, {31,16,149}, {87,65,150}, {88,64,150}, {89,63,150}, {89,65,150}, {90,62,150}, {90,64,150}, {91,61,150}, {92,60,150}, {93,59,150}, {93,61,150}, {94,60,150}, {95,59,150}, {88,59,151}, {89,60,151}, {90,61,151}, {91,62,151}, {92,63,151}, {93,64,151}, {94,65,151}, {87,59,152}, {88,60,152}, {89,59,152}, {89,61,152}, {90,60,152}, {91,63,152}, {92,62,152}, {92,64,152}, {93,63,152}, {93,65,152}, {94,64,152}, {95,65,152}, {87,72,153}, {88,71,153}, {89,70,153}, {89,72,153}, {90,69,153}, {90,71,153}, {91,68,153}, {92,67,153}, {93,66,153}, {93,68,153}, {94,67,153}, {95,66,153}, {88,66,154}, {89,67,154}, {90,68,154}, {91,69,154}, {92,70,154}, {93,71,154}, {94,72,154}, {87,66,155}, {88,67,155}, {89,66,155}, {89,68,155}, {90,67,155}, {91,70,155}, {92,69,155}, {92,71,155}, {93,70,155}, {93,72,155}, {94,71,155}, {95,72,155}, {87,79,156}, {88,78,156}, {89,77,156}, {89,79,156}, {90,76,156}, {90,78,156}, {91,75,156}, {92,74,156}, {93,73,156}, {93,75,156}, {94,74,156}, {95,73,156}, {88,73,157}, {89,74,157}, {90,75,157}, {91,76,157}, {92,77,157}, {93,78,157}, {94,79,157}, {87,73,158}, {88,74,158}, {89,73,158}, {89,75,158}, {90,74,158}, {91,77,158}, {92,76,158}, {92,78,158}, {93,77,158}, {93,79,158}, {94,78,158}, {95,79,158}, {87,86,159}, {88,85,159}, {89,84,159}, {89,86,159}, {90,83,159}, {90,85,159}, {91,82,159}, {92,81,159}, {93,80,159}, {93,82,159}, {94,81,159}, {95,80,159}, {88,80,160}, {89,81,160}, {90,82,160}, {91,83,160}, {92,84,160}, {93,85,160}, {94,86,160}, {87,80,161}, {88,81,161}, {89,80,161}, {89,82,161}, {90,81,161}, {91,84,161}, {92,83,161}, {92,85,161}, {93,84,161}, {93,86,161}, {94,85,161}, {95,86,161}, {59,31,162}, {60,30,162}, {61,29,162}, {61,31,162}, {62,28,162}, {63,27,162}, {64,28,162}, {65,27,162}, {60,27,163}, {61,28,163}, {62,29,163}, {63,30,163}, {64,31,163}, {59,27,164}, {60,28,164}, {61,27,164}, {62,30,164}, {63,29,164}, {63,31,164}, {64,30,164}, {65,31,164}, {59,36,165}, {60,35,165}, {61,34,165}, {61,36,165}, {62,33,165}, {63,32,165}, {64,33,165}, {65,32,165}, {60,32,166}, {61,33,166}, {62,34,166}, {63,35,166}, {64,36,166}, {59,32,167}, {60,33,167}, {61,32,167}, {62,35,167}, {63,34,167}, {63,36,167}, {64,35,167}, {65,36,167}, {59,41,168}, {60,40,168}, {61,39,168}, {61,41,168}, {62,38,168}, {63,37,168}, {64,38,168}, {65,37,168}, {60,37,169}, {61,38,169}, {62,39,169}, {63,40,169}, {64,41,169}, {59,37,170}, {60,38,170}, {61,37,170}, {62,40,170}, {63,39,170}, {63,41,170}, {64,40,170}, {65,41,170}, {59,46,171}, {60,45,171}, {61,44,171}, {61,46,171}, {62,43,171}, {63,42,171}, {64,43,171}, {65,42,171}, {60,42,172}, {61,43,172}, {62,44,172}, {63,45,172}, {64,46,172}, {59,42,173}, {60,43,173}, {61,42,173}, {62,45,173}, {63,44,173}, {63,46,173}, {64,45,173}, {65,46,173}, {59,51,174}, {60,50,174}, {61,49,174}, {61,51,174}, {62,48,174}, {63,47,174}, {64,48,174}, {65,47,174}, {60,47,175}, {61,48,175}, {62,49,175}, {63,50,175}, {64,51,175}, {59,47,176}, {60,48,176}, {61,47,176}, {62,50,176}, {63,49,176}, {63,51,176}, {64,50,176}, {65,51,176}, {32,7,177}, {33,6,177}, {34,5,177}, {36,5,177}, {33,5,178}, {34,6,178}, {35,7,178}, {32,5,179}, {34,7,179}, {35,6,179}, {36,7,179}, {32,10,180}, {33,9,180}, {34,8,180}, {36,8,180}, {33,8,181}, {34,9,181}, {35,10,181}, {32,8,182}, {34,10,182}, {35,9,182}, {36,10,182}, {32,13,183}, {33,12,183}, {34,11,183}, {36,11,183}, {33,11,184}, {34,12,184}, {35,13,184}, {32,11,185}, {34,13,185}, {35,12,185}, {36,13,185}, {32,16,186}, {33,15,186}, {34,14,186}, {36,14,186}, {33,14,187}, {34,15,187}, {35,16,187}, {32,14,188}, {34,16,188}, {35,15,188}, {36,16,188}, {96,58,189}, {97,57,189}, {98,56,189}, {98,58,189}, {99,55,189}, {99,57,189}, {100,54,189}, {101,53,189}, {102,52,189}, {102,54,189}, {103,53,189}, {104,52,189}, {97,52,190}, {98,53,190}, {99,54,190}, {100,55,190}, {101,56,190}, {102,57,190}, {103,58,190}, {96,52,191}, {97,53,191}, {98,52,191}, {98,54,191}, {99,53,191}, {100,56,191}, {101,55,191}, {101,57,191}, {102,56,191}, {102,58,191}, {103,57,191}, {104,58,191}, {96,65,192}, {97,64,192}, {98,63,192}, {98,65,192}, {99,62,192}, {99,64,192}, {100,61,192}, {101,60,192}, {102,59,192}, {102,61,192}, {103,60,192}, {104,59,192}, {97,59,193}, {98,60,193}, {99,61,193}, {100,62,193}, {101,63,193}, {102,64,193}, {103,65,193}, {96,59,194}, {97,60,194}, {98,59,194}, {98,61,194}, {99,60,194}, {100,63,194}, {101,62,194}, {101,64,194}, {102,63,194}, {102,65,194}, {103,64,194}, {104,65,194}, {96,72,195}, {97,71,195}, {98,70,195}, {98,72,195}, {99,69,195}, {99,71,195}, {100,68,195}, {101,67,195}, {102,66,195}, {102,68,195}, {103,67,195}, {104,66,195}, {97,66,196}, {98,67,196}, {99,68,196}, {100,69,196}, {101,70,196}, {102,71,196}, {103,72,196}, {96,66,197}, {97,67,197}, {98,66,197}, {98,68,197}, {99,67,197}, {100,70,197}, {101,69,197}, {101,71,197}, {102,70,197}, {102,72,197}, {103,71,197}, {104,72,197}, {96,79,198}, {97,78,198}, {98,77,198}, {98,79,198}, {99,76,198}, {99,78,198}, {100,75,198}, {101,74,198}, {102,73,198}, {102,75,198}, {103,74,198}, {104,73,198}, {97,73,199}, {98,74,199}, {99,75,199}, {100,76,199}, {101,77,199}, {102,78,199}, {103,79,199}, {96,73,200}, {97,74,200}, {98,73,200}, {98,75,200}, {99,74,200}, {100,77,200}, {101,76,200}, {101,78,200}, {102,77,200}, {102,79,200}, {103,78,200}, {104,79,200}, {96,86,201}, {97,85,201}, {98,84,201}, {98,86,201}, {99,83,201}, {99,85,201}, {100,82,201}, {101,81,201}, {102,80,201}, {102,82,201}, {103,81,201}, {104,80,201}, {97,80,202}, {98,81,202}, {99,82,202}, {100,83,202}, {101,84,202}, {102,85,202}, {103,86,202}, {96,80,203}, {97,81,203}, {98,80,203}, {98,82,203}, {99,81,203}, {100,84,203}, {101,83,203}, {101,85,203}, {102,84,203}, {102,86,203}, {103,85,203}, {104,86,203}, {11,0,204}, {12,0,205}, {13,0,206}, {11,1,207}, {12,1,208}, {13,1,209}, {11,2,210}, {12,2,211}, {13,2,212}, {11,3,213}, {12,3,214}, {13,3,215}, {11,4,216}, {12,4,217}, {13,4,218}, {66,21,219}, {67,20,219}, {68,19,219}, {68,21,219}, {69,18,219}, {70,17,219}, {71,18,219}, {72,17,219}, {67,17,220}, {68,18,220}, {69,19,220}, {70,20,220}, {71,21,220}, {66,17,221}, {67,18,221}, {68,17,221}, {69,20,221}, {70,19,221}, {70,21,221}, {71,20,221}, {72,21,221}, {66,26,222}, {67,25,222}, {68,24,222}, {68,26,222}, {69,23,222}, {70,22,222}, {71,23,222}, {72,22,222}, {67,22,223}, {68,23,223}, {69,24,223}, {70,25,223}, {71,26,223}, {66,22,224}, {67,23,224}, {68,22,224}, {69,25,224}, {70,24,224}, {70,26,224}, {71,25,224}, {72,26,224}, {66,31,225}, {67,30,225}, {68,29,225}, {68,31,225}, {69,28,225}, {70,27,225}, {71,28,225}, {72,27,225}, {67,27,226}, {68,28,226}, {69,29,226}, {70,30,226}, {71,31,226}, {66,27,227}, {67,28,227}, {68,27,227}, {69,30,227}, {70,29,227}, {70,31,227}, {71,30,227}, {72,31,227}, {66,36,228}, {67,35,228}, {68,34,228}, {68,36,228}, {69,33,228}, {70,32,228}, {71,33,228}, {72,32,228}, {67,32,229}, {68,33,229}, {69,34,229}, {70,35,229}, {71,36,229}, {66,32,230}, {67,33,230}, {68,32,230}, {69,35,230}, {70,34,230}, {70,36,230}, {71,35,230}, {72,36,230}, {66,46,231}, {67,45,231}, {68,44,231}, {68,46,231}, {69,43,231}, {70,42,231}, {71,43,231}, {72,42,231}, {67,42,232}, {68,43,232}, {69,44,232}, {70,45,232}, {71,46,232}, {66,42,233}, {67,43,233}, {68,42,233}, {69,45,233}, {70,44,233}, {70,46,233}, {71,45,233}, {72,46,233}, {66,51,234}, {67,50,234}, {68,49,234}, {68,51,234}, {69,48,234}, {70,47,234}, {71,48,234}, {72,47,234}, {67,47,235}, {68,48,235}, {69,49,235}, {70,50,235}, {71,51,235}, {66,47,236}, {67,48,236}, {68,47,236}, {69,50,236}, {70,49,236}, {70,51,236}, {71,50,236}, {72,51,236}, {37,7,237}, {38,6,237}, {39,5,237}, {41,5,237}, {38,5,238}, {39,6,238}, {40,7,238}, {37,5,239}, {39,7,239}, {40,6,239}, {41,7,239}, {37,10,240}, {38,9,240}, {39,8,240}, {41,8,240}, {38,8,241}, {39,9,241}, {40,10,241}, {37,8,242}, {39,10,242}, {40,9,242}, {41,10,242}, {37,13,243}, {38,12,243}, {39,11,243}, {41,11,243}, {38,11,244}, {39,12,244}, {40,13,244}, {37,11,245}, {39,13,245}, {40,12,245}, {41,13,245}, {37,16,246}, {38,15,246}, {39,14,246}, {41,14,246}, {38,14,247}, {39,15,247}, {40,16,247}, {37,14,248}, {39,16,248}, {40,15,248}, {41,16,248}, {105,58,249}, {106,57,249}, {107,56,249}, {107,58,249}, {108,55,249}, {108,57,249}, {109,54,249}, {110,53,249}, {111,52,249}, {111,54,249}, {112,53,249}, {113,52,249}, {106,52,250}, {107,53,250}, {108,54,250}, {109,55,250}, {110,56,250}, {111,57,250}, {112,58,250}, {105,52,251}, {106,53,251}, {107,52,251}, {107,54,251}, {108,53,251}, {109,56,251}, {110,55,251}, {110,57,251}, {111,56,251}, {111,58,251}, {112,57,251}, {113,58,251}, {105,72,252}, {106,71,252}, {107,70,252}, {107,72,252}, {108,69,252}, {108,71,252}, {109,68,252}, {110,67,252}, {111,66,252}, {111,68,252}, {112,67,252}, {113,66,252}, {106,66,253}, {107,67,253}, {108,68,253}, {109,69,253}, {110,70,253}, {111,71,253}, {112,72,253}, {105,66,254}, {106,67,254}, {107,66,254}, {107,68,254}, {108,67,254}, {109,70,254}, {110,69,254}, {110,71,254}, {111,70,254}, {111,72,254}, {112,71,254}, {113,72,254}, {105,79,255}, {106,78,255}, {107,77,255}, {107,79,255}, {108,76,255}, {108,78,255}, {109,75,255}, {110,74,255}, {111,73,255}, {111,75,255}, {112,74,255}, {113,73,255}, {106,73,256}, {107,74,256}, {108,75,256}, {109,76,256}, {110,77,256}, {111,78,256}, {112,79,256}, {105,73,257}, {106,74,257}, {107,73,257}, {107,75,257}, {108,74,257}, {109,77,257}, {110,76,257}, {110,78,257}, {111,77,257}, {111,79,257}, {112,78,257}, {113,79,257}, {105,86,258}, {106,85,258}, {107,84,258}, {107,86,258}, {108,83,258}, {108,85,258}, {109,82,258}, {110,81,258}, {111,80,258}, {111,82,258}, {112,81,258}, {113,80,258}, {106,80,259}, {107,81,259}, {108,82,259}, {109,83,259}, {110,84,259}, {111,85,259}, {112,86,259}, {105,80,260}, {106,81,260}, {107,80,260}, {107,82,260}, {108,81,260}, {109,84,260}, {110,83,260}, {110,85,260}, {111,84,260}, {111,86,260}, {112,85,260}, {113,86,260}, {114,72,261}, {115,71,261}, {116,70,261}, {116,72,261}, {117,69,261}, {117,71,261}, {118,68,261}, {119,67,261}, {120,66,261}, {120,68,261}, {121,67,261}, {122,66,261}, {115,66,262}, {116,67,262}, {117,68,262}, {118,69,262}, {119,70,262}, {120,71,262}, {121,72,262}, {114,66,263}, {115,67,263}, {116,66,263}, {116,68,263}, {117,67,263}, {118,70,263}, {119,69,263}, {119,71,263}, {120,70,263}, {120,72,263}, {121,71,263}, {122,72,263}, {114,79,264}, {115,78,264}, {116,77,264}, {116,79,264}, {117,76,264}, {117,78,264}, {118,75,264}, {119,74,264}, {120,73,264}, {120,75,264}, {121,74,264}, {122,73,264}, {115,73,265}, {116,74,265}, {117,75,265}, {118,76,265}, {119,77,265}, {120,78,265}, {121,79,265}, {114,73,266}, {115,74,266}, {116,73,266}, {116,75,266}, {117,74,266}, {118,77,266}, {119,76,266}, {119,78,266}, {120,77,266}, {120,79,266}, {121,78,266}, {122,79,266}, {114,86,267}, {115,85,267}, {116,84,267}, {116,86,267}, {117,83,267}, {117,85,267}, {118,82,267}, {119,81,267}, {120,80,267}, {120,82,267}, {121,81,267}, {122,80,267}, {115,80,268}, {116,81,268}, {117,82,268}, {118,83,268}, {119,84,268}, {120,85,268}, {121,86,268}, {114,80,269}, {115,81,269}, {116,80,269}, {116,82,269}, {117,81,269}, {118,84,269}, {119,83,269}, {119,85,269}, {120,84,269}, {120,86,269}, {121,85,269}, {122,86,269}, {73,21,270}, {74,20,270}, {75,19,270}, {75,21,270}, {76,18,270}, {77,17,270}, {78,18,270}, {79,17,270}, {74,17,271}, {75,18,271}, {76,19,271}, {77,20,271}, {78,21,271}, {73,17,272}, {74,18,272}, {75,17,272}, {76,20,272}, {77,19,272}, {77,21,272}, {78,20,272}, {79,21,272}, {73,31,273}, {74,30,273}, {75,29,273}, {75,31,273}, {76,28,273}, {77,27,273}, {78,28,273}, {79,27,273}, {74,27,274}, {75,28,274}, {76,29,274}, {77,30,274}, {78,31,274}, {73,27,275}, {74,28,275}, {75,27,275}, {76,30,275}, {77,29,275}, {77,31,275}, {78,30,275}, {79,31,275}, {73,36,276}, {74,35,276}, {75,34,276}, {75,36,276}, {76,33,276}, {77,32,276}, {78,33,276}, {79,32,276}, {74,32,277}, {75,33,277}, {76,34,277}, {77,35,277}, {78,36,277}, {73,32,278}, {74,33,278}, {75,32,278}, {76,35,278}, {77,34,278}, {77,36,278}, {78,35,278}, {79,36,278}, {73,41,279}, {74,40,279}, {75,39,279}, {75,41,279}, {76,38,279}, {77,37,279}, {78,38,279}, {79,37,279}, {74,37,280}, {75,38,280}, {76,39,280}, {77,40,280}, {78,41,280}, {73,37,281}, {74,38,281}, {75,37,281}, {76,40,281}, {77,39,281}, {77,41,281}, {78,40,281}, {79,41,281}, {73,46,282}, {74,45,282}, {75,44,282}, {75,46,282}, {76,43,282}, {77,42,282}, {78,43,282}, {79,42,282}, {74,42,283}, {75,43,283}, {76,44,283}, {77,45,283}, {78,46,283}, {73,42,284}, {74,43,284}, {75,42,284}, {76,45,284}, {77,44,284}, {77,46,284}, {78,45,284}, {79,46,284}, {73,51,285}, {74,50,285}, {75,49,285}, {75,51,285}, {76,48,285}, {77,47,285}, {78,48,285}, {79,47,285}, {74,47,286}, {75,48,286}, {76,49,286}, {77,50,286}, {78,51,286}, {73,47,287}, {74,48,287}, {75,47,287}, {76,50,287}, {77,49,287}, {77,51,287}, {78,50,287}, {79,51,287}, {42,7,288}, {43,6,288}, {44,5,288}, {46,5,288}, {43,5,289}, {44,6,289}, {45,7,289}, {42,5,290}, {44,7,290}, {45,6,290}, {46,7,290}, {42,10,291}, {43,9,291}, {44,8,291}, {46,8,291}, {43,8,292}, {44,9,292}, {45,10,292}, {42,8,293}, {44,10,293}, {45,9,293}, {46,10,293}, {42,13,294}, {43,12,294}, {44,11,294}, {46,11,294}, {43,11,295}, {44,12,295}, {45,13,295}, {42,11,296}, {44,13,296}, {45,12,296}, {46,13,296}, {42,16,297}, {43,15,297}, {44,14,297}, {46,14,297}, {43,14,298}, {44,15,298}, {45,16,298}, {42,14,299}, {44,16,299}, {45,15,299}, {46,16,299}, {123,58,300}, {124,57,300}, {125,56,300}, {125,58,300}, {126,55,300}, {126,57,300}, {127,54,300}, {128,53,300}, {129,52,300}, {129,54,300}, {130,53,300}, {131,52,300}, {124,52,301}, {125,53,301}, {126,54,301}, {127,55,301}, {128,56,301}, {129,57,301}, {130,58,301}, {123,52,302}, {124,53,302}, {125,52,302}, {125,54,302}, {126,53,302}, {127,56,302}, {128,55,302}, {128,57,302}, {129,56,302}, {129,58,302}, {130,57,302}, {131,58,302}, {123,65,303}, {124,64,303}, {125,63,303}, {125,65,303}, {126,62,303}, {126,64,303}, {127,61,303}, {128,60,303}, {129,59,303}, {129,61,303}, {130,60,303}, {131,59,303}, {124,59,304}, {125,60,304}, {126,61,304}, {127,62,304}, {128,63,304}, {129,64,304}, {130,65,304}, {123,59,305}, {124,60,305}, {125,59,305}, {125,61,305}, {126,60,305}, {127,63,305}, {128,62,305}, {128,64,305}, {129,63,305}, {129,65,305}, {130,64,305}, {131,65,305}, {123,72,306}, {124,71,306}, {125,70,306}, {125,72,306}, {126,69,306}, {126,71,306}, {127,68,306}, {128,67,306}, {129,66,306}, {129,68,306}, {130,67,306}, {131,66,306}, {124,66,307}, {125,67,307}, {126,68,307}, {127,69,307}, {128,70,307}, {129,71,307}, {130,72,307}, {123,66,308}, {124,67,308}, {125,66,308}, {125,68,308}, {126,67,308}, {127,70,308}, {128,69,308}, {128,71,308}, {129,70,308}, {129,72,308}, {130,71,308}, {131,72,308}, {123,79,309}, {124,78,309}, {125,77,309}, {125,79,309}, {126,76,309}, {126,78,309}, {127,75,309}, {128,74,309}, {129,73,309}, {129,75,309}, {130,74,309}, {131,73,309}, {124,73,310}, {125,74,310}, {126,75,310}, {127,76,310}, {128,77,310}, {129,78,310}, {130,79,310}, {123,73,311}, {124,74,311}, {125,73,311}, {125,75,311}, {126,74,311}, {127,77,311}, {128,76,311}, {128,78,311}, {129,77,311}, {129,79,311}, {130,78,311}, {131,79,311}, {123,86,312}, {124,85,312}, {125,84,312}, {125,86,312}, {126,83,312}, {126,85,312}, {127,82,312}, {128,81,312}, {129,80,312}, {129,82,312}, {130,81,312}, {131,80,312}, {124,80,313}, {125,81,313}, {126,82,313}, {127,83,313}, {128,84,313}, {129,85,313}, {130,86,313}, {123,80,314}, {124,81,314}, {125,80,314}, {125,82,314}, {126,81,314}, {127,84,314}, {128,83,314}, {128,85,314}, {129,84,314}, {129,86,314}, {130,85,314}, {131,86,314}, {14,0,315}, {15,0,316}, {16,0,317}, {14,1,318}, {15,1,319}, {16,1,320}, {14,2,321}, {15,2,322}, {16,2,323}, {14,3,324}, {15,3,325}, {16,3,326}, {14,4,327}, {15,4,328}, {16,4,329}, {80,21,330}, {81,20,330}, {82,19,330}, {82,21,330}, {83,18,330}, {84,17,330}, {85,18,330}, {86,17,330}, {81,17,331}, {82,18,331}, {83,19,331}, {84,20,331}, {85,21,331}, {80,17,332}, {81,18,332}, {82,17,332}, {83,20,332}, {84,19,332}, {84,21,332}, {85,20,332}, {86,21,332}, {80,26,333}, {81,25,333}, {82,24,333}, {82,26,333}, {83,23,333}, {84,22,333}, {85,23,333}, {86,22,333}, {81,22,334}, {82,23,334}, {83,24,334}, {84,25,334}, {85,26,334}, {80,22,335}, {81,23,335}, {82,22,335}, {83,25,335}, {84,24,335}, {84,26,335}, {85,25,335}, {86,26,335}, {80,31,336}, {81,30,336}, {82,29,336}, {82,31,336}, {83,28,336}, {84,27,336}, {85,28,336}, {86,27,336}, {81,27,337}, {82,28,337}, {83,29,337}, {84,30,337}, {85,31,337}, {80,27,338}, {81,28,338}, {82,27,338}, {83,30,338}, {84,29,338}, {84,31,338}, {85,30,338}, {86,31,338}, {80,36,339}, {81,35,339}, {82,34,339}, {82,36,339}, {83,33,339}, {84,32,339}, {85,33,339}, {86,32,339}, {81,32,340}, {82,33,340}, {83,34,340}, {84,35,340}, {85,36,340}, {80,32,341}, {81,33,341}, {82,32,341}, {83,35,341}, {84,34,341}, {84,36,341}, {85,35,341}, {86,36,341}, {80,41,342}, {81,40,342}, {82,39,342}, {82,41,342}, {83,38,342}, {84,37,342}, {85,38,342}, {86,37,342}, {81,37,343}, {82,38,343}, {83,39,343}, {84,40,343}, {85,41,343}, {80,37,344}, {81,38,344}, {82,37,344}, {83,40,344}, {84,39,344}, {84,41,344}, {85,40,344}, {86,41,344}, {80,46,345}, {81,45,345}, {82,44,345}, {82,46,345}, {83,43,345}, {84,42,345}, {85,43,345}, {86,42,345}, {81,42,346}, {82,43,346}, {83,44,346}, {84,45,346}, {85,46,346}, {80,42,347}, {81,43,347}, {82,42,347}, {83,45,347}, {84,44,347}, {84,46,347}, {85,45,347}, {86,46,347}, {80,51,348}, {81,50,348}, {82,49,348}, {82,51,348}, {83,48,348}, {84,47,348}, {85,48,348}, {86,47,348}, {81,47,349}, {82,48,349}, {83,49,349}, {84,50,349}, {85,51,349}, {80,47,350}, {81,48,350}, {82,47,350}, {83,50,350}, {84,49,350}, {84,51,350}, {85,50,350}, {86,51,350}, {47,7,351}, {48,6,351}, {49,5,351}, {51,5,351}, {48,5,352}, {49,6,352}, {50,7,352}, {47,5,353}, {49,7,353}, {50,6,353}, {51,7,353}, {47,10,354}, {48,9,354}, {49,8,354}, {51,8,354}, {48,8,355}, {49,9,355}, {50,10,355}, {47,8,356}, {49,10,356}, {50,9,356}, {51,10,356}, {47,13,357}, {48,12,357}, {49,11,357}, {51,11,357}, {48,11,358}, {49,12,358}, {50,13,358}, {47,11,359}, {49,13,359}, {50,12,359}, {51,13,359}, {47,16,360}, {48,15,360}, {49,14,360}, {51,14,360}, {48,14,361}, {49,15,361}, {50,16,361}, {47,14,362}, {49,16,362}, {50,15,362}, {51,16,362}, {132,58,363}, {133,57,363}, {134,56,363}, {134,58,363}, {135,55,363}, {135,57,363}, {136,54,363}, {137,53,363}, {138,52,363}, {138,54,363}, {139,53,363}, {140,52,363}, {133,52,364}, {134,53,364}, {135,54,364}, {136,55,364}, {137,56,364}, {138,57,364}, {139,58,364}, {132,52,365}, {133,53,365}, {134,52,365}, {134,54,365}, {135,53,365}, {136,56,365}, {137,55,365}, {137,57,365}, {138,56,365}, {138,58,365}, {139,57,365}, {140,58,365}, {132,65,366}, {133,64,366}, {134,63,366}, {134,65,366}, {135,62,366}, {135,64,366}, {136,61,366}, {137,60,366}, {138,59,366}, {138,61,366}, {139,60,366}, {140,59,366}, {133,59,367}, {134,60,367}, {135,61,367}, {136,62,367}, {137,63,367}, {138,64,367}, {139,65,367}, {132,59,368}, {133,60,368}, {134,59,368}, {134,61,368}, {135,60,368}, {136,63,368}, {137,62,368}, {137,64,368}, {138,63,368}, {138,65,368}, {139,64,368}, {140,65,368}, {132,72,369}, {133,71,369}, {134,70,369}, {134,72,369}, {135,69,369}, {135,71,369}, {136,68,369}, {137,67,369}, {138,66,369}, {138,68,369}, {139,67,369}, {140,66,369}, {133,66,370}, {134,67,370}, {135,68,370}, {136,69,370}, {137,70,370}, {138,71,370}, {139,72,370}, {132,66,371}, {133,67,371}, {134,66,371}, {134,68,371}, {135,67,371}, {136,70,371}, {137,69,371}, {137,71,371}, {138,70,371}, {138,72,371}, {139,71,371}, {140,72,371}, {132,79,372}, {133,78,372}, {134,77,372}, {134,79,372}, {135,76,372}, {135,78,372}, {136,75,372}, {137,74,372}, {138,73,372}, {138,75,372}, {139,74,372}, {140,73,372}, {133,73,373}, {134,74,373}, {135,75,373}, {136,76,373}, {137,77,373}, {138,78,373}, {139,79,373}, {132,73,374}, {133,74,374}, {134,73,374}, {134,75,374}, {135,74,374}, {136,77,374}, {137,76,374}, {137,78,374}, {138,77,374}, {138,79,374}, {139,78,374}, {140,79,374}, {132,86,375}, {133,85,375}, {134,84,375}, {134,86,375}, {135,83,375}, {135,85,375}, {136,82,375}, {137,81,375}, {138,80,375}, {138,82,375}, {139,81,375}, {140,80,375}, {133,80,376}, {134,81,376}, {135,82,376}, {136,83,376}, {137,84,376}, {138,85,376}, {139,86,376}, {132,80,377}, {133,81,377}, {134,80,377}, {134,82,377}, {135,81,377}, {136,84,377}, {137,83,377}, {137,85,377}, {138,84,377}, {138,86,377}, {139,85,377}, {140,86,377}}; + static constexpr double cg[2138] = {1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143}; -template -KOKKOS_INLINE_FUNCTION void fwd_AAAA(const V &L, const V &R, const V &out, const int ii, const int k) -{ + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { const float a0 = L(ii, k, 0); const float a1 = L(ii, k, 1); const float a2 = L(ii, k, 2); @@ -12463,11 +17082,12 @@ KOKKOS_INLINE_FUNCTION void fwd_AAAA(const V &L, const V &R, const V &out, const out(ii, k, 375) = 0.20412415266036987f * a132 * a86 + 0.1767766922712326f * a133 * a85 + 0.14940357208251953f * a134 * a84 + 0.03857583925127983f * a134 * a86 + 0.17251639068126678f * a135 * a83 + 0.06681530922651291f * a135 * a85 + -0.13363061845302582f * a136 * a82 + -0.06681530922651291f * a137 * a81 + -0.03857583925127983f * a138 * a80 + -0.14940357208251953f * a138 * a82 + -0.1767766922712326f * a139 * a81 + -0.20412415266036987f * a140 * a80; out(ii, k, 376) = 0.14433756470680237f * a133 * a80 + 0.18898223340511322f * a134 * a81 + 0.21128855645656586f * a135 * a82 + 0.2182178944349289f * a136 * a83 + 0.21128855645656586f * a137 * a84 + 0.18898223340511322f * a138 * a85 + 0.14433756470680237f * a139 * a86; out(ii, k, 377) = 0.20412415266036987f * a132 * a80 + 0.1767766922712326f * a133 * a81 + -0.03857583925127983f * a134 * a80 + 0.14940357208251953f * a134 * a82 + -0.06681530922651291f * a135 * a81 + -0.13363061845302582f * a136 * a84 + 0.17251639068126678f * a137 * a83 + -0.06681530922651291f * a137 * a85 + 0.14940357208251953f * a138 * a84 + -0.03857583925127983f * a138 * a86 + 0.1767766922712326f * a139 * a85 + 0.20412415266036987f * a140 * a86; -} + } -template -KOKKOS_INLINE_FUNCTION void rev_AAAA(const V &F, const V &, const V &D, const V &dF, const V &, const int ii, const int k) -{ + template + KOKKOS_INLINE_FUNCTION static void rev(const V &F, const V &, const V &D, const V &dF, const V &, + const int ii, const int k) + { const float f0 = F(ii, k, 0); const float f1 = F(ii, k, 1); const float f2 = F(ii, k, 2); @@ -12662,5644 +17282,9421 @@ KOKKOS_INLINE_FUNCTION void rev_AAAA(const V &F, const V &, const V &D, const V g0 += 1.0f * d * f0; g0 += 1.0f * d * f0; } - { const float d = D(ii, k, 1); - g1 += 1.0f * d * f0; - g0 += 1.0f * d * f1; + { const float d = D(ii, k, 1); + g1 += 1.0f * d * f0; + g0 += 1.0f * d * f1; + } + { const float d = D(ii, k, 2); + g2 += 1.0f * d * f0; + g0 += 1.0f * d * f2; + } + { const float d = D(ii, k, 3); + g3 += 1.0f * d * f0; + g0 += 1.0f * d * f3; + } + { const float d = D(ii, k, 4); + g4 += 1.0f * d * f0; + g0 += 1.0f * d * f4; + } + { const float d = D(ii, k, 5); + g8 += 0.3333333432674408f * d * f5; + g5 += 0.3333333432674408f * d * f8; + g9 += 0.3333333432674408f * d * f6; + g6 += 0.3333333432674408f * d * f9; + g10 += 0.3333333432674408f * d * f7; + g7 += 0.3333333432674408f * d * f10; + } + { const float d = D(ii, k, 6); + g11 += 0.3333333432674408f * d * f5; + g5 += 0.3333333432674408f * d * f11; + g12 += 0.3333333432674408f * d * f6; + g6 += 0.3333333432674408f * d * f12; + g13 += 0.3333333432674408f * d * f7; + g7 += 0.3333333432674408f * d * f13; + } + { const float d = D(ii, k, 7); + g14 += 0.3333333432674408f * d * f5; + g5 += 0.3333333432674408f * d * f14; + g15 += 0.3333333432674408f * d * f6; + g6 += 0.3333333432674408f * d * f15; + g16 += 0.3333333432674408f * d * f7; + g7 += 0.3333333432674408f * d * f16; + } + { const float d = D(ii, k, 8); + g1 += 1.0f * d * f1; + g1 += 1.0f * d * f1; + } + { const float d = D(ii, k, 9); + g2 += 1.0f * d * f1; + g1 += 1.0f * d * f2; + } + { const float d = D(ii, k, 10); + g3 += 1.0f * d * f1; + g1 += 1.0f * d * f3; + } + { const float d = D(ii, k, 11); + g4 += 1.0f * d * f1; + g1 += 1.0f * d * f4; + } + { const float d = D(ii, k, 12); + g27 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f27; + g28 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f28; + g29 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f29; + g30 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f30; + g31 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f31; + } + { const float d = D(ii, k, 13); + g32 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f32; + g33 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f33; + g34 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f34; + g35 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f35; + g36 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f36; + } + { const float d = D(ii, k, 14); + g37 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f37; + g38 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f41; + } + { const float d = D(ii, k, 15); + g42 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 16); + g47 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f47; + g18 += 0.20000000298023224f * d * f48; + g19 += 0.20000000298023224f * d * f49; + g20 += 0.20000000298023224f * d * f50; + g21 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 17); + g27 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f27; + g28 += 0.20000000298023224f * d * f23; + g23 += 0.20000000298023224f * d * f28; + g29 += 0.20000000298023224f * d * f24; + g24 += 0.20000000298023224f * d * f29; + g30 += 0.20000000298023224f * d * f25; + g25 += 0.20000000298023224f * d * f30; + g31 += 0.20000000298023224f * d * f26; + g26 += 0.20000000298023224f * d * f31; + } + { const float d = D(ii, k, 18); + g37 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f37; + g38 += 0.20000000298023224f * d * f23; + g23 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f24; + g24 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f25; + g25 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f26; + g26 += 0.20000000298023224f * d * f41; + } + { const float d = D(ii, k, 19); + g42 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f23; + g23 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f24; + g24 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f25; + g25 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f26; + g26 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 20); + g47 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f47; + g23 += 0.20000000298023224f * d * f48; + g24 += 0.20000000298023224f * d * f49; + g25 += 0.20000000298023224f * d * f50; + g26 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 21); + g8 += 0.3333333432674408f * d * f8; + g8 += 0.3333333432674408f * d * f8; + g9 += 0.3333333432674408f * d * f9; + g9 += 0.3333333432674408f * d * f9; + g10 += 0.3333333432674408f * d * f10; + g10 += 0.3333333432674408f * d * f10; + } + { const float d = D(ii, k, 22); + g11 += 0.3333333432674408f * d * f8; + g8 += 0.3333333432674408f * d * f11; + g12 += 0.3333333432674408f * d * f9; + g9 += 0.3333333432674408f * d * f12; + g13 += 0.3333333432674408f * d * f10; + g10 += 0.3333333432674408f * d * f13; + } + { const float d = D(ii, k, 23); + g14 += 0.3333333432674408f * d * f8; + g8 += 0.3333333432674408f * d * f14; + g15 += 0.3333333432674408f * d * f9; + g9 += 0.3333333432674408f * d * f15; + g16 += 0.3333333432674408f * d * f10; + g10 += 0.3333333432674408f * d * f16; + } + { const float d = D(ii, k, 27); + g2 += 1.0f * d * f2; + g2 += 1.0f * d * f2; + } + { const float d = D(ii, k, 28); + g3 += 1.0f * d * f2; + g2 += 1.0f * d * f3; + } + { const float d = D(ii, k, 29); + g4 += 1.0f * d * f2; + g2 += 1.0f * d * f4; + } + { const float d = D(ii, k, 30); + g32 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f32; + g33 += 0.20000000298023224f * d * f28; + g28 += 0.20000000298023224f * d * f33; + g34 += 0.20000000298023224f * d * f29; + g29 += 0.20000000298023224f * d * f34; + g35 += 0.20000000298023224f * d * f30; + g30 += 0.20000000298023224f * d * f35; + g36 += 0.20000000298023224f * d * f31; + g31 += 0.20000000298023224f * d * f36; + } + { const float d = D(ii, k, 31); + g37 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f37; + g38 += 0.20000000298023224f * d * f28; + g28 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f29; + g29 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f30; + g30 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f31; + g31 += 0.20000000298023224f * d * f41; + } + { const float d = D(ii, k, 32); + g42 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f28; + g28 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f29; + g29 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f30; + g30 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f31; + g31 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 33); + g47 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f47; + g28 += 0.20000000298023224f * d * f48; + g29 += 0.20000000298023224f * d * f49; + g30 += 0.20000000298023224f * d * f50; + g31 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 38); + g32 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f32; + g33 += 0.20000000298023224f * d * f33; + g33 += 0.20000000298023224f * d * f33; + g34 += 0.20000000298023224f * d * f34; + g34 += 0.20000000298023224f * d * f34; + g35 += 0.20000000298023224f * d * f35; + g35 += 0.20000000298023224f * d * f35; + g36 += 0.20000000298023224f * d * f36; + g36 += 0.20000000298023224f * d * f36; + } + { const float d = D(ii, k, 39); + g37 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f37; + g38 += 0.20000000298023224f * d * f33; + g33 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f34; + g34 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f35; + g35 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f36; + g36 += 0.20000000298023224f * d * f41; + } + { const float d = D(ii, k, 40); + g42 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f33; + g33 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f34; + g34 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f35; + g35 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f36; + g36 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 41); + g47 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f47; + g33 += 0.20000000298023224f * d * f48; + g34 += 0.20000000298023224f * d * f49; + g35 += 0.20000000298023224f * d * f50; + g36 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 45); + g11 += 0.3333333432674408f * d * f11; + g11 += 0.3333333432674408f * d * f11; + g12 += 0.3333333432674408f * d * f12; + g12 += 0.3333333432674408f * d * f12; + g13 += 0.3333333432674408f * d * f13; + g13 += 0.3333333432674408f * d * f13; + } + { const float d = D(ii, k, 46); + g14 += 0.3333333432674408f * d * f11; + g11 += 0.3333333432674408f * d * f14; + g15 += 0.3333333432674408f * d * f12; + g12 += 0.3333333432674408f * d * f15; + g16 += 0.3333333432674408f * d * f13; + g13 += 0.3333333432674408f * d * f16; + } + { const float d = D(ii, k, 50); + g3 += 1.0f * d * f3; + g3 += 1.0f * d * f3; + } + { const float d = D(ii, k, 51); + g4 += 1.0f * d * f3; + g3 += 1.0f * d * f4; + } + { const float d = D(ii, k, 52); + g37 += 0.20000000298023224f * d * f37; + g37 += 0.20000000298023224f * d * f37; + g38 += 0.20000000298023224f * d * f38; + g38 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f39; + g39 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f40; + g40 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f41; + g41 += 0.20000000298023224f * d * f41; + } + { const float d = D(ii, k, 53); + g42 += 0.20000000298023224f * d * f37; + g37 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f38; + g38 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f39; + g39 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f40; + g40 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f41; + g41 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 54); + g47 += 0.20000000298023224f * d * f37; + g37 += 0.20000000298023224f * d * f47; + g38 += 0.20000000298023224f * d * f48; + g39 += 0.20000000298023224f * d * f49; + g40 += 0.20000000298023224f * d * f50; + g41 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 61); + g42 += 0.20000000298023224f * d * f42; + g42 += 0.20000000298023224f * d * f42; + g43 += 0.20000000298023224f * d * f43; + g43 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f44; + g44 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f45; + g45 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f46; + g46 += 0.20000000298023224f * d * f46; + } + { const float d = D(ii, k, 62); + g47 += 0.20000000298023224f * d * f42; + g42 += 0.20000000298023224f * d * f47; + g43 += 0.20000000298023224f * d * f48; + g44 += 0.20000000298023224f * d * f49; + g45 += 0.20000000298023224f * d * f50; + g46 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 64); + g14 += 0.3333333432674408f * d * f14; + g14 += 0.3333333432674408f * d * f14; + g15 += 0.3333333432674408f * d * f15; + g15 += 0.3333333432674408f * d * f15; + g16 += 0.3333333432674408f * d * f16; + g16 += 0.3333333432674408f * d * f16; + } + { const float d = D(ii, k, 66); + g4 += 1.0f * d * f4; + g4 += 1.0f * d * f4; + } + { const float d = D(ii, k, 67); + g47 += 0.20000000298023224f * d * f47; + g47 += 0.20000000298023224f * d * f47; + } + { const float d = D(ii, k, 69); + g5 += 1.0f * d * f0; + g0 += 1.0f * d * f5; + } + { const float d = D(ii, k, 70); + g6 += 1.0f * d * f0; + g0 += 1.0f * d * f6; + } + { const float d = D(ii, k, 71); + g7 += 1.0f * d * f0; + g0 += 1.0f * d * f7; + } + { const float d = D(ii, k, 72); + g5 += 1.0f * d * f1; + g1 += 1.0f * d * f5; + } + { const float d = D(ii, k, 73); + g6 += 1.0f * d * f1; + g1 += 1.0f * d * f6; + } + { const float d = D(ii, k, 74); + g7 += 1.0f * d * f1; + g1 += 1.0f * d * f7; + } + { const float d = D(ii, k, 75); + g5 += 1.0f * d * f2; + g2 += 1.0f * d * f5; + } + { const float d = D(ii, k, 76); + g6 += 1.0f * d * f2; + g2 += 1.0f * d * f6; + } + { const float d = D(ii, k, 77); + g7 += 1.0f * d * f2; + g2 += 1.0f * d * f7; + } + { const float d = D(ii, k, 78); + g5 += 1.0f * d * f3; + g3 += 1.0f * d * f5; + } + { const float d = D(ii, k, 79); + g6 += 1.0f * d * f3; + g3 += 1.0f * d * f6; + } + { const float d = D(ii, k, 80); + g7 += 1.0f * d * f3; + g3 += 1.0f * d * f7; + } + { const float d = D(ii, k, 81); + g5 += 1.0f * d * f4; + g4 += 1.0f * d * f5; + } + { const float d = D(ii, k, 82); + g6 += 1.0f * d * f4; + g4 += 1.0f * d * f6; + } + { const float d = D(ii, k, 83); + g7 += 1.0f * d * f4; + g4 += 1.0f * d * f7; + } + { const float d = D(ii, k, 84); + g17 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f17; + g18 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f18; + g19 += -0.22360679507255554f * d * f8; + g8 += -0.22360679507255554f * d * f19; + g21 += -0.3872983455657959f * d * f8; + g8 += -0.3872983455657959f * d * f21; + } + { const float d = D(ii, k, 85); + g18 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f18; + g19 += 0.4472135901451111f * d * f9; + g9 += 0.4472135901451111f * d * f19; + g20 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f20; + } + { const float d = D(ii, k, 86); + g17 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f17; + g19 += -0.22360679507255554f * d * f10; + g10 += -0.22360679507255554f * d * f19; + g20 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f20; + g21 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f21; + } + { const float d = D(ii, k, 87); + g17 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f17; + g18 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f18; + g19 += -0.22360679507255554f * d * f11; + g11 += -0.22360679507255554f * d * f19; + g21 += -0.3872983455657959f * d * f11; + g11 += -0.3872983455657959f * d * f21; + } + { const float d = D(ii, k, 88); + g18 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f18; + g19 += 0.4472135901451111f * d * f12; + g12 += 0.4472135901451111f * d * f19; + g20 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f20; + } + { const float d = D(ii, k, 89); + g17 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f17; + g19 += -0.22360679507255554f * d * f13; + g13 += -0.22360679507255554f * d * f19; + g20 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f20; + g21 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f21; + } + { const float d = D(ii, k, 90); + g17 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f17; + g18 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f18; + g19 += -0.22360679507255554f * d * f14; + g14 += -0.22360679507255554f * d * f19; + g21 += -0.3872983455657959f * d * f14; + g14 += -0.3872983455657959f * d * f21; + } + { const float d = D(ii, k, 91); + g18 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f18; + g19 += 0.4472135901451111f * d * f15; + g15 += 0.4472135901451111f * d * f19; + g20 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f20; + } + { const float d = D(ii, k, 92); + g17 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f17; + g19 += -0.22360679507255554f * d * f16; + g16 += -0.22360679507255554f * d * f19; + g20 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f20; + g21 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f21; + } + { const float d = D(ii, k, 93); + g22 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f22; + g23 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f23; + g24 += -0.22360679507255554f * d * f8; + g8 += -0.22360679507255554f * d * f24; + g26 += -0.3872983455657959f * d * f8; + g8 += -0.3872983455657959f * d * f26; + } + { const float d = D(ii, k, 94); + g23 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f23; + g24 += 0.4472135901451111f * d * f9; + g9 += 0.4472135901451111f * d * f24; + g25 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f25; + } + { const float d = D(ii, k, 95); + g22 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f22; + g24 += -0.22360679507255554f * d * f10; + g10 += -0.22360679507255554f * d * f24; + g25 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f25; + g26 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f26; + } + { const float d = D(ii, k, 96); + g22 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f22; + g23 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f23; + g24 += -0.22360679507255554f * d * f11; + g11 += -0.22360679507255554f * d * f24; + g26 += -0.3872983455657959f * d * f11; + g11 += -0.3872983455657959f * d * f26; + } + { const float d = D(ii, k, 97); + g23 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f23; + g24 += 0.4472135901451111f * d * f12; + g12 += 0.4472135901451111f * d * f24; + g25 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f25; + } + { const float d = D(ii, k, 98); + g22 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f22; + g24 += -0.22360679507255554f * d * f13; + g13 += -0.22360679507255554f * d * f24; + g25 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f25; + g26 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f26; + } + { const float d = D(ii, k, 99); + g22 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f22; + g23 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f23; + g24 += -0.22360679507255554f * d * f14; + g14 += -0.22360679507255554f * d * f24; + g26 += -0.3872983455657959f * d * f14; + g14 += -0.3872983455657959f * d * f26; + } + { const float d = D(ii, k, 100); + g23 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f23; + g24 += 0.4472135901451111f * d * f15; + g15 += 0.4472135901451111f * d * f24; + g25 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f25; + } + { const float d = D(ii, k, 101); + g22 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f22; + g24 += -0.22360679507255554f * d * f16; + g16 += -0.22360679507255554f * d * f24; + g25 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f25; + g26 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f26; + } + { const float d = D(ii, k, 102); + g8 += 1.0f * d * f0; + g0 += 1.0f * d * f8; + } + { const float d = D(ii, k, 103); + g9 += 1.0f * d * f0; + g0 += 1.0f * d * f9; + } + { const float d = D(ii, k, 104); + g10 += 1.0f * d * f0; + g0 += 1.0f * d * f10; + } + { const float d = D(ii, k, 105); + g8 += 1.0f * d * f1; + g1 += 1.0f * d * f8; + } + { const float d = D(ii, k, 106); + g9 += 1.0f * d * f1; + g1 += 1.0f * d * f9; + } + { const float d = D(ii, k, 107); + g10 += 1.0f * d * f1; + g1 += 1.0f * d * f10; + } + { const float d = D(ii, k, 108); + g8 += 1.0f * d * f2; + g2 += 1.0f * d * f8; + } + { const float d = D(ii, k, 109); + g9 += 1.0f * d * f2; + g2 += 1.0f * d * f9; + } + { const float d = D(ii, k, 110); + g10 += 1.0f * d * f2; + g2 += 1.0f * d * f10; + } + { const float d = D(ii, k, 111); + g8 += 1.0f * d * f3; + g3 += 1.0f * d * f8; + } + { const float d = D(ii, k, 112); + g9 += 1.0f * d * f3; + g3 += 1.0f * d * f9; + } + { const float d = D(ii, k, 113); + g10 += 1.0f * d * f3; + g3 += 1.0f * d * f10; + } + { const float d = D(ii, k, 114); + g8 += 1.0f * d * f4; + g4 += 1.0f * d * f8; + } + { const float d = D(ii, k, 115); + g9 += 1.0f * d * f4; + g4 += 1.0f * d * f9; + } + { const float d = D(ii, k, 116); + g10 += 1.0f * d * f4; + g4 += 1.0f * d * f10; + } + { const float d = D(ii, k, 117); + g21 += 0.26726123690605164f * d * f52; + g20 += 0.2182178944349289f * d * f53; + g19 += 0.23904572427272797f * d * f54; + g21 += 0.0690065547823906f * d * f54; + g18 += -0.16903084516525269f * d * f55; + g17 += -0.0690065547823906f * d * f56; + g18 += -0.2182178944349289f * d * f57; + g17 += -0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 118); + g17 += 0.2182178944349289f * d * f53; + g18 += 0.2760262191295624f * d * f54; + g19 += 0.29277002811431885f * d * f55; + g20 += 0.2760262191295624f * d * f56; + g21 += 0.2182178944349289f * d * f57; + } + { const float d = D(ii, k, 119); + g17 += 0.26726123690605164f * d * f52; + g18 += 0.2182178944349289f * d * f53; + g17 += -0.0690065547823906f * d * f54; + g20 += -0.16903084516525269f * d * f55; + g19 += 0.23904572427272797f * d * f56; + g21 += -0.0690065547823906f * d * f56; + g20 += 0.2182178944349289f * d * f57; + g21 += 0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 120); + g26 += 0.26726123690605164f * d * f52; + g25 += 0.2182178944349289f * d * f53; + g24 += 0.23904572427272797f * d * f54; + g26 += 0.0690065547823906f * d * f54; + g23 += -0.16903084516525269f * d * f55; + g22 += -0.0690065547823906f * d * f56; + g23 += -0.2182178944349289f * d * f57; + g22 += -0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 121); + g22 += 0.2182178944349289f * d * f53; + g23 += 0.2760262191295624f * d * f54; + g24 += 0.29277002811431885f * d * f55; + g25 += 0.2760262191295624f * d * f56; + g26 += 0.2182178944349289f * d * f57; + } + { const float d = D(ii, k, 122); + g22 += 0.26726123690605164f * d * f52; + g23 += 0.2182178944349289f * d * f53; + g22 += -0.0690065547823906f * d * f54; + g25 += -0.16903084516525269f * d * f55; + g24 += 0.23904572427272797f * d * f56; + g26 += -0.0690065547823906f * d * f56; + g25 += 0.2182178944349289f * d * f57; + g26 += 0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 123); + g31 += 0.26726123690605164f * d * f52; + g30 += 0.2182178944349289f * d * f53; + g29 += 0.23904572427272797f * d * f54; + g31 += 0.0690065547823906f * d * f54; + g28 += -0.16903084516525269f * d * f55; + g27 += -0.0690065547823906f * d * f56; + g28 += -0.2182178944349289f * d * f57; + g27 += -0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 124); + g27 += 0.2182178944349289f * d * f53; + g28 += 0.2760262191295624f * d * f54; + g29 += 0.29277002811431885f * d * f55; + g30 += 0.2760262191295624f * d * f56; + g31 += 0.2182178944349289f * d * f57; + } + { const float d = D(ii, k, 125); + g27 += 0.26726123690605164f * d * f52; + g28 += 0.2182178944349289f * d * f53; + g27 += -0.0690065547823906f * d * f54; + g30 += -0.16903084516525269f * d * f55; + g29 += 0.23904572427272797f * d * f56; + g31 += -0.0690065547823906f * d * f56; + g30 += 0.2182178944349289f * d * f57; + g31 += 0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 126); + g36 += 0.26726123690605164f * d * f52; + g35 += 0.2182178944349289f * d * f53; + g34 += 0.23904572427272797f * d * f54; + g36 += 0.0690065547823906f * d * f54; + g33 += -0.16903084516525269f * d * f55; + g32 += -0.0690065547823906f * d * f56; + g33 += -0.2182178944349289f * d * f57; + g32 += -0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 127); + g32 += 0.2182178944349289f * d * f53; + g33 += 0.2760262191295624f * d * f54; + g34 += 0.29277002811431885f * d * f55; + g35 += 0.2760262191295624f * d * f56; + g36 += 0.2182178944349289f * d * f57; + } + { const float d = D(ii, k, 128); + g32 += 0.26726123690605164f * d * f52; + g33 += 0.2182178944349289f * d * f53; + g32 += -0.0690065547823906f * d * f54; + g35 += -0.16903084516525269f * d * f55; + g34 += 0.23904572427272797f * d * f56; + g36 += -0.0690065547823906f * d * f56; + g35 += 0.2182178944349289f * d * f57; + g36 += 0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 129); + g41 += 0.26726123690605164f * d * f52; + g40 += 0.2182178944349289f * d * f53; + g39 += 0.23904572427272797f * d * f54; + g41 += 0.0690065547823906f * d * f54; + g38 += -0.16903084516525269f * d * f55; + g37 += -0.0690065547823906f * d * f56; + g38 += -0.2182178944349289f * d * f57; + g37 += -0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 130); + g37 += 0.2182178944349289f * d * f53; + g38 += 0.2760262191295624f * d * f54; + g39 += 0.29277002811431885f * d * f55; + g40 += 0.2760262191295624f * d * f56; + g41 += 0.2182178944349289f * d * f57; + } + { const float d = D(ii, k, 131); + g37 += 0.26726123690605164f * d * f52; + g38 += 0.2182178944349289f * d * f53; + g37 += -0.0690065547823906f * d * f54; + g40 += -0.16903084516525269f * d * f55; + g39 += 0.23904572427272797f * d * f56; + g41 += -0.0690065547823906f * d * f56; + g40 += 0.2182178944349289f * d * f57; + g41 += 0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 132); + g46 += 0.26726123690605164f * d * f52; + g45 += 0.2182178944349289f * d * f53; + g44 += 0.23904572427272797f * d * f54; + g46 += 0.0690065547823906f * d * f54; + g43 += -0.16903084516525269f * d * f55; + g42 += -0.0690065547823906f * d * f56; + g43 += -0.2182178944349289f * d * f57; + g42 += -0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 133); + g42 += 0.2182178944349289f * d * f53; + g43 += 0.2760262191295624f * d * f54; + g44 += 0.29277002811431885f * d * f55; + g45 += 0.2760262191295624f * d * f56; + g46 += 0.2182178944349289f * d * f57; + } + { const float d = D(ii, k, 134); + g42 += 0.26726123690605164f * d * f52; + g43 += 0.2182178944349289f * d * f53; + g42 += -0.0690065547823906f * d * f54; + g45 += -0.16903084516525269f * d * f55; + g44 += 0.23904572427272797f * d * f56; + g46 += -0.0690065547823906f * d * f56; + g45 += 0.2182178944349289f * d * f57; + g46 += 0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 135); + g47 += -0.0690065547823906f * d * f56; + g47 += -0.26726123690605164f * d * f58; + } + { const float d = D(ii, k, 136); + g47 += 0.2182178944349289f * d * f53; + } + { const float d = D(ii, k, 137); + g47 += 0.26726123690605164f * d * f52; + g47 += -0.0690065547823906f * d * f54; + } + { const float d = D(ii, k, 138); + g27 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f27; + g28 += 0.3872983455657959f * d * f6; + g6 += 0.3872983455657959f * d * f28; + g29 += -0.22360679507255554f * d * f5; + g5 += -0.22360679507255554f * d * f29; + g31 += -0.3872983455657959f * d * f5; + g5 += -0.3872983455657959f * d * f31; + } + { const float d = D(ii, k, 139); + g28 += 0.3872983455657959f * d * f5; + g5 += 0.3872983455657959f * d * f28; + g29 += 0.4472135901451111f * d * f6; + g6 += 0.4472135901451111f * d * f29; + g30 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f30; + } + { const float d = D(ii, k, 140); + g27 += 0.3872983455657959f * d * f5; + g5 += 0.3872983455657959f * d * f27; + g29 += -0.22360679507255554f * d * f7; + g7 += -0.22360679507255554f * d * f29; + g30 += 0.3872983455657959f * d * f6; + g6 += 0.3872983455657959f * d * f30; + g31 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f31; + } + { const float d = D(ii, k, 141); + g27 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f27; + g28 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f28; + g29 += -0.22360679507255554f * d * f8; + g8 += -0.22360679507255554f * d * f29; + g31 += -0.3872983455657959f * d * f8; + g8 += -0.3872983455657959f * d * f31; + } + { const float d = D(ii, k, 142); + g28 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f28; + g29 += 0.4472135901451111f * d * f9; + g9 += 0.4472135901451111f * d * f29; + g30 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f30; + } + { const float d = D(ii, k, 143); + g27 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f27; + g29 += -0.22360679507255554f * d * f10; + g10 += -0.22360679507255554f * d * f29; + g30 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f30; + g31 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f31; + } + { const float d = D(ii, k, 144); + g27 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f27; + g28 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f28; + g29 += -0.22360679507255554f * d * f11; + g11 += -0.22360679507255554f * d * f29; + g31 += -0.3872983455657959f * d * f11; + g11 += -0.3872983455657959f * d * f31; + } + { const float d = D(ii, k, 145); + g28 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f28; + g29 += 0.4472135901451111f * d * f12; + g12 += 0.4472135901451111f * d * f29; + g30 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f30; + } + { const float d = D(ii, k, 146); + g27 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f27; + g29 += -0.22360679507255554f * d * f13; + g13 += -0.22360679507255554f * d * f29; + g30 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f30; + g31 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f31; + } + { const float d = D(ii, k, 147); + g27 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f27; + g28 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f28; + g29 += -0.22360679507255554f * d * f14; + g14 += -0.22360679507255554f * d * f29; + g31 += -0.3872983455657959f * d * f14; + g14 += -0.3872983455657959f * d * f31; + } + { const float d = D(ii, k, 148); + g28 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f28; + g29 += 0.4472135901451111f * d * f15; + g15 += 0.4472135901451111f * d * f29; + g30 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f30; + } + { const float d = D(ii, k, 149); + g27 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f27; + g29 += -0.22360679507255554f * d * f16; + g16 += -0.22360679507255554f * d * f29; + g30 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f30; + g31 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f31; + } + { const float d = D(ii, k, 162); + g31 += 0.26726123690605164f * d * f59; + g30 += 0.2182178944349289f * d * f60; + g29 += 0.23904572427272797f * d * f61; + g31 += 0.0690065547823906f * d * f61; + g28 += -0.16903084516525269f * d * f62; + g27 += -0.0690065547823906f * d * f63; + g28 += -0.2182178944349289f * d * f64; + g27 += -0.26726123690605164f * d * f65; + } + { const float d = D(ii, k, 163); + g27 += 0.2182178944349289f * d * f60; + g28 += 0.2760262191295624f * d * f61; + g29 += 0.29277002811431885f * d * f62; + g30 += 0.2760262191295624f * d * f63; + g31 += 0.2182178944349289f * d * f64; + } + { const float d = D(ii, k, 164); + g27 += 0.26726123690605164f * d * f59; + g28 += 0.2182178944349289f * d * f60; + g27 += -0.0690065547823906f * d * f61; + g30 += -0.16903084516525269f * d * f62; + g29 += 0.23904572427272797f * d * f63; + g31 += -0.0690065547823906f * d * f63; + g30 += 0.2182178944349289f * d * f64; + g31 += 0.26726123690605164f * d * f65; + } + { const float d = D(ii, k, 165); + g36 += 0.26726123690605164f * d * f59; + g35 += 0.2182178944349289f * d * f60; + g34 += 0.23904572427272797f * d * f61; + g36 += 0.0690065547823906f * d * f61; + g33 += -0.16903084516525269f * d * f62; + g32 += -0.0690065547823906f * d * f63; + g33 += -0.2182178944349289f * d * f64; + g32 += -0.26726123690605164f * d * f65; + } + { const float d = D(ii, k, 166); + g32 += 0.2182178944349289f * d * f60; + g33 += 0.2760262191295624f * d * f61; + g34 += 0.29277002811431885f * d * f62; + g35 += 0.2760262191295624f * d * f63; + g36 += 0.2182178944349289f * d * f64; + } + { const float d = D(ii, k, 167); + g32 += 0.26726123690605164f * d * f59; + g33 += 0.2182178944349289f * d * f60; + g32 += -0.0690065547823906f * d * f61; + g35 += -0.16903084516525269f * d * f62; + g34 += 0.23904572427272797f * d * f63; + g36 += -0.0690065547823906f * d * f63; + g35 += 0.2182178944349289f * d * f64; + g36 += 0.26726123690605164f * d * f65; + } + { const float d = D(ii, k, 168); + g41 += 0.26726123690605164f * d * f59; + g40 += 0.2182178944349289f * d * f60; + g39 += 0.23904572427272797f * d * f61; + g41 += 0.0690065547823906f * d * f61; + g38 += -0.16903084516525269f * d * f62; + g37 += -0.0690065547823906f * d * f63; + g38 += -0.2182178944349289f * d * f64; + g37 += -0.26726123690605164f * d * f65; + } + { const float d = D(ii, k, 169); + g37 += 0.2182178944349289f * d * f60; + g38 += 0.2760262191295624f * d * f61; + g39 += 0.29277002811431885f * d * f62; + g40 += 0.2760262191295624f * d * f63; + g41 += 0.2182178944349289f * d * f64; + } + { const float d = D(ii, k, 170); + g37 += 0.26726123690605164f * d * f59; + g38 += 0.2182178944349289f * d * f60; + g37 += -0.0690065547823906f * d * f61; + g40 += -0.16903084516525269f * d * f62; + g39 += 0.23904572427272797f * d * f63; + g41 += -0.0690065547823906f * d * f63; + g40 += 0.2182178944349289f * d * f64; + g41 += 0.26726123690605164f * d * f65; + } + { const float d = D(ii, k, 171); + g46 += 0.26726123690605164f * d * f59; + g45 += 0.2182178944349289f * d * f60; + g44 += 0.23904572427272797f * d * f61; + g46 += 0.0690065547823906f * d * f61; + g43 += -0.16903084516525269f * d * f62; + g42 += -0.0690065547823906f * d * f63; + g43 += -0.2182178944349289f * d * f64; + g42 += -0.26726123690605164f * d * f65; + } + { const float d = D(ii, k, 172); + g42 += 0.2182178944349289f * d * f60; + g43 += 0.2760262191295624f * d * f61; + g44 += 0.29277002811431885f * d * f62; + g45 += 0.2760262191295624f * d * f63; + g46 += 0.2182178944349289f * d * f64; + } + { const float d = D(ii, k, 173); + g42 += 0.26726123690605164f * d * f59; + g43 += 0.2182178944349289f * d * f60; + g42 += -0.0690065547823906f * d * f61; + g45 += -0.16903084516525269f * d * f62; + g44 += 0.23904572427272797f * d * f63; + g46 += -0.0690065547823906f * d * f63; + g45 += 0.2182178944349289f * d * f64; + g46 += 0.26726123690605164f * d * f65; + } + { const float d = D(ii, k, 174); + g47 += -0.0690065547823906f * d * f63; + g47 += -0.26726123690605164f * d * f65; + } + { const float d = D(ii, k, 175); + g47 += 0.2182178944349289f * d * f60; + } + { const float d = D(ii, k, 176); + g47 += 0.26726123690605164f * d * f59; + g47 += -0.0690065547823906f * d * f61; + } + { const float d = D(ii, k, 177); + g32 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f32; + g33 += 0.3872983455657959f * d * f6; + g6 += 0.3872983455657959f * d * f33; + g34 += -0.22360679507255554f * d * f5; + g5 += -0.22360679507255554f * d * f34; + g36 += -0.3872983455657959f * d * f5; + g5 += -0.3872983455657959f * d * f36; + } + { const float d = D(ii, k, 178); + g33 += 0.3872983455657959f * d * f5; + g5 += 0.3872983455657959f * d * f33; + g34 += 0.4472135901451111f * d * f6; + g6 += 0.4472135901451111f * d * f34; + g35 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f35; + } + { const float d = D(ii, k, 179); + g32 += 0.3872983455657959f * d * f5; + g5 += 0.3872983455657959f * d * f32; + g34 += -0.22360679507255554f * d * f7; + g7 += -0.22360679507255554f * d * f34; + g35 += 0.3872983455657959f * d * f6; + g6 += 0.3872983455657959f * d * f35; + g36 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f36; + } + { const float d = D(ii, k, 180); + g32 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f32; + g33 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f33; + g34 += -0.22360679507255554f * d * f8; + g8 += -0.22360679507255554f * d * f34; + g36 += -0.3872983455657959f * d * f8; + g8 += -0.3872983455657959f * d * f36; + } + { const float d = D(ii, k, 181); + g33 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f33; + g34 += 0.4472135901451111f * d * f9; + g9 += 0.4472135901451111f * d * f34; + g35 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f35; + } + { const float d = D(ii, k, 182); + g32 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f32; + g34 += -0.22360679507255554f * d * f10; + g10 += -0.22360679507255554f * d * f34; + g35 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f35; + g36 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f36; + } + { const float d = D(ii, k, 183); + g32 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f32; + g33 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f33; + g34 += -0.22360679507255554f * d * f11; + g11 += -0.22360679507255554f * d * f34; + g36 += -0.3872983455657959f * d * f11; + g11 += -0.3872983455657959f * d * f36; + } + { const float d = D(ii, k, 184); + g33 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f33; + g34 += 0.4472135901451111f * d * f12; + g12 += 0.4472135901451111f * d * f34; + g35 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f35; + } + { const float d = D(ii, k, 185); + g32 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f32; + g34 += -0.22360679507255554f * d * f13; + g13 += -0.22360679507255554f * d * f34; + g35 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f35; + g36 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f36; + } + { const float d = D(ii, k, 186); + g32 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f32; + g33 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f33; + g34 += -0.22360679507255554f * d * f14; + g14 += -0.22360679507255554f * d * f34; + g36 += -0.3872983455657959f * d * f14; + g14 += -0.3872983455657959f * d * f36; + } + { const float d = D(ii, k, 187); + g33 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f33; + g34 += 0.4472135901451111f * d * f15; + g15 += 0.4472135901451111f * d * f34; + g35 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f35; + } + { const float d = D(ii, k, 188); + g32 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f32; + g34 += -0.22360679507255554f * d * f16; + g16 += -0.22360679507255554f * d * f34; + g35 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f35; + g36 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f36; + } + { const float d = D(ii, k, 204); + g11 += 1.0f * d * f0; + g0 += 1.0f * d * f11; + } + { const float d = D(ii, k, 205); + g12 += 1.0f * d * f0; + g0 += 1.0f * d * f12; + } + { const float d = D(ii, k, 206); + g13 += 1.0f * d * f0; + g0 += 1.0f * d * f13; + } + { const float d = D(ii, k, 207); + g11 += 1.0f * d * f1; + g1 += 1.0f * d * f11; + } + { const float d = D(ii, k, 208); + g12 += 1.0f * d * f1; + g1 += 1.0f * d * f12; + } + { const float d = D(ii, k, 209); + g13 += 1.0f * d * f1; + g1 += 1.0f * d * f13; + } + { const float d = D(ii, k, 210); + g11 += 1.0f * d * f2; + g2 += 1.0f * d * f11; + } + { const float d = D(ii, k, 211); + g12 += 1.0f * d * f2; + g2 += 1.0f * d * f12; + } + { const float d = D(ii, k, 212); + g13 += 1.0f * d * f2; + g2 += 1.0f * d * f13; + } + { const float d = D(ii, k, 213); + g11 += 1.0f * d * f3; + g3 += 1.0f * d * f11; + } + { const float d = D(ii, k, 214); + g12 += 1.0f * d * f3; + g3 += 1.0f * d * f12; + } + { const float d = D(ii, k, 215); + g13 += 1.0f * d * f3; + g3 += 1.0f * d * f13; + } + { const float d = D(ii, k, 216); + g11 += 1.0f * d * f4; + g4 += 1.0f * d * f11; + } + { const float d = D(ii, k, 217); + g12 += 1.0f * d * f4; + g4 += 1.0f * d * f12; + } + { const float d = D(ii, k, 218); + g13 += 1.0f * d * f4; + g4 += 1.0f * d * f13; + } + { const float d = D(ii, k, 219); + g21 += 0.26726123690605164f * d * f66; + g20 += 0.2182178944349289f * d * f67; + g19 += 0.23904572427272797f * d * f68; + g21 += 0.0690065547823906f * d * f68; + g18 += -0.16903084516525269f * d * f69; + g17 += -0.0690065547823906f * d * f70; + g18 += -0.2182178944349289f * d * f71; + g17 += -0.26726123690605164f * d * f72; + } + { const float d = D(ii, k, 220); + g17 += 0.2182178944349289f * d * f67; + g18 += 0.2760262191295624f * d * f68; + g19 += 0.29277002811431885f * d * f69; + g20 += 0.2760262191295624f * d * f70; + g21 += 0.2182178944349289f * d * f71; + } + { const float d = D(ii, k, 221); + g17 += 0.26726123690605164f * d * f66; + g18 += 0.2182178944349289f * d * f67; + g17 += -0.0690065547823906f * d * f68; + g20 += -0.16903084516525269f * d * f69; + g19 += 0.23904572427272797f * d * f70; + g21 += -0.0690065547823906f * d * f70; + g20 += 0.2182178944349289f * d * f71; + g21 += 0.26726123690605164f * d * f72; + } + { const float d = D(ii, k, 222); + g26 += 0.26726123690605164f * d * f66; + g25 += 0.2182178944349289f * d * f67; + g24 += 0.23904572427272797f * d * f68; + g26 += 0.0690065547823906f * d * f68; + g23 += -0.16903084516525269f * d * f69; + g22 += -0.0690065547823906f * d * f70; + g23 += -0.2182178944349289f * d * f71; + g22 += -0.26726123690605164f * d * f72; + } + { const float d = D(ii, k, 223); + g22 += 0.2182178944349289f * d * f67; + g23 += 0.2760262191295624f * d * f68; + g24 += 0.29277002811431885f * d * f69; + g25 += 0.2760262191295624f * d * f70; + g26 += 0.2182178944349289f * d * f71; + } + { const float d = D(ii, k, 224); + g22 += 0.26726123690605164f * d * f66; + g23 += 0.2182178944349289f * d * f67; + g22 += -0.0690065547823906f * d * f68; + g25 += -0.16903084516525269f * d * f69; + g24 += 0.23904572427272797f * d * f70; + g26 += -0.0690065547823906f * d * f70; + g25 += 0.2182178944349289f * d * f71; + g26 += 0.26726123690605164f * d * f72; + } + { const float d = D(ii, k, 225); + g31 += 0.26726123690605164f * d * f66; + g30 += 0.2182178944349289f * d * f67; + g29 += 0.23904572427272797f * d * f68; + g31 += 0.0690065547823906f * d * f68; + g28 += -0.16903084516525269f * d * f69; + g27 += -0.0690065547823906f * d * f70; + g28 += -0.2182178944349289f * d * f71; + g27 += -0.26726123690605164f * d * f72; + } + { const float d = D(ii, k, 226); + g27 += 0.2182178944349289f * d * f67; + g28 += 0.2760262191295624f * d * f68; + g29 += 0.29277002811431885f * d * f69; + g30 += 0.2760262191295624f * d * f70; + g31 += 0.2182178944349289f * d * f71; } - { const float d = D(ii, k, 2); - g2 += 1.0f * d * f0; - g0 += 1.0f * d * f2; + { const float d = D(ii, k, 227); + g27 += 0.26726123690605164f * d * f66; + g28 += 0.2182178944349289f * d * f67; + g27 += -0.0690065547823906f * d * f68; + g30 += -0.16903084516525269f * d * f69; + g29 += 0.23904572427272797f * d * f70; + g31 += -0.0690065547823906f * d * f70; + g30 += 0.2182178944349289f * d * f71; + g31 += 0.26726123690605164f * d * f72; } - { const float d = D(ii, k, 3); - g3 += 1.0f * d * f0; - g0 += 1.0f * d * f3; + { const float d = D(ii, k, 228); + g36 += 0.26726123690605164f * d * f66; + g35 += 0.2182178944349289f * d * f67; + g34 += 0.23904572427272797f * d * f68; + g36 += 0.0690065547823906f * d * f68; + g33 += -0.16903084516525269f * d * f69; + g32 += -0.0690065547823906f * d * f70; + g33 += -0.2182178944349289f * d * f71; + g32 += -0.26726123690605164f * d * f72; } - { const float d = D(ii, k, 4); - g4 += 1.0f * d * f0; - g0 += 1.0f * d * f4; + { const float d = D(ii, k, 229); + g32 += 0.2182178944349289f * d * f67; + g33 += 0.2760262191295624f * d * f68; + g34 += 0.29277002811431885f * d * f69; + g35 += 0.2760262191295624f * d * f70; + g36 += 0.2182178944349289f * d * f71; } - { const float d = D(ii, k, 5); - g8 += 0.3333333432674408f * d * f5; - g5 += 0.3333333432674408f * d * f8; - g9 += 0.3333333432674408f * d * f6; - g6 += 0.3333333432674408f * d * f9; - g10 += 0.3333333432674408f * d * f7; - g7 += 0.3333333432674408f * d * f10; + { const float d = D(ii, k, 230); + g32 += 0.26726123690605164f * d * f66; + g33 += 0.2182178944349289f * d * f67; + g32 += -0.0690065547823906f * d * f68; + g35 += -0.16903084516525269f * d * f69; + g34 += 0.23904572427272797f * d * f70; + g36 += -0.0690065547823906f * d * f70; + g35 += 0.2182178944349289f * d * f71; + g36 += 0.26726123690605164f * d * f72; } - { const float d = D(ii, k, 6); - g11 += 0.3333333432674408f * d * f5; - g5 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f6; - g6 += 0.3333333432674408f * d * f12; - g13 += 0.3333333432674408f * d * f7; - g7 += 0.3333333432674408f * d * f13; + { const float d = D(ii, k, 231); + g46 += 0.26726123690605164f * d * f66; + g45 += 0.2182178944349289f * d * f67; + g44 += 0.23904572427272797f * d * f68; + g46 += 0.0690065547823906f * d * f68; + g43 += -0.16903084516525269f * d * f69; + g42 += -0.0690065547823906f * d * f70; + g43 += -0.2182178944349289f * d * f71; + g42 += -0.26726123690605164f * d * f72; + } + { const float d = D(ii, k, 232); + g42 += 0.2182178944349289f * d * f67; + g43 += 0.2760262191295624f * d * f68; + g44 += 0.29277002811431885f * d * f69; + g45 += 0.2760262191295624f * d * f70; + g46 += 0.2182178944349289f * d * f71; + } + { const float d = D(ii, k, 233); + g42 += 0.26726123690605164f * d * f66; + g43 += 0.2182178944349289f * d * f67; + g42 += -0.0690065547823906f * d * f68; + g45 += -0.16903084516525269f * d * f69; + g44 += 0.23904572427272797f * d * f70; + g46 += -0.0690065547823906f * d * f70; + g45 += 0.2182178944349289f * d * f71; + g46 += 0.26726123690605164f * d * f72; + } + { const float d = D(ii, k, 234); + g47 += -0.0690065547823906f * d * f70; + g47 += -0.26726123690605164f * d * f72; + } + { const float d = D(ii, k, 235); + g47 += 0.2182178944349289f * d * f67; + } + { const float d = D(ii, k, 236); + g47 += 0.26726123690605164f * d * f66; + g47 += -0.0690065547823906f * d * f68; + } + { const float d = D(ii, k, 237); + g37 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f37; + g38 += 0.3872983455657959f * d * f6; + g6 += 0.3872983455657959f * d * f38; + g39 += -0.22360679507255554f * d * f5; + g5 += -0.22360679507255554f * d * f39; + g41 += -0.3872983455657959f * d * f5; + g5 += -0.3872983455657959f * d * f41; + } + { const float d = D(ii, k, 238); + g38 += 0.3872983455657959f * d * f5; + g5 += 0.3872983455657959f * d * f38; + g39 += 0.4472135901451111f * d * f6; + g6 += 0.4472135901451111f * d * f39; + g40 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f40; + } + { const float d = D(ii, k, 239); + g37 += 0.3872983455657959f * d * f5; + g5 += 0.3872983455657959f * d * f37; + g39 += -0.22360679507255554f * d * f7; + g7 += -0.22360679507255554f * d * f39; + g40 += 0.3872983455657959f * d * f6; + g6 += 0.3872983455657959f * d * f40; + g41 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f41; + } + { const float d = D(ii, k, 240); + g37 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f37; + g38 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f38; + g39 += -0.22360679507255554f * d * f8; + g8 += -0.22360679507255554f * d * f39; + g41 += -0.3872983455657959f * d * f8; + g8 += -0.3872983455657959f * d * f41; + } + { const float d = D(ii, k, 241); + g38 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f38; + g39 += 0.4472135901451111f * d * f9; + g9 += 0.4472135901451111f * d * f39; + g40 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f40; + } + { const float d = D(ii, k, 242); + g37 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f37; + g39 += -0.22360679507255554f * d * f10; + g10 += -0.22360679507255554f * d * f39; + g40 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f40; + g41 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f41; + } + { const float d = D(ii, k, 243); + g37 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f37; + g38 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f38; + g39 += -0.22360679507255554f * d * f11; + g11 += -0.22360679507255554f * d * f39; + g41 += -0.3872983455657959f * d * f11; + g11 += -0.3872983455657959f * d * f41; + } + { const float d = D(ii, k, 244); + g38 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f38; + g39 += 0.4472135901451111f * d * f12; + g12 += 0.4472135901451111f * d * f39; + g40 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f40; + } + { const float d = D(ii, k, 245); + g37 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f37; + g39 += -0.22360679507255554f * d * f13; + g13 += -0.22360679507255554f * d * f39; + g40 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f40; + g41 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f41; + } + { const float d = D(ii, k, 246); + g37 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f37; + g38 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f38; + g39 += -0.22360679507255554f * d * f14; + g14 += -0.22360679507255554f * d * f39; + g41 += -0.3872983455657959f * d * f14; + g14 += -0.3872983455657959f * d * f41; + } + { const float d = D(ii, k, 247); + g38 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f38; + g39 += 0.4472135901451111f * d * f15; + g15 += 0.4472135901451111f * d * f39; + g40 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f40; + } + { const float d = D(ii, k, 248); + g37 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f37; + g39 += -0.22360679507255554f * d * f16; + g16 += -0.22360679507255554f * d * f39; + g40 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f40; + g41 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f41; + } + { const float d = D(ii, k, 270); + g21 += 0.26726123690605164f * d * f73; + g20 += 0.2182178944349289f * d * f74; + g19 += 0.23904572427272797f * d * f75; + g21 += 0.0690065547823906f * d * f75; + g18 += -0.16903084516525269f * d * f76; + g17 += -0.0690065547823906f * d * f77; + g18 += -0.2182178944349289f * d * f78; + g17 += -0.26726123690605164f * d * f79; + } + { const float d = D(ii, k, 271); + g17 += 0.2182178944349289f * d * f74; + g18 += 0.2760262191295624f * d * f75; + g19 += 0.29277002811431885f * d * f76; + g20 += 0.2760262191295624f * d * f77; + g21 += 0.2182178944349289f * d * f78; + } + { const float d = D(ii, k, 272); + g17 += 0.26726123690605164f * d * f73; + g18 += 0.2182178944349289f * d * f74; + g17 += -0.0690065547823906f * d * f75; + g20 += -0.16903084516525269f * d * f76; + g19 += 0.23904572427272797f * d * f77; + g21 += -0.0690065547823906f * d * f77; + g20 += 0.2182178944349289f * d * f78; + g21 += 0.26726123690605164f * d * f79; + } + { const float d = D(ii, k, 273); + g31 += 0.26726123690605164f * d * f73; + g30 += 0.2182178944349289f * d * f74; + g29 += 0.23904572427272797f * d * f75; + g31 += 0.0690065547823906f * d * f75; + g28 += -0.16903084516525269f * d * f76; + g27 += -0.0690065547823906f * d * f77; + g28 += -0.2182178944349289f * d * f78; + g27 += -0.26726123690605164f * d * f79; } - { const float d = D(ii, k, 7); - g14 += 0.3333333432674408f * d * f5; - g5 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f6; - g6 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f7; - g7 += 0.3333333432674408f * d * f16; + { const float d = D(ii, k, 274); + g27 += 0.2182178944349289f * d * f74; + g28 += 0.2760262191295624f * d * f75; + g29 += 0.29277002811431885f * d * f76; + g30 += 0.2760262191295624f * d * f77; + g31 += 0.2182178944349289f * d * f78; } - { const float d = D(ii, k, 8); - g1 += 1.0f * d * f1; - g1 += 1.0f * d * f1; + { const float d = D(ii, k, 275); + g27 += 0.26726123690605164f * d * f73; + g28 += 0.2182178944349289f * d * f74; + g27 += -0.0690065547823906f * d * f75; + g30 += -0.16903084516525269f * d * f76; + g29 += 0.23904572427272797f * d * f77; + g31 += -0.0690065547823906f * d * f77; + g30 += 0.2182178944349289f * d * f78; + g31 += 0.26726123690605164f * d * f79; } - { const float d = D(ii, k, 9); - g2 += 1.0f * d * f1; - g1 += 1.0f * d * f2; + { const float d = D(ii, k, 276); + g36 += 0.26726123690605164f * d * f73; + g35 += 0.2182178944349289f * d * f74; + g34 += 0.23904572427272797f * d * f75; + g36 += 0.0690065547823906f * d * f75; + g33 += -0.16903084516525269f * d * f76; + g32 += -0.0690065547823906f * d * f77; + g33 += -0.2182178944349289f * d * f78; + g32 += -0.26726123690605164f * d * f79; } - { const float d = D(ii, k, 10); - g3 += 1.0f * d * f1; - g1 += 1.0f * d * f3; + { const float d = D(ii, k, 277); + g32 += 0.2182178944349289f * d * f74; + g33 += 0.2760262191295624f * d * f75; + g34 += 0.29277002811431885f * d * f76; + g35 += 0.2760262191295624f * d * f77; + g36 += 0.2182178944349289f * d * f78; } - { const float d = D(ii, k, 11); - g4 += 1.0f * d * f1; - g1 += 1.0f * d * f4; + { const float d = D(ii, k, 278); + g32 += 0.26726123690605164f * d * f73; + g33 += 0.2182178944349289f * d * f74; + g32 += -0.0690065547823906f * d * f75; + g35 += -0.16903084516525269f * d * f76; + g34 += 0.23904572427272797f * d * f77; + g36 += -0.0690065547823906f * d * f77; + g35 += 0.2182178944349289f * d * f78; + g36 += 0.26726123690605164f * d * f79; } - { const float d = D(ii, k, 12); - g27 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f27; - g28 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f28; - g29 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f29; - g30 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f30; - g31 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f31; + { const float d = D(ii, k, 279); + g41 += 0.26726123690605164f * d * f73; + g40 += 0.2182178944349289f * d * f74; + g39 += 0.23904572427272797f * d * f75; + g41 += 0.0690065547823906f * d * f75; + g38 += -0.16903084516525269f * d * f76; + g37 += -0.0690065547823906f * d * f77; + g38 += -0.2182178944349289f * d * f78; + g37 += -0.26726123690605164f * d * f79; } - { const float d = D(ii, k, 13); - g32 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f32; - g33 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f36; + { const float d = D(ii, k, 280); + g37 += 0.2182178944349289f * d * f74; + g38 += 0.2760262191295624f * d * f75; + g39 += 0.29277002811431885f * d * f76; + g40 += 0.2760262191295624f * d * f77; + g41 += 0.2182178944349289f * d * f78; } - { const float d = D(ii, k, 14); - g37 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f41; + { const float d = D(ii, k, 281); + g37 += 0.26726123690605164f * d * f73; + g38 += 0.2182178944349289f * d * f74; + g37 += -0.0690065547823906f * d * f75; + g40 += -0.16903084516525269f * d * f76; + g39 += 0.23904572427272797f * d * f77; + g41 += -0.0690065547823906f * d * f77; + g40 += 0.2182178944349289f * d * f78; + g41 += 0.26726123690605164f * d * f79; } - { const float d = D(ii, k, 15); - g42 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f46; + { const float d = D(ii, k, 282); + g46 += 0.26726123690605164f * d * f73; + g45 += 0.2182178944349289f * d * f74; + g44 += 0.23904572427272797f * d * f75; + g46 += 0.0690065547823906f * d * f75; + g43 += -0.16903084516525269f * d * f76; + g42 += -0.0690065547823906f * d * f77; + g43 += -0.2182178944349289f * d * f78; + g42 += -0.26726123690605164f * d * f79; } - { const float d = D(ii, k, 16); - g47 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f47; - g18 += 0.20000000298023224f * d * f48; - g19 += 0.20000000298023224f * d * f49; - g20 += 0.20000000298023224f * d * f50; - g21 += 0.20000000298023224f * d * f51; + { const float d = D(ii, k, 283); + g42 += 0.2182178944349289f * d * f74; + g43 += 0.2760262191295624f * d * f75; + g44 += 0.29277002811431885f * d * f76; + g45 += 0.2760262191295624f * d * f77; + g46 += 0.2182178944349289f * d * f78; } - { const float d = D(ii, k, 17); - g27 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f27; - g28 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f28; - g29 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f29; - g30 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f30; - g31 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f31; + { const float d = D(ii, k, 284); + g42 += 0.26726123690605164f * d * f73; + g43 += 0.2182178944349289f * d * f74; + g42 += -0.0690065547823906f * d * f75; + g45 += -0.16903084516525269f * d * f76; + g44 += 0.23904572427272797f * d * f77; + g46 += -0.0690065547823906f * d * f77; + g45 += 0.2182178944349289f * d * f78; + g46 += 0.26726123690605164f * d * f79; } - { const float d = D(ii, k, 18); - g37 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f41; + { const float d = D(ii, k, 285); + g47 += -0.0690065547823906f * d * f77; + g47 += -0.26726123690605164f * d * f79; } - { const float d = D(ii, k, 19); - g42 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f46; + { const float d = D(ii, k, 286); + g47 += 0.2182178944349289f * d * f74; } - { const float d = D(ii, k, 20); - g47 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f47; - g23 += 0.20000000298023224f * d * f48; - g24 += 0.20000000298023224f * d * f49; - g25 += 0.20000000298023224f * d * f50; - g26 += 0.20000000298023224f * d * f51; + { const float d = D(ii, k, 287); + g47 += 0.26726123690605164f * d * f73; + g47 += -0.0690065547823906f * d * f75; } - { const float d = D(ii, k, 21); - g8 += 0.3333333432674408f * d * f8; - g8 += 0.3333333432674408f * d * f8; - g9 += 0.3333333432674408f * d * f9; - g9 += 0.3333333432674408f * d * f9; - g10 += 0.3333333432674408f * d * f10; - g10 += 0.3333333432674408f * d * f10; + { const float d = D(ii, k, 288); + g42 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f42; + g43 += 0.3872983455657959f * d * f6; + g6 += 0.3872983455657959f * d * f43; + g44 += -0.22360679507255554f * d * f5; + g5 += -0.22360679507255554f * d * f44; + g46 += -0.3872983455657959f * d * f5; + g5 += -0.3872983455657959f * d * f46; } - { const float d = D(ii, k, 22); - g11 += 0.3333333432674408f * d * f8; - g8 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f9; - g9 += 0.3333333432674408f * d * f12; - g13 += 0.3333333432674408f * d * f10; - g10 += 0.3333333432674408f * d * f13; + { const float d = D(ii, k, 289); + g43 += 0.3872983455657959f * d * f5; + g5 += 0.3872983455657959f * d * f43; + g44 += 0.4472135901451111f * d * f6; + g6 += 0.4472135901451111f * d * f44; + g45 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f45; } - { const float d = D(ii, k, 23); - g14 += 0.3333333432674408f * d * f8; - g8 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f9; - g9 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f10; - g10 += 0.3333333432674408f * d * f16; + { const float d = D(ii, k, 290); + g42 += 0.3872983455657959f * d * f5; + g5 += 0.3872983455657959f * d * f42; + g44 += -0.22360679507255554f * d * f7; + g7 += -0.22360679507255554f * d * f44; + g45 += 0.3872983455657959f * d * f6; + g6 += 0.3872983455657959f * d * f45; + g46 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f46; + } + { const float d = D(ii, k, 291); + g42 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f42; + g43 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f43; + g44 += -0.22360679507255554f * d * f8; + g8 += -0.22360679507255554f * d * f44; + g46 += -0.3872983455657959f * d * f8; + g8 += -0.3872983455657959f * d * f46; } - { const float d = D(ii, k, 27); - g2 += 1.0f * d * f2; - g2 += 1.0f * d * f2; + { const float d = D(ii, k, 292); + g43 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f43; + g44 += 0.4472135901451111f * d * f9; + g9 += 0.4472135901451111f * d * f44; + g45 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f45; } - { const float d = D(ii, k, 28); - g3 += 1.0f * d * f2; - g2 += 1.0f * d * f3; + { const float d = D(ii, k, 293); + g42 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f42; + g44 += -0.22360679507255554f * d * f10; + g10 += -0.22360679507255554f * d * f44; + g45 += 0.3872983455657959f * d * f9; + g9 += 0.3872983455657959f * d * f45; + g46 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f46; } - { const float d = D(ii, k, 29); - g4 += 1.0f * d * f2; - g2 += 1.0f * d * f4; + { const float d = D(ii, k, 294); + g42 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f42; + g43 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f43; + g44 += -0.22360679507255554f * d * f11; + g11 += -0.22360679507255554f * d * f44; + g46 += -0.3872983455657959f * d * f11; + g11 += -0.3872983455657959f * d * f46; } - { const float d = D(ii, k, 30); - g32 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f32; - g33 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f36; + { const float d = D(ii, k, 295); + g43 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f43; + g44 += 0.4472135901451111f * d * f12; + g12 += 0.4472135901451111f * d * f44; + g45 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f45; } - { const float d = D(ii, k, 31); - g37 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f41; + { const float d = D(ii, k, 296); + g42 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f42; + g44 += -0.22360679507255554f * d * f13; + g13 += -0.22360679507255554f * d * f44; + g45 += 0.3872983455657959f * d * f12; + g12 += 0.3872983455657959f * d * f45; + g46 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f46; } - { const float d = D(ii, k, 32); - g42 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f46; + { const float d = D(ii, k, 297); + g42 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f42; + g43 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f43; + g44 += -0.22360679507255554f * d * f14; + g14 += -0.22360679507255554f * d * f44; + g46 += -0.3872983455657959f * d * f14; + g14 += -0.3872983455657959f * d * f46; } - { const float d = D(ii, k, 33); - g47 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f47; - g28 += 0.20000000298023224f * d * f48; - g29 += 0.20000000298023224f * d * f49; - g30 += 0.20000000298023224f * d * f50; - g31 += 0.20000000298023224f * d * f51; + { const float d = D(ii, k, 298); + g43 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f43; + g44 += 0.4472135901451111f * d * f15; + g15 += 0.4472135901451111f * d * f44; + g45 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f45; } - { const float d = D(ii, k, 38); - g32 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f32; - g33 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f36; + { const float d = D(ii, k, 299); + g42 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f42; + g44 += -0.22360679507255554f * d * f16; + g16 += -0.22360679507255554f * d * f44; + g45 += 0.3872983455657959f * d * f15; + g15 += 0.3872983455657959f * d * f45; + g46 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f46; } - { const float d = D(ii, k, 39); - g37 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f41; + { const float d = D(ii, k, 315); + g14 += 1.0f * d * f0; + g0 += 1.0f * d * f14; } - { const float d = D(ii, k, 40); - g42 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f46; + { const float d = D(ii, k, 316); + g15 += 1.0f * d * f0; + g0 += 1.0f * d * f15; } - { const float d = D(ii, k, 41); - g47 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f47; - g33 += 0.20000000298023224f * d * f48; - g34 += 0.20000000298023224f * d * f49; - g35 += 0.20000000298023224f * d * f50; - g36 += 0.20000000298023224f * d * f51; + { const float d = D(ii, k, 317); + g16 += 1.0f * d * f0; + g0 += 1.0f * d * f16; } - { const float d = D(ii, k, 45); - g11 += 0.3333333432674408f * d * f11; - g11 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f12; - g12 += 0.3333333432674408f * d * f12; - g13 += 0.3333333432674408f * d * f13; - g13 += 0.3333333432674408f * d * f13; + { const float d = D(ii, k, 318); + g14 += 1.0f * d * f1; + g1 += 1.0f * d * f14; } - { const float d = D(ii, k, 46); - g14 += 0.3333333432674408f * d * f11; - g11 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f12; - g12 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f13; - g13 += 0.3333333432674408f * d * f16; + { const float d = D(ii, k, 319); + g15 += 1.0f * d * f1; + g1 += 1.0f * d * f15; } - { const float d = D(ii, k, 50); - g3 += 1.0f * d * f3; - g3 += 1.0f * d * f3; + { const float d = D(ii, k, 320); + g16 += 1.0f * d * f1; + g1 += 1.0f * d * f16; } - { const float d = D(ii, k, 51); - g4 += 1.0f * d * f3; - g3 += 1.0f * d * f4; + { const float d = D(ii, k, 321); + g14 += 1.0f * d * f2; + g2 += 1.0f * d * f14; } - { const float d = D(ii, k, 52); - g37 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f38; - g38 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f39; - g39 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f40; - g40 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f41; - g41 += 0.20000000298023224f * d * f41; + { const float d = D(ii, k, 322); + g15 += 1.0f * d * f2; + g2 += 1.0f * d * f15; } - { const float d = D(ii, k, 53); - g42 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f38; - g38 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f39; - g39 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f40; - g40 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f41; - g41 += 0.20000000298023224f * d * f46; + { const float d = D(ii, k, 323); + g16 += 1.0f * d * f2; + g2 += 1.0f * d * f16; } - { const float d = D(ii, k, 54); - g47 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f47; - g38 += 0.20000000298023224f * d * f48; - g39 += 0.20000000298023224f * d * f49; - g40 += 0.20000000298023224f * d * f50; - g41 += 0.20000000298023224f * d * f51; + { const float d = D(ii, k, 324); + g14 += 1.0f * d * f3; + g3 += 1.0f * d * f14; } - { const float d = D(ii, k, 61); - g42 += 0.20000000298023224f * d * f42; - g42 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f43; - g43 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f44; - g44 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f45; - g45 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f46; - g46 += 0.20000000298023224f * d * f46; + { const float d = D(ii, k, 325); + g15 += 1.0f * d * f3; + g3 += 1.0f * d * f15; + } + { const float d = D(ii, k, 326); + g16 += 1.0f * d * f3; + g3 += 1.0f * d * f16; } - { const float d = D(ii, k, 62); - g47 += 0.20000000298023224f * d * f42; - g42 += 0.20000000298023224f * d * f47; - g43 += 0.20000000298023224f * d * f48; - g44 += 0.20000000298023224f * d * f49; - g45 += 0.20000000298023224f * d * f50; - g46 += 0.20000000298023224f * d * f51; + { const float d = D(ii, k, 327); + g14 += 1.0f * d * f4; + g4 += 1.0f * d * f14; } - { const float d = D(ii, k, 64); - g14 += 0.3333333432674408f * d * f14; - g14 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f15; - g15 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f16; - g16 += 0.3333333432674408f * d * f16; + { const float d = D(ii, k, 328); + g15 += 1.0f * d * f4; + g4 += 1.0f * d * f15; } - { const float d = D(ii, k, 66); - g4 += 1.0f * d * f4; - g4 += 1.0f * d * f4; + { const float d = D(ii, k, 329); + g16 += 1.0f * d * f4; + g4 += 1.0f * d * f16; } - { const float d = D(ii, k, 67); - g47 += 0.20000000298023224f * d * f47; - g47 += 0.20000000298023224f * d * f47; + { const float d = D(ii, k, 330); + g21 += 0.26726123690605164f * d * f80; + g20 += 0.2182178944349289f * d * f81; + g19 += 0.23904572427272797f * d * f82; + g21 += 0.0690065547823906f * d * f82; + g18 += -0.16903084516525269f * d * f83; + g17 += -0.0690065547823906f * d * f84; + g18 += -0.2182178944349289f * d * f85; + g17 += -0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 69); - g5 += 1.0f * d * f0; - g0 += 1.0f * d * f5; + { const float d = D(ii, k, 331); + g17 += 0.2182178944349289f * d * f81; + g18 += 0.2760262191295624f * d * f82; + g19 += 0.29277002811431885f * d * f83; + g20 += 0.2760262191295624f * d * f84; + g21 += 0.2182178944349289f * d * f85; } - { const float d = D(ii, k, 70); - g6 += 1.0f * d * f0; - g0 += 1.0f * d * f6; + { const float d = D(ii, k, 332); + g17 += 0.26726123690605164f * d * f80; + g18 += 0.2182178944349289f * d * f81; + g17 += -0.0690065547823906f * d * f82; + g20 += -0.16903084516525269f * d * f83; + g19 += 0.23904572427272797f * d * f84; + g21 += -0.0690065547823906f * d * f84; + g20 += 0.2182178944349289f * d * f85; + g21 += 0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 71); - g7 += 1.0f * d * f0; - g0 += 1.0f * d * f7; + { const float d = D(ii, k, 333); + g26 += 0.26726123690605164f * d * f80; + g25 += 0.2182178944349289f * d * f81; + g24 += 0.23904572427272797f * d * f82; + g26 += 0.0690065547823906f * d * f82; + g23 += -0.16903084516525269f * d * f83; + g22 += -0.0690065547823906f * d * f84; + g23 += -0.2182178944349289f * d * f85; + g22 += -0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 72); - g5 += 1.0f * d * f1; - g1 += 1.0f * d * f5; + { const float d = D(ii, k, 334); + g22 += 0.2182178944349289f * d * f81; + g23 += 0.2760262191295624f * d * f82; + g24 += 0.29277002811431885f * d * f83; + g25 += 0.2760262191295624f * d * f84; + g26 += 0.2182178944349289f * d * f85; } - { const float d = D(ii, k, 73); - g6 += 1.0f * d * f1; - g1 += 1.0f * d * f6; + { const float d = D(ii, k, 335); + g22 += 0.26726123690605164f * d * f80; + g23 += 0.2182178944349289f * d * f81; + g22 += -0.0690065547823906f * d * f82; + g25 += -0.16903084516525269f * d * f83; + g24 += 0.23904572427272797f * d * f84; + g26 += -0.0690065547823906f * d * f84; + g25 += 0.2182178944349289f * d * f85; + g26 += 0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 74); - g7 += 1.0f * d * f1; - g1 += 1.0f * d * f7; + { const float d = D(ii, k, 336); + g31 += 0.26726123690605164f * d * f80; + g30 += 0.2182178944349289f * d * f81; + g29 += 0.23904572427272797f * d * f82; + g31 += 0.0690065547823906f * d * f82; + g28 += -0.16903084516525269f * d * f83; + g27 += -0.0690065547823906f * d * f84; + g28 += -0.2182178944349289f * d * f85; + g27 += -0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 75); - g5 += 1.0f * d * f2; - g2 += 1.0f * d * f5; + { const float d = D(ii, k, 337); + g27 += 0.2182178944349289f * d * f81; + g28 += 0.2760262191295624f * d * f82; + g29 += 0.29277002811431885f * d * f83; + g30 += 0.2760262191295624f * d * f84; + g31 += 0.2182178944349289f * d * f85; } - { const float d = D(ii, k, 76); - g6 += 1.0f * d * f2; - g2 += 1.0f * d * f6; + { const float d = D(ii, k, 338); + g27 += 0.26726123690605164f * d * f80; + g28 += 0.2182178944349289f * d * f81; + g27 += -0.0690065547823906f * d * f82; + g30 += -0.16903084516525269f * d * f83; + g29 += 0.23904572427272797f * d * f84; + g31 += -0.0690065547823906f * d * f84; + g30 += 0.2182178944349289f * d * f85; + g31 += 0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 77); - g7 += 1.0f * d * f2; - g2 += 1.0f * d * f7; + { const float d = D(ii, k, 339); + g36 += 0.26726123690605164f * d * f80; + g35 += 0.2182178944349289f * d * f81; + g34 += 0.23904572427272797f * d * f82; + g36 += 0.0690065547823906f * d * f82; + g33 += -0.16903084516525269f * d * f83; + g32 += -0.0690065547823906f * d * f84; + g33 += -0.2182178944349289f * d * f85; + g32 += -0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 78); - g5 += 1.0f * d * f3; - g3 += 1.0f * d * f5; + { const float d = D(ii, k, 340); + g32 += 0.2182178944349289f * d * f81; + g33 += 0.2760262191295624f * d * f82; + g34 += 0.29277002811431885f * d * f83; + g35 += 0.2760262191295624f * d * f84; + g36 += 0.2182178944349289f * d * f85; } - { const float d = D(ii, k, 79); - g6 += 1.0f * d * f3; - g3 += 1.0f * d * f6; + { const float d = D(ii, k, 341); + g32 += 0.26726123690605164f * d * f80; + g33 += 0.2182178944349289f * d * f81; + g32 += -0.0690065547823906f * d * f82; + g35 += -0.16903084516525269f * d * f83; + g34 += 0.23904572427272797f * d * f84; + g36 += -0.0690065547823906f * d * f84; + g35 += 0.2182178944349289f * d * f85; + g36 += 0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 80); - g7 += 1.0f * d * f3; - g3 += 1.0f * d * f7; + { const float d = D(ii, k, 342); + g41 += 0.26726123690605164f * d * f80; + g40 += 0.2182178944349289f * d * f81; + g39 += 0.23904572427272797f * d * f82; + g41 += 0.0690065547823906f * d * f82; + g38 += -0.16903084516525269f * d * f83; + g37 += -0.0690065547823906f * d * f84; + g38 += -0.2182178944349289f * d * f85; + g37 += -0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 81); - g5 += 1.0f * d * f4; - g4 += 1.0f * d * f5; + { const float d = D(ii, k, 343); + g37 += 0.2182178944349289f * d * f81; + g38 += 0.2760262191295624f * d * f82; + g39 += 0.29277002811431885f * d * f83; + g40 += 0.2760262191295624f * d * f84; + g41 += 0.2182178944349289f * d * f85; } - { const float d = D(ii, k, 82); - g6 += 1.0f * d * f4; - g4 += 1.0f * d * f6; + { const float d = D(ii, k, 344); + g37 += 0.26726123690605164f * d * f80; + g38 += 0.2182178944349289f * d * f81; + g37 += -0.0690065547823906f * d * f82; + g40 += -0.16903084516525269f * d * f83; + g39 += 0.23904572427272797f * d * f84; + g41 += -0.0690065547823906f * d * f84; + g40 += 0.2182178944349289f * d * f85; + g41 += 0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 83); - g7 += 1.0f * d * f4; - g4 += 1.0f * d * f7; + { const float d = D(ii, k, 345); + g46 += 0.26726123690605164f * d * f80; + g45 += 0.2182178944349289f * d * f81; + g44 += 0.23904572427272797f * d * f82; + g46 += 0.0690065547823906f * d * f82; + g43 += -0.16903084516525269f * d * f83; + g42 += -0.0690065547823906f * d * f84; + g43 += -0.2182178944349289f * d * f85; + g42 += -0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 84); - g17 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f17; - g18 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f18; - g19 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f19; - g21 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f21; + { const float d = D(ii, k, 346); + g42 += 0.2182178944349289f * d * f81; + g43 += 0.2760262191295624f * d * f82; + g44 += 0.29277002811431885f * d * f83; + g45 += 0.2760262191295624f * d * f84; + g46 += 0.2182178944349289f * d * f85; } - { const float d = D(ii, k, 85); - g18 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f18; - g19 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f19; - g20 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f20; + { const float d = D(ii, k, 347); + g42 += 0.26726123690605164f * d * f80; + g43 += 0.2182178944349289f * d * f81; + g42 += -0.0690065547823906f * d * f82; + g45 += -0.16903084516525269f * d * f83; + g44 += 0.23904572427272797f * d * f84; + g46 += -0.0690065547823906f * d * f84; + g45 += 0.2182178944349289f * d * f85; + g46 += 0.26726123690605164f * d * f86; } - { const float d = D(ii, k, 86); - g17 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f17; - g19 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f19; - g20 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f20; - g21 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f21; + { const float d = D(ii, k, 348); + g47 += -0.0690065547823906f * d * f84; + g47 += -0.26726123690605164f * d * f86; + } + { const float d = D(ii, k, 349); + g47 += 0.2182178944349289f * d * f81; + } + { const float d = D(ii, k, 350); + g47 += 0.26726123690605164f * d * f80; + g47 += -0.0690065547823906f * d * f82; + } + { const float d = D(ii, k, 351); + g47 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f47; + g6 += 0.3872983455657959f * d * f48; + g5 += -0.22360679507255554f * d * f49; + g5 += -0.3872983455657959f * d * f51; } - { const float d = D(ii, k, 87); - g17 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f17; - g18 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f18; - g19 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f19; - g21 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f21; + { const float d = D(ii, k, 352); + g5 += 0.3872983455657959f * d * f48; + g6 += 0.4472135901451111f * d * f49; + g7 += 0.3872983455657959f * d * f50; } - { const float d = D(ii, k, 88); - g18 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f18; - g19 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f19; - g20 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f20; + { const float d = D(ii, k, 353); + g47 += 0.3872983455657959f * d * f5; + g5 += 0.3872983455657959f * d * f47; + g7 += -0.22360679507255554f * d * f49; + g6 += 0.3872983455657959f * d * f50; + g7 += 0.3872983455657959f * d * f51; } - { const float d = D(ii, k, 89); - g17 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f17; - g19 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f19; - g20 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f20; - g21 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f21; + { const float d = D(ii, k, 354); + g47 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f47; + g9 += 0.3872983455657959f * d * f48; + g8 += -0.22360679507255554f * d * f49; + g8 += -0.3872983455657959f * d * f51; } - { const float d = D(ii, k, 90); - g17 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f17; - g18 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f18; - g19 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f19; - g21 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f21; + { const float d = D(ii, k, 355); + g8 += 0.3872983455657959f * d * f48; + g9 += 0.4472135901451111f * d * f49; + g10 += 0.3872983455657959f * d * f50; } - { const float d = D(ii, k, 91); - g18 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f18; - g19 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f19; - g20 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f20; + { const float d = D(ii, k, 356); + g47 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f47; + g10 += -0.22360679507255554f * d * f49; + g9 += 0.3872983455657959f * d * f50; + g10 += 0.3872983455657959f * d * f51; } - { const float d = D(ii, k, 92); - g17 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f17; - g19 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f19; - g20 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f20; - g21 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f21; + { const float d = D(ii, k, 357); + g47 += 0.3872983455657959f * d * f13; + g13 += 0.3872983455657959f * d * f47; + g12 += 0.3872983455657959f * d * f48; + g11 += -0.22360679507255554f * d * f49; + g11 += -0.3872983455657959f * d * f51; } - { const float d = D(ii, k, 93); - g22 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f22; - g23 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f23; - g24 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f24; - g26 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f26; + { const float d = D(ii, k, 358); + g11 += 0.3872983455657959f * d * f48; + g12 += 0.4472135901451111f * d * f49; + g13 += 0.3872983455657959f * d * f50; } - { const float d = D(ii, k, 94); - g23 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f23; - g24 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f24; - g25 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f25; + { const float d = D(ii, k, 359); + g47 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f47; + g13 += -0.22360679507255554f * d * f49; + g12 += 0.3872983455657959f * d * f50; + g13 += 0.3872983455657959f * d * f51; } - { const float d = D(ii, k, 95); - g22 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f22; - g24 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f24; - g25 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f25; - g26 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f26; + { const float d = D(ii, k, 360); + g47 += 0.3872983455657959f * d * f16; + g16 += 0.3872983455657959f * d * f47; + g15 += 0.3872983455657959f * d * f48; + g14 += -0.22360679507255554f * d * f49; + g14 += -0.3872983455657959f * d * f51; } - { const float d = D(ii, k, 96); - g22 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f22; - g23 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f23; - g24 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f24; - g26 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f26; + { const float d = D(ii, k, 361); + g14 += 0.3872983455657959f * d * f48; + g15 += 0.4472135901451111f * d * f49; + g16 += 0.3872983455657959f * d * f50; } - { const float d = D(ii, k, 97); - g23 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f23; - g24 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f24; - g25 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f25; + { const float d = D(ii, k, 362); + g47 += 0.3872983455657959f * d * f14; + g14 += 0.3872983455657959f * d * f47; + g16 += -0.22360679507255554f * d * f49; + g15 += 0.3872983455657959f * d * f50; + g16 += 0.3872983455657959f * d * f51; } - { const float d = D(ii, k, 98); - g22 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f22; - g24 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f24; - g25 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f25; - g26 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f26; + if constexpr (ACC) { + dF(ii, k, 0) += g0; + dF(ii, k, 1) += g1; + dF(ii, k, 2) += g2; + dF(ii, k, 3) += g3; + dF(ii, k, 4) += g4; + dF(ii, k, 5) += g5; + dF(ii, k, 6) += g6; + dF(ii, k, 7) += g7; + dF(ii, k, 8) += g8; + dF(ii, k, 9) += g9; + dF(ii, k, 10) += g10; + dF(ii, k, 11) += g11; + dF(ii, k, 12) += g12; + dF(ii, k, 13) += g13; + dF(ii, k, 14) += g14; + dF(ii, k, 15) += g15; + dF(ii, k, 16) += g16; + dF(ii, k, 17) += g17; + dF(ii, k, 18) += g18; + dF(ii, k, 19) += g19; + dF(ii, k, 20) += g20; + dF(ii, k, 21) += g21; + dF(ii, k, 22) += g22; + dF(ii, k, 23) += g23; + dF(ii, k, 24) += g24; + dF(ii, k, 25) += g25; + dF(ii, k, 26) += g26; + dF(ii, k, 27) += g27; + dF(ii, k, 28) += g28; + dF(ii, k, 29) += g29; + dF(ii, k, 30) += g30; + dF(ii, k, 31) += g31; + dF(ii, k, 32) += g32; + dF(ii, k, 33) += g33; + dF(ii, k, 34) += g34; + dF(ii, k, 35) += g35; + dF(ii, k, 36) += g36; + dF(ii, k, 37) += g37; + dF(ii, k, 38) += g38; + dF(ii, k, 39) += g39; + dF(ii, k, 40) += g40; + dF(ii, k, 41) += g41; + dF(ii, k, 42) += g42; + dF(ii, k, 43) += g43; + dF(ii, k, 44) += g44; + dF(ii, k, 45) += g45; + dF(ii, k, 46) += g46; + dF(ii, k, 47) += g47; + } else { + dF(ii, k, 0) = g0; + dF(ii, k, 1) = g1; + dF(ii, k, 2) = g2; + dF(ii, k, 3) = g3; + dF(ii, k, 4) = g4; + dF(ii, k, 5) = g5; + dF(ii, k, 6) = g6; + dF(ii, k, 7) = g7; + dF(ii, k, 8) = g8; + dF(ii, k, 9) = g9; + dF(ii, k, 10) = g10; + dF(ii, k, 11) = g11; + dF(ii, k, 12) = g12; + dF(ii, k, 13) = g13; + dF(ii, k, 14) = g14; + dF(ii, k, 15) = g15; + dF(ii, k, 16) = g16; + dF(ii, k, 17) = g17; + dF(ii, k, 18) = g18; + dF(ii, k, 19) = g19; + dF(ii, k, 20) = g20; + dF(ii, k, 21) = g21; + dF(ii, k, 22) = g22; + dF(ii, k, 23) = g23; + dF(ii, k, 24) = g24; + dF(ii, k, 25) = g25; + dF(ii, k, 26) = g26; + dF(ii, k, 27) = g27; + dF(ii, k, 28) = g28; + dF(ii, k, 29) = g29; + dF(ii, k, 30) = g30; + dF(ii, k, 31) = g31; + dF(ii, k, 32) = g32; + dF(ii, k, 33) = g33; + dF(ii, k, 34) = g34; + dF(ii, k, 35) = g35; + dF(ii, k, 36) = g36; + dF(ii, k, 37) = g37; + dF(ii, k, 38) = g38; + dF(ii, k, 39) = g39; + dF(ii, k, 40) = g40; + dF(ii, k, 41) = g41; + dF(ii, k, 42) = g42; + dF(ii, k, 43) = g43; + dF(ii, k, 44) = g44; + dF(ii, k, 45) = g45; + dF(ii, k, 46) = g46; + dF(ii, k, 47) = g47; } - { const float d = D(ii, k, 99); - g22 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f22; - g23 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f23; - g24 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f24; - g26 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f26; + } + { + float g48 = 0.0f; + float g49 = 0.0f; + float g50 = 0.0f; + float g51 = 0.0f; + float g52 = 0.0f; + float g53 = 0.0f; + float g54 = 0.0f; + float g55 = 0.0f; + float g56 = 0.0f; + float g57 = 0.0f; + float g58 = 0.0f; + float g59 = 0.0f; + float g60 = 0.0f; + float g61 = 0.0f; + float g62 = 0.0f; + float g63 = 0.0f; + float g64 = 0.0f; + float g65 = 0.0f; + float g66 = 0.0f; + float g67 = 0.0f; + float g68 = 0.0f; + float g69 = 0.0f; + float g70 = 0.0f; + float g71 = 0.0f; + float g72 = 0.0f; + float g73 = 0.0f; + float g74 = 0.0f; + float g75 = 0.0f; + float g76 = 0.0f; + float g77 = 0.0f; + float g78 = 0.0f; + float g79 = 0.0f; + float g80 = 0.0f; + float g81 = 0.0f; + float g82 = 0.0f; + float g83 = 0.0f; + float g84 = 0.0f; + float g85 = 0.0f; + float g86 = 0.0f; + float g87 = 0.0f; + float g88 = 0.0f; + float g89 = 0.0f; + float g90 = 0.0f; + float g91 = 0.0f; + float g92 = 0.0f; + float g93 = 0.0f; + float g94 = 0.0f; + float g95 = 0.0f; + { const float d = D(ii, k, 16); + g48 += 0.20000000298023224f * d * f18; + g49 += 0.20000000298023224f * d * f19; + g50 += 0.20000000298023224f * d * f20; + g51 += 0.20000000298023224f * d * f21; } - { const float d = D(ii, k, 100); - g23 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f23; - g24 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f24; - g25 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f25; + { const float d = D(ii, k, 20); + g48 += 0.20000000298023224f * d * f23; + g49 += 0.20000000298023224f * d * f24; + g50 += 0.20000000298023224f * d * f25; + g51 += 0.20000000298023224f * d * f26; } - { const float d = D(ii, k, 101); - g22 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f22; - g24 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f24; - g25 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f25; - g26 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f26; + { const float d = D(ii, k, 24); + g52 += 0.1428571492433548f * d * f52; + g52 += 0.1428571492433548f * d * f52; + g53 += 0.1428571492433548f * d * f53; + g53 += 0.1428571492433548f * d * f53; + g54 += 0.1428571492433548f * d * f54; + g54 += 0.1428571492433548f * d * f54; + g55 += 0.1428571492433548f * d * f55; + g55 += 0.1428571492433548f * d * f55; + g56 += 0.1428571492433548f * d * f56; + g56 += 0.1428571492433548f * d * f56; + g57 += 0.1428571492433548f * d * f57; + g57 += 0.1428571492433548f * d * f57; + g58 += 0.1428571492433548f * d * f58; + g58 += 0.1428571492433548f * d * f58; } - { const float d = D(ii, k, 102); - g8 += 1.0f * d * f0; - g0 += 1.0f * d * f8; + { const float d = D(ii, k, 25); + g66 += 0.1428571492433548f * d * f52; + g52 += 0.1428571492433548f * d * f66; + g67 += 0.1428571492433548f * d * f53; + g53 += 0.1428571492433548f * d * f67; + g68 += 0.1428571492433548f * d * f54; + g54 += 0.1428571492433548f * d * f68; + g69 += 0.1428571492433548f * d * f55; + g55 += 0.1428571492433548f * d * f69; + g70 += 0.1428571492433548f * d * f56; + g56 += 0.1428571492433548f * d * f70; + g71 += 0.1428571492433548f * d * f57; + g57 += 0.1428571492433548f * d * f71; + g72 += 0.1428571492433548f * d * f58; + g58 += 0.1428571492433548f * d * f72; } - { const float d = D(ii, k, 103); - g9 += 1.0f * d * f0; - g0 += 1.0f * d * f9; + { const float d = D(ii, k, 26); + g80 += 0.1428571492433548f * d * f52; + g52 += 0.1428571492433548f * d * f80; + g81 += 0.1428571492433548f * d * f53; + g53 += 0.1428571492433548f * d * f81; + g82 += 0.1428571492433548f * d * f54; + g54 += 0.1428571492433548f * d * f82; + g83 += 0.1428571492433548f * d * f55; + g55 += 0.1428571492433548f * d * f83; + g84 += 0.1428571492433548f * d * f56; + g56 += 0.1428571492433548f * d * f84; + g85 += 0.1428571492433548f * d * f57; + g57 += 0.1428571492433548f * d * f85; + g86 += 0.1428571492433548f * d * f58; + g58 += 0.1428571492433548f * d * f86; } - { const float d = D(ii, k, 104); - g10 += 1.0f * d * f0; - g0 += 1.0f * d * f10; + { const float d = D(ii, k, 33); + g48 += 0.20000000298023224f * d * f28; + g49 += 0.20000000298023224f * d * f29; + g50 += 0.20000000298023224f * d * f30; + g51 += 0.20000000298023224f * d * f31; } - { const float d = D(ii, k, 105); - g8 += 1.0f * d * f1; - g1 += 1.0f * d * f8; + { const float d = D(ii, k, 34); + g87 += 0.1111111119389534f * d * f96; + g88 += 0.1111111119389534f * d * f97; + g89 += 0.1111111119389534f * d * f98; + g90 += 0.1111111119389534f * d * f99; + g91 += 0.1111111119389534f * d * f100; + g92 += 0.1111111119389534f * d * f101; + g93 += 0.1111111119389534f * d * f102; + g94 += 0.1111111119389534f * d * f103; + g95 += 0.1111111119389534f * d * f104; } - { const float d = D(ii, k, 106); - g9 += 1.0f * d * f1; - g1 += 1.0f * d * f9; + { const float d = D(ii, k, 35); + g87 += 0.1111111119389534f * d * f105; + g88 += 0.1111111119389534f * d * f106; + g89 += 0.1111111119389534f * d * f107; + g90 += 0.1111111119389534f * d * f108; + g91 += 0.1111111119389534f * d * f109; + g92 += 0.1111111119389534f * d * f110; + g93 += 0.1111111119389534f * d * f111; + g94 += 0.1111111119389534f * d * f112; + g95 += 0.1111111119389534f * d * f113; } - { const float d = D(ii, k, 107); - g10 += 1.0f * d * f1; - g1 += 1.0f * d * f10; + { const float d = D(ii, k, 36); + g87 += 0.1111111119389534f * d * f132; + g88 += 0.1111111119389534f * d * f133; + g89 += 0.1111111119389534f * d * f134; + g90 += 0.1111111119389534f * d * f135; + g91 += 0.1111111119389534f * d * f136; + g92 += 0.1111111119389534f * d * f137; + g93 += 0.1111111119389534f * d * f138; + g94 += 0.1111111119389534f * d * f139; + g95 += 0.1111111119389534f * d * f140; } - { const float d = D(ii, k, 108); - g8 += 1.0f * d * f2; - g2 += 1.0f * d * f8; + { const float d = D(ii, k, 37); + g80 += 0.1428571492433548f * d * f59; + g59 += 0.1428571492433548f * d * f80; + g81 += 0.1428571492433548f * d * f60; + g60 += 0.1428571492433548f * d * f81; + g82 += 0.1428571492433548f * d * f61; + g61 += 0.1428571492433548f * d * f82; + g83 += 0.1428571492433548f * d * f62; + g62 += 0.1428571492433548f * d * f83; + g84 += 0.1428571492433548f * d * f63; + g63 += 0.1428571492433548f * d * f84; + g85 += 0.1428571492433548f * d * f64; + g64 += 0.1428571492433548f * d * f85; + g86 += 0.1428571492433548f * d * f65; + g65 += 0.1428571492433548f * d * f86; } - { const float d = D(ii, k, 109); - g9 += 1.0f * d * f2; - g2 += 1.0f * d * f9; + { const float d = D(ii, k, 41); + g48 += 0.20000000298023224f * d * f33; + g49 += 0.20000000298023224f * d * f34; + g50 += 0.20000000298023224f * d * f35; + g51 += 0.20000000298023224f * d * f36; } - { const float d = D(ii, k, 110); - g10 += 1.0f * d * f2; - g2 += 1.0f * d * f10; + { const float d = D(ii, k, 47); + g66 += 0.1428571492433548f * d * f66; + g66 += 0.1428571492433548f * d * f66; + g67 += 0.1428571492433548f * d * f67; + g67 += 0.1428571492433548f * d * f67; + g68 += 0.1428571492433548f * d * f68; + g68 += 0.1428571492433548f * d * f68; + g69 += 0.1428571492433548f * d * f69; + g69 += 0.1428571492433548f * d * f69; + g70 += 0.1428571492433548f * d * f70; + g70 += 0.1428571492433548f * d * f70; + g71 += 0.1428571492433548f * d * f71; + g71 += 0.1428571492433548f * d * f71; + g72 += 0.1428571492433548f * d * f72; + g72 += 0.1428571492433548f * d * f72; } - { const float d = D(ii, k, 111); - g8 += 1.0f * d * f3; - g3 += 1.0f * d * f8; + { const float d = D(ii, k, 48); + g73 += 0.1428571492433548f * d * f66; + g66 += 0.1428571492433548f * d * f73; + g74 += 0.1428571492433548f * d * f67; + g67 += 0.1428571492433548f * d * f74; + g75 += 0.1428571492433548f * d * f68; + g68 += 0.1428571492433548f * d * f75; + g76 += 0.1428571492433548f * d * f69; + g69 += 0.1428571492433548f * d * f76; + g77 += 0.1428571492433548f * d * f70; + g70 += 0.1428571492433548f * d * f77; + g78 += 0.1428571492433548f * d * f71; + g71 += 0.1428571492433548f * d * f78; + g79 += 0.1428571492433548f * d * f72; + g72 += 0.1428571492433548f * d * f79; } - { const float d = D(ii, k, 112); - g9 += 1.0f * d * f3; - g3 += 1.0f * d * f9; + { const float d = D(ii, k, 49); + g80 += 0.1428571492433548f * d * f66; + g66 += 0.1428571492433548f * d * f80; + g81 += 0.1428571492433548f * d * f67; + g67 += 0.1428571492433548f * d * f81; + g82 += 0.1428571492433548f * d * f68; + g68 += 0.1428571492433548f * d * f82; + g83 += 0.1428571492433548f * d * f69; + g69 += 0.1428571492433548f * d * f83; + g84 += 0.1428571492433548f * d * f70; + g70 += 0.1428571492433548f * d * f84; + g85 += 0.1428571492433548f * d * f71; + g71 += 0.1428571492433548f * d * f85; + g86 += 0.1428571492433548f * d * f72; + g72 += 0.1428571492433548f * d * f86; } - { const float d = D(ii, k, 113); - g10 += 1.0f * d * f3; - g3 += 1.0f * d * f10; + { const float d = D(ii, k, 54); + g48 += 0.20000000298023224f * d * f38; + g49 += 0.20000000298023224f * d * f39; + g50 += 0.20000000298023224f * d * f40; + g51 += 0.20000000298023224f * d * f41; } - { const float d = D(ii, k, 114); - g8 += 1.0f * d * f4; - g4 += 1.0f * d * f8; + { const float d = D(ii, k, 59); + g73 += 0.1428571492433548f * d * f73; + g73 += 0.1428571492433548f * d * f73; + g74 += 0.1428571492433548f * d * f74; + g74 += 0.1428571492433548f * d * f74; + g75 += 0.1428571492433548f * d * f75; + g75 += 0.1428571492433548f * d * f75; + g76 += 0.1428571492433548f * d * f76; + g76 += 0.1428571492433548f * d * f76; + g77 += 0.1428571492433548f * d * f77; + g77 += 0.1428571492433548f * d * f77; + g78 += 0.1428571492433548f * d * f78; + g78 += 0.1428571492433548f * d * f78; + g79 += 0.1428571492433548f * d * f79; + g79 += 0.1428571492433548f * d * f79; } - { const float d = D(ii, k, 115); - g9 += 1.0f * d * f4; - g4 += 1.0f * d * f9; + { const float d = D(ii, k, 60); + g80 += 0.1428571492433548f * d * f73; + g73 += 0.1428571492433548f * d * f80; + g81 += 0.1428571492433548f * d * f74; + g74 += 0.1428571492433548f * d * f81; + g82 += 0.1428571492433548f * d * f75; + g75 += 0.1428571492433548f * d * f82; + g83 += 0.1428571492433548f * d * f76; + g76 += 0.1428571492433548f * d * f83; + g84 += 0.1428571492433548f * d * f77; + g77 += 0.1428571492433548f * d * f84; + g85 += 0.1428571492433548f * d * f78; + g78 += 0.1428571492433548f * d * f85; + g86 += 0.1428571492433548f * d * f79; + g79 += 0.1428571492433548f * d * f86; } - { const float d = D(ii, k, 116); - g10 += 1.0f * d * f4; - g4 += 1.0f * d * f10; + { const float d = D(ii, k, 62); + g48 += 0.20000000298023224f * d * f43; + g49 += 0.20000000298023224f * d * f44; + g50 += 0.20000000298023224f * d * f45; + g51 += 0.20000000298023224f * d * f46; } - { const float d = D(ii, k, 117); - g21 += 0.26726123690605164f * d * f52; - g20 += 0.2182178944349289f * d * f53; - g19 += 0.23904572427272797f * d * f54; - g21 += 0.0690065547823906f * d * f54; - g18 += -0.16903084516525269f * d * f55; - g17 += -0.0690065547823906f * d * f56; - g18 += -0.2182178944349289f * d * f57; - g17 += -0.26726123690605164f * d * f58; + { const float d = D(ii, k, 65); + g80 += 0.1428571492433548f * d * f80; + g80 += 0.1428571492433548f * d * f80; + g81 += 0.1428571492433548f * d * f81; + g81 += 0.1428571492433548f * d * f81; + g82 += 0.1428571492433548f * d * f82; + g82 += 0.1428571492433548f * d * f82; + g83 += 0.1428571492433548f * d * f83; + g83 += 0.1428571492433548f * d * f83; + g84 += 0.1428571492433548f * d * f84; + g84 += 0.1428571492433548f * d * f84; + g85 += 0.1428571492433548f * d * f85; + g85 += 0.1428571492433548f * d * f85; + g86 += 0.1428571492433548f * d * f86; + g86 += 0.1428571492433548f * d * f86; + } + { const float d = D(ii, k, 67); + g48 += 0.20000000298023224f * d * f48; + g48 += 0.20000000298023224f * d * f48; + g49 += 0.20000000298023224f * d * f49; + g49 += 0.20000000298023224f * d * f49; + g50 += 0.20000000298023224f * d * f50; + g50 += 0.20000000298023224f * d * f50; + g51 += 0.20000000298023224f * d * f51; + g51 += 0.20000000298023224f * d * f51; + } + { const float d = D(ii, k, 117); + g52 += 0.26726123690605164f * d * f21; + g53 += 0.2182178944349289f * d * f20; + g54 += 0.23904572427272797f * d * f19; + g54 += 0.0690065547823906f * d * f21; + g55 += -0.16903084516525269f * d * f18; + g56 += -0.0690065547823906f * d * f17; + g57 += -0.2182178944349289f * d * f18; + g58 += -0.26726123690605164f * d * f17; } { const float d = D(ii, k, 118); - g17 += 0.2182178944349289f * d * f53; - g18 += 0.2760262191295624f * d * f54; - g19 += 0.29277002811431885f * d * f55; - g20 += 0.2760262191295624f * d * f56; - g21 += 0.2182178944349289f * d * f57; + g53 += 0.2182178944349289f * d * f17; + g54 += 0.2760262191295624f * d * f18; + g55 += 0.29277002811431885f * d * f19; + g56 += 0.2760262191295624f * d * f20; + g57 += 0.2182178944349289f * d * f21; } { const float d = D(ii, k, 119); - g17 += 0.26726123690605164f * d * f52; - g18 += 0.2182178944349289f * d * f53; - g17 += -0.0690065547823906f * d * f54; - g20 += -0.16903084516525269f * d * f55; - g19 += 0.23904572427272797f * d * f56; - g21 += -0.0690065547823906f * d * f56; - g20 += 0.2182178944349289f * d * f57; - g21 += 0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f17; + g53 += 0.2182178944349289f * d * f18; + g54 += -0.0690065547823906f * d * f17; + g55 += -0.16903084516525269f * d * f20; + g56 += 0.23904572427272797f * d * f19; + g56 += -0.0690065547823906f * d * f21; + g57 += 0.2182178944349289f * d * f20; + g58 += 0.26726123690605164f * d * f21; } { const float d = D(ii, k, 120); - g26 += 0.26726123690605164f * d * f52; - g25 += 0.2182178944349289f * d * f53; - g24 += 0.23904572427272797f * d * f54; - g26 += 0.0690065547823906f * d * f54; - g23 += -0.16903084516525269f * d * f55; - g22 += -0.0690065547823906f * d * f56; - g23 += -0.2182178944349289f * d * f57; - g22 += -0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f26; + g53 += 0.2182178944349289f * d * f25; + g54 += 0.23904572427272797f * d * f24; + g54 += 0.0690065547823906f * d * f26; + g55 += -0.16903084516525269f * d * f23; + g56 += -0.0690065547823906f * d * f22; + g57 += -0.2182178944349289f * d * f23; + g58 += -0.26726123690605164f * d * f22; } { const float d = D(ii, k, 121); - g22 += 0.2182178944349289f * d * f53; - g23 += 0.2760262191295624f * d * f54; - g24 += 0.29277002811431885f * d * f55; - g25 += 0.2760262191295624f * d * f56; - g26 += 0.2182178944349289f * d * f57; + g53 += 0.2182178944349289f * d * f22; + g54 += 0.2760262191295624f * d * f23; + g55 += 0.29277002811431885f * d * f24; + g56 += 0.2760262191295624f * d * f25; + g57 += 0.2182178944349289f * d * f26; } { const float d = D(ii, k, 122); - g22 += 0.26726123690605164f * d * f52; - g23 += 0.2182178944349289f * d * f53; - g22 += -0.0690065547823906f * d * f54; - g25 += -0.16903084516525269f * d * f55; - g24 += 0.23904572427272797f * d * f56; - g26 += -0.0690065547823906f * d * f56; - g25 += 0.2182178944349289f * d * f57; - g26 += 0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f22; + g53 += 0.2182178944349289f * d * f23; + g54 += -0.0690065547823906f * d * f22; + g55 += -0.16903084516525269f * d * f25; + g56 += 0.23904572427272797f * d * f24; + g56 += -0.0690065547823906f * d * f26; + g57 += 0.2182178944349289f * d * f25; + g58 += 0.26726123690605164f * d * f26; } { const float d = D(ii, k, 123); - g31 += 0.26726123690605164f * d * f52; - g30 += 0.2182178944349289f * d * f53; - g29 += 0.23904572427272797f * d * f54; - g31 += 0.0690065547823906f * d * f54; - g28 += -0.16903084516525269f * d * f55; - g27 += -0.0690065547823906f * d * f56; - g28 += -0.2182178944349289f * d * f57; - g27 += -0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f31; + g53 += 0.2182178944349289f * d * f30; + g54 += 0.23904572427272797f * d * f29; + g54 += 0.0690065547823906f * d * f31; + g55 += -0.16903084516525269f * d * f28; + g56 += -0.0690065547823906f * d * f27; + g57 += -0.2182178944349289f * d * f28; + g58 += -0.26726123690605164f * d * f27; } { const float d = D(ii, k, 124); - g27 += 0.2182178944349289f * d * f53; - g28 += 0.2760262191295624f * d * f54; - g29 += 0.29277002811431885f * d * f55; - g30 += 0.2760262191295624f * d * f56; - g31 += 0.2182178944349289f * d * f57; + g53 += 0.2182178944349289f * d * f27; + g54 += 0.2760262191295624f * d * f28; + g55 += 0.29277002811431885f * d * f29; + g56 += 0.2760262191295624f * d * f30; + g57 += 0.2182178944349289f * d * f31; } { const float d = D(ii, k, 125); - g27 += 0.26726123690605164f * d * f52; - g28 += 0.2182178944349289f * d * f53; - g27 += -0.0690065547823906f * d * f54; - g30 += -0.16903084516525269f * d * f55; - g29 += 0.23904572427272797f * d * f56; - g31 += -0.0690065547823906f * d * f56; - g30 += 0.2182178944349289f * d * f57; - g31 += 0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f27; + g53 += 0.2182178944349289f * d * f28; + g54 += -0.0690065547823906f * d * f27; + g55 += -0.16903084516525269f * d * f30; + g56 += 0.23904572427272797f * d * f29; + g56 += -0.0690065547823906f * d * f31; + g57 += 0.2182178944349289f * d * f30; + g58 += 0.26726123690605164f * d * f31; } { const float d = D(ii, k, 126); - g36 += 0.26726123690605164f * d * f52; - g35 += 0.2182178944349289f * d * f53; - g34 += 0.23904572427272797f * d * f54; - g36 += 0.0690065547823906f * d * f54; - g33 += -0.16903084516525269f * d * f55; - g32 += -0.0690065547823906f * d * f56; - g33 += -0.2182178944349289f * d * f57; - g32 += -0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f36; + g53 += 0.2182178944349289f * d * f35; + g54 += 0.23904572427272797f * d * f34; + g54 += 0.0690065547823906f * d * f36; + g55 += -0.16903084516525269f * d * f33; + g56 += -0.0690065547823906f * d * f32; + g57 += -0.2182178944349289f * d * f33; + g58 += -0.26726123690605164f * d * f32; } { const float d = D(ii, k, 127); - g32 += 0.2182178944349289f * d * f53; - g33 += 0.2760262191295624f * d * f54; - g34 += 0.29277002811431885f * d * f55; - g35 += 0.2760262191295624f * d * f56; - g36 += 0.2182178944349289f * d * f57; + g53 += 0.2182178944349289f * d * f32; + g54 += 0.2760262191295624f * d * f33; + g55 += 0.29277002811431885f * d * f34; + g56 += 0.2760262191295624f * d * f35; + g57 += 0.2182178944349289f * d * f36; } { const float d = D(ii, k, 128); - g32 += 0.26726123690605164f * d * f52; - g33 += 0.2182178944349289f * d * f53; - g32 += -0.0690065547823906f * d * f54; - g35 += -0.16903084516525269f * d * f55; - g34 += 0.23904572427272797f * d * f56; - g36 += -0.0690065547823906f * d * f56; - g35 += 0.2182178944349289f * d * f57; - g36 += 0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f32; + g53 += 0.2182178944349289f * d * f33; + g54 += -0.0690065547823906f * d * f32; + g55 += -0.16903084516525269f * d * f35; + g56 += 0.23904572427272797f * d * f34; + g56 += -0.0690065547823906f * d * f36; + g57 += 0.2182178944349289f * d * f35; + g58 += 0.26726123690605164f * d * f36; } { const float d = D(ii, k, 129); - g41 += 0.26726123690605164f * d * f52; - g40 += 0.2182178944349289f * d * f53; - g39 += 0.23904572427272797f * d * f54; - g41 += 0.0690065547823906f * d * f54; - g38 += -0.16903084516525269f * d * f55; - g37 += -0.0690065547823906f * d * f56; - g38 += -0.2182178944349289f * d * f57; - g37 += -0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f41; + g53 += 0.2182178944349289f * d * f40; + g54 += 0.23904572427272797f * d * f39; + g54 += 0.0690065547823906f * d * f41; + g55 += -0.16903084516525269f * d * f38; + g56 += -0.0690065547823906f * d * f37; + g57 += -0.2182178944349289f * d * f38; + g58 += -0.26726123690605164f * d * f37; } { const float d = D(ii, k, 130); - g37 += 0.2182178944349289f * d * f53; - g38 += 0.2760262191295624f * d * f54; - g39 += 0.29277002811431885f * d * f55; - g40 += 0.2760262191295624f * d * f56; - g41 += 0.2182178944349289f * d * f57; + g53 += 0.2182178944349289f * d * f37; + g54 += 0.2760262191295624f * d * f38; + g55 += 0.29277002811431885f * d * f39; + g56 += 0.2760262191295624f * d * f40; + g57 += 0.2182178944349289f * d * f41; } { const float d = D(ii, k, 131); - g37 += 0.26726123690605164f * d * f52; - g38 += 0.2182178944349289f * d * f53; - g37 += -0.0690065547823906f * d * f54; - g40 += -0.16903084516525269f * d * f55; - g39 += 0.23904572427272797f * d * f56; - g41 += -0.0690065547823906f * d * f56; - g40 += 0.2182178944349289f * d * f57; - g41 += 0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f37; + g53 += 0.2182178944349289f * d * f38; + g54 += -0.0690065547823906f * d * f37; + g55 += -0.16903084516525269f * d * f40; + g56 += 0.23904572427272797f * d * f39; + g56 += -0.0690065547823906f * d * f41; + g57 += 0.2182178944349289f * d * f40; + g58 += 0.26726123690605164f * d * f41; } { const float d = D(ii, k, 132); - g46 += 0.26726123690605164f * d * f52; - g45 += 0.2182178944349289f * d * f53; - g44 += 0.23904572427272797f * d * f54; - g46 += 0.0690065547823906f * d * f54; - g43 += -0.16903084516525269f * d * f55; - g42 += -0.0690065547823906f * d * f56; - g43 += -0.2182178944349289f * d * f57; - g42 += -0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f46; + g53 += 0.2182178944349289f * d * f45; + g54 += 0.23904572427272797f * d * f44; + g54 += 0.0690065547823906f * d * f46; + g55 += -0.16903084516525269f * d * f43; + g56 += -0.0690065547823906f * d * f42; + g57 += -0.2182178944349289f * d * f43; + g58 += -0.26726123690605164f * d * f42; } { const float d = D(ii, k, 133); - g42 += 0.2182178944349289f * d * f53; - g43 += 0.2760262191295624f * d * f54; - g44 += 0.29277002811431885f * d * f55; - g45 += 0.2760262191295624f * d * f56; - g46 += 0.2182178944349289f * d * f57; + g53 += 0.2182178944349289f * d * f42; + g54 += 0.2760262191295624f * d * f43; + g55 += 0.29277002811431885f * d * f44; + g56 += 0.2760262191295624f * d * f45; + g57 += 0.2182178944349289f * d * f46; } { const float d = D(ii, k, 134); - g42 += 0.26726123690605164f * d * f52; - g43 += 0.2182178944349289f * d * f53; - g42 += -0.0690065547823906f * d * f54; - g45 += -0.16903084516525269f * d * f55; - g44 += 0.23904572427272797f * d * f56; - g46 += -0.0690065547823906f * d * f56; - g45 += 0.2182178944349289f * d * f57; - g46 += 0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f42; + g53 += 0.2182178944349289f * d * f43; + g54 += -0.0690065547823906f * d * f42; + g55 += -0.16903084516525269f * d * f45; + g56 += 0.23904572427272797f * d * f44; + g56 += -0.0690065547823906f * d * f46; + g57 += 0.2182178944349289f * d * f45; + g58 += 0.26726123690605164f * d * f46; } { const float d = D(ii, k, 135); - g47 += -0.0690065547823906f * d * f56; - g47 += -0.26726123690605164f * d * f58; + g52 += 0.26726123690605164f * d * f51; + g51 += 0.26726123690605164f * d * f52; + g53 += 0.2182178944349289f * d * f50; + g50 += 0.2182178944349289f * d * f53; + g54 += 0.23904572427272797f * d * f49; + g49 += 0.23904572427272797f * d * f54; + g54 += 0.0690065547823906f * d * f51; + g51 += 0.0690065547823906f * d * f54; + g55 += -0.16903084516525269f * d * f48; + g48 += -0.16903084516525269f * d * f55; + g56 += -0.0690065547823906f * d * f47; + g57 += -0.2182178944349289f * d * f48; + g48 += -0.2182178944349289f * d * f57; + g58 += -0.26726123690605164f * d * f47; } { const float d = D(ii, k, 136); - g47 += 0.2182178944349289f * d * f53; + g53 += 0.2182178944349289f * d * f47; + g54 += 0.2760262191295624f * d * f48; + g48 += 0.2760262191295624f * d * f54; + g55 += 0.29277002811431885f * d * f49; + g49 += 0.29277002811431885f * d * f55; + g56 += 0.2760262191295624f * d * f50; + g50 += 0.2760262191295624f * d * f56; + g57 += 0.2182178944349289f * d * f51; + g51 += 0.2182178944349289f * d * f57; } { const float d = D(ii, k, 137); - g47 += 0.26726123690605164f * d * f52; - g47 += -0.0690065547823906f * d * f54; + g52 += 0.26726123690605164f * d * f47; + g53 += 0.2182178944349289f * d * f48; + g48 += 0.2182178944349289f * d * f53; + g54 += -0.0690065547823906f * d * f47; + g55 += -0.16903084516525269f * d * f50; + g50 += -0.16903084516525269f * d * f55; + g56 += 0.23904572427272797f * d * f49; + g49 += 0.23904572427272797f * d * f56; + g56 += -0.0690065547823906f * d * f51; + g51 += -0.0690065547823906f * d * f56; + g57 += 0.2182178944349289f * d * f50; + g50 += 0.2182178944349289f * d * f57; + g58 += 0.26726123690605164f * d * f51; + g51 += 0.26726123690605164f * d * f58; } - { const float d = D(ii, k, 138); - g27 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f27; - g28 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f28; - g29 += -0.22360679507255554f * d * f5; - g5 += -0.22360679507255554f * d * f29; - g31 += -0.3872983455657959f * d * f5; - g5 += -0.3872983455657959f * d * f31; + { const float d = D(ii, k, 150); + g87 += 0.20412415266036987f * d * f65; + g65 += 0.20412415266036987f * d * f87; + g88 += 0.1767766922712326f * d * f64; + g64 += 0.1767766922712326f * d * f88; + g89 += 0.14940357208251953f * d * f63; + g63 += 0.14940357208251953f * d * f89; + g89 += 0.03857583925127983f * d * f65; + g65 += 0.03857583925127983f * d * f89; + g90 += 0.17251639068126678f * d * f62; + g62 += 0.17251639068126678f * d * f90; + g90 += 0.06681530922651291f * d * f64; + g64 += 0.06681530922651291f * d * f90; + g91 += -0.13363061845302582f * d * f61; + g61 += -0.13363061845302582f * d * f91; + g92 += -0.06681530922651291f * d * f60; + g60 += -0.06681530922651291f * d * f92; + g93 += -0.03857583925127983f * d * f59; + g59 += -0.03857583925127983f * d * f93; + g93 += -0.14940357208251953f * d * f61; + g61 += -0.14940357208251953f * d * f93; + g94 += -0.1767766922712326f * d * f60; + g60 += -0.1767766922712326f * d * f94; + g95 += -0.20412415266036987f * d * f59; + g59 += -0.20412415266036987f * d * f95; } - { const float d = D(ii, k, 139); - g28 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f28; - g29 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f29; - g30 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f30; + { const float d = D(ii, k, 151); + g88 += 0.14433756470680237f * d * f59; + g59 += 0.14433756470680237f * d * f88; + g89 += 0.18898223340511322f * d * f60; + g60 += 0.18898223340511322f * d * f89; + g90 += 0.21128855645656586f * d * f61; + g61 += 0.21128855645656586f * d * f90; + g91 += 0.2182178944349289f * d * f62; + g62 += 0.2182178944349289f * d * f91; + g92 += 0.21128855645656586f * d * f63; + g63 += 0.21128855645656586f * d * f92; + g93 += 0.18898223340511322f * d * f64; + g64 += 0.18898223340511322f * d * f93; + g94 += 0.14433756470680237f * d * f65; + g65 += 0.14433756470680237f * d * f94; } - { const float d = D(ii, k, 140); - g27 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f27; - g29 += -0.22360679507255554f * d * f7; - g7 += -0.22360679507255554f * d * f29; - g30 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f30; - g31 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f31; + { const float d = D(ii, k, 152); + g87 += 0.20412415266036987f * d * f59; + g59 += 0.20412415266036987f * d * f87; + g88 += 0.1767766922712326f * d * f60; + g60 += 0.1767766922712326f * d * f88; + g89 += -0.03857583925127983f * d * f59; + g59 += -0.03857583925127983f * d * f89; + g89 += 0.14940357208251953f * d * f61; + g61 += 0.14940357208251953f * d * f89; + g90 += -0.06681530922651291f * d * f60; + g60 += -0.06681530922651291f * d * f90; + g91 += -0.13363061845302582f * d * f63; + g63 += -0.13363061845302582f * d * f91; + g92 += 0.17251639068126678f * d * f62; + g62 += 0.17251639068126678f * d * f92; + g92 += -0.06681530922651291f * d * f64; + g64 += -0.06681530922651291f * d * f92; + g93 += 0.14940357208251953f * d * f63; + g63 += 0.14940357208251953f * d * f93; + g93 += -0.03857583925127983f * d * f65; + g65 += -0.03857583925127983f * d * f93; + g94 += 0.1767766922712326f * d * f64; + g64 += 0.1767766922712326f * d * f94; + g95 += 0.20412415266036987f * d * f65; + g65 += 0.20412415266036987f * d * f95; } - { const float d = D(ii, k, 141); - g27 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f27; - g28 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f28; - g29 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f29; - g31 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f31; + { const float d = D(ii, k, 153); + g87 += 0.20412415266036987f * d * f72; + g72 += 0.20412415266036987f * d * f87; + g88 += 0.1767766922712326f * d * f71; + g71 += 0.1767766922712326f * d * f88; + g89 += 0.14940357208251953f * d * f70; + g70 += 0.14940357208251953f * d * f89; + g89 += 0.03857583925127983f * d * f72; + g72 += 0.03857583925127983f * d * f89; + g90 += 0.17251639068126678f * d * f69; + g69 += 0.17251639068126678f * d * f90; + g90 += 0.06681530922651291f * d * f71; + g71 += 0.06681530922651291f * d * f90; + g91 += -0.13363061845302582f * d * f68; + g68 += -0.13363061845302582f * d * f91; + g92 += -0.06681530922651291f * d * f67; + g67 += -0.06681530922651291f * d * f92; + g93 += -0.03857583925127983f * d * f66; + g66 += -0.03857583925127983f * d * f93; + g93 += -0.14940357208251953f * d * f68; + g68 += -0.14940357208251953f * d * f93; + g94 += -0.1767766922712326f * d * f67; + g67 += -0.1767766922712326f * d * f94; + g95 += -0.20412415266036987f * d * f66; + g66 += -0.20412415266036987f * d * f95; } - { const float d = D(ii, k, 142); - g28 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f28; - g29 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f29; - g30 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f30; + { const float d = D(ii, k, 154); + g88 += 0.14433756470680237f * d * f66; + g66 += 0.14433756470680237f * d * f88; + g89 += 0.18898223340511322f * d * f67; + g67 += 0.18898223340511322f * d * f89; + g90 += 0.21128855645656586f * d * f68; + g68 += 0.21128855645656586f * d * f90; + g91 += 0.2182178944349289f * d * f69; + g69 += 0.2182178944349289f * d * f91; + g92 += 0.21128855645656586f * d * f70; + g70 += 0.21128855645656586f * d * f92; + g93 += 0.18898223340511322f * d * f71; + g71 += 0.18898223340511322f * d * f93; + g94 += 0.14433756470680237f * d * f72; + g72 += 0.14433756470680237f * d * f94; } - { const float d = D(ii, k, 143); - g27 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f27; - g29 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f29; - g30 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f30; - g31 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f31; + { const float d = D(ii, k, 155); + g87 += 0.20412415266036987f * d * f66; + g66 += 0.20412415266036987f * d * f87; + g88 += 0.1767766922712326f * d * f67; + g67 += 0.1767766922712326f * d * f88; + g89 += -0.03857583925127983f * d * f66; + g66 += -0.03857583925127983f * d * f89; + g89 += 0.14940357208251953f * d * f68; + g68 += 0.14940357208251953f * d * f89; + g90 += -0.06681530922651291f * d * f67; + g67 += -0.06681530922651291f * d * f90; + g91 += -0.13363061845302582f * d * f70; + g70 += -0.13363061845302582f * d * f91; + g92 += 0.17251639068126678f * d * f69; + g69 += 0.17251639068126678f * d * f92; + g92 += -0.06681530922651291f * d * f71; + g71 += -0.06681530922651291f * d * f92; + g93 += 0.14940357208251953f * d * f70; + g70 += 0.14940357208251953f * d * f93; + g93 += -0.03857583925127983f * d * f72; + g72 += -0.03857583925127983f * d * f93; + g94 += 0.1767766922712326f * d * f71; + g71 += 0.1767766922712326f * d * f94; + g95 += 0.20412415266036987f * d * f72; + g72 += 0.20412415266036987f * d * f95; } - { const float d = D(ii, k, 144); - g27 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f27; - g28 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f28; - g29 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f29; - g31 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f31; + { const float d = D(ii, k, 156); + g87 += 0.20412415266036987f * d * f79; + g79 += 0.20412415266036987f * d * f87; + g88 += 0.1767766922712326f * d * f78; + g78 += 0.1767766922712326f * d * f88; + g89 += 0.14940357208251953f * d * f77; + g77 += 0.14940357208251953f * d * f89; + g89 += 0.03857583925127983f * d * f79; + g79 += 0.03857583925127983f * d * f89; + g90 += 0.17251639068126678f * d * f76; + g76 += 0.17251639068126678f * d * f90; + g90 += 0.06681530922651291f * d * f78; + g78 += 0.06681530922651291f * d * f90; + g91 += -0.13363061845302582f * d * f75; + g75 += -0.13363061845302582f * d * f91; + g92 += -0.06681530922651291f * d * f74; + g74 += -0.06681530922651291f * d * f92; + g93 += -0.03857583925127983f * d * f73; + g73 += -0.03857583925127983f * d * f93; + g93 += -0.14940357208251953f * d * f75; + g75 += -0.14940357208251953f * d * f93; + g94 += -0.1767766922712326f * d * f74; + g74 += -0.1767766922712326f * d * f94; + g95 += -0.20412415266036987f * d * f73; + g73 += -0.20412415266036987f * d * f95; } - { const float d = D(ii, k, 145); - g28 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f28; - g29 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f29; - g30 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f30; + { const float d = D(ii, k, 157); + g88 += 0.14433756470680237f * d * f73; + g73 += 0.14433756470680237f * d * f88; + g89 += 0.18898223340511322f * d * f74; + g74 += 0.18898223340511322f * d * f89; + g90 += 0.21128855645656586f * d * f75; + g75 += 0.21128855645656586f * d * f90; + g91 += 0.2182178944349289f * d * f76; + g76 += 0.2182178944349289f * d * f91; + g92 += 0.21128855645656586f * d * f77; + g77 += 0.21128855645656586f * d * f92; + g93 += 0.18898223340511322f * d * f78; + g78 += 0.18898223340511322f * d * f93; + g94 += 0.14433756470680237f * d * f79; + g79 += 0.14433756470680237f * d * f94; } - { const float d = D(ii, k, 146); - g27 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f27; - g29 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f29; - g30 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f30; - g31 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f31; + { const float d = D(ii, k, 158); + g87 += 0.20412415266036987f * d * f73; + g73 += 0.20412415266036987f * d * f87; + g88 += 0.1767766922712326f * d * f74; + g74 += 0.1767766922712326f * d * f88; + g89 += -0.03857583925127983f * d * f73; + g73 += -0.03857583925127983f * d * f89; + g89 += 0.14940357208251953f * d * f75; + g75 += 0.14940357208251953f * d * f89; + g90 += -0.06681530922651291f * d * f74; + g74 += -0.06681530922651291f * d * f90; + g91 += -0.13363061845302582f * d * f77; + g77 += -0.13363061845302582f * d * f91; + g92 += 0.17251639068126678f * d * f76; + g76 += 0.17251639068126678f * d * f92; + g92 += -0.06681530922651291f * d * f78; + g78 += -0.06681530922651291f * d * f92; + g93 += 0.14940357208251953f * d * f77; + g77 += 0.14940357208251953f * d * f93; + g93 += -0.03857583925127983f * d * f79; + g79 += -0.03857583925127983f * d * f93; + g94 += 0.1767766922712326f * d * f78; + g78 += 0.1767766922712326f * d * f94; + g95 += 0.20412415266036987f * d * f79; + g79 += 0.20412415266036987f * d * f95; } - { const float d = D(ii, k, 147); - g27 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f27; - g28 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f28; - g29 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f29; - g31 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f31; + { const float d = D(ii, k, 159); + g87 += 0.20412415266036987f * d * f86; + g86 += 0.20412415266036987f * d * f87; + g88 += 0.1767766922712326f * d * f85; + g85 += 0.1767766922712326f * d * f88; + g89 += 0.14940357208251953f * d * f84; + g84 += 0.14940357208251953f * d * f89; + g89 += 0.03857583925127983f * d * f86; + g86 += 0.03857583925127983f * d * f89; + g90 += 0.17251639068126678f * d * f83; + g83 += 0.17251639068126678f * d * f90; + g90 += 0.06681530922651291f * d * f85; + g85 += 0.06681530922651291f * d * f90; + g91 += -0.13363061845302582f * d * f82; + g82 += -0.13363061845302582f * d * f91; + g92 += -0.06681530922651291f * d * f81; + g81 += -0.06681530922651291f * d * f92; + g93 += -0.03857583925127983f * d * f80; + g80 += -0.03857583925127983f * d * f93; + g93 += -0.14940357208251953f * d * f82; + g82 += -0.14940357208251953f * d * f93; + g94 += -0.1767766922712326f * d * f81; + g81 += -0.1767766922712326f * d * f94; + g95 += -0.20412415266036987f * d * f80; + g80 += -0.20412415266036987f * d * f95; } - { const float d = D(ii, k, 148); - g28 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f28; - g29 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f29; - g30 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f30; + { const float d = D(ii, k, 160); + g88 += 0.14433756470680237f * d * f80; + g80 += 0.14433756470680237f * d * f88; + g89 += 0.18898223340511322f * d * f81; + g81 += 0.18898223340511322f * d * f89; + g90 += 0.21128855645656586f * d * f82; + g82 += 0.21128855645656586f * d * f90; + g91 += 0.2182178944349289f * d * f83; + g83 += 0.2182178944349289f * d * f91; + g92 += 0.21128855645656586f * d * f84; + g84 += 0.21128855645656586f * d * f92; + g93 += 0.18898223340511322f * d * f85; + g85 += 0.18898223340511322f * d * f93; + g94 += 0.14433756470680237f * d * f86; + g86 += 0.14433756470680237f * d * f94; } - { const float d = D(ii, k, 149); - g27 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f27; - g29 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f29; - g30 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f30; - g31 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f31; + { const float d = D(ii, k, 161); + g87 += 0.20412415266036987f * d * f80; + g80 += 0.20412415266036987f * d * f87; + g88 += 0.1767766922712326f * d * f81; + g81 += 0.1767766922712326f * d * f88; + g89 += -0.03857583925127983f * d * f80; + g80 += -0.03857583925127983f * d * f89; + g89 += 0.14940357208251953f * d * f82; + g82 += 0.14940357208251953f * d * f89; + g90 += -0.06681530922651291f * d * f81; + g81 += -0.06681530922651291f * d * f90; + g91 += -0.13363061845302582f * d * f84; + g84 += -0.13363061845302582f * d * f91; + g92 += 0.17251639068126678f * d * f83; + g83 += 0.17251639068126678f * d * f92; + g92 += -0.06681530922651291f * d * f85; + g85 += -0.06681530922651291f * d * f92; + g93 += 0.14940357208251953f * d * f84; + g84 += 0.14940357208251953f * d * f93; + g93 += -0.03857583925127983f * d * f86; + g86 += -0.03857583925127983f * d * f93; + g94 += 0.1767766922712326f * d * f85; + g85 += 0.1767766922712326f * d * f94; + g95 += 0.20412415266036987f * d * f86; + g86 += 0.20412415266036987f * d * f95; } { const float d = D(ii, k, 162); - g31 += 0.26726123690605164f * d * f59; - g30 += 0.2182178944349289f * d * f60; - g29 += 0.23904572427272797f * d * f61; - g31 += 0.0690065547823906f * d * f61; - g28 += -0.16903084516525269f * d * f62; - g27 += -0.0690065547823906f * d * f63; - g28 += -0.2182178944349289f * d * f64; - g27 += -0.26726123690605164f * d * f65; + g59 += 0.26726123690605164f * d * f31; + g60 += 0.2182178944349289f * d * f30; + g61 += 0.23904572427272797f * d * f29; + g61 += 0.0690065547823906f * d * f31; + g62 += -0.16903084516525269f * d * f28; + g63 += -0.0690065547823906f * d * f27; + g64 += -0.2182178944349289f * d * f28; + g65 += -0.26726123690605164f * d * f27; } { const float d = D(ii, k, 163); - g27 += 0.2182178944349289f * d * f60; - g28 += 0.2760262191295624f * d * f61; - g29 += 0.29277002811431885f * d * f62; - g30 += 0.2760262191295624f * d * f63; - g31 += 0.2182178944349289f * d * f64; + g60 += 0.2182178944349289f * d * f27; + g61 += 0.2760262191295624f * d * f28; + g62 += 0.29277002811431885f * d * f29; + g63 += 0.2760262191295624f * d * f30; + g64 += 0.2182178944349289f * d * f31; } { const float d = D(ii, k, 164); - g27 += 0.26726123690605164f * d * f59; - g28 += 0.2182178944349289f * d * f60; - g27 += -0.0690065547823906f * d * f61; - g30 += -0.16903084516525269f * d * f62; - g29 += 0.23904572427272797f * d * f63; - g31 += -0.0690065547823906f * d * f63; - g30 += 0.2182178944349289f * d * f64; - g31 += 0.26726123690605164f * d * f65; + g59 += 0.26726123690605164f * d * f27; + g60 += 0.2182178944349289f * d * f28; + g61 += -0.0690065547823906f * d * f27; + g62 += -0.16903084516525269f * d * f30; + g63 += 0.23904572427272797f * d * f29; + g63 += -0.0690065547823906f * d * f31; + g64 += 0.2182178944349289f * d * f30; + g65 += 0.26726123690605164f * d * f31; } { const float d = D(ii, k, 165); - g36 += 0.26726123690605164f * d * f59; - g35 += 0.2182178944349289f * d * f60; - g34 += 0.23904572427272797f * d * f61; - g36 += 0.0690065547823906f * d * f61; - g33 += -0.16903084516525269f * d * f62; - g32 += -0.0690065547823906f * d * f63; - g33 += -0.2182178944349289f * d * f64; - g32 += -0.26726123690605164f * d * f65; + g59 += 0.26726123690605164f * d * f36; + g60 += 0.2182178944349289f * d * f35; + g61 += 0.23904572427272797f * d * f34; + g61 += 0.0690065547823906f * d * f36; + g62 += -0.16903084516525269f * d * f33; + g63 += -0.0690065547823906f * d * f32; + g64 += -0.2182178944349289f * d * f33; + g65 += -0.26726123690605164f * d * f32; } { const float d = D(ii, k, 166); - g32 += 0.2182178944349289f * d * f60; - g33 += 0.2760262191295624f * d * f61; - g34 += 0.29277002811431885f * d * f62; - g35 += 0.2760262191295624f * d * f63; - g36 += 0.2182178944349289f * d * f64; + g60 += 0.2182178944349289f * d * f32; + g61 += 0.2760262191295624f * d * f33; + g62 += 0.29277002811431885f * d * f34; + g63 += 0.2760262191295624f * d * f35; + g64 += 0.2182178944349289f * d * f36; } { const float d = D(ii, k, 167); - g32 += 0.26726123690605164f * d * f59; - g33 += 0.2182178944349289f * d * f60; - g32 += -0.0690065547823906f * d * f61; - g35 += -0.16903084516525269f * d * f62; - g34 += 0.23904572427272797f * d * f63; - g36 += -0.0690065547823906f * d * f63; - g35 += 0.2182178944349289f * d * f64; - g36 += 0.26726123690605164f * d * f65; + g59 += 0.26726123690605164f * d * f32; + g60 += 0.2182178944349289f * d * f33; + g61 += -0.0690065547823906f * d * f32; + g62 += -0.16903084516525269f * d * f35; + g63 += 0.23904572427272797f * d * f34; + g63 += -0.0690065547823906f * d * f36; + g64 += 0.2182178944349289f * d * f35; + g65 += 0.26726123690605164f * d * f36; } { const float d = D(ii, k, 168); - g41 += 0.26726123690605164f * d * f59; - g40 += 0.2182178944349289f * d * f60; - g39 += 0.23904572427272797f * d * f61; - g41 += 0.0690065547823906f * d * f61; - g38 += -0.16903084516525269f * d * f62; - g37 += -0.0690065547823906f * d * f63; - g38 += -0.2182178944349289f * d * f64; - g37 += -0.26726123690605164f * d * f65; + g59 += 0.26726123690605164f * d * f41; + g60 += 0.2182178944349289f * d * f40; + g61 += 0.23904572427272797f * d * f39; + g61 += 0.0690065547823906f * d * f41; + g62 += -0.16903084516525269f * d * f38; + g63 += -0.0690065547823906f * d * f37; + g64 += -0.2182178944349289f * d * f38; + g65 += -0.26726123690605164f * d * f37; } { const float d = D(ii, k, 169); - g37 += 0.2182178944349289f * d * f60; - g38 += 0.2760262191295624f * d * f61; - g39 += 0.29277002811431885f * d * f62; - g40 += 0.2760262191295624f * d * f63; - g41 += 0.2182178944349289f * d * f64; - } - { const float d = D(ii, k, 170); - g37 += 0.26726123690605164f * d * f59; - g38 += 0.2182178944349289f * d * f60; - g37 += -0.0690065547823906f * d * f61; - g40 += -0.16903084516525269f * d * f62; - g39 += 0.23904572427272797f * d * f63; - g41 += -0.0690065547823906f * d * f63; - g40 += 0.2182178944349289f * d * f64; - g41 += 0.26726123690605164f * d * f65; + g60 += 0.2182178944349289f * d * f37; + g61 += 0.2760262191295624f * d * f38; + g62 += 0.29277002811431885f * d * f39; + g63 += 0.2760262191295624f * d * f40; + g64 += 0.2182178944349289f * d * f41; + } + { const float d = D(ii, k, 170); + g59 += 0.26726123690605164f * d * f37; + g60 += 0.2182178944349289f * d * f38; + g61 += -0.0690065547823906f * d * f37; + g62 += -0.16903084516525269f * d * f40; + g63 += 0.23904572427272797f * d * f39; + g63 += -0.0690065547823906f * d * f41; + g64 += 0.2182178944349289f * d * f40; + g65 += 0.26726123690605164f * d * f41; } { const float d = D(ii, k, 171); - g46 += 0.26726123690605164f * d * f59; - g45 += 0.2182178944349289f * d * f60; - g44 += 0.23904572427272797f * d * f61; - g46 += 0.0690065547823906f * d * f61; - g43 += -0.16903084516525269f * d * f62; - g42 += -0.0690065547823906f * d * f63; - g43 += -0.2182178944349289f * d * f64; - g42 += -0.26726123690605164f * d * f65; + g59 += 0.26726123690605164f * d * f46; + g60 += 0.2182178944349289f * d * f45; + g61 += 0.23904572427272797f * d * f44; + g61 += 0.0690065547823906f * d * f46; + g62 += -0.16903084516525269f * d * f43; + g63 += -0.0690065547823906f * d * f42; + g64 += -0.2182178944349289f * d * f43; + g65 += -0.26726123690605164f * d * f42; } { const float d = D(ii, k, 172); - g42 += 0.2182178944349289f * d * f60; - g43 += 0.2760262191295624f * d * f61; - g44 += 0.29277002811431885f * d * f62; - g45 += 0.2760262191295624f * d * f63; - g46 += 0.2182178944349289f * d * f64; + g60 += 0.2182178944349289f * d * f42; + g61 += 0.2760262191295624f * d * f43; + g62 += 0.29277002811431885f * d * f44; + g63 += 0.2760262191295624f * d * f45; + g64 += 0.2182178944349289f * d * f46; } { const float d = D(ii, k, 173); - g42 += 0.26726123690605164f * d * f59; - g43 += 0.2182178944349289f * d * f60; - g42 += -0.0690065547823906f * d * f61; - g45 += -0.16903084516525269f * d * f62; - g44 += 0.23904572427272797f * d * f63; - g46 += -0.0690065547823906f * d * f63; - g45 += 0.2182178944349289f * d * f64; - g46 += 0.26726123690605164f * d * f65; + g59 += 0.26726123690605164f * d * f42; + g60 += 0.2182178944349289f * d * f43; + g61 += -0.0690065547823906f * d * f42; + g62 += -0.16903084516525269f * d * f45; + g63 += 0.23904572427272797f * d * f44; + g63 += -0.0690065547823906f * d * f46; + g64 += 0.2182178944349289f * d * f45; + g65 += 0.26726123690605164f * d * f46; } { const float d = D(ii, k, 174); - g47 += -0.0690065547823906f * d * f63; - g47 += -0.26726123690605164f * d * f65; + g59 += 0.26726123690605164f * d * f51; + g51 += 0.26726123690605164f * d * f59; + g60 += 0.2182178944349289f * d * f50; + g50 += 0.2182178944349289f * d * f60; + g61 += 0.23904572427272797f * d * f49; + g49 += 0.23904572427272797f * d * f61; + g61 += 0.0690065547823906f * d * f51; + g51 += 0.0690065547823906f * d * f61; + g62 += -0.16903084516525269f * d * f48; + g48 += -0.16903084516525269f * d * f62; + g63 += -0.0690065547823906f * d * f47; + g64 += -0.2182178944349289f * d * f48; + g48 += -0.2182178944349289f * d * f64; + g65 += -0.26726123690605164f * d * f47; } { const float d = D(ii, k, 175); - g47 += 0.2182178944349289f * d * f60; + g60 += 0.2182178944349289f * d * f47; + g61 += 0.2760262191295624f * d * f48; + g48 += 0.2760262191295624f * d * f61; + g62 += 0.29277002811431885f * d * f49; + g49 += 0.29277002811431885f * d * f62; + g63 += 0.2760262191295624f * d * f50; + g50 += 0.2760262191295624f * d * f63; + g64 += 0.2182178944349289f * d * f51; + g51 += 0.2182178944349289f * d * f64; } { const float d = D(ii, k, 176); - g47 += 0.26726123690605164f * d * f59; - g47 += -0.0690065547823906f * d * f61; - } - { const float d = D(ii, k, 177); - g32 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f32; - g33 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f33; - g34 += -0.22360679507255554f * d * f5; - g5 += -0.22360679507255554f * d * f34; - g36 += -0.3872983455657959f * d * f5; - g5 += -0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 178); - g33 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f33; - g34 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f34; - g35 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f35; - } - { const float d = D(ii, k, 179); - g32 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f32; - g34 += -0.22360679507255554f * d * f7; - g7 += -0.22360679507255554f * d * f34; - g35 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f35; - g36 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 180); - g32 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f32; - g33 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f33; - g34 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f34; - g36 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 181); - g33 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f33; - g34 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f34; - g35 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f35; - } - { const float d = D(ii, k, 182); - g32 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f32; - g34 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f34; - g35 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f35; - g36 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 183); - g32 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f32; - g33 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f33; - g34 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f34; - g36 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 184); - g33 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f33; - g34 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f34; - g35 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f35; - } - { const float d = D(ii, k, 185); - g32 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f32; - g34 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f34; - g35 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f35; - g36 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 186); - g32 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f32; - g33 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f33; - g34 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f34; - g36 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 187); - g33 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f33; - g34 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f34; - g35 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f35; - } - { const float d = D(ii, k, 188); - g32 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f32; - g34 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f34; - g35 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f35; - g36 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f36; + g59 += 0.26726123690605164f * d * f47; + g60 += 0.2182178944349289f * d * f48; + g48 += 0.2182178944349289f * d * f60; + g61 += -0.0690065547823906f * d * f47; + g62 += -0.16903084516525269f * d * f50; + g50 += -0.16903084516525269f * d * f62; + g63 += 0.23904572427272797f * d * f49; + g49 += 0.23904572427272797f * d * f63; + g63 += -0.0690065547823906f * d * f51; + g51 += -0.0690065547823906f * d * f63; + g64 += 0.2182178944349289f * d * f50; + g50 += 0.2182178944349289f * d * f64; + g65 += 0.26726123690605164f * d * f51; + g51 += 0.26726123690605164f * d * f65; } - { const float d = D(ii, k, 204); - g11 += 1.0f * d * f0; - g0 += 1.0f * d * f11; + { const float d = D(ii, k, 189); + g58 += 0.20412415266036987f * d * f96; + g57 += 0.1767766922712326f * d * f97; + g56 += 0.14940357208251953f * d * f98; + g58 += 0.03857583925127983f * d * f98; + g55 += 0.17251639068126678f * d * f99; + g57 += 0.06681530922651291f * d * f99; + g54 += -0.13363061845302582f * d * f100; + g53 += -0.06681530922651291f * d * f101; + g52 += -0.03857583925127983f * d * f102; + g54 += -0.14940357208251953f * d * f102; + g53 += -0.1767766922712326f * d * f103; + g52 += -0.20412415266036987f * d * f104; } - { const float d = D(ii, k, 205); - g12 += 1.0f * d * f0; - g0 += 1.0f * d * f12; + { const float d = D(ii, k, 190); + g52 += 0.14433756470680237f * d * f97; + g53 += 0.18898223340511322f * d * f98; + g54 += 0.21128855645656586f * d * f99; + g55 += 0.2182178944349289f * d * f100; + g56 += 0.21128855645656586f * d * f101; + g57 += 0.18898223340511322f * d * f102; + g58 += 0.14433756470680237f * d * f103; } - { const float d = D(ii, k, 206); - g13 += 1.0f * d * f0; - g0 += 1.0f * d * f13; + { const float d = D(ii, k, 191); + g52 += 0.20412415266036987f * d * f96; + g53 += 0.1767766922712326f * d * f97; + g52 += -0.03857583925127983f * d * f98; + g54 += 0.14940357208251953f * d * f98; + g53 += -0.06681530922651291f * d * f99; + g56 += -0.13363061845302582f * d * f100; + g55 += 0.17251639068126678f * d * f101; + g57 += -0.06681530922651291f * d * f101; + g56 += 0.14940357208251953f * d * f102; + g58 += -0.03857583925127983f * d * f102; + g57 += 0.1767766922712326f * d * f103; + g58 += 0.20412415266036987f * d * f104; } - { const float d = D(ii, k, 207); - g11 += 1.0f * d * f1; - g1 += 1.0f * d * f11; + { const float d = D(ii, k, 192); + g65 += 0.20412415266036987f * d * f96; + g64 += 0.1767766922712326f * d * f97; + g63 += 0.14940357208251953f * d * f98; + g65 += 0.03857583925127983f * d * f98; + g62 += 0.17251639068126678f * d * f99; + g64 += 0.06681530922651291f * d * f99; + g61 += -0.13363061845302582f * d * f100; + g60 += -0.06681530922651291f * d * f101; + g59 += -0.03857583925127983f * d * f102; + g61 += -0.14940357208251953f * d * f102; + g60 += -0.1767766922712326f * d * f103; + g59 += -0.20412415266036987f * d * f104; } - { const float d = D(ii, k, 208); - g12 += 1.0f * d * f1; - g1 += 1.0f * d * f12; + { const float d = D(ii, k, 193); + g59 += 0.14433756470680237f * d * f97; + g60 += 0.18898223340511322f * d * f98; + g61 += 0.21128855645656586f * d * f99; + g62 += 0.2182178944349289f * d * f100; + g63 += 0.21128855645656586f * d * f101; + g64 += 0.18898223340511322f * d * f102; + g65 += 0.14433756470680237f * d * f103; } - { const float d = D(ii, k, 209); - g13 += 1.0f * d * f1; - g1 += 1.0f * d * f13; + { const float d = D(ii, k, 194); + g59 += 0.20412415266036987f * d * f96; + g60 += 0.1767766922712326f * d * f97; + g59 += -0.03857583925127983f * d * f98; + g61 += 0.14940357208251953f * d * f98; + g60 += -0.06681530922651291f * d * f99; + g63 += -0.13363061845302582f * d * f100; + g62 += 0.17251639068126678f * d * f101; + g64 += -0.06681530922651291f * d * f101; + g63 += 0.14940357208251953f * d * f102; + g65 += -0.03857583925127983f * d * f102; + g64 += 0.1767766922712326f * d * f103; + g65 += 0.20412415266036987f * d * f104; } - { const float d = D(ii, k, 210); - g11 += 1.0f * d * f2; - g2 += 1.0f * d * f11; + { const float d = D(ii, k, 195); + g72 += 0.20412415266036987f * d * f96; + g71 += 0.1767766922712326f * d * f97; + g70 += 0.14940357208251953f * d * f98; + g72 += 0.03857583925127983f * d * f98; + g69 += 0.17251639068126678f * d * f99; + g71 += 0.06681530922651291f * d * f99; + g68 += -0.13363061845302582f * d * f100; + g67 += -0.06681530922651291f * d * f101; + g66 += -0.03857583925127983f * d * f102; + g68 += -0.14940357208251953f * d * f102; + g67 += -0.1767766922712326f * d * f103; + g66 += -0.20412415266036987f * d * f104; } - { const float d = D(ii, k, 211); - g12 += 1.0f * d * f2; - g2 += 1.0f * d * f12; + { const float d = D(ii, k, 196); + g66 += 0.14433756470680237f * d * f97; + g67 += 0.18898223340511322f * d * f98; + g68 += 0.21128855645656586f * d * f99; + g69 += 0.2182178944349289f * d * f100; + g70 += 0.21128855645656586f * d * f101; + g71 += 0.18898223340511322f * d * f102; + g72 += 0.14433756470680237f * d * f103; } - { const float d = D(ii, k, 212); - g13 += 1.0f * d * f2; - g2 += 1.0f * d * f13; + { const float d = D(ii, k, 197); + g66 += 0.20412415266036987f * d * f96; + g67 += 0.1767766922712326f * d * f97; + g66 += -0.03857583925127983f * d * f98; + g68 += 0.14940357208251953f * d * f98; + g67 += -0.06681530922651291f * d * f99; + g70 += -0.13363061845302582f * d * f100; + g69 += 0.17251639068126678f * d * f101; + g71 += -0.06681530922651291f * d * f101; + g70 += 0.14940357208251953f * d * f102; + g72 += -0.03857583925127983f * d * f102; + g71 += 0.1767766922712326f * d * f103; + g72 += 0.20412415266036987f * d * f104; } - { const float d = D(ii, k, 213); - g11 += 1.0f * d * f3; - g3 += 1.0f * d * f11; + { const float d = D(ii, k, 198); + g79 += 0.20412415266036987f * d * f96; + g78 += 0.1767766922712326f * d * f97; + g77 += 0.14940357208251953f * d * f98; + g79 += 0.03857583925127983f * d * f98; + g76 += 0.17251639068126678f * d * f99; + g78 += 0.06681530922651291f * d * f99; + g75 += -0.13363061845302582f * d * f100; + g74 += -0.06681530922651291f * d * f101; + g73 += -0.03857583925127983f * d * f102; + g75 += -0.14940357208251953f * d * f102; + g74 += -0.1767766922712326f * d * f103; + g73 += -0.20412415266036987f * d * f104; } - { const float d = D(ii, k, 214); - g12 += 1.0f * d * f3; - g3 += 1.0f * d * f12; + { const float d = D(ii, k, 199); + g73 += 0.14433756470680237f * d * f97; + g74 += 0.18898223340511322f * d * f98; + g75 += 0.21128855645656586f * d * f99; + g76 += 0.2182178944349289f * d * f100; + g77 += 0.21128855645656586f * d * f101; + g78 += 0.18898223340511322f * d * f102; + g79 += 0.14433756470680237f * d * f103; } - { const float d = D(ii, k, 215); - g13 += 1.0f * d * f3; - g3 += 1.0f * d * f13; + { const float d = D(ii, k, 200); + g73 += 0.20412415266036987f * d * f96; + g74 += 0.1767766922712326f * d * f97; + g73 += -0.03857583925127983f * d * f98; + g75 += 0.14940357208251953f * d * f98; + g74 += -0.06681530922651291f * d * f99; + g77 += -0.13363061845302582f * d * f100; + g76 += 0.17251639068126678f * d * f101; + g78 += -0.06681530922651291f * d * f101; + g77 += 0.14940357208251953f * d * f102; + g79 += -0.03857583925127983f * d * f102; + g78 += 0.1767766922712326f * d * f103; + g79 += 0.20412415266036987f * d * f104; } - { const float d = D(ii, k, 216); - g11 += 1.0f * d * f4; - g4 += 1.0f * d * f11; + { const float d = D(ii, k, 201); + g86 += 0.20412415266036987f * d * f96; + g85 += 0.1767766922712326f * d * f97; + g84 += 0.14940357208251953f * d * f98; + g86 += 0.03857583925127983f * d * f98; + g83 += 0.17251639068126678f * d * f99; + g85 += 0.06681530922651291f * d * f99; + g82 += -0.13363061845302582f * d * f100; + g81 += -0.06681530922651291f * d * f101; + g80 += -0.03857583925127983f * d * f102; + g82 += -0.14940357208251953f * d * f102; + g81 += -0.1767766922712326f * d * f103; + g80 += -0.20412415266036987f * d * f104; } - { const float d = D(ii, k, 217); - g12 += 1.0f * d * f4; - g4 += 1.0f * d * f12; + { const float d = D(ii, k, 202); + g80 += 0.14433756470680237f * d * f97; + g81 += 0.18898223340511322f * d * f98; + g82 += 0.21128855645656586f * d * f99; + g83 += 0.2182178944349289f * d * f100; + g84 += 0.21128855645656586f * d * f101; + g85 += 0.18898223340511322f * d * f102; + g86 += 0.14433756470680237f * d * f103; } - { const float d = D(ii, k, 218); - g13 += 1.0f * d * f4; - g4 += 1.0f * d * f13; + { const float d = D(ii, k, 203); + g80 += 0.20412415266036987f * d * f96; + g81 += 0.1767766922712326f * d * f97; + g80 += -0.03857583925127983f * d * f98; + g82 += 0.14940357208251953f * d * f98; + g81 += -0.06681530922651291f * d * f99; + g84 += -0.13363061845302582f * d * f100; + g83 += 0.17251639068126678f * d * f101; + g85 += -0.06681530922651291f * d * f101; + g84 += 0.14940357208251953f * d * f102; + g86 += -0.03857583925127983f * d * f102; + g85 += 0.1767766922712326f * d * f103; + g86 += 0.20412415266036987f * d * f104; } { const float d = D(ii, k, 219); - g21 += 0.26726123690605164f * d * f66; - g20 += 0.2182178944349289f * d * f67; - g19 += 0.23904572427272797f * d * f68; - g21 += 0.0690065547823906f * d * f68; - g18 += -0.16903084516525269f * d * f69; - g17 += -0.0690065547823906f * d * f70; - g18 += -0.2182178944349289f * d * f71; - g17 += -0.26726123690605164f * d * f72; + g66 += 0.26726123690605164f * d * f21; + g67 += 0.2182178944349289f * d * f20; + g68 += 0.23904572427272797f * d * f19; + g68 += 0.0690065547823906f * d * f21; + g69 += -0.16903084516525269f * d * f18; + g70 += -0.0690065547823906f * d * f17; + g71 += -0.2182178944349289f * d * f18; + g72 += -0.26726123690605164f * d * f17; } { const float d = D(ii, k, 220); - g17 += 0.2182178944349289f * d * f67; - g18 += 0.2760262191295624f * d * f68; - g19 += 0.29277002811431885f * d * f69; - g20 += 0.2760262191295624f * d * f70; - g21 += 0.2182178944349289f * d * f71; + g67 += 0.2182178944349289f * d * f17; + g68 += 0.2760262191295624f * d * f18; + g69 += 0.29277002811431885f * d * f19; + g70 += 0.2760262191295624f * d * f20; + g71 += 0.2182178944349289f * d * f21; } { const float d = D(ii, k, 221); - g17 += 0.26726123690605164f * d * f66; - g18 += 0.2182178944349289f * d * f67; - g17 += -0.0690065547823906f * d * f68; - g20 += -0.16903084516525269f * d * f69; - g19 += 0.23904572427272797f * d * f70; - g21 += -0.0690065547823906f * d * f70; - g20 += 0.2182178944349289f * d * f71; - g21 += 0.26726123690605164f * d * f72; + g66 += 0.26726123690605164f * d * f17; + g67 += 0.2182178944349289f * d * f18; + g68 += -0.0690065547823906f * d * f17; + g69 += -0.16903084516525269f * d * f20; + g70 += 0.23904572427272797f * d * f19; + g70 += -0.0690065547823906f * d * f21; + g71 += 0.2182178944349289f * d * f20; + g72 += 0.26726123690605164f * d * f21; } { const float d = D(ii, k, 222); - g26 += 0.26726123690605164f * d * f66; - g25 += 0.2182178944349289f * d * f67; - g24 += 0.23904572427272797f * d * f68; - g26 += 0.0690065547823906f * d * f68; - g23 += -0.16903084516525269f * d * f69; - g22 += -0.0690065547823906f * d * f70; - g23 += -0.2182178944349289f * d * f71; - g22 += -0.26726123690605164f * d * f72; + g66 += 0.26726123690605164f * d * f26; + g67 += 0.2182178944349289f * d * f25; + g68 += 0.23904572427272797f * d * f24; + g68 += 0.0690065547823906f * d * f26; + g69 += -0.16903084516525269f * d * f23; + g70 += -0.0690065547823906f * d * f22; + g71 += -0.2182178944349289f * d * f23; + g72 += -0.26726123690605164f * d * f22; } { const float d = D(ii, k, 223); - g22 += 0.2182178944349289f * d * f67; - g23 += 0.2760262191295624f * d * f68; - g24 += 0.29277002811431885f * d * f69; - g25 += 0.2760262191295624f * d * f70; - g26 += 0.2182178944349289f * d * f71; + g67 += 0.2182178944349289f * d * f22; + g68 += 0.2760262191295624f * d * f23; + g69 += 0.29277002811431885f * d * f24; + g70 += 0.2760262191295624f * d * f25; + g71 += 0.2182178944349289f * d * f26; } { const float d = D(ii, k, 224); - g22 += 0.26726123690605164f * d * f66; - g23 += 0.2182178944349289f * d * f67; - g22 += -0.0690065547823906f * d * f68; - g25 += -0.16903084516525269f * d * f69; - g24 += 0.23904572427272797f * d * f70; - g26 += -0.0690065547823906f * d * f70; - g25 += 0.2182178944349289f * d * f71; - g26 += 0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 225); - g31 += 0.26726123690605164f * d * f66; - g30 += 0.2182178944349289f * d * f67; - g29 += 0.23904572427272797f * d * f68; - g31 += 0.0690065547823906f * d * f68; - g28 += -0.16903084516525269f * d * f69; - g27 += -0.0690065547823906f * d * f70; - g28 += -0.2182178944349289f * d * f71; - g27 += -0.26726123690605164f * d * f72; + g66 += 0.26726123690605164f * d * f22; + g67 += 0.2182178944349289f * d * f23; + g68 += -0.0690065547823906f * d * f22; + g69 += -0.16903084516525269f * d * f25; + g70 += 0.23904572427272797f * d * f24; + g70 += -0.0690065547823906f * d * f26; + g71 += 0.2182178944349289f * d * f25; + g72 += 0.26726123690605164f * d * f26; + } + { const float d = D(ii, k, 225); + g66 += 0.26726123690605164f * d * f31; + g67 += 0.2182178944349289f * d * f30; + g68 += 0.23904572427272797f * d * f29; + g68 += 0.0690065547823906f * d * f31; + g69 += -0.16903084516525269f * d * f28; + g70 += -0.0690065547823906f * d * f27; + g71 += -0.2182178944349289f * d * f28; + g72 += -0.26726123690605164f * d * f27; } { const float d = D(ii, k, 226); - g27 += 0.2182178944349289f * d * f67; - g28 += 0.2760262191295624f * d * f68; - g29 += 0.29277002811431885f * d * f69; - g30 += 0.2760262191295624f * d * f70; - g31 += 0.2182178944349289f * d * f71; + g67 += 0.2182178944349289f * d * f27; + g68 += 0.2760262191295624f * d * f28; + g69 += 0.29277002811431885f * d * f29; + g70 += 0.2760262191295624f * d * f30; + g71 += 0.2182178944349289f * d * f31; } { const float d = D(ii, k, 227); - g27 += 0.26726123690605164f * d * f66; - g28 += 0.2182178944349289f * d * f67; - g27 += -0.0690065547823906f * d * f68; - g30 += -0.16903084516525269f * d * f69; - g29 += 0.23904572427272797f * d * f70; - g31 += -0.0690065547823906f * d * f70; - g30 += 0.2182178944349289f * d * f71; - g31 += 0.26726123690605164f * d * f72; + g66 += 0.26726123690605164f * d * f27; + g67 += 0.2182178944349289f * d * f28; + g68 += -0.0690065547823906f * d * f27; + g69 += -0.16903084516525269f * d * f30; + g70 += 0.23904572427272797f * d * f29; + g70 += -0.0690065547823906f * d * f31; + g71 += 0.2182178944349289f * d * f30; + g72 += 0.26726123690605164f * d * f31; } { const float d = D(ii, k, 228); - g36 += 0.26726123690605164f * d * f66; - g35 += 0.2182178944349289f * d * f67; - g34 += 0.23904572427272797f * d * f68; - g36 += 0.0690065547823906f * d * f68; - g33 += -0.16903084516525269f * d * f69; - g32 += -0.0690065547823906f * d * f70; - g33 += -0.2182178944349289f * d * f71; - g32 += -0.26726123690605164f * d * f72; + g66 += 0.26726123690605164f * d * f36; + g67 += 0.2182178944349289f * d * f35; + g68 += 0.23904572427272797f * d * f34; + g68 += 0.0690065547823906f * d * f36; + g69 += -0.16903084516525269f * d * f33; + g70 += -0.0690065547823906f * d * f32; + g71 += -0.2182178944349289f * d * f33; + g72 += -0.26726123690605164f * d * f32; } { const float d = D(ii, k, 229); - g32 += 0.2182178944349289f * d * f67; - g33 += 0.2760262191295624f * d * f68; - g34 += 0.29277002811431885f * d * f69; - g35 += 0.2760262191295624f * d * f70; - g36 += 0.2182178944349289f * d * f71; + g67 += 0.2182178944349289f * d * f32; + g68 += 0.2760262191295624f * d * f33; + g69 += 0.29277002811431885f * d * f34; + g70 += 0.2760262191295624f * d * f35; + g71 += 0.2182178944349289f * d * f36; } { const float d = D(ii, k, 230); - g32 += 0.26726123690605164f * d * f66; - g33 += 0.2182178944349289f * d * f67; - g32 += -0.0690065547823906f * d * f68; - g35 += -0.16903084516525269f * d * f69; - g34 += 0.23904572427272797f * d * f70; - g36 += -0.0690065547823906f * d * f70; - g35 += 0.2182178944349289f * d * f71; - g36 += 0.26726123690605164f * d * f72; + g66 += 0.26726123690605164f * d * f32; + g67 += 0.2182178944349289f * d * f33; + g68 += -0.0690065547823906f * d * f32; + g69 += -0.16903084516525269f * d * f35; + g70 += 0.23904572427272797f * d * f34; + g70 += -0.0690065547823906f * d * f36; + g71 += 0.2182178944349289f * d * f35; + g72 += 0.26726123690605164f * d * f36; } { const float d = D(ii, k, 231); - g46 += 0.26726123690605164f * d * f66; - g45 += 0.2182178944349289f * d * f67; - g44 += 0.23904572427272797f * d * f68; - g46 += 0.0690065547823906f * d * f68; - g43 += -0.16903084516525269f * d * f69; - g42 += -0.0690065547823906f * d * f70; - g43 += -0.2182178944349289f * d * f71; - g42 += -0.26726123690605164f * d * f72; + g66 += 0.26726123690605164f * d * f46; + g67 += 0.2182178944349289f * d * f45; + g68 += 0.23904572427272797f * d * f44; + g68 += 0.0690065547823906f * d * f46; + g69 += -0.16903084516525269f * d * f43; + g70 += -0.0690065547823906f * d * f42; + g71 += -0.2182178944349289f * d * f43; + g72 += -0.26726123690605164f * d * f42; } { const float d = D(ii, k, 232); - g42 += 0.2182178944349289f * d * f67; - g43 += 0.2760262191295624f * d * f68; - g44 += 0.29277002811431885f * d * f69; - g45 += 0.2760262191295624f * d * f70; - g46 += 0.2182178944349289f * d * f71; + g67 += 0.2182178944349289f * d * f42; + g68 += 0.2760262191295624f * d * f43; + g69 += 0.29277002811431885f * d * f44; + g70 += 0.2760262191295624f * d * f45; + g71 += 0.2182178944349289f * d * f46; } { const float d = D(ii, k, 233); - g42 += 0.26726123690605164f * d * f66; - g43 += 0.2182178944349289f * d * f67; - g42 += -0.0690065547823906f * d * f68; - g45 += -0.16903084516525269f * d * f69; - g44 += 0.23904572427272797f * d * f70; - g46 += -0.0690065547823906f * d * f70; - g45 += 0.2182178944349289f * d * f71; - g46 += 0.26726123690605164f * d * f72; + g66 += 0.26726123690605164f * d * f42; + g67 += 0.2182178944349289f * d * f43; + g68 += -0.0690065547823906f * d * f42; + g69 += -0.16903084516525269f * d * f45; + g70 += 0.23904572427272797f * d * f44; + g70 += -0.0690065547823906f * d * f46; + g71 += 0.2182178944349289f * d * f45; + g72 += 0.26726123690605164f * d * f46; } { const float d = D(ii, k, 234); - g47 += -0.0690065547823906f * d * f70; - g47 += -0.26726123690605164f * d * f72; + g66 += 0.26726123690605164f * d * f51; + g51 += 0.26726123690605164f * d * f66; + g67 += 0.2182178944349289f * d * f50; + g50 += 0.2182178944349289f * d * f67; + g68 += 0.23904572427272797f * d * f49; + g49 += 0.23904572427272797f * d * f68; + g68 += 0.0690065547823906f * d * f51; + g51 += 0.0690065547823906f * d * f68; + g69 += -0.16903084516525269f * d * f48; + g48 += -0.16903084516525269f * d * f69; + g70 += -0.0690065547823906f * d * f47; + g71 += -0.2182178944349289f * d * f48; + g48 += -0.2182178944349289f * d * f71; + g72 += -0.26726123690605164f * d * f47; } { const float d = D(ii, k, 235); - g47 += 0.2182178944349289f * d * f67; + g67 += 0.2182178944349289f * d * f47; + g68 += 0.2760262191295624f * d * f48; + g48 += 0.2760262191295624f * d * f68; + g69 += 0.29277002811431885f * d * f49; + g49 += 0.29277002811431885f * d * f69; + g70 += 0.2760262191295624f * d * f50; + g50 += 0.2760262191295624f * d * f70; + g71 += 0.2182178944349289f * d * f51; + g51 += 0.2182178944349289f * d * f71; + } + { const float d = D(ii, k, 236); + g66 += 0.26726123690605164f * d * f47; + g67 += 0.2182178944349289f * d * f48; + g48 += 0.2182178944349289f * d * f67; + g68 += -0.0690065547823906f * d * f47; + g69 += -0.16903084516525269f * d * f50; + g50 += -0.16903084516525269f * d * f69; + g70 += 0.23904572427272797f * d * f49; + g49 += 0.23904572427272797f * d * f70; + g70 += -0.0690065547823906f * d * f51; + g51 += -0.0690065547823906f * d * f70; + g71 += 0.2182178944349289f * d * f50; + g50 += 0.2182178944349289f * d * f71; + g72 += 0.26726123690605164f * d * f51; + g51 += 0.26726123690605164f * d * f72; + } + { const float d = D(ii, k, 249); + g58 += 0.20412415266036987f * d * f105; + g57 += 0.1767766922712326f * d * f106; + g56 += 0.14940357208251953f * d * f107; + g58 += 0.03857583925127983f * d * f107; + g55 += 0.17251639068126678f * d * f108; + g57 += 0.06681530922651291f * d * f108; + g54 += -0.13363061845302582f * d * f109; + g53 += -0.06681530922651291f * d * f110; + g52 += -0.03857583925127983f * d * f111; + g54 += -0.14940357208251953f * d * f111; + g53 += -0.1767766922712326f * d * f112; + g52 += -0.20412415266036987f * d * f113; + } + { const float d = D(ii, k, 250); + g52 += 0.14433756470680237f * d * f106; + g53 += 0.18898223340511322f * d * f107; + g54 += 0.21128855645656586f * d * f108; + g55 += 0.2182178944349289f * d * f109; + g56 += 0.21128855645656586f * d * f110; + g57 += 0.18898223340511322f * d * f111; + g58 += 0.14433756470680237f * d * f112; + } + { const float d = D(ii, k, 251); + g52 += 0.20412415266036987f * d * f105; + g53 += 0.1767766922712326f * d * f106; + g52 += -0.03857583925127983f * d * f107; + g54 += 0.14940357208251953f * d * f107; + g53 += -0.06681530922651291f * d * f108; + g56 += -0.13363061845302582f * d * f109; + g55 += 0.17251639068126678f * d * f110; + g57 += -0.06681530922651291f * d * f110; + g56 += 0.14940357208251953f * d * f111; + g58 += -0.03857583925127983f * d * f111; + g57 += 0.1767766922712326f * d * f112; + g58 += 0.20412415266036987f * d * f113; + } + { const float d = D(ii, k, 252); + g72 += 0.20412415266036987f * d * f105; + g71 += 0.1767766922712326f * d * f106; + g70 += 0.14940357208251953f * d * f107; + g72 += 0.03857583925127983f * d * f107; + g69 += 0.17251639068126678f * d * f108; + g71 += 0.06681530922651291f * d * f108; + g68 += -0.13363061845302582f * d * f109; + g67 += -0.06681530922651291f * d * f110; + g66 += -0.03857583925127983f * d * f111; + g68 += -0.14940357208251953f * d * f111; + g67 += -0.1767766922712326f * d * f112; + g66 += -0.20412415266036987f * d * f113; + } + { const float d = D(ii, k, 253); + g66 += 0.14433756470680237f * d * f106; + g67 += 0.18898223340511322f * d * f107; + g68 += 0.21128855645656586f * d * f108; + g69 += 0.2182178944349289f * d * f109; + g70 += 0.21128855645656586f * d * f110; + g71 += 0.18898223340511322f * d * f111; + g72 += 0.14433756470680237f * d * f112; + } + { const float d = D(ii, k, 254); + g66 += 0.20412415266036987f * d * f105; + g67 += 0.1767766922712326f * d * f106; + g66 += -0.03857583925127983f * d * f107; + g68 += 0.14940357208251953f * d * f107; + g67 += -0.06681530922651291f * d * f108; + g70 += -0.13363061845302582f * d * f109; + g69 += 0.17251639068126678f * d * f110; + g71 += -0.06681530922651291f * d * f110; + g70 += 0.14940357208251953f * d * f111; + g72 += -0.03857583925127983f * d * f111; + g71 += 0.1767766922712326f * d * f112; + g72 += 0.20412415266036987f * d * f113; + } + { const float d = D(ii, k, 255); + g79 += 0.20412415266036987f * d * f105; + g78 += 0.1767766922712326f * d * f106; + g77 += 0.14940357208251953f * d * f107; + g79 += 0.03857583925127983f * d * f107; + g76 += 0.17251639068126678f * d * f108; + g78 += 0.06681530922651291f * d * f108; + g75 += -0.13363061845302582f * d * f109; + g74 += -0.06681530922651291f * d * f110; + g73 += -0.03857583925127983f * d * f111; + g75 += -0.14940357208251953f * d * f111; + g74 += -0.1767766922712326f * d * f112; + g73 += -0.20412415266036987f * d * f113; + } + { const float d = D(ii, k, 256); + g73 += 0.14433756470680237f * d * f106; + g74 += 0.18898223340511322f * d * f107; + g75 += 0.21128855645656586f * d * f108; + g76 += 0.2182178944349289f * d * f109; + g77 += 0.21128855645656586f * d * f110; + g78 += 0.18898223340511322f * d * f111; + g79 += 0.14433756470680237f * d * f112; } - { const float d = D(ii, k, 236); - g47 += 0.26726123690605164f * d * f66; - g47 += -0.0690065547823906f * d * f68; + { const float d = D(ii, k, 257); + g73 += 0.20412415266036987f * d * f105; + g74 += 0.1767766922712326f * d * f106; + g73 += -0.03857583925127983f * d * f107; + g75 += 0.14940357208251953f * d * f107; + g74 += -0.06681530922651291f * d * f108; + g77 += -0.13363061845302582f * d * f109; + g76 += 0.17251639068126678f * d * f110; + g78 += -0.06681530922651291f * d * f110; + g77 += 0.14940357208251953f * d * f111; + g79 += -0.03857583925127983f * d * f111; + g78 += 0.1767766922712326f * d * f112; + g79 += 0.20412415266036987f * d * f113; } - { const float d = D(ii, k, 237); - g37 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f37; - g38 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f38; - g39 += -0.22360679507255554f * d * f5; - g5 += -0.22360679507255554f * d * f39; - g41 += -0.3872983455657959f * d * f5; - g5 += -0.3872983455657959f * d * f41; + { const float d = D(ii, k, 258); + g86 += 0.20412415266036987f * d * f105; + g85 += 0.1767766922712326f * d * f106; + g84 += 0.14940357208251953f * d * f107; + g86 += 0.03857583925127983f * d * f107; + g83 += 0.17251639068126678f * d * f108; + g85 += 0.06681530922651291f * d * f108; + g82 += -0.13363061845302582f * d * f109; + g81 += -0.06681530922651291f * d * f110; + g80 += -0.03857583925127983f * d * f111; + g82 += -0.14940357208251953f * d * f111; + g81 += -0.1767766922712326f * d * f112; + g80 += -0.20412415266036987f * d * f113; } - { const float d = D(ii, k, 238); - g38 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f38; - g39 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f39; - g40 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f40; + { const float d = D(ii, k, 259); + g80 += 0.14433756470680237f * d * f106; + g81 += 0.18898223340511322f * d * f107; + g82 += 0.21128855645656586f * d * f108; + g83 += 0.2182178944349289f * d * f109; + g84 += 0.21128855645656586f * d * f110; + g85 += 0.18898223340511322f * d * f111; + g86 += 0.14433756470680237f * d * f112; } - { const float d = D(ii, k, 239); - g37 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f37; - g39 += -0.22360679507255554f * d * f7; - g7 += -0.22360679507255554f * d * f39; - g40 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f40; - g41 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f41; + { const float d = D(ii, k, 260); + g80 += 0.20412415266036987f * d * f105; + g81 += 0.1767766922712326f * d * f106; + g80 += -0.03857583925127983f * d * f107; + g82 += 0.14940357208251953f * d * f107; + g81 += -0.06681530922651291f * d * f108; + g84 += -0.13363061845302582f * d * f109; + g83 += 0.17251639068126678f * d * f110; + g85 += -0.06681530922651291f * d * f110; + g84 += 0.14940357208251953f * d * f111; + g86 += -0.03857583925127983f * d * f111; + g85 += 0.1767766922712326f * d * f112; + g86 += 0.20412415266036987f * d * f113; } - { const float d = D(ii, k, 240); - g37 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f37; - g38 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f38; - g39 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f39; - g41 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f41; + { const float d = D(ii, k, 261); + g72 += 0.20412415266036987f * d * f114; + g71 += 0.1767766922712326f * d * f115; + g70 += 0.14940357208251953f * d * f116; + g72 += 0.03857583925127983f * d * f116; + g69 += 0.17251639068126678f * d * f117; + g71 += 0.06681530922651291f * d * f117; + g68 += -0.13363061845302582f * d * f118; + g67 += -0.06681530922651291f * d * f119; + g66 += -0.03857583925127983f * d * f120; + g68 += -0.14940357208251953f * d * f120; + g67 += -0.1767766922712326f * d * f121; + g66 += -0.20412415266036987f * d * f122; } - { const float d = D(ii, k, 241); - g38 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f38; - g39 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f39; - g40 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f40; + { const float d = D(ii, k, 262); + g66 += 0.14433756470680237f * d * f115; + g67 += 0.18898223340511322f * d * f116; + g68 += 0.21128855645656586f * d * f117; + g69 += 0.2182178944349289f * d * f118; + g70 += 0.21128855645656586f * d * f119; + g71 += 0.18898223340511322f * d * f120; + g72 += 0.14433756470680237f * d * f121; } - { const float d = D(ii, k, 242); - g37 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f37; - g39 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f39; - g40 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f40; - g41 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f41; + { const float d = D(ii, k, 263); + g66 += 0.20412415266036987f * d * f114; + g67 += 0.1767766922712326f * d * f115; + g66 += -0.03857583925127983f * d * f116; + g68 += 0.14940357208251953f * d * f116; + g67 += -0.06681530922651291f * d * f117; + g70 += -0.13363061845302582f * d * f118; + g69 += 0.17251639068126678f * d * f119; + g71 += -0.06681530922651291f * d * f119; + g70 += 0.14940357208251953f * d * f120; + g72 += -0.03857583925127983f * d * f120; + g71 += 0.1767766922712326f * d * f121; + g72 += 0.20412415266036987f * d * f122; } - { const float d = D(ii, k, 243); - g37 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f37; - g38 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f38; - g39 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f39; - g41 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f41; + { const float d = D(ii, k, 264); + g79 += 0.20412415266036987f * d * f114; + g78 += 0.1767766922712326f * d * f115; + g77 += 0.14940357208251953f * d * f116; + g79 += 0.03857583925127983f * d * f116; + g76 += 0.17251639068126678f * d * f117; + g78 += 0.06681530922651291f * d * f117; + g75 += -0.13363061845302582f * d * f118; + g74 += -0.06681530922651291f * d * f119; + g73 += -0.03857583925127983f * d * f120; + g75 += -0.14940357208251953f * d * f120; + g74 += -0.1767766922712326f * d * f121; + g73 += -0.20412415266036987f * d * f122; } - { const float d = D(ii, k, 244); - g38 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f38; - g39 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f39; - g40 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f40; + { const float d = D(ii, k, 265); + g73 += 0.14433756470680237f * d * f115; + g74 += 0.18898223340511322f * d * f116; + g75 += 0.21128855645656586f * d * f117; + g76 += 0.2182178944349289f * d * f118; + g77 += 0.21128855645656586f * d * f119; + g78 += 0.18898223340511322f * d * f120; + g79 += 0.14433756470680237f * d * f121; } - { const float d = D(ii, k, 245); - g37 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f37; - g39 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f39; - g40 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f40; - g41 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f41; + { const float d = D(ii, k, 266); + g73 += 0.20412415266036987f * d * f114; + g74 += 0.1767766922712326f * d * f115; + g73 += -0.03857583925127983f * d * f116; + g75 += 0.14940357208251953f * d * f116; + g74 += -0.06681530922651291f * d * f117; + g77 += -0.13363061845302582f * d * f118; + g76 += 0.17251639068126678f * d * f119; + g78 += -0.06681530922651291f * d * f119; + g77 += 0.14940357208251953f * d * f120; + g79 += -0.03857583925127983f * d * f120; + g78 += 0.1767766922712326f * d * f121; + g79 += 0.20412415266036987f * d * f122; } - { const float d = D(ii, k, 246); - g37 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f37; - g38 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f38; - g39 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f39; - g41 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f41; + { const float d = D(ii, k, 267); + g86 += 0.20412415266036987f * d * f114; + g85 += 0.1767766922712326f * d * f115; + g84 += 0.14940357208251953f * d * f116; + g86 += 0.03857583925127983f * d * f116; + g83 += 0.17251639068126678f * d * f117; + g85 += 0.06681530922651291f * d * f117; + g82 += -0.13363061845302582f * d * f118; + g81 += -0.06681530922651291f * d * f119; + g80 += -0.03857583925127983f * d * f120; + g82 += -0.14940357208251953f * d * f120; + g81 += -0.1767766922712326f * d * f121; + g80 += -0.20412415266036987f * d * f122; } - { const float d = D(ii, k, 247); - g38 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f38; - g39 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f39; - g40 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f40; + { const float d = D(ii, k, 268); + g80 += 0.14433756470680237f * d * f115; + g81 += 0.18898223340511322f * d * f116; + g82 += 0.21128855645656586f * d * f117; + g83 += 0.2182178944349289f * d * f118; + g84 += 0.21128855645656586f * d * f119; + g85 += 0.18898223340511322f * d * f120; + g86 += 0.14433756470680237f * d * f121; } - { const float d = D(ii, k, 248); - g37 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f37; - g39 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f39; - g40 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f40; - g41 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f41; + { const float d = D(ii, k, 269); + g80 += 0.20412415266036987f * d * f114; + g81 += 0.1767766922712326f * d * f115; + g80 += -0.03857583925127983f * d * f116; + g82 += 0.14940357208251953f * d * f116; + g81 += -0.06681530922651291f * d * f117; + g84 += -0.13363061845302582f * d * f118; + g83 += 0.17251639068126678f * d * f119; + g85 += -0.06681530922651291f * d * f119; + g84 += 0.14940357208251953f * d * f120; + g86 += -0.03857583925127983f * d * f120; + g85 += 0.1767766922712326f * d * f121; + g86 += 0.20412415266036987f * d * f122; } { const float d = D(ii, k, 270); - g21 += 0.26726123690605164f * d * f73; - g20 += 0.2182178944349289f * d * f74; - g19 += 0.23904572427272797f * d * f75; - g21 += 0.0690065547823906f * d * f75; - g18 += -0.16903084516525269f * d * f76; - g17 += -0.0690065547823906f * d * f77; - g18 += -0.2182178944349289f * d * f78; - g17 += -0.26726123690605164f * d * f79; + g73 += 0.26726123690605164f * d * f21; + g74 += 0.2182178944349289f * d * f20; + g75 += 0.23904572427272797f * d * f19; + g75 += 0.0690065547823906f * d * f21; + g76 += -0.16903084516525269f * d * f18; + g77 += -0.0690065547823906f * d * f17; + g78 += -0.2182178944349289f * d * f18; + g79 += -0.26726123690605164f * d * f17; } { const float d = D(ii, k, 271); - g17 += 0.2182178944349289f * d * f74; - g18 += 0.2760262191295624f * d * f75; - g19 += 0.29277002811431885f * d * f76; - g20 += 0.2760262191295624f * d * f77; - g21 += 0.2182178944349289f * d * f78; + g74 += 0.2182178944349289f * d * f17; + g75 += 0.2760262191295624f * d * f18; + g76 += 0.29277002811431885f * d * f19; + g77 += 0.2760262191295624f * d * f20; + g78 += 0.2182178944349289f * d * f21; } { const float d = D(ii, k, 272); - g17 += 0.26726123690605164f * d * f73; - g18 += 0.2182178944349289f * d * f74; - g17 += -0.0690065547823906f * d * f75; - g20 += -0.16903084516525269f * d * f76; - g19 += 0.23904572427272797f * d * f77; - g21 += -0.0690065547823906f * d * f77; - g20 += 0.2182178944349289f * d * f78; - g21 += 0.26726123690605164f * d * f79; + g73 += 0.26726123690605164f * d * f17; + g74 += 0.2182178944349289f * d * f18; + g75 += -0.0690065547823906f * d * f17; + g76 += -0.16903084516525269f * d * f20; + g77 += 0.23904572427272797f * d * f19; + g77 += -0.0690065547823906f * d * f21; + g78 += 0.2182178944349289f * d * f20; + g79 += 0.26726123690605164f * d * f21; } { const float d = D(ii, k, 273); - g31 += 0.26726123690605164f * d * f73; - g30 += 0.2182178944349289f * d * f74; - g29 += 0.23904572427272797f * d * f75; - g31 += 0.0690065547823906f * d * f75; - g28 += -0.16903084516525269f * d * f76; - g27 += -0.0690065547823906f * d * f77; - g28 += -0.2182178944349289f * d * f78; - g27 += -0.26726123690605164f * d * f79; + g73 += 0.26726123690605164f * d * f31; + g74 += 0.2182178944349289f * d * f30; + g75 += 0.23904572427272797f * d * f29; + g75 += 0.0690065547823906f * d * f31; + g76 += -0.16903084516525269f * d * f28; + g77 += -0.0690065547823906f * d * f27; + g78 += -0.2182178944349289f * d * f28; + g79 += -0.26726123690605164f * d * f27; } { const float d = D(ii, k, 274); - g27 += 0.2182178944349289f * d * f74; - g28 += 0.2760262191295624f * d * f75; - g29 += 0.29277002811431885f * d * f76; - g30 += 0.2760262191295624f * d * f77; - g31 += 0.2182178944349289f * d * f78; + g74 += 0.2182178944349289f * d * f27; + g75 += 0.2760262191295624f * d * f28; + g76 += 0.29277002811431885f * d * f29; + g77 += 0.2760262191295624f * d * f30; + g78 += 0.2182178944349289f * d * f31; } { const float d = D(ii, k, 275); - g27 += 0.26726123690605164f * d * f73; - g28 += 0.2182178944349289f * d * f74; - g27 += -0.0690065547823906f * d * f75; - g30 += -0.16903084516525269f * d * f76; - g29 += 0.23904572427272797f * d * f77; - g31 += -0.0690065547823906f * d * f77; - g30 += 0.2182178944349289f * d * f78; - g31 += 0.26726123690605164f * d * f79; + g73 += 0.26726123690605164f * d * f27; + g74 += 0.2182178944349289f * d * f28; + g75 += -0.0690065547823906f * d * f27; + g76 += -0.16903084516525269f * d * f30; + g77 += 0.23904572427272797f * d * f29; + g77 += -0.0690065547823906f * d * f31; + g78 += 0.2182178944349289f * d * f30; + g79 += 0.26726123690605164f * d * f31; } { const float d = D(ii, k, 276); - g36 += 0.26726123690605164f * d * f73; - g35 += 0.2182178944349289f * d * f74; - g34 += 0.23904572427272797f * d * f75; - g36 += 0.0690065547823906f * d * f75; - g33 += -0.16903084516525269f * d * f76; - g32 += -0.0690065547823906f * d * f77; - g33 += -0.2182178944349289f * d * f78; - g32 += -0.26726123690605164f * d * f79; + g73 += 0.26726123690605164f * d * f36; + g74 += 0.2182178944349289f * d * f35; + g75 += 0.23904572427272797f * d * f34; + g75 += 0.0690065547823906f * d * f36; + g76 += -0.16903084516525269f * d * f33; + g77 += -0.0690065547823906f * d * f32; + g78 += -0.2182178944349289f * d * f33; + g79 += -0.26726123690605164f * d * f32; } { const float d = D(ii, k, 277); - g32 += 0.2182178944349289f * d * f74; - g33 += 0.2760262191295624f * d * f75; - g34 += 0.29277002811431885f * d * f76; - g35 += 0.2760262191295624f * d * f77; - g36 += 0.2182178944349289f * d * f78; + g74 += 0.2182178944349289f * d * f32; + g75 += 0.2760262191295624f * d * f33; + g76 += 0.29277002811431885f * d * f34; + g77 += 0.2760262191295624f * d * f35; + g78 += 0.2182178944349289f * d * f36; } { const float d = D(ii, k, 278); - g32 += 0.26726123690605164f * d * f73; - g33 += 0.2182178944349289f * d * f74; - g32 += -0.0690065547823906f * d * f75; - g35 += -0.16903084516525269f * d * f76; - g34 += 0.23904572427272797f * d * f77; - g36 += -0.0690065547823906f * d * f77; - g35 += 0.2182178944349289f * d * f78; - g36 += 0.26726123690605164f * d * f79; + g73 += 0.26726123690605164f * d * f32; + g74 += 0.2182178944349289f * d * f33; + g75 += -0.0690065547823906f * d * f32; + g76 += -0.16903084516525269f * d * f35; + g77 += 0.23904572427272797f * d * f34; + g77 += -0.0690065547823906f * d * f36; + g78 += 0.2182178944349289f * d * f35; + g79 += 0.26726123690605164f * d * f36; } { const float d = D(ii, k, 279); - g41 += 0.26726123690605164f * d * f73; - g40 += 0.2182178944349289f * d * f74; - g39 += 0.23904572427272797f * d * f75; - g41 += 0.0690065547823906f * d * f75; - g38 += -0.16903084516525269f * d * f76; - g37 += -0.0690065547823906f * d * f77; - g38 += -0.2182178944349289f * d * f78; - g37 += -0.26726123690605164f * d * f79; + g73 += 0.26726123690605164f * d * f41; + g74 += 0.2182178944349289f * d * f40; + g75 += 0.23904572427272797f * d * f39; + g75 += 0.0690065547823906f * d * f41; + g76 += -0.16903084516525269f * d * f38; + g77 += -0.0690065547823906f * d * f37; + g78 += -0.2182178944349289f * d * f38; + g79 += -0.26726123690605164f * d * f37; } { const float d = D(ii, k, 280); - g37 += 0.2182178944349289f * d * f74; - g38 += 0.2760262191295624f * d * f75; - g39 += 0.29277002811431885f * d * f76; - g40 += 0.2760262191295624f * d * f77; - g41 += 0.2182178944349289f * d * f78; + g74 += 0.2182178944349289f * d * f37; + g75 += 0.2760262191295624f * d * f38; + g76 += 0.29277002811431885f * d * f39; + g77 += 0.2760262191295624f * d * f40; + g78 += 0.2182178944349289f * d * f41; } { const float d = D(ii, k, 281); - g37 += 0.26726123690605164f * d * f73; - g38 += 0.2182178944349289f * d * f74; - g37 += -0.0690065547823906f * d * f75; - g40 += -0.16903084516525269f * d * f76; - g39 += 0.23904572427272797f * d * f77; - g41 += -0.0690065547823906f * d * f77; - g40 += 0.2182178944349289f * d * f78; - g41 += 0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 282); - g46 += 0.26726123690605164f * d * f73; - g45 += 0.2182178944349289f * d * f74; - g44 += 0.23904572427272797f * d * f75; - g46 += 0.0690065547823906f * d * f75; - g43 += -0.16903084516525269f * d * f76; - g42 += -0.0690065547823906f * d * f77; - g43 += -0.2182178944349289f * d * f78; - g42 += -0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 283); - g42 += 0.2182178944349289f * d * f74; - g43 += 0.2760262191295624f * d * f75; - g44 += 0.29277002811431885f * d * f76; - g45 += 0.2760262191295624f * d * f77; - g46 += 0.2182178944349289f * d * f78; - } - { const float d = D(ii, k, 284); - g42 += 0.26726123690605164f * d * f73; - g43 += 0.2182178944349289f * d * f74; - g42 += -0.0690065547823906f * d * f75; - g45 += -0.16903084516525269f * d * f76; - g44 += 0.23904572427272797f * d * f77; - g46 += -0.0690065547823906f * d * f77; - g45 += 0.2182178944349289f * d * f78; - g46 += 0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 285); - g47 += -0.0690065547823906f * d * f77; - g47 += -0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 286); - g47 += 0.2182178944349289f * d * f74; - } - { const float d = D(ii, k, 287); - g47 += 0.26726123690605164f * d * f73; - g47 += -0.0690065547823906f * d * f75; - } - { const float d = D(ii, k, 288); - g42 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f42; - g43 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f43; - g44 += -0.22360679507255554f * d * f5; - g5 += -0.22360679507255554f * d * f44; - g46 += -0.3872983455657959f * d * f5; - g5 += -0.3872983455657959f * d * f46; - } - { const float d = D(ii, k, 289); - g43 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f43; - g44 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f44; - g45 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f45; - } - { const float d = D(ii, k, 290); - g42 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f42; - g44 += -0.22360679507255554f * d * f7; - g7 += -0.22360679507255554f * d * f44; - g45 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f45; - g46 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f46; - } - { const float d = D(ii, k, 291); - g42 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f42; - g43 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f43; - g44 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f44; - g46 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f46; - } - { const float d = D(ii, k, 292); - g43 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f43; - g44 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f44; - g45 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f45; - } - { const float d = D(ii, k, 293); - g42 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f42; - g44 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f44; - g45 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f45; - g46 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f46; + g73 += 0.26726123690605164f * d * f37; + g74 += 0.2182178944349289f * d * f38; + g75 += -0.0690065547823906f * d * f37; + g76 += -0.16903084516525269f * d * f40; + g77 += 0.23904572427272797f * d * f39; + g77 += -0.0690065547823906f * d * f41; + g78 += 0.2182178944349289f * d * f40; + g79 += 0.26726123690605164f * d * f41; } - { const float d = D(ii, k, 294); - g42 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f42; - g43 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f43; - g44 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f44; - g46 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f46; + { const float d = D(ii, k, 282); + g73 += 0.26726123690605164f * d * f46; + g74 += 0.2182178944349289f * d * f45; + g75 += 0.23904572427272797f * d * f44; + g75 += 0.0690065547823906f * d * f46; + g76 += -0.16903084516525269f * d * f43; + g77 += -0.0690065547823906f * d * f42; + g78 += -0.2182178944349289f * d * f43; + g79 += -0.26726123690605164f * d * f42; } - { const float d = D(ii, k, 295); - g43 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f43; - g44 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f44; - g45 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f45; + { const float d = D(ii, k, 283); + g74 += 0.2182178944349289f * d * f42; + g75 += 0.2760262191295624f * d * f43; + g76 += 0.29277002811431885f * d * f44; + g77 += 0.2760262191295624f * d * f45; + g78 += 0.2182178944349289f * d * f46; } - { const float d = D(ii, k, 296); - g42 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f42; - g44 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f44; - g45 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f45; - g46 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f46; + { const float d = D(ii, k, 284); + g73 += 0.26726123690605164f * d * f42; + g74 += 0.2182178944349289f * d * f43; + g75 += -0.0690065547823906f * d * f42; + g76 += -0.16903084516525269f * d * f45; + g77 += 0.23904572427272797f * d * f44; + g77 += -0.0690065547823906f * d * f46; + g78 += 0.2182178944349289f * d * f45; + g79 += 0.26726123690605164f * d * f46; } - { const float d = D(ii, k, 297); - g42 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f42; - g43 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f43; - g44 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f44; - g46 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f46; + { const float d = D(ii, k, 285); + g73 += 0.26726123690605164f * d * f51; + g51 += 0.26726123690605164f * d * f73; + g74 += 0.2182178944349289f * d * f50; + g50 += 0.2182178944349289f * d * f74; + g75 += 0.23904572427272797f * d * f49; + g49 += 0.23904572427272797f * d * f75; + g75 += 0.0690065547823906f * d * f51; + g51 += 0.0690065547823906f * d * f75; + g76 += -0.16903084516525269f * d * f48; + g48 += -0.16903084516525269f * d * f76; + g77 += -0.0690065547823906f * d * f47; + g78 += -0.2182178944349289f * d * f48; + g48 += -0.2182178944349289f * d * f78; + g79 += -0.26726123690605164f * d * f47; } - { const float d = D(ii, k, 298); - g43 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f43; - g44 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f44; - g45 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f45; + { const float d = D(ii, k, 286); + g74 += 0.2182178944349289f * d * f47; + g75 += 0.2760262191295624f * d * f48; + g48 += 0.2760262191295624f * d * f75; + g76 += 0.29277002811431885f * d * f49; + g49 += 0.29277002811431885f * d * f76; + g77 += 0.2760262191295624f * d * f50; + g50 += 0.2760262191295624f * d * f77; + g78 += 0.2182178944349289f * d * f51; + g51 += 0.2182178944349289f * d * f78; } - { const float d = D(ii, k, 299); - g42 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f42; - g44 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f44; - g45 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f45; - g46 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f46; + { const float d = D(ii, k, 287); + g73 += 0.26726123690605164f * d * f47; + g74 += 0.2182178944349289f * d * f48; + g48 += 0.2182178944349289f * d * f74; + g75 += -0.0690065547823906f * d * f47; + g76 += -0.16903084516525269f * d * f50; + g50 += -0.16903084516525269f * d * f76; + g77 += 0.23904572427272797f * d * f49; + g49 += 0.23904572427272797f * d * f77; + g77 += -0.0690065547823906f * d * f51; + g51 += -0.0690065547823906f * d * f77; + g78 += 0.2182178944349289f * d * f50; + g50 += 0.2182178944349289f * d * f78; + g79 += 0.26726123690605164f * d * f51; + g51 += 0.26726123690605164f * d * f79; } - { const float d = D(ii, k, 315); - g14 += 1.0f * d * f0; - g0 += 1.0f * d * f14; + { const float d = D(ii, k, 300); + g58 += 0.20412415266036987f * d * f123; + g57 += 0.1767766922712326f * d * f124; + g56 += 0.14940357208251953f * d * f125; + g58 += 0.03857583925127983f * d * f125; + g55 += 0.17251639068126678f * d * f126; + g57 += 0.06681530922651291f * d * f126; + g54 += -0.13363061845302582f * d * f127; + g53 += -0.06681530922651291f * d * f128; + g52 += -0.03857583925127983f * d * f129; + g54 += -0.14940357208251953f * d * f129; + g53 += -0.1767766922712326f * d * f130; + g52 += -0.20412415266036987f * d * f131; } - { const float d = D(ii, k, 316); - g15 += 1.0f * d * f0; - g0 += 1.0f * d * f15; + { const float d = D(ii, k, 301); + g52 += 0.14433756470680237f * d * f124; + g53 += 0.18898223340511322f * d * f125; + g54 += 0.21128855645656586f * d * f126; + g55 += 0.2182178944349289f * d * f127; + g56 += 0.21128855645656586f * d * f128; + g57 += 0.18898223340511322f * d * f129; + g58 += 0.14433756470680237f * d * f130; } - { const float d = D(ii, k, 317); - g16 += 1.0f * d * f0; - g0 += 1.0f * d * f16; + { const float d = D(ii, k, 302); + g52 += 0.20412415266036987f * d * f123; + g53 += 0.1767766922712326f * d * f124; + g52 += -0.03857583925127983f * d * f125; + g54 += 0.14940357208251953f * d * f125; + g53 += -0.06681530922651291f * d * f126; + g56 += -0.13363061845302582f * d * f127; + g55 += 0.17251639068126678f * d * f128; + g57 += -0.06681530922651291f * d * f128; + g56 += 0.14940357208251953f * d * f129; + g58 += -0.03857583925127983f * d * f129; + g57 += 0.1767766922712326f * d * f130; + g58 += 0.20412415266036987f * d * f131; } - { const float d = D(ii, k, 318); - g14 += 1.0f * d * f1; - g1 += 1.0f * d * f14; + { const float d = D(ii, k, 303); + g65 += 0.20412415266036987f * d * f123; + g64 += 0.1767766922712326f * d * f124; + g63 += 0.14940357208251953f * d * f125; + g65 += 0.03857583925127983f * d * f125; + g62 += 0.17251639068126678f * d * f126; + g64 += 0.06681530922651291f * d * f126; + g61 += -0.13363061845302582f * d * f127; + g60 += -0.06681530922651291f * d * f128; + g59 += -0.03857583925127983f * d * f129; + g61 += -0.14940357208251953f * d * f129; + g60 += -0.1767766922712326f * d * f130; + g59 += -0.20412415266036987f * d * f131; } - { const float d = D(ii, k, 319); - g15 += 1.0f * d * f1; - g1 += 1.0f * d * f15; + { const float d = D(ii, k, 304); + g59 += 0.14433756470680237f * d * f124; + g60 += 0.18898223340511322f * d * f125; + g61 += 0.21128855645656586f * d * f126; + g62 += 0.2182178944349289f * d * f127; + g63 += 0.21128855645656586f * d * f128; + g64 += 0.18898223340511322f * d * f129; + g65 += 0.14433756470680237f * d * f130; } - { const float d = D(ii, k, 320); - g16 += 1.0f * d * f1; - g1 += 1.0f * d * f16; + { const float d = D(ii, k, 305); + g59 += 0.20412415266036987f * d * f123; + g60 += 0.1767766922712326f * d * f124; + g59 += -0.03857583925127983f * d * f125; + g61 += 0.14940357208251953f * d * f125; + g60 += -0.06681530922651291f * d * f126; + g63 += -0.13363061845302582f * d * f127; + g62 += 0.17251639068126678f * d * f128; + g64 += -0.06681530922651291f * d * f128; + g63 += 0.14940357208251953f * d * f129; + g65 += -0.03857583925127983f * d * f129; + g64 += 0.1767766922712326f * d * f130; + g65 += 0.20412415266036987f * d * f131; } - { const float d = D(ii, k, 321); - g14 += 1.0f * d * f2; - g2 += 1.0f * d * f14; + { const float d = D(ii, k, 306); + g72 += 0.20412415266036987f * d * f123; + g71 += 0.1767766922712326f * d * f124; + g70 += 0.14940357208251953f * d * f125; + g72 += 0.03857583925127983f * d * f125; + g69 += 0.17251639068126678f * d * f126; + g71 += 0.06681530922651291f * d * f126; + g68 += -0.13363061845302582f * d * f127; + g67 += -0.06681530922651291f * d * f128; + g66 += -0.03857583925127983f * d * f129; + g68 += -0.14940357208251953f * d * f129; + g67 += -0.1767766922712326f * d * f130; + g66 += -0.20412415266036987f * d * f131; } - { const float d = D(ii, k, 322); - g15 += 1.0f * d * f2; - g2 += 1.0f * d * f15; + { const float d = D(ii, k, 307); + g66 += 0.14433756470680237f * d * f124; + g67 += 0.18898223340511322f * d * f125; + g68 += 0.21128855645656586f * d * f126; + g69 += 0.2182178944349289f * d * f127; + g70 += 0.21128855645656586f * d * f128; + g71 += 0.18898223340511322f * d * f129; + g72 += 0.14433756470680237f * d * f130; } - { const float d = D(ii, k, 323); - g16 += 1.0f * d * f2; - g2 += 1.0f * d * f16; + { const float d = D(ii, k, 308); + g66 += 0.20412415266036987f * d * f123; + g67 += 0.1767766922712326f * d * f124; + g66 += -0.03857583925127983f * d * f125; + g68 += 0.14940357208251953f * d * f125; + g67 += -0.06681530922651291f * d * f126; + g70 += -0.13363061845302582f * d * f127; + g69 += 0.17251639068126678f * d * f128; + g71 += -0.06681530922651291f * d * f128; + g70 += 0.14940357208251953f * d * f129; + g72 += -0.03857583925127983f * d * f129; + g71 += 0.1767766922712326f * d * f130; + g72 += 0.20412415266036987f * d * f131; } - { const float d = D(ii, k, 324); - g14 += 1.0f * d * f3; - g3 += 1.0f * d * f14; + { const float d = D(ii, k, 309); + g79 += 0.20412415266036987f * d * f123; + g78 += 0.1767766922712326f * d * f124; + g77 += 0.14940357208251953f * d * f125; + g79 += 0.03857583925127983f * d * f125; + g76 += 0.17251639068126678f * d * f126; + g78 += 0.06681530922651291f * d * f126; + g75 += -0.13363061845302582f * d * f127; + g74 += -0.06681530922651291f * d * f128; + g73 += -0.03857583925127983f * d * f129; + g75 += -0.14940357208251953f * d * f129; + g74 += -0.1767766922712326f * d * f130; + g73 += -0.20412415266036987f * d * f131; } - { const float d = D(ii, k, 325); - g15 += 1.0f * d * f3; - g3 += 1.0f * d * f15; + { const float d = D(ii, k, 310); + g73 += 0.14433756470680237f * d * f124; + g74 += 0.18898223340511322f * d * f125; + g75 += 0.21128855645656586f * d * f126; + g76 += 0.2182178944349289f * d * f127; + g77 += 0.21128855645656586f * d * f128; + g78 += 0.18898223340511322f * d * f129; + g79 += 0.14433756470680237f * d * f130; } - { const float d = D(ii, k, 326); - g16 += 1.0f * d * f3; - g3 += 1.0f * d * f16; + { const float d = D(ii, k, 311); + g73 += 0.20412415266036987f * d * f123; + g74 += 0.1767766922712326f * d * f124; + g73 += -0.03857583925127983f * d * f125; + g75 += 0.14940357208251953f * d * f125; + g74 += -0.06681530922651291f * d * f126; + g77 += -0.13363061845302582f * d * f127; + g76 += 0.17251639068126678f * d * f128; + g78 += -0.06681530922651291f * d * f128; + g77 += 0.14940357208251953f * d * f129; + g79 += -0.03857583925127983f * d * f129; + g78 += 0.1767766922712326f * d * f130; + g79 += 0.20412415266036987f * d * f131; } - { const float d = D(ii, k, 327); - g14 += 1.0f * d * f4; - g4 += 1.0f * d * f14; + { const float d = D(ii, k, 312); + g86 += 0.20412415266036987f * d * f123; + g85 += 0.1767766922712326f * d * f124; + g84 += 0.14940357208251953f * d * f125; + g86 += 0.03857583925127983f * d * f125; + g83 += 0.17251639068126678f * d * f126; + g85 += 0.06681530922651291f * d * f126; + g82 += -0.13363061845302582f * d * f127; + g81 += -0.06681530922651291f * d * f128; + g80 += -0.03857583925127983f * d * f129; + g82 += -0.14940357208251953f * d * f129; + g81 += -0.1767766922712326f * d * f130; + g80 += -0.20412415266036987f * d * f131; } - { const float d = D(ii, k, 328); - g15 += 1.0f * d * f4; - g4 += 1.0f * d * f15; + { const float d = D(ii, k, 313); + g80 += 0.14433756470680237f * d * f124; + g81 += 0.18898223340511322f * d * f125; + g82 += 0.21128855645656586f * d * f126; + g83 += 0.2182178944349289f * d * f127; + g84 += 0.21128855645656586f * d * f128; + g85 += 0.18898223340511322f * d * f129; + g86 += 0.14433756470680237f * d * f130; } - { const float d = D(ii, k, 329); - g16 += 1.0f * d * f4; - g4 += 1.0f * d * f16; + { const float d = D(ii, k, 314); + g80 += 0.20412415266036987f * d * f123; + g81 += 0.1767766922712326f * d * f124; + g80 += -0.03857583925127983f * d * f125; + g82 += 0.14940357208251953f * d * f125; + g81 += -0.06681530922651291f * d * f126; + g84 += -0.13363061845302582f * d * f127; + g83 += 0.17251639068126678f * d * f128; + g85 += -0.06681530922651291f * d * f128; + g84 += 0.14940357208251953f * d * f129; + g86 += -0.03857583925127983f * d * f129; + g85 += 0.1767766922712326f * d * f130; + g86 += 0.20412415266036987f * d * f131; } { const float d = D(ii, k, 330); - g21 += 0.26726123690605164f * d * f80; - g20 += 0.2182178944349289f * d * f81; - g19 += 0.23904572427272797f * d * f82; - g21 += 0.0690065547823906f * d * f82; - g18 += -0.16903084516525269f * d * f83; - g17 += -0.0690065547823906f * d * f84; - g18 += -0.2182178944349289f * d * f85; - g17 += -0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f21; + g81 += 0.2182178944349289f * d * f20; + g82 += 0.23904572427272797f * d * f19; + g82 += 0.0690065547823906f * d * f21; + g83 += -0.16903084516525269f * d * f18; + g84 += -0.0690065547823906f * d * f17; + g85 += -0.2182178944349289f * d * f18; + g86 += -0.26726123690605164f * d * f17; } { const float d = D(ii, k, 331); - g17 += 0.2182178944349289f * d * f81; - g18 += 0.2760262191295624f * d * f82; - g19 += 0.29277002811431885f * d * f83; - g20 += 0.2760262191295624f * d * f84; - g21 += 0.2182178944349289f * d * f85; + g81 += 0.2182178944349289f * d * f17; + g82 += 0.2760262191295624f * d * f18; + g83 += 0.29277002811431885f * d * f19; + g84 += 0.2760262191295624f * d * f20; + g85 += 0.2182178944349289f * d * f21; } { const float d = D(ii, k, 332); - g17 += 0.26726123690605164f * d * f80; - g18 += 0.2182178944349289f * d * f81; - g17 += -0.0690065547823906f * d * f82; - g20 += -0.16903084516525269f * d * f83; - g19 += 0.23904572427272797f * d * f84; - g21 += -0.0690065547823906f * d * f84; - g20 += 0.2182178944349289f * d * f85; - g21 += 0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f17; + g81 += 0.2182178944349289f * d * f18; + g82 += -0.0690065547823906f * d * f17; + g83 += -0.16903084516525269f * d * f20; + g84 += 0.23904572427272797f * d * f19; + g84 += -0.0690065547823906f * d * f21; + g85 += 0.2182178944349289f * d * f20; + g86 += 0.26726123690605164f * d * f21; } { const float d = D(ii, k, 333); - g26 += 0.26726123690605164f * d * f80; - g25 += 0.2182178944349289f * d * f81; - g24 += 0.23904572427272797f * d * f82; - g26 += 0.0690065547823906f * d * f82; - g23 += -0.16903084516525269f * d * f83; - g22 += -0.0690065547823906f * d * f84; - g23 += -0.2182178944349289f * d * f85; - g22 += -0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f26; + g81 += 0.2182178944349289f * d * f25; + g82 += 0.23904572427272797f * d * f24; + g82 += 0.0690065547823906f * d * f26; + g83 += -0.16903084516525269f * d * f23; + g84 += -0.0690065547823906f * d * f22; + g85 += -0.2182178944349289f * d * f23; + g86 += -0.26726123690605164f * d * f22; } { const float d = D(ii, k, 334); - g22 += 0.2182178944349289f * d * f81; - g23 += 0.2760262191295624f * d * f82; - g24 += 0.29277002811431885f * d * f83; - g25 += 0.2760262191295624f * d * f84; - g26 += 0.2182178944349289f * d * f85; + g81 += 0.2182178944349289f * d * f22; + g82 += 0.2760262191295624f * d * f23; + g83 += 0.29277002811431885f * d * f24; + g84 += 0.2760262191295624f * d * f25; + g85 += 0.2182178944349289f * d * f26; } { const float d = D(ii, k, 335); - g22 += 0.26726123690605164f * d * f80; - g23 += 0.2182178944349289f * d * f81; - g22 += -0.0690065547823906f * d * f82; - g25 += -0.16903084516525269f * d * f83; - g24 += 0.23904572427272797f * d * f84; - g26 += -0.0690065547823906f * d * f84; - g25 += 0.2182178944349289f * d * f85; - g26 += 0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f22; + g81 += 0.2182178944349289f * d * f23; + g82 += -0.0690065547823906f * d * f22; + g83 += -0.16903084516525269f * d * f25; + g84 += 0.23904572427272797f * d * f24; + g84 += -0.0690065547823906f * d * f26; + g85 += 0.2182178944349289f * d * f25; + g86 += 0.26726123690605164f * d * f26; } { const float d = D(ii, k, 336); - g31 += 0.26726123690605164f * d * f80; - g30 += 0.2182178944349289f * d * f81; - g29 += 0.23904572427272797f * d * f82; - g31 += 0.0690065547823906f * d * f82; - g28 += -0.16903084516525269f * d * f83; - g27 += -0.0690065547823906f * d * f84; - g28 += -0.2182178944349289f * d * f85; - g27 += -0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f31; + g81 += 0.2182178944349289f * d * f30; + g82 += 0.23904572427272797f * d * f29; + g82 += 0.0690065547823906f * d * f31; + g83 += -0.16903084516525269f * d * f28; + g84 += -0.0690065547823906f * d * f27; + g85 += -0.2182178944349289f * d * f28; + g86 += -0.26726123690605164f * d * f27; } { const float d = D(ii, k, 337); - g27 += 0.2182178944349289f * d * f81; - g28 += 0.2760262191295624f * d * f82; - g29 += 0.29277002811431885f * d * f83; - g30 += 0.2760262191295624f * d * f84; - g31 += 0.2182178944349289f * d * f85; + g81 += 0.2182178944349289f * d * f27; + g82 += 0.2760262191295624f * d * f28; + g83 += 0.29277002811431885f * d * f29; + g84 += 0.2760262191295624f * d * f30; + g85 += 0.2182178944349289f * d * f31; } { const float d = D(ii, k, 338); - g27 += 0.26726123690605164f * d * f80; - g28 += 0.2182178944349289f * d * f81; - g27 += -0.0690065547823906f * d * f82; - g30 += -0.16903084516525269f * d * f83; - g29 += 0.23904572427272797f * d * f84; - g31 += -0.0690065547823906f * d * f84; - g30 += 0.2182178944349289f * d * f85; - g31 += 0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f27; + g81 += 0.2182178944349289f * d * f28; + g82 += -0.0690065547823906f * d * f27; + g83 += -0.16903084516525269f * d * f30; + g84 += 0.23904572427272797f * d * f29; + g84 += -0.0690065547823906f * d * f31; + g85 += 0.2182178944349289f * d * f30; + g86 += 0.26726123690605164f * d * f31; } { const float d = D(ii, k, 339); - g36 += 0.26726123690605164f * d * f80; - g35 += 0.2182178944349289f * d * f81; - g34 += 0.23904572427272797f * d * f82; - g36 += 0.0690065547823906f * d * f82; - g33 += -0.16903084516525269f * d * f83; - g32 += -0.0690065547823906f * d * f84; - g33 += -0.2182178944349289f * d * f85; - g32 += -0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f36; + g81 += 0.2182178944349289f * d * f35; + g82 += 0.23904572427272797f * d * f34; + g82 += 0.0690065547823906f * d * f36; + g83 += -0.16903084516525269f * d * f33; + g84 += -0.0690065547823906f * d * f32; + g85 += -0.2182178944349289f * d * f33; + g86 += -0.26726123690605164f * d * f32; } { const float d = D(ii, k, 340); - g32 += 0.2182178944349289f * d * f81; - g33 += 0.2760262191295624f * d * f82; - g34 += 0.29277002811431885f * d * f83; - g35 += 0.2760262191295624f * d * f84; - g36 += 0.2182178944349289f * d * f85; + g81 += 0.2182178944349289f * d * f32; + g82 += 0.2760262191295624f * d * f33; + g83 += 0.29277002811431885f * d * f34; + g84 += 0.2760262191295624f * d * f35; + g85 += 0.2182178944349289f * d * f36; } { const float d = D(ii, k, 341); - g32 += 0.26726123690605164f * d * f80; - g33 += 0.2182178944349289f * d * f81; - g32 += -0.0690065547823906f * d * f82; - g35 += -0.16903084516525269f * d * f83; - g34 += 0.23904572427272797f * d * f84; - g36 += -0.0690065547823906f * d * f84; - g35 += 0.2182178944349289f * d * f85; - g36 += 0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 342); - g41 += 0.26726123690605164f * d * f80; - g40 += 0.2182178944349289f * d * f81; - g39 += 0.23904572427272797f * d * f82; - g41 += 0.0690065547823906f * d * f82; - g38 += -0.16903084516525269f * d * f83; - g37 += -0.0690065547823906f * d * f84; - g38 += -0.2182178944349289f * d * f85; - g37 += -0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f32; + g81 += 0.2182178944349289f * d * f33; + g82 += -0.0690065547823906f * d * f32; + g83 += -0.16903084516525269f * d * f35; + g84 += 0.23904572427272797f * d * f34; + g84 += -0.0690065547823906f * d * f36; + g85 += 0.2182178944349289f * d * f35; + g86 += 0.26726123690605164f * d * f36; + } + { const float d = D(ii, k, 342); + g80 += 0.26726123690605164f * d * f41; + g81 += 0.2182178944349289f * d * f40; + g82 += 0.23904572427272797f * d * f39; + g82 += 0.0690065547823906f * d * f41; + g83 += -0.16903084516525269f * d * f38; + g84 += -0.0690065547823906f * d * f37; + g85 += -0.2182178944349289f * d * f38; + g86 += -0.26726123690605164f * d * f37; } { const float d = D(ii, k, 343); - g37 += 0.2182178944349289f * d * f81; - g38 += 0.2760262191295624f * d * f82; - g39 += 0.29277002811431885f * d * f83; - g40 += 0.2760262191295624f * d * f84; - g41 += 0.2182178944349289f * d * f85; + g81 += 0.2182178944349289f * d * f37; + g82 += 0.2760262191295624f * d * f38; + g83 += 0.29277002811431885f * d * f39; + g84 += 0.2760262191295624f * d * f40; + g85 += 0.2182178944349289f * d * f41; } { const float d = D(ii, k, 344); - g37 += 0.26726123690605164f * d * f80; - g38 += 0.2182178944349289f * d * f81; - g37 += -0.0690065547823906f * d * f82; - g40 += -0.16903084516525269f * d * f83; - g39 += 0.23904572427272797f * d * f84; - g41 += -0.0690065547823906f * d * f84; - g40 += 0.2182178944349289f * d * f85; - g41 += 0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f37; + g81 += 0.2182178944349289f * d * f38; + g82 += -0.0690065547823906f * d * f37; + g83 += -0.16903084516525269f * d * f40; + g84 += 0.23904572427272797f * d * f39; + g84 += -0.0690065547823906f * d * f41; + g85 += 0.2182178944349289f * d * f40; + g86 += 0.26726123690605164f * d * f41; } { const float d = D(ii, k, 345); - g46 += 0.26726123690605164f * d * f80; - g45 += 0.2182178944349289f * d * f81; - g44 += 0.23904572427272797f * d * f82; - g46 += 0.0690065547823906f * d * f82; - g43 += -0.16903084516525269f * d * f83; - g42 += -0.0690065547823906f * d * f84; - g43 += -0.2182178944349289f * d * f85; - g42 += -0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f46; + g81 += 0.2182178944349289f * d * f45; + g82 += 0.23904572427272797f * d * f44; + g82 += 0.0690065547823906f * d * f46; + g83 += -0.16903084516525269f * d * f43; + g84 += -0.0690065547823906f * d * f42; + g85 += -0.2182178944349289f * d * f43; + g86 += -0.26726123690605164f * d * f42; } { const float d = D(ii, k, 346); - g42 += 0.2182178944349289f * d * f81; - g43 += 0.2760262191295624f * d * f82; - g44 += 0.29277002811431885f * d * f83; - g45 += 0.2760262191295624f * d * f84; - g46 += 0.2182178944349289f * d * f85; + g81 += 0.2182178944349289f * d * f42; + g82 += 0.2760262191295624f * d * f43; + g83 += 0.29277002811431885f * d * f44; + g84 += 0.2760262191295624f * d * f45; + g85 += 0.2182178944349289f * d * f46; } { const float d = D(ii, k, 347); - g42 += 0.26726123690605164f * d * f80; - g43 += 0.2182178944349289f * d * f81; - g42 += -0.0690065547823906f * d * f82; - g45 += -0.16903084516525269f * d * f83; - g44 += 0.23904572427272797f * d * f84; - g46 += -0.0690065547823906f * d * f84; - g45 += 0.2182178944349289f * d * f85; - g46 += 0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f42; + g81 += 0.2182178944349289f * d * f43; + g82 += -0.0690065547823906f * d * f42; + g83 += -0.16903084516525269f * d * f45; + g84 += 0.23904572427272797f * d * f44; + g84 += -0.0690065547823906f * d * f46; + g85 += 0.2182178944349289f * d * f45; + g86 += 0.26726123690605164f * d * f46; } { const float d = D(ii, k, 348); - g47 += -0.0690065547823906f * d * f84; - g47 += -0.26726123690605164f * d * f86; + g80 += 0.26726123690605164f * d * f51; + g51 += 0.26726123690605164f * d * f80; + g81 += 0.2182178944349289f * d * f50; + g50 += 0.2182178944349289f * d * f81; + g82 += 0.23904572427272797f * d * f49; + g49 += 0.23904572427272797f * d * f82; + g82 += 0.0690065547823906f * d * f51; + g51 += 0.0690065547823906f * d * f82; + g83 += -0.16903084516525269f * d * f48; + g48 += -0.16903084516525269f * d * f83; + g84 += -0.0690065547823906f * d * f47; + g85 += -0.2182178944349289f * d * f48; + g48 += -0.2182178944349289f * d * f85; + g86 += -0.26726123690605164f * d * f47; } { const float d = D(ii, k, 349); - g47 += 0.2182178944349289f * d * f81; + g81 += 0.2182178944349289f * d * f47; + g82 += 0.2760262191295624f * d * f48; + g48 += 0.2760262191295624f * d * f82; + g83 += 0.29277002811431885f * d * f49; + g49 += 0.29277002811431885f * d * f83; + g84 += 0.2760262191295624f * d * f50; + g50 += 0.2760262191295624f * d * f84; + g85 += 0.2182178944349289f * d * f51; + g51 += 0.2182178944349289f * d * f85; } { const float d = D(ii, k, 350); - g47 += 0.26726123690605164f * d * f80; - g47 += -0.0690065547823906f * d * f82; + g80 += 0.26726123690605164f * d * f47; + g81 += 0.2182178944349289f * d * f48; + g48 += 0.2182178944349289f * d * f81; + g82 += -0.0690065547823906f * d * f47; + g83 += -0.16903084516525269f * d * f50; + g50 += -0.16903084516525269f * d * f83; + g84 += 0.23904572427272797f * d * f49; + g49 += 0.23904572427272797f * d * f84; + g84 += -0.0690065547823906f * d * f51; + g51 += -0.0690065547823906f * d * f84; + g85 += 0.2182178944349289f * d * f50; + g50 += 0.2182178944349289f * d * f85; + g86 += 0.26726123690605164f * d * f51; + g51 += 0.26726123690605164f * d * f86; } { const float d = D(ii, k, 351); - g47 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f47; - g6 += 0.3872983455657959f * d * f48; - g5 += -0.22360679507255554f * d * f49; - g5 += -0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 352); - g5 += 0.3872983455657959f * d * f48; - g6 += 0.4472135901451111f * d * f49; - g7 += 0.3872983455657959f * d * f50; - } - { const float d = D(ii, k, 353); - g47 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f47; - g7 += -0.22360679507255554f * d * f49; - g6 += 0.3872983455657959f * d * f50; - g7 += 0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 354); - g47 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f47; - g9 += 0.3872983455657959f * d * f48; - g8 += -0.22360679507255554f * d * f49; - g8 += -0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 355); - g8 += 0.3872983455657959f * d * f48; - g9 += 0.4472135901451111f * d * f49; - g10 += 0.3872983455657959f * d * f50; - } - { const float d = D(ii, k, 356); - g47 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f47; - g10 += -0.22360679507255554f * d * f49; - g9 += 0.3872983455657959f * d * f50; - g10 += 0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 357); - g47 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f47; - g12 += 0.3872983455657959f * d * f48; - g11 += -0.22360679507255554f * d * f49; - g11 += -0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 358); - g11 += 0.3872983455657959f * d * f48; - g12 += 0.4472135901451111f * d * f49; - g13 += 0.3872983455657959f * d * f50; - } - { const float d = D(ii, k, 359); - g47 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f47; - g13 += -0.22360679507255554f * d * f49; - g12 += 0.3872983455657959f * d * f50; - g13 += 0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 360); - g47 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f47; - g15 += 0.3872983455657959f * d * f48; - g14 += -0.22360679507255554f * d * f49; - g14 += -0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 361); - g14 += 0.3872983455657959f * d * f48; - g15 += 0.4472135901451111f * d * f49; - g16 += 0.3872983455657959f * d * f50; - } - { const float d = D(ii, k, 362); - g47 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f47; - g16 += -0.22360679507255554f * d * f49; - g15 += 0.3872983455657959f * d * f50; - g16 += 0.3872983455657959f * d * f51; - } - dF(ii, k, 0) = g0; - dF(ii, k, 1) = g1; - dF(ii, k, 2) = g2; - dF(ii, k, 3) = g3; - dF(ii, k, 4) = g4; - dF(ii, k, 5) = g5; - dF(ii, k, 6) = g6; - dF(ii, k, 7) = g7; - dF(ii, k, 8) = g8; - dF(ii, k, 9) = g9; - dF(ii, k, 10) = g10; - dF(ii, k, 11) = g11; - dF(ii, k, 12) = g12; - dF(ii, k, 13) = g13; - dF(ii, k, 14) = g14; - dF(ii, k, 15) = g15; - dF(ii, k, 16) = g16; - dF(ii, k, 17) = g17; - dF(ii, k, 18) = g18; - dF(ii, k, 19) = g19; - dF(ii, k, 20) = g20; - dF(ii, k, 21) = g21; - dF(ii, k, 22) = g22; - dF(ii, k, 23) = g23; - dF(ii, k, 24) = g24; - dF(ii, k, 25) = g25; - dF(ii, k, 26) = g26; - dF(ii, k, 27) = g27; - dF(ii, k, 28) = g28; - dF(ii, k, 29) = g29; - dF(ii, k, 30) = g30; - dF(ii, k, 31) = g31; - dF(ii, k, 32) = g32; - dF(ii, k, 33) = g33; - dF(ii, k, 34) = g34; - dF(ii, k, 35) = g35; - dF(ii, k, 36) = g36; - dF(ii, k, 37) = g37; - dF(ii, k, 38) = g38; - dF(ii, k, 39) = g39; - dF(ii, k, 40) = g40; - dF(ii, k, 41) = g41; - dF(ii, k, 42) = g42; - dF(ii, k, 43) = g43; - dF(ii, k, 44) = g44; - dF(ii, k, 45) = g45; - dF(ii, k, 46) = g46; - dF(ii, k, 47) = g47; - } - { - float g48 = 0.0f; - float g49 = 0.0f; - float g50 = 0.0f; - float g51 = 0.0f; - float g52 = 0.0f; - float g53 = 0.0f; - float g54 = 0.0f; - float g55 = 0.0f; - float g56 = 0.0f; - float g57 = 0.0f; - float g58 = 0.0f; - float g59 = 0.0f; - float g60 = 0.0f; - float g61 = 0.0f; - float g62 = 0.0f; - float g63 = 0.0f; - float g64 = 0.0f; - float g65 = 0.0f; - float g66 = 0.0f; - float g67 = 0.0f; - float g68 = 0.0f; - float g69 = 0.0f; - float g70 = 0.0f; - float g71 = 0.0f; - float g72 = 0.0f; - float g73 = 0.0f; - float g74 = 0.0f; - float g75 = 0.0f; - float g76 = 0.0f; - float g77 = 0.0f; - float g78 = 0.0f; - float g79 = 0.0f; - float g80 = 0.0f; - float g81 = 0.0f; - float g82 = 0.0f; - float g83 = 0.0f; - float g84 = 0.0f; - float g85 = 0.0f; - float g86 = 0.0f; - float g87 = 0.0f; - float g88 = 0.0f; - float g89 = 0.0f; - float g90 = 0.0f; - float g91 = 0.0f; - float g92 = 0.0f; - float g93 = 0.0f; - float g94 = 0.0f; - float g95 = 0.0f; - { const float d = D(ii, k, 16); - g48 += 0.20000000298023224f * d * f18; - g49 += 0.20000000298023224f * d * f19; - g50 += 0.20000000298023224f * d * f20; - g51 += 0.20000000298023224f * d * f21; + g48 += 0.3872983455657959f * d * f6; + g49 += -0.22360679507255554f * d * f5; + g51 += -0.3872983455657959f * d * f5; } - { const float d = D(ii, k, 20); - g48 += 0.20000000298023224f * d * f23; - g49 += 0.20000000298023224f * d * f24; - g50 += 0.20000000298023224f * d * f25; - g51 += 0.20000000298023224f * d * f26; + { const float d = D(ii, k, 352); + g48 += 0.3872983455657959f * d * f5; + g49 += 0.4472135901451111f * d * f6; + g50 += 0.3872983455657959f * d * f7; } - { const float d = D(ii, k, 24); - g52 += 0.1428571492433548f * d * f52; - g52 += 0.1428571492433548f * d * f52; - g53 += 0.1428571492433548f * d * f53; - g53 += 0.1428571492433548f * d * f53; - g54 += 0.1428571492433548f * d * f54; - g54 += 0.1428571492433548f * d * f54; - g55 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f55; - g56 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f56; - g57 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f57; - g58 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f58; + { const float d = D(ii, k, 353); + g49 += -0.22360679507255554f * d * f7; + g50 += 0.3872983455657959f * d * f6; + g51 += 0.3872983455657959f * d * f7; } - { const float d = D(ii, k, 25); - g66 += 0.1428571492433548f * d * f52; - g52 += 0.1428571492433548f * d * f66; - g67 += 0.1428571492433548f * d * f53; - g53 += 0.1428571492433548f * d * f67; - g68 += 0.1428571492433548f * d * f54; - g54 += 0.1428571492433548f * d * f68; - g69 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f72; + { const float d = D(ii, k, 354); + g48 += 0.3872983455657959f * d * f9; + g49 += -0.22360679507255554f * d * f8; + g51 += -0.3872983455657959f * d * f8; } - { const float d = D(ii, k, 26); - g80 += 0.1428571492433548f * d * f52; - g52 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f53; - g53 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f54; - g54 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f86; + { const float d = D(ii, k, 355); + g48 += 0.3872983455657959f * d * f8; + g49 += 0.4472135901451111f * d * f9; + g50 += 0.3872983455657959f * d * f10; } - { const float d = D(ii, k, 33); - g48 += 0.20000000298023224f * d * f28; - g49 += 0.20000000298023224f * d * f29; - g50 += 0.20000000298023224f * d * f30; - g51 += 0.20000000298023224f * d * f31; + { const float d = D(ii, k, 356); + g49 += -0.22360679507255554f * d * f10; + g50 += 0.3872983455657959f * d * f9; + g51 += 0.3872983455657959f * d * f10; } - { const float d = D(ii, k, 34); - g87 += 0.1111111119389534f * d * f96; - g88 += 0.1111111119389534f * d * f97; - g89 += 0.1111111119389534f * d * f98; - g90 += 0.1111111119389534f * d * f99; - g91 += 0.1111111119389534f * d * f100; - g92 += 0.1111111119389534f * d * f101; - g93 += 0.1111111119389534f * d * f102; - g94 += 0.1111111119389534f * d * f103; - g95 += 0.1111111119389534f * d * f104; + { const float d = D(ii, k, 357); + g48 += 0.3872983455657959f * d * f12; + g49 += -0.22360679507255554f * d * f11; + g51 += -0.3872983455657959f * d * f11; } - { const float d = D(ii, k, 35); - g87 += 0.1111111119389534f * d * f105; - g88 += 0.1111111119389534f * d * f106; - g89 += 0.1111111119389534f * d * f107; - g90 += 0.1111111119389534f * d * f108; - g91 += 0.1111111119389534f * d * f109; - g92 += 0.1111111119389534f * d * f110; - g93 += 0.1111111119389534f * d * f111; - g94 += 0.1111111119389534f * d * f112; - g95 += 0.1111111119389534f * d * f113; + { const float d = D(ii, k, 358); + g48 += 0.3872983455657959f * d * f11; + g49 += 0.4472135901451111f * d * f12; + g50 += 0.3872983455657959f * d * f13; } - { const float d = D(ii, k, 36); - g87 += 0.1111111119389534f * d * f132; - g88 += 0.1111111119389534f * d * f133; - g89 += 0.1111111119389534f * d * f134; - g90 += 0.1111111119389534f * d * f135; - g91 += 0.1111111119389534f * d * f136; - g92 += 0.1111111119389534f * d * f137; - g93 += 0.1111111119389534f * d * f138; - g94 += 0.1111111119389534f * d * f139; - g95 += 0.1111111119389534f * d * f140; + { const float d = D(ii, k, 359); + g49 += -0.22360679507255554f * d * f13; + g50 += 0.3872983455657959f * d * f12; + g51 += 0.3872983455657959f * d * f13; } - { const float d = D(ii, k, 37); - g80 += 0.1428571492433548f * d * f59; - g59 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f60; - g60 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f61; - g61 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f62; - g62 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f63; - g63 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f64; - g64 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f65; - g65 += 0.1428571492433548f * d * f86; + { const float d = D(ii, k, 360); + g48 += 0.3872983455657959f * d * f15; + g49 += -0.22360679507255554f * d * f14; + g51 += -0.3872983455657959f * d * f14; + } + { const float d = D(ii, k, 361); + g48 += 0.3872983455657959f * d * f14; + g49 += 0.4472135901451111f * d * f15; + g50 += 0.3872983455657959f * d * f16; + } + { const float d = D(ii, k, 362); + g49 += -0.22360679507255554f * d * f16; + g50 += 0.3872983455657959f * d * f15; + g51 += 0.3872983455657959f * d * f16; + } + { const float d = D(ii, k, 363); + g58 += 0.20412415266036987f * d * f132; + g57 += 0.1767766922712326f * d * f133; + g56 += 0.14940357208251953f * d * f134; + g58 += 0.03857583925127983f * d * f134; + g55 += 0.17251639068126678f * d * f135; + g57 += 0.06681530922651291f * d * f135; + g54 += -0.13363061845302582f * d * f136; + g53 += -0.06681530922651291f * d * f137; + g52 += -0.03857583925127983f * d * f138; + g54 += -0.14940357208251953f * d * f138; + g53 += -0.1767766922712326f * d * f139; + g52 += -0.20412415266036987f * d * f140; + } + { const float d = D(ii, k, 364); + g52 += 0.14433756470680237f * d * f133; + g53 += 0.18898223340511322f * d * f134; + g54 += 0.21128855645656586f * d * f135; + g55 += 0.2182178944349289f * d * f136; + g56 += 0.21128855645656586f * d * f137; + g57 += 0.18898223340511322f * d * f138; + g58 += 0.14433756470680237f * d * f139; + } + { const float d = D(ii, k, 365); + g52 += 0.20412415266036987f * d * f132; + g53 += 0.1767766922712326f * d * f133; + g52 += -0.03857583925127983f * d * f134; + g54 += 0.14940357208251953f * d * f134; + g53 += -0.06681530922651291f * d * f135; + g56 += -0.13363061845302582f * d * f136; + g55 += 0.17251639068126678f * d * f137; + g57 += -0.06681530922651291f * d * f137; + g56 += 0.14940357208251953f * d * f138; + g58 += -0.03857583925127983f * d * f138; + g57 += 0.1767766922712326f * d * f139; + g58 += 0.20412415266036987f * d * f140; + } + { const float d = D(ii, k, 366); + g65 += 0.20412415266036987f * d * f132; + g64 += 0.1767766922712326f * d * f133; + g63 += 0.14940357208251953f * d * f134; + g65 += 0.03857583925127983f * d * f134; + g62 += 0.17251639068126678f * d * f135; + g64 += 0.06681530922651291f * d * f135; + g61 += -0.13363061845302582f * d * f136; + g60 += -0.06681530922651291f * d * f137; + g59 += -0.03857583925127983f * d * f138; + g61 += -0.14940357208251953f * d * f138; + g60 += -0.1767766922712326f * d * f139; + g59 += -0.20412415266036987f * d * f140; + } + { const float d = D(ii, k, 367); + g59 += 0.14433756470680237f * d * f133; + g60 += 0.18898223340511322f * d * f134; + g61 += 0.21128855645656586f * d * f135; + g62 += 0.2182178944349289f * d * f136; + g63 += 0.21128855645656586f * d * f137; + g64 += 0.18898223340511322f * d * f138; + g65 += 0.14433756470680237f * d * f139; + } + { const float d = D(ii, k, 368); + g59 += 0.20412415266036987f * d * f132; + g60 += 0.1767766922712326f * d * f133; + g59 += -0.03857583925127983f * d * f134; + g61 += 0.14940357208251953f * d * f134; + g60 += -0.06681530922651291f * d * f135; + g63 += -0.13363061845302582f * d * f136; + g62 += 0.17251639068126678f * d * f137; + g64 += -0.06681530922651291f * d * f137; + g63 += 0.14940357208251953f * d * f138; + g65 += -0.03857583925127983f * d * f138; + g64 += 0.1767766922712326f * d * f139; + g65 += 0.20412415266036987f * d * f140; + } + { const float d = D(ii, k, 369); + g72 += 0.20412415266036987f * d * f132; + g71 += 0.1767766922712326f * d * f133; + g70 += 0.14940357208251953f * d * f134; + g72 += 0.03857583925127983f * d * f134; + g69 += 0.17251639068126678f * d * f135; + g71 += 0.06681530922651291f * d * f135; + g68 += -0.13363061845302582f * d * f136; + g67 += -0.06681530922651291f * d * f137; + g66 += -0.03857583925127983f * d * f138; + g68 += -0.14940357208251953f * d * f138; + g67 += -0.1767766922712326f * d * f139; + g66 += -0.20412415266036987f * d * f140; + } + { const float d = D(ii, k, 370); + g66 += 0.14433756470680237f * d * f133; + g67 += 0.18898223340511322f * d * f134; + g68 += 0.21128855645656586f * d * f135; + g69 += 0.2182178944349289f * d * f136; + g70 += 0.21128855645656586f * d * f137; + g71 += 0.18898223340511322f * d * f138; + g72 += 0.14433756470680237f * d * f139; + } + { const float d = D(ii, k, 371); + g66 += 0.20412415266036987f * d * f132; + g67 += 0.1767766922712326f * d * f133; + g66 += -0.03857583925127983f * d * f134; + g68 += 0.14940357208251953f * d * f134; + g67 += -0.06681530922651291f * d * f135; + g70 += -0.13363061845302582f * d * f136; + g69 += 0.17251639068126678f * d * f137; + g71 += -0.06681530922651291f * d * f137; + g70 += 0.14940357208251953f * d * f138; + g72 += -0.03857583925127983f * d * f138; + g71 += 0.1767766922712326f * d * f139; + g72 += 0.20412415266036987f * d * f140; } - { const float d = D(ii, k, 41); - g48 += 0.20000000298023224f * d * f33; - g49 += 0.20000000298023224f * d * f34; - g50 += 0.20000000298023224f * d * f35; - g51 += 0.20000000298023224f * d * f36; + { const float d = D(ii, k, 372); + g79 += 0.20412415266036987f * d * f132; + g78 += 0.1767766922712326f * d * f133; + g77 += 0.14940357208251953f * d * f134; + g79 += 0.03857583925127983f * d * f134; + g76 += 0.17251639068126678f * d * f135; + g78 += 0.06681530922651291f * d * f135; + g75 += -0.13363061845302582f * d * f136; + g74 += -0.06681530922651291f * d * f137; + g73 += -0.03857583925127983f * d * f138; + g75 += -0.14940357208251953f * d * f138; + g74 += -0.1767766922712326f * d * f139; + g73 += -0.20412415266036987f * d * f140; } - { const float d = D(ii, k, 47); - g66 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f66; - g67 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f67; - g68 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f68; - g69 += 0.1428571492433548f * d * f69; - g69 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f70; - g70 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f71; - g71 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f72; - g72 += 0.1428571492433548f * d * f72; + { const float d = D(ii, k, 373); + g73 += 0.14433756470680237f * d * f133; + g74 += 0.18898223340511322f * d * f134; + g75 += 0.21128855645656586f * d * f135; + g76 += 0.2182178944349289f * d * f136; + g77 += 0.21128855645656586f * d * f137; + g78 += 0.18898223340511322f * d * f138; + g79 += 0.14433756470680237f * d * f139; } - { const float d = D(ii, k, 48); - g73 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f75; - g76 += 0.1428571492433548f * d * f69; - g69 += 0.1428571492433548f * d * f76; - g77 += 0.1428571492433548f * d * f70; - g70 += 0.1428571492433548f * d * f77; - g78 += 0.1428571492433548f * d * f71; - g71 += 0.1428571492433548f * d * f78; - g79 += 0.1428571492433548f * d * f72; - g72 += 0.1428571492433548f * d * f79; + { const float d = D(ii, k, 374); + g73 += 0.20412415266036987f * d * f132; + g74 += 0.1767766922712326f * d * f133; + g73 += -0.03857583925127983f * d * f134; + g75 += 0.14940357208251953f * d * f134; + g74 += -0.06681530922651291f * d * f135; + g77 += -0.13363061845302582f * d * f136; + g76 += 0.17251639068126678f * d * f137; + g78 += -0.06681530922651291f * d * f137; + g77 += 0.14940357208251953f * d * f138; + g79 += -0.03857583925127983f * d * f138; + g78 += 0.1767766922712326f * d * f139; + g79 += 0.20412415266036987f * d * f140; } - { const float d = D(ii, k, 49); - g80 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f69; - g69 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f70; - g70 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f71; - g71 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f72; - g72 += 0.1428571492433548f * d * f86; + { const float d = D(ii, k, 375); + g86 += 0.20412415266036987f * d * f132; + g85 += 0.1767766922712326f * d * f133; + g84 += 0.14940357208251953f * d * f134; + g86 += 0.03857583925127983f * d * f134; + g83 += 0.17251639068126678f * d * f135; + g85 += 0.06681530922651291f * d * f135; + g82 += -0.13363061845302582f * d * f136; + g81 += -0.06681530922651291f * d * f137; + g80 += -0.03857583925127983f * d * f138; + g82 += -0.14940357208251953f * d * f138; + g81 += -0.1767766922712326f * d * f139; + g80 += -0.20412415266036987f * d * f140; } - { const float d = D(ii, k, 54); - g48 += 0.20000000298023224f * d * f38; - g49 += 0.20000000298023224f * d * f39; - g50 += 0.20000000298023224f * d * f40; - g51 += 0.20000000298023224f * d * f41; + { const float d = D(ii, k, 376); + g80 += 0.14433756470680237f * d * f133; + g81 += 0.18898223340511322f * d * f134; + g82 += 0.21128855645656586f * d * f135; + g83 += 0.2182178944349289f * d * f136; + g84 += 0.21128855645656586f * d * f137; + g85 += 0.18898223340511322f * d * f138; + g86 += 0.14433756470680237f * d * f139; } - { const float d = D(ii, k, 59); - g73 += 0.1428571492433548f * d * f73; - g73 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f74; - g74 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f75; - g75 += 0.1428571492433548f * d * f75; - g76 += 0.1428571492433548f * d * f76; - g76 += 0.1428571492433548f * d * f76; - g77 += 0.1428571492433548f * d * f77; - g77 += 0.1428571492433548f * d * f77; - g78 += 0.1428571492433548f * d * f78; - g78 += 0.1428571492433548f * d * f78; - g79 += 0.1428571492433548f * d * f79; - g79 += 0.1428571492433548f * d * f79; + { const float d = D(ii, k, 377); + g80 += 0.20412415266036987f * d * f132; + g81 += 0.1767766922712326f * d * f133; + g80 += -0.03857583925127983f * d * f134; + g82 += 0.14940357208251953f * d * f134; + g81 += -0.06681530922651291f * d * f135; + g84 += -0.13363061845302582f * d * f136; + g83 += 0.17251639068126678f * d * f137; + g85 += -0.06681530922651291f * d * f137; + g84 += 0.14940357208251953f * d * f138; + g86 += -0.03857583925127983f * d * f138; + g85 += 0.1767766922712326f * d * f139; + g86 += 0.20412415266036987f * d * f140; } - { const float d = D(ii, k, 60); - g80 += 0.1428571492433548f * d * f73; - g73 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f74; - g74 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f75; - g75 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f76; - g76 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f77; - g77 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f78; - g78 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f79; - g79 += 0.1428571492433548f * d * f86; + if constexpr (ACC) { + dF(ii, k, 48) += g48; + dF(ii, k, 49) += g49; + dF(ii, k, 50) += g50; + dF(ii, k, 51) += g51; + dF(ii, k, 52) += g52; + dF(ii, k, 53) += g53; + dF(ii, k, 54) += g54; + dF(ii, k, 55) += g55; + dF(ii, k, 56) += g56; + dF(ii, k, 57) += g57; + dF(ii, k, 58) += g58; + dF(ii, k, 59) += g59; + dF(ii, k, 60) += g60; + dF(ii, k, 61) += g61; + dF(ii, k, 62) += g62; + dF(ii, k, 63) += g63; + dF(ii, k, 64) += g64; + dF(ii, k, 65) += g65; + dF(ii, k, 66) += g66; + dF(ii, k, 67) += g67; + dF(ii, k, 68) += g68; + dF(ii, k, 69) += g69; + dF(ii, k, 70) += g70; + dF(ii, k, 71) += g71; + dF(ii, k, 72) += g72; + dF(ii, k, 73) += g73; + dF(ii, k, 74) += g74; + dF(ii, k, 75) += g75; + dF(ii, k, 76) += g76; + dF(ii, k, 77) += g77; + dF(ii, k, 78) += g78; + dF(ii, k, 79) += g79; + dF(ii, k, 80) += g80; + dF(ii, k, 81) += g81; + dF(ii, k, 82) += g82; + dF(ii, k, 83) += g83; + dF(ii, k, 84) += g84; + dF(ii, k, 85) += g85; + dF(ii, k, 86) += g86; + dF(ii, k, 87) += g87; + dF(ii, k, 88) += g88; + dF(ii, k, 89) += g89; + dF(ii, k, 90) += g90; + dF(ii, k, 91) += g91; + dF(ii, k, 92) += g92; + dF(ii, k, 93) += g93; + dF(ii, k, 94) += g94; + dF(ii, k, 95) += g95; + } else { + dF(ii, k, 48) = g48; + dF(ii, k, 49) = g49; + dF(ii, k, 50) = g50; + dF(ii, k, 51) = g51; + dF(ii, k, 52) = g52; + dF(ii, k, 53) = g53; + dF(ii, k, 54) = g54; + dF(ii, k, 55) = g55; + dF(ii, k, 56) = g56; + dF(ii, k, 57) = g57; + dF(ii, k, 58) = g58; + dF(ii, k, 59) = g59; + dF(ii, k, 60) = g60; + dF(ii, k, 61) = g61; + dF(ii, k, 62) = g62; + dF(ii, k, 63) = g63; + dF(ii, k, 64) = g64; + dF(ii, k, 65) = g65; + dF(ii, k, 66) = g66; + dF(ii, k, 67) = g67; + dF(ii, k, 68) = g68; + dF(ii, k, 69) = g69; + dF(ii, k, 70) = g70; + dF(ii, k, 71) = g71; + dF(ii, k, 72) = g72; + dF(ii, k, 73) = g73; + dF(ii, k, 74) = g74; + dF(ii, k, 75) = g75; + dF(ii, k, 76) = g76; + dF(ii, k, 77) = g77; + dF(ii, k, 78) = g78; + dF(ii, k, 79) = g79; + dF(ii, k, 80) = g80; + dF(ii, k, 81) = g81; + dF(ii, k, 82) = g82; + dF(ii, k, 83) = g83; + dF(ii, k, 84) = g84; + dF(ii, k, 85) = g85; + dF(ii, k, 86) = g86; + dF(ii, k, 87) = g87; + dF(ii, k, 88) = g88; + dF(ii, k, 89) = g89; + dF(ii, k, 90) = g90; + dF(ii, k, 91) = g91; + dF(ii, k, 92) = g92; + dF(ii, k, 93) = g93; + dF(ii, k, 94) = g94; + dF(ii, k, 95) = g95; } - { const float d = D(ii, k, 62); - g48 += 0.20000000298023224f * d * f43; - g49 += 0.20000000298023224f * d * f44; - g50 += 0.20000000298023224f * d * f45; - g51 += 0.20000000298023224f * d * f46; + } + { + float g96 = 0.0f; + float g97 = 0.0f; + float g98 = 0.0f; + float g99 = 0.0f; + float g100 = 0.0f; + float g101 = 0.0f; + float g102 = 0.0f; + float g103 = 0.0f; + float g104 = 0.0f; + float g105 = 0.0f; + float g106 = 0.0f; + float g107 = 0.0f; + float g108 = 0.0f; + float g109 = 0.0f; + float g110 = 0.0f; + float g111 = 0.0f; + float g112 = 0.0f; + float g113 = 0.0f; + float g114 = 0.0f; + float g115 = 0.0f; + float g116 = 0.0f; + float g117 = 0.0f; + float g118 = 0.0f; + float g119 = 0.0f; + float g120 = 0.0f; + float g121 = 0.0f; + float g122 = 0.0f; + float g123 = 0.0f; + float g124 = 0.0f; + float g125 = 0.0f; + float g126 = 0.0f; + float g127 = 0.0f; + float g128 = 0.0f; + float g129 = 0.0f; + float g130 = 0.0f; + float g131 = 0.0f; + float g132 = 0.0f; + float g133 = 0.0f; + float g134 = 0.0f; + float g135 = 0.0f; + float g136 = 0.0f; + float g137 = 0.0f; + float g138 = 0.0f; + float g139 = 0.0f; + float g140 = 0.0f; + { const float d = D(ii, k, 34); + g96 += 0.1111111119389534f * d * f87; + g97 += 0.1111111119389534f * d * f88; + g98 += 0.1111111119389534f * d * f89; + g99 += 0.1111111119389534f * d * f90; + g100 += 0.1111111119389534f * d * f91; + g101 += 0.1111111119389534f * d * f92; + g102 += 0.1111111119389534f * d * f93; + g103 += 0.1111111119389534f * d * f94; + g104 += 0.1111111119389534f * d * f95; } - { const float d = D(ii, k, 65); - g80 += 0.1428571492433548f * d * f80; - g80 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f81; - g81 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f82; - g82 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f83; - g83 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f84; - g84 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f85; - g85 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f86; - g86 += 0.1428571492433548f * d * f86; + { const float d = D(ii, k, 35); + g105 += 0.1111111119389534f * d * f87; + g106 += 0.1111111119389534f * d * f88; + g107 += 0.1111111119389534f * d * f89; + g108 += 0.1111111119389534f * d * f90; + g109 += 0.1111111119389534f * d * f91; + g110 += 0.1111111119389534f * d * f92; + g111 += 0.1111111119389534f * d * f93; + g112 += 0.1111111119389534f * d * f94; + g113 += 0.1111111119389534f * d * f95; } - { const float d = D(ii, k, 67); - g48 += 0.20000000298023224f * d * f48; - g48 += 0.20000000298023224f * d * f48; - g49 += 0.20000000298023224f * d * f49; - g49 += 0.20000000298023224f * d * f49; - g50 += 0.20000000298023224f * d * f50; - g50 += 0.20000000298023224f * d * f50; - g51 += 0.20000000298023224f * d * f51; - g51 += 0.20000000298023224f * d * f51; + { const float d = D(ii, k, 36); + g132 += 0.1111111119389534f * d * f87; + g133 += 0.1111111119389534f * d * f88; + g134 += 0.1111111119389534f * d * f89; + g135 += 0.1111111119389534f * d * f90; + g136 += 0.1111111119389534f * d * f91; + g137 += 0.1111111119389534f * d * f92; + g138 += 0.1111111119389534f * d * f93; + g139 += 0.1111111119389534f * d * f94; + g140 += 0.1111111119389534f * d * f95; } - { const float d = D(ii, k, 117); - g52 += 0.26726123690605164f * d * f21; - g53 += 0.2182178944349289f * d * f20; - g54 += 0.23904572427272797f * d * f19; - g54 += 0.0690065547823906f * d * f21; - g55 += -0.16903084516525269f * d * f18; - g56 += -0.0690065547823906f * d * f17; - g57 += -0.2182178944349289f * d * f18; - g58 += -0.26726123690605164f * d * f17; + { const float d = D(ii, k, 42); + g96 += 0.1111111119389534f * d * f96; + g96 += 0.1111111119389534f * d * f96; + g97 += 0.1111111119389534f * d * f97; + g97 += 0.1111111119389534f * d * f97; + g98 += 0.1111111119389534f * d * f98; + g98 += 0.1111111119389534f * d * f98; + g99 += 0.1111111119389534f * d * f99; + g99 += 0.1111111119389534f * d * f99; + g100 += 0.1111111119389534f * d * f100; + g100 += 0.1111111119389534f * d * f100; + g101 += 0.1111111119389534f * d * f101; + g101 += 0.1111111119389534f * d * f101; + g102 += 0.1111111119389534f * d * f102; + g102 += 0.1111111119389534f * d * f102; + g103 += 0.1111111119389534f * d * f103; + g103 += 0.1111111119389534f * d * f103; + g104 += 0.1111111119389534f * d * f104; + g104 += 0.1111111119389534f * d * f104; } - { const float d = D(ii, k, 118); - g53 += 0.2182178944349289f * d * f17; - g54 += 0.2760262191295624f * d * f18; - g55 += 0.29277002811431885f * d * f19; - g56 += 0.2760262191295624f * d * f20; - g57 += 0.2182178944349289f * d * f21; + { const float d = D(ii, k, 43); + g123 += 0.1111111119389534f * d * f96; + g96 += 0.1111111119389534f * d * f123; + g124 += 0.1111111119389534f * d * f97; + g97 += 0.1111111119389534f * d * f124; + g125 += 0.1111111119389534f * d * f98; + g98 += 0.1111111119389534f * d * f125; + g126 += 0.1111111119389534f * d * f99; + g99 += 0.1111111119389534f * d * f126; + g127 += 0.1111111119389534f * d * f100; + g100 += 0.1111111119389534f * d * f127; + g128 += 0.1111111119389534f * d * f101; + g101 += 0.1111111119389534f * d * f128; + g129 += 0.1111111119389534f * d * f102; + g102 += 0.1111111119389534f * d * f129; + g130 += 0.1111111119389534f * d * f103; + g103 += 0.1111111119389534f * d * f130; + g131 += 0.1111111119389534f * d * f104; + g104 += 0.1111111119389534f * d * f131; } - { const float d = D(ii, k, 119); - g52 += 0.26726123690605164f * d * f17; - g53 += 0.2182178944349289f * d * f18; - g54 += -0.0690065547823906f * d * f17; - g55 += -0.16903084516525269f * d * f20; - g56 += 0.23904572427272797f * d * f19; - g56 += -0.0690065547823906f * d * f21; - g57 += 0.2182178944349289f * d * f20; - g58 += 0.26726123690605164f * d * f21; + { const float d = D(ii, k, 44); + g132 += 0.1111111119389534f * d * f96; + g96 += 0.1111111119389534f * d * f132; + g133 += 0.1111111119389534f * d * f97; + g97 += 0.1111111119389534f * d * f133; + g134 += 0.1111111119389534f * d * f98; + g98 += 0.1111111119389534f * d * f134; + g135 += 0.1111111119389534f * d * f99; + g99 += 0.1111111119389534f * d * f135; + g136 += 0.1111111119389534f * d * f100; + g100 += 0.1111111119389534f * d * f136; + g137 += 0.1111111119389534f * d * f101; + g101 += 0.1111111119389534f * d * f137; + g138 += 0.1111111119389534f * d * f102; + g102 += 0.1111111119389534f * d * f138; + g139 += 0.1111111119389534f * d * f103; + g103 += 0.1111111119389534f * d * f139; + g140 += 0.1111111119389534f * d * f104; + g104 += 0.1111111119389534f * d * f140; } - { const float d = D(ii, k, 120); - g52 += 0.26726123690605164f * d * f26; - g53 += 0.2182178944349289f * d * f25; - g54 += 0.23904572427272797f * d * f24; - g54 += 0.0690065547823906f * d * f26; - g55 += -0.16903084516525269f * d * f23; - g56 += -0.0690065547823906f * d * f22; - g57 += -0.2182178944349289f * d * f23; - g58 += -0.26726123690605164f * d * f22; + { const float d = D(ii, k, 55); + g105 += 0.1111111119389534f * d * f105; + g105 += 0.1111111119389534f * d * f105; + g106 += 0.1111111119389534f * d * f106; + g106 += 0.1111111119389534f * d * f106; + g107 += 0.1111111119389534f * d * f107; + g107 += 0.1111111119389534f * d * f107; + g108 += 0.1111111119389534f * d * f108; + g108 += 0.1111111119389534f * d * f108; + g109 += 0.1111111119389534f * d * f109; + g109 += 0.1111111119389534f * d * f109; + g110 += 0.1111111119389534f * d * f110; + g110 += 0.1111111119389534f * d * f110; + g111 += 0.1111111119389534f * d * f111; + g111 += 0.1111111119389534f * d * f111; + g112 += 0.1111111119389534f * d * f112; + g112 += 0.1111111119389534f * d * f112; + g113 += 0.1111111119389534f * d * f113; + g113 += 0.1111111119389534f * d * f113; } - { const float d = D(ii, k, 121); - g53 += 0.2182178944349289f * d * f22; - g54 += 0.2760262191295624f * d * f23; - g55 += 0.29277002811431885f * d * f24; - g56 += 0.2760262191295624f * d * f25; - g57 += 0.2182178944349289f * d * f26; + { const float d = D(ii, k, 56); + g123 += 0.1111111119389534f * d * f105; + g105 += 0.1111111119389534f * d * f123; + g124 += 0.1111111119389534f * d * f106; + g106 += 0.1111111119389534f * d * f124; + g125 += 0.1111111119389534f * d * f107; + g107 += 0.1111111119389534f * d * f125; + g126 += 0.1111111119389534f * d * f108; + g108 += 0.1111111119389534f * d * f126; + g127 += 0.1111111119389534f * d * f109; + g109 += 0.1111111119389534f * d * f127; + g128 += 0.1111111119389534f * d * f110; + g110 += 0.1111111119389534f * d * f128; + g129 += 0.1111111119389534f * d * f111; + g111 += 0.1111111119389534f * d * f129; + g130 += 0.1111111119389534f * d * f112; + g112 += 0.1111111119389534f * d * f130; + g131 += 0.1111111119389534f * d * f113; + g113 += 0.1111111119389534f * d * f131; } - { const float d = D(ii, k, 122); - g52 += 0.26726123690605164f * d * f22; - g53 += 0.2182178944349289f * d * f23; - g54 += -0.0690065547823906f * d * f22; - g55 += -0.16903084516525269f * d * f25; - g56 += 0.23904572427272797f * d * f24; - g56 += -0.0690065547823906f * d * f26; - g57 += 0.2182178944349289f * d * f25; - g58 += 0.26726123690605164f * d * f26; + { const float d = D(ii, k, 57); + g132 += 0.1111111119389534f * d * f105; + g105 += 0.1111111119389534f * d * f132; + g133 += 0.1111111119389534f * d * f106; + g106 += 0.1111111119389534f * d * f133; + g134 += 0.1111111119389534f * d * f107; + g107 += 0.1111111119389534f * d * f134; + g135 += 0.1111111119389534f * d * f108; + g108 += 0.1111111119389534f * d * f135; + g136 += 0.1111111119389534f * d * f109; + g109 += 0.1111111119389534f * d * f136; + g137 += 0.1111111119389534f * d * f110; + g110 += 0.1111111119389534f * d * f137; + g138 += 0.1111111119389534f * d * f111; + g111 += 0.1111111119389534f * d * f138; + g139 += 0.1111111119389534f * d * f112; + g112 += 0.1111111119389534f * d * f139; + g140 += 0.1111111119389534f * d * f113; + g113 += 0.1111111119389534f * d * f140; } - { const float d = D(ii, k, 123); - g52 += 0.26726123690605164f * d * f31; - g53 += 0.2182178944349289f * d * f30; - g54 += 0.23904572427272797f * d * f29; - g54 += 0.0690065547823906f * d * f31; - g55 += -0.16903084516525269f * d * f28; - g56 += -0.0690065547823906f * d * f27; - g57 += -0.2182178944349289f * d * f28; - g58 += -0.26726123690605164f * d * f27; + { const float d = D(ii, k, 58); + g132 += 0.1111111119389534f * d * f114; + g114 += 0.1111111119389534f * d * f132; + g133 += 0.1111111119389534f * d * f115; + g115 += 0.1111111119389534f * d * f133; + g134 += 0.1111111119389534f * d * f116; + g116 += 0.1111111119389534f * d * f134; + g135 += 0.1111111119389534f * d * f117; + g117 += 0.1111111119389534f * d * f135; + g136 += 0.1111111119389534f * d * f118; + g118 += 0.1111111119389534f * d * f136; + g137 += 0.1111111119389534f * d * f119; + g119 += 0.1111111119389534f * d * f137; + g138 += 0.1111111119389534f * d * f120; + g120 += 0.1111111119389534f * d * f138; + g139 += 0.1111111119389534f * d * f121; + g121 += 0.1111111119389534f * d * f139; + g140 += 0.1111111119389534f * d * f122; + g122 += 0.1111111119389534f * d * f140; } - { const float d = D(ii, k, 124); - g53 += 0.2182178944349289f * d * f27; - g54 += 0.2760262191295624f * d * f28; - g55 += 0.29277002811431885f * d * f29; - g56 += 0.2760262191295624f * d * f30; - g57 += 0.2182178944349289f * d * f31; + { const float d = D(ii, k, 63); + g123 += 0.1111111119389534f * d * f123; + g123 += 0.1111111119389534f * d * f123; + g124 += 0.1111111119389534f * d * f124; + g124 += 0.1111111119389534f * d * f124; + g125 += 0.1111111119389534f * d * f125; + g125 += 0.1111111119389534f * d * f125; + g126 += 0.1111111119389534f * d * f126; + g126 += 0.1111111119389534f * d * f126; + g127 += 0.1111111119389534f * d * f127; + g127 += 0.1111111119389534f * d * f127; + g128 += 0.1111111119389534f * d * f128; + g128 += 0.1111111119389534f * d * f128; + g129 += 0.1111111119389534f * d * f129; + g129 += 0.1111111119389534f * d * f129; + g130 += 0.1111111119389534f * d * f130; + g130 += 0.1111111119389534f * d * f130; + g131 += 0.1111111119389534f * d * f131; + g131 += 0.1111111119389534f * d * f131; } - { const float d = D(ii, k, 125); - g52 += 0.26726123690605164f * d * f27; - g53 += 0.2182178944349289f * d * f28; - g54 += -0.0690065547823906f * d * f27; - g55 += -0.16903084516525269f * d * f30; - g56 += 0.23904572427272797f * d * f29; - g56 += -0.0690065547823906f * d * f31; - g57 += 0.2182178944349289f * d * f30; - g58 += 0.26726123690605164f * d * f31; + { const float d = D(ii, k, 68); + g132 += 0.1111111119389534f * d * f132; + g132 += 0.1111111119389534f * d * f132; + g133 += 0.1111111119389534f * d * f133; + g133 += 0.1111111119389534f * d * f133; + g134 += 0.1111111119389534f * d * f134; + g134 += 0.1111111119389534f * d * f134; + g135 += 0.1111111119389534f * d * f135; + g135 += 0.1111111119389534f * d * f135; + g136 += 0.1111111119389534f * d * f136; + g136 += 0.1111111119389534f * d * f136; + g137 += 0.1111111119389534f * d * f137; + g137 += 0.1111111119389534f * d * f137; + g138 += 0.1111111119389534f * d * f138; + g138 += 0.1111111119389534f * d * f138; + g139 += 0.1111111119389534f * d * f139; + g139 += 0.1111111119389534f * d * f139; + g140 += 0.1111111119389534f * d * f140; + g140 += 0.1111111119389534f * d * f140; + } + { const float d = D(ii, k, 189); + g96 += 0.20412415266036987f * d * f58; + g97 += 0.1767766922712326f * d * f57; + g98 += 0.14940357208251953f * d * f56; + g98 += 0.03857583925127983f * d * f58; + g99 += 0.17251639068126678f * d * f55; + g99 += 0.06681530922651291f * d * f57; + g100 += -0.13363061845302582f * d * f54; + g101 += -0.06681530922651291f * d * f53; + g102 += -0.03857583925127983f * d * f52; + g102 += -0.14940357208251953f * d * f54; + g103 += -0.1767766922712326f * d * f53; + g104 += -0.20412415266036987f * d * f52; } - { const float d = D(ii, k, 126); - g52 += 0.26726123690605164f * d * f36; - g53 += 0.2182178944349289f * d * f35; - g54 += 0.23904572427272797f * d * f34; - g54 += 0.0690065547823906f * d * f36; - g55 += -0.16903084516525269f * d * f33; - g56 += -0.0690065547823906f * d * f32; - g57 += -0.2182178944349289f * d * f33; - g58 += -0.26726123690605164f * d * f32; + { const float d = D(ii, k, 190); + g97 += 0.14433756470680237f * d * f52; + g98 += 0.18898223340511322f * d * f53; + g99 += 0.21128855645656586f * d * f54; + g100 += 0.2182178944349289f * d * f55; + g101 += 0.21128855645656586f * d * f56; + g102 += 0.18898223340511322f * d * f57; + g103 += 0.14433756470680237f * d * f58; } - { const float d = D(ii, k, 127); - g53 += 0.2182178944349289f * d * f32; - g54 += 0.2760262191295624f * d * f33; - g55 += 0.29277002811431885f * d * f34; - g56 += 0.2760262191295624f * d * f35; - g57 += 0.2182178944349289f * d * f36; + { const float d = D(ii, k, 191); + g96 += 0.20412415266036987f * d * f52; + g97 += 0.1767766922712326f * d * f53; + g98 += -0.03857583925127983f * d * f52; + g98 += 0.14940357208251953f * d * f54; + g99 += -0.06681530922651291f * d * f53; + g100 += -0.13363061845302582f * d * f56; + g101 += 0.17251639068126678f * d * f55; + g101 += -0.06681530922651291f * d * f57; + g102 += 0.14940357208251953f * d * f56; + g102 += -0.03857583925127983f * d * f58; + g103 += 0.1767766922712326f * d * f57; + g104 += 0.20412415266036987f * d * f58; } - { const float d = D(ii, k, 128); - g52 += 0.26726123690605164f * d * f32; - g53 += 0.2182178944349289f * d * f33; - g54 += -0.0690065547823906f * d * f32; - g55 += -0.16903084516525269f * d * f35; - g56 += 0.23904572427272797f * d * f34; - g56 += -0.0690065547823906f * d * f36; - g57 += 0.2182178944349289f * d * f35; - g58 += 0.26726123690605164f * d * f36; + { const float d = D(ii, k, 192); + g96 += 0.20412415266036987f * d * f65; + g97 += 0.1767766922712326f * d * f64; + g98 += 0.14940357208251953f * d * f63; + g98 += 0.03857583925127983f * d * f65; + g99 += 0.17251639068126678f * d * f62; + g99 += 0.06681530922651291f * d * f64; + g100 += -0.13363061845302582f * d * f61; + g101 += -0.06681530922651291f * d * f60; + g102 += -0.03857583925127983f * d * f59; + g102 += -0.14940357208251953f * d * f61; + g103 += -0.1767766922712326f * d * f60; + g104 += -0.20412415266036987f * d * f59; } - { const float d = D(ii, k, 129); - g52 += 0.26726123690605164f * d * f41; - g53 += 0.2182178944349289f * d * f40; - g54 += 0.23904572427272797f * d * f39; - g54 += 0.0690065547823906f * d * f41; - g55 += -0.16903084516525269f * d * f38; - g56 += -0.0690065547823906f * d * f37; - g57 += -0.2182178944349289f * d * f38; - g58 += -0.26726123690605164f * d * f37; + { const float d = D(ii, k, 193); + g97 += 0.14433756470680237f * d * f59; + g98 += 0.18898223340511322f * d * f60; + g99 += 0.21128855645656586f * d * f61; + g100 += 0.2182178944349289f * d * f62; + g101 += 0.21128855645656586f * d * f63; + g102 += 0.18898223340511322f * d * f64; + g103 += 0.14433756470680237f * d * f65; } - { const float d = D(ii, k, 130); - g53 += 0.2182178944349289f * d * f37; - g54 += 0.2760262191295624f * d * f38; - g55 += 0.29277002811431885f * d * f39; - g56 += 0.2760262191295624f * d * f40; - g57 += 0.2182178944349289f * d * f41; + { const float d = D(ii, k, 194); + g96 += 0.20412415266036987f * d * f59; + g97 += 0.1767766922712326f * d * f60; + g98 += -0.03857583925127983f * d * f59; + g98 += 0.14940357208251953f * d * f61; + g99 += -0.06681530922651291f * d * f60; + g100 += -0.13363061845302582f * d * f63; + g101 += 0.17251639068126678f * d * f62; + g101 += -0.06681530922651291f * d * f64; + g102 += 0.14940357208251953f * d * f63; + g102 += -0.03857583925127983f * d * f65; + g103 += 0.1767766922712326f * d * f64; + g104 += 0.20412415266036987f * d * f65; } - { const float d = D(ii, k, 131); - g52 += 0.26726123690605164f * d * f37; - g53 += 0.2182178944349289f * d * f38; - g54 += -0.0690065547823906f * d * f37; - g55 += -0.16903084516525269f * d * f40; - g56 += 0.23904572427272797f * d * f39; - g56 += -0.0690065547823906f * d * f41; - g57 += 0.2182178944349289f * d * f40; - g58 += 0.26726123690605164f * d * f41; + { const float d = D(ii, k, 195); + g96 += 0.20412415266036987f * d * f72; + g97 += 0.1767766922712326f * d * f71; + g98 += 0.14940357208251953f * d * f70; + g98 += 0.03857583925127983f * d * f72; + g99 += 0.17251639068126678f * d * f69; + g99 += 0.06681530922651291f * d * f71; + g100 += -0.13363061845302582f * d * f68; + g101 += -0.06681530922651291f * d * f67; + g102 += -0.03857583925127983f * d * f66; + g102 += -0.14940357208251953f * d * f68; + g103 += -0.1767766922712326f * d * f67; + g104 += -0.20412415266036987f * d * f66; } - { const float d = D(ii, k, 132); - g52 += 0.26726123690605164f * d * f46; - g53 += 0.2182178944349289f * d * f45; - g54 += 0.23904572427272797f * d * f44; - g54 += 0.0690065547823906f * d * f46; - g55 += -0.16903084516525269f * d * f43; - g56 += -0.0690065547823906f * d * f42; - g57 += -0.2182178944349289f * d * f43; - g58 += -0.26726123690605164f * d * f42; + { const float d = D(ii, k, 196); + g97 += 0.14433756470680237f * d * f66; + g98 += 0.18898223340511322f * d * f67; + g99 += 0.21128855645656586f * d * f68; + g100 += 0.2182178944349289f * d * f69; + g101 += 0.21128855645656586f * d * f70; + g102 += 0.18898223340511322f * d * f71; + g103 += 0.14433756470680237f * d * f72; } - { const float d = D(ii, k, 133); - g53 += 0.2182178944349289f * d * f42; - g54 += 0.2760262191295624f * d * f43; - g55 += 0.29277002811431885f * d * f44; - g56 += 0.2760262191295624f * d * f45; - g57 += 0.2182178944349289f * d * f46; + { const float d = D(ii, k, 197); + g96 += 0.20412415266036987f * d * f66; + g97 += 0.1767766922712326f * d * f67; + g98 += -0.03857583925127983f * d * f66; + g98 += 0.14940357208251953f * d * f68; + g99 += -0.06681530922651291f * d * f67; + g100 += -0.13363061845302582f * d * f70; + g101 += 0.17251639068126678f * d * f69; + g101 += -0.06681530922651291f * d * f71; + g102 += 0.14940357208251953f * d * f70; + g102 += -0.03857583925127983f * d * f72; + g103 += 0.1767766922712326f * d * f71; + g104 += 0.20412415266036987f * d * f72; } - { const float d = D(ii, k, 134); - g52 += 0.26726123690605164f * d * f42; - g53 += 0.2182178944349289f * d * f43; - g54 += -0.0690065547823906f * d * f42; - g55 += -0.16903084516525269f * d * f45; - g56 += 0.23904572427272797f * d * f44; - g56 += -0.0690065547823906f * d * f46; - g57 += 0.2182178944349289f * d * f45; - g58 += 0.26726123690605164f * d * f46; + { const float d = D(ii, k, 198); + g96 += 0.20412415266036987f * d * f79; + g97 += 0.1767766922712326f * d * f78; + g98 += 0.14940357208251953f * d * f77; + g98 += 0.03857583925127983f * d * f79; + g99 += 0.17251639068126678f * d * f76; + g99 += 0.06681530922651291f * d * f78; + g100 += -0.13363061845302582f * d * f75; + g101 += -0.06681530922651291f * d * f74; + g102 += -0.03857583925127983f * d * f73; + g102 += -0.14940357208251953f * d * f75; + g103 += -0.1767766922712326f * d * f74; + g104 += -0.20412415266036987f * d * f73; } - { const float d = D(ii, k, 135); - g52 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f52; - g53 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f53; - g54 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f54; - g54 += 0.0690065547823906f * d * f51; - g51 += 0.0690065547823906f * d * f54; - g55 += -0.16903084516525269f * d * f48; - g48 += -0.16903084516525269f * d * f55; - g56 += -0.0690065547823906f * d * f47; - g57 += -0.2182178944349289f * d * f48; - g48 += -0.2182178944349289f * d * f57; - g58 += -0.26726123690605164f * d * f47; + { const float d = D(ii, k, 199); + g97 += 0.14433756470680237f * d * f73; + g98 += 0.18898223340511322f * d * f74; + g99 += 0.21128855645656586f * d * f75; + g100 += 0.2182178944349289f * d * f76; + g101 += 0.21128855645656586f * d * f77; + g102 += 0.18898223340511322f * d * f78; + g103 += 0.14433756470680237f * d * f79; } - { const float d = D(ii, k, 136); - g53 += 0.2182178944349289f * d * f47; - g54 += 0.2760262191295624f * d * f48; - g48 += 0.2760262191295624f * d * f54; - g55 += 0.29277002811431885f * d * f49; - g49 += 0.29277002811431885f * d * f55; - g56 += 0.2760262191295624f * d * f50; - g50 += 0.2760262191295624f * d * f56; - g57 += 0.2182178944349289f * d * f51; - g51 += 0.2182178944349289f * d * f57; + { const float d = D(ii, k, 200); + g96 += 0.20412415266036987f * d * f73; + g97 += 0.1767766922712326f * d * f74; + g98 += -0.03857583925127983f * d * f73; + g98 += 0.14940357208251953f * d * f75; + g99 += -0.06681530922651291f * d * f74; + g100 += -0.13363061845302582f * d * f77; + g101 += 0.17251639068126678f * d * f76; + g101 += -0.06681530922651291f * d * f78; + g102 += 0.14940357208251953f * d * f77; + g102 += -0.03857583925127983f * d * f79; + g103 += 0.1767766922712326f * d * f78; + g104 += 0.20412415266036987f * d * f79; } - { const float d = D(ii, k, 137); - g52 += 0.26726123690605164f * d * f47; - g53 += 0.2182178944349289f * d * f48; - g48 += 0.2182178944349289f * d * f53; - g54 += -0.0690065547823906f * d * f47; - g55 += -0.16903084516525269f * d * f50; - g50 += -0.16903084516525269f * d * f55; - g56 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f56; - g56 += -0.0690065547823906f * d * f51; - g51 += -0.0690065547823906f * d * f56; - g57 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f57; - g58 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f58; + { const float d = D(ii, k, 201); + g96 += 0.20412415266036987f * d * f86; + g97 += 0.1767766922712326f * d * f85; + g98 += 0.14940357208251953f * d * f84; + g98 += 0.03857583925127983f * d * f86; + g99 += 0.17251639068126678f * d * f83; + g99 += 0.06681530922651291f * d * f85; + g100 += -0.13363061845302582f * d * f82; + g101 += -0.06681530922651291f * d * f81; + g102 += -0.03857583925127983f * d * f80; + g102 += -0.14940357208251953f * d * f82; + g103 += -0.1767766922712326f * d * f81; + g104 += -0.20412415266036987f * d * f80; + } + { const float d = D(ii, k, 202); + g97 += 0.14433756470680237f * d * f80; + g98 += 0.18898223340511322f * d * f81; + g99 += 0.21128855645656586f * d * f82; + g100 += 0.2182178944349289f * d * f83; + g101 += 0.21128855645656586f * d * f84; + g102 += 0.18898223340511322f * d * f85; + g103 += 0.14433756470680237f * d * f86; } - { const float d = D(ii, k, 150); - g87 += 0.20412415266036987f * d * f65; - g65 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f64; - g64 += 0.1767766922712326f * d * f88; - g89 += 0.14940357208251953f * d * f63; - g63 += 0.14940357208251953f * d * f89; - g89 += 0.03857583925127983f * d * f65; - g65 += 0.03857583925127983f * d * f89; - g90 += 0.17251639068126678f * d * f62; - g62 += 0.17251639068126678f * d * f90; - g90 += 0.06681530922651291f * d * f64; - g64 += 0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f61; - g61 += -0.13363061845302582f * d * f91; - g92 += -0.06681530922651291f * d * f60; - g60 += -0.06681530922651291f * d * f92; - g93 += -0.03857583925127983f * d * f59; - g59 += -0.03857583925127983f * d * f93; - g93 += -0.14940357208251953f * d * f61; - g61 += -0.14940357208251953f * d * f93; - g94 += -0.1767766922712326f * d * f60; - g60 += -0.1767766922712326f * d * f94; - g95 += -0.20412415266036987f * d * f59; - g59 += -0.20412415266036987f * d * f95; + { const float d = D(ii, k, 203); + g96 += 0.20412415266036987f * d * f80; + g97 += 0.1767766922712326f * d * f81; + g98 += -0.03857583925127983f * d * f80; + g98 += 0.14940357208251953f * d * f82; + g99 += -0.06681530922651291f * d * f81; + g100 += -0.13363061845302582f * d * f84; + g101 += 0.17251639068126678f * d * f83; + g101 += -0.06681530922651291f * d * f85; + g102 += 0.14940357208251953f * d * f84; + g102 += -0.03857583925127983f * d * f86; + g103 += 0.1767766922712326f * d * f85; + g104 += 0.20412415266036987f * d * f86; } - { const float d = D(ii, k, 151); - g88 += 0.14433756470680237f * d * f59; - g59 += 0.14433756470680237f * d * f88; - g89 += 0.18898223340511322f * d * f60; - g60 += 0.18898223340511322f * d * f89; - g90 += 0.21128855645656586f * d * f61; - g61 += 0.21128855645656586f * d * f90; - g91 += 0.2182178944349289f * d * f62; - g62 += 0.2182178944349289f * d * f91; - g92 += 0.21128855645656586f * d * f63; - g63 += 0.21128855645656586f * d * f92; - g93 += 0.18898223340511322f * d * f64; - g64 += 0.18898223340511322f * d * f93; - g94 += 0.14433756470680237f * d * f65; - g65 += 0.14433756470680237f * d * f94; + { const float d = D(ii, k, 249); + g105 += 0.20412415266036987f * d * f58; + g106 += 0.1767766922712326f * d * f57; + g107 += 0.14940357208251953f * d * f56; + g107 += 0.03857583925127983f * d * f58; + g108 += 0.17251639068126678f * d * f55; + g108 += 0.06681530922651291f * d * f57; + g109 += -0.13363061845302582f * d * f54; + g110 += -0.06681530922651291f * d * f53; + g111 += -0.03857583925127983f * d * f52; + g111 += -0.14940357208251953f * d * f54; + g112 += -0.1767766922712326f * d * f53; + g113 += -0.20412415266036987f * d * f52; } - { const float d = D(ii, k, 152); - g87 += 0.20412415266036987f * d * f59; - g59 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f60; - g60 += 0.1767766922712326f * d * f88; - g89 += -0.03857583925127983f * d * f59; - g59 += -0.03857583925127983f * d * f89; - g89 += 0.14940357208251953f * d * f61; - g61 += 0.14940357208251953f * d * f89; - g90 += -0.06681530922651291f * d * f60; - g60 += -0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f63; - g63 += -0.13363061845302582f * d * f91; - g92 += 0.17251639068126678f * d * f62; - g62 += 0.17251639068126678f * d * f92; - g92 += -0.06681530922651291f * d * f64; - g64 += -0.06681530922651291f * d * f92; - g93 += 0.14940357208251953f * d * f63; - g63 += 0.14940357208251953f * d * f93; - g93 += -0.03857583925127983f * d * f65; - g65 += -0.03857583925127983f * d * f93; - g94 += 0.1767766922712326f * d * f64; - g64 += 0.1767766922712326f * d * f94; - g95 += 0.20412415266036987f * d * f65; - g65 += 0.20412415266036987f * d * f95; + { const float d = D(ii, k, 250); + g106 += 0.14433756470680237f * d * f52; + g107 += 0.18898223340511322f * d * f53; + g108 += 0.21128855645656586f * d * f54; + g109 += 0.2182178944349289f * d * f55; + g110 += 0.21128855645656586f * d * f56; + g111 += 0.18898223340511322f * d * f57; + g112 += 0.14433756470680237f * d * f58; } - { const float d = D(ii, k, 153); - g87 += 0.20412415266036987f * d * f72; - g72 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f71; - g71 += 0.1767766922712326f * d * f88; - g89 += 0.14940357208251953f * d * f70; - g70 += 0.14940357208251953f * d * f89; - g89 += 0.03857583925127983f * d * f72; - g72 += 0.03857583925127983f * d * f89; - g90 += 0.17251639068126678f * d * f69; - g69 += 0.17251639068126678f * d * f90; - g90 += 0.06681530922651291f * d * f71; - g71 += 0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f68; - g68 += -0.13363061845302582f * d * f91; - g92 += -0.06681530922651291f * d * f67; - g67 += -0.06681530922651291f * d * f92; - g93 += -0.03857583925127983f * d * f66; - g66 += -0.03857583925127983f * d * f93; - g93 += -0.14940357208251953f * d * f68; - g68 += -0.14940357208251953f * d * f93; - g94 += -0.1767766922712326f * d * f67; - g67 += -0.1767766922712326f * d * f94; - g95 += -0.20412415266036987f * d * f66; - g66 += -0.20412415266036987f * d * f95; + { const float d = D(ii, k, 251); + g105 += 0.20412415266036987f * d * f52; + g106 += 0.1767766922712326f * d * f53; + g107 += -0.03857583925127983f * d * f52; + g107 += 0.14940357208251953f * d * f54; + g108 += -0.06681530922651291f * d * f53; + g109 += -0.13363061845302582f * d * f56; + g110 += 0.17251639068126678f * d * f55; + g110 += -0.06681530922651291f * d * f57; + g111 += 0.14940357208251953f * d * f56; + g111 += -0.03857583925127983f * d * f58; + g112 += 0.1767766922712326f * d * f57; + g113 += 0.20412415266036987f * d * f58; } - { const float d = D(ii, k, 154); - g88 += 0.14433756470680237f * d * f66; - g66 += 0.14433756470680237f * d * f88; - g89 += 0.18898223340511322f * d * f67; - g67 += 0.18898223340511322f * d * f89; - g90 += 0.21128855645656586f * d * f68; - g68 += 0.21128855645656586f * d * f90; - g91 += 0.2182178944349289f * d * f69; - g69 += 0.2182178944349289f * d * f91; - g92 += 0.21128855645656586f * d * f70; - g70 += 0.21128855645656586f * d * f92; - g93 += 0.18898223340511322f * d * f71; - g71 += 0.18898223340511322f * d * f93; - g94 += 0.14433756470680237f * d * f72; - g72 += 0.14433756470680237f * d * f94; + { const float d = D(ii, k, 252); + g105 += 0.20412415266036987f * d * f72; + g106 += 0.1767766922712326f * d * f71; + g107 += 0.14940357208251953f * d * f70; + g107 += 0.03857583925127983f * d * f72; + g108 += 0.17251639068126678f * d * f69; + g108 += 0.06681530922651291f * d * f71; + g109 += -0.13363061845302582f * d * f68; + g110 += -0.06681530922651291f * d * f67; + g111 += -0.03857583925127983f * d * f66; + g111 += -0.14940357208251953f * d * f68; + g112 += -0.1767766922712326f * d * f67; + g113 += -0.20412415266036987f * d * f66; } - { const float d = D(ii, k, 155); - g87 += 0.20412415266036987f * d * f66; - g66 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f67; - g67 += 0.1767766922712326f * d * f88; - g89 += -0.03857583925127983f * d * f66; - g66 += -0.03857583925127983f * d * f89; - g89 += 0.14940357208251953f * d * f68; - g68 += 0.14940357208251953f * d * f89; - g90 += -0.06681530922651291f * d * f67; - g67 += -0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f70; - g70 += -0.13363061845302582f * d * f91; - g92 += 0.17251639068126678f * d * f69; - g69 += 0.17251639068126678f * d * f92; - g92 += -0.06681530922651291f * d * f71; - g71 += -0.06681530922651291f * d * f92; - g93 += 0.14940357208251953f * d * f70; - g70 += 0.14940357208251953f * d * f93; - g93 += -0.03857583925127983f * d * f72; - g72 += -0.03857583925127983f * d * f93; - g94 += 0.1767766922712326f * d * f71; - g71 += 0.1767766922712326f * d * f94; - g95 += 0.20412415266036987f * d * f72; - g72 += 0.20412415266036987f * d * f95; + { const float d = D(ii, k, 253); + g106 += 0.14433756470680237f * d * f66; + g107 += 0.18898223340511322f * d * f67; + g108 += 0.21128855645656586f * d * f68; + g109 += 0.2182178944349289f * d * f69; + g110 += 0.21128855645656586f * d * f70; + g111 += 0.18898223340511322f * d * f71; + g112 += 0.14433756470680237f * d * f72; } - { const float d = D(ii, k, 156); - g87 += 0.20412415266036987f * d * f79; - g79 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f78; - g78 += 0.1767766922712326f * d * f88; - g89 += 0.14940357208251953f * d * f77; - g77 += 0.14940357208251953f * d * f89; - g89 += 0.03857583925127983f * d * f79; - g79 += 0.03857583925127983f * d * f89; - g90 += 0.17251639068126678f * d * f76; - g76 += 0.17251639068126678f * d * f90; - g90 += 0.06681530922651291f * d * f78; - g78 += 0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f75; - g75 += -0.13363061845302582f * d * f91; - g92 += -0.06681530922651291f * d * f74; - g74 += -0.06681530922651291f * d * f92; - g93 += -0.03857583925127983f * d * f73; - g73 += -0.03857583925127983f * d * f93; - g93 += -0.14940357208251953f * d * f75; - g75 += -0.14940357208251953f * d * f93; - g94 += -0.1767766922712326f * d * f74; - g74 += -0.1767766922712326f * d * f94; - g95 += -0.20412415266036987f * d * f73; - g73 += -0.20412415266036987f * d * f95; + { const float d = D(ii, k, 254); + g105 += 0.20412415266036987f * d * f66; + g106 += 0.1767766922712326f * d * f67; + g107 += -0.03857583925127983f * d * f66; + g107 += 0.14940357208251953f * d * f68; + g108 += -0.06681530922651291f * d * f67; + g109 += -0.13363061845302582f * d * f70; + g110 += 0.17251639068126678f * d * f69; + g110 += -0.06681530922651291f * d * f71; + g111 += 0.14940357208251953f * d * f70; + g111 += -0.03857583925127983f * d * f72; + g112 += 0.1767766922712326f * d * f71; + g113 += 0.20412415266036987f * d * f72; + } + { const float d = D(ii, k, 255); + g105 += 0.20412415266036987f * d * f79; + g106 += 0.1767766922712326f * d * f78; + g107 += 0.14940357208251953f * d * f77; + g107 += 0.03857583925127983f * d * f79; + g108 += 0.17251639068126678f * d * f76; + g108 += 0.06681530922651291f * d * f78; + g109 += -0.13363061845302582f * d * f75; + g110 += -0.06681530922651291f * d * f74; + g111 += -0.03857583925127983f * d * f73; + g111 += -0.14940357208251953f * d * f75; + g112 += -0.1767766922712326f * d * f74; + g113 += -0.20412415266036987f * d * f73; } - { const float d = D(ii, k, 157); - g88 += 0.14433756470680237f * d * f73; - g73 += 0.14433756470680237f * d * f88; - g89 += 0.18898223340511322f * d * f74; - g74 += 0.18898223340511322f * d * f89; - g90 += 0.21128855645656586f * d * f75; - g75 += 0.21128855645656586f * d * f90; - g91 += 0.2182178944349289f * d * f76; - g76 += 0.2182178944349289f * d * f91; - g92 += 0.21128855645656586f * d * f77; - g77 += 0.21128855645656586f * d * f92; - g93 += 0.18898223340511322f * d * f78; - g78 += 0.18898223340511322f * d * f93; - g94 += 0.14433756470680237f * d * f79; - g79 += 0.14433756470680237f * d * f94; + { const float d = D(ii, k, 256); + g106 += 0.14433756470680237f * d * f73; + g107 += 0.18898223340511322f * d * f74; + g108 += 0.21128855645656586f * d * f75; + g109 += 0.2182178944349289f * d * f76; + g110 += 0.21128855645656586f * d * f77; + g111 += 0.18898223340511322f * d * f78; + g112 += 0.14433756470680237f * d * f79; } - { const float d = D(ii, k, 158); - g87 += 0.20412415266036987f * d * f73; - g73 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f74; - g74 += 0.1767766922712326f * d * f88; - g89 += -0.03857583925127983f * d * f73; - g73 += -0.03857583925127983f * d * f89; - g89 += 0.14940357208251953f * d * f75; - g75 += 0.14940357208251953f * d * f89; - g90 += -0.06681530922651291f * d * f74; - g74 += -0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f77; - g77 += -0.13363061845302582f * d * f91; - g92 += 0.17251639068126678f * d * f76; - g76 += 0.17251639068126678f * d * f92; - g92 += -0.06681530922651291f * d * f78; - g78 += -0.06681530922651291f * d * f92; - g93 += 0.14940357208251953f * d * f77; - g77 += 0.14940357208251953f * d * f93; - g93 += -0.03857583925127983f * d * f79; - g79 += -0.03857583925127983f * d * f93; - g94 += 0.1767766922712326f * d * f78; - g78 += 0.1767766922712326f * d * f94; - g95 += 0.20412415266036987f * d * f79; - g79 += 0.20412415266036987f * d * f95; + { const float d = D(ii, k, 257); + g105 += 0.20412415266036987f * d * f73; + g106 += 0.1767766922712326f * d * f74; + g107 += -0.03857583925127983f * d * f73; + g107 += 0.14940357208251953f * d * f75; + g108 += -0.06681530922651291f * d * f74; + g109 += -0.13363061845302582f * d * f77; + g110 += 0.17251639068126678f * d * f76; + g110 += -0.06681530922651291f * d * f78; + g111 += 0.14940357208251953f * d * f77; + g111 += -0.03857583925127983f * d * f79; + g112 += 0.1767766922712326f * d * f78; + g113 += 0.20412415266036987f * d * f79; } - { const float d = D(ii, k, 159); - g87 += 0.20412415266036987f * d * f86; - g86 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f85; - g85 += 0.1767766922712326f * d * f88; - g89 += 0.14940357208251953f * d * f84; - g84 += 0.14940357208251953f * d * f89; - g89 += 0.03857583925127983f * d * f86; - g86 += 0.03857583925127983f * d * f89; - g90 += 0.17251639068126678f * d * f83; - g83 += 0.17251639068126678f * d * f90; - g90 += 0.06681530922651291f * d * f85; - g85 += 0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f82; - g82 += -0.13363061845302582f * d * f91; - g92 += -0.06681530922651291f * d * f81; - g81 += -0.06681530922651291f * d * f92; - g93 += -0.03857583925127983f * d * f80; - g80 += -0.03857583925127983f * d * f93; - g93 += -0.14940357208251953f * d * f82; - g82 += -0.14940357208251953f * d * f93; - g94 += -0.1767766922712326f * d * f81; - g81 += -0.1767766922712326f * d * f94; - g95 += -0.20412415266036987f * d * f80; - g80 += -0.20412415266036987f * d * f95; + { const float d = D(ii, k, 258); + g105 += 0.20412415266036987f * d * f86; + g106 += 0.1767766922712326f * d * f85; + g107 += 0.14940357208251953f * d * f84; + g107 += 0.03857583925127983f * d * f86; + g108 += 0.17251639068126678f * d * f83; + g108 += 0.06681530922651291f * d * f85; + g109 += -0.13363061845302582f * d * f82; + g110 += -0.06681530922651291f * d * f81; + g111 += -0.03857583925127983f * d * f80; + g111 += -0.14940357208251953f * d * f82; + g112 += -0.1767766922712326f * d * f81; + g113 += -0.20412415266036987f * d * f80; } - { const float d = D(ii, k, 160); - g88 += 0.14433756470680237f * d * f80; - g80 += 0.14433756470680237f * d * f88; - g89 += 0.18898223340511322f * d * f81; - g81 += 0.18898223340511322f * d * f89; - g90 += 0.21128855645656586f * d * f82; - g82 += 0.21128855645656586f * d * f90; - g91 += 0.2182178944349289f * d * f83; - g83 += 0.2182178944349289f * d * f91; - g92 += 0.21128855645656586f * d * f84; - g84 += 0.21128855645656586f * d * f92; - g93 += 0.18898223340511322f * d * f85; - g85 += 0.18898223340511322f * d * f93; - g94 += 0.14433756470680237f * d * f86; - g86 += 0.14433756470680237f * d * f94; + { const float d = D(ii, k, 259); + g106 += 0.14433756470680237f * d * f80; + g107 += 0.18898223340511322f * d * f81; + g108 += 0.21128855645656586f * d * f82; + g109 += 0.2182178944349289f * d * f83; + g110 += 0.21128855645656586f * d * f84; + g111 += 0.18898223340511322f * d * f85; + g112 += 0.14433756470680237f * d * f86; } - { const float d = D(ii, k, 161); - g87 += 0.20412415266036987f * d * f80; - g80 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f81; - g81 += 0.1767766922712326f * d * f88; - g89 += -0.03857583925127983f * d * f80; - g80 += -0.03857583925127983f * d * f89; - g89 += 0.14940357208251953f * d * f82; - g82 += 0.14940357208251953f * d * f89; - g90 += -0.06681530922651291f * d * f81; - g81 += -0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f84; - g84 += -0.13363061845302582f * d * f91; - g92 += 0.17251639068126678f * d * f83; - g83 += 0.17251639068126678f * d * f92; - g92 += -0.06681530922651291f * d * f85; - g85 += -0.06681530922651291f * d * f92; - g93 += 0.14940357208251953f * d * f84; - g84 += 0.14940357208251953f * d * f93; - g93 += -0.03857583925127983f * d * f86; - g86 += -0.03857583925127983f * d * f93; - g94 += 0.1767766922712326f * d * f85; - g85 += 0.1767766922712326f * d * f94; - g95 += 0.20412415266036987f * d * f86; - g86 += 0.20412415266036987f * d * f95; + { const float d = D(ii, k, 260); + g105 += 0.20412415266036987f * d * f80; + g106 += 0.1767766922712326f * d * f81; + g107 += -0.03857583925127983f * d * f80; + g107 += 0.14940357208251953f * d * f82; + g108 += -0.06681530922651291f * d * f81; + g109 += -0.13363061845302582f * d * f84; + g110 += 0.17251639068126678f * d * f83; + g110 += -0.06681530922651291f * d * f85; + g111 += 0.14940357208251953f * d * f84; + g111 += -0.03857583925127983f * d * f86; + g112 += 0.1767766922712326f * d * f85; + g113 += 0.20412415266036987f * d * f86; } - { const float d = D(ii, k, 162); - g59 += 0.26726123690605164f * d * f31; - g60 += 0.2182178944349289f * d * f30; - g61 += 0.23904572427272797f * d * f29; - g61 += 0.0690065547823906f * d * f31; - g62 += -0.16903084516525269f * d * f28; - g63 += -0.0690065547823906f * d * f27; - g64 += -0.2182178944349289f * d * f28; - g65 += -0.26726123690605164f * d * f27; + { const float d = D(ii, k, 261); + g114 += 0.20412415266036987f * d * f72; + g115 += 0.1767766922712326f * d * f71; + g116 += 0.14940357208251953f * d * f70; + g116 += 0.03857583925127983f * d * f72; + g117 += 0.17251639068126678f * d * f69; + g117 += 0.06681530922651291f * d * f71; + g118 += -0.13363061845302582f * d * f68; + g119 += -0.06681530922651291f * d * f67; + g120 += -0.03857583925127983f * d * f66; + g120 += -0.14940357208251953f * d * f68; + g121 += -0.1767766922712326f * d * f67; + g122 += -0.20412415266036987f * d * f66; } - { const float d = D(ii, k, 163); - g60 += 0.2182178944349289f * d * f27; - g61 += 0.2760262191295624f * d * f28; - g62 += 0.29277002811431885f * d * f29; - g63 += 0.2760262191295624f * d * f30; - g64 += 0.2182178944349289f * d * f31; + { const float d = D(ii, k, 262); + g115 += 0.14433756470680237f * d * f66; + g116 += 0.18898223340511322f * d * f67; + g117 += 0.21128855645656586f * d * f68; + g118 += 0.2182178944349289f * d * f69; + g119 += 0.21128855645656586f * d * f70; + g120 += 0.18898223340511322f * d * f71; + g121 += 0.14433756470680237f * d * f72; } - { const float d = D(ii, k, 164); - g59 += 0.26726123690605164f * d * f27; - g60 += 0.2182178944349289f * d * f28; - g61 += -0.0690065547823906f * d * f27; - g62 += -0.16903084516525269f * d * f30; - g63 += 0.23904572427272797f * d * f29; - g63 += -0.0690065547823906f * d * f31; - g64 += 0.2182178944349289f * d * f30; - g65 += 0.26726123690605164f * d * f31; + { const float d = D(ii, k, 263); + g114 += 0.20412415266036987f * d * f66; + g115 += 0.1767766922712326f * d * f67; + g116 += -0.03857583925127983f * d * f66; + g116 += 0.14940357208251953f * d * f68; + g117 += -0.06681530922651291f * d * f67; + g118 += -0.13363061845302582f * d * f70; + g119 += 0.17251639068126678f * d * f69; + g119 += -0.06681530922651291f * d * f71; + g120 += 0.14940357208251953f * d * f70; + g120 += -0.03857583925127983f * d * f72; + g121 += 0.1767766922712326f * d * f71; + g122 += 0.20412415266036987f * d * f72; } - { const float d = D(ii, k, 165); - g59 += 0.26726123690605164f * d * f36; - g60 += 0.2182178944349289f * d * f35; - g61 += 0.23904572427272797f * d * f34; - g61 += 0.0690065547823906f * d * f36; - g62 += -0.16903084516525269f * d * f33; - g63 += -0.0690065547823906f * d * f32; - g64 += -0.2182178944349289f * d * f33; - g65 += -0.26726123690605164f * d * f32; + { const float d = D(ii, k, 264); + g114 += 0.20412415266036987f * d * f79; + g115 += 0.1767766922712326f * d * f78; + g116 += 0.14940357208251953f * d * f77; + g116 += 0.03857583925127983f * d * f79; + g117 += 0.17251639068126678f * d * f76; + g117 += 0.06681530922651291f * d * f78; + g118 += -0.13363061845302582f * d * f75; + g119 += -0.06681530922651291f * d * f74; + g120 += -0.03857583925127983f * d * f73; + g120 += -0.14940357208251953f * d * f75; + g121 += -0.1767766922712326f * d * f74; + g122 += -0.20412415266036987f * d * f73; } - { const float d = D(ii, k, 166); - g60 += 0.2182178944349289f * d * f32; - g61 += 0.2760262191295624f * d * f33; - g62 += 0.29277002811431885f * d * f34; - g63 += 0.2760262191295624f * d * f35; - g64 += 0.2182178944349289f * d * f36; + { const float d = D(ii, k, 265); + g115 += 0.14433756470680237f * d * f73; + g116 += 0.18898223340511322f * d * f74; + g117 += 0.21128855645656586f * d * f75; + g118 += 0.2182178944349289f * d * f76; + g119 += 0.21128855645656586f * d * f77; + g120 += 0.18898223340511322f * d * f78; + g121 += 0.14433756470680237f * d * f79; + } + { const float d = D(ii, k, 266); + g114 += 0.20412415266036987f * d * f73; + g115 += 0.1767766922712326f * d * f74; + g116 += -0.03857583925127983f * d * f73; + g116 += 0.14940357208251953f * d * f75; + g117 += -0.06681530922651291f * d * f74; + g118 += -0.13363061845302582f * d * f77; + g119 += 0.17251639068126678f * d * f76; + g119 += -0.06681530922651291f * d * f78; + g120 += 0.14940357208251953f * d * f77; + g120 += -0.03857583925127983f * d * f79; + g121 += 0.1767766922712326f * d * f78; + g122 += 0.20412415266036987f * d * f79; } - { const float d = D(ii, k, 167); - g59 += 0.26726123690605164f * d * f32; - g60 += 0.2182178944349289f * d * f33; - g61 += -0.0690065547823906f * d * f32; - g62 += -0.16903084516525269f * d * f35; - g63 += 0.23904572427272797f * d * f34; - g63 += -0.0690065547823906f * d * f36; - g64 += 0.2182178944349289f * d * f35; - g65 += 0.26726123690605164f * d * f36; + { const float d = D(ii, k, 267); + g114 += 0.20412415266036987f * d * f86; + g115 += 0.1767766922712326f * d * f85; + g116 += 0.14940357208251953f * d * f84; + g116 += 0.03857583925127983f * d * f86; + g117 += 0.17251639068126678f * d * f83; + g117 += 0.06681530922651291f * d * f85; + g118 += -0.13363061845302582f * d * f82; + g119 += -0.06681530922651291f * d * f81; + g120 += -0.03857583925127983f * d * f80; + g120 += -0.14940357208251953f * d * f82; + g121 += -0.1767766922712326f * d * f81; + g122 += -0.20412415266036987f * d * f80; } - { const float d = D(ii, k, 168); - g59 += 0.26726123690605164f * d * f41; - g60 += 0.2182178944349289f * d * f40; - g61 += 0.23904572427272797f * d * f39; - g61 += 0.0690065547823906f * d * f41; - g62 += -0.16903084516525269f * d * f38; - g63 += -0.0690065547823906f * d * f37; - g64 += -0.2182178944349289f * d * f38; - g65 += -0.26726123690605164f * d * f37; + { const float d = D(ii, k, 268); + g115 += 0.14433756470680237f * d * f80; + g116 += 0.18898223340511322f * d * f81; + g117 += 0.21128855645656586f * d * f82; + g118 += 0.2182178944349289f * d * f83; + g119 += 0.21128855645656586f * d * f84; + g120 += 0.18898223340511322f * d * f85; + g121 += 0.14433756470680237f * d * f86; } - { const float d = D(ii, k, 169); - g60 += 0.2182178944349289f * d * f37; - g61 += 0.2760262191295624f * d * f38; - g62 += 0.29277002811431885f * d * f39; - g63 += 0.2760262191295624f * d * f40; - g64 += 0.2182178944349289f * d * f41; + { const float d = D(ii, k, 269); + g114 += 0.20412415266036987f * d * f80; + g115 += 0.1767766922712326f * d * f81; + g116 += -0.03857583925127983f * d * f80; + g116 += 0.14940357208251953f * d * f82; + g117 += -0.06681530922651291f * d * f81; + g118 += -0.13363061845302582f * d * f84; + g119 += 0.17251639068126678f * d * f83; + g119 += -0.06681530922651291f * d * f85; + g120 += 0.14940357208251953f * d * f84; + g120 += -0.03857583925127983f * d * f86; + g121 += 0.1767766922712326f * d * f85; + g122 += 0.20412415266036987f * d * f86; } - { const float d = D(ii, k, 170); - g59 += 0.26726123690605164f * d * f37; - g60 += 0.2182178944349289f * d * f38; - g61 += -0.0690065547823906f * d * f37; - g62 += -0.16903084516525269f * d * f40; - g63 += 0.23904572427272797f * d * f39; - g63 += -0.0690065547823906f * d * f41; - g64 += 0.2182178944349289f * d * f40; - g65 += 0.26726123690605164f * d * f41; + { const float d = D(ii, k, 300); + g123 += 0.20412415266036987f * d * f58; + g124 += 0.1767766922712326f * d * f57; + g125 += 0.14940357208251953f * d * f56; + g125 += 0.03857583925127983f * d * f58; + g126 += 0.17251639068126678f * d * f55; + g126 += 0.06681530922651291f * d * f57; + g127 += -0.13363061845302582f * d * f54; + g128 += -0.06681530922651291f * d * f53; + g129 += -0.03857583925127983f * d * f52; + g129 += -0.14940357208251953f * d * f54; + g130 += -0.1767766922712326f * d * f53; + g131 += -0.20412415266036987f * d * f52; } - { const float d = D(ii, k, 171); - g59 += 0.26726123690605164f * d * f46; - g60 += 0.2182178944349289f * d * f45; - g61 += 0.23904572427272797f * d * f44; - g61 += 0.0690065547823906f * d * f46; - g62 += -0.16903084516525269f * d * f43; - g63 += -0.0690065547823906f * d * f42; - g64 += -0.2182178944349289f * d * f43; - g65 += -0.26726123690605164f * d * f42; + { const float d = D(ii, k, 301); + g124 += 0.14433756470680237f * d * f52; + g125 += 0.18898223340511322f * d * f53; + g126 += 0.21128855645656586f * d * f54; + g127 += 0.2182178944349289f * d * f55; + g128 += 0.21128855645656586f * d * f56; + g129 += 0.18898223340511322f * d * f57; + g130 += 0.14433756470680237f * d * f58; } - { const float d = D(ii, k, 172); - g60 += 0.2182178944349289f * d * f42; - g61 += 0.2760262191295624f * d * f43; - g62 += 0.29277002811431885f * d * f44; - g63 += 0.2760262191295624f * d * f45; - g64 += 0.2182178944349289f * d * f46; + { const float d = D(ii, k, 302); + g123 += 0.20412415266036987f * d * f52; + g124 += 0.1767766922712326f * d * f53; + g125 += -0.03857583925127983f * d * f52; + g125 += 0.14940357208251953f * d * f54; + g126 += -0.06681530922651291f * d * f53; + g127 += -0.13363061845302582f * d * f56; + g128 += 0.17251639068126678f * d * f55; + g128 += -0.06681530922651291f * d * f57; + g129 += 0.14940357208251953f * d * f56; + g129 += -0.03857583925127983f * d * f58; + g130 += 0.1767766922712326f * d * f57; + g131 += 0.20412415266036987f * d * f58; } - { const float d = D(ii, k, 173); - g59 += 0.26726123690605164f * d * f42; - g60 += 0.2182178944349289f * d * f43; - g61 += -0.0690065547823906f * d * f42; - g62 += -0.16903084516525269f * d * f45; - g63 += 0.23904572427272797f * d * f44; - g63 += -0.0690065547823906f * d * f46; - g64 += 0.2182178944349289f * d * f45; - g65 += 0.26726123690605164f * d * f46; + { const float d = D(ii, k, 303); + g123 += 0.20412415266036987f * d * f65; + g124 += 0.1767766922712326f * d * f64; + g125 += 0.14940357208251953f * d * f63; + g125 += 0.03857583925127983f * d * f65; + g126 += 0.17251639068126678f * d * f62; + g126 += 0.06681530922651291f * d * f64; + g127 += -0.13363061845302582f * d * f61; + g128 += -0.06681530922651291f * d * f60; + g129 += -0.03857583925127983f * d * f59; + g129 += -0.14940357208251953f * d * f61; + g130 += -0.1767766922712326f * d * f60; + g131 += -0.20412415266036987f * d * f59; } - { const float d = D(ii, k, 174); - g59 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f59; - g60 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f60; - g61 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f61; - g61 += 0.0690065547823906f * d * f51; - g51 += 0.0690065547823906f * d * f61; - g62 += -0.16903084516525269f * d * f48; - g48 += -0.16903084516525269f * d * f62; - g63 += -0.0690065547823906f * d * f47; - g64 += -0.2182178944349289f * d * f48; - g48 += -0.2182178944349289f * d * f64; - g65 += -0.26726123690605164f * d * f47; + { const float d = D(ii, k, 304); + g124 += 0.14433756470680237f * d * f59; + g125 += 0.18898223340511322f * d * f60; + g126 += 0.21128855645656586f * d * f61; + g127 += 0.2182178944349289f * d * f62; + g128 += 0.21128855645656586f * d * f63; + g129 += 0.18898223340511322f * d * f64; + g130 += 0.14433756470680237f * d * f65; } - { const float d = D(ii, k, 175); - g60 += 0.2182178944349289f * d * f47; - g61 += 0.2760262191295624f * d * f48; - g48 += 0.2760262191295624f * d * f61; - g62 += 0.29277002811431885f * d * f49; - g49 += 0.29277002811431885f * d * f62; - g63 += 0.2760262191295624f * d * f50; - g50 += 0.2760262191295624f * d * f63; - g64 += 0.2182178944349289f * d * f51; - g51 += 0.2182178944349289f * d * f64; + { const float d = D(ii, k, 305); + g123 += 0.20412415266036987f * d * f59; + g124 += 0.1767766922712326f * d * f60; + g125 += -0.03857583925127983f * d * f59; + g125 += 0.14940357208251953f * d * f61; + g126 += -0.06681530922651291f * d * f60; + g127 += -0.13363061845302582f * d * f63; + g128 += 0.17251639068126678f * d * f62; + g128 += -0.06681530922651291f * d * f64; + g129 += 0.14940357208251953f * d * f63; + g129 += -0.03857583925127983f * d * f65; + g130 += 0.1767766922712326f * d * f64; + g131 += 0.20412415266036987f * d * f65; } - { const float d = D(ii, k, 176); - g59 += 0.26726123690605164f * d * f47; - g60 += 0.2182178944349289f * d * f48; - g48 += 0.2182178944349289f * d * f60; - g61 += -0.0690065547823906f * d * f47; - g62 += -0.16903084516525269f * d * f50; - g50 += -0.16903084516525269f * d * f62; - g63 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f63; - g63 += -0.0690065547823906f * d * f51; - g51 += -0.0690065547823906f * d * f63; - g64 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f64; - g65 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f65; + { const float d = D(ii, k, 306); + g123 += 0.20412415266036987f * d * f72; + g124 += 0.1767766922712326f * d * f71; + g125 += 0.14940357208251953f * d * f70; + g125 += 0.03857583925127983f * d * f72; + g126 += 0.17251639068126678f * d * f69; + g126 += 0.06681530922651291f * d * f71; + g127 += -0.13363061845302582f * d * f68; + g128 += -0.06681530922651291f * d * f67; + g129 += -0.03857583925127983f * d * f66; + g129 += -0.14940357208251953f * d * f68; + g130 += -0.1767766922712326f * d * f67; + g131 += -0.20412415266036987f * d * f66; } - { const float d = D(ii, k, 189); - g58 += 0.20412415266036987f * d * f96; - g57 += 0.1767766922712326f * d * f97; - g56 += 0.14940357208251953f * d * f98; - g58 += 0.03857583925127983f * d * f98; - g55 += 0.17251639068126678f * d * f99; - g57 += 0.06681530922651291f * d * f99; - g54 += -0.13363061845302582f * d * f100; - g53 += -0.06681530922651291f * d * f101; - g52 += -0.03857583925127983f * d * f102; - g54 += -0.14940357208251953f * d * f102; - g53 += -0.1767766922712326f * d * f103; - g52 += -0.20412415266036987f * d * f104; + { const float d = D(ii, k, 307); + g124 += 0.14433756470680237f * d * f66; + g125 += 0.18898223340511322f * d * f67; + g126 += 0.21128855645656586f * d * f68; + g127 += 0.2182178944349289f * d * f69; + g128 += 0.21128855645656586f * d * f70; + g129 += 0.18898223340511322f * d * f71; + g130 += 0.14433756470680237f * d * f72; } - { const float d = D(ii, k, 190); - g52 += 0.14433756470680237f * d * f97; - g53 += 0.18898223340511322f * d * f98; - g54 += 0.21128855645656586f * d * f99; - g55 += 0.2182178944349289f * d * f100; - g56 += 0.21128855645656586f * d * f101; - g57 += 0.18898223340511322f * d * f102; - g58 += 0.14433756470680237f * d * f103; + { const float d = D(ii, k, 308); + g123 += 0.20412415266036987f * d * f66; + g124 += 0.1767766922712326f * d * f67; + g125 += -0.03857583925127983f * d * f66; + g125 += 0.14940357208251953f * d * f68; + g126 += -0.06681530922651291f * d * f67; + g127 += -0.13363061845302582f * d * f70; + g128 += 0.17251639068126678f * d * f69; + g128 += -0.06681530922651291f * d * f71; + g129 += 0.14940357208251953f * d * f70; + g129 += -0.03857583925127983f * d * f72; + g130 += 0.1767766922712326f * d * f71; + g131 += 0.20412415266036987f * d * f72; } - { const float d = D(ii, k, 191); - g52 += 0.20412415266036987f * d * f96; - g53 += 0.1767766922712326f * d * f97; - g52 += -0.03857583925127983f * d * f98; - g54 += 0.14940357208251953f * d * f98; - g53 += -0.06681530922651291f * d * f99; - g56 += -0.13363061845302582f * d * f100; - g55 += 0.17251639068126678f * d * f101; - g57 += -0.06681530922651291f * d * f101; - g56 += 0.14940357208251953f * d * f102; - g58 += -0.03857583925127983f * d * f102; - g57 += 0.1767766922712326f * d * f103; - g58 += 0.20412415266036987f * d * f104; + { const float d = D(ii, k, 309); + g123 += 0.20412415266036987f * d * f79; + g124 += 0.1767766922712326f * d * f78; + g125 += 0.14940357208251953f * d * f77; + g125 += 0.03857583925127983f * d * f79; + g126 += 0.17251639068126678f * d * f76; + g126 += 0.06681530922651291f * d * f78; + g127 += -0.13363061845302582f * d * f75; + g128 += -0.06681530922651291f * d * f74; + g129 += -0.03857583925127983f * d * f73; + g129 += -0.14940357208251953f * d * f75; + g130 += -0.1767766922712326f * d * f74; + g131 += -0.20412415266036987f * d * f73; } - { const float d = D(ii, k, 192); - g65 += 0.20412415266036987f * d * f96; - g64 += 0.1767766922712326f * d * f97; - g63 += 0.14940357208251953f * d * f98; - g65 += 0.03857583925127983f * d * f98; - g62 += 0.17251639068126678f * d * f99; - g64 += 0.06681530922651291f * d * f99; - g61 += -0.13363061845302582f * d * f100; - g60 += -0.06681530922651291f * d * f101; - g59 += -0.03857583925127983f * d * f102; - g61 += -0.14940357208251953f * d * f102; - g60 += -0.1767766922712326f * d * f103; - g59 += -0.20412415266036987f * d * f104; + { const float d = D(ii, k, 310); + g124 += 0.14433756470680237f * d * f73; + g125 += 0.18898223340511322f * d * f74; + g126 += 0.21128855645656586f * d * f75; + g127 += 0.2182178944349289f * d * f76; + g128 += 0.21128855645656586f * d * f77; + g129 += 0.18898223340511322f * d * f78; + g130 += 0.14433756470680237f * d * f79; } - { const float d = D(ii, k, 193); - g59 += 0.14433756470680237f * d * f97; - g60 += 0.18898223340511322f * d * f98; - g61 += 0.21128855645656586f * d * f99; - g62 += 0.2182178944349289f * d * f100; - g63 += 0.21128855645656586f * d * f101; - g64 += 0.18898223340511322f * d * f102; - g65 += 0.14433756470680237f * d * f103; + { const float d = D(ii, k, 311); + g123 += 0.20412415266036987f * d * f73; + g124 += 0.1767766922712326f * d * f74; + g125 += -0.03857583925127983f * d * f73; + g125 += 0.14940357208251953f * d * f75; + g126 += -0.06681530922651291f * d * f74; + g127 += -0.13363061845302582f * d * f77; + g128 += 0.17251639068126678f * d * f76; + g128 += -0.06681530922651291f * d * f78; + g129 += 0.14940357208251953f * d * f77; + g129 += -0.03857583925127983f * d * f79; + g130 += 0.1767766922712326f * d * f78; + g131 += 0.20412415266036987f * d * f79; } - { const float d = D(ii, k, 194); - g59 += 0.20412415266036987f * d * f96; - g60 += 0.1767766922712326f * d * f97; - g59 += -0.03857583925127983f * d * f98; - g61 += 0.14940357208251953f * d * f98; - g60 += -0.06681530922651291f * d * f99; - g63 += -0.13363061845302582f * d * f100; - g62 += 0.17251639068126678f * d * f101; - g64 += -0.06681530922651291f * d * f101; - g63 += 0.14940357208251953f * d * f102; - g65 += -0.03857583925127983f * d * f102; - g64 += 0.1767766922712326f * d * f103; - g65 += 0.20412415266036987f * d * f104; + { const float d = D(ii, k, 312); + g123 += 0.20412415266036987f * d * f86; + g124 += 0.1767766922712326f * d * f85; + g125 += 0.14940357208251953f * d * f84; + g125 += 0.03857583925127983f * d * f86; + g126 += 0.17251639068126678f * d * f83; + g126 += 0.06681530922651291f * d * f85; + g127 += -0.13363061845302582f * d * f82; + g128 += -0.06681530922651291f * d * f81; + g129 += -0.03857583925127983f * d * f80; + g129 += -0.14940357208251953f * d * f82; + g130 += -0.1767766922712326f * d * f81; + g131 += -0.20412415266036987f * d * f80; } - { const float d = D(ii, k, 195); - g72 += 0.20412415266036987f * d * f96; - g71 += 0.1767766922712326f * d * f97; - g70 += 0.14940357208251953f * d * f98; - g72 += 0.03857583925127983f * d * f98; - g69 += 0.17251639068126678f * d * f99; - g71 += 0.06681530922651291f * d * f99; - g68 += -0.13363061845302582f * d * f100; - g67 += -0.06681530922651291f * d * f101; - g66 += -0.03857583925127983f * d * f102; - g68 += -0.14940357208251953f * d * f102; - g67 += -0.1767766922712326f * d * f103; - g66 += -0.20412415266036987f * d * f104; + { const float d = D(ii, k, 313); + g124 += 0.14433756470680237f * d * f80; + g125 += 0.18898223340511322f * d * f81; + g126 += 0.21128855645656586f * d * f82; + g127 += 0.2182178944349289f * d * f83; + g128 += 0.21128855645656586f * d * f84; + g129 += 0.18898223340511322f * d * f85; + g130 += 0.14433756470680237f * d * f86; } - { const float d = D(ii, k, 196); - g66 += 0.14433756470680237f * d * f97; - g67 += 0.18898223340511322f * d * f98; - g68 += 0.21128855645656586f * d * f99; - g69 += 0.2182178944349289f * d * f100; - g70 += 0.21128855645656586f * d * f101; - g71 += 0.18898223340511322f * d * f102; - g72 += 0.14433756470680237f * d * f103; + { const float d = D(ii, k, 314); + g123 += 0.20412415266036987f * d * f80; + g124 += 0.1767766922712326f * d * f81; + g125 += -0.03857583925127983f * d * f80; + g125 += 0.14940357208251953f * d * f82; + g126 += -0.06681530922651291f * d * f81; + g127 += -0.13363061845302582f * d * f84; + g128 += 0.17251639068126678f * d * f83; + g128 += -0.06681530922651291f * d * f85; + g129 += 0.14940357208251953f * d * f84; + g129 += -0.03857583925127983f * d * f86; + g130 += 0.1767766922712326f * d * f85; + g131 += 0.20412415266036987f * d * f86; } - { const float d = D(ii, k, 197); - g66 += 0.20412415266036987f * d * f96; - g67 += 0.1767766922712326f * d * f97; - g66 += -0.03857583925127983f * d * f98; - g68 += 0.14940357208251953f * d * f98; - g67 += -0.06681530922651291f * d * f99; - g70 += -0.13363061845302582f * d * f100; - g69 += 0.17251639068126678f * d * f101; - g71 += -0.06681530922651291f * d * f101; - g70 += 0.14940357208251953f * d * f102; - g72 += -0.03857583925127983f * d * f102; - g71 += 0.1767766922712326f * d * f103; - g72 += 0.20412415266036987f * d * f104; + { const float d = D(ii, k, 363); + g132 += 0.20412415266036987f * d * f58; + g133 += 0.1767766922712326f * d * f57; + g134 += 0.14940357208251953f * d * f56; + g134 += 0.03857583925127983f * d * f58; + g135 += 0.17251639068126678f * d * f55; + g135 += 0.06681530922651291f * d * f57; + g136 += -0.13363061845302582f * d * f54; + g137 += -0.06681530922651291f * d * f53; + g138 += -0.03857583925127983f * d * f52; + g138 += -0.14940357208251953f * d * f54; + g139 += -0.1767766922712326f * d * f53; + g140 += -0.20412415266036987f * d * f52; } - { const float d = D(ii, k, 198); - g79 += 0.20412415266036987f * d * f96; - g78 += 0.1767766922712326f * d * f97; - g77 += 0.14940357208251953f * d * f98; - g79 += 0.03857583925127983f * d * f98; - g76 += 0.17251639068126678f * d * f99; - g78 += 0.06681530922651291f * d * f99; - g75 += -0.13363061845302582f * d * f100; - g74 += -0.06681530922651291f * d * f101; - g73 += -0.03857583925127983f * d * f102; - g75 += -0.14940357208251953f * d * f102; - g74 += -0.1767766922712326f * d * f103; - g73 += -0.20412415266036987f * d * f104; + { const float d = D(ii, k, 364); + g133 += 0.14433756470680237f * d * f52; + g134 += 0.18898223340511322f * d * f53; + g135 += 0.21128855645656586f * d * f54; + g136 += 0.2182178944349289f * d * f55; + g137 += 0.21128855645656586f * d * f56; + g138 += 0.18898223340511322f * d * f57; + g139 += 0.14433756470680237f * d * f58; } - { const float d = D(ii, k, 199); - g73 += 0.14433756470680237f * d * f97; - g74 += 0.18898223340511322f * d * f98; - g75 += 0.21128855645656586f * d * f99; - g76 += 0.2182178944349289f * d * f100; - g77 += 0.21128855645656586f * d * f101; - g78 += 0.18898223340511322f * d * f102; - g79 += 0.14433756470680237f * d * f103; + { const float d = D(ii, k, 365); + g132 += 0.20412415266036987f * d * f52; + g133 += 0.1767766922712326f * d * f53; + g134 += -0.03857583925127983f * d * f52; + g134 += 0.14940357208251953f * d * f54; + g135 += -0.06681530922651291f * d * f53; + g136 += -0.13363061845302582f * d * f56; + g137 += 0.17251639068126678f * d * f55; + g137 += -0.06681530922651291f * d * f57; + g138 += 0.14940357208251953f * d * f56; + g138 += -0.03857583925127983f * d * f58; + g139 += 0.1767766922712326f * d * f57; + g140 += 0.20412415266036987f * d * f58; } - { const float d = D(ii, k, 200); - g73 += 0.20412415266036987f * d * f96; - g74 += 0.1767766922712326f * d * f97; - g73 += -0.03857583925127983f * d * f98; - g75 += 0.14940357208251953f * d * f98; - g74 += -0.06681530922651291f * d * f99; - g77 += -0.13363061845302582f * d * f100; - g76 += 0.17251639068126678f * d * f101; - g78 += -0.06681530922651291f * d * f101; - g77 += 0.14940357208251953f * d * f102; - g79 += -0.03857583925127983f * d * f102; - g78 += 0.1767766922712326f * d * f103; - g79 += 0.20412415266036987f * d * f104; + { const float d = D(ii, k, 366); + g132 += 0.20412415266036987f * d * f65; + g133 += 0.1767766922712326f * d * f64; + g134 += 0.14940357208251953f * d * f63; + g134 += 0.03857583925127983f * d * f65; + g135 += 0.17251639068126678f * d * f62; + g135 += 0.06681530922651291f * d * f64; + g136 += -0.13363061845302582f * d * f61; + g137 += -0.06681530922651291f * d * f60; + g138 += -0.03857583925127983f * d * f59; + g138 += -0.14940357208251953f * d * f61; + g139 += -0.1767766922712326f * d * f60; + g140 += -0.20412415266036987f * d * f59; } - { const float d = D(ii, k, 201); - g86 += 0.20412415266036987f * d * f96; - g85 += 0.1767766922712326f * d * f97; - g84 += 0.14940357208251953f * d * f98; - g86 += 0.03857583925127983f * d * f98; - g83 += 0.17251639068126678f * d * f99; - g85 += 0.06681530922651291f * d * f99; - g82 += -0.13363061845302582f * d * f100; - g81 += -0.06681530922651291f * d * f101; - g80 += -0.03857583925127983f * d * f102; - g82 += -0.14940357208251953f * d * f102; - g81 += -0.1767766922712326f * d * f103; - g80 += -0.20412415266036987f * d * f104; + { const float d = D(ii, k, 367); + g133 += 0.14433756470680237f * d * f59; + g134 += 0.18898223340511322f * d * f60; + g135 += 0.21128855645656586f * d * f61; + g136 += 0.2182178944349289f * d * f62; + g137 += 0.21128855645656586f * d * f63; + g138 += 0.18898223340511322f * d * f64; + g139 += 0.14433756470680237f * d * f65; } - { const float d = D(ii, k, 202); - g80 += 0.14433756470680237f * d * f97; - g81 += 0.18898223340511322f * d * f98; - g82 += 0.21128855645656586f * d * f99; - g83 += 0.2182178944349289f * d * f100; - g84 += 0.21128855645656586f * d * f101; - g85 += 0.18898223340511322f * d * f102; - g86 += 0.14433756470680237f * d * f103; + { const float d = D(ii, k, 368); + g132 += 0.20412415266036987f * d * f59; + g133 += 0.1767766922712326f * d * f60; + g134 += -0.03857583925127983f * d * f59; + g134 += 0.14940357208251953f * d * f61; + g135 += -0.06681530922651291f * d * f60; + g136 += -0.13363061845302582f * d * f63; + g137 += 0.17251639068126678f * d * f62; + g137 += -0.06681530922651291f * d * f64; + g138 += 0.14940357208251953f * d * f63; + g138 += -0.03857583925127983f * d * f65; + g139 += 0.1767766922712326f * d * f64; + g140 += 0.20412415266036987f * d * f65; } - { const float d = D(ii, k, 203); - g80 += 0.20412415266036987f * d * f96; - g81 += 0.1767766922712326f * d * f97; - g80 += -0.03857583925127983f * d * f98; - g82 += 0.14940357208251953f * d * f98; - g81 += -0.06681530922651291f * d * f99; - g84 += -0.13363061845302582f * d * f100; - g83 += 0.17251639068126678f * d * f101; - g85 += -0.06681530922651291f * d * f101; - g84 += 0.14940357208251953f * d * f102; - g86 += -0.03857583925127983f * d * f102; - g85 += 0.1767766922712326f * d * f103; - g86 += 0.20412415266036987f * d * f104; + { const float d = D(ii, k, 369); + g132 += 0.20412415266036987f * d * f72; + g133 += 0.1767766922712326f * d * f71; + g134 += 0.14940357208251953f * d * f70; + g134 += 0.03857583925127983f * d * f72; + g135 += 0.17251639068126678f * d * f69; + g135 += 0.06681530922651291f * d * f71; + g136 += -0.13363061845302582f * d * f68; + g137 += -0.06681530922651291f * d * f67; + g138 += -0.03857583925127983f * d * f66; + g138 += -0.14940357208251953f * d * f68; + g139 += -0.1767766922712326f * d * f67; + g140 += -0.20412415266036987f * d * f66; } - { const float d = D(ii, k, 219); - g66 += 0.26726123690605164f * d * f21; - g67 += 0.2182178944349289f * d * f20; - g68 += 0.23904572427272797f * d * f19; - g68 += 0.0690065547823906f * d * f21; - g69 += -0.16903084516525269f * d * f18; - g70 += -0.0690065547823906f * d * f17; - g71 += -0.2182178944349289f * d * f18; - g72 += -0.26726123690605164f * d * f17; + { const float d = D(ii, k, 370); + g133 += 0.14433756470680237f * d * f66; + g134 += 0.18898223340511322f * d * f67; + g135 += 0.21128855645656586f * d * f68; + g136 += 0.2182178944349289f * d * f69; + g137 += 0.21128855645656586f * d * f70; + g138 += 0.18898223340511322f * d * f71; + g139 += 0.14433756470680237f * d * f72; } - { const float d = D(ii, k, 220); - g67 += 0.2182178944349289f * d * f17; - g68 += 0.2760262191295624f * d * f18; - g69 += 0.29277002811431885f * d * f19; - g70 += 0.2760262191295624f * d * f20; - g71 += 0.2182178944349289f * d * f21; + { const float d = D(ii, k, 371); + g132 += 0.20412415266036987f * d * f66; + g133 += 0.1767766922712326f * d * f67; + g134 += -0.03857583925127983f * d * f66; + g134 += 0.14940357208251953f * d * f68; + g135 += -0.06681530922651291f * d * f67; + g136 += -0.13363061845302582f * d * f70; + g137 += 0.17251639068126678f * d * f69; + g137 += -0.06681530922651291f * d * f71; + g138 += 0.14940357208251953f * d * f70; + g138 += -0.03857583925127983f * d * f72; + g139 += 0.1767766922712326f * d * f71; + g140 += 0.20412415266036987f * d * f72; } - { const float d = D(ii, k, 221); - g66 += 0.26726123690605164f * d * f17; - g67 += 0.2182178944349289f * d * f18; - g68 += -0.0690065547823906f * d * f17; - g69 += -0.16903084516525269f * d * f20; - g70 += 0.23904572427272797f * d * f19; - g70 += -0.0690065547823906f * d * f21; - g71 += 0.2182178944349289f * d * f20; - g72 += 0.26726123690605164f * d * f21; + { const float d = D(ii, k, 372); + g132 += 0.20412415266036987f * d * f79; + g133 += 0.1767766922712326f * d * f78; + g134 += 0.14940357208251953f * d * f77; + g134 += 0.03857583925127983f * d * f79; + g135 += 0.17251639068126678f * d * f76; + g135 += 0.06681530922651291f * d * f78; + g136 += -0.13363061845302582f * d * f75; + g137 += -0.06681530922651291f * d * f74; + g138 += -0.03857583925127983f * d * f73; + g138 += -0.14940357208251953f * d * f75; + g139 += -0.1767766922712326f * d * f74; + g140 += -0.20412415266036987f * d * f73; } - { const float d = D(ii, k, 222); - g66 += 0.26726123690605164f * d * f26; - g67 += 0.2182178944349289f * d * f25; - g68 += 0.23904572427272797f * d * f24; - g68 += 0.0690065547823906f * d * f26; - g69 += -0.16903084516525269f * d * f23; - g70 += -0.0690065547823906f * d * f22; - g71 += -0.2182178944349289f * d * f23; - g72 += -0.26726123690605164f * d * f22; + { const float d = D(ii, k, 373); + g133 += 0.14433756470680237f * d * f73; + g134 += 0.18898223340511322f * d * f74; + g135 += 0.21128855645656586f * d * f75; + g136 += 0.2182178944349289f * d * f76; + g137 += 0.21128855645656586f * d * f77; + g138 += 0.18898223340511322f * d * f78; + g139 += 0.14433756470680237f * d * f79; } - { const float d = D(ii, k, 223); - g67 += 0.2182178944349289f * d * f22; - g68 += 0.2760262191295624f * d * f23; - g69 += 0.29277002811431885f * d * f24; - g70 += 0.2760262191295624f * d * f25; - g71 += 0.2182178944349289f * d * f26; + { const float d = D(ii, k, 374); + g132 += 0.20412415266036987f * d * f73; + g133 += 0.1767766922712326f * d * f74; + g134 += -0.03857583925127983f * d * f73; + g134 += 0.14940357208251953f * d * f75; + g135 += -0.06681530922651291f * d * f74; + g136 += -0.13363061845302582f * d * f77; + g137 += 0.17251639068126678f * d * f76; + g137 += -0.06681530922651291f * d * f78; + g138 += 0.14940357208251953f * d * f77; + g138 += -0.03857583925127983f * d * f79; + g139 += 0.1767766922712326f * d * f78; + g140 += 0.20412415266036987f * d * f79; } - { const float d = D(ii, k, 224); - g66 += 0.26726123690605164f * d * f22; - g67 += 0.2182178944349289f * d * f23; - g68 += -0.0690065547823906f * d * f22; - g69 += -0.16903084516525269f * d * f25; - g70 += 0.23904572427272797f * d * f24; - g70 += -0.0690065547823906f * d * f26; - g71 += 0.2182178944349289f * d * f25; - g72 += 0.26726123690605164f * d * f26; + { const float d = D(ii, k, 375); + g132 += 0.20412415266036987f * d * f86; + g133 += 0.1767766922712326f * d * f85; + g134 += 0.14940357208251953f * d * f84; + g134 += 0.03857583925127983f * d * f86; + g135 += 0.17251639068126678f * d * f83; + g135 += 0.06681530922651291f * d * f85; + g136 += -0.13363061845302582f * d * f82; + g137 += -0.06681530922651291f * d * f81; + g138 += -0.03857583925127983f * d * f80; + g138 += -0.14940357208251953f * d * f82; + g139 += -0.1767766922712326f * d * f81; + g140 += -0.20412415266036987f * d * f80; } - { const float d = D(ii, k, 225); - g66 += 0.26726123690605164f * d * f31; - g67 += 0.2182178944349289f * d * f30; - g68 += 0.23904572427272797f * d * f29; - g68 += 0.0690065547823906f * d * f31; - g69 += -0.16903084516525269f * d * f28; - g70 += -0.0690065547823906f * d * f27; - g71 += -0.2182178944349289f * d * f28; - g72 += -0.26726123690605164f * d * f27; + { const float d = D(ii, k, 376); + g133 += 0.14433756470680237f * d * f80; + g134 += 0.18898223340511322f * d * f81; + g135 += 0.21128855645656586f * d * f82; + g136 += 0.2182178944349289f * d * f83; + g137 += 0.21128855645656586f * d * f84; + g138 += 0.18898223340511322f * d * f85; + g139 += 0.14433756470680237f * d * f86; } - { const float d = D(ii, k, 226); - g67 += 0.2182178944349289f * d * f27; - g68 += 0.2760262191295624f * d * f28; - g69 += 0.29277002811431885f * d * f29; - g70 += 0.2760262191295624f * d * f30; - g71 += 0.2182178944349289f * d * f31; + { const float d = D(ii, k, 377); + g132 += 0.20412415266036987f * d * f80; + g133 += 0.1767766922712326f * d * f81; + g134 += -0.03857583925127983f * d * f80; + g134 += 0.14940357208251953f * d * f82; + g135 += -0.06681530922651291f * d * f81; + g136 += -0.13363061845302582f * d * f84; + g137 += 0.17251639068126678f * d * f83; + g137 += -0.06681530922651291f * d * f85; + g138 += 0.14940357208251953f * d * f84; + g138 += -0.03857583925127983f * d * f86; + g139 += 0.1767766922712326f * d * f85; + g140 += 0.20412415266036987f * d * f86; } - { const float d = D(ii, k, 227); - g66 += 0.26726123690605164f * d * f27; - g67 += 0.2182178944349289f * d * f28; - g68 += -0.0690065547823906f * d * f27; - g69 += -0.16903084516525269f * d * f30; - g70 += 0.23904572427272797f * d * f29; - g70 += -0.0690065547823906f * d * f31; - g71 += 0.2182178944349289f * d * f30; - g72 += 0.26726123690605164f * d * f31; + if constexpr (ACC) { + dF(ii, k, 96) += g96; + dF(ii, k, 97) += g97; + dF(ii, k, 98) += g98; + dF(ii, k, 99) += g99; + dF(ii, k, 100) += g100; + dF(ii, k, 101) += g101; + dF(ii, k, 102) += g102; + dF(ii, k, 103) += g103; + dF(ii, k, 104) += g104; + dF(ii, k, 105) += g105; + dF(ii, k, 106) += g106; + dF(ii, k, 107) += g107; + dF(ii, k, 108) += g108; + dF(ii, k, 109) += g109; + dF(ii, k, 110) += g110; + dF(ii, k, 111) += g111; + dF(ii, k, 112) += g112; + dF(ii, k, 113) += g113; + dF(ii, k, 114) += g114; + dF(ii, k, 115) += g115; + dF(ii, k, 116) += g116; + dF(ii, k, 117) += g117; + dF(ii, k, 118) += g118; + dF(ii, k, 119) += g119; + dF(ii, k, 120) += g120; + dF(ii, k, 121) += g121; + dF(ii, k, 122) += g122; + dF(ii, k, 123) += g123; + dF(ii, k, 124) += g124; + dF(ii, k, 125) += g125; + dF(ii, k, 126) += g126; + dF(ii, k, 127) += g127; + dF(ii, k, 128) += g128; + dF(ii, k, 129) += g129; + dF(ii, k, 130) += g130; + dF(ii, k, 131) += g131; + dF(ii, k, 132) += g132; + dF(ii, k, 133) += g133; + dF(ii, k, 134) += g134; + dF(ii, k, 135) += g135; + dF(ii, k, 136) += g136; + dF(ii, k, 137) += g137; + dF(ii, k, 138) += g138; + dF(ii, k, 139) += g139; + dF(ii, k, 140) += g140; + } else { + dF(ii, k, 96) = g96; + dF(ii, k, 97) = g97; + dF(ii, k, 98) = g98; + dF(ii, k, 99) = g99; + dF(ii, k, 100) = g100; + dF(ii, k, 101) = g101; + dF(ii, k, 102) = g102; + dF(ii, k, 103) = g103; + dF(ii, k, 104) = g104; + dF(ii, k, 105) = g105; + dF(ii, k, 106) = g106; + dF(ii, k, 107) = g107; + dF(ii, k, 108) = g108; + dF(ii, k, 109) = g109; + dF(ii, k, 110) = g110; + dF(ii, k, 111) = g111; + dF(ii, k, 112) = g112; + dF(ii, k, 113) = g113; + dF(ii, k, 114) = g114; + dF(ii, k, 115) = g115; + dF(ii, k, 116) = g116; + dF(ii, k, 117) = g117; + dF(ii, k, 118) = g118; + dF(ii, k, 119) = g119; + dF(ii, k, 120) = g120; + dF(ii, k, 121) = g121; + dF(ii, k, 122) = g122; + dF(ii, k, 123) = g123; + dF(ii, k, 124) = g124; + dF(ii, k, 125) = g125; + dF(ii, k, 126) = g126; + dF(ii, k, 127) = g127; + dF(ii, k, 128) = g128; + dF(ii, k, 129) = g129; + dF(ii, k, 130) = g130; + dF(ii, k, 131) = g131; + dF(ii, k, 132) = g132; + dF(ii, k, 133) = g133; + dF(ii, k, 134) = g134; + dF(ii, k, 135) = g135; + dF(ii, k, 136) = g136; + dF(ii, k, 137) = g137; + dF(ii, k, 138) = g138; + dF(ii, k, 139) = g139; + dF(ii, k, 140) = g140; + } + } + } + +}; + +// self product, 264 terms: GRACE-2L-OMAT-large-base BB, GRACE-2L-OMAT-large-ft-AM BB, GRACE-2L-OMAT-large-ft-E BB, +// GRACE-2L-OMAT-medium-base BB, GRACE-2L-OMAT-medium-ft-AM BB, GRACE-2L-OMAT-medium-ft-E BB, +// GRACE-2L-SMAX-OMAT-large BB, GRACE-2L-SMAX-OMAT-medium BB, GRACE-2L-SMAX-large BB, GRACE-2L-SMAX-medium BB, +// grace_2l_l3 BB +struct T264_d1dd991c { + static constexpr int nt = 264, nl = 24; + static constexpr int tab[264][3] = {{0,0,0}, {1,1,1}, {2,2,1}, {3,3,1}, {7,7,2}, {8,8,2}, {9,9,2}, {10,10,2}, {11,11,2}, {17,17,3}, {18,18,3}, {19,19,3}, {20,20,3}, {21,21,3}, {22,22,3}, {23,23,3}, {1,0,4}, {2,0,5}, {3,0,6}, {7,3,7}, {8,2,7}, {9,1,7}, {11,1,7}, {8,1,8}, {9,2,8}, {10,3,8}, {7,1,9}, {9,3,9}, {10,2,9}, {11,3,9}, {17,11,10}, {18,10,10}, {19,9,10}, {19,11,10}, {20,8,10}, {21,7,10}, {22,8,10}, {23,7,10}, {18,7,11}, {19,8,11}, {20,9,11}, {21,10,11}, {22,11,11}, {17,7,12}, {18,8,12}, {19,7,12}, {20,10,12}, {21,9,12}, {21,11,12}, {22,10,12}, {23,11,12}, {7,0,13}, {8,0,14}, {9,0,15}, {10,0,16}, {11,0,17}, {3,1,18}, {2,1,19}, {1,1,20}, {2,2,20}, {3,3,20}, {3,2,21}, {1,1,22}, {3,3,22}, {8,1,23}, {10,3,23}, {11,2,23}, {7,1,24}, {9,3,24}, {10,2,24}, {11,3,24}, {8,3,25}, {10,1,25}, {7,3,26}, {8,2,26}, {9,1,26}, {11,1,26}, {7,2,27}, {8,3,27}, {10,1,27}, {9,7,28}, {10,8,28}, {10,7,29}, {9,8,29}, {11,8,29}, {7,7,30}, {8,8,30}, {9,9,30}, {10,10,30}, {11,11,30}, {8,7,31}, {10,9,31}, {11,10,31}, {8,8,32}, {11,9,32}, {10,10,32}, {17,3,33}, {18,2,33}, {19,3,33}, {21,1,33}, {23,1,33}, {18,3,34}, {19,2,34}, {20,1,34}, {22,1,34}, {19,1,35}, {20,2,35}, {21,3,35}, {18,1,36}, {20,3,36}, {21,2,36}, {22,3,36}, {17,1,37}, {19,1,37}, {21,3,37}, {22,2,37}, {23,3,37}, {17,8,38}, {19,8,38}, {20,11,38}, {21,10,38}, {22,9,38}, {23,10,38}, {17,7,39}, {19,7,39}, {20,10,39}, {21,9,39}, {21,11,39}, {23,11,39}, {18,11,40}, {19,10,40}, {21,8,40}, {22,7,40}, {17,11,41}, {19,9,41}, {19,11,41}, {20,8,41}, {21,7,41}, {23,7,41}, {17,10,42}, {18,9,42}, {19,10,42}, {20,7,42}, {21,8,42}, {23,8,42}, {21,17,43}, {20,18,43}, {21,19,43}, {23,19,43}, {22,17,44}, {21,18,44}, {23,18,44}, {20,19,44}, {22,19,44}, {17,17,45}, {19,19,45}, {20,20,45}, {21,21,45}, {23,23,45}, {18,17,46}, {19,18,46}, {21,20,46}, {22,21,46}, {23,22,46}, {19,17,47}, {19,19,47}, {22,20,47}, {21,21,47}, {23,21,47}, {17,0,48}, {18,0,49}, {19,0,50}, {20,0,51}, {21,0,52}, {22,0,53}, {23,0,54}, {7,3,55}, {11,1,55}, {7,2,56}, {8,3,56}, {10,1,56}, {7,3,57}, {8,2,57}, {9,1,57}, {11,1,57}, {8,1,58}, {9,2,58}, {10,3,58}, {7,1,59}, {9,3,59}, {10,2,59}, {11,3,59}, {8,1,60}, {10,3,60}, {11,2,60}, {7,1,61}, {11,3,61}, {18,1,62}, {22,3,62}, {23,2,62}, {17,1,63}, {19,1,63}, {21,3,63}, {22,2,63}, {23,3,63}, {18,1,64}, {20,3,64}, {21,2,64}, {22,3,64}, {19,3,65}, {21,1,65}, {18,3,66}, {19,2,66}, {20,1,66}, {22,1,66}, {17,3,67}, {18,2,67}, {19,3,67}, {21,1,67}, {23,1,67}, {17,2,68}, {18,3,68}, {22,1,68}, {17,9,69}, {18,10,69}, {19,11,69}, {21,7,69}, {22,8,69}, {17,10,70}, {19,10,70}, {20,7,70}, {21,8,70}, {23,8,70}, {17,11,71}, {18,10,71}, {19,9,71}, {19,11,71}, {20,8,71}, {21,7,71}, {22,8,71}, {23,7,71}, {18,7,72}, {19,8,72}, {20,9,72}, {21,10,72}, {22,11,72}, {17,7,73}, {18,8,73}, {19,7,73}, {20,10,73}, {21,9,73}, {21,11,73}, {22,10,73}, {23,11,73}, {17,8,74}, {19,8,74}, {20,11,74}, {21,10,74}, {23,10,74}, {18,8,75}, {19,7,75}, {21,11,75}, {22,10,75}, {23,9,75}}; + static constexpr double cg[264] = {1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, 1.2909944487358054, 1.2909944487358056, -0.3726779962499649, 0.7453559924999299, -0.3726779962499649, 1.2909944487358056, -0.6454972243679027, 0.6454972243679027, -0.40824829046386285, 0.40824829046386285, -0.8164965809277259, 0.40824829046386285, 0.7071067811865475, -0.40824829046386296, 0.40824829046386285, -0.7071067811865475, 0.7071067811865475, -0.40824829046386285, 0.40824829046386296, -0.7071067811865475, 0.40824829046386285, 0.8164965809277259, -0.40824829046386285, -0.40824829046386285, -0.8944271909999157, 0.7745966692414832, 0.7745966692414832, 0.44721359549995787, -0.7745966692414832, -0.44721359549995787, 0.22360679774997894, 0.447213595499958, 0.22360679774997894, -0.44721359549995787, 0.7745966692414832, 0.44721359549995787, 0.7745966692414832, -0.3872983346207416, -0.8944271909999157, 0.3872983346207416, 0.44543540318737396, 0.363696483726654, -0.11501092655705904, -0.11501092655705904, -0.44543540318737396, 0.363696483726654, 0.46004370622823615, -0.28171808490950556, -0.363696483726654, 0.3984095364447979, 0.4879500364742666, 0.3984095364447979, 0.363696483726654, -0.28171808490950556, 0.46004370622823615, 0.363696483726654, 0.44543540318737396, 0.11501092655705904, -0.11501092655705904, 0.363696483726654, 0.44543540318737396, -0.4225771273642581, -0.3273268353539885, -0.26726124191242434, 0.3273268353539885, -0.5976143046671967, -0.4225771273642581, 0.4225771273642581, 0.3273268353539885, 0.5345224838248487, -0.3779644730092272, 0.3273268353539885, 0.4225771273642581, -0.5976143046671967, -0.3779644730092272, 0.3779644730092272, 0.5976143046671967, -0.4225771273642581, 0.3779644730092272, 0.3273268353539885, -0.5345224838248487, -0.3273268353539885, 0.4225771273642581, 0.4225771273642581, 0.5976143046671967, -0.3273268353539885, 0.26726124191242434, -0.3273268353539885, -0.4225771273642581, -0.3571428571428571, -0.7142857142857142, 0.5532833351724881, 0.3571428571428571, 0.5646924393157818, 0.4374088826398531, -0.5646924393157818, 0.22587697572631277, -0.4374088826398531, -0.39929785312496235, 0.23957871187497742, 0.31943828249996997, 0.23957871187497742, -0.39929785312496235, 0.5646924393157818, 0.4374088826398531, 0.22587697572631277, 0.4374088826398531, 0.5646924393157818, -0.3571428571428571, -0.27664166758624403, -0.7142857142857142, 0.27664166758624403, -0.3571428571428571, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, 0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.557773351022717, 0.6440611887195306, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, -0.3535533905932737, 0.3535533905932737, -0.8660254037844385, 0.3535533905932737, -0.4564354645876383, 0.4564354645876383, -0.5773502691896256, 0.3535533905932737, 0.4564354645876383, 0.7071067811865475, -0.2886751345948128, 0.4564354645876383, -0.7071067811865475, 0.7071067811865475, -0.4564354645876383, 0.2886751345948128, -0.7071067811865475, 0.4564354645876383, -0.3535533905932737, 0.5773502691896256, -0.4564354645876383, -0.4564354645876383, 0.3535533905932737, 0.8660254037844385, -0.3535533905932737, -0.3535533905932737, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.24999999999999994, 0.39528470752104733, 0.39528470752104733, 0.30618621784789724, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, -0.24999999999999994, 0.30618621784789724, 0.33541019662496846, -0.3872983346207416, 0.15811388300841894, 0.3872983346207416, -0.30618621784789724, 0.24999999999999994, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.30618621784789724, 0.3872983346207416, 0.15811388300841894, 0.33541019662496846, 0.3872983346207416, 0.30618621784789724, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, -0.4999999999999999, 0.30618621784789724, 0.39528470752104733, -0.39528470752104733, 0.24999999999999994, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a7 = L(ii, k, 7); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a17 = L(ii, k, 17); + const float a18 = L(ii, k, 18); + const float a19 = L(ii, k, 19); + const float a20 = L(ii, k, 20); + const float a21 = L(ii, k, 21); + const float a22 = L(ii, k, 22); + const float a23 = L(ii, k, 23); + out(ii, k, 0) = 1.0f * a0 * a0; + out(ii, k, 1) = 0.3333333432674408f * a1 * a1 + 0.3333333432674408f * a2 * a2 + 0.3333333432674408f * a3 * a3; + out(ii, k, 2) = 0.20000000298023224f * a7 * a7 + 0.20000000298023224f * a8 * a8 + 0.20000000298023224f * a9 * a9 + 0.20000000298023224f * a10 * a10 + 0.20000000298023224f * a11 * a11; + out(ii, k, 3) = 0.1428571492433548f * a17 * a17 + 0.1428571492433548f * a18 * a18 + 0.1428571492433548f * a19 * a19 + 0.1428571492433548f * a20 * a20 + 0.1428571492433548f * a21 * a21 + 0.1428571492433548f * a22 * a22 + 0.1428571492433548f * a23 * a23; + out(ii, k, 4) = 1.0f * a1 * a0; + out(ii, k, 5) = 1.0f * a2 * a0; + out(ii, k, 6) = 1.0f * a3 * a0; + out(ii, k, 7) = 0.3872983455657959f * a7 * a3 + 0.3872983455657959f * a8 * a2 + -0.22360679507255554f * a9 * a1 + -0.3872983455657959f * a11 * a1; + out(ii, k, 8) = 0.3872983455657959f * a8 * a1 + 0.4472135901451111f * a9 * a2 + 0.3872983455657959f * a10 * a3; + out(ii, k, 9) = 0.3872983455657959f * a7 * a1 + -0.22360679507255554f * a9 * a3 + 0.3872983455657959f * a10 * a2 + 0.3872983455657959f * a11 * a3; + out(ii, k, 10) = 0.26726123690605164f * a17 * a11 + 0.2182178944349289f * a18 * a10 + 0.23904572427272797f * a19 * a9 + 0.0690065547823906f * a19 * a11 + -0.16903084516525269f * a20 * a8 + -0.0690065547823906f * a21 * a7 + -0.2182178944349289f * a22 * a8 + -0.26726123690605164f * a23 * a7; + out(ii, k, 11) = 0.2182178944349289f * a18 * a7 + 0.2760262191295624f * a19 * a8 + 0.29277002811431885f * a20 * a9 + 0.2760262191295624f * a21 * a10 + 0.2182178944349289f * a22 * a11; + out(ii, k, 12) = 0.26726123690605164f * a17 * a7 + 0.2182178944349289f * a18 * a8 + -0.0690065547823906f * a19 * a7 + -0.16903084516525269f * a20 * a10 + 0.23904572427272797f * a21 * a9 + -0.0690065547823906f * a21 * a11 + 0.2182178944349289f * a22 * a10 + 0.26726123690605164f * a23 * a11; + out(ii, k, 13) = 1.0f * a7 * a0; + out(ii, k, 14) = 1.0f * a8 * a0; + out(ii, k, 15) = 1.0f * a9 * a0; + out(ii, k, 16) = 1.0f * a10 * a0; + out(ii, k, 17) = 1.0f * a11 * a0; + out(ii, k, 18) = 1.29099440574646f * a3 * a1; + out(ii, k, 19) = 1.29099440574646f * a2 * a1; + out(ii, k, 20) = -0.3726779818534851f * a1 * a1 + 0.7453559637069702f * a2 * a2 + -0.3726779818534851f * a3 * a3; + out(ii, k, 21) = 1.29099440574646f * a3 * a2; + out(ii, k, 22) = -0.64549720287323f * a1 * a1 + 0.64549720287323f * a3 * a3; + out(ii, k, 23) = -0.40824830532073975f * a8 * a1 + 0.40824830532073975f * a10 * a3 + -0.8164966106414795f * a11 * a2; + out(ii, k, 24) = 0.40824830532073975f * a7 * a1 + 0.7071067690849304f * a9 * a3 + -0.40824830532073975f * a10 * a2 + 0.40824830532073975f * a11 * a3; + out(ii, k, 25) = -0.7071067690849304f * a8 * a3 + 0.7071067690849304f * a10 * a1; + out(ii, k, 26) = -0.40824830532073975f * a7 * a3 + 0.40824830532073975f * a8 * a2 + -0.7071067690849304f * a9 * a1 + 0.40824830532073975f * a11 * a1; + out(ii, k, 27) = 0.8164966106414795f * a7 * a2 + -0.40824830532073975f * a8 * a3 + -0.40824830532073975f * a10 * a1; + out(ii, k, 28) = -0.8944271802902222f * a9 * a7 + 0.7745966911315918f * a10 * a8; + out(ii, k, 29) = 0.7745966911315918f * a10 * a7 + 0.4472135901451111f * a9 * a8 + -0.7745966911315918f * a11 * a8; + out(ii, k, 30) = -0.4472135901451111f * a7 * a7 + 0.22360679507255554f * a8 * a8 + 0.4472135901451111f * a9 * a9 + 0.22360679507255554f * a10 * a10 + -0.4472135901451111f * a11 * a11; + out(ii, k, 31) = 0.7745966911315918f * a8 * a7 + 0.4472135901451111f * a10 * a9 + 0.7745966911315918f * a11 * a10; + out(ii, k, 32) = -0.3872983455657959f * a8 * a8 + -0.8944271802902222f * a11 * a9 + 0.3872983455657959f * a10 * a10; + out(ii, k, 33) = 0.44543540477752686f * a17 * a3 + 0.36369648575782776f * a18 * a2 + -0.11501092463731766f * a19 * a3 + -0.11501092463731766f * a21 * a1 + -0.44543540477752686f * a23 * a1; + out(ii, k, 34) = 0.36369648575782776f * a18 * a3 + 0.46004369854927063f * a19 * a2 + -0.28171807527542114f * a20 * a1 + -0.36369648575782776f * a22 * a1; + out(ii, k, 35) = 0.39840954542160034f * a19 * a1 + 0.48795002698898315f * a20 * a2 + 0.39840954542160034f * a21 * a3; + out(ii, k, 36) = 0.36369648575782776f * a18 * a1 + -0.28171807527542114f * a20 * a3 + 0.46004369854927063f * a21 * a2 + 0.36369648575782776f * a22 * a3; + out(ii, k, 37) = 0.44543540477752686f * a17 * a1 + 0.11501092463731766f * a19 * a1 + -0.11501092463731766f * a21 * a3 + 0.36369648575782776f * a22 * a2 + 0.44543540477752686f * a23 * a3; + out(ii, k, 38) = -0.4225771129131317f * a17 * a8 + -0.32732683420181274f * a19 * a8 + -0.26726123690605164f * a20 * a11 + 0.32732683420181274f * a21 * a10 + -0.5976142883300781f * a22 * a9 + -0.4225771129131317f * a23 * a10; + out(ii, k, 39) = 0.4225771129131317f * a17 * a7 + 0.32732683420181274f * a19 * a7 + 0.5345224738121033f * a20 * a10 + -0.37796446681022644f * a21 * a9 + 0.32732683420181274f * a21 * a11 + 0.4225771129131317f * a23 * a11; + out(ii, k, 40) = -0.5976142883300781f * a18 * a11 + -0.37796446681022644f * a19 * a10 + 0.37796446681022644f * a21 * a8 + 0.5976142883300781f * a22 * a7; + out(ii, k, 41) = -0.4225771129131317f * a17 * a11 + 0.37796446681022644f * a19 * a9 + 0.32732683420181274f * a19 * a11 + -0.5345224738121033f * a20 * a8 + -0.32732683420181274f * a21 * a7 + 0.4225771129131317f * a23 * a7; + out(ii, k, 42) = 0.4225771129131317f * a17 * a10 + 0.5976142883300781f * a18 * a9 + -0.32732683420181274f * a19 * a10 + 0.26726123690605164f * a20 * a7 + -0.32732683420181274f * a21 * a8 + -0.4225771129131317f * a23 * a8; + out(ii, k, 43) = -0.3571428656578064f * a21 * a17 + -0.7142857313156128f * a20 * a18 + 0.5532833337783813f * a21 * a19 + 0.3571428656578064f * a23 * a19; + out(ii, k, 44) = 0.5646924376487732f * a22 * a17 + 0.4374088943004608f * a21 * a18 + -0.5646924376487732f * a23 * a18 + 0.22587697207927704f * a20 * a19 + -0.4374088943004608f * a22 * a19; + out(ii, k, 45) = -0.3992978632450104f * a17 * a17 + 0.2395787090063095f * a19 * a19 + 0.31943827867507935f * a20 * a20 + 0.2395787090063095f * a21 * a21 + -0.3992978632450104f * a23 * a23; + out(ii, k, 46) = 0.5646924376487732f * a18 * a17 + 0.4374088943004608f * a19 * a18 + 0.22587697207927704f * a21 * a20 + 0.4374088943004608f * a22 * a21 + 0.5646924376487732f * a23 * a22; + out(ii, k, 47) = -0.3571428656578064f * a19 * a17 + -0.2766416668891907f * a19 * a19 + -0.7142857313156128f * a22 * a20 + 0.2766416668891907f * a21 * a21 + -0.3571428656578064f * a23 * a21; + out(ii, k, 48) = 1.0f * a17 * a0; + out(ii, k, 49) = 1.0f * a18 * a0; + out(ii, k, 50) = 1.0f * a19 * a0; + out(ii, k, 51) = 1.0f * a20 * a0; + out(ii, k, 52) = 1.0f * a21 * a0; + out(ii, k, 53) = 1.0f * a22 * a0; + out(ii, k, 54) = 1.0f * a23 * a0; + out(ii, k, 55) = 0.6236095428466797f * a7 * a3 + 0.6236095428466797f * a11 * a1; + out(ii, k, 56) = 0.5091750621795654f * a7 * a2 + 0.5091750621795654f * a8 * a3 + 0.5091750621795654f * a10 * a1; + out(ii, k, 57) = -0.16101530194282532f * a7 * a3 + 0.6440612077713013f * a8 * a2 + 0.5577733516693115f * a9 * a1 + 0.16101530194282532f * a11 * a1; + out(ii, k, 58) = -0.3944053053855896f * a8 * a1 + 0.6831300258636475f * a9 * a2 + -0.3944053053855896f * a10 * a3; + out(ii, k, 59) = -0.16101530194282532f * a7 * a1 + 0.5577733516693115f * a9 * a3 + 0.6440612077713013f * a10 * a2 + -0.16101530194282532f * a11 * a3; + out(ii, k, 60) = -0.5091750621795654f * a8 * a1 + 0.5091750621795654f * a10 * a3 + 0.5091750621795654f * a11 * a2; + out(ii, k, 61) = -0.6236095428466797f * a7 * a1 + 0.6236095428466797f * a11 * a3; + out(ii, k, 62) = -0.3535533845424652f * a18 * a1 + 0.3535533845424652f * a22 * a3 + -0.8660253882408142f * a23 * a2; + out(ii, k, 63) = 0.3535533845424652f * a17 * a1 + -0.4564354717731476f * a19 * a1 + 0.4564354717731476f * a21 * a3 + -0.5773502588272095f * a22 * a2 + 0.3535533845424652f * a23 * a3; + out(ii, k, 64) = 0.4564354717731476f * a18 * a1 + 0.7071067690849304f * a20 * a3 + -0.28867512941360474f * a21 * a2 + 0.4564354717731476f * a22 * a3; + out(ii, k, 65) = -0.7071067690849304f * a19 * a3 + 0.7071067690849304f * a21 * a1; + out(ii, k, 66) = -0.4564354717731476f * a18 * a3 + 0.28867512941360474f * a19 * a2 + -0.7071067690849304f * a20 * a1 + 0.4564354717731476f * a22 * a1; + out(ii, k, 67) = -0.3535533845424652f * a17 * a3 + 0.5773502588272095f * a18 * a2 + -0.4564354717731476f * a19 * a3 + -0.4564354717731476f * a21 * a1 + 0.3535533845424652f * a23 * a1; + out(ii, k, 68) = 0.8660253882408142f * a17 * a2 + -0.3535533845424652f * a18 * a3 + -0.3535533845424652f * a22 * a1; + out(ii, k, 69) = -0.55901700258255f * a17 * a9 + 0.3952847123146057f * a18 * a10 + -0.25f * a19 * a11 + -0.25f * a21 * a7 + 0.3952847123146057f * a22 * a8; + out(ii, k, 70) = 0.3952847123146057f * a17 * a10 + 0.3061862289905548f * a19 * a10 + -0.5f * a20 * a7 + 0.3061862289905548f * a21 * a8 + -0.3952847123146057f * a23 * a8; + out(ii, k, 71) = -0.25f * a17 * a11 + 0.3061862289905548f * a18 * a10 + 0.3354102075099945f * a19 * a9 + -0.3872983455657959f * a19 * a11 + 0.15811388194561005f * a20 * a8 + 0.3872983455657959f * a21 * a7 + -0.3061862289905548f * a22 * a8 + 0.25f * a23 * a7; + out(ii, k, 72) = -0.5f * a18 * a7 + 0.15811388194561005f * a19 * a8 + 0.4472135901451111f * a20 * a9 + 0.15811388194561005f * a21 * a10 + -0.5f * a22 * a11; + out(ii, k, 73) = -0.25f * a17 * a7 + 0.3061862289905548f * a18 * a8 + 0.3872983455657959f * a19 * a7 + 0.15811388194561005f * a20 * a10 + 0.3354102075099945f * a21 * a9 + 0.3872983455657959f * a21 * a11 + 0.3061862289905548f * a22 * a10 + -0.25f * a23 * a11; + out(ii, k, 74) = 0.3952847123146057f * a17 * a8 + -0.3061862289905548f * a19 * a8 + -0.5f * a20 * a11 + 0.3061862289905548f * a21 * a10 + 0.3952847123146057f * a23 * a10; + out(ii, k, 75) = -0.3952847123146057f * a18 * a8 + 0.25f * a19 * a7 + -0.25f * a21 * a11 + 0.3952847123146057f * a22 * a10 + -0.55901700258255f * a23 * a9; + } + + template + KOKKOS_INLINE_FUNCTION static void rev(const V &F, const V &, const V &D, const V &dF, const V &, + const int ii, const int k) + { + const float f0 = F(ii, k, 0); + const float f1 = F(ii, k, 1); + const float f2 = F(ii, k, 2); + const float f3 = F(ii, k, 3); + const float f7 = F(ii, k, 7); + const float f8 = F(ii, k, 8); + const float f9 = F(ii, k, 9); + const float f10 = F(ii, k, 10); + const float f11 = F(ii, k, 11); + const float f17 = F(ii, k, 17); + const float f18 = F(ii, k, 18); + const float f19 = F(ii, k, 19); + const float f20 = F(ii, k, 20); + const float f21 = F(ii, k, 21); + const float f22 = F(ii, k, 22); + const float f23 = F(ii, k, 23); + { + float g0 = 0.0f; + float g1 = 0.0f; + float g2 = 0.0f; + float g3 = 0.0f; + float g4 = 0.0f; + float g5 = 0.0f; + float g6 = 0.0f; + float g7 = 0.0f; + float g8 = 0.0f; + float g9 = 0.0f; + float g10 = 0.0f; + float g11 = 0.0f; + float g12 = 0.0f; + float g13 = 0.0f; + float g14 = 0.0f; + float g15 = 0.0f; + float g16 = 0.0f; + float g17 = 0.0f; + float g18 = 0.0f; + float g19 = 0.0f; + float g20 = 0.0f; + float g21 = 0.0f; + float g22 = 0.0f; + float g23 = 0.0f; + { const float d = D(ii, k, 0); + g0 += 1.0f * d * f0; + g0 += 1.0f * d * f0; } - { const float d = D(ii, k, 228); - g66 += 0.26726123690605164f * d * f36; - g67 += 0.2182178944349289f * d * f35; - g68 += 0.23904572427272797f * d * f34; - g68 += 0.0690065547823906f * d * f36; - g69 += -0.16903084516525269f * d * f33; - g70 += -0.0690065547823906f * d * f32; - g71 += -0.2182178944349289f * d * f33; - g72 += -0.26726123690605164f * d * f32; + { const float d = D(ii, k, 1); + g1 += 0.3333333432674408f * d * f1; + g1 += 0.3333333432674408f * d * f1; + g2 += 0.3333333432674408f * d * f2; + g2 += 0.3333333432674408f * d * f2; + g3 += 0.3333333432674408f * d * f3; + g3 += 0.3333333432674408f * d * f3; } - { const float d = D(ii, k, 229); - g67 += 0.2182178944349289f * d * f32; - g68 += 0.2760262191295624f * d * f33; - g69 += 0.29277002811431885f * d * f34; - g70 += 0.2760262191295624f * d * f35; - g71 += 0.2182178944349289f * d * f36; + { const float d = D(ii, k, 2); + g7 += 0.20000000298023224f * d * f7; + g7 += 0.20000000298023224f * d * f7; + g8 += 0.20000000298023224f * d * f8; + g8 += 0.20000000298023224f * d * f8; + g9 += 0.20000000298023224f * d * f9; + g9 += 0.20000000298023224f * d * f9; + g10 += 0.20000000298023224f * d * f10; + g10 += 0.20000000298023224f * d * f10; + g11 += 0.20000000298023224f * d * f11; + g11 += 0.20000000298023224f * d * f11; } - { const float d = D(ii, k, 230); - g66 += 0.26726123690605164f * d * f32; - g67 += 0.2182178944349289f * d * f33; - g68 += -0.0690065547823906f * d * f32; - g69 += -0.16903084516525269f * d * f35; - g70 += 0.23904572427272797f * d * f34; - g70 += -0.0690065547823906f * d * f36; - g71 += 0.2182178944349289f * d * f35; - g72 += 0.26726123690605164f * d * f36; + { const float d = D(ii, k, 3); + g17 += 0.1428571492433548f * d * f17; + g17 += 0.1428571492433548f * d * f17; + g18 += 0.1428571492433548f * d * f18; + g18 += 0.1428571492433548f * d * f18; + g19 += 0.1428571492433548f * d * f19; + g19 += 0.1428571492433548f * d * f19; + g20 += 0.1428571492433548f * d * f20; + g20 += 0.1428571492433548f * d * f20; + g21 += 0.1428571492433548f * d * f21; + g21 += 0.1428571492433548f * d * f21; + g22 += 0.1428571492433548f * d * f22; + g22 += 0.1428571492433548f * d * f22; + g23 += 0.1428571492433548f * d * f23; + g23 += 0.1428571492433548f * d * f23; } - { const float d = D(ii, k, 231); - g66 += 0.26726123690605164f * d * f46; - g67 += 0.2182178944349289f * d * f45; - g68 += 0.23904572427272797f * d * f44; - g68 += 0.0690065547823906f * d * f46; - g69 += -0.16903084516525269f * d * f43; - g70 += -0.0690065547823906f * d * f42; - g71 += -0.2182178944349289f * d * f43; - g72 += -0.26726123690605164f * d * f42; + { const float d = D(ii, k, 4); + g1 += 1.0f * d * f0; + g0 += 1.0f * d * f1; } - { const float d = D(ii, k, 232); - g67 += 0.2182178944349289f * d * f42; - g68 += 0.2760262191295624f * d * f43; - g69 += 0.29277002811431885f * d * f44; - g70 += 0.2760262191295624f * d * f45; - g71 += 0.2182178944349289f * d * f46; + { const float d = D(ii, k, 5); + g2 += 1.0f * d * f0; + g0 += 1.0f * d * f2; } - { const float d = D(ii, k, 233); - g66 += 0.26726123690605164f * d * f42; - g67 += 0.2182178944349289f * d * f43; - g68 += -0.0690065547823906f * d * f42; - g69 += -0.16903084516525269f * d * f45; - g70 += 0.23904572427272797f * d * f44; - g70 += -0.0690065547823906f * d * f46; - g71 += 0.2182178944349289f * d * f45; - g72 += 0.26726123690605164f * d * f46; + { const float d = D(ii, k, 6); + g3 += 1.0f * d * f0; + g0 += 1.0f * d * f3; } - { const float d = D(ii, k, 234); - g66 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f66; - g67 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f67; - g68 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f68; - g68 += 0.0690065547823906f * d * f51; - g51 += 0.0690065547823906f * d * f68; - g69 += -0.16903084516525269f * d * f48; - g48 += -0.16903084516525269f * d * f69; - g70 += -0.0690065547823906f * d * f47; - g71 += -0.2182178944349289f * d * f48; - g48 += -0.2182178944349289f * d * f71; - g72 += -0.26726123690605164f * d * f47; + { const float d = D(ii, k, 7); + g7 += 0.3872983455657959f * d * f3; + g3 += 0.3872983455657959f * d * f7; + g8 += 0.3872983455657959f * d * f2; + g2 += 0.3872983455657959f * d * f8; + g9 += -0.22360679507255554f * d * f1; + g1 += -0.22360679507255554f * d * f9; + g11 += -0.3872983455657959f * d * f1; + g1 += -0.3872983455657959f * d * f11; } - { const float d = D(ii, k, 235); - g67 += 0.2182178944349289f * d * f47; - g68 += 0.2760262191295624f * d * f48; - g48 += 0.2760262191295624f * d * f68; - g69 += 0.29277002811431885f * d * f49; - g49 += 0.29277002811431885f * d * f69; - g70 += 0.2760262191295624f * d * f50; - g50 += 0.2760262191295624f * d * f70; - g71 += 0.2182178944349289f * d * f51; - g51 += 0.2182178944349289f * d * f71; + { const float d = D(ii, k, 8); + g8 += 0.3872983455657959f * d * f1; + g1 += 0.3872983455657959f * d * f8; + g9 += 0.4472135901451111f * d * f2; + g2 += 0.4472135901451111f * d * f9; + g10 += 0.3872983455657959f * d * f3; + g3 += 0.3872983455657959f * d * f10; } - { const float d = D(ii, k, 236); - g66 += 0.26726123690605164f * d * f47; - g67 += 0.2182178944349289f * d * f48; - g48 += 0.2182178944349289f * d * f67; - g68 += -0.0690065547823906f * d * f47; - g69 += -0.16903084516525269f * d * f50; - g50 += -0.16903084516525269f * d * f69; - g70 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f70; - g70 += -0.0690065547823906f * d * f51; - g51 += -0.0690065547823906f * d * f70; - g71 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f71; - g72 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f72; + { const float d = D(ii, k, 9); + g7 += 0.3872983455657959f * d * f1; + g1 += 0.3872983455657959f * d * f7; + g9 += -0.22360679507255554f * d * f3; + g3 += -0.22360679507255554f * d * f9; + g10 += 0.3872983455657959f * d * f2; + g2 += 0.3872983455657959f * d * f10; + g11 += 0.3872983455657959f * d * f3; + g3 += 0.3872983455657959f * d * f11; } - { const float d = D(ii, k, 249); - g58 += 0.20412415266036987f * d * f105; - g57 += 0.1767766922712326f * d * f106; - g56 += 0.14940357208251953f * d * f107; - g58 += 0.03857583925127983f * d * f107; - g55 += 0.17251639068126678f * d * f108; - g57 += 0.06681530922651291f * d * f108; - g54 += -0.13363061845302582f * d * f109; - g53 += -0.06681530922651291f * d * f110; - g52 += -0.03857583925127983f * d * f111; - g54 += -0.14940357208251953f * d * f111; - g53 += -0.1767766922712326f * d * f112; - g52 += -0.20412415266036987f * d * f113; + { const float d = D(ii, k, 10); + g17 += 0.26726123690605164f * d * f11; + g11 += 0.26726123690605164f * d * f17; + g18 += 0.2182178944349289f * d * f10; + g10 += 0.2182178944349289f * d * f18; + g19 += 0.23904572427272797f * d * f9; + g9 += 0.23904572427272797f * d * f19; + g19 += 0.0690065547823906f * d * f11; + g11 += 0.0690065547823906f * d * f19; + g20 += -0.16903084516525269f * d * f8; + g8 += -0.16903084516525269f * d * f20; + g21 += -0.0690065547823906f * d * f7; + g7 += -0.0690065547823906f * d * f21; + g22 += -0.2182178944349289f * d * f8; + g8 += -0.2182178944349289f * d * f22; + g23 += -0.26726123690605164f * d * f7; + g7 += -0.26726123690605164f * d * f23; } - { const float d = D(ii, k, 250); - g52 += 0.14433756470680237f * d * f106; - g53 += 0.18898223340511322f * d * f107; - g54 += 0.21128855645656586f * d * f108; - g55 += 0.2182178944349289f * d * f109; - g56 += 0.21128855645656586f * d * f110; - g57 += 0.18898223340511322f * d * f111; - g58 += 0.14433756470680237f * d * f112; + { const float d = D(ii, k, 11); + g18 += 0.2182178944349289f * d * f7; + g7 += 0.2182178944349289f * d * f18; + g19 += 0.2760262191295624f * d * f8; + g8 += 0.2760262191295624f * d * f19; + g20 += 0.29277002811431885f * d * f9; + g9 += 0.29277002811431885f * d * f20; + g21 += 0.2760262191295624f * d * f10; + g10 += 0.2760262191295624f * d * f21; + g22 += 0.2182178944349289f * d * f11; + g11 += 0.2182178944349289f * d * f22; } - { const float d = D(ii, k, 251); - g52 += 0.20412415266036987f * d * f105; - g53 += 0.1767766922712326f * d * f106; - g52 += -0.03857583925127983f * d * f107; - g54 += 0.14940357208251953f * d * f107; - g53 += -0.06681530922651291f * d * f108; - g56 += -0.13363061845302582f * d * f109; - g55 += 0.17251639068126678f * d * f110; - g57 += -0.06681530922651291f * d * f110; - g56 += 0.14940357208251953f * d * f111; - g58 += -0.03857583925127983f * d * f111; - g57 += 0.1767766922712326f * d * f112; - g58 += 0.20412415266036987f * d * f113; + { const float d = D(ii, k, 12); + g17 += 0.26726123690605164f * d * f7; + g7 += 0.26726123690605164f * d * f17; + g18 += 0.2182178944349289f * d * f8; + g8 += 0.2182178944349289f * d * f18; + g19 += -0.0690065547823906f * d * f7; + g7 += -0.0690065547823906f * d * f19; + g20 += -0.16903084516525269f * d * f10; + g10 += -0.16903084516525269f * d * f20; + g21 += 0.23904572427272797f * d * f9; + g9 += 0.23904572427272797f * d * f21; + g21 += -0.0690065547823906f * d * f11; + g11 += -0.0690065547823906f * d * f21; + g22 += 0.2182178944349289f * d * f10; + g10 += 0.2182178944349289f * d * f22; + g23 += 0.26726123690605164f * d * f11; + g11 += 0.26726123690605164f * d * f23; } - { const float d = D(ii, k, 252); - g72 += 0.20412415266036987f * d * f105; - g71 += 0.1767766922712326f * d * f106; - g70 += 0.14940357208251953f * d * f107; - g72 += 0.03857583925127983f * d * f107; - g69 += 0.17251639068126678f * d * f108; - g71 += 0.06681530922651291f * d * f108; - g68 += -0.13363061845302582f * d * f109; - g67 += -0.06681530922651291f * d * f110; - g66 += -0.03857583925127983f * d * f111; - g68 += -0.14940357208251953f * d * f111; - g67 += -0.1767766922712326f * d * f112; - g66 += -0.20412415266036987f * d * f113; + { const float d = D(ii, k, 13); + g7 += 1.0f * d * f0; + g0 += 1.0f * d * f7; } - { const float d = D(ii, k, 253); - g66 += 0.14433756470680237f * d * f106; - g67 += 0.18898223340511322f * d * f107; - g68 += 0.21128855645656586f * d * f108; - g69 += 0.2182178944349289f * d * f109; - g70 += 0.21128855645656586f * d * f110; - g71 += 0.18898223340511322f * d * f111; - g72 += 0.14433756470680237f * d * f112; + { const float d = D(ii, k, 14); + g8 += 1.0f * d * f0; + g0 += 1.0f * d * f8; } - { const float d = D(ii, k, 254); - g66 += 0.20412415266036987f * d * f105; - g67 += 0.1767766922712326f * d * f106; - g66 += -0.03857583925127983f * d * f107; - g68 += 0.14940357208251953f * d * f107; - g67 += -0.06681530922651291f * d * f108; - g70 += -0.13363061845302582f * d * f109; - g69 += 0.17251639068126678f * d * f110; - g71 += -0.06681530922651291f * d * f110; - g70 += 0.14940357208251953f * d * f111; - g72 += -0.03857583925127983f * d * f111; - g71 += 0.1767766922712326f * d * f112; - g72 += 0.20412415266036987f * d * f113; + { const float d = D(ii, k, 15); + g9 += 1.0f * d * f0; + g0 += 1.0f * d * f9; } - { const float d = D(ii, k, 255); - g79 += 0.20412415266036987f * d * f105; - g78 += 0.1767766922712326f * d * f106; - g77 += 0.14940357208251953f * d * f107; - g79 += 0.03857583925127983f * d * f107; - g76 += 0.17251639068126678f * d * f108; - g78 += 0.06681530922651291f * d * f108; - g75 += -0.13363061845302582f * d * f109; - g74 += -0.06681530922651291f * d * f110; - g73 += -0.03857583925127983f * d * f111; - g75 += -0.14940357208251953f * d * f111; - g74 += -0.1767766922712326f * d * f112; - g73 += -0.20412415266036987f * d * f113; + { const float d = D(ii, k, 16); + g10 += 1.0f * d * f0; + g0 += 1.0f * d * f10; } - { const float d = D(ii, k, 256); - g73 += 0.14433756470680237f * d * f106; - g74 += 0.18898223340511322f * d * f107; - g75 += 0.21128855645656586f * d * f108; - g76 += 0.2182178944349289f * d * f109; - g77 += 0.21128855645656586f * d * f110; - g78 += 0.18898223340511322f * d * f111; - g79 += 0.14433756470680237f * d * f112; + { const float d = D(ii, k, 17); + g11 += 1.0f * d * f0; + g0 += 1.0f * d * f11; } - { const float d = D(ii, k, 257); - g73 += 0.20412415266036987f * d * f105; - g74 += 0.1767766922712326f * d * f106; - g73 += -0.03857583925127983f * d * f107; - g75 += 0.14940357208251953f * d * f107; - g74 += -0.06681530922651291f * d * f108; - g77 += -0.13363061845302582f * d * f109; - g76 += 0.17251639068126678f * d * f110; - g78 += -0.06681530922651291f * d * f110; - g77 += 0.14940357208251953f * d * f111; - g79 += -0.03857583925127983f * d * f111; - g78 += 0.1767766922712326f * d * f112; - g79 += 0.20412415266036987f * d * f113; + { const float d = D(ii, k, 18); + g3 += 1.29099440574646f * d * f1; + g1 += 1.29099440574646f * d * f3; } - { const float d = D(ii, k, 258); - g86 += 0.20412415266036987f * d * f105; - g85 += 0.1767766922712326f * d * f106; - g84 += 0.14940357208251953f * d * f107; - g86 += 0.03857583925127983f * d * f107; - g83 += 0.17251639068126678f * d * f108; - g85 += 0.06681530922651291f * d * f108; - g82 += -0.13363061845302582f * d * f109; - g81 += -0.06681530922651291f * d * f110; - g80 += -0.03857583925127983f * d * f111; - g82 += -0.14940357208251953f * d * f111; - g81 += -0.1767766922712326f * d * f112; - g80 += -0.20412415266036987f * d * f113; + { const float d = D(ii, k, 19); + g2 += 1.29099440574646f * d * f1; + g1 += 1.29099440574646f * d * f2; } - { const float d = D(ii, k, 259); - g80 += 0.14433756470680237f * d * f106; - g81 += 0.18898223340511322f * d * f107; - g82 += 0.21128855645656586f * d * f108; - g83 += 0.2182178944349289f * d * f109; - g84 += 0.21128855645656586f * d * f110; - g85 += 0.18898223340511322f * d * f111; - g86 += 0.14433756470680237f * d * f112; + { const float d = D(ii, k, 20); + g1 += -0.3726779818534851f * d * f1; + g1 += -0.3726779818534851f * d * f1; + g2 += 0.7453559637069702f * d * f2; + g2 += 0.7453559637069702f * d * f2; + g3 += -0.3726779818534851f * d * f3; + g3 += -0.3726779818534851f * d * f3; } - { const float d = D(ii, k, 260); - g80 += 0.20412415266036987f * d * f105; - g81 += 0.1767766922712326f * d * f106; - g80 += -0.03857583925127983f * d * f107; - g82 += 0.14940357208251953f * d * f107; - g81 += -0.06681530922651291f * d * f108; - g84 += -0.13363061845302582f * d * f109; - g83 += 0.17251639068126678f * d * f110; - g85 += -0.06681530922651291f * d * f110; - g84 += 0.14940357208251953f * d * f111; - g86 += -0.03857583925127983f * d * f111; - g85 += 0.1767766922712326f * d * f112; - g86 += 0.20412415266036987f * d * f113; + { const float d = D(ii, k, 21); + g3 += 1.29099440574646f * d * f2; + g2 += 1.29099440574646f * d * f3; } - { const float d = D(ii, k, 261); - g72 += 0.20412415266036987f * d * f114; - g71 += 0.1767766922712326f * d * f115; - g70 += 0.14940357208251953f * d * f116; - g72 += 0.03857583925127983f * d * f116; - g69 += 0.17251639068126678f * d * f117; - g71 += 0.06681530922651291f * d * f117; - g68 += -0.13363061845302582f * d * f118; - g67 += -0.06681530922651291f * d * f119; - g66 += -0.03857583925127983f * d * f120; - g68 += -0.14940357208251953f * d * f120; - g67 += -0.1767766922712326f * d * f121; - g66 += -0.20412415266036987f * d * f122; + { const float d = D(ii, k, 22); + g1 += -0.64549720287323f * d * f1; + g1 += -0.64549720287323f * d * f1; + g3 += 0.64549720287323f * d * f3; + g3 += 0.64549720287323f * d * f3; } - { const float d = D(ii, k, 262); - g66 += 0.14433756470680237f * d * f115; - g67 += 0.18898223340511322f * d * f116; - g68 += 0.21128855645656586f * d * f117; - g69 += 0.2182178944349289f * d * f118; - g70 += 0.21128855645656586f * d * f119; - g71 += 0.18898223340511322f * d * f120; - g72 += 0.14433756470680237f * d * f121; + { const float d = D(ii, k, 23); + g8 += -0.40824830532073975f * d * f1; + g1 += -0.40824830532073975f * d * f8; + g10 += 0.40824830532073975f * d * f3; + g3 += 0.40824830532073975f * d * f10; + g11 += -0.8164966106414795f * d * f2; + g2 += -0.8164966106414795f * d * f11; + } + { const float d = D(ii, k, 24); + g7 += 0.40824830532073975f * d * f1; + g1 += 0.40824830532073975f * d * f7; + g9 += 0.7071067690849304f * d * f3; + g3 += 0.7071067690849304f * d * f9; + g10 += -0.40824830532073975f * d * f2; + g2 += -0.40824830532073975f * d * f10; + g11 += 0.40824830532073975f * d * f3; + g3 += 0.40824830532073975f * d * f11; } - { const float d = D(ii, k, 263); - g66 += 0.20412415266036987f * d * f114; - g67 += 0.1767766922712326f * d * f115; - g66 += -0.03857583925127983f * d * f116; - g68 += 0.14940357208251953f * d * f116; - g67 += -0.06681530922651291f * d * f117; - g70 += -0.13363061845302582f * d * f118; - g69 += 0.17251639068126678f * d * f119; - g71 += -0.06681530922651291f * d * f119; - g70 += 0.14940357208251953f * d * f120; - g72 += -0.03857583925127983f * d * f120; - g71 += 0.1767766922712326f * d * f121; - g72 += 0.20412415266036987f * d * f122; + { const float d = D(ii, k, 25); + g8 += -0.7071067690849304f * d * f3; + g3 += -0.7071067690849304f * d * f8; + g10 += 0.7071067690849304f * d * f1; + g1 += 0.7071067690849304f * d * f10; } - { const float d = D(ii, k, 264); - g79 += 0.20412415266036987f * d * f114; - g78 += 0.1767766922712326f * d * f115; - g77 += 0.14940357208251953f * d * f116; - g79 += 0.03857583925127983f * d * f116; - g76 += 0.17251639068126678f * d * f117; - g78 += 0.06681530922651291f * d * f117; - g75 += -0.13363061845302582f * d * f118; - g74 += -0.06681530922651291f * d * f119; - g73 += -0.03857583925127983f * d * f120; - g75 += -0.14940357208251953f * d * f120; - g74 += -0.1767766922712326f * d * f121; - g73 += -0.20412415266036987f * d * f122; + { const float d = D(ii, k, 26); + g7 += -0.40824830532073975f * d * f3; + g3 += -0.40824830532073975f * d * f7; + g8 += 0.40824830532073975f * d * f2; + g2 += 0.40824830532073975f * d * f8; + g9 += -0.7071067690849304f * d * f1; + g1 += -0.7071067690849304f * d * f9; + g11 += 0.40824830532073975f * d * f1; + g1 += 0.40824830532073975f * d * f11; } - { const float d = D(ii, k, 265); - g73 += 0.14433756470680237f * d * f115; - g74 += 0.18898223340511322f * d * f116; - g75 += 0.21128855645656586f * d * f117; - g76 += 0.2182178944349289f * d * f118; - g77 += 0.21128855645656586f * d * f119; - g78 += 0.18898223340511322f * d * f120; - g79 += 0.14433756470680237f * d * f121; + { const float d = D(ii, k, 27); + g7 += 0.8164966106414795f * d * f2; + g2 += 0.8164966106414795f * d * f7; + g8 += -0.40824830532073975f * d * f3; + g3 += -0.40824830532073975f * d * f8; + g10 += -0.40824830532073975f * d * f1; + g1 += -0.40824830532073975f * d * f10; } - { const float d = D(ii, k, 266); - g73 += 0.20412415266036987f * d * f114; - g74 += 0.1767766922712326f * d * f115; - g73 += -0.03857583925127983f * d * f116; - g75 += 0.14940357208251953f * d * f116; - g74 += -0.06681530922651291f * d * f117; - g77 += -0.13363061845302582f * d * f118; - g76 += 0.17251639068126678f * d * f119; - g78 += -0.06681530922651291f * d * f119; - g77 += 0.14940357208251953f * d * f120; - g79 += -0.03857583925127983f * d * f120; - g78 += 0.1767766922712326f * d * f121; - g79 += 0.20412415266036987f * d * f122; + { const float d = D(ii, k, 28); + g9 += -0.8944271802902222f * d * f7; + g7 += -0.8944271802902222f * d * f9; + g10 += 0.7745966911315918f * d * f8; + g8 += 0.7745966911315918f * d * f10; } - { const float d = D(ii, k, 267); - g86 += 0.20412415266036987f * d * f114; - g85 += 0.1767766922712326f * d * f115; - g84 += 0.14940357208251953f * d * f116; - g86 += 0.03857583925127983f * d * f116; - g83 += 0.17251639068126678f * d * f117; - g85 += 0.06681530922651291f * d * f117; - g82 += -0.13363061845302582f * d * f118; - g81 += -0.06681530922651291f * d * f119; - g80 += -0.03857583925127983f * d * f120; - g82 += -0.14940357208251953f * d * f120; - g81 += -0.1767766922712326f * d * f121; - g80 += -0.20412415266036987f * d * f122; + { const float d = D(ii, k, 29); + g10 += 0.7745966911315918f * d * f7; + g7 += 0.7745966911315918f * d * f10; + g9 += 0.4472135901451111f * d * f8; + g8 += 0.4472135901451111f * d * f9; + g11 += -0.7745966911315918f * d * f8; + g8 += -0.7745966911315918f * d * f11; } - { const float d = D(ii, k, 268); - g80 += 0.14433756470680237f * d * f115; - g81 += 0.18898223340511322f * d * f116; - g82 += 0.21128855645656586f * d * f117; - g83 += 0.2182178944349289f * d * f118; - g84 += 0.21128855645656586f * d * f119; - g85 += 0.18898223340511322f * d * f120; - g86 += 0.14433756470680237f * d * f121; + { const float d = D(ii, k, 30); + g7 += -0.4472135901451111f * d * f7; + g7 += -0.4472135901451111f * d * f7; + g8 += 0.22360679507255554f * d * f8; + g8 += 0.22360679507255554f * d * f8; + g9 += 0.4472135901451111f * d * f9; + g9 += 0.4472135901451111f * d * f9; + g10 += 0.22360679507255554f * d * f10; + g10 += 0.22360679507255554f * d * f10; + g11 += -0.4472135901451111f * d * f11; + g11 += -0.4472135901451111f * d * f11; } - { const float d = D(ii, k, 269); - g80 += 0.20412415266036987f * d * f114; - g81 += 0.1767766922712326f * d * f115; - g80 += -0.03857583925127983f * d * f116; - g82 += 0.14940357208251953f * d * f116; - g81 += -0.06681530922651291f * d * f117; - g84 += -0.13363061845302582f * d * f118; - g83 += 0.17251639068126678f * d * f119; - g85 += -0.06681530922651291f * d * f119; - g84 += 0.14940357208251953f * d * f120; - g86 += -0.03857583925127983f * d * f120; - g85 += 0.1767766922712326f * d * f121; - g86 += 0.20412415266036987f * d * f122; + { const float d = D(ii, k, 31); + g8 += 0.7745966911315918f * d * f7; + g7 += 0.7745966911315918f * d * f8; + g10 += 0.4472135901451111f * d * f9; + g9 += 0.4472135901451111f * d * f10; + g11 += 0.7745966911315918f * d * f10; + g10 += 0.7745966911315918f * d * f11; } - { const float d = D(ii, k, 270); - g73 += 0.26726123690605164f * d * f21; - g74 += 0.2182178944349289f * d * f20; - g75 += 0.23904572427272797f * d * f19; - g75 += 0.0690065547823906f * d * f21; - g76 += -0.16903084516525269f * d * f18; - g77 += -0.0690065547823906f * d * f17; - g78 += -0.2182178944349289f * d * f18; - g79 += -0.26726123690605164f * d * f17; + { const float d = D(ii, k, 32); + g8 += -0.3872983455657959f * d * f8; + g8 += -0.3872983455657959f * d * f8; + g11 += -0.8944271802902222f * d * f9; + g9 += -0.8944271802902222f * d * f11; + g10 += 0.3872983455657959f * d * f10; + g10 += 0.3872983455657959f * d * f10; } - { const float d = D(ii, k, 271); - g74 += 0.2182178944349289f * d * f17; - g75 += 0.2760262191295624f * d * f18; - g76 += 0.29277002811431885f * d * f19; - g77 += 0.2760262191295624f * d * f20; - g78 += 0.2182178944349289f * d * f21; + { const float d = D(ii, k, 33); + g17 += 0.44543540477752686f * d * f3; + g3 += 0.44543540477752686f * d * f17; + g18 += 0.36369648575782776f * d * f2; + g2 += 0.36369648575782776f * d * f18; + g19 += -0.11501092463731766f * d * f3; + g3 += -0.11501092463731766f * d * f19; + g21 += -0.11501092463731766f * d * f1; + g1 += -0.11501092463731766f * d * f21; + g23 += -0.44543540477752686f * d * f1; + g1 += -0.44543540477752686f * d * f23; } - { const float d = D(ii, k, 272); - g73 += 0.26726123690605164f * d * f17; - g74 += 0.2182178944349289f * d * f18; - g75 += -0.0690065547823906f * d * f17; - g76 += -0.16903084516525269f * d * f20; - g77 += 0.23904572427272797f * d * f19; - g77 += -0.0690065547823906f * d * f21; - g78 += 0.2182178944349289f * d * f20; - g79 += 0.26726123690605164f * d * f21; + { const float d = D(ii, k, 34); + g18 += 0.36369648575782776f * d * f3; + g3 += 0.36369648575782776f * d * f18; + g19 += 0.46004369854927063f * d * f2; + g2 += 0.46004369854927063f * d * f19; + g20 += -0.28171807527542114f * d * f1; + g1 += -0.28171807527542114f * d * f20; + g22 += -0.36369648575782776f * d * f1; + g1 += -0.36369648575782776f * d * f22; } - { const float d = D(ii, k, 273); - g73 += 0.26726123690605164f * d * f31; - g74 += 0.2182178944349289f * d * f30; - g75 += 0.23904572427272797f * d * f29; - g75 += 0.0690065547823906f * d * f31; - g76 += -0.16903084516525269f * d * f28; - g77 += -0.0690065547823906f * d * f27; - g78 += -0.2182178944349289f * d * f28; - g79 += -0.26726123690605164f * d * f27; + { const float d = D(ii, k, 35); + g19 += 0.39840954542160034f * d * f1; + g1 += 0.39840954542160034f * d * f19; + g20 += 0.48795002698898315f * d * f2; + g2 += 0.48795002698898315f * d * f20; + g21 += 0.39840954542160034f * d * f3; + g3 += 0.39840954542160034f * d * f21; } - { const float d = D(ii, k, 274); - g74 += 0.2182178944349289f * d * f27; - g75 += 0.2760262191295624f * d * f28; - g76 += 0.29277002811431885f * d * f29; - g77 += 0.2760262191295624f * d * f30; - g78 += 0.2182178944349289f * d * f31; + { const float d = D(ii, k, 36); + g18 += 0.36369648575782776f * d * f1; + g1 += 0.36369648575782776f * d * f18; + g20 += -0.28171807527542114f * d * f3; + g3 += -0.28171807527542114f * d * f20; + g21 += 0.46004369854927063f * d * f2; + g2 += 0.46004369854927063f * d * f21; + g22 += 0.36369648575782776f * d * f3; + g3 += 0.36369648575782776f * d * f22; } - { const float d = D(ii, k, 275); - g73 += 0.26726123690605164f * d * f27; - g74 += 0.2182178944349289f * d * f28; - g75 += -0.0690065547823906f * d * f27; - g76 += -0.16903084516525269f * d * f30; - g77 += 0.23904572427272797f * d * f29; - g77 += -0.0690065547823906f * d * f31; - g78 += 0.2182178944349289f * d * f30; - g79 += 0.26726123690605164f * d * f31; + { const float d = D(ii, k, 37); + g17 += 0.44543540477752686f * d * f1; + g1 += 0.44543540477752686f * d * f17; + g19 += 0.11501092463731766f * d * f1; + g1 += 0.11501092463731766f * d * f19; + g21 += -0.11501092463731766f * d * f3; + g3 += -0.11501092463731766f * d * f21; + g22 += 0.36369648575782776f * d * f2; + g2 += 0.36369648575782776f * d * f22; + g23 += 0.44543540477752686f * d * f3; + g3 += 0.44543540477752686f * d * f23; } - { const float d = D(ii, k, 276); - g73 += 0.26726123690605164f * d * f36; - g74 += 0.2182178944349289f * d * f35; - g75 += 0.23904572427272797f * d * f34; - g75 += 0.0690065547823906f * d * f36; - g76 += -0.16903084516525269f * d * f33; - g77 += -0.0690065547823906f * d * f32; - g78 += -0.2182178944349289f * d * f33; - g79 += -0.26726123690605164f * d * f32; + { const float d = D(ii, k, 38); + g17 += -0.4225771129131317f * d * f8; + g8 += -0.4225771129131317f * d * f17; + g19 += -0.32732683420181274f * d * f8; + g8 += -0.32732683420181274f * d * f19; + g20 += -0.26726123690605164f * d * f11; + g11 += -0.26726123690605164f * d * f20; + g21 += 0.32732683420181274f * d * f10; + g10 += 0.32732683420181274f * d * f21; + g22 += -0.5976142883300781f * d * f9; + g9 += -0.5976142883300781f * d * f22; + g23 += -0.4225771129131317f * d * f10; + g10 += -0.4225771129131317f * d * f23; } - { const float d = D(ii, k, 277); - g74 += 0.2182178944349289f * d * f32; - g75 += 0.2760262191295624f * d * f33; - g76 += 0.29277002811431885f * d * f34; - g77 += 0.2760262191295624f * d * f35; - g78 += 0.2182178944349289f * d * f36; + { const float d = D(ii, k, 39); + g17 += 0.4225771129131317f * d * f7; + g7 += 0.4225771129131317f * d * f17; + g19 += 0.32732683420181274f * d * f7; + g7 += 0.32732683420181274f * d * f19; + g20 += 0.5345224738121033f * d * f10; + g10 += 0.5345224738121033f * d * f20; + g21 += -0.37796446681022644f * d * f9; + g9 += -0.37796446681022644f * d * f21; + g21 += 0.32732683420181274f * d * f11; + g11 += 0.32732683420181274f * d * f21; + g23 += 0.4225771129131317f * d * f11; + g11 += 0.4225771129131317f * d * f23; } - { const float d = D(ii, k, 278); - g73 += 0.26726123690605164f * d * f32; - g74 += 0.2182178944349289f * d * f33; - g75 += -0.0690065547823906f * d * f32; - g76 += -0.16903084516525269f * d * f35; - g77 += 0.23904572427272797f * d * f34; - g77 += -0.0690065547823906f * d * f36; - g78 += 0.2182178944349289f * d * f35; - g79 += 0.26726123690605164f * d * f36; + { const float d = D(ii, k, 40); + g18 += -0.5976142883300781f * d * f11; + g11 += -0.5976142883300781f * d * f18; + g19 += -0.37796446681022644f * d * f10; + g10 += -0.37796446681022644f * d * f19; + g21 += 0.37796446681022644f * d * f8; + g8 += 0.37796446681022644f * d * f21; + g22 += 0.5976142883300781f * d * f7; + g7 += 0.5976142883300781f * d * f22; } - { const float d = D(ii, k, 279); - g73 += 0.26726123690605164f * d * f41; - g74 += 0.2182178944349289f * d * f40; - g75 += 0.23904572427272797f * d * f39; - g75 += 0.0690065547823906f * d * f41; - g76 += -0.16903084516525269f * d * f38; - g77 += -0.0690065547823906f * d * f37; - g78 += -0.2182178944349289f * d * f38; - g79 += -0.26726123690605164f * d * f37; + { const float d = D(ii, k, 41); + g17 += -0.4225771129131317f * d * f11; + g11 += -0.4225771129131317f * d * f17; + g19 += 0.37796446681022644f * d * f9; + g9 += 0.37796446681022644f * d * f19; + g19 += 0.32732683420181274f * d * f11; + g11 += 0.32732683420181274f * d * f19; + g20 += -0.5345224738121033f * d * f8; + g8 += -0.5345224738121033f * d * f20; + g21 += -0.32732683420181274f * d * f7; + g7 += -0.32732683420181274f * d * f21; + g23 += 0.4225771129131317f * d * f7; + g7 += 0.4225771129131317f * d * f23; } - { const float d = D(ii, k, 280); - g74 += 0.2182178944349289f * d * f37; - g75 += 0.2760262191295624f * d * f38; - g76 += 0.29277002811431885f * d * f39; - g77 += 0.2760262191295624f * d * f40; - g78 += 0.2182178944349289f * d * f41; + { const float d = D(ii, k, 42); + g17 += 0.4225771129131317f * d * f10; + g10 += 0.4225771129131317f * d * f17; + g18 += 0.5976142883300781f * d * f9; + g9 += 0.5976142883300781f * d * f18; + g19 += -0.32732683420181274f * d * f10; + g10 += -0.32732683420181274f * d * f19; + g20 += 0.26726123690605164f * d * f7; + g7 += 0.26726123690605164f * d * f20; + g21 += -0.32732683420181274f * d * f8; + g8 += -0.32732683420181274f * d * f21; + g23 += -0.4225771129131317f * d * f8; + g8 += -0.4225771129131317f * d * f23; } - { const float d = D(ii, k, 281); - g73 += 0.26726123690605164f * d * f37; - g74 += 0.2182178944349289f * d * f38; - g75 += -0.0690065547823906f * d * f37; - g76 += -0.16903084516525269f * d * f40; - g77 += 0.23904572427272797f * d * f39; - g77 += -0.0690065547823906f * d * f41; - g78 += 0.2182178944349289f * d * f40; - g79 += 0.26726123690605164f * d * f41; + { const float d = D(ii, k, 43); + g21 += -0.3571428656578064f * d * f17; + g17 += -0.3571428656578064f * d * f21; + g20 += -0.7142857313156128f * d * f18; + g18 += -0.7142857313156128f * d * f20; + g21 += 0.5532833337783813f * d * f19; + g19 += 0.5532833337783813f * d * f21; + g23 += 0.3571428656578064f * d * f19; + g19 += 0.3571428656578064f * d * f23; } - { const float d = D(ii, k, 282); - g73 += 0.26726123690605164f * d * f46; - g74 += 0.2182178944349289f * d * f45; - g75 += 0.23904572427272797f * d * f44; - g75 += 0.0690065547823906f * d * f46; - g76 += -0.16903084516525269f * d * f43; - g77 += -0.0690065547823906f * d * f42; - g78 += -0.2182178944349289f * d * f43; - g79 += -0.26726123690605164f * d * f42; + { const float d = D(ii, k, 44); + g22 += 0.5646924376487732f * d * f17; + g17 += 0.5646924376487732f * d * f22; + g21 += 0.4374088943004608f * d * f18; + g18 += 0.4374088943004608f * d * f21; + g23 += -0.5646924376487732f * d * f18; + g18 += -0.5646924376487732f * d * f23; + g20 += 0.22587697207927704f * d * f19; + g19 += 0.22587697207927704f * d * f20; + g22 += -0.4374088943004608f * d * f19; + g19 += -0.4374088943004608f * d * f22; } - { const float d = D(ii, k, 283); - g74 += 0.2182178944349289f * d * f42; - g75 += 0.2760262191295624f * d * f43; - g76 += 0.29277002811431885f * d * f44; - g77 += 0.2760262191295624f * d * f45; - g78 += 0.2182178944349289f * d * f46; + { const float d = D(ii, k, 45); + g17 += -0.3992978632450104f * d * f17; + g17 += -0.3992978632450104f * d * f17; + g19 += 0.2395787090063095f * d * f19; + g19 += 0.2395787090063095f * d * f19; + g20 += 0.31943827867507935f * d * f20; + g20 += 0.31943827867507935f * d * f20; + g21 += 0.2395787090063095f * d * f21; + g21 += 0.2395787090063095f * d * f21; + g23 += -0.3992978632450104f * d * f23; + g23 += -0.3992978632450104f * d * f23; } - { const float d = D(ii, k, 284); - g73 += 0.26726123690605164f * d * f42; - g74 += 0.2182178944349289f * d * f43; - g75 += -0.0690065547823906f * d * f42; - g76 += -0.16903084516525269f * d * f45; - g77 += 0.23904572427272797f * d * f44; - g77 += -0.0690065547823906f * d * f46; - g78 += 0.2182178944349289f * d * f45; - g79 += 0.26726123690605164f * d * f46; + { const float d = D(ii, k, 46); + g18 += 0.5646924376487732f * d * f17; + g17 += 0.5646924376487732f * d * f18; + g19 += 0.4374088943004608f * d * f18; + g18 += 0.4374088943004608f * d * f19; + g21 += 0.22587697207927704f * d * f20; + g20 += 0.22587697207927704f * d * f21; + g22 += 0.4374088943004608f * d * f21; + g21 += 0.4374088943004608f * d * f22; + g23 += 0.5646924376487732f * d * f22; + g22 += 0.5646924376487732f * d * f23; } - { const float d = D(ii, k, 285); - g73 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f73; - g74 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f74; - g75 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f75; - g75 += 0.0690065547823906f * d * f51; - g51 += 0.0690065547823906f * d * f75; - g76 += -0.16903084516525269f * d * f48; - g48 += -0.16903084516525269f * d * f76; - g77 += -0.0690065547823906f * d * f47; - g78 += -0.2182178944349289f * d * f48; - g48 += -0.2182178944349289f * d * f78; - g79 += -0.26726123690605164f * d * f47; + { const float d = D(ii, k, 47); + g19 += -0.3571428656578064f * d * f17; + g17 += -0.3571428656578064f * d * f19; + g19 += -0.2766416668891907f * d * f19; + g19 += -0.2766416668891907f * d * f19; + g22 += -0.7142857313156128f * d * f20; + g20 += -0.7142857313156128f * d * f22; + g21 += 0.2766416668891907f * d * f21; + g21 += 0.2766416668891907f * d * f21; + g23 += -0.3571428656578064f * d * f21; + g21 += -0.3571428656578064f * d * f23; } - { const float d = D(ii, k, 286); - g74 += 0.2182178944349289f * d * f47; - g75 += 0.2760262191295624f * d * f48; - g48 += 0.2760262191295624f * d * f75; - g76 += 0.29277002811431885f * d * f49; - g49 += 0.29277002811431885f * d * f76; - g77 += 0.2760262191295624f * d * f50; - g50 += 0.2760262191295624f * d * f77; - g78 += 0.2182178944349289f * d * f51; - g51 += 0.2182178944349289f * d * f78; + { const float d = D(ii, k, 48); + g17 += 1.0f * d * f0; + g0 += 1.0f * d * f17; } - { const float d = D(ii, k, 287); - g73 += 0.26726123690605164f * d * f47; - g74 += 0.2182178944349289f * d * f48; - g48 += 0.2182178944349289f * d * f74; - g75 += -0.0690065547823906f * d * f47; - g76 += -0.16903084516525269f * d * f50; - g50 += -0.16903084516525269f * d * f76; - g77 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f77; - g77 += -0.0690065547823906f * d * f51; - g51 += -0.0690065547823906f * d * f77; - g78 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f78; - g79 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f79; + { const float d = D(ii, k, 49); + g18 += 1.0f * d * f0; + g0 += 1.0f * d * f18; } - { const float d = D(ii, k, 300); - g58 += 0.20412415266036987f * d * f123; - g57 += 0.1767766922712326f * d * f124; - g56 += 0.14940357208251953f * d * f125; - g58 += 0.03857583925127983f * d * f125; - g55 += 0.17251639068126678f * d * f126; - g57 += 0.06681530922651291f * d * f126; - g54 += -0.13363061845302582f * d * f127; - g53 += -0.06681530922651291f * d * f128; - g52 += -0.03857583925127983f * d * f129; - g54 += -0.14940357208251953f * d * f129; - g53 += -0.1767766922712326f * d * f130; - g52 += -0.20412415266036987f * d * f131; + { const float d = D(ii, k, 50); + g19 += 1.0f * d * f0; + g0 += 1.0f * d * f19; } - { const float d = D(ii, k, 301); - g52 += 0.14433756470680237f * d * f124; - g53 += 0.18898223340511322f * d * f125; - g54 += 0.21128855645656586f * d * f126; - g55 += 0.2182178944349289f * d * f127; - g56 += 0.21128855645656586f * d * f128; - g57 += 0.18898223340511322f * d * f129; - g58 += 0.14433756470680237f * d * f130; + { const float d = D(ii, k, 51); + g20 += 1.0f * d * f0; + g0 += 1.0f * d * f20; } - { const float d = D(ii, k, 302); - g52 += 0.20412415266036987f * d * f123; - g53 += 0.1767766922712326f * d * f124; - g52 += -0.03857583925127983f * d * f125; - g54 += 0.14940357208251953f * d * f125; - g53 += -0.06681530922651291f * d * f126; - g56 += -0.13363061845302582f * d * f127; - g55 += 0.17251639068126678f * d * f128; - g57 += -0.06681530922651291f * d * f128; - g56 += 0.14940357208251953f * d * f129; - g58 += -0.03857583925127983f * d * f129; - g57 += 0.1767766922712326f * d * f130; - g58 += 0.20412415266036987f * d * f131; + { const float d = D(ii, k, 52); + g21 += 1.0f * d * f0; + g0 += 1.0f * d * f21; + } + { const float d = D(ii, k, 53); + g22 += 1.0f * d * f0; + g0 += 1.0f * d * f22; } - { const float d = D(ii, k, 303); - g65 += 0.20412415266036987f * d * f123; - g64 += 0.1767766922712326f * d * f124; - g63 += 0.14940357208251953f * d * f125; - g65 += 0.03857583925127983f * d * f125; - g62 += 0.17251639068126678f * d * f126; - g64 += 0.06681530922651291f * d * f126; - g61 += -0.13363061845302582f * d * f127; - g60 += -0.06681530922651291f * d * f128; - g59 += -0.03857583925127983f * d * f129; - g61 += -0.14940357208251953f * d * f129; - g60 += -0.1767766922712326f * d * f130; - g59 += -0.20412415266036987f * d * f131; + { const float d = D(ii, k, 54); + g23 += 1.0f * d * f0; + g0 += 1.0f * d * f23; } - { const float d = D(ii, k, 304); - g59 += 0.14433756470680237f * d * f124; - g60 += 0.18898223340511322f * d * f125; - g61 += 0.21128855645656586f * d * f126; - g62 += 0.2182178944349289f * d * f127; - g63 += 0.21128855645656586f * d * f128; - g64 += 0.18898223340511322f * d * f129; - g65 += 0.14433756470680237f * d * f130; + { const float d = D(ii, k, 55); + g7 += 0.6236095428466797f * d * f3; + g3 += 0.6236095428466797f * d * f7; + g11 += 0.6236095428466797f * d * f1; + g1 += 0.6236095428466797f * d * f11; } - { const float d = D(ii, k, 305); - g59 += 0.20412415266036987f * d * f123; - g60 += 0.1767766922712326f * d * f124; - g59 += -0.03857583925127983f * d * f125; - g61 += 0.14940357208251953f * d * f125; - g60 += -0.06681530922651291f * d * f126; - g63 += -0.13363061845302582f * d * f127; - g62 += 0.17251639068126678f * d * f128; - g64 += -0.06681530922651291f * d * f128; - g63 += 0.14940357208251953f * d * f129; - g65 += -0.03857583925127983f * d * f129; - g64 += 0.1767766922712326f * d * f130; - g65 += 0.20412415266036987f * d * f131; + { const float d = D(ii, k, 56); + g7 += 0.5091750621795654f * d * f2; + g2 += 0.5091750621795654f * d * f7; + g8 += 0.5091750621795654f * d * f3; + g3 += 0.5091750621795654f * d * f8; + g10 += 0.5091750621795654f * d * f1; + g1 += 0.5091750621795654f * d * f10; } - { const float d = D(ii, k, 306); - g72 += 0.20412415266036987f * d * f123; - g71 += 0.1767766922712326f * d * f124; - g70 += 0.14940357208251953f * d * f125; - g72 += 0.03857583925127983f * d * f125; - g69 += 0.17251639068126678f * d * f126; - g71 += 0.06681530922651291f * d * f126; - g68 += -0.13363061845302582f * d * f127; - g67 += -0.06681530922651291f * d * f128; - g66 += -0.03857583925127983f * d * f129; - g68 += -0.14940357208251953f * d * f129; - g67 += -0.1767766922712326f * d * f130; - g66 += -0.20412415266036987f * d * f131; + { const float d = D(ii, k, 57); + g7 += -0.16101530194282532f * d * f3; + g3 += -0.16101530194282532f * d * f7; + g8 += 0.6440612077713013f * d * f2; + g2 += 0.6440612077713013f * d * f8; + g9 += 0.5577733516693115f * d * f1; + g1 += 0.5577733516693115f * d * f9; + g11 += 0.16101530194282532f * d * f1; + g1 += 0.16101530194282532f * d * f11; } - { const float d = D(ii, k, 307); - g66 += 0.14433756470680237f * d * f124; - g67 += 0.18898223340511322f * d * f125; - g68 += 0.21128855645656586f * d * f126; - g69 += 0.2182178944349289f * d * f127; - g70 += 0.21128855645656586f * d * f128; - g71 += 0.18898223340511322f * d * f129; - g72 += 0.14433756470680237f * d * f130; + { const float d = D(ii, k, 58); + g8 += -0.3944053053855896f * d * f1; + g1 += -0.3944053053855896f * d * f8; + g9 += 0.6831300258636475f * d * f2; + g2 += 0.6831300258636475f * d * f9; + g10 += -0.3944053053855896f * d * f3; + g3 += -0.3944053053855896f * d * f10; } - { const float d = D(ii, k, 308); - g66 += 0.20412415266036987f * d * f123; - g67 += 0.1767766922712326f * d * f124; - g66 += -0.03857583925127983f * d * f125; - g68 += 0.14940357208251953f * d * f125; - g67 += -0.06681530922651291f * d * f126; - g70 += -0.13363061845302582f * d * f127; - g69 += 0.17251639068126678f * d * f128; - g71 += -0.06681530922651291f * d * f128; - g70 += 0.14940357208251953f * d * f129; - g72 += -0.03857583925127983f * d * f129; - g71 += 0.1767766922712326f * d * f130; - g72 += 0.20412415266036987f * d * f131; + { const float d = D(ii, k, 59); + g7 += -0.16101530194282532f * d * f1; + g1 += -0.16101530194282532f * d * f7; + g9 += 0.5577733516693115f * d * f3; + g3 += 0.5577733516693115f * d * f9; + g10 += 0.6440612077713013f * d * f2; + g2 += 0.6440612077713013f * d * f10; + g11 += -0.16101530194282532f * d * f3; + g3 += -0.16101530194282532f * d * f11; } - { const float d = D(ii, k, 309); - g79 += 0.20412415266036987f * d * f123; - g78 += 0.1767766922712326f * d * f124; - g77 += 0.14940357208251953f * d * f125; - g79 += 0.03857583925127983f * d * f125; - g76 += 0.17251639068126678f * d * f126; - g78 += 0.06681530922651291f * d * f126; - g75 += -0.13363061845302582f * d * f127; - g74 += -0.06681530922651291f * d * f128; - g73 += -0.03857583925127983f * d * f129; - g75 += -0.14940357208251953f * d * f129; - g74 += -0.1767766922712326f * d * f130; - g73 += -0.20412415266036987f * d * f131; + { const float d = D(ii, k, 60); + g8 += -0.5091750621795654f * d * f1; + g1 += -0.5091750621795654f * d * f8; + g10 += 0.5091750621795654f * d * f3; + g3 += 0.5091750621795654f * d * f10; + g11 += 0.5091750621795654f * d * f2; + g2 += 0.5091750621795654f * d * f11; } - { const float d = D(ii, k, 310); - g73 += 0.14433756470680237f * d * f124; - g74 += 0.18898223340511322f * d * f125; - g75 += 0.21128855645656586f * d * f126; - g76 += 0.2182178944349289f * d * f127; - g77 += 0.21128855645656586f * d * f128; - g78 += 0.18898223340511322f * d * f129; - g79 += 0.14433756470680237f * d * f130; + { const float d = D(ii, k, 61); + g7 += -0.6236095428466797f * d * f1; + g1 += -0.6236095428466797f * d * f7; + g11 += 0.6236095428466797f * d * f3; + g3 += 0.6236095428466797f * d * f11; } - { const float d = D(ii, k, 311); - g73 += 0.20412415266036987f * d * f123; - g74 += 0.1767766922712326f * d * f124; - g73 += -0.03857583925127983f * d * f125; - g75 += 0.14940357208251953f * d * f125; - g74 += -0.06681530922651291f * d * f126; - g77 += -0.13363061845302582f * d * f127; - g76 += 0.17251639068126678f * d * f128; - g78 += -0.06681530922651291f * d * f128; - g77 += 0.14940357208251953f * d * f129; - g79 += -0.03857583925127983f * d * f129; - g78 += 0.1767766922712326f * d * f130; - g79 += 0.20412415266036987f * d * f131; + { const float d = D(ii, k, 62); + g18 += -0.3535533845424652f * d * f1; + g1 += -0.3535533845424652f * d * f18; + g22 += 0.3535533845424652f * d * f3; + g3 += 0.3535533845424652f * d * f22; + g23 += -0.8660253882408142f * d * f2; + g2 += -0.8660253882408142f * d * f23; } - { const float d = D(ii, k, 312); - g86 += 0.20412415266036987f * d * f123; - g85 += 0.1767766922712326f * d * f124; - g84 += 0.14940357208251953f * d * f125; - g86 += 0.03857583925127983f * d * f125; - g83 += 0.17251639068126678f * d * f126; - g85 += 0.06681530922651291f * d * f126; - g82 += -0.13363061845302582f * d * f127; - g81 += -0.06681530922651291f * d * f128; - g80 += -0.03857583925127983f * d * f129; - g82 += -0.14940357208251953f * d * f129; - g81 += -0.1767766922712326f * d * f130; - g80 += -0.20412415266036987f * d * f131; + { const float d = D(ii, k, 63); + g17 += 0.3535533845424652f * d * f1; + g1 += 0.3535533845424652f * d * f17; + g19 += -0.4564354717731476f * d * f1; + g1 += -0.4564354717731476f * d * f19; + g21 += 0.4564354717731476f * d * f3; + g3 += 0.4564354717731476f * d * f21; + g22 += -0.5773502588272095f * d * f2; + g2 += -0.5773502588272095f * d * f22; + g23 += 0.3535533845424652f * d * f3; + g3 += 0.3535533845424652f * d * f23; } - { const float d = D(ii, k, 313); - g80 += 0.14433756470680237f * d * f124; - g81 += 0.18898223340511322f * d * f125; - g82 += 0.21128855645656586f * d * f126; - g83 += 0.2182178944349289f * d * f127; - g84 += 0.21128855645656586f * d * f128; - g85 += 0.18898223340511322f * d * f129; - g86 += 0.14433756470680237f * d * f130; + { const float d = D(ii, k, 64); + g18 += 0.4564354717731476f * d * f1; + g1 += 0.4564354717731476f * d * f18; + g20 += 0.7071067690849304f * d * f3; + g3 += 0.7071067690849304f * d * f20; + g21 += -0.28867512941360474f * d * f2; + g2 += -0.28867512941360474f * d * f21; + g22 += 0.4564354717731476f * d * f3; + g3 += 0.4564354717731476f * d * f22; } - { const float d = D(ii, k, 314); - g80 += 0.20412415266036987f * d * f123; - g81 += 0.1767766922712326f * d * f124; - g80 += -0.03857583925127983f * d * f125; - g82 += 0.14940357208251953f * d * f125; - g81 += -0.06681530922651291f * d * f126; - g84 += -0.13363061845302582f * d * f127; - g83 += 0.17251639068126678f * d * f128; - g85 += -0.06681530922651291f * d * f128; - g84 += 0.14940357208251953f * d * f129; - g86 += -0.03857583925127983f * d * f129; - g85 += 0.1767766922712326f * d * f130; - g86 += 0.20412415266036987f * d * f131; + { const float d = D(ii, k, 65); + g19 += -0.7071067690849304f * d * f3; + g3 += -0.7071067690849304f * d * f19; + g21 += 0.7071067690849304f * d * f1; + g1 += 0.7071067690849304f * d * f21; } - { const float d = D(ii, k, 330); - g80 += 0.26726123690605164f * d * f21; - g81 += 0.2182178944349289f * d * f20; - g82 += 0.23904572427272797f * d * f19; - g82 += 0.0690065547823906f * d * f21; - g83 += -0.16903084516525269f * d * f18; - g84 += -0.0690065547823906f * d * f17; - g85 += -0.2182178944349289f * d * f18; - g86 += -0.26726123690605164f * d * f17; + { const float d = D(ii, k, 66); + g18 += -0.4564354717731476f * d * f3; + g3 += -0.4564354717731476f * d * f18; + g19 += 0.28867512941360474f * d * f2; + g2 += 0.28867512941360474f * d * f19; + g20 += -0.7071067690849304f * d * f1; + g1 += -0.7071067690849304f * d * f20; + g22 += 0.4564354717731476f * d * f1; + g1 += 0.4564354717731476f * d * f22; + } + { const float d = D(ii, k, 67); + g17 += -0.3535533845424652f * d * f3; + g3 += -0.3535533845424652f * d * f17; + g18 += 0.5773502588272095f * d * f2; + g2 += 0.5773502588272095f * d * f18; + g19 += -0.4564354717731476f * d * f3; + g3 += -0.4564354717731476f * d * f19; + g21 += -0.4564354717731476f * d * f1; + g1 += -0.4564354717731476f * d * f21; + g23 += 0.3535533845424652f * d * f1; + g1 += 0.3535533845424652f * d * f23; + } + { const float d = D(ii, k, 68); + g17 += 0.8660253882408142f * d * f2; + g2 += 0.8660253882408142f * d * f17; + g18 += -0.3535533845424652f * d * f3; + g3 += -0.3535533845424652f * d * f18; + g22 += -0.3535533845424652f * d * f1; + g1 += -0.3535533845424652f * d * f22; } - { const float d = D(ii, k, 331); - g81 += 0.2182178944349289f * d * f17; - g82 += 0.2760262191295624f * d * f18; - g83 += 0.29277002811431885f * d * f19; - g84 += 0.2760262191295624f * d * f20; - g85 += 0.2182178944349289f * d * f21; + { const float d = D(ii, k, 69); + g17 += -0.55901700258255f * d * f9; + g9 += -0.55901700258255f * d * f17; + g18 += 0.3952847123146057f * d * f10; + g10 += 0.3952847123146057f * d * f18; + g19 += -0.25f * d * f11; + g11 += -0.25f * d * f19; + g21 += -0.25f * d * f7; + g7 += -0.25f * d * f21; + g22 += 0.3952847123146057f * d * f8; + g8 += 0.3952847123146057f * d * f22; } - { const float d = D(ii, k, 332); - g80 += 0.26726123690605164f * d * f17; - g81 += 0.2182178944349289f * d * f18; - g82 += -0.0690065547823906f * d * f17; - g83 += -0.16903084516525269f * d * f20; - g84 += 0.23904572427272797f * d * f19; - g84 += -0.0690065547823906f * d * f21; - g85 += 0.2182178944349289f * d * f20; - g86 += 0.26726123690605164f * d * f21; + { const float d = D(ii, k, 70); + g17 += 0.3952847123146057f * d * f10; + g10 += 0.3952847123146057f * d * f17; + g19 += 0.3061862289905548f * d * f10; + g10 += 0.3061862289905548f * d * f19; + g20 += -0.5f * d * f7; + g7 += -0.5f * d * f20; + g21 += 0.3061862289905548f * d * f8; + g8 += 0.3061862289905548f * d * f21; + g23 += -0.3952847123146057f * d * f8; + g8 += -0.3952847123146057f * d * f23; } - { const float d = D(ii, k, 333); - g80 += 0.26726123690605164f * d * f26; - g81 += 0.2182178944349289f * d * f25; - g82 += 0.23904572427272797f * d * f24; - g82 += 0.0690065547823906f * d * f26; - g83 += -0.16903084516525269f * d * f23; - g84 += -0.0690065547823906f * d * f22; - g85 += -0.2182178944349289f * d * f23; - g86 += -0.26726123690605164f * d * f22; + { const float d = D(ii, k, 71); + g17 += -0.25f * d * f11; + g11 += -0.25f * d * f17; + g18 += 0.3061862289905548f * d * f10; + g10 += 0.3061862289905548f * d * f18; + g19 += 0.3354102075099945f * d * f9; + g9 += 0.3354102075099945f * d * f19; + g19 += -0.3872983455657959f * d * f11; + g11 += -0.3872983455657959f * d * f19; + g20 += 0.15811388194561005f * d * f8; + g8 += 0.15811388194561005f * d * f20; + g21 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f21; + g22 += -0.3061862289905548f * d * f8; + g8 += -0.3061862289905548f * d * f22; + g23 += 0.25f * d * f7; + g7 += 0.25f * d * f23; } - { const float d = D(ii, k, 334); - g81 += 0.2182178944349289f * d * f22; - g82 += 0.2760262191295624f * d * f23; - g83 += 0.29277002811431885f * d * f24; - g84 += 0.2760262191295624f * d * f25; - g85 += 0.2182178944349289f * d * f26; + { const float d = D(ii, k, 72); + g18 += -0.5f * d * f7; + g7 += -0.5f * d * f18; + g19 += 0.15811388194561005f * d * f8; + g8 += 0.15811388194561005f * d * f19; + g20 += 0.4472135901451111f * d * f9; + g9 += 0.4472135901451111f * d * f20; + g21 += 0.15811388194561005f * d * f10; + g10 += 0.15811388194561005f * d * f21; + g22 += -0.5f * d * f11; + g11 += -0.5f * d * f22; } - { const float d = D(ii, k, 335); - g80 += 0.26726123690605164f * d * f22; - g81 += 0.2182178944349289f * d * f23; - g82 += -0.0690065547823906f * d * f22; - g83 += -0.16903084516525269f * d * f25; - g84 += 0.23904572427272797f * d * f24; - g84 += -0.0690065547823906f * d * f26; - g85 += 0.2182178944349289f * d * f25; - g86 += 0.26726123690605164f * d * f26; + { const float d = D(ii, k, 73); + g17 += -0.25f * d * f7; + g7 += -0.25f * d * f17; + g18 += 0.3061862289905548f * d * f8; + g8 += 0.3061862289905548f * d * f18; + g19 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f19; + g20 += 0.15811388194561005f * d * f10; + g10 += 0.15811388194561005f * d * f20; + g21 += 0.3354102075099945f * d * f9; + g9 += 0.3354102075099945f * d * f21; + g21 += 0.3872983455657959f * d * f11; + g11 += 0.3872983455657959f * d * f21; + g22 += 0.3061862289905548f * d * f10; + g10 += 0.3061862289905548f * d * f22; + g23 += -0.25f * d * f11; + g11 += -0.25f * d * f23; } - { const float d = D(ii, k, 336); - g80 += 0.26726123690605164f * d * f31; - g81 += 0.2182178944349289f * d * f30; - g82 += 0.23904572427272797f * d * f29; - g82 += 0.0690065547823906f * d * f31; - g83 += -0.16903084516525269f * d * f28; - g84 += -0.0690065547823906f * d * f27; - g85 += -0.2182178944349289f * d * f28; - g86 += -0.26726123690605164f * d * f27; + { const float d = D(ii, k, 74); + g17 += 0.3952847123146057f * d * f8; + g8 += 0.3952847123146057f * d * f17; + g19 += -0.3061862289905548f * d * f8; + g8 += -0.3061862289905548f * d * f19; + g20 += -0.5f * d * f11; + g11 += -0.5f * d * f20; + g21 += 0.3061862289905548f * d * f10; + g10 += 0.3061862289905548f * d * f21; + g23 += 0.3952847123146057f * d * f10; + g10 += 0.3952847123146057f * d * f23; } - { const float d = D(ii, k, 337); - g81 += 0.2182178944349289f * d * f27; - g82 += 0.2760262191295624f * d * f28; - g83 += 0.29277002811431885f * d * f29; - g84 += 0.2760262191295624f * d * f30; - g85 += 0.2182178944349289f * d * f31; + { const float d = D(ii, k, 75); + g18 += -0.3952847123146057f * d * f8; + g8 += -0.3952847123146057f * d * f18; + g19 += 0.25f * d * f7; + g7 += 0.25f * d * f19; + g21 += -0.25f * d * f11; + g11 += -0.25f * d * f21; + g22 += 0.3952847123146057f * d * f10; + g10 += 0.3952847123146057f * d * f22; + g23 += -0.55901700258255f * d * f9; + g9 += -0.55901700258255f * d * f23; } - { const float d = D(ii, k, 338); - g80 += 0.26726123690605164f * d * f27; - g81 += 0.2182178944349289f * d * f28; - g82 += -0.0690065547823906f * d * f27; - g83 += -0.16903084516525269f * d * f30; - g84 += 0.23904572427272797f * d * f29; - g84 += -0.0690065547823906f * d * f31; - g85 += 0.2182178944349289f * d * f30; - g86 += 0.26726123690605164f * d * f31; + if constexpr (ACC) { + dF(ii, k, 0) += g0; + dF(ii, k, 1) += g1; + dF(ii, k, 2) += g2; + dF(ii, k, 3) += g3; + dF(ii, k, 4) += g4; + dF(ii, k, 5) += g5; + dF(ii, k, 6) += g6; + dF(ii, k, 7) += g7; + dF(ii, k, 8) += g8; + dF(ii, k, 9) += g9; + dF(ii, k, 10) += g10; + dF(ii, k, 11) += g11; + dF(ii, k, 12) += g12; + dF(ii, k, 13) += g13; + dF(ii, k, 14) += g14; + dF(ii, k, 15) += g15; + dF(ii, k, 16) += g16; + dF(ii, k, 17) += g17; + dF(ii, k, 18) += g18; + dF(ii, k, 19) += g19; + dF(ii, k, 20) += g20; + dF(ii, k, 21) += g21; + dF(ii, k, 22) += g22; + dF(ii, k, 23) += g23; + } else { + dF(ii, k, 0) = g0; + dF(ii, k, 1) = g1; + dF(ii, k, 2) = g2; + dF(ii, k, 3) = g3; + dF(ii, k, 4) = g4; + dF(ii, k, 5) = g5; + dF(ii, k, 6) = g6; + dF(ii, k, 7) = g7; + dF(ii, k, 8) = g8; + dF(ii, k, 9) = g9; + dF(ii, k, 10) = g10; + dF(ii, k, 11) = g11; + dF(ii, k, 12) = g12; + dF(ii, k, 13) = g13; + dF(ii, k, 14) = g14; + dF(ii, k, 15) = g15; + dF(ii, k, 16) = g16; + dF(ii, k, 17) = g17; + dF(ii, k, 18) = g18; + dF(ii, k, 19) = g19; + dF(ii, k, 20) = g20; + dF(ii, k, 21) = g21; + dF(ii, k, 22) = g22; + dF(ii, k, 23) = g23; } - { const float d = D(ii, k, 339); - g80 += 0.26726123690605164f * d * f36; - g81 += 0.2182178944349289f * d * f35; - g82 += 0.23904572427272797f * d * f34; - g82 += 0.0690065547823906f * d * f36; - g83 += -0.16903084516525269f * d * f33; - g84 += -0.0690065547823906f * d * f32; - g85 += -0.2182178944349289f * d * f33; - g86 += -0.26726123690605164f * d * f32; + } + } + +}; + +// mixed product, 37 terms: GRACE-2L-OMAT-large-base BBB, GRACE-2L-OMAT-large-ft-AM BBB, GRACE-2L-OMAT-large-ft-E +// BBB, GRACE-2L-OMAT-medium-base BBB, GRACE-2L-OMAT-medium-ft-AM BBB, GRACE-2L-OMAT-medium-ft-E BBB, +// GRACE-2L-SMAX-OMAT-large BBB, GRACE-2L-SMAX-OMAT-medium BBB, GRACE-2L-SMAX-large BBB, GRACE-2L-SMAX-medium BBB, +// grace_2l_l3 BBB +struct T37_d9bfe18c { + static constexpr int nt = 37, nl = 69; + static constexpr int tab[37][3] = {{0,0,0}, {1,0,1}, {7,4,2}, {8,5,2}, {9,6,2}, {23,12,3}, {24,13,3}, {25,14,3}, {26,15,3}, {27,16,3}, {2,0,4}, {28,12,5}, {29,13,5}, {30,14,5}, {31,15,5}, {32,16,5}, {62,24,6}, {63,25,6}, {64,26,6}, {65,27,6}, {66,28,6}, {67,29,6}, {68,30,6}, {10,4,7}, {11,5,7}, {12,6,7}, {38,12,8}, {39,13,8}, {40,14,8}, {41,15,8}, {42,16,8}, {3,0,9}, {43,12,10}, {44,13,10}, {45,14,10}, {46,15,10}, {47,16,10}}; + static constexpr double cg[37] = {1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a7 = L(ii, k, 7); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a23 = L(ii, k, 23); + const float a24 = L(ii, k, 24); + const float a25 = L(ii, k, 25); + const float a26 = L(ii, k, 26); + const float a27 = L(ii, k, 27); + const float a28 = L(ii, k, 28); + const float a29 = L(ii, k, 29); + const float a30 = L(ii, k, 30); + const float a31 = L(ii, k, 31); + const float a32 = L(ii, k, 32); + const float a38 = L(ii, k, 38); + const float a39 = L(ii, k, 39); + const float a40 = L(ii, k, 40); + const float a41 = L(ii, k, 41); + const float a42 = L(ii, k, 42); + const float a43 = L(ii, k, 43); + const float a44 = L(ii, k, 44); + const float a45 = L(ii, k, 45); + const float a46 = L(ii, k, 46); + const float a47 = L(ii, k, 47); + const float a62 = L(ii, k, 62); + const float a63 = L(ii, k, 63); + const float a64 = L(ii, k, 64); + const float a65 = L(ii, k, 65); + const float a66 = L(ii, k, 66); + const float a67 = L(ii, k, 67); + const float a68 = L(ii, k, 68); + const float b0 = R(ii, k, 0); + const float b4 = R(ii, k, 4); + const float b5 = R(ii, k, 5); + const float b6 = R(ii, k, 6); + const float b12 = R(ii, k, 12); + const float b13 = R(ii, k, 13); + const float b14 = R(ii, k, 14); + const float b15 = R(ii, k, 15); + const float b16 = R(ii, k, 16); + const float b24 = R(ii, k, 24); + const float b25 = R(ii, k, 25); + const float b26 = R(ii, k, 26); + const float b27 = R(ii, k, 27); + const float b28 = R(ii, k, 28); + const float b29 = R(ii, k, 29); + const float b30 = R(ii, k, 30); + out(ii, k, 0) = 1.0f * a0 * b0; + out(ii, k, 1) = 1.0f * a1 * b0; + out(ii, k, 2) = 0.3333333432674408f * a7 * b4 + 0.3333333432674408f * a8 * b5 + 0.3333333432674408f * a9 * b6; + out(ii, k, 3) = 0.20000000298023224f * a23 * b12 + 0.20000000298023224f * a24 * b13 + 0.20000000298023224f * a25 * b14 + 0.20000000298023224f * a26 * b15 + 0.20000000298023224f * a27 * b16; + out(ii, k, 4) = 1.0f * a2 * b0; + out(ii, k, 5) = 0.20000000298023224f * a28 * b12 + 0.20000000298023224f * a29 * b13 + 0.20000000298023224f * a30 * b14 + 0.20000000298023224f * a31 * b15 + 0.20000000298023224f * a32 * b16; + out(ii, k, 6) = 0.1428571492433548f * a62 * b24 + 0.1428571492433548f * a63 * b25 + 0.1428571492433548f * a64 * b26 + 0.1428571492433548f * a65 * b27 + 0.1428571492433548f * a66 * b28 + 0.1428571492433548f * a67 * b29 + 0.1428571492433548f * a68 * b30; + out(ii, k, 7) = 0.3333333432674408f * a10 * b4 + 0.3333333432674408f * a11 * b5 + 0.3333333432674408f * a12 * b6; + out(ii, k, 8) = 0.20000000298023224f * a38 * b12 + 0.20000000298023224f * a39 * b13 + 0.20000000298023224f * a40 * b14 + 0.20000000298023224f * a41 * b15 + 0.20000000298023224f * a42 * b16; + out(ii, k, 9) = 1.0f * a3 * b0; + out(ii, k, 10) = 0.20000000298023224f * a43 * b12 + 0.20000000298023224f * a44 * b13 + 0.20000000298023224f * a45 * b14 + 0.20000000298023224f * a46 * b15 + 0.20000000298023224f * a47 * b16; + } + + template + KOKKOS_INLINE_FUNCTION static void rev(const V &L, const V &R, const V &D, const V &dL, + const V &dR, const int ii, const int k) + { + static_assert(!ACC, "mixed products assign dL"); + { + const float b0 = R(ii, k, 0); + const float b4 = R(ii, k, 4); + const float b5 = R(ii, k, 5); + const float b6 = R(ii, k, 6); + const float b12 = R(ii, k, 12); + const float b13 = R(ii, k, 13); + const float b14 = R(ii, k, 14); + const float b15 = R(ii, k, 15); + const float b16 = R(ii, k, 16); + const float b24 = R(ii, k, 24); + const float b25 = R(ii, k, 25); + const float b26 = R(ii, k, 26); + const float b27 = R(ii, k, 27); + const float b28 = R(ii, k, 28); + const float b29 = R(ii, k, 29); + const float b30 = R(ii, k, 30); + { + float g0 = 0.0f; + float g1 = 0.0f; + float g2 = 0.0f; + float g3 = 0.0f; + float g4 = 0.0f; + float g5 = 0.0f; + float g6 = 0.0f; + float g7 = 0.0f; + float g8 = 0.0f; + float g9 = 0.0f; + float g10 = 0.0f; + float g11 = 0.0f; + float g12 = 0.0f; + float g13 = 0.0f; + float g14 = 0.0f; + float g15 = 0.0f; + float g16 = 0.0f; + float g17 = 0.0f; + float g18 = 0.0f; + float g19 = 0.0f; + float g20 = 0.0f; + float g21 = 0.0f; + float g22 = 0.0f; + float g23 = 0.0f; + float g24 = 0.0f; + float g25 = 0.0f; + float g26 = 0.0f; + float g27 = 0.0f; + float g28 = 0.0f; + float g29 = 0.0f; + float g30 = 0.0f; + float g31 = 0.0f; + float g32 = 0.0f; + float g33 = 0.0f; + float g34 = 0.0f; + float g35 = 0.0f; + float g36 = 0.0f; + float g37 = 0.0f; + float g38 = 0.0f; + float g39 = 0.0f; + float g40 = 0.0f; + float g41 = 0.0f; + float g42 = 0.0f; + float g43 = 0.0f; + float g44 = 0.0f; + float g45 = 0.0f; + float g46 = 0.0f; + float g47 = 0.0f; + float g48 = 0.0f; + float g49 = 0.0f; + float g50 = 0.0f; + float g51 = 0.0f; + float g52 = 0.0f; + float g53 = 0.0f; + float g54 = 0.0f; + float g55 = 0.0f; + float g56 = 0.0f; + float g57 = 0.0f; + float g58 = 0.0f; + float g59 = 0.0f; + float g60 = 0.0f; + float g61 = 0.0f; + float g62 = 0.0f; + float g63 = 0.0f; + float g64 = 0.0f; + float g65 = 0.0f; + float g66 = 0.0f; + float g67 = 0.0f; + float g68 = 0.0f; + { const float d = D(ii, k, 0); + g0 += 1.0f * d * b0; + } + { const float d = D(ii, k, 1); + g1 += 1.0f * d * b0; + } + { const float d = D(ii, k, 2); + g7 += 0.3333333432674408f * d * b4; + g8 += 0.3333333432674408f * d * b5; + g9 += 0.3333333432674408f * d * b6; + } + { const float d = D(ii, k, 3); + g23 += 0.20000000298023224f * d * b12; + g24 += 0.20000000298023224f * d * b13; + g25 += 0.20000000298023224f * d * b14; + g26 += 0.20000000298023224f * d * b15; + g27 += 0.20000000298023224f * d * b16; + } + { const float d = D(ii, k, 4); + g2 += 1.0f * d * b0; + } + { const float d = D(ii, k, 5); + g28 += 0.20000000298023224f * d * b12; + g29 += 0.20000000298023224f * d * b13; + g30 += 0.20000000298023224f * d * b14; + g31 += 0.20000000298023224f * d * b15; + g32 += 0.20000000298023224f * d * b16; + } + { const float d = D(ii, k, 6); + g62 += 0.1428571492433548f * d * b24; + g63 += 0.1428571492433548f * d * b25; + g64 += 0.1428571492433548f * d * b26; + g65 += 0.1428571492433548f * d * b27; + g66 += 0.1428571492433548f * d * b28; + g67 += 0.1428571492433548f * d * b29; + g68 += 0.1428571492433548f * d * b30; + } + { const float d = D(ii, k, 7); + g10 += 0.3333333432674408f * d * b4; + g11 += 0.3333333432674408f * d * b5; + g12 += 0.3333333432674408f * d * b6; + } + { const float d = D(ii, k, 8); + g38 += 0.20000000298023224f * d * b12; + g39 += 0.20000000298023224f * d * b13; + g40 += 0.20000000298023224f * d * b14; + g41 += 0.20000000298023224f * d * b15; + g42 += 0.20000000298023224f * d * b16; + } + { const float d = D(ii, k, 9); + g3 += 1.0f * d * b0; + } + { const float d = D(ii, k, 10); + g43 += 0.20000000298023224f * d * b12; + g44 += 0.20000000298023224f * d * b13; + g45 += 0.20000000298023224f * d * b14; + g46 += 0.20000000298023224f * d * b15; + g47 += 0.20000000298023224f * d * b16; + } + dL(ii, k, 0) = g0; + dL(ii, k, 1) = g1; + dL(ii, k, 2) = g2; + dL(ii, k, 3) = g3; + dL(ii, k, 4) = g4; + dL(ii, k, 5) = g5; + dL(ii, k, 6) = g6; + dL(ii, k, 7) = g7; + dL(ii, k, 8) = g8; + dL(ii, k, 9) = g9; + dL(ii, k, 10) = g10; + dL(ii, k, 11) = g11; + dL(ii, k, 12) = g12; + dL(ii, k, 13) = g13; + dL(ii, k, 14) = g14; + dL(ii, k, 15) = g15; + dL(ii, k, 16) = g16; + dL(ii, k, 17) = g17; + dL(ii, k, 18) = g18; + dL(ii, k, 19) = g19; + dL(ii, k, 20) = g20; + dL(ii, k, 21) = g21; + dL(ii, k, 22) = g22; + dL(ii, k, 23) = g23; + dL(ii, k, 24) = g24; + dL(ii, k, 25) = g25; + dL(ii, k, 26) = g26; + dL(ii, k, 27) = g27; + dL(ii, k, 28) = g28; + dL(ii, k, 29) = g29; + dL(ii, k, 30) = g30; + dL(ii, k, 31) = g31; + dL(ii, k, 32) = g32; + dL(ii, k, 33) = g33; + dL(ii, k, 34) = g34; + dL(ii, k, 35) = g35; + dL(ii, k, 36) = g36; + dL(ii, k, 37) = g37; + dL(ii, k, 38) = g38; + dL(ii, k, 39) = g39; + dL(ii, k, 40) = g40; + dL(ii, k, 41) = g41; + dL(ii, k, 42) = g42; + dL(ii, k, 43) = g43; + dL(ii, k, 44) = g44; + dL(ii, k, 45) = g45; + dL(ii, k, 46) = g46; + dL(ii, k, 47) = g47; + dL(ii, k, 48) = g48; + dL(ii, k, 49) = g49; + dL(ii, k, 50) = g50; + dL(ii, k, 51) = g51; + dL(ii, k, 52) = g52; + dL(ii, k, 53) = g53; + dL(ii, k, 54) = g54; + dL(ii, k, 55) = g55; + dL(ii, k, 56) = g56; + dL(ii, k, 57) = g57; + dL(ii, k, 58) = g58; + dL(ii, k, 59) = g59; + dL(ii, k, 60) = g60; + dL(ii, k, 61) = g61; + dL(ii, k, 62) = g62; + dL(ii, k, 63) = g63; + dL(ii, k, 64) = g64; + dL(ii, k, 65) = g65; + dL(ii, k, 66) = g66; + dL(ii, k, 67) = g67; + dL(ii, k, 68) = g68; } - { const float d = D(ii, k, 340); - g81 += 0.2182178944349289f * d * f32; - g82 += 0.2760262191295624f * d * f33; - g83 += 0.29277002811431885f * d * f34; - g84 += 0.2760262191295624f * d * f35; - g85 += 0.2182178944349289f * d * f36; + } + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a7 = L(ii, k, 7); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a23 = L(ii, k, 23); + const float a24 = L(ii, k, 24); + const float a25 = L(ii, k, 25); + const float a26 = L(ii, k, 26); + const float a27 = L(ii, k, 27); + const float a28 = L(ii, k, 28); + const float a29 = L(ii, k, 29); + const float a30 = L(ii, k, 30); + const float a31 = L(ii, k, 31); + const float a32 = L(ii, k, 32); + const float a38 = L(ii, k, 38); + const float a39 = L(ii, k, 39); + const float a40 = L(ii, k, 40); + const float a41 = L(ii, k, 41); + const float a42 = L(ii, k, 42); + const float a43 = L(ii, k, 43); + const float a44 = L(ii, k, 44); + const float a45 = L(ii, k, 45); + const float a46 = L(ii, k, 46); + const float a47 = L(ii, k, 47); + const float a62 = L(ii, k, 62); + const float a63 = L(ii, k, 63); + const float a64 = L(ii, k, 64); + const float a65 = L(ii, k, 65); + const float a66 = L(ii, k, 66); + const float a67 = L(ii, k, 67); + const float a68 = L(ii, k, 68); + float h0 = 0.0f; + float h4 = 0.0f; + float h5 = 0.0f; + float h6 = 0.0f; + float h12 = 0.0f; + float h13 = 0.0f; + float h14 = 0.0f; + float h15 = 0.0f; + float h16 = 0.0f; + float h24 = 0.0f; + float h25 = 0.0f; + float h26 = 0.0f; + float h27 = 0.0f; + float h28 = 0.0f; + float h29 = 0.0f; + float h30 = 0.0f; + { const float d = D(ii, k, 0); + h0 += 1.0f * d * a0; } - { const float d = D(ii, k, 341); - g80 += 0.26726123690605164f * d * f32; - g81 += 0.2182178944349289f * d * f33; - g82 += -0.0690065547823906f * d * f32; - g83 += -0.16903084516525269f * d * f35; - g84 += 0.23904572427272797f * d * f34; - g84 += -0.0690065547823906f * d * f36; - g85 += 0.2182178944349289f * d * f35; - g86 += 0.26726123690605164f * d * f36; + { const float d = D(ii, k, 1); + h0 += 1.0f * d * a1; } - { const float d = D(ii, k, 342); - g80 += 0.26726123690605164f * d * f41; - g81 += 0.2182178944349289f * d * f40; - g82 += 0.23904572427272797f * d * f39; - g82 += 0.0690065547823906f * d * f41; - g83 += -0.16903084516525269f * d * f38; - g84 += -0.0690065547823906f * d * f37; - g85 += -0.2182178944349289f * d * f38; - g86 += -0.26726123690605164f * d * f37; + { const float d = D(ii, k, 2); + h4 += 0.3333333432674408f * d * a7; + h5 += 0.3333333432674408f * d * a8; + h6 += 0.3333333432674408f * d * a9; } - { const float d = D(ii, k, 343); - g81 += 0.2182178944349289f * d * f37; - g82 += 0.2760262191295624f * d * f38; - g83 += 0.29277002811431885f * d * f39; - g84 += 0.2760262191295624f * d * f40; - g85 += 0.2182178944349289f * d * f41; + { const float d = D(ii, k, 3); + h12 += 0.20000000298023224f * d * a23; + h13 += 0.20000000298023224f * d * a24; + h14 += 0.20000000298023224f * d * a25; + h15 += 0.20000000298023224f * d * a26; + h16 += 0.20000000298023224f * d * a27; } - { const float d = D(ii, k, 344); - g80 += 0.26726123690605164f * d * f37; - g81 += 0.2182178944349289f * d * f38; - g82 += -0.0690065547823906f * d * f37; - g83 += -0.16903084516525269f * d * f40; - g84 += 0.23904572427272797f * d * f39; - g84 += -0.0690065547823906f * d * f41; - g85 += 0.2182178944349289f * d * f40; - g86 += 0.26726123690605164f * d * f41; + { const float d = D(ii, k, 4); + h0 += 1.0f * d * a2; } - { const float d = D(ii, k, 345); - g80 += 0.26726123690605164f * d * f46; - g81 += 0.2182178944349289f * d * f45; - g82 += 0.23904572427272797f * d * f44; - g82 += 0.0690065547823906f * d * f46; - g83 += -0.16903084516525269f * d * f43; - g84 += -0.0690065547823906f * d * f42; - g85 += -0.2182178944349289f * d * f43; - g86 += -0.26726123690605164f * d * f42; + { const float d = D(ii, k, 5); + h12 += 0.20000000298023224f * d * a28; + h13 += 0.20000000298023224f * d * a29; + h14 += 0.20000000298023224f * d * a30; + h15 += 0.20000000298023224f * d * a31; + h16 += 0.20000000298023224f * d * a32; } - { const float d = D(ii, k, 346); - g81 += 0.2182178944349289f * d * f42; - g82 += 0.2760262191295624f * d * f43; - g83 += 0.29277002811431885f * d * f44; - g84 += 0.2760262191295624f * d * f45; - g85 += 0.2182178944349289f * d * f46; + { const float d = D(ii, k, 6); + h24 += 0.1428571492433548f * d * a62; + h25 += 0.1428571492433548f * d * a63; + h26 += 0.1428571492433548f * d * a64; + h27 += 0.1428571492433548f * d * a65; + h28 += 0.1428571492433548f * d * a66; + h29 += 0.1428571492433548f * d * a67; + h30 += 0.1428571492433548f * d * a68; } - { const float d = D(ii, k, 347); - g80 += 0.26726123690605164f * d * f42; - g81 += 0.2182178944349289f * d * f43; - g82 += -0.0690065547823906f * d * f42; - g83 += -0.16903084516525269f * d * f45; - g84 += 0.23904572427272797f * d * f44; - g84 += -0.0690065547823906f * d * f46; - g85 += 0.2182178944349289f * d * f45; - g86 += 0.26726123690605164f * d * f46; + { const float d = D(ii, k, 7); + h4 += 0.3333333432674408f * d * a10; + h5 += 0.3333333432674408f * d * a11; + h6 += 0.3333333432674408f * d * a12; } - { const float d = D(ii, k, 348); - g80 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f80; - g81 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f81; - g82 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f82; - g82 += 0.0690065547823906f * d * f51; - g51 += 0.0690065547823906f * d * f82; - g83 += -0.16903084516525269f * d * f48; - g48 += -0.16903084516525269f * d * f83; - g84 += -0.0690065547823906f * d * f47; - g85 += -0.2182178944349289f * d * f48; - g48 += -0.2182178944349289f * d * f85; - g86 += -0.26726123690605164f * d * f47; + { const float d = D(ii, k, 8); + h12 += 0.20000000298023224f * d * a38; + h13 += 0.20000000298023224f * d * a39; + h14 += 0.20000000298023224f * d * a40; + h15 += 0.20000000298023224f * d * a41; + h16 += 0.20000000298023224f * d * a42; } - { const float d = D(ii, k, 349); - g81 += 0.2182178944349289f * d * f47; - g82 += 0.2760262191295624f * d * f48; - g48 += 0.2760262191295624f * d * f82; - g83 += 0.29277002811431885f * d * f49; - g49 += 0.29277002811431885f * d * f83; - g84 += 0.2760262191295624f * d * f50; - g50 += 0.2760262191295624f * d * f84; - g85 += 0.2182178944349289f * d * f51; - g51 += 0.2182178944349289f * d * f85; + { const float d = D(ii, k, 9); + h0 += 1.0f * d * a3; } - { const float d = D(ii, k, 350); - g80 += 0.26726123690605164f * d * f47; - g81 += 0.2182178944349289f * d * f48; - g48 += 0.2182178944349289f * d * f81; - g82 += -0.0690065547823906f * d * f47; - g83 += -0.16903084516525269f * d * f50; - g50 += -0.16903084516525269f * d * f83; - g84 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f84; - g84 += -0.0690065547823906f * d * f51; - g51 += -0.0690065547823906f * d * f84; - g85 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f85; - g86 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f86; + { const float d = D(ii, k, 10); + h12 += 0.20000000298023224f * d * a43; + h13 += 0.20000000298023224f * d * a44; + h14 += 0.20000000298023224f * d * a45; + h15 += 0.20000000298023224f * d * a46; + h16 += 0.20000000298023224f * d * a47; + } + dR(ii, k, 0) += h0; + dR(ii, k, 4) += h4; + dR(ii, k, 5) += h5; + dR(ii, k, 6) += h6; + dR(ii, k, 12) += h12; + dR(ii, k, 13) += h13; + dR(ii, k, 14) += h14; + dR(ii, k, 15) += h15; + dR(ii, k, 16) += h16; + dR(ii, k, 24) += h24; + dR(ii, k, 25) += h25; + dR(ii, k, 26) += h26; + dR(ii, k, 27) += h27; + dR(ii, k, 28) += h28; + dR(ii, k, 29) += h29; + dR(ii, k, 30) += h30; + } + } + +}; + +// self product, 156 terms: GRACE-2L-OMAT-large-base BBBB, GRACE-2L-OMAT-large-ft-AM BBBB, GRACE-2L-OMAT-large-ft-E +// BBBB, GRACE-2L-OMAT-medium-base BBBB, GRACE-2L-OMAT-medium-ft-AM BBBB, GRACE-2L-OMAT-medium-ft-E BBBB, +// GRACE-2L-SMAX-OMAT-large BBBB, GRACE-2L-SMAX-OMAT-medium BBBB, GRACE-2L-SMAX-large BBBB, GRACE-2L-SMAX-medium BBBB +struct T156_61e1a338 { + static constexpr int nt = 156, nl = 76; + static constexpr int tab[156][3] = {{0,0,0}, {1,0,1}, {2,0,2}, {3,0,3}, {1,1,4}, {2,1,5}, {3,1,6}, {23,18,7}, {24,19,7}, {25,20,7}, {26,21,7}, {27,22,7}, {28,18,8}, {29,19,8}, {30,20,8}, {31,21,8}, {32,22,8}, {33,18,9}, {34,19,9}, {35,20,9}, {36,21,9}, {37,22,9}, {38,18,10}, {39,19,10}, {40,20,10}, {41,21,10}, {42,22,10}, {43,18,11}, {44,19,11}, {45,20,11}, {46,21,11}, {47,22,11}, {7,7,12}, {8,8,12}, {9,9,12}, {10,7,13}, {11,8,13}, {12,9,13}, {23,23,14}, {24,24,14}, {25,25,14}, {26,26,14}, {27,27,14}, {28,23,15}, {29,24,15}, {30,25,15}, {31,26,15}, {32,27,15}, {33,23,16}, {34,24,16}, {35,25,16}, {36,26,16}, {37,27,16}, {38,23,17}, {39,24,17}, {40,25,17}, {41,26,17}, {42,27,17}, {43,23,18}, {44,24,18}, {45,25,18}, {46,26,18}, {47,27,18}, {55,55,19}, {56,56,19}, {57,57,19}, {58,58,19}, {59,59,19}, {60,60,19}, {61,61,19}, {62,55,20}, {63,56,20}, {64,57,20}, {65,58,20}, {66,59,20}, {67,60,20}, {68,61,20}, {69,55,21}, {70,56,21}, {71,57,21}, {72,58,21}, {73,59,21}, {74,60,21}, {75,61,21}, {2,2,22}, {3,2,23}, {33,28,24}, {34,29,24}, {35,30,24}, {36,31,24}, {37,32,24}, {38,28,25}, {39,29,25}, {40,30,25}, {41,31,25}, {42,32,25}, {43,28,26}, {44,29,26}, {45,30,26}, {46,31,26}, {47,32,26}, {33,33,27}, {34,34,27}, {35,35,27}, {36,36,27}, {37,37,27}, {38,33,28}, {39,34,28}, {40,35,28}, {41,36,28}, {42,37,28}, {43,33,29}, {44,34,29}, {45,35,29}, {46,36,29}, {47,37,29}, {62,62,30}, {63,63,30}, {64,64,30}, {65,65,30}, {66,66,30}, {67,67,30}, {68,68,30}, {69,62,31}, {70,63,31}, {71,64,31}, {72,65,31}, {73,66,31}, {74,67,31}, {75,68,31}, {10,10,32}, {11,11,32}, {12,12,32}, {38,38,33}, {39,39,33}, {40,40,33}, {41,41,33}, {42,42,33}, {43,38,34}, {44,39,34}, {45,40,34}, {46,41,34}, {47,42,34}, {69,69,35}, {70,70,35}, {71,71,35}, {72,72,35}, {73,73,35}, {74,74,35}, {75,75,35}, {3,3,36}, {43,43,37}, {44,44,37}, {45,45,37}, {46,46,37}, {47,47,37}}; + static constexpr double cg[156] = {1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a7 = L(ii, k, 7); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a18 = L(ii, k, 18); + const float a19 = L(ii, k, 19); + const float a20 = L(ii, k, 20); + const float a21 = L(ii, k, 21); + const float a22 = L(ii, k, 22); + const float a23 = L(ii, k, 23); + const float a24 = L(ii, k, 24); + const float a25 = L(ii, k, 25); + const float a26 = L(ii, k, 26); + const float a27 = L(ii, k, 27); + const float a28 = L(ii, k, 28); + const float a29 = L(ii, k, 29); + const float a30 = L(ii, k, 30); + const float a31 = L(ii, k, 31); + const float a32 = L(ii, k, 32); + const float a33 = L(ii, k, 33); + const float a34 = L(ii, k, 34); + const float a35 = L(ii, k, 35); + const float a36 = L(ii, k, 36); + const float a37 = L(ii, k, 37); + const float a38 = L(ii, k, 38); + const float a39 = L(ii, k, 39); + const float a40 = L(ii, k, 40); + const float a41 = L(ii, k, 41); + const float a42 = L(ii, k, 42); + const float a43 = L(ii, k, 43); + const float a44 = L(ii, k, 44); + const float a45 = L(ii, k, 45); + const float a46 = L(ii, k, 46); + const float a47 = L(ii, k, 47); + const float a55 = L(ii, k, 55); + const float a56 = L(ii, k, 56); + const float a57 = L(ii, k, 57); + const float a58 = L(ii, k, 58); + const float a59 = L(ii, k, 59); + const float a60 = L(ii, k, 60); + const float a61 = L(ii, k, 61); + const float a62 = L(ii, k, 62); + const float a63 = L(ii, k, 63); + const float a64 = L(ii, k, 64); + const float a65 = L(ii, k, 65); + const float a66 = L(ii, k, 66); + const float a67 = L(ii, k, 67); + const float a68 = L(ii, k, 68); + const float a69 = L(ii, k, 69); + const float a70 = L(ii, k, 70); + const float a71 = L(ii, k, 71); + const float a72 = L(ii, k, 72); + const float a73 = L(ii, k, 73); + const float a74 = L(ii, k, 74); + const float a75 = L(ii, k, 75); + out(ii, k, 0) = 1.0f * a0 * a0; + out(ii, k, 1) = 1.0f * a1 * a0; + out(ii, k, 2) = 1.0f * a2 * a0; + out(ii, k, 3) = 1.0f * a3 * a0; + out(ii, k, 4) = 1.0f * a1 * a1; + out(ii, k, 5) = 1.0f * a2 * a1; + out(ii, k, 6) = 1.0f * a3 * a1; + out(ii, k, 7) = 0.20000000298023224f * a23 * a18 + 0.20000000298023224f * a24 * a19 + 0.20000000298023224f * a25 * a20 + 0.20000000298023224f * a26 * a21 + 0.20000000298023224f * a27 * a22; + out(ii, k, 8) = 0.20000000298023224f * a28 * a18 + 0.20000000298023224f * a29 * a19 + 0.20000000298023224f * a30 * a20 + 0.20000000298023224f * a31 * a21 + 0.20000000298023224f * a32 * a22; + out(ii, k, 9) = 0.20000000298023224f * a33 * a18 + 0.20000000298023224f * a34 * a19 + 0.20000000298023224f * a35 * a20 + 0.20000000298023224f * a36 * a21 + 0.20000000298023224f * a37 * a22; + out(ii, k, 10) = 0.20000000298023224f * a38 * a18 + 0.20000000298023224f * a39 * a19 + 0.20000000298023224f * a40 * a20 + 0.20000000298023224f * a41 * a21 + 0.20000000298023224f * a42 * a22; + out(ii, k, 11) = 0.20000000298023224f * a43 * a18 + 0.20000000298023224f * a44 * a19 + 0.20000000298023224f * a45 * a20 + 0.20000000298023224f * a46 * a21 + 0.20000000298023224f * a47 * a22; + out(ii, k, 12) = 0.3333333432674408f * a7 * a7 + 0.3333333432674408f * a8 * a8 + 0.3333333432674408f * a9 * a9; + out(ii, k, 13) = 0.3333333432674408f * a10 * a7 + 0.3333333432674408f * a11 * a8 + 0.3333333432674408f * a12 * a9; + out(ii, k, 14) = 0.20000000298023224f * a23 * a23 + 0.20000000298023224f * a24 * a24 + 0.20000000298023224f * a25 * a25 + 0.20000000298023224f * a26 * a26 + 0.20000000298023224f * a27 * a27; + out(ii, k, 15) = 0.20000000298023224f * a28 * a23 + 0.20000000298023224f * a29 * a24 + 0.20000000298023224f * a30 * a25 + 0.20000000298023224f * a31 * a26 + 0.20000000298023224f * a32 * a27; + out(ii, k, 16) = 0.20000000298023224f * a33 * a23 + 0.20000000298023224f * a34 * a24 + 0.20000000298023224f * a35 * a25 + 0.20000000298023224f * a36 * a26 + 0.20000000298023224f * a37 * a27; + out(ii, k, 17) = 0.20000000298023224f * a38 * a23 + 0.20000000298023224f * a39 * a24 + 0.20000000298023224f * a40 * a25 + 0.20000000298023224f * a41 * a26 + 0.20000000298023224f * a42 * a27; + out(ii, k, 18) = 0.20000000298023224f * a43 * a23 + 0.20000000298023224f * a44 * a24 + 0.20000000298023224f * a45 * a25 + 0.20000000298023224f * a46 * a26 + 0.20000000298023224f * a47 * a27; + out(ii, k, 19) = 0.1428571492433548f * a55 * a55 + 0.1428571492433548f * a56 * a56 + 0.1428571492433548f * a57 * a57 + 0.1428571492433548f * a58 * a58 + 0.1428571492433548f * a59 * a59 + 0.1428571492433548f * a60 * a60 + 0.1428571492433548f * a61 * a61; + out(ii, k, 20) = 0.1428571492433548f * a62 * a55 + 0.1428571492433548f * a63 * a56 + 0.1428571492433548f * a64 * a57 + 0.1428571492433548f * a65 * a58 + 0.1428571492433548f * a66 * a59 + 0.1428571492433548f * a67 * a60 + 0.1428571492433548f * a68 * a61; + out(ii, k, 21) = 0.1428571492433548f * a69 * a55 + 0.1428571492433548f * a70 * a56 + 0.1428571492433548f * a71 * a57 + 0.1428571492433548f * a72 * a58 + 0.1428571492433548f * a73 * a59 + 0.1428571492433548f * a74 * a60 + 0.1428571492433548f * a75 * a61; + out(ii, k, 22) = 1.0f * a2 * a2; + out(ii, k, 23) = 1.0f * a3 * a2; + out(ii, k, 24) = 0.20000000298023224f * a33 * a28 + 0.20000000298023224f * a34 * a29 + 0.20000000298023224f * a35 * a30 + 0.20000000298023224f * a36 * a31 + 0.20000000298023224f * a37 * a32; + out(ii, k, 25) = 0.20000000298023224f * a38 * a28 + 0.20000000298023224f * a39 * a29 + 0.20000000298023224f * a40 * a30 + 0.20000000298023224f * a41 * a31 + 0.20000000298023224f * a42 * a32; + out(ii, k, 26) = 0.20000000298023224f * a43 * a28 + 0.20000000298023224f * a44 * a29 + 0.20000000298023224f * a45 * a30 + 0.20000000298023224f * a46 * a31 + 0.20000000298023224f * a47 * a32; + out(ii, k, 27) = 0.20000000298023224f * a33 * a33 + 0.20000000298023224f * a34 * a34 + 0.20000000298023224f * a35 * a35 + 0.20000000298023224f * a36 * a36 + 0.20000000298023224f * a37 * a37; + out(ii, k, 28) = 0.20000000298023224f * a38 * a33 + 0.20000000298023224f * a39 * a34 + 0.20000000298023224f * a40 * a35 + 0.20000000298023224f * a41 * a36 + 0.20000000298023224f * a42 * a37; + out(ii, k, 29) = 0.20000000298023224f * a43 * a33 + 0.20000000298023224f * a44 * a34 + 0.20000000298023224f * a45 * a35 + 0.20000000298023224f * a46 * a36 + 0.20000000298023224f * a47 * a37; + out(ii, k, 30) = 0.1428571492433548f * a62 * a62 + 0.1428571492433548f * a63 * a63 + 0.1428571492433548f * a64 * a64 + 0.1428571492433548f * a65 * a65 + 0.1428571492433548f * a66 * a66 + 0.1428571492433548f * a67 * a67 + 0.1428571492433548f * a68 * a68; + out(ii, k, 31) = 0.1428571492433548f * a69 * a62 + 0.1428571492433548f * a70 * a63 + 0.1428571492433548f * a71 * a64 + 0.1428571492433548f * a72 * a65 + 0.1428571492433548f * a73 * a66 + 0.1428571492433548f * a74 * a67 + 0.1428571492433548f * a75 * a68; + out(ii, k, 32) = 0.3333333432674408f * a10 * a10 + 0.3333333432674408f * a11 * a11 + 0.3333333432674408f * a12 * a12; + out(ii, k, 33) = 0.20000000298023224f * a38 * a38 + 0.20000000298023224f * a39 * a39 + 0.20000000298023224f * a40 * a40 + 0.20000000298023224f * a41 * a41 + 0.20000000298023224f * a42 * a42; + out(ii, k, 34) = 0.20000000298023224f * a43 * a38 + 0.20000000298023224f * a44 * a39 + 0.20000000298023224f * a45 * a40 + 0.20000000298023224f * a46 * a41 + 0.20000000298023224f * a47 * a42; + out(ii, k, 35) = 0.1428571492433548f * a69 * a69 + 0.1428571492433548f * a70 * a70 + 0.1428571492433548f * a71 * a71 + 0.1428571492433548f * a72 * a72 + 0.1428571492433548f * a73 * a73 + 0.1428571492433548f * a74 * a74 + 0.1428571492433548f * a75 * a75; + out(ii, k, 36) = 1.0f * a3 * a3; + out(ii, k, 37) = 0.20000000298023224f * a43 * a43 + 0.20000000298023224f * a44 * a44 + 0.20000000298023224f * a45 * a45 + 0.20000000298023224f * a46 * a46 + 0.20000000298023224f * a47 * a47; + } + + template + KOKKOS_INLINE_FUNCTION static void rev(const V &F, const V &, const V &D, const V &dF, const V &, + const int ii, const int k) + { + const float f0 = F(ii, k, 0); + const float f1 = F(ii, k, 1); + const float f2 = F(ii, k, 2); + const float f3 = F(ii, k, 3); + const float f7 = F(ii, k, 7); + const float f8 = F(ii, k, 8); + const float f9 = F(ii, k, 9); + const float f10 = F(ii, k, 10); + const float f11 = F(ii, k, 11); + const float f12 = F(ii, k, 12); + const float f18 = F(ii, k, 18); + const float f19 = F(ii, k, 19); + const float f20 = F(ii, k, 20); + const float f21 = F(ii, k, 21); + const float f22 = F(ii, k, 22); + const float f23 = F(ii, k, 23); + const float f24 = F(ii, k, 24); + const float f25 = F(ii, k, 25); + const float f26 = F(ii, k, 26); + const float f27 = F(ii, k, 27); + const float f28 = F(ii, k, 28); + const float f29 = F(ii, k, 29); + const float f30 = F(ii, k, 30); + const float f31 = F(ii, k, 31); + const float f32 = F(ii, k, 32); + const float f33 = F(ii, k, 33); + const float f34 = F(ii, k, 34); + const float f35 = F(ii, k, 35); + const float f36 = F(ii, k, 36); + const float f37 = F(ii, k, 37); + const float f38 = F(ii, k, 38); + const float f39 = F(ii, k, 39); + const float f40 = F(ii, k, 40); + const float f41 = F(ii, k, 41); + const float f42 = F(ii, k, 42); + const float f43 = F(ii, k, 43); + const float f44 = F(ii, k, 44); + const float f45 = F(ii, k, 45); + const float f46 = F(ii, k, 46); + const float f47 = F(ii, k, 47); + const float f55 = F(ii, k, 55); + const float f56 = F(ii, k, 56); + const float f57 = F(ii, k, 57); + const float f58 = F(ii, k, 58); + const float f59 = F(ii, k, 59); + const float f60 = F(ii, k, 60); + const float f61 = F(ii, k, 61); + const float f62 = F(ii, k, 62); + const float f63 = F(ii, k, 63); + const float f64 = F(ii, k, 64); + const float f65 = F(ii, k, 65); + const float f66 = F(ii, k, 66); + const float f67 = F(ii, k, 67); + const float f68 = F(ii, k, 68); + const float f69 = F(ii, k, 69); + const float f70 = F(ii, k, 70); + const float f71 = F(ii, k, 71); + const float f72 = F(ii, k, 72); + const float f73 = F(ii, k, 73); + const float f74 = F(ii, k, 74); + const float f75 = F(ii, k, 75); + { + float g0 = 0.0f; + float g1 = 0.0f; + float g2 = 0.0f; + float g3 = 0.0f; + float g4 = 0.0f; + float g5 = 0.0f; + float g6 = 0.0f; + float g7 = 0.0f; + float g8 = 0.0f; + float g9 = 0.0f; + float g10 = 0.0f; + float g11 = 0.0f; + float g12 = 0.0f; + float g13 = 0.0f; + float g14 = 0.0f; + float g15 = 0.0f; + float g16 = 0.0f; + float g17 = 0.0f; + float g18 = 0.0f; + float g19 = 0.0f; + float g20 = 0.0f; + float g21 = 0.0f; + float g22 = 0.0f; + float g23 = 0.0f; + float g24 = 0.0f; + float g25 = 0.0f; + float g26 = 0.0f; + float g27 = 0.0f; + float g28 = 0.0f; + float g29 = 0.0f; + float g30 = 0.0f; + float g31 = 0.0f; + float g32 = 0.0f; + float g33 = 0.0f; + float g34 = 0.0f; + float g35 = 0.0f; + float g36 = 0.0f; + float g37 = 0.0f; + float g38 = 0.0f; + float g39 = 0.0f; + float g40 = 0.0f; + float g41 = 0.0f; + float g42 = 0.0f; + float g43 = 0.0f; + float g44 = 0.0f; + float g45 = 0.0f; + float g46 = 0.0f; + float g47 = 0.0f; + { const float d = D(ii, k, 0); + g0 += 1.0f * d * f0; + g0 += 1.0f * d * f0; } - { const float d = D(ii, k, 351); - g48 += 0.3872983455657959f * d * f6; - g49 += -0.22360679507255554f * d * f5; - g51 += -0.3872983455657959f * d * f5; + { const float d = D(ii, k, 1); + g1 += 1.0f * d * f0; + g0 += 1.0f * d * f1; } - { const float d = D(ii, k, 352); - g48 += 0.3872983455657959f * d * f5; - g49 += 0.4472135901451111f * d * f6; - g50 += 0.3872983455657959f * d * f7; + { const float d = D(ii, k, 2); + g2 += 1.0f * d * f0; + g0 += 1.0f * d * f2; } - { const float d = D(ii, k, 353); - g49 += -0.22360679507255554f * d * f7; - g50 += 0.3872983455657959f * d * f6; - g51 += 0.3872983455657959f * d * f7; + { const float d = D(ii, k, 3); + g3 += 1.0f * d * f0; + g0 += 1.0f * d * f3; } - { const float d = D(ii, k, 354); - g48 += 0.3872983455657959f * d * f9; - g49 += -0.22360679507255554f * d * f8; - g51 += -0.3872983455657959f * d * f8; + { const float d = D(ii, k, 4); + g1 += 1.0f * d * f1; + g1 += 1.0f * d * f1; } - { const float d = D(ii, k, 355); - g48 += 0.3872983455657959f * d * f8; - g49 += 0.4472135901451111f * d * f9; - g50 += 0.3872983455657959f * d * f10; + { const float d = D(ii, k, 5); + g2 += 1.0f * d * f1; + g1 += 1.0f * d * f2; } - { const float d = D(ii, k, 356); - g49 += -0.22360679507255554f * d * f10; - g50 += 0.3872983455657959f * d * f9; - g51 += 0.3872983455657959f * d * f10; + { const float d = D(ii, k, 6); + g3 += 1.0f * d * f1; + g1 += 1.0f * d * f3; } - { const float d = D(ii, k, 357); - g48 += 0.3872983455657959f * d * f12; - g49 += -0.22360679507255554f * d * f11; - g51 += -0.3872983455657959f * d * f11; + { const float d = D(ii, k, 7); + g23 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f23; + g24 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f24; + g25 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f25; + g26 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f26; + g27 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f27; } - { const float d = D(ii, k, 358); - g48 += 0.3872983455657959f * d * f11; - g49 += 0.4472135901451111f * d * f12; - g50 += 0.3872983455657959f * d * f13; + { const float d = D(ii, k, 8); + g28 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f28; + g29 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f29; + g30 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f30; + g31 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f31; + g32 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f32; } - { const float d = D(ii, k, 359); - g49 += -0.22360679507255554f * d * f13; - g50 += 0.3872983455657959f * d * f12; - g51 += 0.3872983455657959f * d * f13; + { const float d = D(ii, k, 9); + g33 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f33; + g34 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f34; + g35 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f35; + g36 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f36; + g37 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f37; } - { const float d = D(ii, k, 360); - g48 += 0.3872983455657959f * d * f15; - g49 += -0.22360679507255554f * d * f14; - g51 += -0.3872983455657959f * d * f14; + { const float d = D(ii, k, 10); + g38 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f41; + g42 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f42; } - { const float d = D(ii, k, 361); - g48 += 0.3872983455657959f * d * f14; - g49 += 0.4472135901451111f * d * f15; - g50 += 0.3872983455657959f * d * f16; + { const float d = D(ii, k, 11); + g43 += 0.20000000298023224f * d * f18; + g18 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f19; + g19 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f20; + g20 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f21; + g21 += 0.20000000298023224f * d * f46; + g47 += 0.20000000298023224f * d * f22; + g22 += 0.20000000298023224f * d * f47; } - { const float d = D(ii, k, 362); - g49 += -0.22360679507255554f * d * f16; - g50 += 0.3872983455657959f * d * f15; - g51 += 0.3872983455657959f * d * f16; + { const float d = D(ii, k, 12); + g7 += 0.3333333432674408f * d * f7; + g7 += 0.3333333432674408f * d * f7; + g8 += 0.3333333432674408f * d * f8; + g8 += 0.3333333432674408f * d * f8; + g9 += 0.3333333432674408f * d * f9; + g9 += 0.3333333432674408f * d * f9; } - { const float d = D(ii, k, 363); - g58 += 0.20412415266036987f * d * f132; - g57 += 0.1767766922712326f * d * f133; - g56 += 0.14940357208251953f * d * f134; - g58 += 0.03857583925127983f * d * f134; - g55 += 0.17251639068126678f * d * f135; - g57 += 0.06681530922651291f * d * f135; - g54 += -0.13363061845302582f * d * f136; - g53 += -0.06681530922651291f * d * f137; - g52 += -0.03857583925127983f * d * f138; - g54 += -0.14940357208251953f * d * f138; - g53 += -0.1767766922712326f * d * f139; - g52 += -0.20412415266036987f * d * f140; + { const float d = D(ii, k, 13); + g10 += 0.3333333432674408f * d * f7; + g7 += 0.3333333432674408f * d * f10; + g11 += 0.3333333432674408f * d * f8; + g8 += 0.3333333432674408f * d * f11; + g12 += 0.3333333432674408f * d * f9; + g9 += 0.3333333432674408f * d * f12; } - { const float d = D(ii, k, 364); - g52 += 0.14433756470680237f * d * f133; - g53 += 0.18898223340511322f * d * f134; - g54 += 0.21128855645656586f * d * f135; - g55 += 0.2182178944349289f * d * f136; - g56 += 0.21128855645656586f * d * f137; - g57 += 0.18898223340511322f * d * f138; - g58 += 0.14433756470680237f * d * f139; + { const float d = D(ii, k, 14); + g23 += 0.20000000298023224f * d * f23; + g23 += 0.20000000298023224f * d * f23; + g24 += 0.20000000298023224f * d * f24; + g24 += 0.20000000298023224f * d * f24; + g25 += 0.20000000298023224f * d * f25; + g25 += 0.20000000298023224f * d * f25; + g26 += 0.20000000298023224f * d * f26; + g26 += 0.20000000298023224f * d * f26; + g27 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f27; } - { const float d = D(ii, k, 365); - g52 += 0.20412415266036987f * d * f132; - g53 += 0.1767766922712326f * d * f133; - g52 += -0.03857583925127983f * d * f134; - g54 += 0.14940357208251953f * d * f134; - g53 += -0.06681530922651291f * d * f135; - g56 += -0.13363061845302582f * d * f136; - g55 += 0.17251639068126678f * d * f137; - g57 += -0.06681530922651291f * d * f137; - g56 += 0.14940357208251953f * d * f138; - g58 += -0.03857583925127983f * d * f138; - g57 += 0.1767766922712326f * d * f139; - g58 += 0.20412415266036987f * d * f140; + { const float d = D(ii, k, 15); + g28 += 0.20000000298023224f * d * f23; + g23 += 0.20000000298023224f * d * f28; + g29 += 0.20000000298023224f * d * f24; + g24 += 0.20000000298023224f * d * f29; + g30 += 0.20000000298023224f * d * f25; + g25 += 0.20000000298023224f * d * f30; + g31 += 0.20000000298023224f * d * f26; + g26 += 0.20000000298023224f * d * f31; + g32 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f32; } - { const float d = D(ii, k, 366); - g65 += 0.20412415266036987f * d * f132; - g64 += 0.1767766922712326f * d * f133; - g63 += 0.14940357208251953f * d * f134; - g65 += 0.03857583925127983f * d * f134; - g62 += 0.17251639068126678f * d * f135; - g64 += 0.06681530922651291f * d * f135; - g61 += -0.13363061845302582f * d * f136; - g60 += -0.06681530922651291f * d * f137; - g59 += -0.03857583925127983f * d * f138; - g61 += -0.14940357208251953f * d * f138; - g60 += -0.1767766922712326f * d * f139; - g59 += -0.20412415266036987f * d * f140; + { const float d = D(ii, k, 16); + g33 += 0.20000000298023224f * d * f23; + g23 += 0.20000000298023224f * d * f33; + g34 += 0.20000000298023224f * d * f24; + g24 += 0.20000000298023224f * d * f34; + g35 += 0.20000000298023224f * d * f25; + g25 += 0.20000000298023224f * d * f35; + g36 += 0.20000000298023224f * d * f26; + g26 += 0.20000000298023224f * d * f36; + g37 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f37; } - { const float d = D(ii, k, 367); - g59 += 0.14433756470680237f * d * f133; - g60 += 0.18898223340511322f * d * f134; - g61 += 0.21128855645656586f * d * f135; - g62 += 0.2182178944349289f * d * f136; - g63 += 0.21128855645656586f * d * f137; - g64 += 0.18898223340511322f * d * f138; - g65 += 0.14433756470680237f * d * f139; + { const float d = D(ii, k, 17); + g38 += 0.20000000298023224f * d * f23; + g23 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f24; + g24 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f25; + g25 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f26; + g26 += 0.20000000298023224f * d * f41; + g42 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f42; } - { const float d = D(ii, k, 368); - g59 += 0.20412415266036987f * d * f132; - g60 += 0.1767766922712326f * d * f133; - g59 += -0.03857583925127983f * d * f134; - g61 += 0.14940357208251953f * d * f134; - g60 += -0.06681530922651291f * d * f135; - g63 += -0.13363061845302582f * d * f136; - g62 += 0.17251639068126678f * d * f137; - g64 += -0.06681530922651291f * d * f137; - g63 += 0.14940357208251953f * d * f138; - g65 += -0.03857583925127983f * d * f138; - g64 += 0.1767766922712326f * d * f139; - g65 += 0.20412415266036987f * d * f140; + { const float d = D(ii, k, 18); + g43 += 0.20000000298023224f * d * f23; + g23 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f24; + g24 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f25; + g25 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f26; + g26 += 0.20000000298023224f * d * f46; + g47 += 0.20000000298023224f * d * f27; + g27 += 0.20000000298023224f * d * f47; } - { const float d = D(ii, k, 369); - g72 += 0.20412415266036987f * d * f132; - g71 += 0.1767766922712326f * d * f133; - g70 += 0.14940357208251953f * d * f134; - g72 += 0.03857583925127983f * d * f134; - g69 += 0.17251639068126678f * d * f135; - g71 += 0.06681530922651291f * d * f135; - g68 += -0.13363061845302582f * d * f136; - g67 += -0.06681530922651291f * d * f137; - g66 += -0.03857583925127983f * d * f138; - g68 += -0.14940357208251953f * d * f138; - g67 += -0.1767766922712326f * d * f139; - g66 += -0.20412415266036987f * d * f140; + { const float d = D(ii, k, 22); + g2 += 1.0f * d * f2; + g2 += 1.0f * d * f2; } - { const float d = D(ii, k, 370); - g66 += 0.14433756470680237f * d * f133; - g67 += 0.18898223340511322f * d * f134; - g68 += 0.21128855645656586f * d * f135; - g69 += 0.2182178944349289f * d * f136; - g70 += 0.21128855645656586f * d * f137; - g71 += 0.18898223340511322f * d * f138; - g72 += 0.14433756470680237f * d * f139; + { const float d = D(ii, k, 23); + g3 += 1.0f * d * f2; + g2 += 1.0f * d * f3; } - { const float d = D(ii, k, 371); - g66 += 0.20412415266036987f * d * f132; - g67 += 0.1767766922712326f * d * f133; - g66 += -0.03857583925127983f * d * f134; - g68 += 0.14940357208251953f * d * f134; - g67 += -0.06681530922651291f * d * f135; - g70 += -0.13363061845302582f * d * f136; - g69 += 0.17251639068126678f * d * f137; - g71 += -0.06681530922651291f * d * f137; - g70 += 0.14940357208251953f * d * f138; - g72 += -0.03857583925127983f * d * f138; - g71 += 0.1767766922712326f * d * f139; - g72 += 0.20412415266036987f * d * f140; + { const float d = D(ii, k, 24); + g33 += 0.20000000298023224f * d * f28; + g28 += 0.20000000298023224f * d * f33; + g34 += 0.20000000298023224f * d * f29; + g29 += 0.20000000298023224f * d * f34; + g35 += 0.20000000298023224f * d * f30; + g30 += 0.20000000298023224f * d * f35; + g36 += 0.20000000298023224f * d * f31; + g31 += 0.20000000298023224f * d * f36; + g37 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f37; } - { const float d = D(ii, k, 372); - g79 += 0.20412415266036987f * d * f132; - g78 += 0.1767766922712326f * d * f133; - g77 += 0.14940357208251953f * d * f134; - g79 += 0.03857583925127983f * d * f134; - g76 += 0.17251639068126678f * d * f135; - g78 += 0.06681530922651291f * d * f135; - g75 += -0.13363061845302582f * d * f136; - g74 += -0.06681530922651291f * d * f137; - g73 += -0.03857583925127983f * d * f138; - g75 += -0.14940357208251953f * d * f138; - g74 += -0.1767766922712326f * d * f139; - g73 += -0.20412415266036987f * d * f140; + { const float d = D(ii, k, 25); + g38 += 0.20000000298023224f * d * f28; + g28 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f29; + g29 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f30; + g30 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f31; + g31 += 0.20000000298023224f * d * f41; + g42 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f42; } - { const float d = D(ii, k, 373); - g73 += 0.14433756470680237f * d * f133; - g74 += 0.18898223340511322f * d * f134; - g75 += 0.21128855645656586f * d * f135; - g76 += 0.2182178944349289f * d * f136; - g77 += 0.21128855645656586f * d * f137; - g78 += 0.18898223340511322f * d * f138; - g79 += 0.14433756470680237f * d * f139; + { const float d = D(ii, k, 26); + g43 += 0.20000000298023224f * d * f28; + g28 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f29; + g29 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f30; + g30 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f31; + g31 += 0.20000000298023224f * d * f46; + g47 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f47; } - { const float d = D(ii, k, 374); - g73 += 0.20412415266036987f * d * f132; - g74 += 0.1767766922712326f * d * f133; - g73 += -0.03857583925127983f * d * f134; - g75 += 0.14940357208251953f * d * f134; - g74 += -0.06681530922651291f * d * f135; - g77 += -0.13363061845302582f * d * f136; - g76 += 0.17251639068126678f * d * f137; - g78 += -0.06681530922651291f * d * f137; - g77 += 0.14940357208251953f * d * f138; - g79 += -0.03857583925127983f * d * f138; - g78 += 0.1767766922712326f * d * f139; - g79 += 0.20412415266036987f * d * f140; + { const float d = D(ii, k, 27); + g33 += 0.20000000298023224f * d * f33; + g33 += 0.20000000298023224f * d * f33; + g34 += 0.20000000298023224f * d * f34; + g34 += 0.20000000298023224f * d * f34; + g35 += 0.20000000298023224f * d * f35; + g35 += 0.20000000298023224f * d * f35; + g36 += 0.20000000298023224f * d * f36; + g36 += 0.20000000298023224f * d * f36; + g37 += 0.20000000298023224f * d * f37; + g37 += 0.20000000298023224f * d * f37; + } + { const float d = D(ii, k, 28); + g38 += 0.20000000298023224f * d * f33; + g33 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f34; + g34 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f35; + g35 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f36; + g36 += 0.20000000298023224f * d * f41; + g42 += 0.20000000298023224f * d * f37; + g37 += 0.20000000298023224f * d * f42; } - { const float d = D(ii, k, 375); - g86 += 0.20412415266036987f * d * f132; - g85 += 0.1767766922712326f * d * f133; - g84 += 0.14940357208251953f * d * f134; - g86 += 0.03857583925127983f * d * f134; - g83 += 0.17251639068126678f * d * f135; - g85 += 0.06681530922651291f * d * f135; - g82 += -0.13363061845302582f * d * f136; - g81 += -0.06681530922651291f * d * f137; - g80 += -0.03857583925127983f * d * f138; - g82 += -0.14940357208251953f * d * f138; - g81 += -0.1767766922712326f * d * f139; - g80 += -0.20412415266036987f * d * f140; + { const float d = D(ii, k, 29); + g43 += 0.20000000298023224f * d * f33; + g33 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f34; + g34 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f35; + g35 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f36; + g36 += 0.20000000298023224f * d * f46; + g47 += 0.20000000298023224f * d * f37; + g37 += 0.20000000298023224f * d * f47; } - { const float d = D(ii, k, 376); - g80 += 0.14433756470680237f * d * f133; - g81 += 0.18898223340511322f * d * f134; - g82 += 0.21128855645656586f * d * f135; - g83 += 0.2182178944349289f * d * f136; - g84 += 0.21128855645656586f * d * f137; - g85 += 0.18898223340511322f * d * f138; - g86 += 0.14433756470680237f * d * f139; + { const float d = D(ii, k, 32); + g10 += 0.3333333432674408f * d * f10; + g10 += 0.3333333432674408f * d * f10; + g11 += 0.3333333432674408f * d * f11; + g11 += 0.3333333432674408f * d * f11; + g12 += 0.3333333432674408f * d * f12; + g12 += 0.3333333432674408f * d * f12; } - { const float d = D(ii, k, 377); - g80 += 0.20412415266036987f * d * f132; - g81 += 0.1767766922712326f * d * f133; - g80 += -0.03857583925127983f * d * f134; - g82 += 0.14940357208251953f * d * f134; - g81 += -0.06681530922651291f * d * f135; - g84 += -0.13363061845302582f * d * f136; - g83 += 0.17251639068126678f * d * f137; - g85 += -0.06681530922651291f * d * f137; - g84 += 0.14940357208251953f * d * f138; - g86 += -0.03857583925127983f * d * f138; - g85 += 0.1767766922712326f * d * f139; - g86 += 0.20412415266036987f * d * f140; + { const float d = D(ii, k, 33); + g38 += 0.20000000298023224f * d * f38; + g38 += 0.20000000298023224f * d * f38; + g39 += 0.20000000298023224f * d * f39; + g39 += 0.20000000298023224f * d * f39; + g40 += 0.20000000298023224f * d * f40; + g40 += 0.20000000298023224f * d * f40; + g41 += 0.20000000298023224f * d * f41; + g41 += 0.20000000298023224f * d * f41; + g42 += 0.20000000298023224f * d * f42; + g42 += 0.20000000298023224f * d * f42; } - dF(ii, k, 48) = g48; - dF(ii, k, 49) = g49; - dF(ii, k, 50) = g50; - dF(ii, k, 51) = g51; - dF(ii, k, 52) = g52; - dF(ii, k, 53) = g53; - dF(ii, k, 54) = g54; - dF(ii, k, 55) = g55; - dF(ii, k, 56) = g56; - dF(ii, k, 57) = g57; - dF(ii, k, 58) = g58; - dF(ii, k, 59) = g59; - dF(ii, k, 60) = g60; - dF(ii, k, 61) = g61; - dF(ii, k, 62) = g62; - dF(ii, k, 63) = g63; - dF(ii, k, 64) = g64; - dF(ii, k, 65) = g65; - dF(ii, k, 66) = g66; - dF(ii, k, 67) = g67; - dF(ii, k, 68) = g68; - dF(ii, k, 69) = g69; - dF(ii, k, 70) = g70; - dF(ii, k, 71) = g71; - dF(ii, k, 72) = g72; - dF(ii, k, 73) = g73; - dF(ii, k, 74) = g74; - dF(ii, k, 75) = g75; - dF(ii, k, 76) = g76; - dF(ii, k, 77) = g77; - dF(ii, k, 78) = g78; - dF(ii, k, 79) = g79; - dF(ii, k, 80) = g80; - dF(ii, k, 81) = g81; - dF(ii, k, 82) = g82; - dF(ii, k, 83) = g83; - dF(ii, k, 84) = g84; - dF(ii, k, 85) = g85; - dF(ii, k, 86) = g86; - dF(ii, k, 87) = g87; - dF(ii, k, 88) = g88; - dF(ii, k, 89) = g89; - dF(ii, k, 90) = g90; - dF(ii, k, 91) = g91; - dF(ii, k, 92) = g92; - dF(ii, k, 93) = g93; - dF(ii, k, 94) = g94; - dF(ii, k, 95) = g95; - } - { - float g96 = 0.0f; - float g97 = 0.0f; - float g98 = 0.0f; - float g99 = 0.0f; - float g100 = 0.0f; - float g101 = 0.0f; - float g102 = 0.0f; - float g103 = 0.0f; - float g104 = 0.0f; - float g105 = 0.0f; - float g106 = 0.0f; - float g107 = 0.0f; - float g108 = 0.0f; - float g109 = 0.0f; - float g110 = 0.0f; - float g111 = 0.0f; - float g112 = 0.0f; - float g113 = 0.0f; - float g114 = 0.0f; - float g115 = 0.0f; - float g116 = 0.0f; - float g117 = 0.0f; - float g118 = 0.0f; - float g119 = 0.0f; - float g120 = 0.0f; - float g121 = 0.0f; - float g122 = 0.0f; - float g123 = 0.0f; - float g124 = 0.0f; - float g125 = 0.0f; - float g126 = 0.0f; - float g127 = 0.0f; - float g128 = 0.0f; - float g129 = 0.0f; - float g130 = 0.0f; - float g131 = 0.0f; - float g132 = 0.0f; - float g133 = 0.0f; - float g134 = 0.0f; - float g135 = 0.0f; - float g136 = 0.0f; - float g137 = 0.0f; - float g138 = 0.0f; - float g139 = 0.0f; - float g140 = 0.0f; { const float d = D(ii, k, 34); - g96 += 0.1111111119389534f * d * f87; - g97 += 0.1111111119389534f * d * f88; - g98 += 0.1111111119389534f * d * f89; - g99 += 0.1111111119389534f * d * f90; - g100 += 0.1111111119389534f * d * f91; - g101 += 0.1111111119389534f * d * f92; - g102 += 0.1111111119389534f * d * f93; - g103 += 0.1111111119389534f * d * f94; - g104 += 0.1111111119389534f * d * f95; - } - { const float d = D(ii, k, 35); - g105 += 0.1111111119389534f * d * f87; - g106 += 0.1111111119389534f * d * f88; - g107 += 0.1111111119389534f * d * f89; - g108 += 0.1111111119389534f * d * f90; - g109 += 0.1111111119389534f * d * f91; - g110 += 0.1111111119389534f * d * f92; - g111 += 0.1111111119389534f * d * f93; - g112 += 0.1111111119389534f * d * f94; - g113 += 0.1111111119389534f * d * f95; + g43 += 0.20000000298023224f * d * f38; + g38 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f39; + g39 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f40; + g40 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f41; + g41 += 0.20000000298023224f * d * f46; + g47 += 0.20000000298023224f * d * f42; + g42 += 0.20000000298023224f * d * f47; } { const float d = D(ii, k, 36); - g132 += 0.1111111119389534f * d * f87; - g133 += 0.1111111119389534f * d * f88; - g134 += 0.1111111119389534f * d * f89; - g135 += 0.1111111119389534f * d * f90; - g136 += 0.1111111119389534f * d * f91; - g137 += 0.1111111119389534f * d * f92; - g138 += 0.1111111119389534f * d * f93; - g139 += 0.1111111119389534f * d * f94; - g140 += 0.1111111119389534f * d * f95; + g3 += 1.0f * d * f3; + g3 += 1.0f * d * f3; } - { const float d = D(ii, k, 42); - g96 += 0.1111111119389534f * d * f96; - g96 += 0.1111111119389534f * d * f96; - g97 += 0.1111111119389534f * d * f97; - g97 += 0.1111111119389534f * d * f97; - g98 += 0.1111111119389534f * d * f98; - g98 += 0.1111111119389534f * d * f98; - g99 += 0.1111111119389534f * d * f99; - g99 += 0.1111111119389534f * d * f99; - g100 += 0.1111111119389534f * d * f100; - g100 += 0.1111111119389534f * d * f100; - g101 += 0.1111111119389534f * d * f101; - g101 += 0.1111111119389534f * d * f101; - g102 += 0.1111111119389534f * d * f102; - g102 += 0.1111111119389534f * d * f102; - g103 += 0.1111111119389534f * d * f103; - g103 += 0.1111111119389534f * d * f103; - g104 += 0.1111111119389534f * d * f104; - g104 += 0.1111111119389534f * d * f104; + { const float d = D(ii, k, 37); + g43 += 0.20000000298023224f * d * f43; + g43 += 0.20000000298023224f * d * f43; + g44 += 0.20000000298023224f * d * f44; + g44 += 0.20000000298023224f * d * f44; + g45 += 0.20000000298023224f * d * f45; + g45 += 0.20000000298023224f * d * f45; + g46 += 0.20000000298023224f * d * f46; + g46 += 0.20000000298023224f * d * f46; + g47 += 0.20000000298023224f * d * f47; + g47 += 0.20000000298023224f * d * f47; } - { const float d = D(ii, k, 43); - g123 += 0.1111111119389534f * d * f96; - g96 += 0.1111111119389534f * d * f123; - g124 += 0.1111111119389534f * d * f97; - g97 += 0.1111111119389534f * d * f124; - g125 += 0.1111111119389534f * d * f98; - g98 += 0.1111111119389534f * d * f125; - g126 += 0.1111111119389534f * d * f99; - g99 += 0.1111111119389534f * d * f126; - g127 += 0.1111111119389534f * d * f100; - g100 += 0.1111111119389534f * d * f127; - g128 += 0.1111111119389534f * d * f101; - g101 += 0.1111111119389534f * d * f128; - g129 += 0.1111111119389534f * d * f102; - g102 += 0.1111111119389534f * d * f129; - g130 += 0.1111111119389534f * d * f103; - g103 += 0.1111111119389534f * d * f130; - g131 += 0.1111111119389534f * d * f104; - g104 += 0.1111111119389534f * d * f131; + if constexpr (ACC) { + dF(ii, k, 0) += g0; + dF(ii, k, 1) += g1; + dF(ii, k, 2) += g2; + dF(ii, k, 3) += g3; + dF(ii, k, 4) += g4; + dF(ii, k, 5) += g5; + dF(ii, k, 6) += g6; + dF(ii, k, 7) += g7; + dF(ii, k, 8) += g8; + dF(ii, k, 9) += g9; + dF(ii, k, 10) += g10; + dF(ii, k, 11) += g11; + dF(ii, k, 12) += g12; + dF(ii, k, 13) += g13; + dF(ii, k, 14) += g14; + dF(ii, k, 15) += g15; + dF(ii, k, 16) += g16; + dF(ii, k, 17) += g17; + dF(ii, k, 18) += g18; + dF(ii, k, 19) += g19; + dF(ii, k, 20) += g20; + dF(ii, k, 21) += g21; + dF(ii, k, 22) += g22; + dF(ii, k, 23) += g23; + dF(ii, k, 24) += g24; + dF(ii, k, 25) += g25; + dF(ii, k, 26) += g26; + dF(ii, k, 27) += g27; + dF(ii, k, 28) += g28; + dF(ii, k, 29) += g29; + dF(ii, k, 30) += g30; + dF(ii, k, 31) += g31; + dF(ii, k, 32) += g32; + dF(ii, k, 33) += g33; + dF(ii, k, 34) += g34; + dF(ii, k, 35) += g35; + dF(ii, k, 36) += g36; + dF(ii, k, 37) += g37; + dF(ii, k, 38) += g38; + dF(ii, k, 39) += g39; + dF(ii, k, 40) += g40; + dF(ii, k, 41) += g41; + dF(ii, k, 42) += g42; + dF(ii, k, 43) += g43; + dF(ii, k, 44) += g44; + dF(ii, k, 45) += g45; + dF(ii, k, 46) += g46; + dF(ii, k, 47) += g47; + } else { + dF(ii, k, 0) = g0; + dF(ii, k, 1) = g1; + dF(ii, k, 2) = g2; + dF(ii, k, 3) = g3; + dF(ii, k, 4) = g4; + dF(ii, k, 5) = g5; + dF(ii, k, 6) = g6; + dF(ii, k, 7) = g7; + dF(ii, k, 8) = g8; + dF(ii, k, 9) = g9; + dF(ii, k, 10) = g10; + dF(ii, k, 11) = g11; + dF(ii, k, 12) = g12; + dF(ii, k, 13) = g13; + dF(ii, k, 14) = g14; + dF(ii, k, 15) = g15; + dF(ii, k, 16) = g16; + dF(ii, k, 17) = g17; + dF(ii, k, 18) = g18; + dF(ii, k, 19) = g19; + dF(ii, k, 20) = g20; + dF(ii, k, 21) = g21; + dF(ii, k, 22) = g22; + dF(ii, k, 23) = g23; + dF(ii, k, 24) = g24; + dF(ii, k, 25) = g25; + dF(ii, k, 26) = g26; + dF(ii, k, 27) = g27; + dF(ii, k, 28) = g28; + dF(ii, k, 29) = g29; + dF(ii, k, 30) = g30; + dF(ii, k, 31) = g31; + dF(ii, k, 32) = g32; + dF(ii, k, 33) = g33; + dF(ii, k, 34) = g34; + dF(ii, k, 35) = g35; + dF(ii, k, 36) = g36; + dF(ii, k, 37) = g37; + dF(ii, k, 38) = g38; + dF(ii, k, 39) = g39; + dF(ii, k, 40) = g40; + dF(ii, k, 41) = g41; + dF(ii, k, 42) = g42; + dF(ii, k, 43) = g43; + dF(ii, k, 44) = g44; + dF(ii, k, 45) = g45; + dF(ii, k, 46) = g46; + dF(ii, k, 47) = g47; } - { const float d = D(ii, k, 44); - g132 += 0.1111111119389534f * d * f96; - g96 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f97; - g97 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f98; - g98 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f99; - g99 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f100; - g100 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f101; - g101 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f102; - g102 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f103; - g103 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f104; - g104 += 0.1111111119389534f * d * f140; + } + { + float g48 = 0.0f; + float g49 = 0.0f; + float g50 = 0.0f; + float g51 = 0.0f; + float g52 = 0.0f; + float g53 = 0.0f; + float g54 = 0.0f; + float g55 = 0.0f; + float g56 = 0.0f; + float g57 = 0.0f; + float g58 = 0.0f; + float g59 = 0.0f; + float g60 = 0.0f; + float g61 = 0.0f; + float g62 = 0.0f; + float g63 = 0.0f; + float g64 = 0.0f; + float g65 = 0.0f; + float g66 = 0.0f; + float g67 = 0.0f; + float g68 = 0.0f; + float g69 = 0.0f; + float g70 = 0.0f; + float g71 = 0.0f; + float g72 = 0.0f; + float g73 = 0.0f; + float g74 = 0.0f; + float g75 = 0.0f; + { const float d = D(ii, k, 19); + g55 += 0.1428571492433548f * d * f55; + g55 += 0.1428571492433548f * d * f55; + g56 += 0.1428571492433548f * d * f56; + g56 += 0.1428571492433548f * d * f56; + g57 += 0.1428571492433548f * d * f57; + g57 += 0.1428571492433548f * d * f57; + g58 += 0.1428571492433548f * d * f58; + g58 += 0.1428571492433548f * d * f58; + g59 += 0.1428571492433548f * d * f59; + g59 += 0.1428571492433548f * d * f59; + g60 += 0.1428571492433548f * d * f60; + g60 += 0.1428571492433548f * d * f60; + g61 += 0.1428571492433548f * d * f61; + g61 += 0.1428571492433548f * d * f61; } - { const float d = D(ii, k, 55); - g105 += 0.1111111119389534f * d * f105; - g105 += 0.1111111119389534f * d * f105; - g106 += 0.1111111119389534f * d * f106; - g106 += 0.1111111119389534f * d * f106; - g107 += 0.1111111119389534f * d * f107; - g107 += 0.1111111119389534f * d * f107; - g108 += 0.1111111119389534f * d * f108; - g108 += 0.1111111119389534f * d * f108; - g109 += 0.1111111119389534f * d * f109; - g109 += 0.1111111119389534f * d * f109; - g110 += 0.1111111119389534f * d * f110; - g110 += 0.1111111119389534f * d * f110; - g111 += 0.1111111119389534f * d * f111; - g111 += 0.1111111119389534f * d * f111; - g112 += 0.1111111119389534f * d * f112; - g112 += 0.1111111119389534f * d * f112; - g113 += 0.1111111119389534f * d * f113; - g113 += 0.1111111119389534f * d * f113; + { const float d = D(ii, k, 20); + g62 += 0.1428571492433548f * d * f55; + g55 += 0.1428571492433548f * d * f62; + g63 += 0.1428571492433548f * d * f56; + g56 += 0.1428571492433548f * d * f63; + g64 += 0.1428571492433548f * d * f57; + g57 += 0.1428571492433548f * d * f64; + g65 += 0.1428571492433548f * d * f58; + g58 += 0.1428571492433548f * d * f65; + g66 += 0.1428571492433548f * d * f59; + g59 += 0.1428571492433548f * d * f66; + g67 += 0.1428571492433548f * d * f60; + g60 += 0.1428571492433548f * d * f67; + g68 += 0.1428571492433548f * d * f61; + g61 += 0.1428571492433548f * d * f68; } - { const float d = D(ii, k, 56); - g123 += 0.1111111119389534f * d * f105; - g105 += 0.1111111119389534f * d * f123; - g124 += 0.1111111119389534f * d * f106; - g106 += 0.1111111119389534f * d * f124; - g125 += 0.1111111119389534f * d * f107; - g107 += 0.1111111119389534f * d * f125; - g126 += 0.1111111119389534f * d * f108; - g108 += 0.1111111119389534f * d * f126; - g127 += 0.1111111119389534f * d * f109; - g109 += 0.1111111119389534f * d * f127; - g128 += 0.1111111119389534f * d * f110; - g110 += 0.1111111119389534f * d * f128; - g129 += 0.1111111119389534f * d * f111; - g111 += 0.1111111119389534f * d * f129; - g130 += 0.1111111119389534f * d * f112; - g112 += 0.1111111119389534f * d * f130; - g131 += 0.1111111119389534f * d * f113; - g113 += 0.1111111119389534f * d * f131; + { const float d = D(ii, k, 21); + g69 += 0.1428571492433548f * d * f55; + g55 += 0.1428571492433548f * d * f69; + g70 += 0.1428571492433548f * d * f56; + g56 += 0.1428571492433548f * d * f70; + g71 += 0.1428571492433548f * d * f57; + g57 += 0.1428571492433548f * d * f71; + g72 += 0.1428571492433548f * d * f58; + g58 += 0.1428571492433548f * d * f72; + g73 += 0.1428571492433548f * d * f59; + g59 += 0.1428571492433548f * d * f73; + g74 += 0.1428571492433548f * d * f60; + g60 += 0.1428571492433548f * d * f74; + g75 += 0.1428571492433548f * d * f61; + g61 += 0.1428571492433548f * d * f75; } - { const float d = D(ii, k, 57); - g132 += 0.1111111119389534f * d * f105; - g105 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f106; - g106 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f107; - g107 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f108; - g108 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f109; - g109 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f110; - g110 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f111; - g111 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f112; - g112 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f113; - g113 += 0.1111111119389534f * d * f140; + { const float d = D(ii, k, 30); + g62 += 0.1428571492433548f * d * f62; + g62 += 0.1428571492433548f * d * f62; + g63 += 0.1428571492433548f * d * f63; + g63 += 0.1428571492433548f * d * f63; + g64 += 0.1428571492433548f * d * f64; + g64 += 0.1428571492433548f * d * f64; + g65 += 0.1428571492433548f * d * f65; + g65 += 0.1428571492433548f * d * f65; + g66 += 0.1428571492433548f * d * f66; + g66 += 0.1428571492433548f * d * f66; + g67 += 0.1428571492433548f * d * f67; + g67 += 0.1428571492433548f * d * f67; + g68 += 0.1428571492433548f * d * f68; + g68 += 0.1428571492433548f * d * f68; } - { const float d = D(ii, k, 58); - g132 += 0.1111111119389534f * d * f114; - g114 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f115; - g115 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f116; - g116 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f117; - g117 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f118; - g118 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f119; - g119 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f120; - g120 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f121; - g121 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f122; - g122 += 0.1111111119389534f * d * f140; + { const float d = D(ii, k, 31); + g69 += 0.1428571492433548f * d * f62; + g62 += 0.1428571492433548f * d * f69; + g70 += 0.1428571492433548f * d * f63; + g63 += 0.1428571492433548f * d * f70; + g71 += 0.1428571492433548f * d * f64; + g64 += 0.1428571492433548f * d * f71; + g72 += 0.1428571492433548f * d * f65; + g65 += 0.1428571492433548f * d * f72; + g73 += 0.1428571492433548f * d * f66; + g66 += 0.1428571492433548f * d * f73; + g74 += 0.1428571492433548f * d * f67; + g67 += 0.1428571492433548f * d * f74; + g75 += 0.1428571492433548f * d * f68; + g68 += 0.1428571492433548f * d * f75; } - { const float d = D(ii, k, 63); - g123 += 0.1111111119389534f * d * f123; - g123 += 0.1111111119389534f * d * f123; - g124 += 0.1111111119389534f * d * f124; - g124 += 0.1111111119389534f * d * f124; - g125 += 0.1111111119389534f * d * f125; - g125 += 0.1111111119389534f * d * f125; - g126 += 0.1111111119389534f * d * f126; - g126 += 0.1111111119389534f * d * f126; - g127 += 0.1111111119389534f * d * f127; - g127 += 0.1111111119389534f * d * f127; - g128 += 0.1111111119389534f * d * f128; - g128 += 0.1111111119389534f * d * f128; - g129 += 0.1111111119389534f * d * f129; - g129 += 0.1111111119389534f * d * f129; - g130 += 0.1111111119389534f * d * f130; - g130 += 0.1111111119389534f * d * f130; - g131 += 0.1111111119389534f * d * f131; - g131 += 0.1111111119389534f * d * f131; + { const float d = D(ii, k, 35); + g69 += 0.1428571492433548f * d * f69; + g69 += 0.1428571492433548f * d * f69; + g70 += 0.1428571492433548f * d * f70; + g70 += 0.1428571492433548f * d * f70; + g71 += 0.1428571492433548f * d * f71; + g71 += 0.1428571492433548f * d * f71; + g72 += 0.1428571492433548f * d * f72; + g72 += 0.1428571492433548f * d * f72; + g73 += 0.1428571492433548f * d * f73; + g73 += 0.1428571492433548f * d * f73; + g74 += 0.1428571492433548f * d * f74; + g74 += 0.1428571492433548f * d * f74; + g75 += 0.1428571492433548f * d * f75; + g75 += 0.1428571492433548f * d * f75; } - { const float d = D(ii, k, 68); - g132 += 0.1111111119389534f * d * f132; - g132 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f133; - g133 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f134; - g134 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f135; - g135 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f136; - g136 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f137; - g137 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f138; - g138 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f139; - g139 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f140; - g140 += 0.1111111119389534f * d * f140; + if constexpr (ACC) { + dF(ii, k, 48) += g48; + dF(ii, k, 49) += g49; + dF(ii, k, 50) += g50; + dF(ii, k, 51) += g51; + dF(ii, k, 52) += g52; + dF(ii, k, 53) += g53; + dF(ii, k, 54) += g54; + dF(ii, k, 55) += g55; + dF(ii, k, 56) += g56; + dF(ii, k, 57) += g57; + dF(ii, k, 58) += g58; + dF(ii, k, 59) += g59; + dF(ii, k, 60) += g60; + dF(ii, k, 61) += g61; + dF(ii, k, 62) += g62; + dF(ii, k, 63) += g63; + dF(ii, k, 64) += g64; + dF(ii, k, 65) += g65; + dF(ii, k, 66) += g66; + dF(ii, k, 67) += g67; + dF(ii, k, 68) += g68; + dF(ii, k, 69) += g69; + dF(ii, k, 70) += g70; + dF(ii, k, 71) += g71; + dF(ii, k, 72) += g72; + dF(ii, k, 73) += g73; + dF(ii, k, 74) += g74; + dF(ii, k, 75) += g75; + } else { + dF(ii, k, 48) = g48; + dF(ii, k, 49) = g49; + dF(ii, k, 50) = g50; + dF(ii, k, 51) = g51; + dF(ii, k, 52) = g52; + dF(ii, k, 53) = g53; + dF(ii, k, 54) = g54; + dF(ii, k, 55) = g55; + dF(ii, k, 56) = g56; + dF(ii, k, 57) = g57; + dF(ii, k, 58) = g58; + dF(ii, k, 59) = g59; + dF(ii, k, 60) = g60; + dF(ii, k, 61) = g61; + dF(ii, k, 62) = g62; + dF(ii, k, 63) = g63; + dF(ii, k, 64) = g64; + dF(ii, k, 65) = g65; + dF(ii, k, 66) = g66; + dF(ii, k, 67) = g67; + dF(ii, k, 68) = g68; + dF(ii, k, 69) = g69; + dF(ii, k, 70) = g70; + dF(ii, k, 71) = g71; + dF(ii, k, 72) = g72; + dF(ii, k, 73) = g73; + dF(ii, k, 74) = g74; + dF(ii, k, 75) = g75; + } + } + } + +}; + +// self product, 194 terms: GRACE-OFF-1L-small AA, GRACE-OFF-2L-small AA, GRACE-OFF-2L-medium AA, GRACE-OFF-2L-medium +// BB, GRACE-OFF-2L-large BB, grace_1l_l3 AA, grace_2l_l3 AA +struct T194_6878ad63 { + static constexpr int nt = 194, nl = 16; + static constexpr int tab[194][3] = {{0,0,0}, {1,1,1}, {2,2,1}, {3,3,1}, {4,4,2}, {5,5,2}, {6,6,2}, {7,7,2}, {8,8,2}, {9,9,3}, {10,10,3}, {11,11,3}, {12,12,3}, {13,13,3}, {14,14,3}, {15,15,3}, {1,0,4}, {2,0,5}, {3,0,6}, {4,3,7}, {5,2,7}, {6,1,7}, {8,1,7}, {5,1,8}, {6,2,8}, {7,3,8}, {4,1,9}, {6,3,9}, {7,2,9}, {8,3,9}, {9,8,10}, {10,7,10}, {11,6,10}, {11,8,10}, {12,5,10}, {13,4,10}, {14,5,10}, {15,4,10}, {10,4,11}, {11,5,11}, {12,6,11}, {13,7,11}, {14,8,11}, {9,4,12}, {10,5,12}, {11,4,12}, {12,7,12}, {13,6,12}, {13,8,12}, {14,7,12}, {15,8,12}, {3,1,13}, {2,1,14}, {1,1,15}, {2,2,15}, {3,3,15}, {3,2,16}, {1,1,17}, {3,3,17}, {4,0,18}, {5,0,19}, {6,0,20}, {7,0,21}, {8,0,22}, {6,4,23}, {7,5,23}, {7,4,24}, {6,5,24}, {8,5,24}, {4,4,25}, {5,5,25}, {6,6,25}, {7,7,25}, {8,8,25}, {5,4,26}, {7,6,26}, {8,7,26}, {5,5,27}, {8,6,27}, {7,7,27}, {9,3,28}, {10,2,28}, {11,3,28}, {13,1,28}, {15,1,28}, {10,3,29}, {11,2,29}, {12,1,29}, {14,1,29}, {11,1,30}, {12,2,30}, {13,3,30}, {10,1,31}, {12,3,31}, {13,2,31}, {14,3,31}, {9,1,32}, {11,1,32}, {13,3,32}, {14,2,32}, {15,3,32}, {13,9,33}, {12,10,33}, {13,11,33}, {15,11,33}, {14,9,34}, {13,10,34}, {15,10,34}, {12,11,34}, {14,11,34}, {9,9,35}, {11,11,35}, {12,12,35}, {13,13,35}, {15,15,35}, {10,9,36}, {11,10,36}, {13,12,36}, {14,13,36}, {15,14,36}, {11,9,37}, {11,11,37}, {14,12,37}, {13,13,37}, {15,13,37}, {4,3,38}, {8,1,38}, {4,2,39}, {5,3,39}, {7,1,39}, {4,3,40}, {5,2,40}, {6,1,40}, {8,1,40}, {5,1,41}, {6,2,41}, {7,3,41}, {4,1,42}, {6,3,42}, {7,2,42}, {8,3,42}, {5,1,43}, {7,3,43}, {8,2,43}, {4,1,44}, {8,3,44}, {9,0,45}, {10,0,46}, {11,0,47}, {12,0,48}, {13,0,49}, {14,0,50}, {15,0,51}, {9,6,52}, {10,7,52}, {11,8,52}, {13,4,52}, {14,5,52}, {9,7,53}, {11,7,53}, {12,4,53}, {13,5,53}, {15,5,53}, {9,8,54}, {10,7,54}, {11,6,54}, {11,8,54}, {12,5,54}, {13,4,54}, {14,5,54}, {15,4,54}, {10,4,55}, {11,5,55}, {12,6,55}, {13,7,55}, {14,8,55}, {9,4,56}, {10,5,56}, {11,4,56}, {12,7,56}, {13,6,56}, {13,8,56}, {14,7,56}, {15,8,56}, {9,5,57}, {11,5,57}, {12,8,57}, {13,7,57}, {15,7,57}, {10,5,58}, {11,4,58}, {13,8,58}, {14,7,58}, {15,6,58}}; + static constexpr double cg[194] = {1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 1.2909944487358054, 1.2909944487358056, -0.3726779962499649, 0.7453559924999299, -0.3726779962499649, 1.2909944487358056, -0.6454972243679027, 0.6454972243679027, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, -0.8944271909999157, 0.7745966692414832, 0.7745966692414832, 0.44721359549995787, -0.7745966692414832, -0.44721359549995787, 0.22360679774997894, 0.447213595499958, 0.22360679774997894, -0.44721359549995787, 0.7745966692414832, 0.44721359549995787, 0.7745966692414832, -0.3872983346207416, -0.8944271909999157, 0.3872983346207416, 0.44543540318737396, 0.363696483726654, -0.11501092655705904, -0.11501092655705904, -0.44543540318737396, 0.363696483726654, 0.46004370622823615, -0.28171808490950556, -0.363696483726654, 0.3984095364447979, 0.4879500364742666, 0.3984095364447979, 0.363696483726654, -0.28171808490950556, 0.46004370622823615, 0.363696483726654, 0.44543540318737396, 0.11501092655705904, -0.11501092655705904, 0.363696483726654, 0.44543540318737396, -0.3571428571428571, -0.7142857142857142, 0.5532833351724881, 0.3571428571428571, 0.5646924393157818, 0.4374088826398531, -0.5646924393157818, 0.22587697572631277, -0.4374088826398531, -0.39929785312496235, 0.23957871187497742, 0.31943828249996997, 0.23957871187497742, -0.39929785312496235, 0.5646924393157818, 0.4374088826398531, 0.22587697572631277, 0.4374088826398531, 0.5646924393157818, -0.3571428571428571, -0.27664166758624403, -0.7142857142857142, 0.27664166758624403, -0.3571428571428571, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, 0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.557773351022717, 0.6440611887195306, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.24999999999999994, 0.39528470752104733, 0.39528470752104733, 0.30618621784789724, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, -0.24999999999999994, 0.30618621784789724, 0.33541019662496846, -0.3872983346207416, 0.15811388300841894, 0.3872983346207416, -0.30618621784789724, 0.24999999999999994, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.30618621784789724, 0.3872983346207416, 0.15811388300841894, 0.33541019662496846, 0.3872983346207416, 0.30618621784789724, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, -0.4999999999999999, 0.30618621784789724, 0.39528470752104733, -0.39528470752104733, 0.24999999999999994, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a4 = L(ii, k, 4); + const float a5 = L(ii, k, 5); + const float a6 = L(ii, k, 6); + const float a7 = L(ii, k, 7); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a13 = L(ii, k, 13); + const float a14 = L(ii, k, 14); + const float a15 = L(ii, k, 15); + out(ii, k, 0) = 1.0f * a0 * a0; + out(ii, k, 1) = 0.3333333432674408f * a1 * a1 + 0.3333333432674408f * a2 * a2 + 0.3333333432674408f * a3 * a3; + out(ii, k, 2) = 0.20000000298023224f * a4 * a4 + 0.20000000298023224f * a5 * a5 + 0.20000000298023224f * a6 * a6 + 0.20000000298023224f * a7 * a7 + 0.20000000298023224f * a8 * a8; + out(ii, k, 3) = 0.1428571492433548f * a9 * a9 + 0.1428571492433548f * a10 * a10 + 0.1428571492433548f * a11 * a11 + 0.1428571492433548f * a12 * a12 + 0.1428571492433548f * a13 * a13 + 0.1428571492433548f * a14 * a14 + 0.1428571492433548f * a15 * a15; + out(ii, k, 4) = 1.0f * a1 * a0; + out(ii, k, 5) = 1.0f * a2 * a0; + out(ii, k, 6) = 1.0f * a3 * a0; + out(ii, k, 7) = 0.3872983455657959f * a4 * a3 + 0.3872983455657959f * a5 * a2 + -0.22360679507255554f * a6 * a1 + -0.3872983455657959f * a8 * a1; + out(ii, k, 8) = 0.3872983455657959f * a5 * a1 + 0.4472135901451111f * a6 * a2 + 0.3872983455657959f * a7 * a3; + out(ii, k, 9) = 0.3872983455657959f * a4 * a1 + -0.22360679507255554f * a6 * a3 + 0.3872983455657959f * a7 * a2 + 0.3872983455657959f * a8 * a3; + out(ii, k, 10) = 0.26726123690605164f * a9 * a8 + 0.2182178944349289f * a10 * a7 + 0.23904572427272797f * a11 * a6 + 0.0690065547823906f * a11 * a8 + -0.16903084516525269f * a12 * a5 + -0.0690065547823906f * a13 * a4 + -0.2182178944349289f * a14 * a5 + -0.26726123690605164f * a15 * a4; + out(ii, k, 11) = 0.2182178944349289f * a10 * a4 + 0.2760262191295624f * a11 * a5 + 0.29277002811431885f * a12 * a6 + 0.2760262191295624f * a13 * a7 + 0.2182178944349289f * a14 * a8; + out(ii, k, 12) = 0.26726123690605164f * a9 * a4 + 0.2182178944349289f * a10 * a5 + -0.0690065547823906f * a11 * a4 + -0.16903084516525269f * a12 * a7 + 0.23904572427272797f * a13 * a6 + -0.0690065547823906f * a13 * a8 + 0.2182178944349289f * a14 * a7 + 0.26726123690605164f * a15 * a8; + out(ii, k, 13) = 1.29099440574646f * a3 * a1; + out(ii, k, 14) = 1.29099440574646f * a2 * a1; + out(ii, k, 15) = -0.3726779818534851f * a1 * a1 + 0.7453559637069702f * a2 * a2 + -0.3726779818534851f * a3 * a3; + out(ii, k, 16) = 1.29099440574646f * a3 * a2; + out(ii, k, 17) = -0.64549720287323f * a1 * a1 + 0.64549720287323f * a3 * a3; + out(ii, k, 18) = 1.0f * a4 * a0; + out(ii, k, 19) = 1.0f * a5 * a0; + out(ii, k, 20) = 1.0f * a6 * a0; + out(ii, k, 21) = 1.0f * a7 * a0; + out(ii, k, 22) = 1.0f * a8 * a0; + out(ii, k, 23) = -0.8944271802902222f * a6 * a4 + 0.7745966911315918f * a7 * a5; + out(ii, k, 24) = 0.7745966911315918f * a7 * a4 + 0.4472135901451111f * a6 * a5 + -0.7745966911315918f * a8 * a5; + out(ii, k, 25) = -0.4472135901451111f * a4 * a4 + 0.22360679507255554f * a5 * a5 + 0.4472135901451111f * a6 * a6 + 0.22360679507255554f * a7 * a7 + -0.4472135901451111f * a8 * a8; + out(ii, k, 26) = 0.7745966911315918f * a5 * a4 + 0.4472135901451111f * a7 * a6 + 0.7745966911315918f * a8 * a7; + out(ii, k, 27) = -0.3872983455657959f * a5 * a5 + -0.8944271802902222f * a8 * a6 + 0.3872983455657959f * a7 * a7; + out(ii, k, 28) = 0.44543540477752686f * a9 * a3 + 0.36369648575782776f * a10 * a2 + -0.11501092463731766f * a11 * a3 + -0.11501092463731766f * a13 * a1 + -0.44543540477752686f * a15 * a1; + out(ii, k, 29) = 0.36369648575782776f * a10 * a3 + 0.46004369854927063f * a11 * a2 + -0.28171807527542114f * a12 * a1 + -0.36369648575782776f * a14 * a1; + out(ii, k, 30) = 0.39840954542160034f * a11 * a1 + 0.48795002698898315f * a12 * a2 + 0.39840954542160034f * a13 * a3; + out(ii, k, 31) = 0.36369648575782776f * a10 * a1 + -0.28171807527542114f * a12 * a3 + 0.46004369854927063f * a13 * a2 + 0.36369648575782776f * a14 * a3; + out(ii, k, 32) = 0.44543540477752686f * a9 * a1 + 0.11501092463731766f * a11 * a1 + -0.11501092463731766f * a13 * a3 + 0.36369648575782776f * a14 * a2 + 0.44543540477752686f * a15 * a3; + out(ii, k, 33) = -0.3571428656578064f * a13 * a9 + -0.7142857313156128f * a12 * a10 + 0.5532833337783813f * a13 * a11 + 0.3571428656578064f * a15 * a11; + out(ii, k, 34) = 0.5646924376487732f * a14 * a9 + 0.4374088943004608f * a13 * a10 + -0.5646924376487732f * a15 * a10 + 0.22587697207927704f * a12 * a11 + -0.4374088943004608f * a14 * a11; + out(ii, k, 35) = -0.3992978632450104f * a9 * a9 + 0.2395787090063095f * a11 * a11 + 0.31943827867507935f * a12 * a12 + 0.2395787090063095f * a13 * a13 + -0.3992978632450104f * a15 * a15; + out(ii, k, 36) = 0.5646924376487732f * a10 * a9 + 0.4374088943004608f * a11 * a10 + 0.22587697207927704f * a13 * a12 + 0.4374088943004608f * a14 * a13 + 0.5646924376487732f * a15 * a14; + out(ii, k, 37) = -0.3571428656578064f * a11 * a9 + -0.2766416668891907f * a11 * a11 + -0.7142857313156128f * a14 * a12 + 0.2766416668891907f * a13 * a13 + -0.3571428656578064f * a15 * a13; + out(ii, k, 38) = 0.6236095428466797f * a4 * a3 + 0.6236095428466797f * a8 * a1; + out(ii, k, 39) = 0.5091750621795654f * a4 * a2 + 0.5091750621795654f * a5 * a3 + 0.5091750621795654f * a7 * a1; + out(ii, k, 40) = -0.16101530194282532f * a4 * a3 + 0.6440612077713013f * a5 * a2 + 0.5577733516693115f * a6 * a1 + 0.16101530194282532f * a8 * a1; + out(ii, k, 41) = -0.3944053053855896f * a5 * a1 + 0.6831300258636475f * a6 * a2 + -0.3944053053855896f * a7 * a3; + out(ii, k, 42) = -0.16101530194282532f * a4 * a1 + 0.5577733516693115f * a6 * a3 + 0.6440612077713013f * a7 * a2 + -0.16101530194282532f * a8 * a3; + out(ii, k, 43) = -0.5091750621795654f * a5 * a1 + 0.5091750621795654f * a7 * a3 + 0.5091750621795654f * a8 * a2; + out(ii, k, 44) = -0.6236095428466797f * a4 * a1 + 0.6236095428466797f * a8 * a3; + out(ii, k, 45) = 1.0f * a9 * a0; + out(ii, k, 46) = 1.0f * a10 * a0; + out(ii, k, 47) = 1.0f * a11 * a0; + out(ii, k, 48) = 1.0f * a12 * a0; + out(ii, k, 49) = 1.0f * a13 * a0; + out(ii, k, 50) = 1.0f * a14 * a0; + out(ii, k, 51) = 1.0f * a15 * a0; + out(ii, k, 52) = -0.55901700258255f * a9 * a6 + 0.3952847123146057f * a10 * a7 + -0.25f * a11 * a8 + -0.25f * a13 * a4 + 0.3952847123146057f * a14 * a5; + out(ii, k, 53) = 0.3952847123146057f * a9 * a7 + 0.3061862289905548f * a11 * a7 + -0.5f * a12 * a4 + 0.3061862289905548f * a13 * a5 + -0.3952847123146057f * a15 * a5; + out(ii, k, 54) = -0.25f * a9 * a8 + 0.3061862289905548f * a10 * a7 + 0.3354102075099945f * a11 * a6 + -0.3872983455657959f * a11 * a8 + 0.15811388194561005f * a12 * a5 + 0.3872983455657959f * a13 * a4 + -0.3061862289905548f * a14 * a5 + 0.25f * a15 * a4; + out(ii, k, 55) = -0.5f * a10 * a4 + 0.15811388194561005f * a11 * a5 + 0.4472135901451111f * a12 * a6 + 0.15811388194561005f * a13 * a7 + -0.5f * a14 * a8; + out(ii, k, 56) = -0.25f * a9 * a4 + 0.3061862289905548f * a10 * a5 + 0.3872983455657959f * a11 * a4 + 0.15811388194561005f * a12 * a7 + 0.3354102075099945f * a13 * a6 + 0.3872983455657959f * a13 * a8 + 0.3061862289905548f * a14 * a7 + -0.25f * a15 * a8; + out(ii, k, 57) = 0.3952847123146057f * a9 * a5 + -0.3061862289905548f * a11 * a5 + -0.5f * a12 * a8 + 0.3061862289905548f * a13 * a7 + 0.3952847123146057f * a15 * a7; + out(ii, k, 58) = -0.3952847123146057f * a10 * a5 + 0.25f * a11 * a4 + -0.25f * a13 * a8 + 0.3952847123146057f * a14 * a7 + -0.55901700258255f * a15 * a6; + } + + template + KOKKOS_INLINE_FUNCTION static void rev(const V &F, const V &, const V &D, const V &dF, const V &, + const int ii, const int k) + { + const float f0 = F(ii, k, 0); + const float f1 = F(ii, k, 1); + const float f2 = F(ii, k, 2); + const float f3 = F(ii, k, 3); + const float f4 = F(ii, k, 4); + const float f5 = F(ii, k, 5); + const float f6 = F(ii, k, 6); + const float f7 = F(ii, k, 7); + const float f8 = F(ii, k, 8); + const float f9 = F(ii, k, 9); + const float f10 = F(ii, k, 10); + const float f11 = F(ii, k, 11); + const float f12 = F(ii, k, 12); + const float f13 = F(ii, k, 13); + const float f14 = F(ii, k, 14); + const float f15 = F(ii, k, 15); + { + float g0 = 0.0f; + float g1 = 0.0f; + float g2 = 0.0f; + float g3 = 0.0f; + float g4 = 0.0f; + float g5 = 0.0f; + float g6 = 0.0f; + float g7 = 0.0f; + float g8 = 0.0f; + float g9 = 0.0f; + float g10 = 0.0f; + float g11 = 0.0f; + float g12 = 0.0f; + float g13 = 0.0f; + float g14 = 0.0f; + float g15 = 0.0f; + { const float d = D(ii, k, 0); + g0 += 1.0f * d * f0; + g0 += 1.0f * d * f0; } - { const float d = D(ii, k, 189); - g96 += 0.20412415266036987f * d * f58; - g97 += 0.1767766922712326f * d * f57; - g98 += 0.14940357208251953f * d * f56; - g98 += 0.03857583925127983f * d * f58; - g99 += 0.17251639068126678f * d * f55; - g99 += 0.06681530922651291f * d * f57; - g100 += -0.13363061845302582f * d * f54; - g101 += -0.06681530922651291f * d * f53; - g102 += -0.03857583925127983f * d * f52; - g102 += -0.14940357208251953f * d * f54; - g103 += -0.1767766922712326f * d * f53; - g104 += -0.20412415266036987f * d * f52; + { const float d = D(ii, k, 1); + g1 += 0.3333333432674408f * d * f1; + g1 += 0.3333333432674408f * d * f1; + g2 += 0.3333333432674408f * d * f2; + g2 += 0.3333333432674408f * d * f2; + g3 += 0.3333333432674408f * d * f3; + g3 += 0.3333333432674408f * d * f3; } - { const float d = D(ii, k, 190); - g97 += 0.14433756470680237f * d * f52; - g98 += 0.18898223340511322f * d * f53; - g99 += 0.21128855645656586f * d * f54; - g100 += 0.2182178944349289f * d * f55; - g101 += 0.21128855645656586f * d * f56; - g102 += 0.18898223340511322f * d * f57; - g103 += 0.14433756470680237f * d * f58; + { const float d = D(ii, k, 2); + g4 += 0.20000000298023224f * d * f4; + g4 += 0.20000000298023224f * d * f4; + g5 += 0.20000000298023224f * d * f5; + g5 += 0.20000000298023224f * d * f5; + g6 += 0.20000000298023224f * d * f6; + g6 += 0.20000000298023224f * d * f6; + g7 += 0.20000000298023224f * d * f7; + g7 += 0.20000000298023224f * d * f7; + g8 += 0.20000000298023224f * d * f8; + g8 += 0.20000000298023224f * d * f8; } - { const float d = D(ii, k, 191); - g96 += 0.20412415266036987f * d * f52; - g97 += 0.1767766922712326f * d * f53; - g98 += -0.03857583925127983f * d * f52; - g98 += 0.14940357208251953f * d * f54; - g99 += -0.06681530922651291f * d * f53; - g100 += -0.13363061845302582f * d * f56; - g101 += 0.17251639068126678f * d * f55; - g101 += -0.06681530922651291f * d * f57; - g102 += 0.14940357208251953f * d * f56; - g102 += -0.03857583925127983f * d * f58; - g103 += 0.1767766922712326f * d * f57; - g104 += 0.20412415266036987f * d * f58; + { const float d = D(ii, k, 3); + g9 += 0.1428571492433548f * d * f9; + g9 += 0.1428571492433548f * d * f9; + g10 += 0.1428571492433548f * d * f10; + g10 += 0.1428571492433548f * d * f10; + g11 += 0.1428571492433548f * d * f11; + g11 += 0.1428571492433548f * d * f11; + g12 += 0.1428571492433548f * d * f12; + g12 += 0.1428571492433548f * d * f12; + g13 += 0.1428571492433548f * d * f13; + g13 += 0.1428571492433548f * d * f13; + g14 += 0.1428571492433548f * d * f14; + g14 += 0.1428571492433548f * d * f14; + g15 += 0.1428571492433548f * d * f15; + g15 += 0.1428571492433548f * d * f15; } - { const float d = D(ii, k, 192); - g96 += 0.20412415266036987f * d * f65; - g97 += 0.1767766922712326f * d * f64; - g98 += 0.14940357208251953f * d * f63; - g98 += 0.03857583925127983f * d * f65; - g99 += 0.17251639068126678f * d * f62; - g99 += 0.06681530922651291f * d * f64; - g100 += -0.13363061845302582f * d * f61; - g101 += -0.06681530922651291f * d * f60; - g102 += -0.03857583925127983f * d * f59; - g102 += -0.14940357208251953f * d * f61; - g103 += -0.1767766922712326f * d * f60; - g104 += -0.20412415266036987f * d * f59; + { const float d = D(ii, k, 4); + g1 += 1.0f * d * f0; + g0 += 1.0f * d * f1; } - { const float d = D(ii, k, 193); - g97 += 0.14433756470680237f * d * f59; - g98 += 0.18898223340511322f * d * f60; - g99 += 0.21128855645656586f * d * f61; - g100 += 0.2182178944349289f * d * f62; - g101 += 0.21128855645656586f * d * f63; - g102 += 0.18898223340511322f * d * f64; - g103 += 0.14433756470680237f * d * f65; + { const float d = D(ii, k, 5); + g2 += 1.0f * d * f0; + g0 += 1.0f * d * f2; } - { const float d = D(ii, k, 194); - g96 += 0.20412415266036987f * d * f59; - g97 += 0.1767766922712326f * d * f60; - g98 += -0.03857583925127983f * d * f59; - g98 += 0.14940357208251953f * d * f61; - g99 += -0.06681530922651291f * d * f60; - g100 += -0.13363061845302582f * d * f63; - g101 += 0.17251639068126678f * d * f62; - g101 += -0.06681530922651291f * d * f64; - g102 += 0.14940357208251953f * d * f63; - g102 += -0.03857583925127983f * d * f65; - g103 += 0.1767766922712326f * d * f64; - g104 += 0.20412415266036987f * d * f65; + { const float d = D(ii, k, 6); + g3 += 1.0f * d * f0; + g0 += 1.0f * d * f3; } - { const float d = D(ii, k, 195); - g96 += 0.20412415266036987f * d * f72; - g97 += 0.1767766922712326f * d * f71; - g98 += 0.14940357208251953f * d * f70; - g98 += 0.03857583925127983f * d * f72; - g99 += 0.17251639068126678f * d * f69; - g99 += 0.06681530922651291f * d * f71; - g100 += -0.13363061845302582f * d * f68; - g101 += -0.06681530922651291f * d * f67; - g102 += -0.03857583925127983f * d * f66; - g102 += -0.14940357208251953f * d * f68; - g103 += -0.1767766922712326f * d * f67; - g104 += -0.20412415266036987f * d * f66; + { const float d = D(ii, k, 7); + g4 += 0.3872983455657959f * d * f3; + g3 += 0.3872983455657959f * d * f4; + g5 += 0.3872983455657959f * d * f2; + g2 += 0.3872983455657959f * d * f5; + g6 += -0.22360679507255554f * d * f1; + g1 += -0.22360679507255554f * d * f6; + g8 += -0.3872983455657959f * d * f1; + g1 += -0.3872983455657959f * d * f8; } - { const float d = D(ii, k, 196); - g97 += 0.14433756470680237f * d * f66; - g98 += 0.18898223340511322f * d * f67; - g99 += 0.21128855645656586f * d * f68; - g100 += 0.2182178944349289f * d * f69; - g101 += 0.21128855645656586f * d * f70; - g102 += 0.18898223340511322f * d * f71; - g103 += 0.14433756470680237f * d * f72; + { const float d = D(ii, k, 8); + g5 += 0.3872983455657959f * d * f1; + g1 += 0.3872983455657959f * d * f5; + g6 += 0.4472135901451111f * d * f2; + g2 += 0.4472135901451111f * d * f6; + g7 += 0.3872983455657959f * d * f3; + g3 += 0.3872983455657959f * d * f7; } - { const float d = D(ii, k, 197); - g96 += 0.20412415266036987f * d * f66; - g97 += 0.1767766922712326f * d * f67; - g98 += -0.03857583925127983f * d * f66; - g98 += 0.14940357208251953f * d * f68; - g99 += -0.06681530922651291f * d * f67; - g100 += -0.13363061845302582f * d * f70; - g101 += 0.17251639068126678f * d * f69; - g101 += -0.06681530922651291f * d * f71; - g102 += 0.14940357208251953f * d * f70; - g102 += -0.03857583925127983f * d * f72; - g103 += 0.1767766922712326f * d * f71; - g104 += 0.20412415266036987f * d * f72; + { const float d = D(ii, k, 9); + g4 += 0.3872983455657959f * d * f1; + g1 += 0.3872983455657959f * d * f4; + g6 += -0.22360679507255554f * d * f3; + g3 += -0.22360679507255554f * d * f6; + g7 += 0.3872983455657959f * d * f2; + g2 += 0.3872983455657959f * d * f7; + g8 += 0.3872983455657959f * d * f3; + g3 += 0.3872983455657959f * d * f8; } - { const float d = D(ii, k, 198); - g96 += 0.20412415266036987f * d * f79; - g97 += 0.1767766922712326f * d * f78; - g98 += 0.14940357208251953f * d * f77; - g98 += 0.03857583925127983f * d * f79; - g99 += 0.17251639068126678f * d * f76; - g99 += 0.06681530922651291f * d * f78; - g100 += -0.13363061845302582f * d * f75; - g101 += -0.06681530922651291f * d * f74; - g102 += -0.03857583925127983f * d * f73; - g102 += -0.14940357208251953f * d * f75; - g103 += -0.1767766922712326f * d * f74; - g104 += -0.20412415266036987f * d * f73; + { const float d = D(ii, k, 10); + g9 += 0.26726123690605164f * d * f8; + g8 += 0.26726123690605164f * d * f9; + g10 += 0.2182178944349289f * d * f7; + g7 += 0.2182178944349289f * d * f10; + g11 += 0.23904572427272797f * d * f6; + g6 += 0.23904572427272797f * d * f11; + g11 += 0.0690065547823906f * d * f8; + g8 += 0.0690065547823906f * d * f11; + g12 += -0.16903084516525269f * d * f5; + g5 += -0.16903084516525269f * d * f12; + g13 += -0.0690065547823906f * d * f4; + g4 += -0.0690065547823906f * d * f13; + g14 += -0.2182178944349289f * d * f5; + g5 += -0.2182178944349289f * d * f14; + g15 += -0.26726123690605164f * d * f4; + g4 += -0.26726123690605164f * d * f15; } - { const float d = D(ii, k, 199); - g97 += 0.14433756470680237f * d * f73; - g98 += 0.18898223340511322f * d * f74; - g99 += 0.21128855645656586f * d * f75; - g100 += 0.2182178944349289f * d * f76; - g101 += 0.21128855645656586f * d * f77; - g102 += 0.18898223340511322f * d * f78; - g103 += 0.14433756470680237f * d * f79; + { const float d = D(ii, k, 11); + g10 += 0.2182178944349289f * d * f4; + g4 += 0.2182178944349289f * d * f10; + g11 += 0.2760262191295624f * d * f5; + g5 += 0.2760262191295624f * d * f11; + g12 += 0.29277002811431885f * d * f6; + g6 += 0.29277002811431885f * d * f12; + g13 += 0.2760262191295624f * d * f7; + g7 += 0.2760262191295624f * d * f13; + g14 += 0.2182178944349289f * d * f8; + g8 += 0.2182178944349289f * d * f14; } - { const float d = D(ii, k, 200); - g96 += 0.20412415266036987f * d * f73; - g97 += 0.1767766922712326f * d * f74; - g98 += -0.03857583925127983f * d * f73; - g98 += 0.14940357208251953f * d * f75; - g99 += -0.06681530922651291f * d * f74; - g100 += -0.13363061845302582f * d * f77; - g101 += 0.17251639068126678f * d * f76; - g101 += -0.06681530922651291f * d * f78; - g102 += 0.14940357208251953f * d * f77; - g102 += -0.03857583925127983f * d * f79; - g103 += 0.1767766922712326f * d * f78; - g104 += 0.20412415266036987f * d * f79; + { const float d = D(ii, k, 12); + g9 += 0.26726123690605164f * d * f4; + g4 += 0.26726123690605164f * d * f9; + g10 += 0.2182178944349289f * d * f5; + g5 += 0.2182178944349289f * d * f10; + g11 += -0.0690065547823906f * d * f4; + g4 += -0.0690065547823906f * d * f11; + g12 += -0.16903084516525269f * d * f7; + g7 += -0.16903084516525269f * d * f12; + g13 += 0.23904572427272797f * d * f6; + g6 += 0.23904572427272797f * d * f13; + g13 += -0.0690065547823906f * d * f8; + g8 += -0.0690065547823906f * d * f13; + g14 += 0.2182178944349289f * d * f7; + g7 += 0.2182178944349289f * d * f14; + g15 += 0.26726123690605164f * d * f8; + g8 += 0.26726123690605164f * d * f15; } - { const float d = D(ii, k, 201); - g96 += 0.20412415266036987f * d * f86; - g97 += 0.1767766922712326f * d * f85; - g98 += 0.14940357208251953f * d * f84; - g98 += 0.03857583925127983f * d * f86; - g99 += 0.17251639068126678f * d * f83; - g99 += 0.06681530922651291f * d * f85; - g100 += -0.13363061845302582f * d * f82; - g101 += -0.06681530922651291f * d * f81; - g102 += -0.03857583925127983f * d * f80; - g102 += -0.14940357208251953f * d * f82; - g103 += -0.1767766922712326f * d * f81; - g104 += -0.20412415266036987f * d * f80; + { const float d = D(ii, k, 13); + g3 += 1.29099440574646f * d * f1; + g1 += 1.29099440574646f * d * f3; } - { const float d = D(ii, k, 202); - g97 += 0.14433756470680237f * d * f80; - g98 += 0.18898223340511322f * d * f81; - g99 += 0.21128855645656586f * d * f82; - g100 += 0.2182178944349289f * d * f83; - g101 += 0.21128855645656586f * d * f84; - g102 += 0.18898223340511322f * d * f85; - g103 += 0.14433756470680237f * d * f86; + { const float d = D(ii, k, 14); + g2 += 1.29099440574646f * d * f1; + g1 += 1.29099440574646f * d * f2; } - { const float d = D(ii, k, 203); - g96 += 0.20412415266036987f * d * f80; - g97 += 0.1767766922712326f * d * f81; - g98 += -0.03857583925127983f * d * f80; - g98 += 0.14940357208251953f * d * f82; - g99 += -0.06681530922651291f * d * f81; - g100 += -0.13363061845302582f * d * f84; - g101 += 0.17251639068126678f * d * f83; - g101 += -0.06681530922651291f * d * f85; - g102 += 0.14940357208251953f * d * f84; - g102 += -0.03857583925127983f * d * f86; - g103 += 0.1767766922712326f * d * f85; - g104 += 0.20412415266036987f * d * f86; + { const float d = D(ii, k, 15); + g1 += -0.3726779818534851f * d * f1; + g1 += -0.3726779818534851f * d * f1; + g2 += 0.7453559637069702f * d * f2; + g2 += 0.7453559637069702f * d * f2; + g3 += -0.3726779818534851f * d * f3; + g3 += -0.3726779818534851f * d * f3; } - { const float d = D(ii, k, 249); - g105 += 0.20412415266036987f * d * f58; - g106 += 0.1767766922712326f * d * f57; - g107 += 0.14940357208251953f * d * f56; - g107 += 0.03857583925127983f * d * f58; - g108 += 0.17251639068126678f * d * f55; - g108 += 0.06681530922651291f * d * f57; - g109 += -0.13363061845302582f * d * f54; - g110 += -0.06681530922651291f * d * f53; - g111 += -0.03857583925127983f * d * f52; - g111 += -0.14940357208251953f * d * f54; - g112 += -0.1767766922712326f * d * f53; - g113 += -0.20412415266036987f * d * f52; + { const float d = D(ii, k, 16); + g3 += 1.29099440574646f * d * f2; + g2 += 1.29099440574646f * d * f3; } - { const float d = D(ii, k, 250); - g106 += 0.14433756470680237f * d * f52; - g107 += 0.18898223340511322f * d * f53; - g108 += 0.21128855645656586f * d * f54; - g109 += 0.2182178944349289f * d * f55; - g110 += 0.21128855645656586f * d * f56; - g111 += 0.18898223340511322f * d * f57; - g112 += 0.14433756470680237f * d * f58; + { const float d = D(ii, k, 17); + g1 += -0.64549720287323f * d * f1; + g1 += -0.64549720287323f * d * f1; + g3 += 0.64549720287323f * d * f3; + g3 += 0.64549720287323f * d * f3; } - { const float d = D(ii, k, 251); - g105 += 0.20412415266036987f * d * f52; - g106 += 0.1767766922712326f * d * f53; - g107 += -0.03857583925127983f * d * f52; - g107 += 0.14940357208251953f * d * f54; - g108 += -0.06681530922651291f * d * f53; - g109 += -0.13363061845302582f * d * f56; - g110 += 0.17251639068126678f * d * f55; - g110 += -0.06681530922651291f * d * f57; - g111 += 0.14940357208251953f * d * f56; - g111 += -0.03857583925127983f * d * f58; - g112 += 0.1767766922712326f * d * f57; - g113 += 0.20412415266036987f * d * f58; + { const float d = D(ii, k, 18); + g4 += 1.0f * d * f0; + g0 += 1.0f * d * f4; } - { const float d = D(ii, k, 252); - g105 += 0.20412415266036987f * d * f72; - g106 += 0.1767766922712326f * d * f71; - g107 += 0.14940357208251953f * d * f70; - g107 += 0.03857583925127983f * d * f72; - g108 += 0.17251639068126678f * d * f69; - g108 += 0.06681530922651291f * d * f71; - g109 += -0.13363061845302582f * d * f68; - g110 += -0.06681530922651291f * d * f67; - g111 += -0.03857583925127983f * d * f66; - g111 += -0.14940357208251953f * d * f68; - g112 += -0.1767766922712326f * d * f67; - g113 += -0.20412415266036987f * d * f66; + { const float d = D(ii, k, 19); + g5 += 1.0f * d * f0; + g0 += 1.0f * d * f5; } - { const float d = D(ii, k, 253); - g106 += 0.14433756470680237f * d * f66; - g107 += 0.18898223340511322f * d * f67; - g108 += 0.21128855645656586f * d * f68; - g109 += 0.2182178944349289f * d * f69; - g110 += 0.21128855645656586f * d * f70; - g111 += 0.18898223340511322f * d * f71; - g112 += 0.14433756470680237f * d * f72; + { const float d = D(ii, k, 20); + g6 += 1.0f * d * f0; + g0 += 1.0f * d * f6; } - { const float d = D(ii, k, 254); - g105 += 0.20412415266036987f * d * f66; - g106 += 0.1767766922712326f * d * f67; - g107 += -0.03857583925127983f * d * f66; - g107 += 0.14940357208251953f * d * f68; - g108 += -0.06681530922651291f * d * f67; - g109 += -0.13363061845302582f * d * f70; - g110 += 0.17251639068126678f * d * f69; - g110 += -0.06681530922651291f * d * f71; - g111 += 0.14940357208251953f * d * f70; - g111 += -0.03857583925127983f * d * f72; - g112 += 0.1767766922712326f * d * f71; - g113 += 0.20412415266036987f * d * f72; + { const float d = D(ii, k, 21); + g7 += 1.0f * d * f0; + g0 += 1.0f * d * f7; } - { const float d = D(ii, k, 255); - g105 += 0.20412415266036987f * d * f79; - g106 += 0.1767766922712326f * d * f78; - g107 += 0.14940357208251953f * d * f77; - g107 += 0.03857583925127983f * d * f79; - g108 += 0.17251639068126678f * d * f76; - g108 += 0.06681530922651291f * d * f78; - g109 += -0.13363061845302582f * d * f75; - g110 += -0.06681530922651291f * d * f74; - g111 += -0.03857583925127983f * d * f73; - g111 += -0.14940357208251953f * d * f75; - g112 += -0.1767766922712326f * d * f74; - g113 += -0.20412415266036987f * d * f73; + { const float d = D(ii, k, 22); + g8 += 1.0f * d * f0; + g0 += 1.0f * d * f8; } - { const float d = D(ii, k, 256); - g106 += 0.14433756470680237f * d * f73; - g107 += 0.18898223340511322f * d * f74; - g108 += 0.21128855645656586f * d * f75; - g109 += 0.2182178944349289f * d * f76; - g110 += 0.21128855645656586f * d * f77; - g111 += 0.18898223340511322f * d * f78; - g112 += 0.14433756470680237f * d * f79; + { const float d = D(ii, k, 23); + g6 += -0.8944271802902222f * d * f4; + g4 += -0.8944271802902222f * d * f6; + g7 += 0.7745966911315918f * d * f5; + g5 += 0.7745966911315918f * d * f7; } - { const float d = D(ii, k, 257); - g105 += 0.20412415266036987f * d * f73; - g106 += 0.1767766922712326f * d * f74; - g107 += -0.03857583925127983f * d * f73; - g107 += 0.14940357208251953f * d * f75; - g108 += -0.06681530922651291f * d * f74; - g109 += -0.13363061845302582f * d * f77; - g110 += 0.17251639068126678f * d * f76; - g110 += -0.06681530922651291f * d * f78; - g111 += 0.14940357208251953f * d * f77; - g111 += -0.03857583925127983f * d * f79; - g112 += 0.1767766922712326f * d * f78; - g113 += 0.20412415266036987f * d * f79; + { const float d = D(ii, k, 24); + g7 += 0.7745966911315918f * d * f4; + g4 += 0.7745966911315918f * d * f7; + g6 += 0.4472135901451111f * d * f5; + g5 += 0.4472135901451111f * d * f6; + g8 += -0.7745966911315918f * d * f5; + g5 += -0.7745966911315918f * d * f8; } - { const float d = D(ii, k, 258); - g105 += 0.20412415266036987f * d * f86; - g106 += 0.1767766922712326f * d * f85; - g107 += 0.14940357208251953f * d * f84; - g107 += 0.03857583925127983f * d * f86; - g108 += 0.17251639068126678f * d * f83; - g108 += 0.06681530922651291f * d * f85; - g109 += -0.13363061845302582f * d * f82; - g110 += -0.06681530922651291f * d * f81; - g111 += -0.03857583925127983f * d * f80; - g111 += -0.14940357208251953f * d * f82; - g112 += -0.1767766922712326f * d * f81; - g113 += -0.20412415266036987f * d * f80; + { const float d = D(ii, k, 25); + g4 += -0.4472135901451111f * d * f4; + g4 += -0.4472135901451111f * d * f4; + g5 += 0.22360679507255554f * d * f5; + g5 += 0.22360679507255554f * d * f5; + g6 += 0.4472135901451111f * d * f6; + g6 += 0.4472135901451111f * d * f6; + g7 += 0.22360679507255554f * d * f7; + g7 += 0.22360679507255554f * d * f7; + g8 += -0.4472135901451111f * d * f8; + g8 += -0.4472135901451111f * d * f8; } - { const float d = D(ii, k, 259); - g106 += 0.14433756470680237f * d * f80; - g107 += 0.18898223340511322f * d * f81; - g108 += 0.21128855645656586f * d * f82; - g109 += 0.2182178944349289f * d * f83; - g110 += 0.21128855645656586f * d * f84; - g111 += 0.18898223340511322f * d * f85; - g112 += 0.14433756470680237f * d * f86; + { const float d = D(ii, k, 26); + g5 += 0.7745966911315918f * d * f4; + g4 += 0.7745966911315918f * d * f5; + g7 += 0.4472135901451111f * d * f6; + g6 += 0.4472135901451111f * d * f7; + g8 += 0.7745966911315918f * d * f7; + g7 += 0.7745966911315918f * d * f8; } - { const float d = D(ii, k, 260); - g105 += 0.20412415266036987f * d * f80; - g106 += 0.1767766922712326f * d * f81; - g107 += -0.03857583925127983f * d * f80; - g107 += 0.14940357208251953f * d * f82; - g108 += -0.06681530922651291f * d * f81; - g109 += -0.13363061845302582f * d * f84; - g110 += 0.17251639068126678f * d * f83; - g110 += -0.06681530922651291f * d * f85; - g111 += 0.14940357208251953f * d * f84; - g111 += -0.03857583925127983f * d * f86; - g112 += 0.1767766922712326f * d * f85; - g113 += 0.20412415266036987f * d * f86; + { const float d = D(ii, k, 27); + g5 += -0.3872983455657959f * d * f5; + g5 += -0.3872983455657959f * d * f5; + g8 += -0.8944271802902222f * d * f6; + g6 += -0.8944271802902222f * d * f8; + g7 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f7; + } + { const float d = D(ii, k, 28); + g9 += 0.44543540477752686f * d * f3; + g3 += 0.44543540477752686f * d * f9; + g10 += 0.36369648575782776f * d * f2; + g2 += 0.36369648575782776f * d * f10; + g11 += -0.11501092463731766f * d * f3; + g3 += -0.11501092463731766f * d * f11; + g13 += -0.11501092463731766f * d * f1; + g1 += -0.11501092463731766f * d * f13; + g15 += -0.44543540477752686f * d * f1; + g1 += -0.44543540477752686f * d * f15; } - { const float d = D(ii, k, 261); - g114 += 0.20412415266036987f * d * f72; - g115 += 0.1767766922712326f * d * f71; - g116 += 0.14940357208251953f * d * f70; - g116 += 0.03857583925127983f * d * f72; - g117 += 0.17251639068126678f * d * f69; - g117 += 0.06681530922651291f * d * f71; - g118 += -0.13363061845302582f * d * f68; - g119 += -0.06681530922651291f * d * f67; - g120 += -0.03857583925127983f * d * f66; - g120 += -0.14940357208251953f * d * f68; - g121 += -0.1767766922712326f * d * f67; - g122 += -0.20412415266036987f * d * f66; + { const float d = D(ii, k, 29); + g10 += 0.36369648575782776f * d * f3; + g3 += 0.36369648575782776f * d * f10; + g11 += 0.46004369854927063f * d * f2; + g2 += 0.46004369854927063f * d * f11; + g12 += -0.28171807527542114f * d * f1; + g1 += -0.28171807527542114f * d * f12; + g14 += -0.36369648575782776f * d * f1; + g1 += -0.36369648575782776f * d * f14; } - { const float d = D(ii, k, 262); - g115 += 0.14433756470680237f * d * f66; - g116 += 0.18898223340511322f * d * f67; - g117 += 0.21128855645656586f * d * f68; - g118 += 0.2182178944349289f * d * f69; - g119 += 0.21128855645656586f * d * f70; - g120 += 0.18898223340511322f * d * f71; - g121 += 0.14433756470680237f * d * f72; + { const float d = D(ii, k, 30); + g11 += 0.39840954542160034f * d * f1; + g1 += 0.39840954542160034f * d * f11; + g12 += 0.48795002698898315f * d * f2; + g2 += 0.48795002698898315f * d * f12; + g13 += 0.39840954542160034f * d * f3; + g3 += 0.39840954542160034f * d * f13; } - { const float d = D(ii, k, 263); - g114 += 0.20412415266036987f * d * f66; - g115 += 0.1767766922712326f * d * f67; - g116 += -0.03857583925127983f * d * f66; - g116 += 0.14940357208251953f * d * f68; - g117 += -0.06681530922651291f * d * f67; - g118 += -0.13363061845302582f * d * f70; - g119 += 0.17251639068126678f * d * f69; - g119 += -0.06681530922651291f * d * f71; - g120 += 0.14940357208251953f * d * f70; - g120 += -0.03857583925127983f * d * f72; - g121 += 0.1767766922712326f * d * f71; - g122 += 0.20412415266036987f * d * f72; + { const float d = D(ii, k, 31); + g10 += 0.36369648575782776f * d * f1; + g1 += 0.36369648575782776f * d * f10; + g12 += -0.28171807527542114f * d * f3; + g3 += -0.28171807527542114f * d * f12; + g13 += 0.46004369854927063f * d * f2; + g2 += 0.46004369854927063f * d * f13; + g14 += 0.36369648575782776f * d * f3; + g3 += 0.36369648575782776f * d * f14; } - { const float d = D(ii, k, 264); - g114 += 0.20412415266036987f * d * f79; - g115 += 0.1767766922712326f * d * f78; - g116 += 0.14940357208251953f * d * f77; - g116 += 0.03857583925127983f * d * f79; - g117 += 0.17251639068126678f * d * f76; - g117 += 0.06681530922651291f * d * f78; - g118 += -0.13363061845302582f * d * f75; - g119 += -0.06681530922651291f * d * f74; - g120 += -0.03857583925127983f * d * f73; - g120 += -0.14940357208251953f * d * f75; - g121 += -0.1767766922712326f * d * f74; - g122 += -0.20412415266036987f * d * f73; + { const float d = D(ii, k, 32); + g9 += 0.44543540477752686f * d * f1; + g1 += 0.44543540477752686f * d * f9; + g11 += 0.11501092463731766f * d * f1; + g1 += 0.11501092463731766f * d * f11; + g13 += -0.11501092463731766f * d * f3; + g3 += -0.11501092463731766f * d * f13; + g14 += 0.36369648575782776f * d * f2; + g2 += 0.36369648575782776f * d * f14; + g15 += 0.44543540477752686f * d * f3; + g3 += 0.44543540477752686f * d * f15; } - { const float d = D(ii, k, 265); - g115 += 0.14433756470680237f * d * f73; - g116 += 0.18898223340511322f * d * f74; - g117 += 0.21128855645656586f * d * f75; - g118 += 0.2182178944349289f * d * f76; - g119 += 0.21128855645656586f * d * f77; - g120 += 0.18898223340511322f * d * f78; - g121 += 0.14433756470680237f * d * f79; + { const float d = D(ii, k, 33); + g13 += -0.3571428656578064f * d * f9; + g9 += -0.3571428656578064f * d * f13; + g12 += -0.7142857313156128f * d * f10; + g10 += -0.7142857313156128f * d * f12; + g13 += 0.5532833337783813f * d * f11; + g11 += 0.5532833337783813f * d * f13; + g15 += 0.3571428656578064f * d * f11; + g11 += 0.3571428656578064f * d * f15; } - { const float d = D(ii, k, 266); - g114 += 0.20412415266036987f * d * f73; - g115 += 0.1767766922712326f * d * f74; - g116 += -0.03857583925127983f * d * f73; - g116 += 0.14940357208251953f * d * f75; - g117 += -0.06681530922651291f * d * f74; - g118 += -0.13363061845302582f * d * f77; - g119 += 0.17251639068126678f * d * f76; - g119 += -0.06681530922651291f * d * f78; - g120 += 0.14940357208251953f * d * f77; - g120 += -0.03857583925127983f * d * f79; - g121 += 0.1767766922712326f * d * f78; - g122 += 0.20412415266036987f * d * f79; + { const float d = D(ii, k, 34); + g14 += 0.5646924376487732f * d * f9; + g9 += 0.5646924376487732f * d * f14; + g13 += 0.4374088943004608f * d * f10; + g10 += 0.4374088943004608f * d * f13; + g15 += -0.5646924376487732f * d * f10; + g10 += -0.5646924376487732f * d * f15; + g12 += 0.22587697207927704f * d * f11; + g11 += 0.22587697207927704f * d * f12; + g14 += -0.4374088943004608f * d * f11; + g11 += -0.4374088943004608f * d * f14; } - { const float d = D(ii, k, 267); - g114 += 0.20412415266036987f * d * f86; - g115 += 0.1767766922712326f * d * f85; - g116 += 0.14940357208251953f * d * f84; - g116 += 0.03857583925127983f * d * f86; - g117 += 0.17251639068126678f * d * f83; - g117 += 0.06681530922651291f * d * f85; - g118 += -0.13363061845302582f * d * f82; - g119 += -0.06681530922651291f * d * f81; - g120 += -0.03857583925127983f * d * f80; - g120 += -0.14940357208251953f * d * f82; - g121 += -0.1767766922712326f * d * f81; - g122 += -0.20412415266036987f * d * f80; + { const float d = D(ii, k, 35); + g9 += -0.3992978632450104f * d * f9; + g9 += -0.3992978632450104f * d * f9; + g11 += 0.2395787090063095f * d * f11; + g11 += 0.2395787090063095f * d * f11; + g12 += 0.31943827867507935f * d * f12; + g12 += 0.31943827867507935f * d * f12; + g13 += 0.2395787090063095f * d * f13; + g13 += 0.2395787090063095f * d * f13; + g15 += -0.3992978632450104f * d * f15; + g15 += -0.3992978632450104f * d * f15; } - { const float d = D(ii, k, 268); - g115 += 0.14433756470680237f * d * f80; - g116 += 0.18898223340511322f * d * f81; - g117 += 0.21128855645656586f * d * f82; - g118 += 0.2182178944349289f * d * f83; - g119 += 0.21128855645656586f * d * f84; - g120 += 0.18898223340511322f * d * f85; - g121 += 0.14433756470680237f * d * f86; + { const float d = D(ii, k, 36); + g10 += 0.5646924376487732f * d * f9; + g9 += 0.5646924376487732f * d * f10; + g11 += 0.4374088943004608f * d * f10; + g10 += 0.4374088943004608f * d * f11; + g13 += 0.22587697207927704f * d * f12; + g12 += 0.22587697207927704f * d * f13; + g14 += 0.4374088943004608f * d * f13; + g13 += 0.4374088943004608f * d * f14; + g15 += 0.5646924376487732f * d * f14; + g14 += 0.5646924376487732f * d * f15; } - { const float d = D(ii, k, 269); - g114 += 0.20412415266036987f * d * f80; - g115 += 0.1767766922712326f * d * f81; - g116 += -0.03857583925127983f * d * f80; - g116 += 0.14940357208251953f * d * f82; - g117 += -0.06681530922651291f * d * f81; - g118 += -0.13363061845302582f * d * f84; - g119 += 0.17251639068126678f * d * f83; - g119 += -0.06681530922651291f * d * f85; - g120 += 0.14940357208251953f * d * f84; - g120 += -0.03857583925127983f * d * f86; - g121 += 0.1767766922712326f * d * f85; - g122 += 0.20412415266036987f * d * f86; + { const float d = D(ii, k, 37); + g11 += -0.3571428656578064f * d * f9; + g9 += -0.3571428656578064f * d * f11; + g11 += -0.2766416668891907f * d * f11; + g11 += -0.2766416668891907f * d * f11; + g14 += -0.7142857313156128f * d * f12; + g12 += -0.7142857313156128f * d * f14; + g13 += 0.2766416668891907f * d * f13; + g13 += 0.2766416668891907f * d * f13; + g15 += -0.3571428656578064f * d * f13; + g13 += -0.3571428656578064f * d * f15; } - { const float d = D(ii, k, 300); - g123 += 0.20412415266036987f * d * f58; - g124 += 0.1767766922712326f * d * f57; - g125 += 0.14940357208251953f * d * f56; - g125 += 0.03857583925127983f * d * f58; - g126 += 0.17251639068126678f * d * f55; - g126 += 0.06681530922651291f * d * f57; - g127 += -0.13363061845302582f * d * f54; - g128 += -0.06681530922651291f * d * f53; - g129 += -0.03857583925127983f * d * f52; - g129 += -0.14940357208251953f * d * f54; - g130 += -0.1767766922712326f * d * f53; - g131 += -0.20412415266036987f * d * f52; + { const float d = D(ii, k, 38); + g4 += 0.6236095428466797f * d * f3; + g3 += 0.6236095428466797f * d * f4; + g8 += 0.6236095428466797f * d * f1; + g1 += 0.6236095428466797f * d * f8; } - { const float d = D(ii, k, 301); - g124 += 0.14433756470680237f * d * f52; - g125 += 0.18898223340511322f * d * f53; - g126 += 0.21128855645656586f * d * f54; - g127 += 0.2182178944349289f * d * f55; - g128 += 0.21128855645656586f * d * f56; - g129 += 0.18898223340511322f * d * f57; - g130 += 0.14433756470680237f * d * f58; + { const float d = D(ii, k, 39); + g4 += 0.5091750621795654f * d * f2; + g2 += 0.5091750621795654f * d * f4; + g5 += 0.5091750621795654f * d * f3; + g3 += 0.5091750621795654f * d * f5; + g7 += 0.5091750621795654f * d * f1; + g1 += 0.5091750621795654f * d * f7; } - { const float d = D(ii, k, 302); - g123 += 0.20412415266036987f * d * f52; - g124 += 0.1767766922712326f * d * f53; - g125 += -0.03857583925127983f * d * f52; - g125 += 0.14940357208251953f * d * f54; - g126 += -0.06681530922651291f * d * f53; - g127 += -0.13363061845302582f * d * f56; - g128 += 0.17251639068126678f * d * f55; - g128 += -0.06681530922651291f * d * f57; - g129 += 0.14940357208251953f * d * f56; - g129 += -0.03857583925127983f * d * f58; - g130 += 0.1767766922712326f * d * f57; - g131 += 0.20412415266036987f * d * f58; + { const float d = D(ii, k, 40); + g4 += -0.16101530194282532f * d * f3; + g3 += -0.16101530194282532f * d * f4; + g5 += 0.6440612077713013f * d * f2; + g2 += 0.6440612077713013f * d * f5; + g6 += 0.5577733516693115f * d * f1; + g1 += 0.5577733516693115f * d * f6; + g8 += 0.16101530194282532f * d * f1; + g1 += 0.16101530194282532f * d * f8; + } + { const float d = D(ii, k, 41); + g5 += -0.3944053053855896f * d * f1; + g1 += -0.3944053053855896f * d * f5; + g6 += 0.6831300258636475f * d * f2; + g2 += 0.6831300258636475f * d * f6; + g7 += -0.3944053053855896f * d * f3; + g3 += -0.3944053053855896f * d * f7; } - { const float d = D(ii, k, 303); - g123 += 0.20412415266036987f * d * f65; - g124 += 0.1767766922712326f * d * f64; - g125 += 0.14940357208251953f * d * f63; - g125 += 0.03857583925127983f * d * f65; - g126 += 0.17251639068126678f * d * f62; - g126 += 0.06681530922651291f * d * f64; - g127 += -0.13363061845302582f * d * f61; - g128 += -0.06681530922651291f * d * f60; - g129 += -0.03857583925127983f * d * f59; - g129 += -0.14940357208251953f * d * f61; - g130 += -0.1767766922712326f * d * f60; - g131 += -0.20412415266036987f * d * f59; + { const float d = D(ii, k, 42); + g4 += -0.16101530194282532f * d * f1; + g1 += -0.16101530194282532f * d * f4; + g6 += 0.5577733516693115f * d * f3; + g3 += 0.5577733516693115f * d * f6; + g7 += 0.6440612077713013f * d * f2; + g2 += 0.6440612077713013f * d * f7; + g8 += -0.16101530194282532f * d * f3; + g3 += -0.16101530194282532f * d * f8; } - { const float d = D(ii, k, 304); - g124 += 0.14433756470680237f * d * f59; - g125 += 0.18898223340511322f * d * f60; - g126 += 0.21128855645656586f * d * f61; - g127 += 0.2182178944349289f * d * f62; - g128 += 0.21128855645656586f * d * f63; - g129 += 0.18898223340511322f * d * f64; - g130 += 0.14433756470680237f * d * f65; + { const float d = D(ii, k, 43); + g5 += -0.5091750621795654f * d * f1; + g1 += -0.5091750621795654f * d * f5; + g7 += 0.5091750621795654f * d * f3; + g3 += 0.5091750621795654f * d * f7; + g8 += 0.5091750621795654f * d * f2; + g2 += 0.5091750621795654f * d * f8; } - { const float d = D(ii, k, 305); - g123 += 0.20412415266036987f * d * f59; - g124 += 0.1767766922712326f * d * f60; - g125 += -0.03857583925127983f * d * f59; - g125 += 0.14940357208251953f * d * f61; - g126 += -0.06681530922651291f * d * f60; - g127 += -0.13363061845302582f * d * f63; - g128 += 0.17251639068126678f * d * f62; - g128 += -0.06681530922651291f * d * f64; - g129 += 0.14940357208251953f * d * f63; - g129 += -0.03857583925127983f * d * f65; - g130 += 0.1767766922712326f * d * f64; - g131 += 0.20412415266036987f * d * f65; + { const float d = D(ii, k, 44); + g4 += -0.6236095428466797f * d * f1; + g1 += -0.6236095428466797f * d * f4; + g8 += 0.6236095428466797f * d * f3; + g3 += 0.6236095428466797f * d * f8; } - { const float d = D(ii, k, 306); - g123 += 0.20412415266036987f * d * f72; - g124 += 0.1767766922712326f * d * f71; - g125 += 0.14940357208251953f * d * f70; - g125 += 0.03857583925127983f * d * f72; - g126 += 0.17251639068126678f * d * f69; - g126 += 0.06681530922651291f * d * f71; - g127 += -0.13363061845302582f * d * f68; - g128 += -0.06681530922651291f * d * f67; - g129 += -0.03857583925127983f * d * f66; - g129 += -0.14940357208251953f * d * f68; - g130 += -0.1767766922712326f * d * f67; - g131 += -0.20412415266036987f * d * f66; + { const float d = D(ii, k, 45); + g9 += 1.0f * d * f0; + g0 += 1.0f * d * f9; } - { const float d = D(ii, k, 307); - g124 += 0.14433756470680237f * d * f66; - g125 += 0.18898223340511322f * d * f67; - g126 += 0.21128855645656586f * d * f68; - g127 += 0.2182178944349289f * d * f69; - g128 += 0.21128855645656586f * d * f70; - g129 += 0.18898223340511322f * d * f71; - g130 += 0.14433756470680237f * d * f72; + { const float d = D(ii, k, 46); + g10 += 1.0f * d * f0; + g0 += 1.0f * d * f10; } - { const float d = D(ii, k, 308); - g123 += 0.20412415266036987f * d * f66; - g124 += 0.1767766922712326f * d * f67; - g125 += -0.03857583925127983f * d * f66; - g125 += 0.14940357208251953f * d * f68; - g126 += -0.06681530922651291f * d * f67; - g127 += -0.13363061845302582f * d * f70; - g128 += 0.17251639068126678f * d * f69; - g128 += -0.06681530922651291f * d * f71; - g129 += 0.14940357208251953f * d * f70; - g129 += -0.03857583925127983f * d * f72; - g130 += 0.1767766922712326f * d * f71; - g131 += 0.20412415266036987f * d * f72; + { const float d = D(ii, k, 47); + g11 += 1.0f * d * f0; + g0 += 1.0f * d * f11; } - { const float d = D(ii, k, 309); - g123 += 0.20412415266036987f * d * f79; - g124 += 0.1767766922712326f * d * f78; - g125 += 0.14940357208251953f * d * f77; - g125 += 0.03857583925127983f * d * f79; - g126 += 0.17251639068126678f * d * f76; - g126 += 0.06681530922651291f * d * f78; - g127 += -0.13363061845302582f * d * f75; - g128 += -0.06681530922651291f * d * f74; - g129 += -0.03857583925127983f * d * f73; - g129 += -0.14940357208251953f * d * f75; - g130 += -0.1767766922712326f * d * f74; - g131 += -0.20412415266036987f * d * f73; + { const float d = D(ii, k, 48); + g12 += 1.0f * d * f0; + g0 += 1.0f * d * f12; } - { const float d = D(ii, k, 310); - g124 += 0.14433756470680237f * d * f73; - g125 += 0.18898223340511322f * d * f74; - g126 += 0.21128855645656586f * d * f75; - g127 += 0.2182178944349289f * d * f76; - g128 += 0.21128855645656586f * d * f77; - g129 += 0.18898223340511322f * d * f78; - g130 += 0.14433756470680237f * d * f79; + { const float d = D(ii, k, 49); + g13 += 1.0f * d * f0; + g0 += 1.0f * d * f13; } - { const float d = D(ii, k, 311); - g123 += 0.20412415266036987f * d * f73; - g124 += 0.1767766922712326f * d * f74; - g125 += -0.03857583925127983f * d * f73; - g125 += 0.14940357208251953f * d * f75; - g126 += -0.06681530922651291f * d * f74; - g127 += -0.13363061845302582f * d * f77; - g128 += 0.17251639068126678f * d * f76; - g128 += -0.06681530922651291f * d * f78; - g129 += 0.14940357208251953f * d * f77; - g129 += -0.03857583925127983f * d * f79; - g130 += 0.1767766922712326f * d * f78; - g131 += 0.20412415266036987f * d * f79; + { const float d = D(ii, k, 50); + g14 += 1.0f * d * f0; + g0 += 1.0f * d * f14; } - { const float d = D(ii, k, 312); - g123 += 0.20412415266036987f * d * f86; - g124 += 0.1767766922712326f * d * f85; - g125 += 0.14940357208251953f * d * f84; - g125 += 0.03857583925127983f * d * f86; - g126 += 0.17251639068126678f * d * f83; - g126 += 0.06681530922651291f * d * f85; - g127 += -0.13363061845302582f * d * f82; - g128 += -0.06681530922651291f * d * f81; - g129 += -0.03857583925127983f * d * f80; - g129 += -0.14940357208251953f * d * f82; - g130 += -0.1767766922712326f * d * f81; - g131 += -0.20412415266036987f * d * f80; + { const float d = D(ii, k, 51); + g15 += 1.0f * d * f0; + g0 += 1.0f * d * f15; } - { const float d = D(ii, k, 313); - g124 += 0.14433756470680237f * d * f80; - g125 += 0.18898223340511322f * d * f81; - g126 += 0.21128855645656586f * d * f82; - g127 += 0.2182178944349289f * d * f83; - g128 += 0.21128855645656586f * d * f84; - g129 += 0.18898223340511322f * d * f85; - g130 += 0.14433756470680237f * d * f86; + { const float d = D(ii, k, 52); + g9 += -0.55901700258255f * d * f6; + g6 += -0.55901700258255f * d * f9; + g10 += 0.3952847123146057f * d * f7; + g7 += 0.3952847123146057f * d * f10; + g11 += -0.25f * d * f8; + g8 += -0.25f * d * f11; + g13 += -0.25f * d * f4; + g4 += -0.25f * d * f13; + g14 += 0.3952847123146057f * d * f5; + g5 += 0.3952847123146057f * d * f14; } - { const float d = D(ii, k, 314); - g123 += 0.20412415266036987f * d * f80; - g124 += 0.1767766922712326f * d * f81; - g125 += -0.03857583925127983f * d * f80; - g125 += 0.14940357208251953f * d * f82; - g126 += -0.06681530922651291f * d * f81; - g127 += -0.13363061845302582f * d * f84; - g128 += 0.17251639068126678f * d * f83; - g128 += -0.06681530922651291f * d * f85; - g129 += 0.14940357208251953f * d * f84; - g129 += -0.03857583925127983f * d * f86; - g130 += 0.1767766922712326f * d * f85; - g131 += 0.20412415266036987f * d * f86; + { const float d = D(ii, k, 53); + g9 += 0.3952847123146057f * d * f7; + g7 += 0.3952847123146057f * d * f9; + g11 += 0.3061862289905548f * d * f7; + g7 += 0.3061862289905548f * d * f11; + g12 += -0.5f * d * f4; + g4 += -0.5f * d * f12; + g13 += 0.3061862289905548f * d * f5; + g5 += 0.3061862289905548f * d * f13; + g15 += -0.3952847123146057f * d * f5; + g5 += -0.3952847123146057f * d * f15; } - { const float d = D(ii, k, 363); - g132 += 0.20412415266036987f * d * f58; - g133 += 0.1767766922712326f * d * f57; - g134 += 0.14940357208251953f * d * f56; - g134 += 0.03857583925127983f * d * f58; - g135 += 0.17251639068126678f * d * f55; - g135 += 0.06681530922651291f * d * f57; - g136 += -0.13363061845302582f * d * f54; - g137 += -0.06681530922651291f * d * f53; - g138 += -0.03857583925127983f * d * f52; - g138 += -0.14940357208251953f * d * f54; - g139 += -0.1767766922712326f * d * f53; - g140 += -0.20412415266036987f * d * f52; + { const float d = D(ii, k, 54); + g9 += -0.25f * d * f8; + g8 += -0.25f * d * f9; + g10 += 0.3061862289905548f * d * f7; + g7 += 0.3061862289905548f * d * f10; + g11 += 0.3354102075099945f * d * f6; + g6 += 0.3354102075099945f * d * f11; + g11 += -0.3872983455657959f * d * f8; + g8 += -0.3872983455657959f * d * f11; + g12 += 0.15811388194561005f * d * f5; + g5 += 0.15811388194561005f * d * f12; + g13 += 0.3872983455657959f * d * f4; + g4 += 0.3872983455657959f * d * f13; + g14 += -0.3061862289905548f * d * f5; + g5 += -0.3061862289905548f * d * f14; + g15 += 0.25f * d * f4; + g4 += 0.25f * d * f15; } - { const float d = D(ii, k, 364); - g133 += 0.14433756470680237f * d * f52; - g134 += 0.18898223340511322f * d * f53; - g135 += 0.21128855645656586f * d * f54; - g136 += 0.2182178944349289f * d * f55; - g137 += 0.21128855645656586f * d * f56; - g138 += 0.18898223340511322f * d * f57; - g139 += 0.14433756470680237f * d * f58; + { const float d = D(ii, k, 55); + g10 += -0.5f * d * f4; + g4 += -0.5f * d * f10; + g11 += 0.15811388194561005f * d * f5; + g5 += 0.15811388194561005f * d * f11; + g12 += 0.4472135901451111f * d * f6; + g6 += 0.4472135901451111f * d * f12; + g13 += 0.15811388194561005f * d * f7; + g7 += 0.15811388194561005f * d * f13; + g14 += -0.5f * d * f8; + g8 += -0.5f * d * f14; + } + { const float d = D(ii, k, 56); + g9 += -0.25f * d * f4; + g4 += -0.25f * d * f9; + g10 += 0.3061862289905548f * d * f5; + g5 += 0.3061862289905548f * d * f10; + g11 += 0.3872983455657959f * d * f4; + g4 += 0.3872983455657959f * d * f11; + g12 += 0.15811388194561005f * d * f7; + g7 += 0.15811388194561005f * d * f12; + g13 += 0.3354102075099945f * d * f6; + g6 += 0.3354102075099945f * d * f13; + g13 += 0.3872983455657959f * d * f8; + g8 += 0.3872983455657959f * d * f13; + g14 += 0.3061862289905548f * d * f7; + g7 += 0.3061862289905548f * d * f14; + g15 += -0.25f * d * f8; + g8 += -0.25f * d * f15; } - { const float d = D(ii, k, 365); - g132 += 0.20412415266036987f * d * f52; - g133 += 0.1767766922712326f * d * f53; - g134 += -0.03857583925127983f * d * f52; - g134 += 0.14940357208251953f * d * f54; - g135 += -0.06681530922651291f * d * f53; - g136 += -0.13363061845302582f * d * f56; - g137 += 0.17251639068126678f * d * f55; - g137 += -0.06681530922651291f * d * f57; - g138 += 0.14940357208251953f * d * f56; - g138 += -0.03857583925127983f * d * f58; - g139 += 0.1767766922712326f * d * f57; - g140 += 0.20412415266036987f * d * f58; + { const float d = D(ii, k, 57); + g9 += 0.3952847123146057f * d * f5; + g5 += 0.3952847123146057f * d * f9; + g11 += -0.3061862289905548f * d * f5; + g5 += -0.3061862289905548f * d * f11; + g12 += -0.5f * d * f8; + g8 += -0.5f * d * f12; + g13 += 0.3061862289905548f * d * f7; + g7 += 0.3061862289905548f * d * f13; + g15 += 0.3952847123146057f * d * f7; + g7 += 0.3952847123146057f * d * f15; } - { const float d = D(ii, k, 366); - g132 += 0.20412415266036987f * d * f65; - g133 += 0.1767766922712326f * d * f64; - g134 += 0.14940357208251953f * d * f63; - g134 += 0.03857583925127983f * d * f65; - g135 += 0.17251639068126678f * d * f62; - g135 += 0.06681530922651291f * d * f64; - g136 += -0.13363061845302582f * d * f61; - g137 += -0.06681530922651291f * d * f60; - g138 += -0.03857583925127983f * d * f59; - g138 += -0.14940357208251953f * d * f61; - g139 += -0.1767766922712326f * d * f60; - g140 += -0.20412415266036987f * d * f59; + { const float d = D(ii, k, 58); + g10 += -0.3952847123146057f * d * f5; + g5 += -0.3952847123146057f * d * f10; + g11 += 0.25f * d * f4; + g4 += 0.25f * d * f11; + g13 += -0.25f * d * f8; + g8 += -0.25f * d * f13; + g14 += 0.3952847123146057f * d * f7; + g7 += 0.3952847123146057f * d * f14; + g15 += -0.55901700258255f * d * f6; + g6 += -0.55901700258255f * d * f15; } - { const float d = D(ii, k, 367); - g133 += 0.14433756470680237f * d * f59; - g134 += 0.18898223340511322f * d * f60; - g135 += 0.21128855645656586f * d * f61; - g136 += 0.2182178944349289f * d * f62; - g137 += 0.21128855645656586f * d * f63; - g138 += 0.18898223340511322f * d * f64; - g139 += 0.14433756470680237f * d * f65; + if constexpr (ACC) { + dF(ii, k, 0) += g0; + dF(ii, k, 1) += g1; + dF(ii, k, 2) += g2; + dF(ii, k, 3) += g3; + dF(ii, k, 4) += g4; + dF(ii, k, 5) += g5; + dF(ii, k, 6) += g6; + dF(ii, k, 7) += g7; + dF(ii, k, 8) += g8; + dF(ii, k, 9) += g9; + dF(ii, k, 10) += g10; + dF(ii, k, 11) += g11; + dF(ii, k, 12) += g12; + dF(ii, k, 13) += g13; + dF(ii, k, 14) += g14; + dF(ii, k, 15) += g15; + } else { + dF(ii, k, 0) = g0; + dF(ii, k, 1) = g1; + dF(ii, k, 2) = g2; + dF(ii, k, 3) = g3; + dF(ii, k, 4) = g4; + dF(ii, k, 5) = g5; + dF(ii, k, 6) = g6; + dF(ii, k, 7) = g7; + dF(ii, k, 8) = g8; + dF(ii, k, 9) = g9; + dF(ii, k, 10) = g10; + dF(ii, k, 11) = g11; + dF(ii, k, 12) = g12; + dF(ii, k, 13) = g13; + dF(ii, k, 14) = g14; + dF(ii, k, 15) = g15; } - { const float d = D(ii, k, 368); - g132 += 0.20412415266036987f * d * f59; - g133 += 0.1767766922712326f * d * f60; - g134 += -0.03857583925127983f * d * f59; - g134 += 0.14940357208251953f * d * f61; - g135 += -0.06681530922651291f * d * f60; - g136 += -0.13363061845302582f * d * f63; - g137 += 0.17251639068126678f * d * f62; - g137 += -0.06681530922651291f * d * f64; - g138 += 0.14940357208251953f * d * f63; - g138 += -0.03857583925127983f * d * f65; - g139 += 0.1767766922712326f * d * f64; - g140 += 0.20412415266036987f * d * f65; + } + } + +}; + +// mixed product, 20 terms: GRACE-OFF-1L-small AAA, GRACE-OFF-2L-medium BBB, GRACE-OFF-2L-large BBB, grace_1l_l3 AAA +struct T20_008c5734 { + static constexpr int nt = 20, nl = 38; + static constexpr int tab[20][3] = {{0,0,0}, {1,0,1}, {7,1,2}, {8,2,2}, {9,3,2}, {2,0,3}, {23,4,4}, {24,5,4}, {25,6,4}, {26,7,4}, {27,8,4}, {10,1,5}, {11,2,5}, {12,3,5}, {3,0,6}, {33,4,7}, {34,5,7}, {35,6,7}, {36,7,7}, {37,8,7}}; + static constexpr double cg[20] = {1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a7 = L(ii, k, 7); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a23 = L(ii, k, 23); + const float a24 = L(ii, k, 24); + const float a25 = L(ii, k, 25); + const float a26 = L(ii, k, 26); + const float a27 = L(ii, k, 27); + const float a33 = L(ii, k, 33); + const float a34 = L(ii, k, 34); + const float a35 = L(ii, k, 35); + const float a36 = L(ii, k, 36); + const float a37 = L(ii, k, 37); + const float b0 = R(ii, k, 0); + const float b1 = R(ii, k, 1); + const float b2 = R(ii, k, 2); + const float b3 = R(ii, k, 3); + const float b4 = R(ii, k, 4); + const float b5 = R(ii, k, 5); + const float b6 = R(ii, k, 6); + const float b7 = R(ii, k, 7); + const float b8 = R(ii, k, 8); + out(ii, k, 0) = 1.0f * a0 * b0; + out(ii, k, 1) = 1.0f * a1 * b0; + out(ii, k, 2) = 0.3333333432674408f * a7 * b1 + 0.3333333432674408f * a8 * b2 + 0.3333333432674408f * a9 * b3; + out(ii, k, 3) = 1.0f * a2 * b0; + out(ii, k, 4) = 0.20000000298023224f * a23 * b4 + 0.20000000298023224f * a24 * b5 + 0.20000000298023224f * a25 * b6 + 0.20000000298023224f * a26 * b7 + 0.20000000298023224f * a27 * b8; + out(ii, k, 5) = 0.3333333432674408f * a10 * b1 + 0.3333333432674408f * a11 * b2 + 0.3333333432674408f * a12 * b3; + out(ii, k, 6) = 1.0f * a3 * b0; + out(ii, k, 7) = 0.20000000298023224f * a33 * b4 + 0.20000000298023224f * a34 * b5 + 0.20000000298023224f * a35 * b6 + 0.20000000298023224f * a36 * b7 + 0.20000000298023224f * a37 * b8; + } + + template + KOKKOS_INLINE_FUNCTION static void rev(const V &L, const V &R, const V &D, const V &dL, + const V &dR, const int ii, const int k) + { + static_assert(!ACC, "mixed products assign dL"); + { + const float b0 = R(ii, k, 0); + const float b1 = R(ii, k, 1); + const float b2 = R(ii, k, 2); + const float b3 = R(ii, k, 3); + const float b4 = R(ii, k, 4); + const float b5 = R(ii, k, 5); + const float b6 = R(ii, k, 6); + const float b7 = R(ii, k, 7); + const float b8 = R(ii, k, 8); + { + float g0 = 0.0f; + float g1 = 0.0f; + float g2 = 0.0f; + float g3 = 0.0f; + float g4 = 0.0f; + float g5 = 0.0f; + float g6 = 0.0f; + float g7 = 0.0f; + float g8 = 0.0f; + float g9 = 0.0f; + float g10 = 0.0f; + float g11 = 0.0f; + float g12 = 0.0f; + float g13 = 0.0f; + float g14 = 0.0f; + float g15 = 0.0f; + float g16 = 0.0f; + float g17 = 0.0f; + float g18 = 0.0f; + float g19 = 0.0f; + float g20 = 0.0f; + float g21 = 0.0f; + float g22 = 0.0f; + float g23 = 0.0f; + float g24 = 0.0f; + float g25 = 0.0f; + float g26 = 0.0f; + float g27 = 0.0f; + float g28 = 0.0f; + float g29 = 0.0f; + float g30 = 0.0f; + float g31 = 0.0f; + float g32 = 0.0f; + float g33 = 0.0f; + float g34 = 0.0f; + float g35 = 0.0f; + float g36 = 0.0f; + float g37 = 0.0f; + { const float d = D(ii, k, 0); + g0 += 1.0f * d * b0; + } + { const float d = D(ii, k, 1); + g1 += 1.0f * d * b0; + } + { const float d = D(ii, k, 2); + g7 += 0.3333333432674408f * d * b1; + g8 += 0.3333333432674408f * d * b2; + g9 += 0.3333333432674408f * d * b3; + } + { const float d = D(ii, k, 3); + g2 += 1.0f * d * b0; + } + { const float d = D(ii, k, 4); + g23 += 0.20000000298023224f * d * b4; + g24 += 0.20000000298023224f * d * b5; + g25 += 0.20000000298023224f * d * b6; + g26 += 0.20000000298023224f * d * b7; + g27 += 0.20000000298023224f * d * b8; + } + { const float d = D(ii, k, 5); + g10 += 0.3333333432674408f * d * b1; + g11 += 0.3333333432674408f * d * b2; + g12 += 0.3333333432674408f * d * b3; + } + { const float d = D(ii, k, 6); + g3 += 1.0f * d * b0; + } + { const float d = D(ii, k, 7); + g33 += 0.20000000298023224f * d * b4; + g34 += 0.20000000298023224f * d * b5; + g35 += 0.20000000298023224f * d * b6; + g36 += 0.20000000298023224f * d * b7; + g37 += 0.20000000298023224f * d * b8; + } + dL(ii, k, 0) = g0; + dL(ii, k, 1) = g1; + dL(ii, k, 2) = g2; + dL(ii, k, 3) = g3; + dL(ii, k, 4) = g4; + dL(ii, k, 5) = g5; + dL(ii, k, 6) = g6; + dL(ii, k, 7) = g7; + dL(ii, k, 8) = g8; + dL(ii, k, 9) = g9; + dL(ii, k, 10) = g10; + dL(ii, k, 11) = g11; + dL(ii, k, 12) = g12; + dL(ii, k, 13) = g13; + dL(ii, k, 14) = g14; + dL(ii, k, 15) = g15; + dL(ii, k, 16) = g16; + dL(ii, k, 17) = g17; + dL(ii, k, 18) = g18; + dL(ii, k, 19) = g19; + dL(ii, k, 20) = g20; + dL(ii, k, 21) = g21; + dL(ii, k, 22) = g22; + dL(ii, k, 23) = g23; + dL(ii, k, 24) = g24; + dL(ii, k, 25) = g25; + dL(ii, k, 26) = g26; + dL(ii, k, 27) = g27; + dL(ii, k, 28) = g28; + dL(ii, k, 29) = g29; + dL(ii, k, 30) = g30; + dL(ii, k, 31) = g31; + dL(ii, k, 32) = g32; + dL(ii, k, 33) = g33; + dL(ii, k, 34) = g34; + dL(ii, k, 35) = g35; + dL(ii, k, 36) = g36; + dL(ii, k, 37) = g37; } - { const float d = D(ii, k, 369); - g132 += 0.20412415266036987f * d * f72; - g133 += 0.1767766922712326f * d * f71; - g134 += 0.14940357208251953f * d * f70; - g134 += 0.03857583925127983f * d * f72; - g135 += 0.17251639068126678f * d * f69; - g135 += 0.06681530922651291f * d * f71; - g136 += -0.13363061845302582f * d * f68; - g137 += -0.06681530922651291f * d * f67; - g138 += -0.03857583925127983f * d * f66; - g138 += -0.14940357208251953f * d * f68; - g139 += -0.1767766922712326f * d * f67; - g140 += -0.20412415266036987f * d * f66; + } + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a7 = L(ii, k, 7); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a23 = L(ii, k, 23); + const float a24 = L(ii, k, 24); + const float a25 = L(ii, k, 25); + const float a26 = L(ii, k, 26); + const float a27 = L(ii, k, 27); + const float a33 = L(ii, k, 33); + const float a34 = L(ii, k, 34); + const float a35 = L(ii, k, 35); + const float a36 = L(ii, k, 36); + const float a37 = L(ii, k, 37); + float h0 = 0.0f; + float h1 = 0.0f; + float h2 = 0.0f; + float h3 = 0.0f; + float h4 = 0.0f; + float h5 = 0.0f; + float h6 = 0.0f; + float h7 = 0.0f; + float h8 = 0.0f; + { const float d = D(ii, k, 0); + h0 += 1.0f * d * a0; } - { const float d = D(ii, k, 370); - g133 += 0.14433756470680237f * d * f66; - g134 += 0.18898223340511322f * d * f67; - g135 += 0.21128855645656586f * d * f68; - g136 += 0.2182178944349289f * d * f69; - g137 += 0.21128855645656586f * d * f70; - g138 += 0.18898223340511322f * d * f71; - g139 += 0.14433756470680237f * d * f72; + { const float d = D(ii, k, 1); + h0 += 1.0f * d * a1; } - { const float d = D(ii, k, 371); - g132 += 0.20412415266036987f * d * f66; - g133 += 0.1767766922712326f * d * f67; - g134 += -0.03857583925127983f * d * f66; - g134 += 0.14940357208251953f * d * f68; - g135 += -0.06681530922651291f * d * f67; - g136 += -0.13363061845302582f * d * f70; - g137 += 0.17251639068126678f * d * f69; - g137 += -0.06681530922651291f * d * f71; - g138 += 0.14940357208251953f * d * f70; - g138 += -0.03857583925127983f * d * f72; - g139 += 0.1767766922712326f * d * f71; - g140 += 0.20412415266036987f * d * f72; + { const float d = D(ii, k, 2); + h1 += 0.3333333432674408f * d * a7; + h2 += 0.3333333432674408f * d * a8; + h3 += 0.3333333432674408f * d * a9; } - { const float d = D(ii, k, 372); - g132 += 0.20412415266036987f * d * f79; - g133 += 0.1767766922712326f * d * f78; - g134 += 0.14940357208251953f * d * f77; - g134 += 0.03857583925127983f * d * f79; - g135 += 0.17251639068126678f * d * f76; - g135 += 0.06681530922651291f * d * f78; - g136 += -0.13363061845302582f * d * f75; - g137 += -0.06681530922651291f * d * f74; - g138 += -0.03857583925127983f * d * f73; - g138 += -0.14940357208251953f * d * f75; - g139 += -0.1767766922712326f * d * f74; - g140 += -0.20412415266036987f * d * f73; + { const float d = D(ii, k, 3); + h0 += 1.0f * d * a2; } - { const float d = D(ii, k, 373); - g133 += 0.14433756470680237f * d * f73; - g134 += 0.18898223340511322f * d * f74; - g135 += 0.21128855645656586f * d * f75; - g136 += 0.2182178944349289f * d * f76; - g137 += 0.21128855645656586f * d * f77; - g138 += 0.18898223340511322f * d * f78; - g139 += 0.14433756470680237f * d * f79; + { const float d = D(ii, k, 4); + h4 += 0.20000000298023224f * d * a23; + h5 += 0.20000000298023224f * d * a24; + h6 += 0.20000000298023224f * d * a25; + h7 += 0.20000000298023224f * d * a26; + h8 += 0.20000000298023224f * d * a27; } - { const float d = D(ii, k, 374); - g132 += 0.20412415266036987f * d * f73; - g133 += 0.1767766922712326f * d * f74; - g134 += -0.03857583925127983f * d * f73; - g134 += 0.14940357208251953f * d * f75; - g135 += -0.06681530922651291f * d * f74; - g136 += -0.13363061845302582f * d * f77; - g137 += 0.17251639068126678f * d * f76; - g137 += -0.06681530922651291f * d * f78; - g138 += 0.14940357208251953f * d * f77; - g138 += -0.03857583925127983f * d * f79; - g139 += 0.1767766922712326f * d * f78; - g140 += 0.20412415266036987f * d * f79; + { const float d = D(ii, k, 5); + h1 += 0.3333333432674408f * d * a10; + h2 += 0.3333333432674408f * d * a11; + h3 += 0.3333333432674408f * d * a12; } - { const float d = D(ii, k, 375); - g132 += 0.20412415266036987f * d * f86; - g133 += 0.1767766922712326f * d * f85; - g134 += 0.14940357208251953f * d * f84; - g134 += 0.03857583925127983f * d * f86; - g135 += 0.17251639068126678f * d * f83; - g135 += 0.06681530922651291f * d * f85; - g136 += -0.13363061845302582f * d * f82; - g137 += -0.06681530922651291f * d * f81; - g138 += -0.03857583925127983f * d * f80; - g138 += -0.14940357208251953f * d * f82; - g139 += -0.1767766922712326f * d * f81; - g140 += -0.20412415266036987f * d * f80; + { const float d = D(ii, k, 6); + h0 += 1.0f * d * a3; } - { const float d = D(ii, k, 376); - g133 += 0.14433756470680237f * d * f80; - g134 += 0.18898223340511322f * d * f81; - g135 += 0.21128855645656586f * d * f82; - g136 += 0.2182178944349289f * d * f83; - g137 += 0.21128855645656586f * d * f84; - g138 += 0.18898223340511322f * d * f85; - g139 += 0.14433756470680237f * d * f86; + { const float d = D(ii, k, 7); + h4 += 0.20000000298023224f * d * a33; + h5 += 0.20000000298023224f * d * a34; + h6 += 0.20000000298023224f * d * a35; + h7 += 0.20000000298023224f * d * a36; + h8 += 0.20000000298023224f * d * a37; } - { const float d = D(ii, k, 377); - g132 += 0.20412415266036987f * d * f80; - g133 += 0.1767766922712326f * d * f81; - g134 += -0.03857583925127983f * d * f80; - g134 += 0.14940357208251953f * d * f82; - g135 += -0.06681530922651291f * d * f81; - g136 += -0.13363061845302582f * d * f84; - g137 += 0.17251639068126678f * d * f83; - g137 += -0.06681530922651291f * d * f85; - g138 += 0.14940357208251953f * d * f84; - g138 += -0.03857583925127983f * d * f86; - g139 += 0.1767766922712326f * d * f85; - g140 += 0.20412415266036987f * d * f86; + dR(ii, k, 0) += h0; + dR(ii, k, 1) += h1; + dR(ii, k, 2) += h2; + dR(ii, k, 3) += h3; + dR(ii, k, 4) += h4; + dR(ii, k, 5) += h5; + dR(ii, k, 6) += h6; + dR(ii, k, 7) += h7; + dR(ii, k, 8) += h8; + } + } + +}; + +// mixed product, 198 terms: GRACE-OFF-2L-small AAA, GRACE-OFF-2L-medium AAA, grace_2l_l3 AAA +struct T198_4298265d { + static constexpr int nt = 198, nl = 59; + static constexpr int tab[198][3] = {{0,0,0}, {1,0,1}, {7,1,2}, {8,2,2}, {9,3,2}, {2,0,3}, {23,4,4}, {24,5,4}, {25,6,4}, {26,7,4}, {27,8,4}, {10,1,5}, {11,2,5}, {12,3,5}, {3,0,6}, {33,4,7}, {34,5,7}, {35,6,7}, {36,7,7}, {37,8,7}, {0,1,8}, {0,2,9}, {0,3,10}, {1,1,11}, {1,2,12}, {1,3,13}, {7,0,14}, {8,0,15}, {9,0,16}, {7,6,17}, {7,8,17}, {8,5,17}, {9,4,17}, {7,5,18}, {8,6,18}, {9,7,18}, {7,4,19}, {8,7,19}, {9,6,19}, {9,8,19}, {38,8,20}, {39,7,20}, {40,6,20}, {40,8,20}, {41,5,20}, {42,4,20}, {43,5,20}, {44,4,20}, {39,4,21}, {40,5,21}, {41,6,21}, {42,7,21}, {43,8,21}, {38,4,22}, {39,5,22}, {40,4,22}, {41,7,22}, {42,6,22}, {42,8,22}, {43,7,22}, {44,8,22}, {2,1,23}, {2,2,24}, {2,3,25}, {23,3,26}, {24,2,26}, {25,1,26}, {27,1,26}, {24,1,27}, {25,2,27}, {26,3,27}, {23,1,28}, {25,3,28}, {26,2,28}, {27,3,28}, {23,13,29}, {23,15,29}, {24,12,29}, {24,14,29}, {25,11,29}, {26,10,29}, {27,9,29}, {27,11,29}, {23,10,30}, {24,11,30}, {25,12,30}, {26,13,30}, {27,14,30}, {23,9,31}, {23,11,31}, {24,10,31}, {25,13,31}, {26,12,31}, {26,14,31}, {27,13,31}, {27,15,31}, {28,3,32}, {29,2,32}, {30,1,32}, {32,1,32}, {29,1,33}, {30,2,33}, {31,3,33}, {28,1,34}, {30,3,34}, {31,2,34}, {32,3,34}, {28,13,35}, {28,15,35}, {29,12,35}, {29,14,35}, {30,11,35}, {31,10,35}, {32,9,35}, {32,11,35}, {28,10,36}, {29,11,36}, {30,12,36}, {31,13,36}, {32,14,36}, {28,9,37}, {28,11,37}, {29,10,37}, {30,13,37}, {31,12,37}, {31,14,37}, {32,13,37}, {32,15,37}, {10,0,38}, {11,0,39}, {12,0,40}, {10,6,41}, {10,8,41}, {11,5,41}, {12,4,41}, {10,5,42}, {11,6,42}, {12,7,42}, {10,4,43}, {11,7,43}, {12,6,43}, {12,8,43}, {52,8,44}, {53,7,44}, {54,6,44}, {54,8,44}, {55,5,44}, {56,4,44}, {57,5,44}, {58,4,44}, {53,4,45}, {54,5,45}, {55,6,45}, {56,7,45}, {57,8,45}, {52,4,46}, {53,5,46}, {54,4,46}, {55,7,46}, {56,6,46}, {56,8,46}, {57,7,46}, {58,8,46}, {3,1,47}, {3,2,48}, {3,3,49}, {33,3,50}, {34,2,50}, {35,1,50}, {37,1,50}, {34,1,51}, {35,2,51}, {36,3,51}, {33,1,52}, {35,3,52}, {36,2,52}, {37,3,52}, {33,13,53}, {33,15,53}, {34,12,53}, {34,14,53}, {35,11,53}, {36,10,53}, {37,9,53}, {37,11,53}, {33,10,54}, {34,11,54}, {35,12,54}, {36,13,54}, {37,14,54}, {33,9,55}, {33,11,55}, {34,10,55}, {35,13,55}, {36,12,55}, {36,14,55}, {37,13,55}, {37,15,55}}; + static constexpr double cg[198] = {1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, -0.06900655593423541, -0.26726124191242434, -0.1690308509457033, -0.21821789023599236, 0.23904572186687872, 0.21821789023599236, 0.26726124191242434, 0.06900655593423541, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, -0.06900655593423541, 0.21821789023599236, 0.23904572186687872, -0.1690308509457033, 0.21821789023599236, -0.06900655593423541, 0.26726124191242434}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a7 = L(ii, k, 7); + const float a8 = L(ii, k, 8); + const float a9 = L(ii, k, 9); + const float a10 = L(ii, k, 10); + const float a11 = L(ii, k, 11); + const float a12 = L(ii, k, 12); + const float a23 = L(ii, k, 23); + const float a24 = L(ii, k, 24); + const float a25 = L(ii, k, 25); + const float a26 = L(ii, k, 26); + const float a27 = L(ii, k, 27); + const float a28 = L(ii, k, 28); + const float a29 = L(ii, k, 29); + const float a30 = L(ii, k, 30); + const float a31 = L(ii, k, 31); + const float a32 = L(ii, k, 32); + const float a33 = L(ii, k, 33); + const float a34 = L(ii, k, 34); + const float a35 = L(ii, k, 35); + const float a36 = L(ii, k, 36); + const float a37 = L(ii, k, 37); + const float a38 = L(ii, k, 38); + const float a39 = L(ii, k, 39); + const float a40 = L(ii, k, 40); + const float a41 = L(ii, k, 41); + const float a42 = L(ii, k, 42); + const float a43 = L(ii, k, 43); + const float a44 = L(ii, k, 44); + const float a52 = L(ii, k, 52); + const float a53 = L(ii, k, 53); + const float a54 = L(ii, k, 54); + const float a55 = L(ii, k, 55); + const float a56 = L(ii, k, 56); + const float a57 = L(ii, k, 57); + const float a58 = L(ii, k, 58); + const float b0 = R(ii, k, 0); + const float b1 = R(ii, k, 1); + const float b2 = R(ii, k, 2); + const float b3 = R(ii, k, 3); + const float b4 = R(ii, k, 4); + const float b5 = R(ii, k, 5); + const float b6 = R(ii, k, 6); + const float b7 = R(ii, k, 7); + const float b8 = R(ii, k, 8); + const float b9 = R(ii, k, 9); + const float b10 = R(ii, k, 10); + const float b11 = R(ii, k, 11); + const float b12 = R(ii, k, 12); + const float b13 = R(ii, k, 13); + const float b14 = R(ii, k, 14); + const float b15 = R(ii, k, 15); + out(ii, k, 0) = 1.0f * a0 * b0; + out(ii, k, 1) = 1.0f * a1 * b0; + out(ii, k, 2) = 0.3333333432674408f * a7 * b1 + 0.3333333432674408f * a8 * b2 + 0.3333333432674408f * a9 * b3; + out(ii, k, 3) = 1.0f * a2 * b0; + out(ii, k, 4) = 0.20000000298023224f * a23 * b4 + 0.20000000298023224f * a24 * b5 + 0.20000000298023224f * a25 * b6 + 0.20000000298023224f * a26 * b7 + 0.20000000298023224f * a27 * b8; + out(ii, k, 5) = 0.3333333432674408f * a10 * b1 + 0.3333333432674408f * a11 * b2 + 0.3333333432674408f * a12 * b3; + out(ii, k, 6) = 1.0f * a3 * b0; + out(ii, k, 7) = 0.20000000298023224f * a33 * b4 + 0.20000000298023224f * a34 * b5 + 0.20000000298023224f * a35 * b6 + 0.20000000298023224f * a36 * b7 + 0.20000000298023224f * a37 * b8; + out(ii, k, 8) = 1.0f * a0 * b1; + out(ii, k, 9) = 1.0f * a0 * b2; + out(ii, k, 10) = 1.0f * a0 * b3; + out(ii, k, 11) = 1.0f * a1 * b1; + out(ii, k, 12) = 1.0f * a1 * b2; + out(ii, k, 13) = 1.0f * a1 * b3; + out(ii, k, 14) = 1.0f * a7 * b0; + out(ii, k, 15) = 1.0f * a8 * b0; + out(ii, k, 16) = 1.0f * a9 * b0; + out(ii, k, 17) = -0.22360679507255554f * a7 * b6 + -0.3872983455657959f * a7 * b8 + 0.3872983455657959f * a8 * b5 + 0.3872983455657959f * a9 * b4; + out(ii, k, 18) = 0.3872983455657959f * a7 * b5 + 0.4472135901451111f * a8 * b6 + 0.3872983455657959f * a9 * b7; + out(ii, k, 19) = 0.3872983455657959f * a7 * b4 + 0.3872983455657959f * a8 * b7 + -0.22360679507255554f * a9 * b6 + 0.3872983455657959f * a9 * b8; + out(ii, k, 20) = 0.26726123690605164f * a38 * b8 + 0.2182178944349289f * a39 * b7 + 0.23904572427272797f * a40 * b6 + 0.0690065547823906f * a40 * b8 + -0.16903084516525269f * a41 * b5 + -0.0690065547823906f * a42 * b4 + -0.2182178944349289f * a43 * b5 + -0.26726123690605164f * a44 * b4; + out(ii, k, 21) = 0.2182178944349289f * a39 * b4 + 0.2760262191295624f * a40 * b5 + 0.29277002811431885f * a41 * b6 + 0.2760262191295624f * a42 * b7 + 0.2182178944349289f * a43 * b8; + out(ii, k, 22) = 0.26726123690605164f * a38 * b4 + 0.2182178944349289f * a39 * b5 + -0.0690065547823906f * a40 * b4 + -0.16903084516525269f * a41 * b7 + 0.23904572427272797f * a42 * b6 + -0.0690065547823906f * a42 * b8 + 0.2182178944349289f * a43 * b7 + 0.26726123690605164f * a44 * b8; + out(ii, k, 23) = 1.0f * a2 * b1; + out(ii, k, 24) = 1.0f * a2 * b2; + out(ii, k, 25) = 1.0f * a2 * b3; + out(ii, k, 26) = 0.3872983455657959f * a23 * b3 + 0.3872983455657959f * a24 * b2 + -0.22360679507255554f * a25 * b1 + -0.3872983455657959f * a27 * b1; + out(ii, k, 27) = 0.3872983455657959f * a24 * b1 + 0.4472135901451111f * a25 * b2 + 0.3872983455657959f * a26 * b3; + out(ii, k, 28) = 0.3872983455657959f * a23 * b1 + -0.22360679507255554f * a25 * b3 + 0.3872983455657959f * a26 * b2 + 0.3872983455657959f * a27 * b3; + out(ii, k, 29) = -0.0690065547823906f * a23 * b13 + -0.26726123690605164f * a23 * b15 + -0.16903084516525269f * a24 * b12 + -0.2182178944349289f * a24 * b14 + 0.23904572427272797f * a25 * b11 + 0.2182178944349289f * a26 * b10 + 0.26726123690605164f * a27 * b9 + 0.0690065547823906f * a27 * b11; + out(ii, k, 30) = 0.2182178944349289f * a23 * b10 + 0.2760262191295624f * a24 * b11 + 0.29277002811431885f * a25 * b12 + 0.2760262191295624f * a26 * b13 + 0.2182178944349289f * a27 * b14; + out(ii, k, 31) = 0.26726123690605164f * a23 * b9 + -0.0690065547823906f * a23 * b11 + 0.2182178944349289f * a24 * b10 + 0.23904572427272797f * a25 * b13 + -0.16903084516525269f * a26 * b12 + 0.2182178944349289f * a26 * b14 + -0.0690065547823906f * a27 * b13 + 0.26726123690605164f * a27 * b15; + out(ii, k, 32) = 0.3872983455657959f * a28 * b3 + 0.3872983455657959f * a29 * b2 + -0.22360679507255554f * a30 * b1 + -0.3872983455657959f * a32 * b1; + out(ii, k, 33) = 0.3872983455657959f * a29 * b1 + 0.4472135901451111f * a30 * b2 + 0.3872983455657959f * a31 * b3; + out(ii, k, 34) = 0.3872983455657959f * a28 * b1 + -0.22360679507255554f * a30 * b3 + 0.3872983455657959f * a31 * b2 + 0.3872983455657959f * a32 * b3; + out(ii, k, 35) = -0.0690065547823906f * a28 * b13 + -0.26726123690605164f * a28 * b15 + -0.16903084516525269f * a29 * b12 + -0.2182178944349289f * a29 * b14 + 0.23904572427272797f * a30 * b11 + 0.2182178944349289f * a31 * b10 + 0.26726123690605164f * a32 * b9 + 0.0690065547823906f * a32 * b11; + out(ii, k, 36) = 0.2182178944349289f * a28 * b10 + 0.2760262191295624f * a29 * b11 + 0.29277002811431885f * a30 * b12 + 0.2760262191295624f * a31 * b13 + 0.2182178944349289f * a32 * b14; + out(ii, k, 37) = 0.26726123690605164f * a28 * b9 + -0.0690065547823906f * a28 * b11 + 0.2182178944349289f * a29 * b10 + 0.23904572427272797f * a30 * b13 + -0.16903084516525269f * a31 * b12 + 0.2182178944349289f * a31 * b14 + -0.0690065547823906f * a32 * b13 + 0.26726123690605164f * a32 * b15; + out(ii, k, 38) = 1.0f * a10 * b0; + out(ii, k, 39) = 1.0f * a11 * b0; + out(ii, k, 40) = 1.0f * a12 * b0; + out(ii, k, 41) = -0.22360679507255554f * a10 * b6 + -0.3872983455657959f * a10 * b8 + 0.3872983455657959f * a11 * b5 + 0.3872983455657959f * a12 * b4; + out(ii, k, 42) = 0.3872983455657959f * a10 * b5 + 0.4472135901451111f * a11 * b6 + 0.3872983455657959f * a12 * b7; + out(ii, k, 43) = 0.3872983455657959f * a10 * b4 + 0.3872983455657959f * a11 * b7 + -0.22360679507255554f * a12 * b6 + 0.3872983455657959f * a12 * b8; + out(ii, k, 44) = 0.26726123690605164f * a52 * b8 + 0.2182178944349289f * a53 * b7 + 0.23904572427272797f * a54 * b6 + 0.0690065547823906f * a54 * b8 + -0.16903084516525269f * a55 * b5 + -0.0690065547823906f * a56 * b4 + -0.2182178944349289f * a57 * b5 + -0.26726123690605164f * a58 * b4; + out(ii, k, 45) = 0.2182178944349289f * a53 * b4 + 0.2760262191295624f * a54 * b5 + 0.29277002811431885f * a55 * b6 + 0.2760262191295624f * a56 * b7 + 0.2182178944349289f * a57 * b8; + out(ii, k, 46) = 0.26726123690605164f * a52 * b4 + 0.2182178944349289f * a53 * b5 + -0.0690065547823906f * a54 * b4 + -0.16903084516525269f * a55 * b7 + 0.23904572427272797f * a56 * b6 + -0.0690065547823906f * a56 * b8 + 0.2182178944349289f * a57 * b7 + 0.26726123690605164f * a58 * b8; + out(ii, k, 47) = 1.0f * a3 * b1; + out(ii, k, 48) = 1.0f * a3 * b2; + out(ii, k, 49) = 1.0f * a3 * b3; + out(ii, k, 50) = 0.3872983455657959f * a33 * b3 + 0.3872983455657959f * a34 * b2 + -0.22360679507255554f * a35 * b1 + -0.3872983455657959f * a37 * b1; + out(ii, k, 51) = 0.3872983455657959f * a34 * b1 + 0.4472135901451111f * a35 * b2 + 0.3872983455657959f * a36 * b3; + out(ii, k, 52) = 0.3872983455657959f * a33 * b1 + -0.22360679507255554f * a35 * b3 + 0.3872983455657959f * a36 * b2 + 0.3872983455657959f * a37 * b3; + out(ii, k, 53) = -0.0690065547823906f * a33 * b13 + -0.26726123690605164f * a33 * b15 + -0.16903084516525269f * a34 * b12 + -0.2182178944349289f * a34 * b14 + 0.23904572427272797f * a35 * b11 + 0.2182178944349289f * a36 * b10 + 0.26726123690605164f * a37 * b9 + 0.0690065547823906f * a37 * b11; + out(ii, k, 54) = 0.2182178944349289f * a33 * b10 + 0.2760262191295624f * a34 * b11 + 0.29277002811431885f * a35 * b12 + 0.2760262191295624f * a36 * b13 + 0.2182178944349289f * a37 * b14; + out(ii, k, 55) = 0.26726123690605164f * a33 * b9 + -0.0690065547823906f * a33 * b11 + 0.2182178944349289f * a34 * b10 + 0.23904572427272797f * a35 * b13 + -0.16903084516525269f * a36 * b12 + 0.2182178944349289f * a36 * b14 + -0.0690065547823906f * a37 * b13 + 0.26726123690605164f * a37 * b15; + } + + template + KOKKOS_INLINE_FUNCTION static void rev(const V &L, const V &R, const V &D, const V &dL, + const V &dR, const int ii, const int k) + { + static_assert(!ACC, "mixed products assign dL"); + { + const float b0 = R(ii, k, 0); + const float b1 = R(ii, k, 1); + const float b2 = R(ii, k, 2); + const float b3 = R(ii, k, 3); + const float b4 = R(ii, k, 4); + const float b5 = R(ii, k, 5); + const float b6 = R(ii, k, 6); + const float b7 = R(ii, k, 7); + const float b8 = R(ii, k, 8); + const float b9 = R(ii, k, 9); + const float b10 = R(ii, k, 10); + const float b11 = R(ii, k, 11); + const float b12 = R(ii, k, 12); + const float b13 = R(ii, k, 13); + const float b14 = R(ii, k, 14); + const float b15 = R(ii, k, 15); + { + float g0 = 0.0f; + float g1 = 0.0f; + float g2 = 0.0f; + float g3 = 0.0f; + float g4 = 0.0f; + float g5 = 0.0f; + float g6 = 0.0f; + float g7 = 0.0f; + float g8 = 0.0f; + float g9 = 0.0f; + float g10 = 0.0f; + float g11 = 0.0f; + float g12 = 0.0f; + float g13 = 0.0f; + float g14 = 0.0f; + float g15 = 0.0f; + float g16 = 0.0f; + float g17 = 0.0f; + float g18 = 0.0f; + float g19 = 0.0f; + float g20 = 0.0f; + float g21 = 0.0f; + float g22 = 0.0f; + float g23 = 0.0f; + float g24 = 0.0f; + float g25 = 0.0f; + float g26 = 0.0f; + float g27 = 0.0f; + float g28 = 0.0f; + float g29 = 0.0f; + float g30 = 0.0f; + float g31 = 0.0f; + float g32 = 0.0f; + float g33 = 0.0f; + float g34 = 0.0f; + float g35 = 0.0f; + float g36 = 0.0f; + float g37 = 0.0f; + float g38 = 0.0f; + float g39 = 0.0f; + float g40 = 0.0f; + float g41 = 0.0f; + float g42 = 0.0f; + float g43 = 0.0f; + float g44 = 0.0f; + float g45 = 0.0f; + float g46 = 0.0f; + float g47 = 0.0f; + float g48 = 0.0f; + float g49 = 0.0f; + float g50 = 0.0f; + float g51 = 0.0f; + float g52 = 0.0f; + float g53 = 0.0f; + float g54 = 0.0f; + float g55 = 0.0f; + float g56 = 0.0f; + float g57 = 0.0f; + float g58 = 0.0f; + { const float d = D(ii, k, 0); + g0 += 1.0f * d * b0; + } + { const float d = D(ii, k, 1); + g1 += 1.0f * d * b0; + } + { const float d = D(ii, k, 2); + g7 += 0.3333333432674408f * d * b1; + g8 += 0.3333333432674408f * d * b2; + g9 += 0.3333333432674408f * d * b3; + } + { const float d = D(ii, k, 3); + g2 += 1.0f * d * b0; + } + { const float d = D(ii, k, 4); + g23 += 0.20000000298023224f * d * b4; + g24 += 0.20000000298023224f * d * b5; + g25 += 0.20000000298023224f * d * b6; + g26 += 0.20000000298023224f * d * b7; + g27 += 0.20000000298023224f * d * b8; + } + { const float d = D(ii, k, 5); + g10 += 0.3333333432674408f * d * b1; + g11 += 0.3333333432674408f * d * b2; + g12 += 0.3333333432674408f * d * b3; + } + { const float d = D(ii, k, 6); + g3 += 1.0f * d * b0; + } + { const float d = D(ii, k, 7); + g33 += 0.20000000298023224f * d * b4; + g34 += 0.20000000298023224f * d * b5; + g35 += 0.20000000298023224f * d * b6; + g36 += 0.20000000298023224f * d * b7; + g37 += 0.20000000298023224f * d * b8; + } + { const float d = D(ii, k, 8); + g0 += 1.0f * d * b1; + } + { const float d = D(ii, k, 9); + g0 += 1.0f * d * b2; + } + { const float d = D(ii, k, 10); + g0 += 1.0f * d * b3; + } + { const float d = D(ii, k, 11); + g1 += 1.0f * d * b1; + } + { const float d = D(ii, k, 12); + g1 += 1.0f * d * b2; + } + { const float d = D(ii, k, 13); + g1 += 1.0f * d * b3; + } + { const float d = D(ii, k, 14); + g7 += 1.0f * d * b0; + } + { const float d = D(ii, k, 15); + g8 += 1.0f * d * b0; + } + { const float d = D(ii, k, 16); + g9 += 1.0f * d * b0; + } + { const float d = D(ii, k, 17); + g7 += -0.22360679507255554f * d * b6; + g7 += -0.3872983455657959f * d * b8; + g8 += 0.3872983455657959f * d * b5; + g9 += 0.3872983455657959f * d * b4; + } + { const float d = D(ii, k, 18); + g7 += 0.3872983455657959f * d * b5; + g8 += 0.4472135901451111f * d * b6; + g9 += 0.3872983455657959f * d * b7; + } + { const float d = D(ii, k, 19); + g7 += 0.3872983455657959f * d * b4; + g8 += 0.3872983455657959f * d * b7; + g9 += -0.22360679507255554f * d * b6; + g9 += 0.3872983455657959f * d * b8; + } + { const float d = D(ii, k, 20); + g38 += 0.26726123690605164f * d * b8; + g39 += 0.2182178944349289f * d * b7; + g40 += 0.23904572427272797f * d * b6; + g40 += 0.0690065547823906f * d * b8; + g41 += -0.16903084516525269f * d * b5; + g42 += -0.0690065547823906f * d * b4; + g43 += -0.2182178944349289f * d * b5; + g44 += -0.26726123690605164f * d * b4; + } + { const float d = D(ii, k, 21); + g39 += 0.2182178944349289f * d * b4; + g40 += 0.2760262191295624f * d * b5; + g41 += 0.29277002811431885f * d * b6; + g42 += 0.2760262191295624f * d * b7; + g43 += 0.2182178944349289f * d * b8; + } + { const float d = D(ii, k, 22); + g38 += 0.26726123690605164f * d * b4; + g39 += 0.2182178944349289f * d * b5; + g40 += -0.0690065547823906f * d * b4; + g41 += -0.16903084516525269f * d * b7; + g42 += 0.23904572427272797f * d * b6; + g42 += -0.0690065547823906f * d * b8; + g43 += 0.2182178944349289f * d * b7; + g44 += 0.26726123690605164f * d * b8; + } + { const float d = D(ii, k, 23); + g2 += 1.0f * d * b1; + } + { const float d = D(ii, k, 24); + g2 += 1.0f * d * b2; + } + { const float d = D(ii, k, 25); + g2 += 1.0f * d * b3; + } + { const float d = D(ii, k, 26); + g23 += 0.3872983455657959f * d * b3; + g24 += 0.3872983455657959f * d * b2; + g25 += -0.22360679507255554f * d * b1; + g27 += -0.3872983455657959f * d * b1; + } + { const float d = D(ii, k, 27); + g24 += 0.3872983455657959f * d * b1; + g25 += 0.4472135901451111f * d * b2; + g26 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 28); + g23 += 0.3872983455657959f * d * b1; + g25 += -0.22360679507255554f * d * b3; + g26 += 0.3872983455657959f * d * b2; + g27 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 29); + g23 += -0.0690065547823906f * d * b13; + g23 += -0.26726123690605164f * d * b15; + g24 += -0.16903084516525269f * d * b12; + g24 += -0.2182178944349289f * d * b14; + g25 += 0.23904572427272797f * d * b11; + g26 += 0.2182178944349289f * d * b10; + g27 += 0.26726123690605164f * d * b9; + g27 += 0.0690065547823906f * d * b11; + } + { const float d = D(ii, k, 30); + g23 += 0.2182178944349289f * d * b10; + g24 += 0.2760262191295624f * d * b11; + g25 += 0.29277002811431885f * d * b12; + g26 += 0.2760262191295624f * d * b13; + g27 += 0.2182178944349289f * d * b14; + } + { const float d = D(ii, k, 31); + g23 += 0.26726123690605164f * d * b9; + g23 += -0.0690065547823906f * d * b11; + g24 += 0.2182178944349289f * d * b10; + g25 += 0.23904572427272797f * d * b13; + g26 += -0.16903084516525269f * d * b12; + g26 += 0.2182178944349289f * d * b14; + g27 += -0.0690065547823906f * d * b13; + g27 += 0.26726123690605164f * d * b15; + } + { const float d = D(ii, k, 32); + g28 += 0.3872983455657959f * d * b3; + g29 += 0.3872983455657959f * d * b2; + g30 += -0.22360679507255554f * d * b1; + g32 += -0.3872983455657959f * d * b1; + } + { const float d = D(ii, k, 33); + g29 += 0.3872983455657959f * d * b1; + g30 += 0.4472135901451111f * d * b2; + g31 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 34); + g28 += 0.3872983455657959f * d * b1; + g30 += -0.22360679507255554f * d * b3; + g31 += 0.3872983455657959f * d * b2; + g32 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 35); + g28 += -0.0690065547823906f * d * b13; + g28 += -0.26726123690605164f * d * b15; + g29 += -0.16903084516525269f * d * b12; + g29 += -0.2182178944349289f * d * b14; + g30 += 0.23904572427272797f * d * b11; + g31 += 0.2182178944349289f * d * b10; + g32 += 0.26726123690605164f * d * b9; + g32 += 0.0690065547823906f * d * b11; + } + { const float d = D(ii, k, 36); + g28 += 0.2182178944349289f * d * b10; + g29 += 0.2760262191295624f * d * b11; + g30 += 0.29277002811431885f * d * b12; + g31 += 0.2760262191295624f * d * b13; + g32 += 0.2182178944349289f * d * b14; + } + { const float d = D(ii, k, 37); + g28 += 0.26726123690605164f * d * b9; + g28 += -0.0690065547823906f * d * b11; + g29 += 0.2182178944349289f * d * b10; + g30 += 0.23904572427272797f * d * b13; + g31 += -0.16903084516525269f * d * b12; + g31 += 0.2182178944349289f * d * b14; + g32 += -0.0690065547823906f * d * b13; + g32 += 0.26726123690605164f * d * b15; + } + { const float d = D(ii, k, 38); + g10 += 1.0f * d * b0; + } + { const float d = D(ii, k, 39); + g11 += 1.0f * d * b0; + } + { const float d = D(ii, k, 40); + g12 += 1.0f * d * b0; + } + { const float d = D(ii, k, 41); + g10 += -0.22360679507255554f * d * b6; + g10 += -0.3872983455657959f * d * b8; + g11 += 0.3872983455657959f * d * b5; + g12 += 0.3872983455657959f * d * b4; + } + { const float d = D(ii, k, 42); + g10 += 0.3872983455657959f * d * b5; + g11 += 0.4472135901451111f * d * b6; + g12 += 0.3872983455657959f * d * b7; + } + { const float d = D(ii, k, 43); + g10 += 0.3872983455657959f * d * b4; + g11 += 0.3872983455657959f * d * b7; + g12 += -0.22360679507255554f * d * b6; + g12 += 0.3872983455657959f * d * b8; + } + { const float d = D(ii, k, 44); + g52 += 0.26726123690605164f * d * b8; + g53 += 0.2182178944349289f * d * b7; + g54 += 0.23904572427272797f * d * b6; + g54 += 0.0690065547823906f * d * b8; + g55 += -0.16903084516525269f * d * b5; + g56 += -0.0690065547823906f * d * b4; + g57 += -0.2182178944349289f * d * b5; + g58 += -0.26726123690605164f * d * b4; + } + { const float d = D(ii, k, 45); + g53 += 0.2182178944349289f * d * b4; + g54 += 0.2760262191295624f * d * b5; + g55 += 0.29277002811431885f * d * b6; + g56 += 0.2760262191295624f * d * b7; + g57 += 0.2182178944349289f * d * b8; + } + { const float d = D(ii, k, 46); + g52 += 0.26726123690605164f * d * b4; + g53 += 0.2182178944349289f * d * b5; + g54 += -0.0690065547823906f * d * b4; + g55 += -0.16903084516525269f * d * b7; + g56 += 0.23904572427272797f * d * b6; + g56 += -0.0690065547823906f * d * b8; + g57 += 0.2182178944349289f * d * b7; + g58 += 0.26726123690605164f * d * b8; + } + { const float d = D(ii, k, 47); + g3 += 1.0f * d * b1; + } + { const float d = D(ii, k, 48); + g3 += 1.0f * d * b2; + } + { const float d = D(ii, k, 49); + g3 += 1.0f * d * b3; + } + { const float d = D(ii, k, 50); + g33 += 0.3872983455657959f * d * b3; + g34 += 0.3872983455657959f * d * b2; + g35 += -0.22360679507255554f * d * b1; + g37 += -0.3872983455657959f * d * b1; + } + { const float d = D(ii, k, 51); + g34 += 0.3872983455657959f * d * b1; + g35 += 0.4472135901451111f * d * b2; + g36 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 52); + g33 += 0.3872983455657959f * d * b1; + g35 += -0.22360679507255554f * d * b3; + g36 += 0.3872983455657959f * d * b2; + g37 += 0.3872983455657959f * d * b3; + } + { const float d = D(ii, k, 53); + g33 += -0.0690065547823906f * d * b13; + g33 += -0.26726123690605164f * d * b15; + g34 += -0.16903084516525269f * d * b12; + g34 += -0.2182178944349289f * d * b14; + g35 += 0.23904572427272797f * d * b11; + g36 += 0.2182178944349289f * d * b10; + g37 += 0.26726123690605164f * d * b9; + g37 += 0.0690065547823906f * d * b11; + } + { const float d = D(ii, k, 54); + g33 += 0.2182178944349289f * d * b10; + g34 += 0.2760262191295624f * d * b11; + g35 += 0.29277002811431885f * d * b12; + g36 += 0.2760262191295624f * d * b13; + g37 += 0.2182178944349289f * d * b14; + } + { const float d = D(ii, k, 55); + g33 += 0.26726123690605164f * d * b9; + g33 += -0.0690065547823906f * d * b11; + g34 += 0.2182178944349289f * d * b10; + g35 += 0.23904572427272797f * d * b13; + g36 += -0.16903084516525269f * d * b12; + g36 += 0.2182178944349289f * d * b14; + g37 += -0.0690065547823906f * d * b13; + g37 += 0.26726123690605164f * d * b15; + } + dL(ii, k, 0) = g0; + dL(ii, k, 1) = g1; + dL(ii, k, 2) = g2; + dL(ii, k, 3) = g3; + dL(ii, k, 4) = g4; + dL(ii, k, 5) = g5; + dL(ii, k, 6) = g6; + dL(ii, k, 7) = g7; + dL(ii, k, 8) = g8; + dL(ii, k, 9) = g9; + dL(ii, k, 10) = g10; + dL(ii, k, 11) = g11; + dL(ii, k, 12) = g12; + dL(ii, k, 13) = g13; + dL(ii, k, 14) = g14; + dL(ii, k, 15) = g15; + dL(ii, k, 16) = g16; + dL(ii, k, 17) = g17; + dL(ii, k, 18) = g18; + dL(ii, k, 19) = g19; + dL(ii, k, 20) = g20; + dL(ii, k, 21) = g21; + dL(ii, k, 22) = g22; + dL(ii, k, 23) = g23; + dL(ii, k, 24) = g24; + dL(ii, k, 25) = g25; + dL(ii, k, 26) = g26; + dL(ii, k, 27) = g27; + dL(ii, k, 28) = g28; + dL(ii, k, 29) = g29; + dL(ii, k, 30) = g30; + dL(ii, k, 31) = g31; + dL(ii, k, 32) = g32; + dL(ii, k, 33) = g33; + dL(ii, k, 34) = g34; + dL(ii, k, 35) = g35; + dL(ii, k, 36) = g36; + dL(ii, k, 37) = g37; + dL(ii, k, 38) = g38; + dL(ii, k, 39) = g39; + dL(ii, k, 40) = g40; + dL(ii, k, 41) = g41; + dL(ii, k, 42) = g42; + dL(ii, k, 43) = g43; + dL(ii, k, 44) = g44; + dL(ii, k, 45) = g45; + dL(ii, k, 46) = g46; + dL(ii, k, 47) = g47; + dL(ii, k, 48) = g48; + dL(ii, k, 49) = g49; + dL(ii, k, 50) = g50; + dL(ii, k, 51) = g51; + dL(ii, k, 52) = g52; + dL(ii, k, 53) = g53; + dL(ii, k, 54) = g54; + dL(ii, k, 55) = g55; + dL(ii, k, 56) = g56; + dL(ii, k, 57) = g57; + dL(ii, k, 58) = g58; } - dF(ii, k, 96) = g96; - dF(ii, k, 97) = g97; - dF(ii, k, 98) = g98; - dF(ii, k, 99) = g99; - dF(ii, k, 100) = g100; - dF(ii, k, 101) = g101; - dF(ii, k, 102) = g102; - dF(ii, k, 103) = g103; - dF(ii, k, 104) = g104; - dF(ii, k, 105) = g105; - dF(ii, k, 106) = g106; - dF(ii, k, 107) = g107; - dF(ii, k, 108) = g108; - dF(ii, k, 109) = g109; - dF(ii, k, 110) = g110; - dF(ii, k, 111) = g111; - dF(ii, k, 112) = g112; - dF(ii, k, 113) = g113; - dF(ii, k, 114) = g114; - dF(ii, k, 115) = g115; - dF(ii, k, 116) = g116; - dF(ii, k, 117) = g117; - dF(ii, k, 118) = g118; - dF(ii, k, 119) = g119; - dF(ii, k, 120) = g120; - dF(ii, k, 121) = g121; - dF(ii, k, 122) = g122; - dF(ii, k, 123) = g123; - dF(ii, k, 124) = g124; - dF(ii, k, 125) = g125; - dF(ii, k, 126) = g126; - dF(ii, k, 127) = g127; - dF(ii, k, 128) = g128; - dF(ii, k, 129) = g129; - dF(ii, k, 130) = g130; - dF(ii, k, 131) = g131; - dF(ii, k, 132) = g132; - dF(ii, k, 133) = g133; - dF(ii, k, 134) = g134; - dF(ii, k, 135) = g135; - dF(ii, k, 136) = g136; - dF(ii, k, 137) = g137; - dF(ii, k, 138) = g138; - dF(ii, k, 139) = g139; - dF(ii, k, 140) = g140; } -} - -constexpr int nt_BB = 264; -constexpr int tab_BB[264][3] = {{0,0,0}, {1,1,1}, {2,2,1}, {3,3,1}, {7,7,2}, {8,8,2}, {9,9,2}, {10,10,2}, {11,11,2}, {17,17,3}, {18,18,3}, {19,19,3}, {20,20,3}, {21,21,3}, {22,22,3}, {23,23,3}, {1,0,4}, {2,0,5}, {3,0,6}, {7,3,7}, {8,2,7}, {9,1,7}, {11,1,7}, {8,1,8}, {9,2,8}, {10,3,8}, {7,1,9}, {9,3,9}, {10,2,9}, {11,3,9}, {17,11,10}, {18,10,10}, {19,9,10}, {19,11,10}, {20,8,10}, {21,7,10}, {22,8,10}, {23,7,10}, {18,7,11}, {19,8,11}, {20,9,11}, {21,10,11}, {22,11,11}, {17,7,12}, {18,8,12}, {19,7,12}, {20,10,12}, {21,9,12}, {21,11,12}, {22,10,12}, {23,11,12}, {7,0,13}, {8,0,14}, {9,0,15}, {10,0,16}, {11,0,17}, {3,1,18}, {2,1,19}, {1,1,20}, {2,2,20}, {3,3,20}, {3,2,21}, {1,1,22}, {3,3,22}, {8,1,23}, {10,3,23}, {11,2,23}, {7,1,24}, {9,3,24}, {10,2,24}, {11,3,24}, {8,3,25}, {10,1,25}, {7,3,26}, {8,2,26}, {9,1,26}, {11,1,26}, {7,2,27}, {8,3,27}, {10,1,27}, {9,7,28}, {10,8,28}, {10,7,29}, {9,8,29}, {11,8,29}, {7,7,30}, {8,8,30}, {9,9,30}, {10,10,30}, {11,11,30}, {8,7,31}, {10,9,31}, {11,10,31}, {8,8,32}, {11,9,32}, {10,10,32}, {17,3,33}, {18,2,33}, {19,3,33}, {21,1,33}, {23,1,33}, {18,3,34}, {19,2,34}, {20,1,34}, {22,1,34}, {19,1,35}, {20,2,35}, {21,3,35}, {18,1,36}, {20,3,36}, {21,2,36}, {22,3,36}, {17,1,37}, {19,1,37}, {21,3,37}, {22,2,37}, {23,3,37}, {17,8,38}, {19,8,38}, {20,11,38}, {21,10,38}, {22,9,38}, {23,10,38}, {17,7,39}, {19,7,39}, {20,10,39}, {21,9,39}, {21,11,39}, {23,11,39}, {18,11,40}, {19,10,40}, {21,8,40}, {22,7,40}, {17,11,41}, {19,9,41}, {19,11,41}, {20,8,41}, {21,7,41}, {23,7,41}, {17,10,42}, {18,9,42}, {19,10,42}, {20,7,42}, {21,8,42}, {23,8,42}, {21,17,43}, {20,18,43}, {21,19,43}, {23,19,43}, {22,17,44}, {21,18,44}, {23,18,44}, {20,19,44}, {22,19,44}, {17,17,45}, {19,19,45}, {20,20,45}, {21,21,45}, {23,23,45}, {18,17,46}, {19,18,46}, {21,20,46}, {22,21,46}, {23,22,46}, {19,17,47}, {19,19,47}, {22,20,47}, {21,21,47}, {23,21,47}, {17,0,48}, {18,0,49}, {19,0,50}, {20,0,51}, {21,0,52}, {22,0,53}, {23,0,54}, {7,3,55}, {11,1,55}, {7,2,56}, {8,3,56}, {10,1,56}, {7,3,57}, {8,2,57}, {9,1,57}, {11,1,57}, {8,1,58}, {9,2,58}, {10,3,58}, {7,1,59}, {9,3,59}, {10,2,59}, {11,3,59}, {8,1,60}, {10,3,60}, {11,2,60}, {7,1,61}, {11,3,61}, {18,1,62}, {22,3,62}, {23,2,62}, {17,1,63}, {19,1,63}, {21,3,63}, {22,2,63}, {23,3,63}, {18,1,64}, {20,3,64}, {21,2,64}, {22,3,64}, {19,3,65}, {21,1,65}, {18,3,66}, {19,2,66}, {20,1,66}, {22,1,66}, {17,3,67}, {18,2,67}, {19,3,67}, {21,1,67}, {23,1,67}, {17,2,68}, {18,3,68}, {22,1,68}, {17,9,69}, {18,10,69}, {19,11,69}, {21,7,69}, {22,8,69}, {17,10,70}, {19,10,70}, {20,7,70}, {21,8,70}, {23,8,70}, {17,11,71}, {18,10,71}, {19,9,71}, {19,11,71}, {20,8,71}, {21,7,71}, {22,8,71}, {23,7,71}, {18,7,72}, {19,8,72}, {20,9,72}, {21,10,72}, {22,11,72}, {17,7,73}, {18,8,73}, {19,7,73}, {20,10,73}, {21,9,73}, {21,11,73}, {22,10,73}, {23,11,73}, {17,8,74}, {19,8,74}, {20,11,74}, {21,10,74}, {23,10,74}, {18,8,75}, {19,7,75}, {21,11,75}, {22,10,75}, {23,9,75}}; -constexpr double cg_BB[264] = {1.0, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 1.0, 1.0, 1.0, 1.0, 1.0, 1.29099440574646, 1.29099440574646, -0.3726779818534851, 0.7453559637069702, -0.3726779818534851, 1.29099440574646, -0.64549720287323, 0.64549720287323, -0.40824830532073975, 0.40824830532073975, -0.8164966106414795, 0.40824830532073975, 0.7071067690849304, -0.40824830532073975, 0.40824830532073975, -0.7071067690849304, 0.7071067690849304, -0.40824830532073975, 0.40824830532073975, -0.7071067690849304, 0.40824830532073975, 0.8164966106414795, -0.40824830532073975, -0.40824830532073975, -0.8944271802902222, 0.7745966911315918, 0.7745966911315918, 0.4472135901451111, -0.7745966911315918, -0.4472135901451111, 0.22360679507255554, 0.4472135901451111, 0.22360679507255554, -0.4472135901451111, 0.7745966911315918, 0.4472135901451111, 0.7745966911315918, -0.3872983455657959, -0.8944271802902222, 0.3872983455657959, 0.44543540477752686, 0.36369648575782776, -0.11501092463731766, -0.11501092463731766, -0.44543540477752686, 0.36369648575782776, 0.46004369854927063, -0.28171807527542114, -0.36369648575782776, 0.39840954542160034, 0.48795002698898315, 0.39840954542160034, 0.36369648575782776, -0.28171807527542114, 0.46004369854927063, 0.36369648575782776, 0.44543540477752686, 0.11501092463731766, -0.11501092463731766, 0.36369648575782776, 0.44543540477752686, -0.4225771129131317, -0.32732683420181274, -0.26726123690605164, 0.32732683420181274, -0.5976142883300781, -0.4225771129131317, 0.4225771129131317, 0.32732683420181274, 0.5345224738121033, -0.37796446681022644, 0.32732683420181274, 0.4225771129131317, -0.5976142883300781, -0.37796446681022644, 0.37796446681022644, 0.5976142883300781, -0.4225771129131317, 0.37796446681022644, 0.32732683420181274, -0.5345224738121033, -0.32732683420181274, 0.4225771129131317, 0.4225771129131317, 0.5976142883300781, -0.32732683420181274, 0.26726123690605164, -0.32732683420181274, -0.4225771129131317, -0.3571428656578064, -0.7142857313156128, 0.5532833337783813, 0.3571428656578064, 0.5646924376487732, 0.4374088943004608, -0.5646924376487732, 0.22587697207927704, -0.4374088943004608, -0.3992978632450104, 0.2395787090063095, 0.31943827867507935, 0.2395787090063095, -0.3992978632450104, 0.5646924376487732, 0.4374088943004608, 0.22587697207927704, 0.4374088943004608, 0.5646924376487732, -0.3571428656578064, -0.2766416668891907, -0.7142857313156128, 0.2766416668891907, -0.3571428656578064, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, 0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.5577733516693115, 0.6440612077713013, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, -0.3535533845424652, 0.3535533845424652, -0.8660253882408142, 0.3535533845424652, -0.4564354717731476, 0.4564354717731476, -0.5773502588272095, 0.3535533845424652, 0.4564354717731476, 0.7071067690849304, -0.28867512941360474, 0.4564354717731476, -0.7071067690849304, 0.7071067690849304, -0.4564354717731476, 0.28867512941360474, -0.7071067690849304, 0.4564354717731476, -0.3535533845424652, 0.5773502588272095, -0.4564354717731476, -0.4564354717731476, 0.3535533845424652, 0.8660253882408142, -0.3535533845424652, -0.3535533845424652, -0.55901700258255, 0.3952847123146057, -0.25, -0.25, 0.3952847123146057, 0.3952847123146057, 0.3061862289905548, -0.5, 0.3061862289905548, -0.3952847123146057, -0.25, 0.3061862289905548, 0.3354102075099945, -0.3872983455657959, 0.15811388194561005, 0.3872983455657959, -0.3061862289905548, 0.25, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3061862289905548, 0.3872983455657959, 0.15811388194561005, 0.3354102075099945, 0.3872983455657959, 0.3061862289905548, -0.25, 0.3952847123146057, -0.3061862289905548, -0.5, 0.3061862289905548, 0.3952847123146057, -0.3952847123146057, 0.25, -0.25, 0.3952847123146057, -0.55901700258255}; - -template -KOKKOS_INLINE_FUNCTION void fwd_BB(const V &L, const V &R, const V &out, const int ii, const int k) -{ + { const float a0 = L(ii, k, 0); const float a1 = L(ii, k, 1); const float a2 = L(ii, k, 2); @@ -18309,935 +26706,679 @@ KOKKOS_INLINE_FUNCTION void fwd_BB(const V &L, const V &R, const V &out, const i const float a9 = L(ii, k, 9); const float a10 = L(ii, k, 10); const float a11 = L(ii, k, 11); - const float a17 = L(ii, k, 17); - const float a18 = L(ii, k, 18); - const float a19 = L(ii, k, 19); - const float a20 = L(ii, k, 20); - const float a21 = L(ii, k, 21); - const float a22 = L(ii, k, 22); + const float a12 = L(ii, k, 12); const float a23 = L(ii, k, 23); - out(ii, k, 0) = 1.0f * a0 * a0; - out(ii, k, 1) = 0.3333333432674408f * a1 * a1 + 0.3333333432674408f * a2 * a2 + 0.3333333432674408f * a3 * a3; - out(ii, k, 2) = 0.20000000298023224f * a7 * a7 + 0.20000000298023224f * a8 * a8 + 0.20000000298023224f * a9 * a9 + 0.20000000298023224f * a10 * a10 + 0.20000000298023224f * a11 * a11; - out(ii, k, 3) = 0.1428571492433548f * a17 * a17 + 0.1428571492433548f * a18 * a18 + 0.1428571492433548f * a19 * a19 + 0.1428571492433548f * a20 * a20 + 0.1428571492433548f * a21 * a21 + 0.1428571492433548f * a22 * a22 + 0.1428571492433548f * a23 * a23; - out(ii, k, 4) = 1.0f * a1 * a0; - out(ii, k, 5) = 1.0f * a2 * a0; - out(ii, k, 6) = 1.0f * a3 * a0; - out(ii, k, 7) = 0.3872983455657959f * a7 * a3 + 0.3872983455657959f * a8 * a2 + -0.22360679507255554f * a9 * a1 + -0.3872983455657959f * a11 * a1; - out(ii, k, 8) = 0.3872983455657959f * a8 * a1 + 0.4472135901451111f * a9 * a2 + 0.3872983455657959f * a10 * a3; - out(ii, k, 9) = 0.3872983455657959f * a7 * a1 + -0.22360679507255554f * a9 * a3 + 0.3872983455657959f * a10 * a2 + 0.3872983455657959f * a11 * a3; - out(ii, k, 10) = 0.26726123690605164f * a17 * a11 + 0.2182178944349289f * a18 * a10 + 0.23904572427272797f * a19 * a9 + 0.0690065547823906f * a19 * a11 + -0.16903084516525269f * a20 * a8 + -0.0690065547823906f * a21 * a7 + -0.2182178944349289f * a22 * a8 + -0.26726123690605164f * a23 * a7; - out(ii, k, 11) = 0.2182178944349289f * a18 * a7 + 0.2760262191295624f * a19 * a8 + 0.29277002811431885f * a20 * a9 + 0.2760262191295624f * a21 * a10 + 0.2182178944349289f * a22 * a11; - out(ii, k, 12) = 0.26726123690605164f * a17 * a7 + 0.2182178944349289f * a18 * a8 + -0.0690065547823906f * a19 * a7 + -0.16903084516525269f * a20 * a10 + 0.23904572427272797f * a21 * a9 + -0.0690065547823906f * a21 * a11 + 0.2182178944349289f * a22 * a10 + 0.26726123690605164f * a23 * a11; - out(ii, k, 13) = 1.0f * a7 * a0; - out(ii, k, 14) = 1.0f * a8 * a0; - out(ii, k, 15) = 1.0f * a9 * a0; - out(ii, k, 16) = 1.0f * a10 * a0; - out(ii, k, 17) = 1.0f * a11 * a0; - out(ii, k, 18) = 1.29099440574646f * a3 * a1; - out(ii, k, 19) = 1.29099440574646f * a2 * a1; - out(ii, k, 20) = -0.3726779818534851f * a1 * a1 + 0.7453559637069702f * a2 * a2 + -0.3726779818534851f * a3 * a3; - out(ii, k, 21) = 1.29099440574646f * a3 * a2; - out(ii, k, 22) = -0.64549720287323f * a1 * a1 + 0.64549720287323f * a3 * a3; - out(ii, k, 23) = -0.40824830532073975f * a8 * a1 + 0.40824830532073975f * a10 * a3 + -0.8164966106414795f * a11 * a2; - out(ii, k, 24) = 0.40824830532073975f * a7 * a1 + 0.7071067690849304f * a9 * a3 + -0.40824830532073975f * a10 * a2 + 0.40824830532073975f * a11 * a3; - out(ii, k, 25) = -0.7071067690849304f * a8 * a3 + 0.7071067690849304f * a10 * a1; - out(ii, k, 26) = -0.40824830532073975f * a7 * a3 + 0.40824830532073975f * a8 * a2 + -0.7071067690849304f * a9 * a1 + 0.40824830532073975f * a11 * a1; - out(ii, k, 27) = 0.8164966106414795f * a7 * a2 + -0.40824830532073975f * a8 * a3 + -0.40824830532073975f * a10 * a1; - out(ii, k, 28) = -0.8944271802902222f * a9 * a7 + 0.7745966911315918f * a10 * a8; - out(ii, k, 29) = 0.7745966911315918f * a10 * a7 + 0.4472135901451111f * a9 * a8 + -0.7745966911315918f * a11 * a8; - out(ii, k, 30) = -0.4472135901451111f * a7 * a7 + 0.22360679507255554f * a8 * a8 + 0.4472135901451111f * a9 * a9 + 0.22360679507255554f * a10 * a10 + -0.4472135901451111f * a11 * a11; - out(ii, k, 31) = 0.7745966911315918f * a8 * a7 + 0.4472135901451111f * a10 * a9 + 0.7745966911315918f * a11 * a10; - out(ii, k, 32) = -0.3872983455657959f * a8 * a8 + -0.8944271802902222f * a11 * a9 + 0.3872983455657959f * a10 * a10; - out(ii, k, 33) = 0.44543540477752686f * a17 * a3 + 0.36369648575782776f * a18 * a2 + -0.11501092463731766f * a19 * a3 + -0.11501092463731766f * a21 * a1 + -0.44543540477752686f * a23 * a1; - out(ii, k, 34) = 0.36369648575782776f * a18 * a3 + 0.46004369854927063f * a19 * a2 + -0.28171807527542114f * a20 * a1 + -0.36369648575782776f * a22 * a1; - out(ii, k, 35) = 0.39840954542160034f * a19 * a1 + 0.48795002698898315f * a20 * a2 + 0.39840954542160034f * a21 * a3; - out(ii, k, 36) = 0.36369648575782776f * a18 * a1 + -0.28171807527542114f * a20 * a3 + 0.46004369854927063f * a21 * a2 + 0.36369648575782776f * a22 * a3; - out(ii, k, 37) = 0.44543540477752686f * a17 * a1 + 0.11501092463731766f * a19 * a1 + -0.11501092463731766f * a21 * a3 + 0.36369648575782776f * a22 * a2 + 0.44543540477752686f * a23 * a3; - out(ii, k, 38) = -0.4225771129131317f * a17 * a8 + -0.32732683420181274f * a19 * a8 + -0.26726123690605164f * a20 * a11 + 0.32732683420181274f * a21 * a10 + -0.5976142883300781f * a22 * a9 + -0.4225771129131317f * a23 * a10; - out(ii, k, 39) = 0.4225771129131317f * a17 * a7 + 0.32732683420181274f * a19 * a7 + 0.5345224738121033f * a20 * a10 + -0.37796446681022644f * a21 * a9 + 0.32732683420181274f * a21 * a11 + 0.4225771129131317f * a23 * a11; - out(ii, k, 40) = -0.5976142883300781f * a18 * a11 + -0.37796446681022644f * a19 * a10 + 0.37796446681022644f * a21 * a8 + 0.5976142883300781f * a22 * a7; - out(ii, k, 41) = -0.4225771129131317f * a17 * a11 + 0.37796446681022644f * a19 * a9 + 0.32732683420181274f * a19 * a11 + -0.5345224738121033f * a20 * a8 + -0.32732683420181274f * a21 * a7 + 0.4225771129131317f * a23 * a7; - out(ii, k, 42) = 0.4225771129131317f * a17 * a10 + 0.5976142883300781f * a18 * a9 + -0.32732683420181274f * a19 * a10 + 0.26726123690605164f * a20 * a7 + -0.32732683420181274f * a21 * a8 + -0.4225771129131317f * a23 * a8; - out(ii, k, 43) = -0.3571428656578064f * a21 * a17 + -0.7142857313156128f * a20 * a18 + 0.5532833337783813f * a21 * a19 + 0.3571428656578064f * a23 * a19; - out(ii, k, 44) = 0.5646924376487732f * a22 * a17 + 0.4374088943004608f * a21 * a18 + -0.5646924376487732f * a23 * a18 + 0.22587697207927704f * a20 * a19 + -0.4374088943004608f * a22 * a19; - out(ii, k, 45) = -0.3992978632450104f * a17 * a17 + 0.2395787090063095f * a19 * a19 + 0.31943827867507935f * a20 * a20 + 0.2395787090063095f * a21 * a21 + -0.3992978632450104f * a23 * a23; - out(ii, k, 46) = 0.5646924376487732f * a18 * a17 + 0.4374088943004608f * a19 * a18 + 0.22587697207927704f * a21 * a20 + 0.4374088943004608f * a22 * a21 + 0.5646924376487732f * a23 * a22; - out(ii, k, 47) = -0.3571428656578064f * a19 * a17 + -0.2766416668891907f * a19 * a19 + -0.7142857313156128f * a22 * a20 + 0.2766416668891907f * a21 * a21 + -0.3571428656578064f * a23 * a21; - out(ii, k, 48) = 1.0f * a17 * a0; - out(ii, k, 49) = 1.0f * a18 * a0; - out(ii, k, 50) = 1.0f * a19 * a0; - out(ii, k, 51) = 1.0f * a20 * a0; - out(ii, k, 52) = 1.0f * a21 * a0; - out(ii, k, 53) = 1.0f * a22 * a0; - out(ii, k, 54) = 1.0f * a23 * a0; - out(ii, k, 55) = 0.6236095428466797f * a7 * a3 + 0.6236095428466797f * a11 * a1; - out(ii, k, 56) = 0.5091750621795654f * a7 * a2 + 0.5091750621795654f * a8 * a3 + 0.5091750621795654f * a10 * a1; - out(ii, k, 57) = -0.16101530194282532f * a7 * a3 + 0.6440612077713013f * a8 * a2 + 0.5577733516693115f * a9 * a1 + 0.16101530194282532f * a11 * a1; - out(ii, k, 58) = -0.3944053053855896f * a8 * a1 + 0.6831300258636475f * a9 * a2 + -0.3944053053855896f * a10 * a3; - out(ii, k, 59) = -0.16101530194282532f * a7 * a1 + 0.5577733516693115f * a9 * a3 + 0.6440612077713013f * a10 * a2 + -0.16101530194282532f * a11 * a3; - out(ii, k, 60) = -0.5091750621795654f * a8 * a1 + 0.5091750621795654f * a10 * a3 + 0.5091750621795654f * a11 * a2; - out(ii, k, 61) = -0.6236095428466797f * a7 * a1 + 0.6236095428466797f * a11 * a3; - out(ii, k, 62) = -0.3535533845424652f * a18 * a1 + 0.3535533845424652f * a22 * a3 + -0.8660253882408142f * a23 * a2; - out(ii, k, 63) = 0.3535533845424652f * a17 * a1 + -0.4564354717731476f * a19 * a1 + 0.4564354717731476f * a21 * a3 + -0.5773502588272095f * a22 * a2 + 0.3535533845424652f * a23 * a3; - out(ii, k, 64) = 0.4564354717731476f * a18 * a1 + 0.7071067690849304f * a20 * a3 + -0.28867512941360474f * a21 * a2 + 0.4564354717731476f * a22 * a3; - out(ii, k, 65) = -0.7071067690849304f * a19 * a3 + 0.7071067690849304f * a21 * a1; - out(ii, k, 66) = -0.4564354717731476f * a18 * a3 + 0.28867512941360474f * a19 * a2 + -0.7071067690849304f * a20 * a1 + 0.4564354717731476f * a22 * a1; - out(ii, k, 67) = -0.3535533845424652f * a17 * a3 + 0.5773502588272095f * a18 * a2 + -0.4564354717731476f * a19 * a3 + -0.4564354717731476f * a21 * a1 + 0.3535533845424652f * a23 * a1; - out(ii, k, 68) = 0.8660253882408142f * a17 * a2 + -0.3535533845424652f * a18 * a3 + -0.3535533845424652f * a22 * a1; - out(ii, k, 69) = -0.55901700258255f * a17 * a9 + 0.3952847123146057f * a18 * a10 + -0.25f * a19 * a11 + -0.25f * a21 * a7 + 0.3952847123146057f * a22 * a8; - out(ii, k, 70) = 0.3952847123146057f * a17 * a10 + 0.3061862289905548f * a19 * a10 + -0.5f * a20 * a7 + 0.3061862289905548f * a21 * a8 + -0.3952847123146057f * a23 * a8; - out(ii, k, 71) = -0.25f * a17 * a11 + 0.3061862289905548f * a18 * a10 + 0.3354102075099945f * a19 * a9 + -0.3872983455657959f * a19 * a11 + 0.15811388194561005f * a20 * a8 + 0.3872983455657959f * a21 * a7 + -0.3061862289905548f * a22 * a8 + 0.25f * a23 * a7; - out(ii, k, 72) = -0.5f * a18 * a7 + 0.15811388194561005f * a19 * a8 + 0.4472135901451111f * a20 * a9 + 0.15811388194561005f * a21 * a10 + -0.5f * a22 * a11; - out(ii, k, 73) = -0.25f * a17 * a7 + 0.3061862289905548f * a18 * a8 + 0.3872983455657959f * a19 * a7 + 0.15811388194561005f * a20 * a10 + 0.3354102075099945f * a21 * a9 + 0.3872983455657959f * a21 * a11 + 0.3061862289905548f * a22 * a10 + -0.25f * a23 * a11; - out(ii, k, 74) = 0.3952847123146057f * a17 * a8 + -0.3061862289905548f * a19 * a8 + -0.5f * a20 * a11 + 0.3061862289905548f * a21 * a10 + 0.3952847123146057f * a23 * a10; - out(ii, k, 75) = -0.3952847123146057f * a18 * a8 + 0.25f * a19 * a7 + -0.25f * a21 * a11 + 0.3952847123146057f * a22 * a10 + -0.55901700258255f * a23 * a9; -} - -template -KOKKOS_INLINE_FUNCTION void rev_BB(const V &F, const V &, const V &D, const V &dF, const V &, const int ii, const int k) -{ - const float f0 = F(ii, k, 0); - const float f1 = F(ii, k, 1); - const float f2 = F(ii, k, 2); - const float f3 = F(ii, k, 3); - const float f7 = F(ii, k, 7); - const float f8 = F(ii, k, 8); - const float f9 = F(ii, k, 9); - const float f10 = F(ii, k, 10); - const float f11 = F(ii, k, 11); - const float f17 = F(ii, k, 17); - const float f18 = F(ii, k, 18); - const float f19 = F(ii, k, 19); - const float f20 = F(ii, k, 20); - const float f21 = F(ii, k, 21); - const float f22 = F(ii, k, 22); - const float f23 = F(ii, k, 23); - { - float g0 = 0.0f; - float g1 = 0.0f; - float g2 = 0.0f; - float g3 = 0.0f; - float g4 = 0.0f; - float g5 = 0.0f; - float g6 = 0.0f; - float g7 = 0.0f; - float g8 = 0.0f; - float g9 = 0.0f; - float g10 = 0.0f; - float g11 = 0.0f; - float g12 = 0.0f; - float g13 = 0.0f; - float g14 = 0.0f; - float g15 = 0.0f; - float g16 = 0.0f; - float g17 = 0.0f; - float g18 = 0.0f; - float g19 = 0.0f; - float g20 = 0.0f; - float g21 = 0.0f; - float g22 = 0.0f; - float g23 = 0.0f; + const float a24 = L(ii, k, 24); + const float a25 = L(ii, k, 25); + const float a26 = L(ii, k, 26); + const float a27 = L(ii, k, 27); + const float a28 = L(ii, k, 28); + const float a29 = L(ii, k, 29); + const float a30 = L(ii, k, 30); + const float a31 = L(ii, k, 31); + const float a32 = L(ii, k, 32); + const float a33 = L(ii, k, 33); + const float a34 = L(ii, k, 34); + const float a35 = L(ii, k, 35); + const float a36 = L(ii, k, 36); + const float a37 = L(ii, k, 37); + const float a38 = L(ii, k, 38); + const float a39 = L(ii, k, 39); + const float a40 = L(ii, k, 40); + const float a41 = L(ii, k, 41); + const float a42 = L(ii, k, 42); + const float a43 = L(ii, k, 43); + const float a44 = L(ii, k, 44); + const float a52 = L(ii, k, 52); + const float a53 = L(ii, k, 53); + const float a54 = L(ii, k, 54); + const float a55 = L(ii, k, 55); + const float a56 = L(ii, k, 56); + const float a57 = L(ii, k, 57); + const float a58 = L(ii, k, 58); + float h0 = 0.0f; + float h1 = 0.0f; + float h2 = 0.0f; + float h3 = 0.0f; + float h4 = 0.0f; + float h5 = 0.0f; + float h6 = 0.0f; + float h7 = 0.0f; + float h8 = 0.0f; + float h9 = 0.0f; + float h10 = 0.0f; + float h11 = 0.0f; + float h12 = 0.0f; + float h13 = 0.0f; + float h14 = 0.0f; + float h15 = 0.0f; { const float d = D(ii, k, 0); - g0 += 1.0f * d * f0; - g0 += 1.0f * d * f0; + h0 += 1.0f * d * a0; } { const float d = D(ii, k, 1); - g1 += 0.3333333432674408f * d * f1; - g1 += 0.3333333432674408f * d * f1; - g2 += 0.3333333432674408f * d * f2; - g2 += 0.3333333432674408f * d * f2; - g3 += 0.3333333432674408f * d * f3; - g3 += 0.3333333432674408f * d * f3; + h0 += 1.0f * d * a1; } { const float d = D(ii, k, 2); - g7 += 0.20000000298023224f * d * f7; - g7 += 0.20000000298023224f * d * f7; - g8 += 0.20000000298023224f * d * f8; - g8 += 0.20000000298023224f * d * f8; - g9 += 0.20000000298023224f * d * f9; - g9 += 0.20000000298023224f * d * f9; - g10 += 0.20000000298023224f * d * f10; - g10 += 0.20000000298023224f * d * f10; - g11 += 0.20000000298023224f * d * f11; - g11 += 0.20000000298023224f * d * f11; + h1 += 0.3333333432674408f * d * a7; + h2 += 0.3333333432674408f * d * a8; + h3 += 0.3333333432674408f * d * a9; } { const float d = D(ii, k, 3); - g17 += 0.1428571492433548f * d * f17; - g17 += 0.1428571492433548f * d * f17; - g18 += 0.1428571492433548f * d * f18; - g18 += 0.1428571492433548f * d * f18; - g19 += 0.1428571492433548f * d * f19; - g19 += 0.1428571492433548f * d * f19; - g20 += 0.1428571492433548f * d * f20; - g20 += 0.1428571492433548f * d * f20; - g21 += 0.1428571492433548f * d * f21; - g21 += 0.1428571492433548f * d * f21; - g22 += 0.1428571492433548f * d * f22; - g22 += 0.1428571492433548f * d * f22; - g23 += 0.1428571492433548f * d * f23; - g23 += 0.1428571492433548f * d * f23; + h0 += 1.0f * d * a2; } { const float d = D(ii, k, 4); - g1 += 1.0f * d * f0; - g0 += 1.0f * d * f1; + h4 += 0.20000000298023224f * d * a23; + h5 += 0.20000000298023224f * d * a24; + h6 += 0.20000000298023224f * d * a25; + h7 += 0.20000000298023224f * d * a26; + h8 += 0.20000000298023224f * d * a27; } { const float d = D(ii, k, 5); - g2 += 1.0f * d * f0; - g0 += 1.0f * d * f2; + h1 += 0.3333333432674408f * d * a10; + h2 += 0.3333333432674408f * d * a11; + h3 += 0.3333333432674408f * d * a12; } { const float d = D(ii, k, 6); - g3 += 1.0f * d * f0; - g0 += 1.0f * d * f3; + h0 += 1.0f * d * a3; } { const float d = D(ii, k, 7); - g7 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f7; - g8 += 0.3872983455657959f * d * f2; - g2 += 0.3872983455657959f * d * f8; - g9 += -0.22360679507255554f * d * f1; - g1 += -0.22360679507255554f * d * f9; - g11 += -0.3872983455657959f * d * f1; - g1 += -0.3872983455657959f * d * f11; + h4 += 0.20000000298023224f * d * a33; + h5 += 0.20000000298023224f * d * a34; + h6 += 0.20000000298023224f * d * a35; + h7 += 0.20000000298023224f * d * a36; + h8 += 0.20000000298023224f * d * a37; } { const float d = D(ii, k, 8); - g8 += 0.3872983455657959f * d * f1; - g1 += 0.3872983455657959f * d * f8; - g9 += 0.4472135901451111f * d * f2; - g2 += 0.4472135901451111f * d * f9; - g10 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f10; - } - { const float d = D(ii, k, 9); - g7 += 0.3872983455657959f * d * f1; - g1 += 0.3872983455657959f * d * f7; - g9 += -0.22360679507255554f * d * f3; - g3 += -0.22360679507255554f * d * f9; - g10 += 0.3872983455657959f * d * f2; - g2 += 0.3872983455657959f * d * f10; - g11 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f11; - } - { const float d = D(ii, k, 10); - g17 += 0.26726123690605164f * d * f11; - g11 += 0.26726123690605164f * d * f17; - g18 += 0.2182178944349289f * d * f10; - g10 += 0.2182178944349289f * d * f18; - g19 += 0.23904572427272797f * d * f9; - g9 += 0.23904572427272797f * d * f19; - g19 += 0.0690065547823906f * d * f11; - g11 += 0.0690065547823906f * d * f19; - g20 += -0.16903084516525269f * d * f8; - g8 += -0.16903084516525269f * d * f20; - g21 += -0.0690065547823906f * d * f7; - g7 += -0.0690065547823906f * d * f21; - g22 += -0.2182178944349289f * d * f8; - g8 += -0.2182178944349289f * d * f22; - g23 += -0.26726123690605164f * d * f7; - g7 += -0.26726123690605164f * d * f23; + h1 += 1.0f * d * a0; + } + { const float d = D(ii, k, 9); + h2 += 1.0f * d * a0; + } + { const float d = D(ii, k, 10); + h3 += 1.0f * d * a0; } { const float d = D(ii, k, 11); - g18 += 0.2182178944349289f * d * f7; - g7 += 0.2182178944349289f * d * f18; - g19 += 0.2760262191295624f * d * f8; - g8 += 0.2760262191295624f * d * f19; - g20 += 0.29277002811431885f * d * f9; - g9 += 0.29277002811431885f * d * f20; - g21 += 0.2760262191295624f * d * f10; - g10 += 0.2760262191295624f * d * f21; - g22 += 0.2182178944349289f * d * f11; - g11 += 0.2182178944349289f * d * f22; + h1 += 1.0f * d * a1; } { const float d = D(ii, k, 12); - g17 += 0.26726123690605164f * d * f7; - g7 += 0.26726123690605164f * d * f17; - g18 += 0.2182178944349289f * d * f8; - g8 += 0.2182178944349289f * d * f18; - g19 += -0.0690065547823906f * d * f7; - g7 += -0.0690065547823906f * d * f19; - g20 += -0.16903084516525269f * d * f10; - g10 += -0.16903084516525269f * d * f20; - g21 += 0.23904572427272797f * d * f9; - g9 += 0.23904572427272797f * d * f21; - g21 += -0.0690065547823906f * d * f11; - g11 += -0.0690065547823906f * d * f21; - g22 += 0.2182178944349289f * d * f10; - g10 += 0.2182178944349289f * d * f22; - g23 += 0.26726123690605164f * d * f11; - g11 += 0.26726123690605164f * d * f23; + h2 += 1.0f * d * a1; } { const float d = D(ii, k, 13); - g7 += 1.0f * d * f0; - g0 += 1.0f * d * f7; + h3 += 1.0f * d * a1; } { const float d = D(ii, k, 14); - g8 += 1.0f * d * f0; - g0 += 1.0f * d * f8; + h0 += 1.0f * d * a7; } { const float d = D(ii, k, 15); - g9 += 1.0f * d * f0; - g0 += 1.0f * d * f9; + h0 += 1.0f * d * a8; } { const float d = D(ii, k, 16); - g10 += 1.0f * d * f0; - g0 += 1.0f * d * f10; + h0 += 1.0f * d * a9; } { const float d = D(ii, k, 17); - g11 += 1.0f * d * f0; - g0 += 1.0f * d * f11; + h6 += -0.22360679507255554f * d * a7; + h8 += -0.3872983455657959f * d * a7; + h5 += 0.3872983455657959f * d * a8; + h4 += 0.3872983455657959f * d * a9; } { const float d = D(ii, k, 18); - g3 += 1.29099440574646f * d * f1; - g1 += 1.29099440574646f * d * f3; + h5 += 0.3872983455657959f * d * a7; + h6 += 0.4472135901451111f * d * a8; + h7 += 0.3872983455657959f * d * a9; } { const float d = D(ii, k, 19); - g2 += 1.29099440574646f * d * f1; - g1 += 1.29099440574646f * d * f2; + h4 += 0.3872983455657959f * d * a7; + h7 += 0.3872983455657959f * d * a8; + h6 += -0.22360679507255554f * d * a9; + h8 += 0.3872983455657959f * d * a9; } { const float d = D(ii, k, 20); - g1 += -0.3726779818534851f * d * f1; - g1 += -0.3726779818534851f * d * f1; - g2 += 0.7453559637069702f * d * f2; - g2 += 0.7453559637069702f * d * f2; - g3 += -0.3726779818534851f * d * f3; - g3 += -0.3726779818534851f * d * f3; + h8 += 0.26726123690605164f * d * a38; + h7 += 0.2182178944349289f * d * a39; + h6 += 0.23904572427272797f * d * a40; + h8 += 0.0690065547823906f * d * a40; + h5 += -0.16903084516525269f * d * a41; + h4 += -0.0690065547823906f * d * a42; + h5 += -0.2182178944349289f * d * a43; + h4 += -0.26726123690605164f * d * a44; } { const float d = D(ii, k, 21); - g3 += 1.29099440574646f * d * f2; - g2 += 1.29099440574646f * d * f3; + h4 += 0.2182178944349289f * d * a39; + h5 += 0.2760262191295624f * d * a40; + h6 += 0.29277002811431885f * d * a41; + h7 += 0.2760262191295624f * d * a42; + h8 += 0.2182178944349289f * d * a43; } { const float d = D(ii, k, 22); - g1 += -0.64549720287323f * d * f1; - g1 += -0.64549720287323f * d * f1; - g3 += 0.64549720287323f * d * f3; - g3 += 0.64549720287323f * d * f3; + h4 += 0.26726123690605164f * d * a38; + h5 += 0.2182178944349289f * d * a39; + h4 += -0.0690065547823906f * d * a40; + h7 += -0.16903084516525269f * d * a41; + h6 += 0.23904572427272797f * d * a42; + h8 += -0.0690065547823906f * d * a42; + h7 += 0.2182178944349289f * d * a43; + h8 += 0.26726123690605164f * d * a44; } { const float d = D(ii, k, 23); - g8 += -0.40824830532073975f * d * f1; - g1 += -0.40824830532073975f * d * f8; - g10 += 0.40824830532073975f * d * f3; - g3 += 0.40824830532073975f * d * f10; - g11 += -0.8164966106414795f * d * f2; - g2 += -0.8164966106414795f * d * f11; + h1 += 1.0f * d * a2; } { const float d = D(ii, k, 24); - g7 += 0.40824830532073975f * d * f1; - g1 += 0.40824830532073975f * d * f7; - g9 += 0.7071067690849304f * d * f3; - g3 += 0.7071067690849304f * d * f9; - g10 += -0.40824830532073975f * d * f2; - g2 += -0.40824830532073975f * d * f10; - g11 += 0.40824830532073975f * d * f3; - g3 += 0.40824830532073975f * d * f11; + h2 += 1.0f * d * a2; } { const float d = D(ii, k, 25); - g8 += -0.7071067690849304f * d * f3; - g3 += -0.7071067690849304f * d * f8; - g10 += 0.7071067690849304f * d * f1; - g1 += 0.7071067690849304f * d * f10; + h3 += 1.0f * d * a2; } { const float d = D(ii, k, 26); - g7 += -0.40824830532073975f * d * f3; - g3 += -0.40824830532073975f * d * f7; - g8 += 0.40824830532073975f * d * f2; - g2 += 0.40824830532073975f * d * f8; - g9 += -0.7071067690849304f * d * f1; - g1 += -0.7071067690849304f * d * f9; - g11 += 0.40824830532073975f * d * f1; - g1 += 0.40824830532073975f * d * f11; + h3 += 0.3872983455657959f * d * a23; + h2 += 0.3872983455657959f * d * a24; + h1 += -0.22360679507255554f * d * a25; + h1 += -0.3872983455657959f * d * a27; } { const float d = D(ii, k, 27); - g7 += 0.8164966106414795f * d * f2; - g2 += 0.8164966106414795f * d * f7; - g8 += -0.40824830532073975f * d * f3; - g3 += -0.40824830532073975f * d * f8; - g10 += -0.40824830532073975f * d * f1; - g1 += -0.40824830532073975f * d * f10; + h1 += 0.3872983455657959f * d * a24; + h2 += 0.4472135901451111f * d * a25; + h3 += 0.3872983455657959f * d * a26; } { const float d = D(ii, k, 28); - g9 += -0.8944271802902222f * d * f7; - g7 += -0.8944271802902222f * d * f9; - g10 += 0.7745966911315918f * d * f8; - g8 += 0.7745966911315918f * d * f10; + h1 += 0.3872983455657959f * d * a23; + h3 += -0.22360679507255554f * d * a25; + h2 += 0.3872983455657959f * d * a26; + h3 += 0.3872983455657959f * d * a27; } { const float d = D(ii, k, 29); - g10 += 0.7745966911315918f * d * f7; - g7 += 0.7745966911315918f * d * f10; - g9 += 0.4472135901451111f * d * f8; - g8 += 0.4472135901451111f * d * f9; - g11 += -0.7745966911315918f * d * f8; - g8 += -0.7745966911315918f * d * f11; + h13 += -0.0690065547823906f * d * a23; + h15 += -0.26726123690605164f * d * a23; + h12 += -0.16903084516525269f * d * a24; + h14 += -0.2182178944349289f * d * a24; + h11 += 0.23904572427272797f * d * a25; + h10 += 0.2182178944349289f * d * a26; + h9 += 0.26726123690605164f * d * a27; + h11 += 0.0690065547823906f * d * a27; } { const float d = D(ii, k, 30); - g7 += -0.4472135901451111f * d * f7; - g7 += -0.4472135901451111f * d * f7; - g8 += 0.22360679507255554f * d * f8; - g8 += 0.22360679507255554f * d * f8; - g9 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f9; - g10 += 0.22360679507255554f * d * f10; - g10 += 0.22360679507255554f * d * f10; - g11 += -0.4472135901451111f * d * f11; - g11 += -0.4472135901451111f * d * f11; + h10 += 0.2182178944349289f * d * a23; + h11 += 0.2760262191295624f * d * a24; + h12 += 0.29277002811431885f * d * a25; + h13 += 0.2760262191295624f * d * a26; + h14 += 0.2182178944349289f * d * a27; } { const float d = D(ii, k, 31); - g8 += 0.7745966911315918f * d * f7; - g7 += 0.7745966911315918f * d * f8; - g10 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f10; - g11 += 0.7745966911315918f * d * f10; - g10 += 0.7745966911315918f * d * f11; + h9 += 0.26726123690605164f * d * a23; + h11 += -0.0690065547823906f * d * a23; + h10 += 0.2182178944349289f * d * a24; + h13 += 0.23904572427272797f * d * a25; + h12 += -0.16903084516525269f * d * a26; + h14 += 0.2182178944349289f * d * a26; + h13 += -0.0690065547823906f * d * a27; + h15 += 0.26726123690605164f * d * a27; } { const float d = D(ii, k, 32); - g8 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f8; - g11 += -0.8944271802902222f * d * f9; - g9 += -0.8944271802902222f * d * f11; - g10 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f10; + h3 += 0.3872983455657959f * d * a28; + h2 += 0.3872983455657959f * d * a29; + h1 += -0.22360679507255554f * d * a30; + h1 += -0.3872983455657959f * d * a32; } { const float d = D(ii, k, 33); - g17 += 0.44543540477752686f * d * f3; - g3 += 0.44543540477752686f * d * f17; - g18 += 0.36369648575782776f * d * f2; - g2 += 0.36369648575782776f * d * f18; - g19 += -0.11501092463731766f * d * f3; - g3 += -0.11501092463731766f * d * f19; - g21 += -0.11501092463731766f * d * f1; - g1 += -0.11501092463731766f * d * f21; - g23 += -0.44543540477752686f * d * f1; - g1 += -0.44543540477752686f * d * f23; + h1 += 0.3872983455657959f * d * a29; + h2 += 0.4472135901451111f * d * a30; + h3 += 0.3872983455657959f * d * a31; } { const float d = D(ii, k, 34); - g18 += 0.36369648575782776f * d * f3; - g3 += 0.36369648575782776f * d * f18; - g19 += 0.46004369854927063f * d * f2; - g2 += 0.46004369854927063f * d * f19; - g20 += -0.28171807527542114f * d * f1; - g1 += -0.28171807527542114f * d * f20; - g22 += -0.36369648575782776f * d * f1; - g1 += -0.36369648575782776f * d * f22; + h1 += 0.3872983455657959f * d * a28; + h3 += -0.22360679507255554f * d * a30; + h2 += 0.3872983455657959f * d * a31; + h3 += 0.3872983455657959f * d * a32; } { const float d = D(ii, k, 35); - g19 += 0.39840954542160034f * d * f1; - g1 += 0.39840954542160034f * d * f19; - g20 += 0.48795002698898315f * d * f2; - g2 += 0.48795002698898315f * d * f20; - g21 += 0.39840954542160034f * d * f3; - g3 += 0.39840954542160034f * d * f21; + h13 += -0.0690065547823906f * d * a28; + h15 += -0.26726123690605164f * d * a28; + h12 += -0.16903084516525269f * d * a29; + h14 += -0.2182178944349289f * d * a29; + h11 += 0.23904572427272797f * d * a30; + h10 += 0.2182178944349289f * d * a31; + h9 += 0.26726123690605164f * d * a32; + h11 += 0.0690065547823906f * d * a32; } { const float d = D(ii, k, 36); - g18 += 0.36369648575782776f * d * f1; - g1 += 0.36369648575782776f * d * f18; - g20 += -0.28171807527542114f * d * f3; - g3 += -0.28171807527542114f * d * f20; - g21 += 0.46004369854927063f * d * f2; - g2 += 0.46004369854927063f * d * f21; - g22 += 0.36369648575782776f * d * f3; - g3 += 0.36369648575782776f * d * f22; + h10 += 0.2182178944349289f * d * a28; + h11 += 0.2760262191295624f * d * a29; + h12 += 0.29277002811431885f * d * a30; + h13 += 0.2760262191295624f * d * a31; + h14 += 0.2182178944349289f * d * a32; } { const float d = D(ii, k, 37); - g17 += 0.44543540477752686f * d * f1; - g1 += 0.44543540477752686f * d * f17; - g19 += 0.11501092463731766f * d * f1; - g1 += 0.11501092463731766f * d * f19; - g21 += -0.11501092463731766f * d * f3; - g3 += -0.11501092463731766f * d * f21; - g22 += 0.36369648575782776f * d * f2; - g2 += 0.36369648575782776f * d * f22; - g23 += 0.44543540477752686f * d * f3; - g3 += 0.44543540477752686f * d * f23; + h9 += 0.26726123690605164f * d * a28; + h11 += -0.0690065547823906f * d * a28; + h10 += 0.2182178944349289f * d * a29; + h13 += 0.23904572427272797f * d * a30; + h12 += -0.16903084516525269f * d * a31; + h14 += 0.2182178944349289f * d * a31; + h13 += -0.0690065547823906f * d * a32; + h15 += 0.26726123690605164f * d * a32; } { const float d = D(ii, k, 38); - g17 += -0.4225771129131317f * d * f8; - g8 += -0.4225771129131317f * d * f17; - g19 += -0.32732683420181274f * d * f8; - g8 += -0.32732683420181274f * d * f19; - g20 += -0.26726123690605164f * d * f11; - g11 += -0.26726123690605164f * d * f20; - g21 += 0.32732683420181274f * d * f10; - g10 += 0.32732683420181274f * d * f21; - g22 += -0.5976142883300781f * d * f9; - g9 += -0.5976142883300781f * d * f22; - g23 += -0.4225771129131317f * d * f10; - g10 += -0.4225771129131317f * d * f23; + h0 += 1.0f * d * a10; } { const float d = D(ii, k, 39); - g17 += 0.4225771129131317f * d * f7; - g7 += 0.4225771129131317f * d * f17; - g19 += 0.32732683420181274f * d * f7; - g7 += 0.32732683420181274f * d * f19; - g20 += 0.5345224738121033f * d * f10; - g10 += 0.5345224738121033f * d * f20; - g21 += -0.37796446681022644f * d * f9; - g9 += -0.37796446681022644f * d * f21; - g21 += 0.32732683420181274f * d * f11; - g11 += 0.32732683420181274f * d * f21; - g23 += 0.4225771129131317f * d * f11; - g11 += 0.4225771129131317f * d * f23; + h0 += 1.0f * d * a11; } { const float d = D(ii, k, 40); - g18 += -0.5976142883300781f * d * f11; - g11 += -0.5976142883300781f * d * f18; - g19 += -0.37796446681022644f * d * f10; - g10 += -0.37796446681022644f * d * f19; - g21 += 0.37796446681022644f * d * f8; - g8 += 0.37796446681022644f * d * f21; - g22 += 0.5976142883300781f * d * f7; - g7 += 0.5976142883300781f * d * f22; + h0 += 1.0f * d * a12; } { const float d = D(ii, k, 41); - g17 += -0.4225771129131317f * d * f11; - g11 += -0.4225771129131317f * d * f17; - g19 += 0.37796446681022644f * d * f9; - g9 += 0.37796446681022644f * d * f19; - g19 += 0.32732683420181274f * d * f11; - g11 += 0.32732683420181274f * d * f19; - g20 += -0.5345224738121033f * d * f8; - g8 += -0.5345224738121033f * d * f20; - g21 += -0.32732683420181274f * d * f7; - g7 += -0.32732683420181274f * d * f21; - g23 += 0.4225771129131317f * d * f7; - g7 += 0.4225771129131317f * d * f23; + h6 += -0.22360679507255554f * d * a10; + h8 += -0.3872983455657959f * d * a10; + h5 += 0.3872983455657959f * d * a11; + h4 += 0.3872983455657959f * d * a12; } { const float d = D(ii, k, 42); - g17 += 0.4225771129131317f * d * f10; - g10 += 0.4225771129131317f * d * f17; - g18 += 0.5976142883300781f * d * f9; - g9 += 0.5976142883300781f * d * f18; - g19 += -0.32732683420181274f * d * f10; - g10 += -0.32732683420181274f * d * f19; - g20 += 0.26726123690605164f * d * f7; - g7 += 0.26726123690605164f * d * f20; - g21 += -0.32732683420181274f * d * f8; - g8 += -0.32732683420181274f * d * f21; - g23 += -0.4225771129131317f * d * f8; - g8 += -0.4225771129131317f * d * f23; - } - { const float d = D(ii, k, 43); - g21 += -0.3571428656578064f * d * f17; - g17 += -0.3571428656578064f * d * f21; - g20 += -0.7142857313156128f * d * f18; - g18 += -0.7142857313156128f * d * f20; - g21 += 0.5532833337783813f * d * f19; - g19 += 0.5532833337783813f * d * f21; - g23 += 0.3571428656578064f * d * f19; - g19 += 0.3571428656578064f * d * f23; + h5 += 0.3872983455657959f * d * a10; + h6 += 0.4472135901451111f * d * a11; + h7 += 0.3872983455657959f * d * a12; + } + { const float d = D(ii, k, 43); + h4 += 0.3872983455657959f * d * a10; + h7 += 0.3872983455657959f * d * a11; + h6 += -0.22360679507255554f * d * a12; + h8 += 0.3872983455657959f * d * a12; } { const float d = D(ii, k, 44); - g22 += 0.5646924376487732f * d * f17; - g17 += 0.5646924376487732f * d * f22; - g21 += 0.4374088943004608f * d * f18; - g18 += 0.4374088943004608f * d * f21; - g23 += -0.5646924376487732f * d * f18; - g18 += -0.5646924376487732f * d * f23; - g20 += 0.22587697207927704f * d * f19; - g19 += 0.22587697207927704f * d * f20; - g22 += -0.4374088943004608f * d * f19; - g19 += -0.4374088943004608f * d * f22; + h8 += 0.26726123690605164f * d * a52; + h7 += 0.2182178944349289f * d * a53; + h6 += 0.23904572427272797f * d * a54; + h8 += 0.0690065547823906f * d * a54; + h5 += -0.16903084516525269f * d * a55; + h4 += -0.0690065547823906f * d * a56; + h5 += -0.2182178944349289f * d * a57; + h4 += -0.26726123690605164f * d * a58; } { const float d = D(ii, k, 45); - g17 += -0.3992978632450104f * d * f17; - g17 += -0.3992978632450104f * d * f17; - g19 += 0.2395787090063095f * d * f19; - g19 += 0.2395787090063095f * d * f19; - g20 += 0.31943827867507935f * d * f20; - g20 += 0.31943827867507935f * d * f20; - g21 += 0.2395787090063095f * d * f21; - g21 += 0.2395787090063095f * d * f21; - g23 += -0.3992978632450104f * d * f23; - g23 += -0.3992978632450104f * d * f23; + h4 += 0.2182178944349289f * d * a53; + h5 += 0.2760262191295624f * d * a54; + h6 += 0.29277002811431885f * d * a55; + h7 += 0.2760262191295624f * d * a56; + h8 += 0.2182178944349289f * d * a57; } { const float d = D(ii, k, 46); - g18 += 0.5646924376487732f * d * f17; - g17 += 0.5646924376487732f * d * f18; - g19 += 0.4374088943004608f * d * f18; - g18 += 0.4374088943004608f * d * f19; - g21 += 0.22587697207927704f * d * f20; - g20 += 0.22587697207927704f * d * f21; - g22 += 0.4374088943004608f * d * f21; - g21 += 0.4374088943004608f * d * f22; - g23 += 0.5646924376487732f * d * f22; - g22 += 0.5646924376487732f * d * f23; + h4 += 0.26726123690605164f * d * a52; + h5 += 0.2182178944349289f * d * a53; + h4 += -0.0690065547823906f * d * a54; + h7 += -0.16903084516525269f * d * a55; + h6 += 0.23904572427272797f * d * a56; + h8 += -0.0690065547823906f * d * a56; + h7 += 0.2182178944349289f * d * a57; + h8 += 0.26726123690605164f * d * a58; } { const float d = D(ii, k, 47); - g19 += -0.3571428656578064f * d * f17; - g17 += -0.3571428656578064f * d * f19; - g19 += -0.2766416668891907f * d * f19; - g19 += -0.2766416668891907f * d * f19; - g22 += -0.7142857313156128f * d * f20; - g20 += -0.7142857313156128f * d * f22; - g21 += 0.2766416668891907f * d * f21; - g21 += 0.2766416668891907f * d * f21; - g23 += -0.3571428656578064f * d * f21; - g21 += -0.3571428656578064f * d * f23; + h1 += 1.0f * d * a3; } { const float d = D(ii, k, 48); - g17 += 1.0f * d * f0; - g0 += 1.0f * d * f17; + h2 += 1.0f * d * a3; } { const float d = D(ii, k, 49); - g18 += 1.0f * d * f0; - g0 += 1.0f * d * f18; + h3 += 1.0f * d * a3; } { const float d = D(ii, k, 50); - g19 += 1.0f * d * f0; - g0 += 1.0f * d * f19; + h3 += 0.3872983455657959f * d * a33; + h2 += 0.3872983455657959f * d * a34; + h1 += -0.22360679507255554f * d * a35; + h1 += -0.3872983455657959f * d * a37; } { const float d = D(ii, k, 51); - g20 += 1.0f * d * f0; - g0 += 1.0f * d * f20; + h1 += 0.3872983455657959f * d * a34; + h2 += 0.4472135901451111f * d * a35; + h3 += 0.3872983455657959f * d * a36; } { const float d = D(ii, k, 52); - g21 += 1.0f * d * f0; - g0 += 1.0f * d * f21; + h1 += 0.3872983455657959f * d * a33; + h3 += -0.22360679507255554f * d * a35; + h2 += 0.3872983455657959f * d * a36; + h3 += 0.3872983455657959f * d * a37; } { const float d = D(ii, k, 53); - g22 += 1.0f * d * f0; - g0 += 1.0f * d * f22; + h13 += -0.0690065547823906f * d * a33; + h15 += -0.26726123690605164f * d * a33; + h12 += -0.16903084516525269f * d * a34; + h14 += -0.2182178944349289f * d * a34; + h11 += 0.23904572427272797f * d * a35; + h10 += 0.2182178944349289f * d * a36; + h9 += 0.26726123690605164f * d * a37; + h11 += 0.0690065547823906f * d * a37; } { const float d = D(ii, k, 54); - g23 += 1.0f * d * f0; - g0 += 1.0f * d * f23; + h10 += 0.2182178944349289f * d * a33; + h11 += 0.2760262191295624f * d * a34; + h12 += 0.29277002811431885f * d * a35; + h13 += 0.2760262191295624f * d * a36; + h14 += 0.2182178944349289f * d * a37; } { const float d = D(ii, k, 55); - g7 += 0.6236095428466797f * d * f3; - g3 += 0.6236095428466797f * d * f7; - g11 += 0.6236095428466797f * d * f1; - g1 += 0.6236095428466797f * d * f11; + h9 += 0.26726123690605164f * d * a33; + h11 += -0.0690065547823906f * d * a33; + h10 += 0.2182178944349289f * d * a34; + h13 += 0.23904572427272797f * d * a35; + h12 += -0.16903084516525269f * d * a36; + h14 += 0.2182178944349289f * d * a36; + h13 += -0.0690065547823906f * d * a37; + h15 += 0.26726123690605164f * d * a37; } - { const float d = D(ii, k, 56); - g7 += 0.5091750621795654f * d * f2; - g2 += 0.5091750621795654f * d * f7; - g8 += 0.5091750621795654f * d * f3; - g3 += 0.5091750621795654f * d * f8; - g10 += 0.5091750621795654f * d * f1; - g1 += 0.5091750621795654f * d * f10; + dR(ii, k, 0) += h0; + dR(ii, k, 1) += h1; + dR(ii, k, 2) += h2; + dR(ii, k, 3) += h3; + dR(ii, k, 4) += h4; + dR(ii, k, 5) += h5; + dR(ii, k, 6) += h6; + dR(ii, k, 7) += h7; + dR(ii, k, 8) += h8; + dR(ii, k, 9) += h9; + dR(ii, k, 10) += h10; + dR(ii, k, 11) += h11; + dR(ii, k, 12) += h12; + dR(ii, k, 13) += h13; + dR(ii, k, 14) += h14; + dR(ii, k, 15) += h15; + } + } + +}; + +// self product, 52 terms: GRACE-OFF-2L-small BB +struct T52_838560f4 { + static constexpr int nt = 52, nl = 9; + static constexpr int tab[52][3] = {{0,0,0}, {1,1,1}, {2,2,1}, {3,3,1}, {4,4,2}, {5,5,2}, {6,6,2}, {7,7,2}, {8,8,2}, {1,0,3}, {2,0,4}, {3,0,5}, {4,3,6}, {5,2,6}, {6,1,6}, {8,1,6}, {5,1,7}, {6,2,7}, {7,3,7}, {4,1,8}, {6,3,8}, {7,2,8}, {8,3,8}, {3,1,9}, {2,1,10}, {1,1,11}, {2,2,11}, {3,3,11}, {3,2,12}, {1,1,13}, {3,3,13}, {4,0,14}, {5,0,15}, {6,0,16}, {7,0,17}, {8,0,18}, {6,4,19}, {7,5,19}, {7,4,20}, {6,5,20}, {8,5,20}, {4,4,21}, {5,5,21}, {6,6,21}, {7,7,21}, {8,8,21}, {5,4,22}, {7,6,22}, {8,7,22}, {5,5,23}, {8,6,23}, {7,7,23}}; + static constexpr double cg[52] = {1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 1.2909944487358054, 1.2909944487358056, -0.3726779962499649, 0.7453559924999299, -0.3726779962499649, 1.2909944487358056, -0.6454972243679027, 0.6454972243679027, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, -0.8944271909999157, 0.7745966692414832, 0.7745966692414832, 0.44721359549995787, -0.7745966692414832, -0.44721359549995787, 0.22360679774997894, 0.447213595499958, 0.22360679774997894, -0.44721359549995787, 0.7745966692414832, 0.44721359549995787, 0.7745966692414832, -0.3872983346207416, -0.8944271909999157, 0.3872983346207416}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a3 = L(ii, k, 3); + const float a4 = L(ii, k, 4); + const float a5 = L(ii, k, 5); + const float a6 = L(ii, k, 6); + const float a7 = L(ii, k, 7); + const float a8 = L(ii, k, 8); + out(ii, k, 0) = 1.0f * a0 * a0; + out(ii, k, 1) = 0.3333333432674408f * a1 * a1 + 0.3333333432674408f * a2 * a2 + 0.3333333432674408f * a3 * a3; + out(ii, k, 2) = 0.20000000298023224f * a4 * a4 + 0.20000000298023224f * a5 * a5 + 0.20000000298023224f * a6 * a6 + 0.20000000298023224f * a7 * a7 + 0.20000000298023224f * a8 * a8; + out(ii, k, 3) = 1.0f * a1 * a0; + out(ii, k, 4) = 1.0f * a2 * a0; + out(ii, k, 5) = 1.0f * a3 * a0; + out(ii, k, 6) = 0.3872983455657959f * a4 * a3 + 0.3872983455657959f * a5 * a2 + -0.22360679507255554f * a6 * a1 + -0.3872983455657959f * a8 * a1; + out(ii, k, 7) = 0.3872983455657959f * a5 * a1 + 0.4472135901451111f * a6 * a2 + 0.3872983455657959f * a7 * a3; + out(ii, k, 8) = 0.3872983455657959f * a4 * a1 + -0.22360679507255554f * a6 * a3 + 0.3872983455657959f * a7 * a2 + 0.3872983455657959f * a8 * a3; + out(ii, k, 9) = 1.29099440574646f * a3 * a1; + out(ii, k, 10) = 1.29099440574646f * a2 * a1; + out(ii, k, 11) = -0.3726779818534851f * a1 * a1 + 0.7453559637069702f * a2 * a2 + -0.3726779818534851f * a3 * a3; + out(ii, k, 12) = 1.29099440574646f * a3 * a2; + out(ii, k, 13) = -0.64549720287323f * a1 * a1 + 0.64549720287323f * a3 * a3; + out(ii, k, 14) = 1.0f * a4 * a0; + out(ii, k, 15) = 1.0f * a5 * a0; + out(ii, k, 16) = 1.0f * a6 * a0; + out(ii, k, 17) = 1.0f * a7 * a0; + out(ii, k, 18) = 1.0f * a8 * a0; + out(ii, k, 19) = -0.8944271802902222f * a6 * a4 + 0.7745966911315918f * a7 * a5; + out(ii, k, 20) = 0.7745966911315918f * a7 * a4 + 0.4472135901451111f * a6 * a5 + -0.7745966911315918f * a8 * a5; + out(ii, k, 21) = -0.4472135901451111f * a4 * a4 + 0.22360679507255554f * a5 * a5 + 0.4472135901451111f * a6 * a6 + 0.22360679507255554f * a7 * a7 + -0.4472135901451111f * a8 * a8; + out(ii, k, 22) = 0.7745966911315918f * a5 * a4 + 0.4472135901451111f * a7 * a6 + 0.7745966911315918f * a8 * a7; + out(ii, k, 23) = -0.3872983455657959f * a5 * a5 + -0.8944271802902222f * a8 * a6 + 0.3872983455657959f * a7 * a7; + } + + template + KOKKOS_INLINE_FUNCTION static void rev(const V &F, const V &, const V &D, const V &dF, const V &, + const int ii, const int k) + { + const float f0 = F(ii, k, 0); + const float f1 = F(ii, k, 1); + const float f2 = F(ii, k, 2); + const float f3 = F(ii, k, 3); + const float f4 = F(ii, k, 4); + const float f5 = F(ii, k, 5); + const float f6 = F(ii, k, 6); + const float f7 = F(ii, k, 7); + const float f8 = F(ii, k, 8); + { + float g0 = 0.0f; + float g1 = 0.0f; + float g2 = 0.0f; + float g3 = 0.0f; + float g4 = 0.0f; + float g5 = 0.0f; + float g6 = 0.0f; + float g7 = 0.0f; + float g8 = 0.0f; + { const float d = D(ii, k, 0); + g0 += 1.0f * d * f0; + g0 += 1.0f * d * f0; } - { const float d = D(ii, k, 57); - g7 += -0.16101530194282532f * d * f3; - g3 += -0.16101530194282532f * d * f7; - g8 += 0.6440612077713013f * d * f2; - g2 += 0.6440612077713013f * d * f8; - g9 += 0.5577733516693115f * d * f1; - g1 += 0.5577733516693115f * d * f9; - g11 += 0.16101530194282532f * d * f1; - g1 += 0.16101530194282532f * d * f11; + { const float d = D(ii, k, 1); + g1 += 0.3333333432674408f * d * f1; + g1 += 0.3333333432674408f * d * f1; + g2 += 0.3333333432674408f * d * f2; + g2 += 0.3333333432674408f * d * f2; + g3 += 0.3333333432674408f * d * f3; + g3 += 0.3333333432674408f * d * f3; } - { const float d = D(ii, k, 58); - g8 += -0.3944053053855896f * d * f1; - g1 += -0.3944053053855896f * d * f8; - g9 += 0.6831300258636475f * d * f2; - g2 += 0.6831300258636475f * d * f9; - g10 += -0.3944053053855896f * d * f3; - g3 += -0.3944053053855896f * d * f10; + { const float d = D(ii, k, 2); + g4 += 0.20000000298023224f * d * f4; + g4 += 0.20000000298023224f * d * f4; + g5 += 0.20000000298023224f * d * f5; + g5 += 0.20000000298023224f * d * f5; + g6 += 0.20000000298023224f * d * f6; + g6 += 0.20000000298023224f * d * f6; + g7 += 0.20000000298023224f * d * f7; + g7 += 0.20000000298023224f * d * f7; + g8 += 0.20000000298023224f * d * f8; + g8 += 0.20000000298023224f * d * f8; } - { const float d = D(ii, k, 59); - g7 += -0.16101530194282532f * d * f1; - g1 += -0.16101530194282532f * d * f7; - g9 += 0.5577733516693115f * d * f3; - g3 += 0.5577733516693115f * d * f9; - g10 += 0.6440612077713013f * d * f2; - g2 += 0.6440612077713013f * d * f10; - g11 += -0.16101530194282532f * d * f3; - g3 += -0.16101530194282532f * d * f11; + { const float d = D(ii, k, 3); + g1 += 1.0f * d * f0; + g0 += 1.0f * d * f1; } - { const float d = D(ii, k, 60); - g8 += -0.5091750621795654f * d * f1; - g1 += -0.5091750621795654f * d * f8; - g10 += 0.5091750621795654f * d * f3; - g3 += 0.5091750621795654f * d * f10; - g11 += 0.5091750621795654f * d * f2; - g2 += 0.5091750621795654f * d * f11; + { const float d = D(ii, k, 4); + g2 += 1.0f * d * f0; + g0 += 1.0f * d * f2; } - { const float d = D(ii, k, 61); - g7 += -0.6236095428466797f * d * f1; - g1 += -0.6236095428466797f * d * f7; - g11 += 0.6236095428466797f * d * f3; - g3 += 0.6236095428466797f * d * f11; + { const float d = D(ii, k, 5); + g3 += 1.0f * d * f0; + g0 += 1.0f * d * f3; } - { const float d = D(ii, k, 62); - g18 += -0.3535533845424652f * d * f1; - g1 += -0.3535533845424652f * d * f18; - g22 += 0.3535533845424652f * d * f3; - g3 += 0.3535533845424652f * d * f22; - g23 += -0.8660253882408142f * d * f2; - g2 += -0.8660253882408142f * d * f23; + { const float d = D(ii, k, 6); + g4 += 0.3872983455657959f * d * f3; + g3 += 0.3872983455657959f * d * f4; + g5 += 0.3872983455657959f * d * f2; + g2 += 0.3872983455657959f * d * f5; + g6 += -0.22360679507255554f * d * f1; + g1 += -0.22360679507255554f * d * f6; + g8 += -0.3872983455657959f * d * f1; + g1 += -0.3872983455657959f * d * f8; + } + { const float d = D(ii, k, 7); + g5 += 0.3872983455657959f * d * f1; + g1 += 0.3872983455657959f * d * f5; + g6 += 0.4472135901451111f * d * f2; + g2 += 0.4472135901451111f * d * f6; + g7 += 0.3872983455657959f * d * f3; + g3 += 0.3872983455657959f * d * f7; + } + { const float d = D(ii, k, 8); + g4 += 0.3872983455657959f * d * f1; + g1 += 0.3872983455657959f * d * f4; + g6 += -0.22360679507255554f * d * f3; + g3 += -0.22360679507255554f * d * f6; + g7 += 0.3872983455657959f * d * f2; + g2 += 0.3872983455657959f * d * f7; + g8 += 0.3872983455657959f * d * f3; + g3 += 0.3872983455657959f * d * f8; } - { const float d = D(ii, k, 63); - g17 += 0.3535533845424652f * d * f1; - g1 += 0.3535533845424652f * d * f17; - g19 += -0.4564354717731476f * d * f1; - g1 += -0.4564354717731476f * d * f19; - g21 += 0.4564354717731476f * d * f3; - g3 += 0.4564354717731476f * d * f21; - g22 += -0.5773502588272095f * d * f2; - g2 += -0.5773502588272095f * d * f22; - g23 += 0.3535533845424652f * d * f3; - g3 += 0.3535533845424652f * d * f23; + { const float d = D(ii, k, 9); + g3 += 1.29099440574646f * d * f1; + g1 += 1.29099440574646f * d * f3; } - { const float d = D(ii, k, 64); - g18 += 0.4564354717731476f * d * f1; - g1 += 0.4564354717731476f * d * f18; - g20 += 0.7071067690849304f * d * f3; - g3 += 0.7071067690849304f * d * f20; - g21 += -0.28867512941360474f * d * f2; - g2 += -0.28867512941360474f * d * f21; - g22 += 0.4564354717731476f * d * f3; - g3 += 0.4564354717731476f * d * f22; + { const float d = D(ii, k, 10); + g2 += 1.29099440574646f * d * f1; + g1 += 1.29099440574646f * d * f2; } - { const float d = D(ii, k, 65); - g19 += -0.7071067690849304f * d * f3; - g3 += -0.7071067690849304f * d * f19; - g21 += 0.7071067690849304f * d * f1; - g1 += 0.7071067690849304f * d * f21; + { const float d = D(ii, k, 11); + g1 += -0.3726779818534851f * d * f1; + g1 += -0.3726779818534851f * d * f1; + g2 += 0.7453559637069702f * d * f2; + g2 += 0.7453559637069702f * d * f2; + g3 += -0.3726779818534851f * d * f3; + g3 += -0.3726779818534851f * d * f3; } - { const float d = D(ii, k, 66); - g18 += -0.4564354717731476f * d * f3; - g3 += -0.4564354717731476f * d * f18; - g19 += 0.28867512941360474f * d * f2; - g2 += 0.28867512941360474f * d * f19; - g20 += -0.7071067690849304f * d * f1; - g1 += -0.7071067690849304f * d * f20; - g22 += 0.4564354717731476f * d * f1; - g1 += 0.4564354717731476f * d * f22; + { const float d = D(ii, k, 12); + g3 += 1.29099440574646f * d * f2; + g2 += 1.29099440574646f * d * f3; } - { const float d = D(ii, k, 67); - g17 += -0.3535533845424652f * d * f3; - g3 += -0.3535533845424652f * d * f17; - g18 += 0.5773502588272095f * d * f2; - g2 += 0.5773502588272095f * d * f18; - g19 += -0.4564354717731476f * d * f3; - g3 += -0.4564354717731476f * d * f19; - g21 += -0.4564354717731476f * d * f1; - g1 += -0.4564354717731476f * d * f21; - g23 += 0.3535533845424652f * d * f1; - g1 += 0.3535533845424652f * d * f23; + { const float d = D(ii, k, 13); + g1 += -0.64549720287323f * d * f1; + g1 += -0.64549720287323f * d * f1; + g3 += 0.64549720287323f * d * f3; + g3 += 0.64549720287323f * d * f3; } - { const float d = D(ii, k, 68); - g17 += 0.8660253882408142f * d * f2; - g2 += 0.8660253882408142f * d * f17; - g18 += -0.3535533845424652f * d * f3; - g3 += -0.3535533845424652f * d * f18; - g22 += -0.3535533845424652f * d * f1; - g1 += -0.3535533845424652f * d * f22; + { const float d = D(ii, k, 14); + g4 += 1.0f * d * f0; + g0 += 1.0f * d * f4; } - { const float d = D(ii, k, 69); - g17 += -0.55901700258255f * d * f9; - g9 += -0.55901700258255f * d * f17; - g18 += 0.3952847123146057f * d * f10; - g10 += 0.3952847123146057f * d * f18; - g19 += -0.25f * d * f11; - g11 += -0.25f * d * f19; - g21 += -0.25f * d * f7; - g7 += -0.25f * d * f21; - g22 += 0.3952847123146057f * d * f8; - g8 += 0.3952847123146057f * d * f22; + { const float d = D(ii, k, 15); + g5 += 1.0f * d * f0; + g0 += 1.0f * d * f5; } - { const float d = D(ii, k, 70); - g17 += 0.3952847123146057f * d * f10; - g10 += 0.3952847123146057f * d * f17; - g19 += 0.3061862289905548f * d * f10; - g10 += 0.3061862289905548f * d * f19; - g20 += -0.5f * d * f7; - g7 += -0.5f * d * f20; - g21 += 0.3061862289905548f * d * f8; - g8 += 0.3061862289905548f * d * f21; - g23 += -0.3952847123146057f * d * f8; - g8 += -0.3952847123146057f * d * f23; + { const float d = D(ii, k, 16); + g6 += 1.0f * d * f0; + g0 += 1.0f * d * f6; } - { const float d = D(ii, k, 71); - g17 += -0.25f * d * f11; - g11 += -0.25f * d * f17; - g18 += 0.3061862289905548f * d * f10; - g10 += 0.3061862289905548f * d * f18; - g19 += 0.3354102075099945f * d * f9; - g9 += 0.3354102075099945f * d * f19; - g19 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f19; - g20 += 0.15811388194561005f * d * f8; - g8 += 0.15811388194561005f * d * f20; - g21 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f21; - g22 += -0.3061862289905548f * d * f8; - g8 += -0.3061862289905548f * d * f22; - g23 += 0.25f * d * f7; - g7 += 0.25f * d * f23; + { const float d = D(ii, k, 17); + g7 += 1.0f * d * f0; + g0 += 1.0f * d * f7; } - { const float d = D(ii, k, 72); - g18 += -0.5f * d * f7; - g7 += -0.5f * d * f18; - g19 += 0.15811388194561005f * d * f8; - g8 += 0.15811388194561005f * d * f19; - g20 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f20; - g21 += 0.15811388194561005f * d * f10; - g10 += 0.15811388194561005f * d * f21; - g22 += -0.5f * d * f11; - g11 += -0.5f * d * f22; + { const float d = D(ii, k, 18); + g8 += 1.0f * d * f0; + g0 += 1.0f * d * f8; } - { const float d = D(ii, k, 73); - g17 += -0.25f * d * f7; - g7 += -0.25f * d * f17; - g18 += 0.3061862289905548f * d * f8; - g8 += 0.3061862289905548f * d * f18; - g19 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f19; - g20 += 0.15811388194561005f * d * f10; - g10 += 0.15811388194561005f * d * f20; - g21 += 0.3354102075099945f * d * f9; - g9 += 0.3354102075099945f * d * f21; - g21 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f21; - g22 += 0.3061862289905548f * d * f10; - g10 += 0.3061862289905548f * d * f22; - g23 += -0.25f * d * f11; - g11 += -0.25f * d * f23; + { const float d = D(ii, k, 19); + g6 += -0.8944271802902222f * d * f4; + g4 += -0.8944271802902222f * d * f6; + g7 += 0.7745966911315918f * d * f5; + g5 += 0.7745966911315918f * d * f7; } - { const float d = D(ii, k, 74); - g17 += 0.3952847123146057f * d * f8; - g8 += 0.3952847123146057f * d * f17; - g19 += -0.3061862289905548f * d * f8; - g8 += -0.3061862289905548f * d * f19; - g20 += -0.5f * d * f11; - g11 += -0.5f * d * f20; - g21 += 0.3061862289905548f * d * f10; - g10 += 0.3061862289905548f * d * f21; - g23 += 0.3952847123146057f * d * f10; - g10 += 0.3952847123146057f * d * f23; + { const float d = D(ii, k, 20); + g7 += 0.7745966911315918f * d * f4; + g4 += 0.7745966911315918f * d * f7; + g6 += 0.4472135901451111f * d * f5; + g5 += 0.4472135901451111f * d * f6; + g8 += -0.7745966911315918f * d * f5; + g5 += -0.7745966911315918f * d * f8; } - { const float d = D(ii, k, 75); - g18 += -0.3952847123146057f * d * f8; - g8 += -0.3952847123146057f * d * f18; - g19 += 0.25f * d * f7; - g7 += 0.25f * d * f19; - g21 += -0.25f * d * f11; - g11 += -0.25f * d * f21; - g22 += 0.3952847123146057f * d * f10; - g10 += 0.3952847123146057f * d * f22; - g23 += -0.55901700258255f * d * f9; - g9 += -0.55901700258255f * d * f23; + { const float d = D(ii, k, 21); + g4 += -0.4472135901451111f * d * f4; + g4 += -0.4472135901451111f * d * f4; + g5 += 0.22360679507255554f * d * f5; + g5 += 0.22360679507255554f * d * f5; + g6 += 0.4472135901451111f * d * f6; + g6 += 0.4472135901451111f * d * f6; + g7 += 0.22360679507255554f * d * f7; + g7 += 0.22360679507255554f * d * f7; + g8 += -0.4472135901451111f * d * f8; + g8 += -0.4472135901451111f * d * f8; } - dF(ii, k, 0) = g0; - dF(ii, k, 1) = g1; - dF(ii, k, 2) = g2; - dF(ii, k, 3) = g3; - dF(ii, k, 4) = g4; - dF(ii, k, 5) = g5; - dF(ii, k, 6) = g6; - dF(ii, k, 7) = g7; - dF(ii, k, 8) = g8; - dF(ii, k, 9) = g9; - dF(ii, k, 10) = g10; - dF(ii, k, 11) = g11; - dF(ii, k, 12) = g12; - dF(ii, k, 13) = g13; - dF(ii, k, 14) = g14; - dF(ii, k, 15) = g15; - dF(ii, k, 16) = g16; - dF(ii, k, 17) = g17; - dF(ii, k, 18) = g18; - dF(ii, k, 19) = g19; - dF(ii, k, 20) = g20; - dF(ii, k, 21) = g21; - dF(ii, k, 22) = g22; - dF(ii, k, 23) = g23; - } -} - -constexpr int nt_BBB = 37; -constexpr int tab_BBB[37][3] = {{0,0,0}, {1,0,1}, {7,4,2}, {8,5,2}, {9,6,2}, {23,12,3}, {24,13,3}, {25,14,3}, {26,15,3}, {27,16,3}, {2,0,4}, {28,12,5}, {29,13,5}, {30,14,5}, {31,15,5}, {32,16,5}, {62,24,6}, {63,25,6}, {64,26,6}, {65,27,6}, {66,28,6}, {67,29,6}, {68,30,6}, {10,4,7}, {11,5,7}, {12,6,7}, {38,12,8}, {39,13,8}, {40,14,8}, {41,15,8}, {42,16,8}, {3,0,9}, {43,12,10}, {44,13,10}, {45,14,10}, {46,15,10}, {47,16,10}}; -constexpr double cg_BBB[37] = {1.0, 1.0, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224}; - -template -KOKKOS_INLINE_FUNCTION void fwd_BBB(const V &L, const V &R, const V &out, const int ii, const int k) -{ - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a7 = L(ii, k, 7); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a23 = L(ii, k, 23); - const float a24 = L(ii, k, 24); - const float a25 = L(ii, k, 25); - const float a26 = L(ii, k, 26); - const float a27 = L(ii, k, 27); - const float a28 = L(ii, k, 28); - const float a29 = L(ii, k, 29); - const float a30 = L(ii, k, 30); - const float a31 = L(ii, k, 31); - const float a32 = L(ii, k, 32); - const float a38 = L(ii, k, 38); - const float a39 = L(ii, k, 39); - const float a40 = L(ii, k, 40); - const float a41 = L(ii, k, 41); - const float a42 = L(ii, k, 42); - const float a43 = L(ii, k, 43); - const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); - const float a62 = L(ii, k, 62); - const float a63 = L(ii, k, 63); - const float a64 = L(ii, k, 64); - const float a65 = L(ii, k, 65); - const float a66 = L(ii, k, 66); - const float a67 = L(ii, k, 67); - const float a68 = L(ii, k, 68); + { const float d = D(ii, k, 22); + g5 += 0.7745966911315918f * d * f4; + g4 += 0.7745966911315918f * d * f5; + g7 += 0.4472135901451111f * d * f6; + g6 += 0.4472135901451111f * d * f7; + g8 += 0.7745966911315918f * d * f7; + g7 += 0.7745966911315918f * d * f8; + } + { const float d = D(ii, k, 23); + g5 += -0.3872983455657959f * d * f5; + g5 += -0.3872983455657959f * d * f5; + g8 += -0.8944271802902222f * d * f6; + g6 += -0.8944271802902222f * d * f8; + g7 += 0.3872983455657959f * d * f7; + g7 += 0.3872983455657959f * d * f7; + } + if constexpr (ACC) { + dF(ii, k, 0) += g0; + dF(ii, k, 1) += g1; + dF(ii, k, 2) += g2; + dF(ii, k, 3) += g3; + dF(ii, k, 4) += g4; + dF(ii, k, 5) += g5; + dF(ii, k, 6) += g6; + dF(ii, k, 7) += g7; + dF(ii, k, 8) += g8; + } else { + dF(ii, k, 0) = g0; + dF(ii, k, 1) = g1; + dF(ii, k, 2) = g2; + dF(ii, k, 3) = g3; + dF(ii, k, 4) = g4; + dF(ii, k, 5) = g5; + dF(ii, k, 6) = g6; + dF(ii, k, 7) = g7; + dF(ii, k, 8) = g8; + } + } + } + +}; + +// mixed product, 11 terms: GRACE-OFF-2L-small BBB +struct T11_f66e5d83 { + static constexpr int nt = 11, nl = 24; + static constexpr int tab[11][3] = {{0,0,0}, {1,0,1}, {6,1,2}, {7,2,2}, {8,3,2}, {2,0,3}, {19,4,4}, {20,5,4}, {21,6,4}, {22,7,4}, {23,8,4}}; + static constexpr double cg[11] = {1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { + const float a0 = L(ii, k, 0); + const float a1 = L(ii, k, 1); + const float a2 = L(ii, k, 2); + const float a6 = L(ii, k, 6); + const float a7 = L(ii, k, 7); + const float a8 = L(ii, k, 8); + const float a19 = L(ii, k, 19); + const float a20 = L(ii, k, 20); + const float a21 = L(ii, k, 21); + const float a22 = L(ii, k, 22); + const float a23 = L(ii, k, 23); const float b0 = R(ii, k, 0); + const float b1 = R(ii, k, 1); + const float b2 = R(ii, k, 2); + const float b3 = R(ii, k, 3); const float b4 = R(ii, k, 4); const float b5 = R(ii, k, 5); const float b6 = R(ii, k, 6); - const float b12 = R(ii, k, 12); - const float b13 = R(ii, k, 13); - const float b14 = R(ii, k, 14); - const float b15 = R(ii, k, 15); - const float b16 = R(ii, k, 16); - const float b24 = R(ii, k, 24); - const float b25 = R(ii, k, 25); - const float b26 = R(ii, k, 26); - const float b27 = R(ii, k, 27); - const float b28 = R(ii, k, 28); - const float b29 = R(ii, k, 29); - const float b30 = R(ii, k, 30); + const float b7 = R(ii, k, 7); + const float b8 = R(ii, k, 8); out(ii, k, 0) = 1.0f * a0 * b0; out(ii, k, 1) = 1.0f * a1 * b0; - out(ii, k, 2) = 0.3333333432674408f * a7 * b4 + 0.3333333432674408f * a8 * b5 + 0.3333333432674408f * a9 * b6; - out(ii, k, 3) = 0.20000000298023224f * a23 * b12 + 0.20000000298023224f * a24 * b13 + 0.20000000298023224f * a25 * b14 + 0.20000000298023224f * a26 * b15 + 0.20000000298023224f * a27 * b16; - out(ii, k, 4) = 1.0f * a2 * b0; - out(ii, k, 5) = 0.20000000298023224f * a28 * b12 + 0.20000000298023224f * a29 * b13 + 0.20000000298023224f * a30 * b14 + 0.20000000298023224f * a31 * b15 + 0.20000000298023224f * a32 * b16; - out(ii, k, 6) = 0.1428571492433548f * a62 * b24 + 0.1428571492433548f * a63 * b25 + 0.1428571492433548f * a64 * b26 + 0.1428571492433548f * a65 * b27 + 0.1428571492433548f * a66 * b28 + 0.1428571492433548f * a67 * b29 + 0.1428571492433548f * a68 * b30; - out(ii, k, 7) = 0.3333333432674408f * a10 * b4 + 0.3333333432674408f * a11 * b5 + 0.3333333432674408f * a12 * b6; - out(ii, k, 8) = 0.20000000298023224f * a38 * b12 + 0.20000000298023224f * a39 * b13 + 0.20000000298023224f * a40 * b14 + 0.20000000298023224f * a41 * b15 + 0.20000000298023224f * a42 * b16; - out(ii, k, 9) = 1.0f * a3 * b0; - out(ii, k, 10) = 0.20000000298023224f * a43 * b12 + 0.20000000298023224f * a44 * b13 + 0.20000000298023224f * a45 * b14 + 0.20000000298023224f * a46 * b15 + 0.20000000298023224f * a47 * b16; -} + out(ii, k, 2) = 0.3333333432674408f * a6 * b1 + 0.3333333432674408f * a7 * b2 + 0.3333333432674408f * a8 * b3; + out(ii, k, 3) = 1.0f * a2 * b0; + out(ii, k, 4) = 0.20000000298023224f * a19 * b4 + 0.20000000298023224f * a20 * b5 + 0.20000000298023224f * a21 * b6 + 0.20000000298023224f * a22 * b7 + 0.20000000298023224f * a23 * b8; + } -template -KOKKOS_INLINE_FUNCTION void rev_BBB(const V &L, const V &R, const V &D, const V &dL, const V &dR, const int ii, const int k) -{ + template + KOKKOS_INLINE_FUNCTION static void rev(const V &L, const V &R, const V &D, const V &dL, + const V &dR, const int ii, const int k) + { + static_assert(!ACC, "mixed products assign dL"); { const float b0 = R(ii, k, 0); + const float b1 = R(ii, k, 1); + const float b2 = R(ii, k, 2); + const float b3 = R(ii, k, 3); const float b4 = R(ii, k, 4); const float b5 = R(ii, k, 5); const float b6 = R(ii, k, 6); - const float b12 = R(ii, k, 12); - const float b13 = R(ii, k, 13); - const float b14 = R(ii, k, 14); - const float b15 = R(ii, k, 15); - const float b16 = R(ii, k, 16); - const float b24 = R(ii, k, 24); - const float b25 = R(ii, k, 25); - const float b26 = R(ii, k, 26); - const float b27 = R(ii, k, 27); - const float b28 = R(ii, k, 28); - const float b29 = R(ii, k, 29); - const float b30 = R(ii, k, 30); + const float b7 = R(ii, k, 7); + const float b8 = R(ii, k, 8); { float g0 = 0.0f; float g1 = 0.0f; @@ -19263,51 +27404,6 @@ KOKKOS_INLINE_FUNCTION void rev_BBB(const V &L, const V &R, const V &D, const V float g21 = 0.0f; float g22 = 0.0f; float g23 = 0.0f; - float g24 = 0.0f; - float g25 = 0.0f; - float g26 = 0.0f; - float g27 = 0.0f; - float g28 = 0.0f; - float g29 = 0.0f; - float g30 = 0.0f; - float g31 = 0.0f; - float g32 = 0.0f; - float g33 = 0.0f; - float g34 = 0.0f; - float g35 = 0.0f; - float g36 = 0.0f; - float g37 = 0.0f; - float g38 = 0.0f; - float g39 = 0.0f; - float g40 = 0.0f; - float g41 = 0.0f; - float g42 = 0.0f; - float g43 = 0.0f; - float g44 = 0.0f; - float g45 = 0.0f; - float g46 = 0.0f; - float g47 = 0.0f; - float g48 = 0.0f; - float g49 = 0.0f; - float g50 = 0.0f; - float g51 = 0.0f; - float g52 = 0.0f; - float g53 = 0.0f; - float g54 = 0.0f; - float g55 = 0.0f; - float g56 = 0.0f; - float g57 = 0.0f; - float g58 = 0.0f; - float g59 = 0.0f; - float g60 = 0.0f; - float g61 = 0.0f; - float g62 = 0.0f; - float g63 = 0.0f; - float g64 = 0.0f; - float g65 = 0.0f; - float g66 = 0.0f; - float g67 = 0.0f; - float g68 = 0.0f; { const float d = D(ii, k, 0); g0 += 1.0f * d * b0; } @@ -19315,57 +27411,19 @@ KOKKOS_INLINE_FUNCTION void rev_BBB(const V &L, const V &R, const V &D, const V g1 += 1.0f * d * b0; } { const float d = D(ii, k, 2); - g7 += 0.3333333432674408f * d * b4; - g8 += 0.3333333432674408f * d * b5; - g9 += 0.3333333432674408f * d * b6; + g6 += 0.3333333432674408f * d * b1; + g7 += 0.3333333432674408f * d * b2; + g8 += 0.3333333432674408f * d * b3; } { const float d = D(ii, k, 3); - g23 += 0.20000000298023224f * d * b12; - g24 += 0.20000000298023224f * d * b13; - g25 += 0.20000000298023224f * d * b14; - g26 += 0.20000000298023224f * d * b15; - g27 += 0.20000000298023224f * d * b16; - } - { const float d = D(ii, k, 4); g2 += 1.0f * d * b0; } - { const float d = D(ii, k, 5); - g28 += 0.20000000298023224f * d * b12; - g29 += 0.20000000298023224f * d * b13; - g30 += 0.20000000298023224f * d * b14; - g31 += 0.20000000298023224f * d * b15; - g32 += 0.20000000298023224f * d * b16; - } - { const float d = D(ii, k, 6); - g62 += 0.1428571492433548f * d * b24; - g63 += 0.1428571492433548f * d * b25; - g64 += 0.1428571492433548f * d * b26; - g65 += 0.1428571492433548f * d * b27; - g66 += 0.1428571492433548f * d * b28; - g67 += 0.1428571492433548f * d * b29; - g68 += 0.1428571492433548f * d * b30; - } - { const float d = D(ii, k, 7); - g10 += 0.3333333432674408f * d * b4; - g11 += 0.3333333432674408f * d * b5; - g12 += 0.3333333432674408f * d * b6; - } - { const float d = D(ii, k, 8); - g38 += 0.20000000298023224f * d * b12; - g39 += 0.20000000298023224f * d * b13; - g40 += 0.20000000298023224f * d * b14; - g41 += 0.20000000298023224f * d * b15; - g42 += 0.20000000298023224f * d * b16; - } - { const float d = D(ii, k, 9); - g3 += 1.0f * d * b0; - } - { const float d = D(ii, k, 10); - g43 += 0.20000000298023224f * d * b12; - g44 += 0.20000000298023224f * d * b13; - g45 += 0.20000000298023224f * d * b14; - g46 += 0.20000000298023224f * d * b15; - g47 += 0.20000000298023224f * d * b16; + { const float d = D(ii, k, 4); + g19 += 0.20000000298023224f * d * b4; + g20 += 0.20000000298023224f * d * b5; + g21 += 0.20000000298023224f * d * b6; + g22 += 0.20000000298023224f * d * b7; + g23 += 0.20000000298023224f * d * b8; } dL(ii, k, 0) = g0; dL(ii, k, 1) = g1; @@ -19391,107 +27449,29 @@ KOKKOS_INLINE_FUNCTION void rev_BBB(const V &L, const V &R, const V &D, const V dL(ii, k, 21) = g21; dL(ii, k, 22) = g22; dL(ii, k, 23) = g23; - dL(ii, k, 24) = g24; - dL(ii, k, 25) = g25; - dL(ii, k, 26) = g26; - dL(ii, k, 27) = g27; - dL(ii, k, 28) = g28; - dL(ii, k, 29) = g29; - dL(ii, k, 30) = g30; - dL(ii, k, 31) = g31; - dL(ii, k, 32) = g32; - dL(ii, k, 33) = g33; - dL(ii, k, 34) = g34; - dL(ii, k, 35) = g35; - dL(ii, k, 36) = g36; - dL(ii, k, 37) = g37; - dL(ii, k, 38) = g38; - dL(ii, k, 39) = g39; - dL(ii, k, 40) = g40; - dL(ii, k, 41) = g41; - dL(ii, k, 42) = g42; - dL(ii, k, 43) = g43; - dL(ii, k, 44) = g44; - dL(ii, k, 45) = g45; - dL(ii, k, 46) = g46; - dL(ii, k, 47) = g47; - dL(ii, k, 48) = g48; - dL(ii, k, 49) = g49; - dL(ii, k, 50) = g50; - dL(ii, k, 51) = g51; - dL(ii, k, 52) = g52; - dL(ii, k, 53) = g53; - dL(ii, k, 54) = g54; - dL(ii, k, 55) = g55; - dL(ii, k, 56) = g56; - dL(ii, k, 57) = g57; - dL(ii, k, 58) = g58; - dL(ii, k, 59) = g59; - dL(ii, k, 60) = g60; - dL(ii, k, 61) = g61; - dL(ii, k, 62) = g62; - dL(ii, k, 63) = g63; - dL(ii, k, 64) = g64; - dL(ii, k, 65) = g65; - dL(ii, k, 66) = g66; - dL(ii, k, 67) = g67; - dL(ii, k, 68) = g68; } } { const float a0 = L(ii, k, 0); const float a1 = L(ii, k, 1); const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); + const float a6 = L(ii, k, 6); const float a7 = L(ii, k, 7); const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); + const float a19 = L(ii, k, 19); + const float a20 = L(ii, k, 20); + const float a21 = L(ii, k, 21); + const float a22 = L(ii, k, 22); const float a23 = L(ii, k, 23); - const float a24 = L(ii, k, 24); - const float a25 = L(ii, k, 25); - const float a26 = L(ii, k, 26); - const float a27 = L(ii, k, 27); - const float a28 = L(ii, k, 28); - const float a29 = L(ii, k, 29); - const float a30 = L(ii, k, 30); - const float a31 = L(ii, k, 31); - const float a32 = L(ii, k, 32); - const float a38 = L(ii, k, 38); - const float a39 = L(ii, k, 39); - const float a40 = L(ii, k, 40); - const float a41 = L(ii, k, 41); - const float a42 = L(ii, k, 42); - const float a43 = L(ii, k, 43); - const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); - const float a62 = L(ii, k, 62); - const float a63 = L(ii, k, 63); - const float a64 = L(ii, k, 64); - const float a65 = L(ii, k, 65); - const float a66 = L(ii, k, 66); - const float a67 = L(ii, k, 67); - const float a68 = L(ii, k, 68); float h0 = 0.0f; + float h1 = 0.0f; + float h2 = 0.0f; + float h3 = 0.0f; float h4 = 0.0f; float h5 = 0.0f; float h6 = 0.0f; - float h12 = 0.0f; - float h13 = 0.0f; - float h14 = 0.0f; - float h15 = 0.0f; - float h16 = 0.0f; - float h24 = 0.0f; - float h25 = 0.0f; - float h26 = 0.0f; - float h27 = 0.0f; - float h28 = 0.0f; - float h29 = 0.0f; - float h30 = 0.0f; + float h7 = 0.0f; + float h8 = 0.0f; { const float d = D(ii, k, 0); h0 += 1.0f * d * a0; } @@ -19499,94 +27479,61 @@ KOKKOS_INLINE_FUNCTION void rev_BBB(const V &L, const V &R, const V &D, const V h0 += 1.0f * d * a1; } { const float d = D(ii, k, 2); - h4 += 0.3333333432674408f * d * a7; - h5 += 0.3333333432674408f * d * a8; - h6 += 0.3333333432674408f * d * a9; + h1 += 0.3333333432674408f * d * a6; + h2 += 0.3333333432674408f * d * a7; + h3 += 0.3333333432674408f * d * a8; } { const float d = D(ii, k, 3); - h12 += 0.20000000298023224f * d * a23; - h13 += 0.20000000298023224f * d * a24; - h14 += 0.20000000298023224f * d * a25; - h15 += 0.20000000298023224f * d * a26; - h16 += 0.20000000298023224f * d * a27; - } - { const float d = D(ii, k, 4); h0 += 1.0f * d * a2; } - { const float d = D(ii, k, 5); - h12 += 0.20000000298023224f * d * a28; - h13 += 0.20000000298023224f * d * a29; - h14 += 0.20000000298023224f * d * a30; - h15 += 0.20000000298023224f * d * a31; - h16 += 0.20000000298023224f * d * a32; - } - { const float d = D(ii, k, 6); - h24 += 0.1428571492433548f * d * a62; - h25 += 0.1428571492433548f * d * a63; - h26 += 0.1428571492433548f * d * a64; - h27 += 0.1428571492433548f * d * a65; - h28 += 0.1428571492433548f * d * a66; - h29 += 0.1428571492433548f * d * a67; - h30 += 0.1428571492433548f * d * a68; - } - { const float d = D(ii, k, 7); - h4 += 0.3333333432674408f * d * a10; - h5 += 0.3333333432674408f * d * a11; - h6 += 0.3333333432674408f * d * a12; - } - { const float d = D(ii, k, 8); - h12 += 0.20000000298023224f * d * a38; - h13 += 0.20000000298023224f * d * a39; - h14 += 0.20000000298023224f * d * a40; - h15 += 0.20000000298023224f * d * a41; - h16 += 0.20000000298023224f * d * a42; - } - { const float d = D(ii, k, 9); - h0 += 1.0f * d * a3; - } - { const float d = D(ii, k, 10); - h12 += 0.20000000298023224f * d * a43; - h13 += 0.20000000298023224f * d * a44; - h14 += 0.20000000298023224f * d * a45; - h15 += 0.20000000298023224f * d * a46; - h16 += 0.20000000298023224f * d * a47; + { const float d = D(ii, k, 4); + h4 += 0.20000000298023224f * d * a19; + h5 += 0.20000000298023224f * d * a20; + h6 += 0.20000000298023224f * d * a21; + h7 += 0.20000000298023224f * d * a22; + h8 += 0.20000000298023224f * d * a23; } dR(ii, k, 0) += h0; + dR(ii, k, 1) += h1; + dR(ii, k, 2) += h2; + dR(ii, k, 3) += h3; dR(ii, k, 4) += h4; dR(ii, k, 5) += h5; dR(ii, k, 6) += h6; - dR(ii, k, 12) += h12; - dR(ii, k, 13) += h13; - dR(ii, k, 14) += h14; - dR(ii, k, 15) += h15; - dR(ii, k, 16) += h16; - dR(ii, k, 24) += h24; - dR(ii, k, 25) += h25; - dR(ii, k, 26) += h26; - dR(ii, k, 27) += h27; - dR(ii, k, 28) += h28; - dR(ii, k, 29) += h29; - dR(ii, k, 30) += h30; + dR(ii, k, 7) += h7; + dR(ii, k, 8) += h8; + } } -} -constexpr int nt_BBBB = 156; -constexpr int tab_BBBB[156][3] = {{0,0,0}, {1,0,1}, {2,0,2}, {3,0,3}, {1,1,4}, {2,1,5}, {3,1,6}, {23,18,7}, {24,19,7}, {25,20,7}, {26,21,7}, {27,22,7}, {28,18,8}, {29,19,8}, {30,20,8}, {31,21,8}, {32,22,8}, {33,18,9}, {34,19,9}, {35,20,9}, {36,21,9}, {37,22,9}, {38,18,10}, {39,19,10}, {40,20,10}, {41,21,10}, {42,22,10}, {43,18,11}, {44,19,11}, {45,20,11}, {46,21,11}, {47,22,11}, {7,7,12}, {8,8,12}, {9,9,12}, {10,7,13}, {11,8,13}, {12,9,13}, {23,23,14}, {24,24,14}, {25,25,14}, {26,26,14}, {27,27,14}, {28,23,15}, {29,24,15}, {30,25,15}, {31,26,15}, {32,27,15}, {33,23,16}, {34,24,16}, {35,25,16}, {36,26,16}, {37,27,16}, {38,23,17}, {39,24,17}, {40,25,17}, {41,26,17}, {42,27,17}, {43,23,18}, {44,24,18}, {45,25,18}, {46,26,18}, {47,27,18}, {55,55,19}, {56,56,19}, {57,57,19}, {58,58,19}, {59,59,19}, {60,60,19}, {61,61,19}, {62,55,20}, {63,56,20}, {64,57,20}, {65,58,20}, {66,59,20}, {67,60,20}, {68,61,20}, {69,55,21}, {70,56,21}, {71,57,21}, {72,58,21}, {73,59,21}, {74,60,21}, {75,61,21}, {2,2,22}, {3,2,23}, {33,28,24}, {34,29,24}, {35,30,24}, {36,31,24}, {37,32,24}, {38,28,25}, {39,29,25}, {40,30,25}, {41,31,25}, {42,32,25}, {43,28,26}, {44,29,26}, {45,30,26}, {46,31,26}, {47,32,26}, {33,33,27}, {34,34,27}, {35,35,27}, {36,36,27}, {37,37,27}, {38,33,28}, {39,34,28}, {40,35,28}, {41,36,28}, {42,37,28}, {43,33,29}, {44,34,29}, {45,35,29}, {46,36,29}, {47,37,29}, {62,62,30}, {63,63,30}, {64,64,30}, {65,65,30}, {66,66,30}, {67,67,30}, {68,68,30}, {69,62,31}, {70,63,31}, {71,64,31}, {72,65,31}, {73,66,31}, {74,67,31}, {75,68,31}, {10,10,32}, {11,11,32}, {12,12,32}, {38,38,33}, {39,39,33}, {40,40,33}, {41,41,33}, {42,42,33}, {43,38,34}, {44,39,34}, {45,40,34}, {46,41,34}, {47,42,34}, {69,69,35}, {70,70,35}, {71,71,35}, {72,72,35}, {73,73,35}, {74,74,35}, {75,75,35}, {3,3,36}, {43,43,37}, {44,44,37}, {45,45,37}, {46,46,37}, {47,47,37}}; -constexpr double cg_BBBB[156] = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224}; +}; -template -KOKKOS_INLINE_FUNCTION void fwd_BBBB(const V &L, const V &R, const V &out, const int ii, const int k) -{ +// self product, 96 terms: GRACE-OFF-2L-medium AAAA, GRACE-OFF-2L-medium BBBB, GRACE-OFF-2L-large BBBB +struct T96_f6a40054 { + static constexpr int nt = 96, nl = 59; + static constexpr int tab[96][3] = {{0,0,0}, {1,0,1}, {2,0,2}, {3,0,3}, {7,4,4}, {8,5,4}, {9,6,4}, {10,4,5}, {11,5,5}, {12,6,5}, {1,1,6}, {2,1,7}, {3,1,8}, {23,13,9}, {24,14,9}, {25,15,9}, {26,16,9}, {27,17,9}, {28,13,10}, {29,14,10}, {30,15,10}, {31,16,10}, {32,17,10}, {33,13,11}, {34,14,11}, {35,15,11}, {36,16,11}, {37,17,11}, {23,18,12}, {24,19,12}, {25,20,12}, {26,21,12}, {27,22,12}, {33,18,13}, {34,19,13}, {35,20,13}, {36,21,13}, {37,22,13}, {7,7,14}, {8,8,14}, {9,9,14}, {10,7,15}, {11,8,15}, {12,9,15}, {38,38,16}, {39,39,16}, {40,40,16}, {41,41,16}, {42,42,16}, {43,43,16}, {44,44,16}, {52,38,17}, {53,39,17}, {54,40,17}, {55,41,17}, {56,42,17}, {57,43,17}, {58,44,17}, {2,2,18}, {3,2,19}, {28,23,20}, {29,24,20}, {30,25,20}, {31,26,20}, {32,27,20}, {33,23,21}, {34,24,21}, {35,25,21}, {36,26,21}, {37,27,21}, {28,28,22}, {29,29,22}, {30,30,22}, {31,31,22}, {32,32,22}, {33,28,23}, {34,29,23}, {35,30,23}, {36,31,23}, {37,32,23}, {10,10,24}, {11,11,24}, {12,12,24}, {52,52,25}, {53,53,25}, {54,54,25}, {55,55,25}, {56,56,25}, {57,57,25}, {58,58,25}, {3,3,26}, {33,33,27}, {34,34,27}, {35,35,27}, {36,36,27}, {37,37,27}}; + static constexpr double cg[96] = {1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993}; + + template + KOKKOS_INLINE_FUNCTION static void fwd(const V &L, const V &R, const V &out, const int ii, const int k) + { const float a0 = L(ii, k, 0); const float a1 = L(ii, k, 1); const float a2 = L(ii, k, 2); const float a3 = L(ii, k, 3); + const float a4 = L(ii, k, 4); + const float a5 = L(ii, k, 5); + const float a6 = L(ii, k, 6); const float a7 = L(ii, k, 7); const float a8 = L(ii, k, 8); const float a9 = L(ii, k, 9); const float a10 = L(ii, k, 10); const float a11 = L(ii, k, 11); const float a12 = L(ii, k, 12); + const float a13 = L(ii, k, 13); + const float a14 = L(ii, k, 14); + const float a15 = L(ii, k, 15); + const float a16 = L(ii, k, 16); + const float a17 = L(ii, k, 17); const float a18 = L(ii, k, 18); const float a19 = L(ii, k, 19); const float a20 = L(ii, k, 20); @@ -19614,83 +27561,65 @@ KOKKOS_INLINE_FUNCTION void fwd_BBBB(const V &L, const V &R, const V &out, const const float a42 = L(ii, k, 42); const float a43 = L(ii, k, 43); const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); + const float a52 = L(ii, k, 52); + const float a53 = L(ii, k, 53); + const float a54 = L(ii, k, 54); const float a55 = L(ii, k, 55); const float a56 = L(ii, k, 56); const float a57 = L(ii, k, 57); const float a58 = L(ii, k, 58); - const float a59 = L(ii, k, 59); - const float a60 = L(ii, k, 60); - const float a61 = L(ii, k, 61); - const float a62 = L(ii, k, 62); - const float a63 = L(ii, k, 63); - const float a64 = L(ii, k, 64); - const float a65 = L(ii, k, 65); - const float a66 = L(ii, k, 66); - const float a67 = L(ii, k, 67); - const float a68 = L(ii, k, 68); - const float a69 = L(ii, k, 69); - const float a70 = L(ii, k, 70); - const float a71 = L(ii, k, 71); - const float a72 = L(ii, k, 72); - const float a73 = L(ii, k, 73); - const float a74 = L(ii, k, 74); - const float a75 = L(ii, k, 75); out(ii, k, 0) = 1.0f * a0 * a0; out(ii, k, 1) = 1.0f * a1 * a0; out(ii, k, 2) = 1.0f * a2 * a0; out(ii, k, 3) = 1.0f * a3 * a0; - out(ii, k, 4) = 1.0f * a1 * a1; - out(ii, k, 5) = 1.0f * a2 * a1; - out(ii, k, 6) = 1.0f * a3 * a1; - out(ii, k, 7) = 0.20000000298023224f * a23 * a18 + 0.20000000298023224f * a24 * a19 + 0.20000000298023224f * a25 * a20 + 0.20000000298023224f * a26 * a21 + 0.20000000298023224f * a27 * a22; - out(ii, k, 8) = 0.20000000298023224f * a28 * a18 + 0.20000000298023224f * a29 * a19 + 0.20000000298023224f * a30 * a20 + 0.20000000298023224f * a31 * a21 + 0.20000000298023224f * a32 * a22; - out(ii, k, 9) = 0.20000000298023224f * a33 * a18 + 0.20000000298023224f * a34 * a19 + 0.20000000298023224f * a35 * a20 + 0.20000000298023224f * a36 * a21 + 0.20000000298023224f * a37 * a22; - out(ii, k, 10) = 0.20000000298023224f * a38 * a18 + 0.20000000298023224f * a39 * a19 + 0.20000000298023224f * a40 * a20 + 0.20000000298023224f * a41 * a21 + 0.20000000298023224f * a42 * a22; - out(ii, k, 11) = 0.20000000298023224f * a43 * a18 + 0.20000000298023224f * a44 * a19 + 0.20000000298023224f * a45 * a20 + 0.20000000298023224f * a46 * a21 + 0.20000000298023224f * a47 * a22; - out(ii, k, 12) = 0.3333333432674408f * a7 * a7 + 0.3333333432674408f * a8 * a8 + 0.3333333432674408f * a9 * a9; - out(ii, k, 13) = 0.3333333432674408f * a10 * a7 + 0.3333333432674408f * a11 * a8 + 0.3333333432674408f * a12 * a9; - out(ii, k, 14) = 0.20000000298023224f * a23 * a23 + 0.20000000298023224f * a24 * a24 + 0.20000000298023224f * a25 * a25 + 0.20000000298023224f * a26 * a26 + 0.20000000298023224f * a27 * a27; - out(ii, k, 15) = 0.20000000298023224f * a28 * a23 + 0.20000000298023224f * a29 * a24 + 0.20000000298023224f * a30 * a25 + 0.20000000298023224f * a31 * a26 + 0.20000000298023224f * a32 * a27; - out(ii, k, 16) = 0.20000000298023224f * a33 * a23 + 0.20000000298023224f * a34 * a24 + 0.20000000298023224f * a35 * a25 + 0.20000000298023224f * a36 * a26 + 0.20000000298023224f * a37 * a27; - out(ii, k, 17) = 0.20000000298023224f * a38 * a23 + 0.20000000298023224f * a39 * a24 + 0.20000000298023224f * a40 * a25 + 0.20000000298023224f * a41 * a26 + 0.20000000298023224f * a42 * a27; - out(ii, k, 18) = 0.20000000298023224f * a43 * a23 + 0.20000000298023224f * a44 * a24 + 0.20000000298023224f * a45 * a25 + 0.20000000298023224f * a46 * a26 + 0.20000000298023224f * a47 * a27; - out(ii, k, 19) = 0.1428571492433548f * a55 * a55 + 0.1428571492433548f * a56 * a56 + 0.1428571492433548f * a57 * a57 + 0.1428571492433548f * a58 * a58 + 0.1428571492433548f * a59 * a59 + 0.1428571492433548f * a60 * a60 + 0.1428571492433548f * a61 * a61; - out(ii, k, 20) = 0.1428571492433548f * a62 * a55 + 0.1428571492433548f * a63 * a56 + 0.1428571492433548f * a64 * a57 + 0.1428571492433548f * a65 * a58 + 0.1428571492433548f * a66 * a59 + 0.1428571492433548f * a67 * a60 + 0.1428571492433548f * a68 * a61; - out(ii, k, 21) = 0.1428571492433548f * a69 * a55 + 0.1428571492433548f * a70 * a56 + 0.1428571492433548f * a71 * a57 + 0.1428571492433548f * a72 * a58 + 0.1428571492433548f * a73 * a59 + 0.1428571492433548f * a74 * a60 + 0.1428571492433548f * a75 * a61; - out(ii, k, 22) = 1.0f * a2 * a2; - out(ii, k, 23) = 1.0f * a3 * a2; - out(ii, k, 24) = 0.20000000298023224f * a33 * a28 + 0.20000000298023224f * a34 * a29 + 0.20000000298023224f * a35 * a30 + 0.20000000298023224f * a36 * a31 + 0.20000000298023224f * a37 * a32; - out(ii, k, 25) = 0.20000000298023224f * a38 * a28 + 0.20000000298023224f * a39 * a29 + 0.20000000298023224f * a40 * a30 + 0.20000000298023224f * a41 * a31 + 0.20000000298023224f * a42 * a32; - out(ii, k, 26) = 0.20000000298023224f * a43 * a28 + 0.20000000298023224f * a44 * a29 + 0.20000000298023224f * a45 * a30 + 0.20000000298023224f * a46 * a31 + 0.20000000298023224f * a47 * a32; + out(ii, k, 4) = 0.3333333432674408f * a7 * a4 + 0.3333333432674408f * a8 * a5 + 0.3333333432674408f * a9 * a6; + out(ii, k, 5) = 0.3333333432674408f * a10 * a4 + 0.3333333432674408f * a11 * a5 + 0.3333333432674408f * a12 * a6; + out(ii, k, 6) = 1.0f * a1 * a1; + out(ii, k, 7) = 1.0f * a2 * a1; + out(ii, k, 8) = 1.0f * a3 * a1; + out(ii, k, 9) = 0.20000000298023224f * a23 * a13 + 0.20000000298023224f * a24 * a14 + 0.20000000298023224f * a25 * a15 + 0.20000000298023224f * a26 * a16 + 0.20000000298023224f * a27 * a17; + out(ii, k, 10) = 0.20000000298023224f * a28 * a13 + 0.20000000298023224f * a29 * a14 + 0.20000000298023224f * a30 * a15 + 0.20000000298023224f * a31 * a16 + 0.20000000298023224f * a32 * a17; + out(ii, k, 11) = 0.20000000298023224f * a33 * a13 + 0.20000000298023224f * a34 * a14 + 0.20000000298023224f * a35 * a15 + 0.20000000298023224f * a36 * a16 + 0.20000000298023224f * a37 * a17; + out(ii, k, 12) = 0.20000000298023224f * a23 * a18 + 0.20000000298023224f * a24 * a19 + 0.20000000298023224f * a25 * a20 + 0.20000000298023224f * a26 * a21 + 0.20000000298023224f * a27 * a22; + out(ii, k, 13) = 0.20000000298023224f * a33 * a18 + 0.20000000298023224f * a34 * a19 + 0.20000000298023224f * a35 * a20 + 0.20000000298023224f * a36 * a21 + 0.20000000298023224f * a37 * a22; + out(ii, k, 14) = 0.3333333432674408f * a7 * a7 + 0.3333333432674408f * a8 * a8 + 0.3333333432674408f * a9 * a9; + out(ii, k, 15) = 0.3333333432674408f * a10 * a7 + 0.3333333432674408f * a11 * a8 + 0.3333333432674408f * a12 * a9; + out(ii, k, 16) = 0.1428571492433548f * a38 * a38 + 0.1428571492433548f * a39 * a39 + 0.1428571492433548f * a40 * a40 + 0.1428571492433548f * a41 * a41 + 0.1428571492433548f * a42 * a42 + 0.1428571492433548f * a43 * a43 + 0.1428571492433548f * a44 * a44; + out(ii, k, 17) = 0.1428571492433548f * a52 * a38 + 0.1428571492433548f * a53 * a39 + 0.1428571492433548f * a54 * a40 + 0.1428571492433548f * a55 * a41 + 0.1428571492433548f * a56 * a42 + 0.1428571492433548f * a57 * a43 + 0.1428571492433548f * a58 * a44; + out(ii, k, 18) = 1.0f * a2 * a2; + out(ii, k, 19) = 1.0f * a3 * a2; + out(ii, k, 20) = 0.20000000298023224f * a28 * a23 + 0.20000000298023224f * a29 * a24 + 0.20000000298023224f * a30 * a25 + 0.20000000298023224f * a31 * a26 + 0.20000000298023224f * a32 * a27; + out(ii, k, 21) = 0.20000000298023224f * a33 * a23 + 0.20000000298023224f * a34 * a24 + 0.20000000298023224f * a35 * a25 + 0.20000000298023224f * a36 * a26 + 0.20000000298023224f * a37 * a27; + out(ii, k, 22) = 0.20000000298023224f * a28 * a28 + 0.20000000298023224f * a29 * a29 + 0.20000000298023224f * a30 * a30 + 0.20000000298023224f * a31 * a31 + 0.20000000298023224f * a32 * a32; + out(ii, k, 23) = 0.20000000298023224f * a33 * a28 + 0.20000000298023224f * a34 * a29 + 0.20000000298023224f * a35 * a30 + 0.20000000298023224f * a36 * a31 + 0.20000000298023224f * a37 * a32; + out(ii, k, 24) = 0.3333333432674408f * a10 * a10 + 0.3333333432674408f * a11 * a11 + 0.3333333432674408f * a12 * a12; + out(ii, k, 25) = 0.1428571492433548f * a52 * a52 + 0.1428571492433548f * a53 * a53 + 0.1428571492433548f * a54 * a54 + 0.1428571492433548f * a55 * a55 + 0.1428571492433548f * a56 * a56 + 0.1428571492433548f * a57 * a57 + 0.1428571492433548f * a58 * a58; + out(ii, k, 26) = 1.0f * a3 * a3; out(ii, k, 27) = 0.20000000298023224f * a33 * a33 + 0.20000000298023224f * a34 * a34 + 0.20000000298023224f * a35 * a35 + 0.20000000298023224f * a36 * a36 + 0.20000000298023224f * a37 * a37; - out(ii, k, 28) = 0.20000000298023224f * a38 * a33 + 0.20000000298023224f * a39 * a34 + 0.20000000298023224f * a40 * a35 + 0.20000000298023224f * a41 * a36 + 0.20000000298023224f * a42 * a37; - out(ii, k, 29) = 0.20000000298023224f * a43 * a33 + 0.20000000298023224f * a44 * a34 + 0.20000000298023224f * a45 * a35 + 0.20000000298023224f * a46 * a36 + 0.20000000298023224f * a47 * a37; - out(ii, k, 30) = 0.1428571492433548f * a62 * a62 + 0.1428571492433548f * a63 * a63 + 0.1428571492433548f * a64 * a64 + 0.1428571492433548f * a65 * a65 + 0.1428571492433548f * a66 * a66 + 0.1428571492433548f * a67 * a67 + 0.1428571492433548f * a68 * a68; - out(ii, k, 31) = 0.1428571492433548f * a69 * a62 + 0.1428571492433548f * a70 * a63 + 0.1428571492433548f * a71 * a64 + 0.1428571492433548f * a72 * a65 + 0.1428571492433548f * a73 * a66 + 0.1428571492433548f * a74 * a67 + 0.1428571492433548f * a75 * a68; - out(ii, k, 32) = 0.3333333432674408f * a10 * a10 + 0.3333333432674408f * a11 * a11 + 0.3333333432674408f * a12 * a12; - out(ii, k, 33) = 0.20000000298023224f * a38 * a38 + 0.20000000298023224f * a39 * a39 + 0.20000000298023224f * a40 * a40 + 0.20000000298023224f * a41 * a41 + 0.20000000298023224f * a42 * a42; - out(ii, k, 34) = 0.20000000298023224f * a43 * a38 + 0.20000000298023224f * a44 * a39 + 0.20000000298023224f * a45 * a40 + 0.20000000298023224f * a46 * a41 + 0.20000000298023224f * a47 * a42; - out(ii, k, 35) = 0.1428571492433548f * a69 * a69 + 0.1428571492433548f * a70 * a70 + 0.1428571492433548f * a71 * a71 + 0.1428571492433548f * a72 * a72 + 0.1428571492433548f * a73 * a73 + 0.1428571492433548f * a74 * a74 + 0.1428571492433548f * a75 * a75; - out(ii, k, 36) = 1.0f * a3 * a3; - out(ii, k, 37) = 0.20000000298023224f * a43 * a43 + 0.20000000298023224f * a44 * a44 + 0.20000000298023224f * a45 * a45 + 0.20000000298023224f * a46 * a46 + 0.20000000298023224f * a47 * a47; -} + } -template -KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V &dF, const V &, const int ii, const int k) -{ + template + KOKKOS_INLINE_FUNCTION static void rev(const V &F, const V &, const V &D, const V &dF, const V &, + const int ii, const int k) + { const float f0 = F(ii, k, 0); const float f1 = F(ii, k, 1); const float f2 = F(ii, k, 2); const float f3 = F(ii, k, 3); + const float f4 = F(ii, k, 4); + const float f5 = F(ii, k, 5); + const float f6 = F(ii, k, 6); const float f7 = F(ii, k, 7); const float f8 = F(ii, k, 8); const float f9 = F(ii, k, 9); const float f10 = F(ii, k, 10); const float f11 = F(ii, k, 11); const float f12 = F(ii, k, 12); + const float f13 = F(ii, k, 13); + const float f14 = F(ii, k, 14); + const float f15 = F(ii, k, 15); + const float f16 = F(ii, k, 16); + const float f17 = F(ii, k, 17); const float f18 = F(ii, k, 18); const float f19 = F(ii, k, 19); const float f20 = F(ii, k, 20); @@ -19718,30 +27647,13 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V const float f42 = F(ii, k, 42); const float f43 = F(ii, k, 43); const float f44 = F(ii, k, 44); - const float f45 = F(ii, k, 45); - const float f46 = F(ii, k, 46); - const float f47 = F(ii, k, 47); + const float f52 = F(ii, k, 52); + const float f53 = F(ii, k, 53); + const float f54 = F(ii, k, 54); const float f55 = F(ii, k, 55); const float f56 = F(ii, k, 56); const float f57 = F(ii, k, 57); const float f58 = F(ii, k, 58); - const float f59 = F(ii, k, 59); - const float f60 = F(ii, k, 60); - const float f61 = F(ii, k, 61); - const float f62 = F(ii, k, 62); - const float f63 = F(ii, k, 63); - const float f64 = F(ii, k, 64); - const float f65 = F(ii, k, 65); - const float f66 = F(ii, k, 66); - const float f67 = F(ii, k, 67); - const float f68 = F(ii, k, 68); - const float f69 = F(ii, k, 69); - const float f70 = F(ii, k, 70); - const float f71 = F(ii, k, 71); - const float f72 = F(ii, k, 72); - const float f73 = F(ii, k, 73); - const float f74 = F(ii, k, 74); - const float f75 = F(ii, k, 75); { float g0 = 0.0f; float g1 = 0.0f; @@ -19808,18 +27720,70 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V g0 += 1.0f * d * f3; } { const float d = D(ii, k, 4); + g7 += 0.3333333432674408f * d * f4; + g4 += 0.3333333432674408f * d * f7; + g8 += 0.3333333432674408f * d * f5; + g5 += 0.3333333432674408f * d * f8; + g9 += 0.3333333432674408f * d * f6; + g6 += 0.3333333432674408f * d * f9; + } + { const float d = D(ii, k, 5); + g10 += 0.3333333432674408f * d * f4; + g4 += 0.3333333432674408f * d * f10; + g11 += 0.3333333432674408f * d * f5; + g5 += 0.3333333432674408f * d * f11; + g12 += 0.3333333432674408f * d * f6; + g6 += 0.3333333432674408f * d * f12; + } + { const float d = D(ii, k, 6); g1 += 1.0f * d * f1; g1 += 1.0f * d * f1; } - { const float d = D(ii, k, 5); + { const float d = D(ii, k, 7); g2 += 1.0f * d * f1; g1 += 1.0f * d * f2; } - { const float d = D(ii, k, 6); + { const float d = D(ii, k, 8); g3 += 1.0f * d * f1; g1 += 1.0f * d * f3; } - { const float d = D(ii, k, 7); + { const float d = D(ii, k, 9); + g23 += 0.20000000298023224f * d * f13; + g13 += 0.20000000298023224f * d * f23; + g24 += 0.20000000298023224f * d * f14; + g14 += 0.20000000298023224f * d * f24; + g25 += 0.20000000298023224f * d * f15; + g15 += 0.20000000298023224f * d * f25; + g26 += 0.20000000298023224f * d * f16; + g16 += 0.20000000298023224f * d * f26; + g27 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f27; + } + { const float d = D(ii, k, 10); + g28 += 0.20000000298023224f * d * f13; + g13 += 0.20000000298023224f * d * f28; + g29 += 0.20000000298023224f * d * f14; + g14 += 0.20000000298023224f * d * f29; + g30 += 0.20000000298023224f * d * f15; + g15 += 0.20000000298023224f * d * f30; + g31 += 0.20000000298023224f * d * f16; + g16 += 0.20000000298023224f * d * f31; + g32 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f32; + } + { const float d = D(ii, k, 11); + g33 += 0.20000000298023224f * d * f13; + g13 += 0.20000000298023224f * d * f33; + g34 += 0.20000000298023224f * d * f14; + g14 += 0.20000000298023224f * d * f34; + g35 += 0.20000000298023224f * d * f15; + g15 += 0.20000000298023224f * d * f35; + g36 += 0.20000000298023224f * d * f16; + g16 += 0.20000000298023224f * d * f36; + g37 += 0.20000000298023224f * d * f17; + g17 += 0.20000000298023224f * d * f37; + } + { const float d = D(ii, k, 12); g23 += 0.20000000298023224f * d * f18; g18 += 0.20000000298023224f * d * f23; g24 += 0.20000000298023224f * d * f19; @@ -19831,19 +27795,7 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V g27 += 0.20000000298023224f * d * f22; g22 += 0.20000000298023224f * d * f27; } - { const float d = D(ii, k, 8); - g28 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f28; - g29 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f29; - g30 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f30; - g31 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f31; - g32 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f32; - } - { const float d = D(ii, k, 9); + { const float d = D(ii, k, 13); g33 += 0.20000000298023224f * d * f18; g18 += 0.20000000298023224f * d * f33; g34 += 0.20000000298023224f * d * f19; @@ -19855,31 +27807,7 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V g37 += 0.20000000298023224f * d * f22; g22 += 0.20000000298023224f * d * f37; } - { const float d = D(ii, k, 10); - g38 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f41; - g42 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f42; - } - { const float d = D(ii, k, 11); - g43 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f47; - } - { const float d = D(ii, k, 12); + { const float d = D(ii, k, 14); g7 += 0.3333333432674408f * d * f7; g7 += 0.3333333432674408f * d * f7; g8 += 0.3333333432674408f * d * f8; @@ -19887,7 +27815,7 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V g9 += 0.3333333432674408f * d * f9; g9 += 0.3333333432674408f * d * f9; } - { const float d = D(ii, k, 13); + { const float d = D(ii, k, 15); g10 += 0.3333333432674408f * d * f7; g7 += 0.3333333432674408f * d * f10; g11 += 0.3333333432674408f * d * f8; @@ -19895,19 +27823,40 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V g12 += 0.3333333432674408f * d * f9; g9 += 0.3333333432674408f * d * f12; } - { const float d = D(ii, k, 14); - g23 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f23; - g24 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f24; - g25 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f25; - g26 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f26; - g27 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f27; + { const float d = D(ii, k, 16); + g38 += 0.1428571492433548f * d * f38; + g38 += 0.1428571492433548f * d * f38; + g39 += 0.1428571492433548f * d * f39; + g39 += 0.1428571492433548f * d * f39; + g40 += 0.1428571492433548f * d * f40; + g40 += 0.1428571492433548f * d * f40; + g41 += 0.1428571492433548f * d * f41; + g41 += 0.1428571492433548f * d * f41; + g42 += 0.1428571492433548f * d * f42; + g42 += 0.1428571492433548f * d * f42; + g43 += 0.1428571492433548f * d * f43; + g43 += 0.1428571492433548f * d * f43; + g44 += 0.1428571492433548f * d * f44; + g44 += 0.1428571492433548f * d * f44; + } + { const float d = D(ii, k, 17); + g38 += 0.1428571492433548f * d * f52; + g39 += 0.1428571492433548f * d * f53; + g40 += 0.1428571492433548f * d * f54; + g41 += 0.1428571492433548f * d * f55; + g42 += 0.1428571492433548f * d * f56; + g43 += 0.1428571492433548f * d * f57; + g44 += 0.1428571492433548f * d * f58; + } + { const float d = D(ii, k, 18); + g2 += 1.0f * d * f2; + g2 += 1.0f * d * f2; + } + { const float d = D(ii, k, 19); + g3 += 1.0f * d * f2; + g2 += 1.0f * d * f3; } - { const float d = D(ii, k, 15); + { const float d = D(ii, k, 20); g28 += 0.20000000298023224f * d * f23; g23 += 0.20000000298023224f * d * f28; g29 += 0.20000000298023224f * d * f24; @@ -19919,7 +27868,7 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V g32 += 0.20000000298023224f * d * f27; g27 += 0.20000000298023224f * d * f32; } - { const float d = D(ii, k, 16); + { const float d = D(ii, k, 21); g33 += 0.20000000298023224f * d * f23; g23 += 0.20000000298023224f * d * f33; g34 += 0.20000000298023224f * d * f24; @@ -19931,39 +27880,19 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V g37 += 0.20000000298023224f * d * f27; g27 += 0.20000000298023224f * d * f37; } - { const float d = D(ii, k, 17); - g38 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f41; - g42 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f42; - } - { const float d = D(ii, k, 18); - g43 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f47; - } { const float d = D(ii, k, 22); - g2 += 1.0f * d * f2; - g2 += 1.0f * d * f2; + g28 += 0.20000000298023224f * d * f28; + g28 += 0.20000000298023224f * d * f28; + g29 += 0.20000000298023224f * d * f29; + g29 += 0.20000000298023224f * d * f29; + g30 += 0.20000000298023224f * d * f30; + g30 += 0.20000000298023224f * d * f30; + g31 += 0.20000000298023224f * d * f31; + g31 += 0.20000000298023224f * d * f31; + g32 += 0.20000000298023224f * d * f32; + g32 += 0.20000000298023224f * d * f32; } { const float d = D(ii, k, 23); - g3 += 1.0f * d * f2; - g2 += 1.0f * d * f3; - } - { const float d = D(ii, k, 24); g33 += 0.20000000298023224f * d * f28; g28 += 0.20000000298023224f * d * f33; g34 += 0.20000000298023224f * d * f29; @@ -19975,29 +27904,17 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V g37 += 0.20000000298023224f * d * f32; g32 += 0.20000000298023224f * d * f37; } - { const float d = D(ii, k, 25); - g38 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f41; - g42 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f42; + { const float d = D(ii, k, 24); + g10 += 0.3333333432674408f * d * f10; + g10 += 0.3333333432674408f * d * f10; + g11 += 0.3333333432674408f * d * f11; + g11 += 0.3333333432674408f * d * f11; + g12 += 0.3333333432674408f * d * f12; + g12 += 0.3333333432674408f * d * f12; } { const float d = D(ii, k, 26); - g43 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f47; + g3 += 1.0f * d * f3; + g3 += 1.0f * d * f3; } { const float d = D(ii, k, 27); g33 += 0.20000000298023224f * d * f33; @@ -20011,126 +27928,105 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V g37 += 0.20000000298023224f * d * f37; g37 += 0.20000000298023224f * d * f37; } - { const float d = D(ii, k, 28); - g38 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f41; - g42 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f42; - } - { const float d = D(ii, k, 29); - g43 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f47; - } - { const float d = D(ii, k, 32); - g10 += 0.3333333432674408f * d * f10; - g10 += 0.3333333432674408f * d * f10; - g11 += 0.3333333432674408f * d * f11; - g11 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f12; - g12 += 0.3333333432674408f * d * f12; - } - { const float d = D(ii, k, 33); - g38 += 0.20000000298023224f * d * f38; - g38 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f39; - g39 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f40; - g40 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f41; - g41 += 0.20000000298023224f * d * f41; - g42 += 0.20000000298023224f * d * f42; - g42 += 0.20000000298023224f * d * f42; - } - { const float d = D(ii, k, 34); - g43 += 0.20000000298023224f * d * f38; - g38 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f39; - g39 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f40; - g40 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f41; - g41 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f42; - g42 += 0.20000000298023224f * d * f47; - } - { const float d = D(ii, k, 36); - g3 += 1.0f * d * f3; - g3 += 1.0f * d * f3; - } - { const float d = D(ii, k, 37); - g43 += 0.20000000298023224f * d * f43; - g43 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f44; - g44 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f45; - g45 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f46; - g46 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f47; - g47 += 0.20000000298023224f * d * f47; + if constexpr (ACC) { + dF(ii, k, 0) += g0; + dF(ii, k, 1) += g1; + dF(ii, k, 2) += g2; + dF(ii, k, 3) += g3; + dF(ii, k, 4) += g4; + dF(ii, k, 5) += g5; + dF(ii, k, 6) += g6; + dF(ii, k, 7) += g7; + dF(ii, k, 8) += g8; + dF(ii, k, 9) += g9; + dF(ii, k, 10) += g10; + dF(ii, k, 11) += g11; + dF(ii, k, 12) += g12; + dF(ii, k, 13) += g13; + dF(ii, k, 14) += g14; + dF(ii, k, 15) += g15; + dF(ii, k, 16) += g16; + dF(ii, k, 17) += g17; + dF(ii, k, 18) += g18; + dF(ii, k, 19) += g19; + dF(ii, k, 20) += g20; + dF(ii, k, 21) += g21; + dF(ii, k, 22) += g22; + dF(ii, k, 23) += g23; + dF(ii, k, 24) += g24; + dF(ii, k, 25) += g25; + dF(ii, k, 26) += g26; + dF(ii, k, 27) += g27; + dF(ii, k, 28) += g28; + dF(ii, k, 29) += g29; + dF(ii, k, 30) += g30; + dF(ii, k, 31) += g31; + dF(ii, k, 32) += g32; + dF(ii, k, 33) += g33; + dF(ii, k, 34) += g34; + dF(ii, k, 35) += g35; + dF(ii, k, 36) += g36; + dF(ii, k, 37) += g37; + dF(ii, k, 38) += g38; + dF(ii, k, 39) += g39; + dF(ii, k, 40) += g40; + dF(ii, k, 41) += g41; + dF(ii, k, 42) += g42; + dF(ii, k, 43) += g43; + dF(ii, k, 44) += g44; + dF(ii, k, 45) += g45; + dF(ii, k, 46) += g46; + dF(ii, k, 47) += g47; + } else { + dF(ii, k, 0) = g0; + dF(ii, k, 1) = g1; + dF(ii, k, 2) = g2; + dF(ii, k, 3) = g3; + dF(ii, k, 4) = g4; + dF(ii, k, 5) = g5; + dF(ii, k, 6) = g6; + dF(ii, k, 7) = g7; + dF(ii, k, 8) = g8; + dF(ii, k, 9) = g9; + dF(ii, k, 10) = g10; + dF(ii, k, 11) = g11; + dF(ii, k, 12) = g12; + dF(ii, k, 13) = g13; + dF(ii, k, 14) = g14; + dF(ii, k, 15) = g15; + dF(ii, k, 16) = g16; + dF(ii, k, 17) = g17; + dF(ii, k, 18) = g18; + dF(ii, k, 19) = g19; + dF(ii, k, 20) = g20; + dF(ii, k, 21) = g21; + dF(ii, k, 22) = g22; + dF(ii, k, 23) = g23; + dF(ii, k, 24) = g24; + dF(ii, k, 25) = g25; + dF(ii, k, 26) = g26; + dF(ii, k, 27) = g27; + dF(ii, k, 28) = g28; + dF(ii, k, 29) = g29; + dF(ii, k, 30) = g30; + dF(ii, k, 31) = g31; + dF(ii, k, 32) = g32; + dF(ii, k, 33) = g33; + dF(ii, k, 34) = g34; + dF(ii, k, 35) = g35; + dF(ii, k, 36) = g36; + dF(ii, k, 37) = g37; + dF(ii, k, 38) = g38; + dF(ii, k, 39) = g39; + dF(ii, k, 40) = g40; + dF(ii, k, 41) = g41; + dF(ii, k, 42) = g42; + dF(ii, k, 43) = g43; + dF(ii, k, 44) = g44; + dF(ii, k, 45) = g45; + dF(ii, k, 46) = g46; + dF(ii, k, 47) = g47; } - dF(ii, k, 0) = g0; - dF(ii, k, 1) = g1; - dF(ii, k, 2) = g2; - dF(ii, k, 3) = g3; - dF(ii, k, 4) = g4; - dF(ii, k, 5) = g5; - dF(ii, k, 6) = g6; - dF(ii, k, 7) = g7; - dF(ii, k, 8) = g8; - dF(ii, k, 9) = g9; - dF(ii, k, 10) = g10; - dF(ii, k, 11) = g11; - dF(ii, k, 12) = g12; - dF(ii, k, 13) = g13; - dF(ii, k, 14) = g14; - dF(ii, k, 15) = g15; - dF(ii, k, 16) = g16; - dF(ii, k, 17) = g17; - dF(ii, k, 18) = g18; - dF(ii, k, 19) = g19; - dF(ii, k, 20) = g20; - dF(ii, k, 21) = g21; - dF(ii, k, 22) = g22; - dF(ii, k, 23) = g23; - dF(ii, k, 24) = g24; - dF(ii, k, 25) = g25; - dF(ii, k, 26) = g26; - dF(ii, k, 27) = g27; - dF(ii, k, 28) = g28; - dF(ii, k, 29) = g29; - dF(ii, k, 30) = g30; - dF(ii, k, 31) = g31; - dF(ii, k, 32) = g32; - dF(ii, k, 33) = g33; - dF(ii, k, 34) = g34; - dF(ii, k, 35) = g35; - dF(ii, k, 36) = g36; - dF(ii, k, 37) = g37; - dF(ii, k, 38) = g38; - dF(ii, k, 39) = g39; - dF(ii, k, 40) = g40; - dF(ii, k, 41) = g41; - dF(ii, k, 42) = g42; - dF(ii, k, 43) = g43; - dF(ii, k, 44) = g44; - dF(ii, k, 45) = g45; - dF(ii, k, 46) = g46; - dF(ii, k, 47) = g47; } { float g48 = 0.0f; @@ -20144,24 +28040,22 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V float g56 = 0.0f; float g57 = 0.0f; float g58 = 0.0f; - float g59 = 0.0f; - float g60 = 0.0f; - float g61 = 0.0f; - float g62 = 0.0f; - float g63 = 0.0f; - float g64 = 0.0f; - float g65 = 0.0f; - float g66 = 0.0f; - float g67 = 0.0f; - float g68 = 0.0f; - float g69 = 0.0f; - float g70 = 0.0f; - float g71 = 0.0f; - float g72 = 0.0f; - float g73 = 0.0f; - float g74 = 0.0f; - float g75 = 0.0f; - { const float d = D(ii, k, 19); + { const float d = D(ii, k, 17); + g52 += 0.1428571492433548f * d * f38; + g53 += 0.1428571492433548f * d * f39; + g54 += 0.1428571492433548f * d * f40; + g55 += 0.1428571492433548f * d * f41; + g56 += 0.1428571492433548f * d * f42; + g57 += 0.1428571492433548f * d * f43; + g58 += 0.1428571492433548f * d * f44; + } + { const float d = D(ii, k, 25); + g52 += 0.1428571492433548f * d * f52; + g52 += 0.1428571492433548f * d * f52; + g53 += 0.1428571492433548f * d * f53; + g53 += 0.1428571492433548f * d * f53; + g54 += 0.1428571492433548f * d * f54; + g54 += 0.1428571492433548f * d * f54; g55 += 0.1428571492433548f * d * f55; g55 += 0.1428571492433548f * d * f55; g56 += 0.1428571492433548f * d * f56; @@ -20170,126 +28064,47 @@ KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V g57 += 0.1428571492433548f * d * f57; g58 += 0.1428571492433548f * d * f58; g58 += 0.1428571492433548f * d * f58; - g59 += 0.1428571492433548f * d * f59; - g59 += 0.1428571492433548f * d * f59; - g60 += 0.1428571492433548f * d * f60; - g60 += 0.1428571492433548f * d * f60; - g61 += 0.1428571492433548f * d * f61; - g61 += 0.1428571492433548f * d * f61; - } - { const float d = D(ii, k, 20); - g62 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f62; - g63 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f63; - g64 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f64; - g65 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f65; - g66 += 0.1428571492433548f * d * f59; - g59 += 0.1428571492433548f * d * f66; - g67 += 0.1428571492433548f * d * f60; - g60 += 0.1428571492433548f * d * f67; - g68 += 0.1428571492433548f * d * f61; - g61 += 0.1428571492433548f * d * f68; - } - { const float d = D(ii, k, 21); - g69 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f72; - g73 += 0.1428571492433548f * d * f59; - g59 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f60; - g60 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f61; - g61 += 0.1428571492433548f * d * f75; - } - { const float d = D(ii, k, 30); - g62 += 0.1428571492433548f * d * f62; - g62 += 0.1428571492433548f * d * f62; - g63 += 0.1428571492433548f * d * f63; - g63 += 0.1428571492433548f * d * f63; - g64 += 0.1428571492433548f * d * f64; - g64 += 0.1428571492433548f * d * f64; - g65 += 0.1428571492433548f * d * f65; - g65 += 0.1428571492433548f * d * f65; - g66 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f66; - g67 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f67; - g68 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f68; - } - { const float d = D(ii, k, 31); - g69 += 0.1428571492433548f * d * f62; - g62 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f63; - g63 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f64; - g64 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f65; - g65 += 0.1428571492433548f * d * f72; - g73 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f75; } - { const float d = D(ii, k, 35); - g69 += 0.1428571492433548f * d * f69; - g69 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f70; - g70 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f71; - g71 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f72; - g72 += 0.1428571492433548f * d * f72; - g73 += 0.1428571492433548f * d * f73; - g73 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f74; - g74 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f75; - g75 += 0.1428571492433548f * d * f75; + if constexpr (ACC) { + dF(ii, k, 48) += g48; + dF(ii, k, 49) += g49; + dF(ii, k, 50) += g50; + dF(ii, k, 51) += g51; + dF(ii, k, 52) += g52; + dF(ii, k, 53) += g53; + dF(ii, k, 54) += g54; + dF(ii, k, 55) += g55; + dF(ii, k, 56) += g56; + dF(ii, k, 57) += g57; + dF(ii, k, 58) += g58; + } else { + dF(ii, k, 48) = g48; + dF(ii, k, 49) = g49; + dF(ii, k, 50) = g50; + dF(ii, k, 51) = g51; + dF(ii, k, 52) = g52; + dF(ii, k, 53) = g53; + dF(ii, k, 54) = g54; + dF(ii, k, 55) = g55; + dF(ii, k, 56) = g56; + dF(ii, k, 57) = g57; + dF(ii, k, 58) = g58; } - dF(ii, k, 48) = g48; - dF(ii, k, 49) = g49; - dF(ii, k, 50) = g50; - dF(ii, k, 51) = g51; - dF(ii, k, 52) = g52; - dF(ii, k, 53) = g53; - dF(ii, k, 54) = g54; - dF(ii, k, 55) = g55; - dF(ii, k, 56) = g56; - dF(ii, k, 57) = g57; - dF(ii, k, 58) = g58; - dF(ii, k, 59) = g59; - dF(ii, k, 60) = g60; - dF(ii, k, 61) = g61; - dF(ii, k, 62) = g62; - dF(ii, k, 63) = g63; - dF(ii, k, 64) = g64; - dF(ii, k, 65) = g65; - dF(ii, k, 66) = g66; - dF(ii, k, 67) = g67; - dF(ii, k, 68) = g68; - dF(ii, k, 69) = g69; - dF(ii, k, 70) = g70; - dF(ii, k, 71) = g71; - dF(ii, k, 72) = g72; - dF(ii, k, 73) = g73; - dF(ii, k, 74) = g74; - dF(ii, k, 75) = g75; } -} + } + +}; -} // namespace G2LShape_SMAXL +using G1L_AA = Tables; +using G1L_AAA = Tables; +using G1L_AAAA = Tables; +using G2L_AA = Tables; +using G2L_AAA = Tables; +using G2L_AAAA = Tables; +using G2L_BB = Tables; +using G2L_BBB = Tables; +using G2L_BBBB = Tables; + +} // namespace cgt } // namespace kk } // namespace grace - -#endif diff --git a/libgrace/include/grace/kk/fused_dense.h b/libgrace/include/grace/kk/fused_dense.h index bcaceaa..8f9403d 100644 --- a/libgrace/include/grace/kk/fused_dense.h +++ b/libgrace/include/grace/kk/fused_dense.h @@ -18,6 +18,10 @@ #include #include +#include +#include +#include +#include #include #include @@ -436,6 +440,10 @@ void fc_fwd(const FCMetaT &m, int cs, const V3T &in_l, const V3T &in template void fc_fwd4(const FCMetaT &m, int cs, const V3T &in_l, const V3T &in_r, const V3T &out) { + // halves of whole float4: NO a multiple of 8, else the two-atom kernel (this one is then not compiled) + if constexpr (NO % 8 != 0) { + fc_fwd(m, cs, in_l, in_r, out); + } else { using F = float; if (fc_fwd_on_mfma(m, cs, in_l, in_r, out)) return; constexpr int NH = NO / 2, NQ = NH / 4; @@ -483,6 +491,7 @@ void fc_fwd4(const FCMetaT &m, int cs, const V3T &in_l, const V3T &i } } }); + } } // reverse FC, right part, from the transposed weights: thread = (two atoms, source, 1/H of the inputs); @@ -561,7 +570,9 @@ void fc_bwd(const FCMetaT &m, int cs, const V3T &dout, const V3T &di if (fc_bwd_on_mfma(m, cs, dout, din_r)) return; if (m.hr == 1 && m.nirp == 32) { fc_bwd_rt(m, cs, dout, din_r); return; } if (m.hr == 1 && m.nirp == 44) { fc_bwd_rt(m, cs, dout, din_r); return; } + if (m.hr == 1 && m.nirp == 48) { fc_bwd_rt(m, cs, dout, din_r); return; } if (m.hr == 2 && m.nirp == 64) { fc_bwd_rt(m, cs, dout, din_r); return; } + if (nir > NIRMAX) GRACE_KK_ERROR("reverse FC: {} right inputs, compiled for up to {}", nir, NIRMAX); Kokkos::parallel_for("gfused:RevFC_R", Kokkos::RangePolicy>(0, cs * nsrc), KOKKOS_LAMBDA(const int q) { const int sidx = q / cs, ii = q - sidx * cs; if (soff(sidx) == soff(sidx + 1)) return; @@ -643,6 +654,76 @@ void prod_rev(const ProdMetaT &m, int cs, const V3T &L, const V3T &R } } +/* ---------------------------------------------------------------------- + Shape-specialised CG products (cg_tables.h): one struct per compiled CG table, a list of them per engine product. + Each product of a model is matched on its own: cgt_match gives the index of the compiled table equal to it (indices, + and coefficients up to the fp32 literals), -1 for none. cg_prod_fwd / cg_prod_rev run that table's kernel, or + prod_fwd / prod_rev for -1, with the same results: dL assigned (zero beyond the table) or, ACC, accumulated. +------------------------------------------------------------------------- */ + +template class List, class... T, class P> +int cgt_match(List, const P &p) +{ + auto same = [&](const int nt, const int (*tab)[3], const double *cg) { + if ((int) p.cg_coeff.size() != nt) return false; + for (int t = 0; t < nt; t++) + if (p.left_ind[t] != tab[t][0] || p.right_ind[t] != tab[t][1] || p.m_sum_ind[t] != tab[t][2] || + std::fabs(p.cg_coeff[t] - cg[t]) > 1e-6 * std::max(1.0, std::fabs(cg[t]))) return false; // fp32 literals + return true; + }; + int i = 0, id = -1; + auto one = [&](const int nt, const int (*tab)[3], const double *cg) { if (id < 0 && same(nt, tab, cg)) id = i; i++; }; + (one(T::nt, T::tab, T::cg), ...); + return id; +} + +// log line: "specialised: AA AAA, generic: AAAA" (names[k] with ids[k] >= 0, the others) +inline std::string cgt_summary(std::initializer_list> prods) +{ + std::string sp, gen; + for (const auto &[name, id] : prods) (id >= 0 ? sp : gen) += std::string(" ") + name; + return "specialised:" + (sp.empty() ? std::string(" none") : sp) + ", generic:" + + (gen.empty() ? std::string(" none") : gen); +} + +template +void cgt_fwd_t(const char *label, int cs, const V3T &L, const V3T &R, const V3T &out) +{ + const int nc = (int) out.extent(1); + Kokkos::parallel_for(label, Kokkos::RangePolicy>(0, cs * nc), KOKKOS_LAMBDA(const int q) { + const int k = q / cs, ii = q - k * cs; + T::fwd(L, R, out, ii, k); + }); +} + +template +void cgt_rev_t(const char *label, int cs, const V3T &L, const V3T &R, const V3T &D, const V3T &dL, const V3T &dR) +{ + const int nc = (int) D.extent(1), nx = ACC ? 0 : (int) dL.extent(2); + Kokkos::parallel_for(label, Kokkos::RangePolicy>(0, cs * nc), KOKKOS_LAMBDA(const int q) { + const int k = q / cs, ii = q - k * cs; + T::template rev(L, R, D, dL, dR, ii, k); + for (int x = T::nl; x < nx; x++) dL(ii, k, x) = 0.0f; + }); +} + +template class List, class... T, class DeviceType, class V3T> +void cg_prod_fwd(List, const int id, const ProdMetaT &m, const char *label, int cs, const V3T &L, + const V3T &R, const V3T &out) +{ + int i = 0; + if (!((id == i++ && (cgt_fwd_t(label, cs, L, R, out), true)) || ...)) prod_fwd(m, cs, L, R, out); +} + +template class List, class... T, class DeviceType, class V3T> +void cg_prod_rev(List, const int id, const ProdMetaT &m, const char *label, int cs, const V3T &L, + const V3T &R, const V3T &D, const V3T &dL, const V3T &dR) +{ + int i = 0; + if (!((id == i++ && (cgt_rev_t(label, cs, L, R, D, dL, dR), true)) || ...)) + prod_rev(m, cs, L, R, D, dL, dR, ACC); +} + } // namespace GraceFusedKK } // namespace kk } // namespace grace diff --git a/libgrace/include/grace/kk/fused_hip_bonds.h b/libgrace/include/grace/kk/fused_hip_bonds.h index 02e9bd6..6d03683 100644 --- a/libgrace/include/grace/kk/fused_hip_bonds.h +++ b/libgrace/include/grace/kk/fused_hip_bonds.h @@ -11,8 +11,8 @@ // on the host backends the neighbour list (those kernels keep their cutoff test). // // bond_bwd_wave: the bond backward of the radial-angular basis A[i, n, lm] = sum_j z[mu_j, n] R_nl(x_ij) Y_lm(r_ij) -// (GRACE-1L g1lf:bond_bwd, GRACE-2L g2lf:L1_bwd), lmax 4: one team of 64 threads per atom, thread = bond (rounds of -// 64 bonds). The thread keeps its bond's Y and dY / dr in registers and loops over all radial channels; the force of +// (GRACE-1L g1lf:bond_bwd, GRACE-2L g2lf:L1_bwd), lmax 3 or 4: one team of 64 threads per atom, thread = bond (rounds +// of 64 bonds). The thread keeps its bond's Y and dY / dr in registers and loops over all radial channels; the force of // the bond is summed over the channels in registers. Compared with the (bond, channel) threads of the team-of-256 // kernels: no team barrier and no shared-memory sum over the channels per round of TEAM / NR bonds, and the // geometry of a bond is computed once by its own thread. Shared memory: only the atom's dE/dA rows. @@ -162,35 +162,37 @@ void compact_bonds(const int inum, const int maxneigh, const XV &x, const TV &ty cmask, cnb, cnum); } -// bond_bwd_wave: lmax 4 (Y, G in registers), the atom's dE/dA rows in shared memory -constexpr int FBW_LMAX = 4; -inline size_t bond_bwd_wave_shmem(int NR) +// bond_bwd_wave and a_fwd_mfma: compiled for lmax 3 and 4 (Y, G in registers; the lmax argument picks the instance) +inline bool fused_lmax_ok(int lmax) { return lmax == 3 || lmax == 4; } +// bond_bwd_wave: the atom's dE/dA rows in shared memory +inline size_t bond_bwd_wave_shmem(int NR, int lmax) { - return (size_t) NR * fused_lmp((FBW_LMAX + 1) * (FBW_LMAX + 1)) * sizeof(float) + 16; + return (size_t) NR * fused_lmp((lmax + 1) * (lmax + 1)) * sizeof(float) + 16; } template bool bond_bwd_wave_fits(int lmax, int NR) { - return lmax == FBW_LMAX && bond_bwd_wave_shmem(NR) <= team_scratch_max(FBW_TEAM); + return fused_lmax_ok(lmax) && bond_bwd_wave_shmem(NR, lmax) <= team_scratch_max(FBW_TEAM); } // nbl: the run's bonds (BondList over compact_bonds), the atom's row at its ilist position (league rank + chunk offset) -template -void bond_bwd_wave(const char *label, const int cs, const int co, const int NR, const float ascale, const int N, - const AaV &Aa, const FV &f, const VirV &vir, const XV &x, const TV &type, const MapV &map, - const NblV &nbl, const IlV &ilist, const BcV &bc, const ZV &ztr, const int ceq, const int cb1, - const int cb2, const double clam, const MaskV &cmask, const DedlV &dedl, const GV &idx_s, - const GV &alm, const GV &blm, const GV &cl, const GV &dl, const SplV &sc, const bool do_v, - const bool do_va, const bool do_cva, const VaV &va, const CvaV &cva) +template +void bond_bwd_wave_l(const char *label, const int cs, const int co, const int NR, const float ascale, const int N, + const AaV &Aa, const FV &f, const VirV &vir, const XV &x, const TV &type, const MapV &map, + const NblV &nbl, const IlV &ilist, const BcV &bc, const ZV &ztr, const int ceq, const int cb1, + const int cb2, const double clam, const MaskV &cmask, const DedlV &dedl, const GV &idx_s, + const GV &alm, const GV &blm, const GV &cl, const GV &dl, const SplV &sc, const bool do_v, + const bool do_va, const bool do_cva, const VaV &va, const CvaV &cva) { using F = float; using KKA = typename Traits::kk_acc_float; - constexpr int LM = FBW_LMAX, NL = LM + 1, NLM = NL * NL; - constexpr int LMP = fused_lmp(NLM); // 28: dE/dA row of a channel as 7 float4 + constexpr int NL = LM + 1, NLM = NL * NL; + constexpr int LMP = fused_lmp(NLM); // lmax 4: 28, dE/dA row of a channel as 7 float4 (lmax 3: 20) using team_policy = Kokkos::TeamPolicy>; using member = typename team_policy::member_type; team_policy pol(cs, FBW_TEAM); - pol = pol.set_scratch_size(0, Kokkos::PerTeam(bond_bwd_wave_shmem(NR))); + pol = pol.set_scratch_size(0, Kokkos::PerTeam(bond_bwd_wave_shmem(NR, LM))); Kokkos::parallel_for(label, pol, KOKKOS_LAMBDA(const member &t) { const int ii = t.league_rank(); @@ -313,42 +315,51 @@ void bond_bwd_wave(const char *label, const int cs, const int co, const int NR, }); } -// a_fwd_mfma (below): lmax 4, batches of AFM_NB bonds, team of AFM_TEAM = 4 wavefronts, each with up to AFM_MAXP -// (16-channel tile, l) output blocks: the radial width NR fits when ceil(NR / 16) * 5 <= 4 AFM_MAXP (NR <= 48) -constexpr int AFM_LMAX = 4, AFM_NB = 32, AFM_TEAM = 256, AFM_MAXP = 4; -inline size_t a_fwd_mfma_shmem(int NR) +// bond_bwd_wave_l for lmax 3 or 4 (bond_bwd_wave_fits) +template +void bond_bwd_wave(const char *label, const int lmax, const A &...a) { - constexpr int NL = AFM_LMAX + 1; + if (lmax == 3) bond_bwd_wave_l(label, a...); + else bond_bwd_wave_l(label, a...); +} + +// a_fwd_mfma (below): batches of AFM_NB bonds, team of AFM_TEAM = 4 wavefronts, each with up to AFM_MAXP +// (16-channel tile, l) output blocks: the radial width NR fits when ceil(NR / 16) (lmax + 1) <= 4 AFM_MAXP (lmax 4: +// NR <= 48, lmax 3: NR <= 64) +constexpr int AFM_NB = 32, AFM_TEAM = 256, AFM_MAXP = 4; +inline size_t a_fwd_mfma_shmem(int NR, int lmax) +{ + const int NL = lmax + 1; return (size_t) AFM_NB * (NL * NL + NR * NL + 1) * sizeof(float) + AFM_NB * sizeof(int) + 16; } template bool a_fwd_mfma_fits(int lmax, int NR) { - return lmax == AFM_LMAX && (NR + 15) / 16 * (AFM_LMAX + 1) <= (AFM_TEAM / 64) * AFM_MAXP && - a_fwd_mfma_shmem(NR) <= team_scratch_max(AFM_TEAM); + return fused_lmax_ok(lmax) && (NR + 15) / 16 * (lmax + 1) <= (AFM_TEAM / 64) * AFM_MAXP && + a_fwd_mfma_shmem(NR, lmax) <= team_scratch_max(AFM_TEAM); } #if GRACE_KK_GEMM_MFMA // The basis A[i, n, lm] = ascale sum_j z[mu_j, n] R_nl(x_ij) Y_lm(r_ij) (GRACE-1L g1lf:A, GRACE-2L g2lf:L1_A) on the -// CDNA matrix cores, lmax 4: team of 256 per atom, batches of 32 bonds staged as in the team kernels (Y, and +// CDNA matrix cores, lmax LM: team of 256 per atom, batches of 32 bonds staged as in the team kernels (Y, and // P = R z per (bond, channel, l)); per l block the product A_l (channels x (2l+1)) = P_l^T Y_l with // v_mfma_f32_16x16x4f32: k = lane group <-> bond, A operand rows = 16 channels, B operand columns = the 2l+1 lm of the // block. The (channel tile, l) output blocks are split over the 4 wavefronts. Out of range bonds: P = 0, Y = 0. // Only for a_fwd_mfma_fits(lmax, NR). -template -void a_fwd_mfma(const char *label, const int cs, const int co, const int NR, const float ascale, const int N, - const AV &Af, const XV &x, const TV &type, const MapV &map, const NblV &nbl, const IlV &ilist, - const BcV &bc, const ZV &ztr, const int ceq, const int cb1, const int cb2, const double clam, - const MaskV &cmask, const GV &idx_s, const GV &alm, const GV &blm, const GV &cl, const GV &dl, - const SplV &sc) +template +void a_fwd_mfma_l(const char *label, const int cs, const int co, const int NR, const float ascale, const int N, + const AV &Af, const XV &x, const TV &type, const MapV &map, const NblV &nbl, const IlV &ilist, + const BcV &bc, const ZV &ztr, const int ceq, const int cb1, const int cb2, const double clam, + const MaskV &cmask, const GV &idx_s, const GV &alm, const GV &blm, const GV &cl, const GV &dl, + const SplV &sc) { using F = float; - constexpr int NB = AFM_NB, NL = AFM_LMAX + 1, NLM = NL * NL, TEAM = AFM_TEAM, MAXP = AFM_MAXP; + constexpr int NB = AFM_NB, NL = LM + 1, NLM = NL * NL, TEAM = AFM_TEAM, MAXP = AFM_MAXP; const int nout = NR * NL, ntn = (NR + 15) / 16, npair = ntn * NL; using team_policy = Kokkos::TeamPolicy>; using member = typename team_policy::member_type; team_policy pol(cs, TEAM); - pol = pol.set_scratch_size(0, Kokkos::PerTeam(a_fwd_mfma_shmem(NR))); + pol = pol.set_scratch_size(0, Kokkos::PerTeam(a_fwd_mfma_shmem(NR, LM))); Kokkos::parallel_for(label, pol, KOKKOS_LAMBDA(const member &t) { const int ii = t.league_rank(); const int i = ilist[ii + co]; @@ -376,7 +387,7 @@ void a_fwd_mfma(const char *label, const int cs, const int co, const int NR, con double rm = r, drm, dlm; // the model's bond length: r' of a coupled bond (grace/coupling.h) if (CPL && coupling_cross(cmask(i), cmask(j), cb1, cb2)) coupling_shift(ceq, r, rc, clam, rm, drm, dlm); xs[b] = F(rm / rc); - real_sph(AFM_LMAX, F(dx * rinv), F(dy * rinv), F(dz * rinv), idx_s, alm, blm, cl, dl, Ys + b * NLM); + real_sph(LM, F(dx * rinv), F(dy * rinv), F(dz * rinv), idx_s, alm, blm, cl, dl, Ys + b * NLM); } else { for (int y = 0; y < NLM; y++) Ys[b * NLM + y] = 0.0f; } @@ -420,6 +431,14 @@ void a_fwd_mfma(const char *label, const int cs, const int co, const int NR, con } }); } + +// a_fwd_mfma_l for lmax 3 or 4 (a_fwd_mfma_fits) +template +void a_fwd_mfma(const char *label, const int lmax, const A &...a) +{ + if (lmax == 3) a_fwd_mfma_l(label, a...); + else a_fwd_mfma_l(label, a...); +} #endif } // namespace GraceFusedKK diff --git a/libgrace/include/grace/kk/g1l_shape_large.h b/libgrace/include/grace/kk/g1l_shape_large.h deleted file mode 100644 index e6dfebc..0000000 --- a/libgrace/include/grace/kk/g1l_shape_large.h +++ /dev/null @@ -1,3954 +0,0 @@ -// SPDX-License-Identifier: LicenseRef-ASL (Academic Software Licence, see LICENSE.md) -// Generated from GRACE-1L-OMAT-large-base/kokkos.npz (products AA,AAA,AAAA; accumulating reverse: AA) -- do not edit. -#ifndef LMP_PAIR_GRACE_FUSED_SHAPE_G1LSHAPE_L_H -#define LMP_PAIR_GRACE_FUSED_SHAPE_G1LSHAPE_L_H - -#include - -namespace grace { -namespace kk { -namespace G1LShape_L { - -constexpr int nt_AA = 623; -constexpr int tab_AA[623][3] = {{0,0,0}, {1,1,1}, {2,2,1}, {3,3,1}, {4,4,2}, {5,5,2}, {6,6,2}, {7,7,2}, {8,8,2}, {9,9,3}, {10,10,3}, {11,11,3}, {12,12,3}, {13,13,3}, {14,14,3}, {15,15,3}, {16,16,4}, {17,17,4}, {18,18,4}, {19,19,4}, {20,20,4}, {21,21,4}, {22,22,4}, {23,23,4}, {24,24,4}, {1,0,5}, {2,0,6}, {3,0,7}, {4,3,8}, {5,2,8}, {6,1,8}, {8,1,8}, {5,1,9}, {6,2,9}, {7,3,9}, {4,1,10}, {6,3,10}, {7,2,10}, {8,3,10}, {9,8,11}, {10,7,11}, {11,6,11}, {11,8,11}, {12,5,11}, {13,4,11}, {14,5,11}, {15,4,11}, {10,4,12}, {11,5,12}, {12,6,12}, {13,7,12}, {14,8,12}, {9,4,13}, {10,5,13}, {11,4,13}, {12,7,13}, {13,6,13}, {13,8,13}, {14,7,13}, {15,8,13}, {16,15,14}, {17,14,14}, {18,13,14}, {18,15,14}, {19,12,14}, {19,14,14}, {20,11,14}, {21,10,14}, {22,9,14}, {22,11,14}, {23,10,14}, {24,9,14}, {17,9,15}, {18,10,15}, {19,11,15}, {20,12,15}, {21,13,15}, {22,14,15}, {23,15,15}, {16,9,16}, {17,10,16}, {18,9,16}, {18,11,16}, {19,10,16}, {20,13,16}, {21,12,16}, {21,14,16}, {22,13,16}, {22,15,16}, {23,14,16}, {24,15,16}, {3,1,17}, {2,1,18}, {1,1,19}, {2,2,19}, {3,3,19}, {3,2,20}, {1,1,21}, {3,3,21}, {4,0,22}, {5,0,23}, {6,0,24}, {7,0,25}, {8,0,26}, {6,4,27}, {7,5,27}, {7,4,28}, {6,5,28}, {8,5,28}, {4,4,29}, {5,5,29}, {6,6,29}, {7,7,29}, {8,8,29}, {5,4,30}, {7,6,30}, {8,7,30}, {5,5,31}, {8,6,31}, {7,7,31}, {9,3,32}, {10,2,32}, {11,3,32}, {13,1,32}, {15,1,32}, {10,3,33}, {11,2,33}, {12,1,33}, {14,1,33}, {11,1,34}, {12,2,34}, {13,3,34}, {10,1,35}, {12,3,35}, {13,2,35}, {14,3,35}, {9,1,36}, {11,1,36}, {13,3,36}, {14,2,36}, {15,3,36}, {13,9,37}, {12,10,37}, {13,11,37}, {15,11,37}, {14,9,38}, {13,10,38}, {15,10,38}, {12,11,38}, {14,11,38}, {9,9,39}, {11,11,39}, {12,12,39}, {13,13,39}, {15,15,39}, {10,9,40}, {11,10,40}, {13,12,40}, {14,13,40}, {15,14,40}, {11,9,41}, {11,11,41}, {14,12,41}, {13,13,41}, {15,13,41}, {16,8,42}, {17,7,42}, {18,6,42}, {19,7,42}, {20,4,42}, {21,5,42}, {23,5,42}, {24,4,42}, {17,8,43}, {18,7,43}, {19,6,43}, {19,8,43}, {20,5,43}, {21,4,43}, {22,5,43}, {23,4,43}, {18,4,44}, {19,5,44}, {20,6,44}, {21,7,44}, {22,8,44}, {17,4,45}, {18,5,45}, {19,4,45}, {20,7,45}, {21,6,45}, {21,8,45}, {22,7,45}, {23,8,45}, {16,4,46}, {17,5,46}, {19,5,46}, {20,8,46}, {21,7,46}, {22,6,46}, {23,7,46}, {24,8,46}, {22,16,47}, {21,17,47}, {20,18,47}, {24,18,47}, {21,19,47}, {23,19,47}, {23,16,48}, {22,17,48}, {24,17,48}, {21,18,48}, {23,18,48}, {20,19,48}, {22,19,48}, {16,16,49}, {17,17,49}, {18,18,49}, {19,19,49}, {20,20,49}, {21,21,49}, {22,22,49}, {23,23,49}, {24,24,49}, {17,16,50}, {18,17,50}, {19,18,50}, {21,20,50}, {22,21,50}, {23,22,50}, {24,23,50}, {18,16,51}, {19,17,51}, {19,19,51}, {22,20,51}, {21,21,51}, {23,21,51}, {24,22,51}, {4,3,52}, {8,1,52}, {4,2,53}, {5,3,53}, {7,1,53}, {4,3,54}, {5,2,54}, {6,1,54}, {8,1,54}, {5,1,55}, {6,2,55}, {7,3,55}, {4,1,56}, {6,3,56}, {7,2,56}, {8,3,56}, {5,1,57}, {7,3,57}, {8,2,57}, {4,1,58}, {8,3,58}, {9,0,59}, {10,0,60}, {11,0,61}, {12,0,62}, {13,0,63}, {14,0,64}, {15,0,65}, {9,6,66}, {10,7,66}, {11,8,66}, {13,4,66}, {14,5,66}, {9,7,67}, {11,7,67}, {12,4,67}, {13,5,67}, {15,5,67}, {9,8,68}, {10,7,68}, {11,6,68}, {11,8,68}, {12,5,68}, {13,4,68}, {14,5,68}, {15,4,68}, {10,4,69}, {11,5,69}, {12,6,69}, {13,7,69}, {14,8,69}, {9,4,70}, {10,5,70}, {11,4,70}, {12,7,70}, {13,6,70}, {13,8,70}, {14,7,70}, {15,8,70}, {9,5,71}, {11,5,71}, {12,8,71}, {13,7,71}, {15,7,71}, {10,5,72}, {11,4,72}, {13,8,72}, {14,7,72}, {15,6,72}, {16,3,73}, {17,2,73}, {18,3,73}, {22,1,73}, {24,1,73}, {17,3,74}, {18,2,74}, {19,3,74}, {21,1,74}, {23,1,74}, {18,3,75}, {19,2,75}, {20,1,75}, {22,1,75}, {19,1,76}, {20,2,76}, {21,3,76}, {18,1,77}, {20,3,77}, {21,2,77}, {22,3,77}, {17,1,78}, {19,1,78}, {21,3,78}, {22,2,78}, {23,3,78}, {16,1,79}, {18,1,79}, {22,3,79}, {23,2,79}, {24,3,79}, {16,13,80}, {17,12,80}, {18,13,80}, {19,14,80}, {20,9,80}, {21,10,80}, {22,11,80}, {24,11,80}, {16,14,81}, {17,13,81}, {18,12,81}, {19,13,81}, {19,15,81}, {20,10,81}, {21,9,81}, {21,11,81}, {23,11,81}, {24,10,81}, {16,15,82}, {17,14,82}, {18,13,82}, {18,15,82}, {19,12,82}, {19,14,82}, {20,11,82}, {21,10,82}, {22,9,82}, {22,11,82}, {23,10,82}, {24,9,82}, {17,9,83}, {18,10,83}, {19,11,83}, {20,12,83}, {21,13,83}, {22,14,83}, {23,15,83}, {16,9,84}, {17,10,84}, {18,9,84}, {18,11,84}, {19,10,84}, {20,13,84}, {21,12,84}, {21,14,84}, {22,13,84}, {22,15,84}, {23,14,84}, {24,15,84}, {16,10,85}, {17,11,85}, {19,9,85}, {19,11,85}, {20,14,85}, {21,13,85}, {21,15,85}, {22,12,85}, {23,13,85}, {24,14,85}, {16,11,86}, {18,11,86}, {19,10,86}, {20,15,86}, {21,14,86}, {22,13,86}, {23,12,86}, {24,13,86}, {8,4,87}, {7,4,88}, {8,5,88}, {6,4,89}, {7,5,89}, {7,4,90}, {6,5,90}, {8,5,90}, {4,4,91}, {5,5,91}, {6,6,91}, {7,7,91}, {8,8,91}, {5,4,92}, {7,6,92}, {8,7,92}, {5,5,93}, {8,6,93}, {7,7,93}, {5,4,94}, {8,7,94}, {4,4,95}, {8,8,95}, {9,3,96}, {15,1,96}, {9,2,97}, {10,3,97}, {14,1,97}, {9,3,98}, {10,2,98}, {11,3,98}, {13,1,98}, {15,1,98}, {10,3,99}, {11,2,99}, {12,1,99}, {14,1,99}, {11,1,100}, {12,2,100}, {13,3,100}, {10,1,101}, {12,3,101}, {13,2,101}, {14,3,101}, {9,1,102}, {11,1,102}, {13,3,102}, {14,2,102}, {15,3,102}, {10,1,103}, {14,3,103}, {15,2,103}, {9,1,104}, {15,3,104}, {13,9,105}, {14,10,105}, {15,11,105}, {12,9,106}, {13,10,106}, {14,11,106}, {13,9,107}, {12,10,107}, {13,11,107}, {15,11,107}, {14,9,108}, {13,10,108}, {15,10,108}, {12,11,108}, {14,11,108}, {9,9,109}, {10,10,109}, {11,11,109}, {12,12,109}, {13,13,109}, {14,14,109}, {15,15,109}, {10,9,110}, {11,10,110}, {13,12,110}, {14,13,110}, {15,14,110}, {11,9,111}, {11,11,111}, {14,12,111}, {13,13,111}, {15,13,111}, {11,10,112}, {15,12,112}, {14,13,112}, {11,9,113}, {10,10,113}, {15,13,113}, {14,14,113}, {16,0,114}, {17,0,115}, {18,0,116}, {19,0,117}, {20,0,118}, {21,0,119}, {22,0,120}, {23,0,121}, {24,0,122}, {16,6,123}, {17,7,123}, {18,8,123}, {22,4,123}, {23,5,123}, {16,7,124}, {17,6,124}, {18,7,124}, {19,8,124}, {21,4,124}, {22,5,124}, {24,5,124}, {16,8,125}, {17,7,125}, {18,6,125}, {19,7,125}, {20,4,125}, {21,5,125}, {23,5,125}, {24,4,125}, {17,8,126}, {18,7,126}, {19,6,126}, {19,8,126}, {20,5,126}, {21,4,126}, {22,5,126}, {23,4,126}, {18,4,127}, {19,5,127}, {20,6,127}, {21,7,127}, {22,8,127}, {17,4,128}, {18,5,128}, {19,4,128}, {20,7,128}, {21,6,128}, {21,8,128}, {22,7,128}, {23,8,128}, {16,4,129}, {17,5,129}, {19,5,129}, {20,8,129}, {21,7,129}, {22,6,129}, {23,7,129}, {24,8,129}, {16,5,130}, {18,5,130}, {19,4,130}, {21,8,130}, {22,7,130}, {23,6,130}, {24,7,130}, {17,5,131}, {18,4,131}, {22,8,131}, {23,7,131}, {24,6,131}, {20,16,132}, {21,17,132}, {22,18,132}, {23,19,132}, {21,16,133}, {20,17,133}, {21,18,133}, {22,19,133}, {24,19,133}, {22,16,134}, {21,17,134}, {20,18,134}, {24,18,134}, {21,19,134}, {23,19,134}, {23,16,135}, {22,17,135}, {24,17,135}, {21,18,135}, {23,18,135}, {20,19,135}, {22,19,135}, {16,16,136}, {17,17,136}, {18,18,136}, {19,19,136}, {20,20,136}, {21,21,136}, {22,22,136}, {23,23,136}, {24,24,136}, {17,16,137}, {18,17,137}, {19,18,137}, {21,20,137}, {22,21,137}, {23,22,137}, {24,23,137}, {18,16,138}, {19,17,138}, {19,19,138}, {22,20,138}, {21,21,138}, {23,21,138}, {24,22,138}, {19,16,139}, {19,18,139}, {23,20,139}, {22,21,139}, {24,21,139}, {19,17,140}, {18,18,140}, {24,20,140}, {23,21,140}, {22,22,140}}; -constexpr double cg_AA[623] = {1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, -0.3872983346207416, 0.3872983346207416, 0.447213595499958, 0.3872983346207416, 0.3872983346207416, -0.22360679774997896, 0.3872983346207416, 0.3872983346207416, 0.26726124191242434, 0.21821789023599236, 0.23904572186687872, 0.06900655593423541, -0.1690308509457033, -0.06900655593423541, -0.21821789023599236, -0.26726124191242434, 0.2182178902359924, 0.2760262237369417, 0.29277002188456, 0.2760262237369417, 0.2182178902359924, 0.26726124191242434, 0.21821789023599236, -0.06900655593423541, -0.1690308509457033, 0.23904572186687872, -0.06900655593423541, 0.21821789023599236, 0.26726124191242434, 0.20412414523193143, 0.17677669529663684, 0.14940357616679917, 0.03857583749052297, 0.17251638983558854, 0.06681531047810609, -0.13363062095621217, -0.06681531047810609, -0.03857583749052297, -0.14940357616679917, -0.17677669529663684, -0.20412414523193143, 0.1443375672974064, 0.1889822365046136, 0.21128856368212912, 0.2182178902359924, 0.21128856368212912, 0.1889822365046136, 0.1443375672974064, 0.20412414523193143, 0.17677669529663684, -0.03857583749052297, 0.14940357616679917, -0.06681531047810609, -0.13363062095621217, 0.17251638983558854, -0.06681531047810609, 0.14940357616679917, -0.03857583749052297, 0.17677669529663684, 0.20412414523193143, 1.2909944487358054, 1.2909944487358056, -0.3726779962499649, 0.7453559924999299, -0.3726779962499649, 1.2909944487358056, -0.6454972243679027, 0.6454972243679027, 1.0, 1.0, 1.0000000000000002, 1.0, 1.0, -0.8944271909999157, 0.7745966692414832, 0.7745966692414832, 0.44721359549995787, -0.7745966692414832, -0.44721359549995787, 0.22360679774997894, 0.447213595499958, 0.22360679774997894, -0.44721359549995787, 0.7745966692414832, 0.44721359549995787, 0.7745966692414832, -0.3872983346207416, -0.8944271909999157, 0.3872983346207416, 0.44543540318737396, 0.363696483726654, -0.11501092655705904, -0.11501092655705904, -0.44543540318737396, 0.363696483726654, 0.46004370622823615, -0.28171808490950556, -0.363696483726654, 0.3984095364447979, 0.4879500364742666, 0.3984095364447979, 0.363696483726654, -0.28171808490950556, 0.46004370622823615, 0.363696483726654, 0.44543540318737396, 0.11501092655705904, -0.11501092655705904, 0.363696483726654, 0.44543540318737396, -0.3571428571428571, -0.7142857142857142, 0.5532833351724881, 0.3571428571428571, 0.5646924393157818, 0.4374088826398531, -0.5646924393157818, 0.22587697572631277, -0.4374088826398531, -0.39929785312496235, 0.23957871187497742, 0.31943828249996997, 0.23957871187497742, -0.39929785312496235, 0.5646924393157818, 0.4374088826398531, 0.22587697572631277, 0.4374088826398531, 0.5646924393157818, -0.3571428571428571, -0.27664166758624403, -0.7142857142857142, 0.27664166758624403, -0.3571428571428571, 0.3286710990610897, 0.23240556292613204, 0.2151657414559676, -0.0878410461157883, 0.05555555555555555, -0.0878410461157883, -0.23240556292613204, -0.3286710990610897, 0.23240556292613204, 0.2484519974999766, 0.30429030972509225, 0.0878410461157883, -0.2222222222222222, -0.0878410461157883, -0.2484519974999766, -0.23240556292613204, 0.2151657414559676, 0.30429030972509225, 0.33333333333333337, 0.30429030972509225, 0.2151657414559676, 0.23240556292613204, 0.2484519974999766, -0.0878410461157883, -0.2222222222222222, 0.30429030972509225, -0.0878410461157883, 0.2484519974999766, 0.23240556292613204, 0.3286710990610897, 0.23240556292613204, 0.0878410461157883, 0.05555555555555555, -0.0878410461157883, 0.2151657414559676, 0.23240556292613204, 0.3286710990610897, -0.22771001702132432, -0.3415650255319865, -0.5773502691896256, 0.22771001702132432, 0.430331482911935, 0.3415650255319865, 0.426006433615129, 0.40253824294970647, -0.426006433615129, 0.2738612787525829, -0.40253824294970647, 0.13608276348795428, -0.2738612787525829, -0.34783279649996723, -0.08695819912499181, 0.09938079899999062, 0.21118419787498008, 0.2484519974999766, 0.21118419787498008, 0.09938079899999062, -0.08695819912499181, -0.34783279649996723, 0.426006433615129, 0.40253824294970647, 0.2738612787525829, 0.13608276348795428, 0.2738612787525829, 0.40253824294970647, 0.426006433615129, -0.22771001702132432, -0.3415650255319865, -0.2151657414559675, -0.5773502691896256, 0.2151657414559675, -0.3415650255319865, -0.22771001702132432, 0.6236095644623235, 0.6236095644623235, 0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.1610152971798826, 0.6440611887195306, 0.557773351022717, 0.1610152971798826, -0.39440531887330765, 0.6831300510639733, -0.39440531887330765, -0.1610152971798826, 0.557773351022717, 0.6440611887195306, -0.1610152971798826, -0.5091750772173155, 0.5091750772173155, 0.5091750772173155, -0.6236095644623235, 0.6236095644623235, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, -0.5590169943749473, 0.39528470752104733, -0.24999999999999994, -0.24999999999999994, 0.39528470752104733, 0.39528470752104733, 0.30618621784789724, -0.4999999999999999, 0.30618621784789724, -0.39528470752104733, -0.24999999999999994, 0.30618621784789724, 0.33541019662496846, -0.3872983346207416, 0.15811388300841894, 0.3872983346207416, -0.30618621784789724, 0.24999999999999994, -0.4999999999999999, 0.15811388300841894, 0.4472135954999579, 0.15811388300841894, -0.4999999999999999, -0.24999999999999994, 0.30618621784789724, 0.3872983346207416, 0.15811388300841894, 0.33541019662496846, 0.3872983346207416, 0.30618621784789724, -0.24999999999999994, 0.39528470752104733, -0.30618621784789724, -0.4999999999999999, 0.30618621784789724, 0.39528470752104733, -0.39528470752104733, 0.24999999999999994, -0.24999999999999994, 0.39528470752104733, -0.5590169943749473, 0.4762896722078401, 0.3367876570272817, -0.09001028747788692, -0.09001028747788692, -0.4762896722078401, 0.4124789556921526, 0.4409585518440983, -0.15590239111558082, -0.15590239111558082, -0.4124789556921526, 0.3486083443891981, 0.4930066485916346, -0.31180478223116176, -0.3486083443891981, 0.4025382429497066, 0.5091750772173156, 0.4025382429497066, 0.3486083443891981, -0.31180478223116176, 0.4930066485916346, 0.3486083443891981, 0.4124789556921526, 0.15590239111558082, -0.15590239111558082, 0.4409585518440983, 0.4124789556921526, 0.4762896722078401, 0.09001028747788692, -0.09001028747788692, 0.3367876570272817, 0.4762896722078401, -0.2545875386086577, -0.4409585518440983, 0.28867513459481275, -0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, 0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.0962250448649376, 0.22222222222222215, 0.21516574145596756, -0.3888888888888888, -0.21516574145596756, 0.22222222222222215, -0.14698618394803278, -0.3286710990610897, -0.2545875386086577, 0.14698618394803278, 0.24845199749997657, -0.28867513459481275, 0.21516574145596756, -0.22222222222222215, 0.05555555555555554, 0.22222222222222215, 0.28867513459481275, -0.24845199749997657, -0.14698618394803278, 0.2545875386086577, -0.4409585518440983, -0.0962250448649376, 0.21516574145596756, 0.3333333333333333, 0.21516574145596756, -0.0962250448649376, -0.4409585518440983, -0.2545875386086577, 0.14698618394803278, 0.28867513459481275, 0.24845199749997657, 0.22222222222222215, 0.05555555555555554, 0.21516574145596756, 0.22222222222222215, 0.24845199749997657, 0.28867513459481275, 0.14698618394803278, -0.2545875386086577, 0.3286710990610897, 0.14698618394803278, -0.21516574145596756, -0.22222222222222215, -0.3888888888888888, 0.22222222222222215, -0.21516574145596756, -0.0962250448649376, 0.14698618394803278, 0.3286710990610897, -0.2545875386086577, -0.28867513459481275, 0.21516574145596756, 0.16666666666666663, -0.21516574145596756, 0.28867513459481275, -0.4409585518440983, -0.2545875386086577, 1.183215956619923, 0.8366600265340753, 0.8366600265340753, 0.7745966692414833, 0.8944271909999157, -0.3162277660168379, 1.095445115010332, 0.3162277660168379, 0.09999999999999999, -0.39999999999999997, 0.6000000000000001, -0.39999999999999997, 0.09999999999999999, -0.3162277660168379, 1.095445115010332, -0.3162277660168379, -0.44721359549995787, 0.7745966692414833, 0.44721359549995787, -0.8366600265340753, 0.8366600265340753, -0.5916079783099615, 0.5916079783099615, 0.6123724356957945, 0.6123724356957945, 0.43301270189221924, 0.5303300858899105, 0.5303300858899105, -0.11572751247156893, 0.5669467095138407, 0.44821072850039756, 0.44821072850039756, 0.11572751247156893, -0.20044593143431824, 0.6338656910463873, 0.5175491695067655, 0.20044593143431824, -0.40089186286863654, 0.6546536707079772, -0.40089186286863654, -0.20044593143431824, 0.5175491695067655, 0.6338656910463873, -0.20044593143431824, -0.11572751247156893, -0.44821072850039756, 0.44821072850039756, 0.5669467095138407, -0.11572751247156893, -0.5303300858899105, 0.5303300858899105, 0.43301270189221924, -0.6123724356957945, 0.6123724356957945, -0.654653670707977, 0.8451542547285164, -0.654653670707977, -1.1338934190276815, 0.37796447300922714, 0.37796447300922714, 0.7423074889580901, -0.2474358296526967, 0.6388765649999396, -0.7423074889580901, -0.553283335172488, 0.5714285714285712, 0.553283335172488, 0.5532833351724881, -0.5714285714285712, 0.21428571428571427, -0.49999999999999994, 0.07142857142857141, 0.42857142857142855, 0.07142857142857141, -0.49999999999999994, 0.21428571428571427, -0.553283335172488, 0.5714285714285712, 0.5532833351724881, 0.5714285714285712, -0.553283335172488, 0.7423074889580901, -0.3194382824999698, -0.2474358296526967, 0.3194382824999698, 0.7423074889580901, -0.37796447300922714, -1.1338934190276815, 0.37796447300922714, 0.654653670707977, -0.4225771273642582, -0.654653670707977, 0.4225771273642582, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000004, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, -0.626099033699941, 0.38340579025361615, -0.2049390153191919, -0.2049390153191919, 0.38340579025361615, 0.38340579025361615, -0.15652475842498526, 0.3622844186547358, -0.3074085229787879, -0.3074085229787879, 0.3622844186547358, -0.38340579025361615, -0.2049390153191919, 0.3622844186547358, 0.17888543819998312, 0.2464751508773247, -0.519615242270663, 0.2464751508773247, -0.3622844186547358, 0.2049390153191919, -0.3074085229787879, 0.2464751508773247, 0.38013155617496414, -0.3872983346207416, 0.12247448713915886, 0.3872983346207416, -0.2464751508773247, 0.3074085229787879, -0.519615242270663, 0.12247448713915886, 0.44721359549995787, 0.12247448713915886, -0.519615242270663, -0.3074085229787879, 0.2464751508773247, 0.3872983346207416, 0.12247448713915886, 0.38013155617496414, 0.3872983346207416, 0.2464751508773247, -0.3074085229787879, -0.2049390153191919, 0.3622844186547358, -0.2464751508773247, -0.519615242270663, 0.2464751508773247, 0.17888543819998312, 0.3622844186547358, -0.2049390153191919, 0.38340579025361615, -0.3622844186547358, 0.3074085229787879, -0.3074085229787879, 0.3622844186547358, -0.15652475842498526, 0.38340579025361615, -0.38340579025361615, 0.2049390153191919, -0.2049390153191919, 0.38340579025361615, -0.626099033699941, 0.5185185185185184, -0.5797213274999453, 0.6573421981221794, -0.5797213274999453, -0.5797213274999453, -0.7777777777777777, 0.21911406604072645, 0.21911406604072645, 0.5797213274999453, 0.6573421981221794, 0.21911406604072645, -0.40740740740740733, -0.6573421981221794, 0.4969039949999531, -0.21911406604072645, -0.5797213274999453, 0.21911406604072645, 0.5797213274999453, 0.4969039949999531, -0.21911406604072645, 0.33333333333333326, -0.4969039949999531, 0.2592592592592592, -0.38888888888888884, -0.20370370370370366, 0.16666666666666663, 0.3333333333333333, 0.16666666666666663, -0.20370370370370366, -0.38888888888888884, 0.2592592592592592, -0.5797213274999453, 0.21911406604072645, 0.4969039949999531, 0.33333333333333326, 0.4969039949999531, 0.21911406604072645, -0.5797213274999453, 0.6573421981221794, 0.21911406604072645, -0.24845199749997654, -0.40740740740740733, 0.24845199749997654, 0.21911406604072645, 0.6573421981221794, -0.5797213274999453, -0.21911406604072645, -0.7777777777777777, 0.21911406604072645, -0.5797213274999453, 0.5797213274999453, -0.3286710990610897, 0.5185185185185184, -0.5797213274999453, 0.3286710990610897}; - -template -KOKKOS_INLINE_FUNCTION void fwd_AA(const V &L, const V &R, const V &out, const int ii, const int k) -{ - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a4 = L(ii, k, 4); - const float a5 = L(ii, k, 5); - const float a6 = L(ii, k, 6); - const float a7 = L(ii, k, 7); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a13 = L(ii, k, 13); - const float a14 = L(ii, k, 14); - const float a15 = L(ii, k, 15); - const float a16 = L(ii, k, 16); - const float a17 = L(ii, k, 17); - const float a18 = L(ii, k, 18); - const float a19 = L(ii, k, 19); - const float a20 = L(ii, k, 20); - const float a21 = L(ii, k, 21); - const float a22 = L(ii, k, 22); - const float a23 = L(ii, k, 23); - const float a24 = L(ii, k, 24); - out(ii, k, 0) = 1.0f * a0 * a0; - out(ii, k, 1) = 0.3333333432674408f * a1 * a1 + 0.3333333432674408f * a2 * a2 + 0.3333333432674408f * a3 * a3; - out(ii, k, 2) = 0.20000000298023224f * a4 * a4 + 0.20000000298023224f * a5 * a5 + 0.20000000298023224f * a6 * a6 + 0.20000000298023224f * a7 * a7 + 0.20000000298023224f * a8 * a8; - out(ii, k, 3) = 0.1428571492433548f * a9 * a9 + 0.1428571492433548f * a10 * a10 + 0.1428571492433548f * a11 * a11 + 0.1428571492433548f * a12 * a12 + 0.1428571492433548f * a13 * a13 + 0.1428571492433548f * a14 * a14 + 0.1428571492433548f * a15 * a15; - out(ii, k, 4) = 0.1111111119389534f * a16 * a16 + 0.1111111119389534f * a17 * a17 + 0.1111111119389534f * a18 * a18 + 0.1111111119389534f * a19 * a19 + 0.1111111119389534f * a20 * a20 + 0.1111111119389534f * a21 * a21 + 0.1111111119389534f * a22 * a22 + 0.1111111119389534f * a23 * a23 + 0.1111111119389534f * a24 * a24; - out(ii, k, 5) = 1.0f * a1 * a0; - out(ii, k, 6) = 1.0f * a2 * a0; - out(ii, k, 7) = 1.0f * a3 * a0; - out(ii, k, 8) = 0.3872983455657959f * a4 * a3 + 0.3872983455657959f * a5 * a2 + -0.22360679507255554f * a6 * a1 + -0.3872983455657959f * a8 * a1; - out(ii, k, 9) = 0.3872983455657959f * a5 * a1 + 0.4472135901451111f * a6 * a2 + 0.3872983455657959f * a7 * a3; - out(ii, k, 10) = 0.3872983455657959f * a4 * a1 + -0.22360679507255554f * a6 * a3 + 0.3872983455657959f * a7 * a2 + 0.3872983455657959f * a8 * a3; - out(ii, k, 11) = 0.26726123690605164f * a9 * a8 + 0.2182178944349289f * a10 * a7 + 0.23904572427272797f * a11 * a6 + 0.0690065547823906f * a11 * a8 + -0.16903084516525269f * a12 * a5 + -0.0690065547823906f * a13 * a4 + -0.2182178944349289f * a14 * a5 + -0.26726123690605164f * a15 * a4; - out(ii, k, 12) = 0.2182178944349289f * a10 * a4 + 0.2760262191295624f * a11 * a5 + 0.29277002811431885f * a12 * a6 + 0.2760262191295624f * a13 * a7 + 0.2182178944349289f * a14 * a8; - out(ii, k, 13) = 0.26726123690605164f * a9 * a4 + 0.2182178944349289f * a10 * a5 + -0.0690065547823906f * a11 * a4 + -0.16903084516525269f * a12 * a7 + 0.23904572427272797f * a13 * a6 + -0.0690065547823906f * a13 * a8 + 0.2182178944349289f * a14 * a7 + 0.26726123690605164f * a15 * a8; - out(ii, k, 14) = 0.20412415266036987f * a16 * a15 + 0.1767766922712326f * a17 * a14 + 0.14940357208251953f * a18 * a13 + 0.03857583925127983f * a18 * a15 + 0.17251639068126678f * a19 * a12 + 0.06681530922651291f * a19 * a14 + -0.13363061845302582f * a20 * a11 + -0.06681530922651291f * a21 * a10 + -0.03857583925127983f * a22 * a9 + -0.14940357208251953f * a22 * a11 + -0.1767766922712326f * a23 * a10 + -0.20412415266036987f * a24 * a9; - out(ii, k, 15) = 0.14433756470680237f * a17 * a9 + 0.18898223340511322f * a18 * a10 + 0.21128855645656586f * a19 * a11 + 0.2182178944349289f * a20 * a12 + 0.21128855645656586f * a21 * a13 + 0.18898223340511322f * a22 * a14 + 0.14433756470680237f * a23 * a15; - out(ii, k, 16) = 0.20412415266036987f * a16 * a9 + 0.1767766922712326f * a17 * a10 + -0.03857583925127983f * a18 * a9 + 0.14940357208251953f * a18 * a11 + -0.06681530922651291f * a19 * a10 + -0.13363061845302582f * a20 * a13 + 0.17251639068126678f * a21 * a12 + -0.06681530922651291f * a21 * a14 + 0.14940357208251953f * a22 * a13 + -0.03857583925127983f * a22 * a15 + 0.1767766922712326f * a23 * a14 + 0.20412415266036987f * a24 * a15; - out(ii, k, 17) = 1.29099440574646f * a3 * a1; - out(ii, k, 18) = 1.29099440574646f * a2 * a1; - out(ii, k, 19) = -0.3726779818534851f * a1 * a1 + 0.7453559637069702f * a2 * a2 + -0.3726779818534851f * a3 * a3; - out(ii, k, 20) = 1.29099440574646f * a3 * a2; - out(ii, k, 21) = -0.64549720287323f * a1 * a1 + 0.64549720287323f * a3 * a3; - out(ii, k, 22) = 1.0f * a4 * a0; - out(ii, k, 23) = 1.0f * a5 * a0; - out(ii, k, 24) = 1.0f * a6 * a0; - out(ii, k, 25) = 1.0f * a7 * a0; - out(ii, k, 26) = 1.0f * a8 * a0; - out(ii, k, 27) = -0.8944271802902222f * a6 * a4 + 0.7745966911315918f * a7 * a5; - out(ii, k, 28) = 0.7745966911315918f * a7 * a4 + 0.4472135901451111f * a6 * a5 + -0.7745966911315918f * a8 * a5; - out(ii, k, 29) = -0.4472135901451111f * a4 * a4 + 0.22360679507255554f * a5 * a5 + 0.4472135901451111f * a6 * a6 + 0.22360679507255554f * a7 * a7 + -0.4472135901451111f * a8 * a8; - out(ii, k, 30) = 0.7745966911315918f * a5 * a4 + 0.4472135901451111f * a7 * a6 + 0.7745966911315918f * a8 * a7; - out(ii, k, 31) = -0.3872983455657959f * a5 * a5 + -0.8944271802902222f * a8 * a6 + 0.3872983455657959f * a7 * a7; - out(ii, k, 32) = 0.44543540477752686f * a9 * a3 + 0.36369648575782776f * a10 * a2 + -0.11501092463731766f * a11 * a3 + -0.11501092463731766f * a13 * a1 + -0.44543540477752686f * a15 * a1; - out(ii, k, 33) = 0.36369648575782776f * a10 * a3 + 0.46004369854927063f * a11 * a2 + -0.28171807527542114f * a12 * a1 + -0.36369648575782776f * a14 * a1; - out(ii, k, 34) = 0.39840954542160034f * a11 * a1 + 0.48795002698898315f * a12 * a2 + 0.39840954542160034f * a13 * a3; - out(ii, k, 35) = 0.36369648575782776f * a10 * a1 + -0.28171807527542114f * a12 * a3 + 0.46004369854927063f * a13 * a2 + 0.36369648575782776f * a14 * a3; - out(ii, k, 36) = 0.44543540477752686f * a9 * a1 + 0.11501092463731766f * a11 * a1 + -0.11501092463731766f * a13 * a3 + 0.36369648575782776f * a14 * a2 + 0.44543540477752686f * a15 * a3; - out(ii, k, 37) = -0.3571428656578064f * a13 * a9 + -0.7142857313156128f * a12 * a10 + 0.5532833337783813f * a13 * a11 + 0.3571428656578064f * a15 * a11; - out(ii, k, 38) = 0.5646924376487732f * a14 * a9 + 0.4374088943004608f * a13 * a10 + -0.5646924376487732f * a15 * a10 + 0.22587697207927704f * a12 * a11 + -0.4374088943004608f * a14 * a11; - out(ii, k, 39) = -0.3992978632450104f * a9 * a9 + 0.2395787090063095f * a11 * a11 + 0.31943827867507935f * a12 * a12 + 0.2395787090063095f * a13 * a13 + -0.3992978632450104f * a15 * a15; - out(ii, k, 40) = 0.5646924376487732f * a10 * a9 + 0.4374088943004608f * a11 * a10 + 0.22587697207927704f * a13 * a12 + 0.4374088943004608f * a14 * a13 + 0.5646924376487732f * a15 * a14; - out(ii, k, 41) = -0.3571428656578064f * a11 * a9 + -0.2766416668891907f * a11 * a11 + -0.7142857313156128f * a14 * a12 + 0.2766416668891907f * a13 * a13 + -0.3571428656578064f * a15 * a13; - out(ii, k, 42) = 0.32867109775543213f * a16 * a8 + 0.23240555822849274f * a17 * a7 + 0.21516573429107666f * a18 * a6 + -0.08784104883670807f * a19 * a7 + 0.0555555559694767f * a20 * a4 + -0.08784104883670807f * a21 * a5 + -0.23240555822849274f * a23 * a5 + -0.32867109775543213f * a24 * a4; - out(ii, k, 43) = 0.23240555822849274f * a17 * a8 + 0.24845199286937714f * a18 * a7 + 0.3042903244495392f * a19 * a6 + 0.08784104883670807f * a19 * a8 + -0.2222222238779068f * a20 * a5 + -0.08784104883670807f * a21 * a4 + -0.24845199286937714f * a22 * a5 + -0.23240555822849274f * a23 * a4; - out(ii, k, 44) = 0.21516573429107666f * a18 * a4 + 0.3042903244495392f * a19 * a5 + 0.3333333432674408f * a20 * a6 + 0.3042903244495392f * a21 * a7 + 0.21516573429107666f * a22 * a8; - out(ii, k, 45) = 0.23240555822849274f * a17 * a4 + 0.24845199286937714f * a18 * a5 + -0.08784104883670807f * a19 * a4 + -0.2222222238779068f * a20 * a7 + 0.3042903244495392f * a21 * a6 + -0.08784104883670807f * a21 * a8 + 0.24845199286937714f * a22 * a7 + 0.23240555822849274f * a23 * a8; - out(ii, k, 46) = 0.32867109775543213f * a16 * a4 + 0.23240555822849274f * a17 * a5 + 0.08784104883670807f * a19 * a5 + 0.0555555559694767f * a20 * a8 + -0.08784104883670807f * a21 * a7 + 0.21516573429107666f * a22 * a6 + 0.23240555822849274f * a23 * a7 + 0.32867109775543213f * a24 * a8; - out(ii, k, 47) = -0.22771002352237701f * a22 * a16 + -0.34156501293182373f * a21 * a17 + -0.5773502588272095f * a20 * a18 + 0.22771002352237701f * a24 * a18 + 0.4303314685821533f * a21 * a19 + 0.34156501293182373f * a23 * a19; - out(ii, k, 48) = 0.4260064363479614f * a23 * a16 + 0.4025382399559021f * a22 * a17 + -0.4260064363479614f * a24 * a17 + 0.273861289024353f * a21 * a18 + -0.4025382399559021f * a23 * a18 + 0.13608276844024658f * a20 * a19 + -0.273861289024353f * a22 * a19; - out(ii, k, 49) = -0.3478327989578247f * a16 * a16 + -0.08695819973945618f * a17 * a17 + 0.09938079863786697f * a18 * a18 + 0.21118420362472534f * a19 * a19 + 0.24845199286937714f * a20 * a20 + 0.21118420362472534f * a21 * a21 + 0.09938079863786697f * a22 * a22 + -0.08695819973945618f * a23 * a23 + -0.3478327989578247f * a24 * a24; - out(ii, k, 50) = 0.4260064363479614f * a17 * a16 + 0.4025382399559021f * a18 * a17 + 0.273861289024353f * a19 * a18 + 0.13608276844024658f * a21 * a20 + 0.273861289024353f * a22 * a21 + 0.4025382399559021f * a23 * a22 + 0.4260064363479614f * a24 * a23; - out(ii, k, 51) = -0.22771002352237701f * a18 * a16 + -0.34156501293182373f * a19 * a17 + -0.21516573429107666f * a19 * a19 + -0.5773502588272095f * a22 * a20 + 0.21516573429107666f * a21 * a21 + -0.34156501293182373f * a23 * a21 + -0.22771002352237701f * a24 * a22; - out(ii, k, 52) = 0.6236095428466797f * a4 * a3 + 0.6236095428466797f * a8 * a1; - out(ii, k, 53) = 0.5091750621795654f * a4 * a2 + 0.5091750621795654f * a5 * a3 + 0.5091750621795654f * a7 * a1; - out(ii, k, 54) = -0.16101530194282532f * a4 * a3 + 0.6440612077713013f * a5 * a2 + 0.5577733516693115f * a6 * a1 + 0.16101530194282532f * a8 * a1; - out(ii, k, 55) = -0.3944053053855896f * a5 * a1 + 0.6831300258636475f * a6 * a2 + -0.3944053053855896f * a7 * a3; - out(ii, k, 56) = -0.16101530194282532f * a4 * a1 + 0.5577733516693115f * a6 * a3 + 0.6440612077713013f * a7 * a2 + -0.16101530194282532f * a8 * a3; - out(ii, k, 57) = -0.5091750621795654f * a5 * a1 + 0.5091750621795654f * a7 * a3 + 0.5091750621795654f * a8 * a2; - out(ii, k, 58) = -0.6236095428466797f * a4 * a1 + 0.6236095428466797f * a8 * a3; - out(ii, k, 59) = 1.0f * a9 * a0; - out(ii, k, 60) = 1.0f * a10 * a0; - out(ii, k, 61) = 1.0f * a11 * a0; - out(ii, k, 62) = 1.0f * a12 * a0; - out(ii, k, 63) = 1.0f * a13 * a0; - out(ii, k, 64) = 1.0f * a14 * a0; - out(ii, k, 65) = 1.0f * a15 * a0; - out(ii, k, 66) = -0.55901700258255f * a9 * a6 + 0.3952847123146057f * a10 * a7 + -0.25f * a11 * a8 + -0.25f * a13 * a4 + 0.3952847123146057f * a14 * a5; - out(ii, k, 67) = 0.3952847123146057f * a9 * a7 + 0.3061862289905548f * a11 * a7 + -0.5f * a12 * a4 + 0.3061862289905548f * a13 * a5 + -0.3952847123146057f * a15 * a5; - out(ii, k, 68) = -0.25f * a9 * a8 + 0.3061862289905548f * a10 * a7 + 0.3354102075099945f * a11 * a6 + -0.3872983455657959f * a11 * a8 + 0.15811388194561005f * a12 * a5 + 0.3872983455657959f * a13 * a4 + -0.3061862289905548f * a14 * a5 + 0.25f * a15 * a4; - out(ii, k, 69) = -0.5f * a10 * a4 + 0.15811388194561005f * a11 * a5 + 0.4472135901451111f * a12 * a6 + 0.15811388194561005f * a13 * a7 + -0.5f * a14 * a8; - out(ii, k, 70) = -0.25f * a9 * a4 + 0.3061862289905548f * a10 * a5 + 0.3872983455657959f * a11 * a4 + 0.15811388194561005f * a12 * a7 + 0.3354102075099945f * a13 * a6 + 0.3872983455657959f * a13 * a8 + 0.3061862289905548f * a14 * a7 + -0.25f * a15 * a8; - out(ii, k, 71) = 0.3952847123146057f * a9 * a5 + -0.3061862289905548f * a11 * a5 + -0.5f * a12 * a8 + 0.3061862289905548f * a13 * a7 + 0.3952847123146057f * a15 * a7; - out(ii, k, 72) = -0.3952847123146057f * a10 * a5 + 0.25f * a11 * a4 + -0.25f * a13 * a8 + 0.3952847123146057f * a14 * a7 + -0.55901700258255f * a15 * a6; - out(ii, k, 73) = 0.47628965973854065f * a16 * a3 + 0.3367876708507538f * a17 * a2 + -0.09001028537750244f * a18 * a3 + -0.09001028537750244f * a22 * a1 + -0.47628965973854065f * a24 * a1; - out(ii, k, 74) = 0.4124789535999298f * a17 * a3 + 0.44095855951309204f * a18 * a2 + -0.15590238571166992f * a19 * a3 + -0.15590238571166992f * a21 * a1 + -0.4124789535999298f * a23 * a1; - out(ii, k, 75) = 0.3486083447933197f * a18 * a3 + 0.4930066466331482f * a19 * a2 + -0.31180477142333984f * a20 * a1 + -0.3486083447933197f * a22 * a1; - out(ii, k, 76) = 0.4025382399559021f * a19 * a1 + 0.5091750621795654f * a20 * a2 + 0.4025382399559021f * a21 * a3; - out(ii, k, 77) = 0.3486083447933197f * a18 * a1 + -0.31180477142333984f * a20 * a3 + 0.4930066466331482f * a21 * a2 + 0.3486083447933197f * a22 * a3; - out(ii, k, 78) = 0.4124789535999298f * a17 * a1 + 0.15590238571166992f * a19 * a1 + -0.15590238571166992f * a21 * a3 + 0.44095855951309204f * a22 * a2 + 0.4124789535999298f * a23 * a3; - out(ii, k, 79) = 0.47628965973854065f * a16 * a1 + 0.09001028537750244f * a18 * a1 + -0.09001028537750244f * a22 * a3 + 0.3367876708507538f * a23 * a2 + 0.47628965973854065f * a24 * a3; - out(ii, k, 80) = -0.2545875310897827f * a16 * a13 + -0.44095855951309204f * a17 * a12 + 0.28867512941360474f * a18 * a13 + -0.21516573429107666f * a19 * a14 + 0.1666666716337204f * a20 * a9 + -0.21516573429107666f * a21 * a10 + 0.28867512941360474f * a22 * a11 + 0.2545875310897827f * a24 * a11; - out(ii, k, 81) = 0.32867109775543213f * a16 * a14 + 0.146986186504364f * a17 * a13 + -0.09622504562139511f * a18 * a12 + 0.2222222238779068f * a19 * a13 + 0.21516573429107666f * a19 * a15 + -0.3888888955116272f * a20 * a10 + -0.21516573429107666f * a21 * a9 + 0.2222222238779068f * a21 * a11 + -0.146986186504364f * a23 * a11 + -0.32867109775543213f * a24 * a10; - out(ii, k, 82) = -0.2545875310897827f * a16 * a15 + 0.146986186504364f * a17 * a14 + 0.24845199286937714f * a18 * a13 + -0.28867512941360474f * a18 * a15 + 0.21516573429107666f * a19 * a12 + -0.2222222238779068f * a19 * a14 + 0.0555555559694767f * a20 * a11 + 0.2222222238779068f * a21 * a10 + 0.28867512941360474f * a22 * a9 + -0.24845199286937714f * a22 * a11 + -0.146986186504364f * a23 * a10 + 0.2545875310897827f * a24 * a9; - out(ii, k, 83) = -0.44095855951309204f * a17 * a9 + -0.09622504562139511f * a18 * a10 + 0.21516573429107666f * a19 * a11 + 0.3333333432674408f * a20 * a12 + 0.21516573429107666f * a21 * a13 + -0.09622504562139511f * a22 * a14 + -0.44095855951309204f * a23 * a15; - out(ii, k, 84) = -0.2545875310897827f * a16 * a9 + 0.146986186504364f * a17 * a10 + 0.28867512941360474f * a18 * a9 + 0.24845199286937714f * a18 * a11 + 0.2222222238779068f * a19 * a10 + 0.0555555559694767f * a20 * a13 + 0.21516573429107666f * a21 * a12 + 0.2222222238779068f * a21 * a14 + 0.24845199286937714f * a22 * a13 + 0.28867512941360474f * a22 * a15 + 0.146986186504364f * a23 * a14 + -0.2545875310897827f * a24 * a15; - out(ii, k, 85) = 0.32867109775543213f * a16 * a10 + 0.146986186504364f * a17 * a11 + -0.21516573429107666f * a19 * a9 + -0.2222222238779068f * a19 * a11 + -0.3888888955116272f * a20 * a14 + 0.2222222238779068f * a21 * a13 + -0.21516573429107666f * a21 * a15 + -0.09622504562139511f * a22 * a12 + 0.146986186504364f * a23 * a13 + 0.32867109775543213f * a24 * a14; - out(ii, k, 86) = -0.2545875310897827f * a16 * a11 + -0.28867512941360474f * a18 * a11 + 0.21516573429107666f * a19 * a10 + 0.1666666716337204f * a20 * a15 + -0.21516573429107666f * a21 * a14 + 0.28867512941360474f * a22 * a13 + -0.44095855951309204f * a23 * a12 + -0.2545875310897827f * a24 * a13; - out(ii, k, 87) = 1.1832159757614136f * a8 * a4; - out(ii, k, 88) = 0.8366600275039673f * a7 * a4 + 0.8366600275039673f * a8 * a5; - out(ii, k, 89) = 0.7745966911315918f * a6 * a4 + 0.8944271802902222f * a7 * a5; - out(ii, k, 90) = -0.3162277638912201f * a7 * a4 + 1.095445156097412f * a6 * a5 + 0.3162277638912201f * a8 * a5; - out(ii, k, 91) = 0.10000000149011612f * a4 * a4 + -0.4000000059604645f * a5 * a5 + 0.6000000238418579f * a6 * a6 + -0.4000000059604645f * a7 * a7 + 0.10000000149011612f * a8 * a8; - out(ii, k, 92) = -0.3162277638912201f * a5 * a4 + 1.095445156097412f * a7 * a6 + -0.3162277638912201f * a8 * a7; - out(ii, k, 93) = -0.4472135901451111f * a5 * a5 + 0.7745966911315918f * a8 * a6 + 0.4472135901451111f * a7 * a7; - out(ii, k, 94) = -0.8366600275039673f * a5 * a4 + 0.8366600275039673f * a8 * a7; - out(ii, k, 95) = -0.5916079878807068f * a4 * a4 + 0.5916079878807068f * a8 * a8; - out(ii, k, 96) = 0.6123724579811096f * a9 * a3 + 0.6123724579811096f * a15 * a1; - out(ii, k, 97) = 0.4330126941204071f * a9 * a2 + 0.5303300619125366f * a10 * a3 + 0.5303300619125366f * a14 * a1; - out(ii, k, 98) = -0.1157275140285492f * a9 * a3 + 0.5669466853141785f * a10 * a2 + 0.4482107162475586f * a11 * a3 + 0.4482107162475586f * a13 * a1 + 0.1157275140285492f * a15 * a1; - out(ii, k, 99) = -0.20044593513011932f * a10 * a3 + 0.6338657140731812f * a11 * a2 + 0.5175491571426392f * a12 * a1 + 0.20044593513011932f * a14 * a1; - out(ii, k, 100) = -0.40089187026023865f * a11 * a1 + 0.6546536684036255f * a12 * a2 + -0.40089187026023865f * a13 * a3; - out(ii, k, 101) = -0.20044593513011932f * a10 * a1 + 0.5175491571426392f * a12 * a3 + 0.6338657140731812f * a13 * a2 + -0.20044593513011932f * a14 * a3; - out(ii, k, 102) = -0.1157275140285492f * a9 * a1 + -0.4482107162475586f * a11 * a1 + 0.4482107162475586f * a13 * a3 + 0.5669466853141785f * a14 * a2 + -0.1157275140285492f * a15 * a3; - out(ii, k, 103) = -0.5303300619125366f * a10 * a1 + 0.5303300619125366f * a14 * a3 + 0.4330126941204071f * a15 * a2; - out(ii, k, 104) = -0.6123724579811096f * a9 * a1 + 0.6123724579811096f * a15 * a3; - out(ii, k, 105) = -0.6546536684036255f * a13 * a9 + 0.8451542258262634f * a14 * a10 + -0.6546536684036255f * a15 * a11; - out(ii, k, 106) = -1.133893370628357f * a12 * a9 + 0.37796446681022644f * a13 * a10 + 0.37796446681022644f * a14 * a11; - out(ii, k, 107) = 0.7423074841499329f * a13 * a9 + -0.2474358230829239f * a12 * a10 + 0.6388765573501587f * a13 * a11 + -0.7423074841499329f * a15 * a11; - out(ii, k, 108) = -0.5532833337783813f * a14 * a9 + 0.5714285969734192f * a13 * a10 + 0.5532833337783813f * a15 * a10 + 0.5532833337783813f * a12 * a11 + -0.5714285969734192f * a14 * a11; - out(ii, k, 109) = 0.2142857164144516f * a9 * a9 + -0.5f * a10 * a10 + 0.0714285746216774f * a11 * a11 + 0.4285714328289032f * a12 * a12 + 0.0714285746216774f * a13 * a13 + -0.5f * a14 * a14 + 0.2142857164144516f * a15 * a15; - out(ii, k, 110) = -0.5532833337783813f * a10 * a9 + 0.5714285969734192f * a11 * a10 + 0.5532833337783813f * a13 * a12 + 0.5714285969734192f * a14 * a13 + -0.5532833337783813f * a15 * a14; - out(ii, k, 111) = 0.7423074841499329f * a11 * a9 + -0.31943827867507935f * a11 * a11 + -0.2474358230829239f * a14 * a12 + 0.31943827867507935f * a13 * a13 + 0.7423074841499329f * a15 * a13; - out(ii, k, 112) = -0.37796446681022644f * a11 * a10 + -1.133893370628357f * a15 * a12 + 0.37796446681022644f * a14 * a13; - out(ii, k, 113) = 0.6546536684036255f * a11 * a9 + -0.4225771129131317f * a10 * a10 + -0.6546536684036255f * a15 * a13 + 0.4225771129131317f * a14 * a14; - out(ii, k, 114) = 1.0f * a16 * a0; - out(ii, k, 115) = 1.0f * a17 * a0; - out(ii, k, 116) = 1.0f * a18 * a0; - out(ii, k, 117) = 1.0f * a19 * a0; - out(ii, k, 118) = 1.0f * a20 * a0; - out(ii, k, 119) = 1.0f * a21 * a0; - out(ii, k, 120) = 1.0f * a22 * a0; - out(ii, k, 121) = 1.0f * a23 * a0; - out(ii, k, 122) = 1.0f * a24 * a0; - out(ii, k, 123) = -0.6260990500450134f * a16 * a6 + 0.38340580463409424f * a17 * a7 + -0.20493902266025543f * a18 * a8 + -0.20493902266025543f * a22 * a4 + 0.38340580463409424f * a23 * a5; - out(ii, k, 124) = 0.38340580463409424f * a16 * a7 + -0.15652476251125336f * a17 * a6 + 0.36228442192077637f * a18 * a7 + -0.30740851163864136f * a19 * a8 + -0.30740851163864136f * a21 * a4 + 0.36228442192077637f * a22 * a5 + -0.38340580463409424f * a24 * a5; - out(ii, k, 125) = -0.20493902266025543f * a16 * a8 + 0.36228442192077637f * a17 * a7 + 0.17888544499874115f * a18 * a6 + 0.24647514522075653f * a19 * a7 + -0.5196152329444885f * a20 * a4 + 0.24647514522075653f * a21 * a5 + -0.36228442192077637f * a23 * a5 + 0.20493902266025543f * a24 * a4; - out(ii, k, 126) = -0.30740851163864136f * a17 * a8 + 0.24647514522075653f * a18 * a7 + 0.3801315426826477f * a19 * a6 + -0.3872983455657959f * a19 * a8 + 0.12247448414564133f * a20 * a5 + 0.3872983455657959f * a21 * a4 + -0.24647514522075653f * a22 * a5 + 0.30740851163864136f * a23 * a4; - out(ii, k, 127) = -0.5196152329444885f * a18 * a4 + 0.12247448414564133f * a19 * a5 + 0.4472135901451111f * a20 * a6 + 0.12247448414564133f * a21 * a7 + -0.5196152329444885f * a22 * a8; - out(ii, k, 128) = -0.30740851163864136f * a17 * a4 + 0.24647514522075653f * a18 * a5 + 0.3872983455657959f * a19 * a4 + 0.12247448414564133f * a20 * a7 + 0.3801315426826477f * a21 * a6 + 0.3872983455657959f * a21 * a8 + 0.24647514522075653f * a22 * a7 + -0.30740851163864136f * a23 * a8; - out(ii, k, 129) = -0.20493902266025543f * a16 * a4 + 0.36228442192077637f * a17 * a5 + -0.24647514522075653f * a19 * a5 + -0.5196152329444885f * a20 * a8 + 0.24647514522075653f * a21 * a7 + 0.17888544499874115f * a22 * a6 + 0.36228442192077637f * a23 * a7 + -0.20493902266025543f * a24 * a8; - out(ii, k, 130) = 0.38340580463409424f * a16 * a5 + -0.36228442192077637f * a18 * a5 + 0.30740851163864136f * a19 * a4 + -0.30740851163864136f * a21 * a8 + 0.36228442192077637f * a22 * a7 + -0.15652476251125336f * a23 * a6 + 0.38340580463409424f * a24 * a7; - out(ii, k, 131) = -0.38340580463409424f * a17 * a5 + 0.20493902266025543f * a18 * a4 + -0.20493902266025543f * a22 * a8 + 0.38340580463409424f * a23 * a7 + -0.6260990500450134f * a24 * a6; - out(ii, k, 132) = 0.5185185074806213f * a20 * a16 + -0.5797213315963745f * a21 * a17 + 0.6573421955108643f * a22 * a18 + -0.5797213315963745f * a23 * a19; - out(ii, k, 133) = -0.5797213315963745f * a21 * a16 + -0.7777777910232544f * a20 * a17 + 0.21911406517028809f * a21 * a18 + 0.21911406517028809f * a22 * a19 + 0.5797213315963745f * a24 * a19; - out(ii, k, 134) = 0.6573421955108643f * a22 * a16 + 0.21911406517028809f * a21 * a17 + -0.40740740299224854f * a20 * a18 + -0.6573421955108643f * a24 * a18 + 0.4969039857387543f * a21 * a19 + -0.21911406517028809f * a23 * a19; - out(ii, k, 135) = -0.5797213315963745f * a23 * a16 + 0.21911406517028809f * a22 * a17 + 0.5797213315963745f * a24 * a17 + 0.4969039857387543f * a21 * a18 + -0.21911406517028809f * a23 * a18 + 0.3333333432674408f * a20 * a19 + -0.4969039857387543f * a22 * a19; - out(ii, k, 136) = 0.25925925374031067f * a16 * a16 + -0.3888888955116272f * a17 * a17 + -0.20370370149612427f * a18 * a18 + 0.1666666716337204f * a19 * a19 + 0.3333333432674408f * a20 * a20 + 0.1666666716337204f * a21 * a21 + -0.20370370149612427f * a22 * a22 + -0.3888888955116272f * a23 * a23 + 0.25925925374031067f * a24 * a24; - out(ii, k, 137) = -0.5797213315963745f * a17 * a16 + 0.21911406517028809f * a18 * a17 + 0.4969039857387543f * a19 * a18 + 0.3333333432674408f * a21 * a20 + 0.4969039857387543f * a22 * a21 + 0.21911406517028809f * a23 * a22 + -0.5797213315963745f * a24 * a23; - out(ii, k, 138) = 0.6573421955108643f * a18 * a16 + 0.21911406517028809f * a19 * a17 + -0.24845199286937714f * a19 * a19 + -0.40740740299224854f * a22 * a20 + 0.24845199286937714f * a21 * a21 + 0.21911406517028809f * a23 * a21 + 0.6573421955108643f * a24 * a22; - out(ii, k, 139) = -0.5797213315963745f * a19 * a16 + -0.21911406517028809f * a19 * a18 + -0.7777777910232544f * a23 * a20 + 0.21911406517028809f * a22 * a21 + -0.5797213315963745f * a24 * a21; - out(ii, k, 140) = 0.5797213315963745f * a19 * a17 + -0.32867109775543213f * a18 * a18 + 0.5185185074806213f * a24 * a20 + -0.5797213315963745f * a23 * a21 + 0.32867109775543213f * a22 * a22; -} - -template -KOKKOS_INLINE_FUNCTION void rev_AA(const V &F, const V &, const V &D, const V &dF, const V &, const int ii, const int k) -{ - const float f0 = F(ii, k, 0); - const float f1 = F(ii, k, 1); - const float f2 = F(ii, k, 2); - const float f3 = F(ii, k, 3); - const float f4 = F(ii, k, 4); - const float f5 = F(ii, k, 5); - const float f6 = F(ii, k, 6); - const float f7 = F(ii, k, 7); - const float f8 = F(ii, k, 8); - const float f9 = F(ii, k, 9); - const float f10 = F(ii, k, 10); - const float f11 = F(ii, k, 11); - const float f12 = F(ii, k, 12); - const float f13 = F(ii, k, 13); - const float f14 = F(ii, k, 14); - const float f15 = F(ii, k, 15); - const float f16 = F(ii, k, 16); - const float f17 = F(ii, k, 17); - const float f18 = F(ii, k, 18); - const float f19 = F(ii, k, 19); - const float f20 = F(ii, k, 20); - const float f21 = F(ii, k, 21); - const float f22 = F(ii, k, 22); - const float f23 = F(ii, k, 23); - const float f24 = F(ii, k, 24); - { - float g0 = 0.0f; - float g1 = 0.0f; - float g2 = 0.0f; - float g3 = 0.0f; - float g4 = 0.0f; - float g5 = 0.0f; - float g6 = 0.0f; - float g7 = 0.0f; - float g8 = 0.0f; - float g9 = 0.0f; - float g10 = 0.0f; - float g11 = 0.0f; - float g12 = 0.0f; - float g13 = 0.0f; - float g14 = 0.0f; - float g15 = 0.0f; - float g16 = 0.0f; - float g17 = 0.0f; - float g18 = 0.0f; - float g19 = 0.0f; - float g20 = 0.0f; - float g21 = 0.0f; - float g22 = 0.0f; - float g23 = 0.0f; - float g24 = 0.0f; - { const float d = D(ii, k, 0); - g0 += 1.0f * d * f0; - g0 += 1.0f * d * f0; - } - { const float d = D(ii, k, 1); - g1 += 0.3333333432674408f * d * f1; - g1 += 0.3333333432674408f * d * f1; - g2 += 0.3333333432674408f * d * f2; - g2 += 0.3333333432674408f * d * f2; - g3 += 0.3333333432674408f * d * f3; - g3 += 0.3333333432674408f * d * f3; - } - { const float d = D(ii, k, 2); - g4 += 0.20000000298023224f * d * f4; - g4 += 0.20000000298023224f * d * f4; - g5 += 0.20000000298023224f * d * f5; - g5 += 0.20000000298023224f * d * f5; - g6 += 0.20000000298023224f * d * f6; - g6 += 0.20000000298023224f * d * f6; - g7 += 0.20000000298023224f * d * f7; - g7 += 0.20000000298023224f * d * f7; - g8 += 0.20000000298023224f * d * f8; - g8 += 0.20000000298023224f * d * f8; - } - { const float d = D(ii, k, 3); - g9 += 0.1428571492433548f * d * f9; - g9 += 0.1428571492433548f * d * f9; - g10 += 0.1428571492433548f * d * f10; - g10 += 0.1428571492433548f * d * f10; - g11 += 0.1428571492433548f * d * f11; - g11 += 0.1428571492433548f * d * f11; - g12 += 0.1428571492433548f * d * f12; - g12 += 0.1428571492433548f * d * f12; - g13 += 0.1428571492433548f * d * f13; - g13 += 0.1428571492433548f * d * f13; - g14 += 0.1428571492433548f * d * f14; - g14 += 0.1428571492433548f * d * f14; - g15 += 0.1428571492433548f * d * f15; - g15 += 0.1428571492433548f * d * f15; - } - { const float d = D(ii, k, 4); - g16 += 0.1111111119389534f * d * f16; - g16 += 0.1111111119389534f * d * f16; - g17 += 0.1111111119389534f * d * f17; - g17 += 0.1111111119389534f * d * f17; - g18 += 0.1111111119389534f * d * f18; - g18 += 0.1111111119389534f * d * f18; - g19 += 0.1111111119389534f * d * f19; - g19 += 0.1111111119389534f * d * f19; - g20 += 0.1111111119389534f * d * f20; - g20 += 0.1111111119389534f * d * f20; - g21 += 0.1111111119389534f * d * f21; - g21 += 0.1111111119389534f * d * f21; - g22 += 0.1111111119389534f * d * f22; - g22 += 0.1111111119389534f * d * f22; - g23 += 0.1111111119389534f * d * f23; - g23 += 0.1111111119389534f * d * f23; - g24 += 0.1111111119389534f * d * f24; - g24 += 0.1111111119389534f * d * f24; - } - { const float d = D(ii, k, 5); - g1 += 1.0f * d * f0; - g0 += 1.0f * d * f1; - } - { const float d = D(ii, k, 6); - g2 += 1.0f * d * f0; - g0 += 1.0f * d * f2; - } - { const float d = D(ii, k, 7); - g3 += 1.0f * d * f0; - g0 += 1.0f * d * f3; - } - { const float d = D(ii, k, 8); - g4 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f4; - g5 += 0.3872983455657959f * d * f2; - g2 += 0.3872983455657959f * d * f5; - g6 += -0.22360679507255554f * d * f1; - g1 += -0.22360679507255554f * d * f6; - g8 += -0.3872983455657959f * d * f1; - g1 += -0.3872983455657959f * d * f8; - } - { const float d = D(ii, k, 9); - g5 += 0.3872983455657959f * d * f1; - g1 += 0.3872983455657959f * d * f5; - g6 += 0.4472135901451111f * d * f2; - g2 += 0.4472135901451111f * d * f6; - g7 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f7; - } - { const float d = D(ii, k, 10); - g4 += 0.3872983455657959f * d * f1; - g1 += 0.3872983455657959f * d * f4; - g6 += -0.22360679507255554f * d * f3; - g3 += -0.22360679507255554f * d * f6; - g7 += 0.3872983455657959f * d * f2; - g2 += 0.3872983455657959f * d * f7; - g8 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f8; - } - { const float d = D(ii, k, 11); - g9 += 0.26726123690605164f * d * f8; - g8 += 0.26726123690605164f * d * f9; - g10 += 0.2182178944349289f * d * f7; - g7 += 0.2182178944349289f * d * f10; - g11 += 0.23904572427272797f * d * f6; - g6 += 0.23904572427272797f * d * f11; - g11 += 0.0690065547823906f * d * f8; - g8 += 0.0690065547823906f * d * f11; - g12 += -0.16903084516525269f * d * f5; - g5 += -0.16903084516525269f * d * f12; - g13 += -0.0690065547823906f * d * f4; - g4 += -0.0690065547823906f * d * f13; - g14 += -0.2182178944349289f * d * f5; - g5 += -0.2182178944349289f * d * f14; - g15 += -0.26726123690605164f * d * f4; - g4 += -0.26726123690605164f * d * f15; - } - { const float d = D(ii, k, 12); - g10 += 0.2182178944349289f * d * f4; - g4 += 0.2182178944349289f * d * f10; - g11 += 0.2760262191295624f * d * f5; - g5 += 0.2760262191295624f * d * f11; - g12 += 0.29277002811431885f * d * f6; - g6 += 0.29277002811431885f * d * f12; - g13 += 0.2760262191295624f * d * f7; - g7 += 0.2760262191295624f * d * f13; - g14 += 0.2182178944349289f * d * f8; - g8 += 0.2182178944349289f * d * f14; - } - { const float d = D(ii, k, 13); - g9 += 0.26726123690605164f * d * f4; - g4 += 0.26726123690605164f * d * f9; - g10 += 0.2182178944349289f * d * f5; - g5 += 0.2182178944349289f * d * f10; - g11 += -0.0690065547823906f * d * f4; - g4 += -0.0690065547823906f * d * f11; - g12 += -0.16903084516525269f * d * f7; - g7 += -0.16903084516525269f * d * f12; - g13 += 0.23904572427272797f * d * f6; - g6 += 0.23904572427272797f * d * f13; - g13 += -0.0690065547823906f * d * f8; - g8 += -0.0690065547823906f * d * f13; - g14 += 0.2182178944349289f * d * f7; - g7 += 0.2182178944349289f * d * f14; - g15 += 0.26726123690605164f * d * f8; - g8 += 0.26726123690605164f * d * f15; - } - { const float d = D(ii, k, 14); - g16 += 0.20412415266036987f * d * f15; - g15 += 0.20412415266036987f * d * f16; - g17 += 0.1767766922712326f * d * f14; - g14 += 0.1767766922712326f * d * f17; - g18 += 0.14940357208251953f * d * f13; - g13 += 0.14940357208251953f * d * f18; - g18 += 0.03857583925127983f * d * f15; - g15 += 0.03857583925127983f * d * f18; - g19 += 0.17251639068126678f * d * f12; - g12 += 0.17251639068126678f * d * f19; - g19 += 0.06681530922651291f * d * f14; - g14 += 0.06681530922651291f * d * f19; - g20 += -0.13363061845302582f * d * f11; - g11 += -0.13363061845302582f * d * f20; - g21 += -0.06681530922651291f * d * f10; - g10 += -0.06681530922651291f * d * f21; - g22 += -0.03857583925127983f * d * f9; - g9 += -0.03857583925127983f * d * f22; - g22 += -0.14940357208251953f * d * f11; - g11 += -0.14940357208251953f * d * f22; - g23 += -0.1767766922712326f * d * f10; - g10 += -0.1767766922712326f * d * f23; - g24 += -0.20412415266036987f * d * f9; - g9 += -0.20412415266036987f * d * f24; - } - { const float d = D(ii, k, 15); - g17 += 0.14433756470680237f * d * f9; - g9 += 0.14433756470680237f * d * f17; - g18 += 0.18898223340511322f * d * f10; - g10 += 0.18898223340511322f * d * f18; - g19 += 0.21128855645656586f * d * f11; - g11 += 0.21128855645656586f * d * f19; - g20 += 0.2182178944349289f * d * f12; - g12 += 0.2182178944349289f * d * f20; - g21 += 0.21128855645656586f * d * f13; - g13 += 0.21128855645656586f * d * f21; - g22 += 0.18898223340511322f * d * f14; - g14 += 0.18898223340511322f * d * f22; - g23 += 0.14433756470680237f * d * f15; - g15 += 0.14433756470680237f * d * f23; - } - { const float d = D(ii, k, 16); - g16 += 0.20412415266036987f * d * f9; - g9 += 0.20412415266036987f * d * f16; - g17 += 0.1767766922712326f * d * f10; - g10 += 0.1767766922712326f * d * f17; - g18 += -0.03857583925127983f * d * f9; - g9 += -0.03857583925127983f * d * f18; - g18 += 0.14940357208251953f * d * f11; - g11 += 0.14940357208251953f * d * f18; - g19 += -0.06681530922651291f * d * f10; - g10 += -0.06681530922651291f * d * f19; - g20 += -0.13363061845302582f * d * f13; - g13 += -0.13363061845302582f * d * f20; - g21 += 0.17251639068126678f * d * f12; - g12 += 0.17251639068126678f * d * f21; - g21 += -0.06681530922651291f * d * f14; - g14 += -0.06681530922651291f * d * f21; - g22 += 0.14940357208251953f * d * f13; - g13 += 0.14940357208251953f * d * f22; - g22 += -0.03857583925127983f * d * f15; - g15 += -0.03857583925127983f * d * f22; - g23 += 0.1767766922712326f * d * f14; - g14 += 0.1767766922712326f * d * f23; - g24 += 0.20412415266036987f * d * f15; - g15 += 0.20412415266036987f * d * f24; - } - { const float d = D(ii, k, 17); - g3 += 1.29099440574646f * d * f1; - g1 += 1.29099440574646f * d * f3; - } - { const float d = D(ii, k, 18); - g2 += 1.29099440574646f * d * f1; - g1 += 1.29099440574646f * d * f2; - } - { const float d = D(ii, k, 19); - g1 += -0.3726779818534851f * d * f1; - g1 += -0.3726779818534851f * d * f1; - g2 += 0.7453559637069702f * d * f2; - g2 += 0.7453559637069702f * d * f2; - g3 += -0.3726779818534851f * d * f3; - g3 += -0.3726779818534851f * d * f3; - } - { const float d = D(ii, k, 20); - g3 += 1.29099440574646f * d * f2; - g2 += 1.29099440574646f * d * f3; - } - { const float d = D(ii, k, 21); - g1 += -0.64549720287323f * d * f1; - g1 += -0.64549720287323f * d * f1; - g3 += 0.64549720287323f * d * f3; - g3 += 0.64549720287323f * d * f3; - } - { const float d = D(ii, k, 22); - g4 += 1.0f * d * f0; - g0 += 1.0f * d * f4; - } - { const float d = D(ii, k, 23); - g5 += 1.0f * d * f0; - g0 += 1.0f * d * f5; - } - { const float d = D(ii, k, 24); - g6 += 1.0f * d * f0; - g0 += 1.0f * d * f6; - } - { const float d = D(ii, k, 25); - g7 += 1.0f * d * f0; - g0 += 1.0f * d * f7; - } - { const float d = D(ii, k, 26); - g8 += 1.0f * d * f0; - g0 += 1.0f * d * f8; - } - { const float d = D(ii, k, 27); - g6 += -0.8944271802902222f * d * f4; - g4 += -0.8944271802902222f * d * f6; - g7 += 0.7745966911315918f * d * f5; - g5 += 0.7745966911315918f * d * f7; - } - { const float d = D(ii, k, 28); - g7 += 0.7745966911315918f * d * f4; - g4 += 0.7745966911315918f * d * f7; - g6 += 0.4472135901451111f * d * f5; - g5 += 0.4472135901451111f * d * f6; - g8 += -0.7745966911315918f * d * f5; - g5 += -0.7745966911315918f * d * f8; - } - { const float d = D(ii, k, 29); - g4 += -0.4472135901451111f * d * f4; - g4 += -0.4472135901451111f * d * f4; - g5 += 0.22360679507255554f * d * f5; - g5 += 0.22360679507255554f * d * f5; - g6 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f6; - g7 += 0.22360679507255554f * d * f7; - g7 += 0.22360679507255554f * d * f7; - g8 += -0.4472135901451111f * d * f8; - g8 += -0.4472135901451111f * d * f8; - } - { const float d = D(ii, k, 30); - g5 += 0.7745966911315918f * d * f4; - g4 += 0.7745966911315918f * d * f5; - g7 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f7; - g8 += 0.7745966911315918f * d * f7; - g7 += 0.7745966911315918f * d * f8; - } - { const float d = D(ii, k, 31); - g5 += -0.3872983455657959f * d * f5; - g5 += -0.3872983455657959f * d * f5; - g8 += -0.8944271802902222f * d * f6; - g6 += -0.8944271802902222f * d * f8; - g7 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f7; - } - { const float d = D(ii, k, 32); - g9 += 0.44543540477752686f * d * f3; - g3 += 0.44543540477752686f * d * f9; - g10 += 0.36369648575782776f * d * f2; - g2 += 0.36369648575782776f * d * f10; - g11 += -0.11501092463731766f * d * f3; - g3 += -0.11501092463731766f * d * f11; - g13 += -0.11501092463731766f * d * f1; - g1 += -0.11501092463731766f * d * f13; - g15 += -0.44543540477752686f * d * f1; - g1 += -0.44543540477752686f * d * f15; - } - { const float d = D(ii, k, 33); - g10 += 0.36369648575782776f * d * f3; - g3 += 0.36369648575782776f * d * f10; - g11 += 0.46004369854927063f * d * f2; - g2 += 0.46004369854927063f * d * f11; - g12 += -0.28171807527542114f * d * f1; - g1 += -0.28171807527542114f * d * f12; - g14 += -0.36369648575782776f * d * f1; - g1 += -0.36369648575782776f * d * f14; - } - { const float d = D(ii, k, 34); - g11 += 0.39840954542160034f * d * f1; - g1 += 0.39840954542160034f * d * f11; - g12 += 0.48795002698898315f * d * f2; - g2 += 0.48795002698898315f * d * f12; - g13 += 0.39840954542160034f * d * f3; - g3 += 0.39840954542160034f * d * f13; - } - { const float d = D(ii, k, 35); - g10 += 0.36369648575782776f * d * f1; - g1 += 0.36369648575782776f * d * f10; - g12 += -0.28171807527542114f * d * f3; - g3 += -0.28171807527542114f * d * f12; - g13 += 0.46004369854927063f * d * f2; - g2 += 0.46004369854927063f * d * f13; - g14 += 0.36369648575782776f * d * f3; - g3 += 0.36369648575782776f * d * f14; - } - { const float d = D(ii, k, 36); - g9 += 0.44543540477752686f * d * f1; - g1 += 0.44543540477752686f * d * f9; - g11 += 0.11501092463731766f * d * f1; - g1 += 0.11501092463731766f * d * f11; - g13 += -0.11501092463731766f * d * f3; - g3 += -0.11501092463731766f * d * f13; - g14 += 0.36369648575782776f * d * f2; - g2 += 0.36369648575782776f * d * f14; - g15 += 0.44543540477752686f * d * f3; - g3 += 0.44543540477752686f * d * f15; - } - { const float d = D(ii, k, 37); - g13 += -0.3571428656578064f * d * f9; - g9 += -0.3571428656578064f * d * f13; - g12 += -0.7142857313156128f * d * f10; - g10 += -0.7142857313156128f * d * f12; - g13 += 0.5532833337783813f * d * f11; - g11 += 0.5532833337783813f * d * f13; - g15 += 0.3571428656578064f * d * f11; - g11 += 0.3571428656578064f * d * f15; - } - { const float d = D(ii, k, 38); - g14 += 0.5646924376487732f * d * f9; - g9 += 0.5646924376487732f * d * f14; - g13 += 0.4374088943004608f * d * f10; - g10 += 0.4374088943004608f * d * f13; - g15 += -0.5646924376487732f * d * f10; - g10 += -0.5646924376487732f * d * f15; - g12 += 0.22587697207927704f * d * f11; - g11 += 0.22587697207927704f * d * f12; - g14 += -0.4374088943004608f * d * f11; - g11 += -0.4374088943004608f * d * f14; - } - { const float d = D(ii, k, 39); - g9 += -0.3992978632450104f * d * f9; - g9 += -0.3992978632450104f * d * f9; - g11 += 0.2395787090063095f * d * f11; - g11 += 0.2395787090063095f * d * f11; - g12 += 0.31943827867507935f * d * f12; - g12 += 0.31943827867507935f * d * f12; - g13 += 0.2395787090063095f * d * f13; - g13 += 0.2395787090063095f * d * f13; - g15 += -0.3992978632450104f * d * f15; - g15 += -0.3992978632450104f * d * f15; - } - { const float d = D(ii, k, 40); - g10 += 0.5646924376487732f * d * f9; - g9 += 0.5646924376487732f * d * f10; - g11 += 0.4374088943004608f * d * f10; - g10 += 0.4374088943004608f * d * f11; - g13 += 0.22587697207927704f * d * f12; - g12 += 0.22587697207927704f * d * f13; - g14 += 0.4374088943004608f * d * f13; - g13 += 0.4374088943004608f * d * f14; - g15 += 0.5646924376487732f * d * f14; - g14 += 0.5646924376487732f * d * f15; - } - { const float d = D(ii, k, 41); - g11 += -0.3571428656578064f * d * f9; - g9 += -0.3571428656578064f * d * f11; - g11 += -0.2766416668891907f * d * f11; - g11 += -0.2766416668891907f * d * f11; - g14 += -0.7142857313156128f * d * f12; - g12 += -0.7142857313156128f * d * f14; - g13 += 0.2766416668891907f * d * f13; - g13 += 0.2766416668891907f * d * f13; - g15 += -0.3571428656578064f * d * f13; - g13 += -0.3571428656578064f * d * f15; - } - { const float d = D(ii, k, 42); - g16 += 0.32867109775543213f * d * f8; - g8 += 0.32867109775543213f * d * f16; - g17 += 0.23240555822849274f * d * f7; - g7 += 0.23240555822849274f * d * f17; - g18 += 0.21516573429107666f * d * f6; - g6 += 0.21516573429107666f * d * f18; - g19 += -0.08784104883670807f * d * f7; - g7 += -0.08784104883670807f * d * f19; - g20 += 0.0555555559694767f * d * f4; - g4 += 0.0555555559694767f * d * f20; - g21 += -0.08784104883670807f * d * f5; - g5 += -0.08784104883670807f * d * f21; - g23 += -0.23240555822849274f * d * f5; - g5 += -0.23240555822849274f * d * f23; - g24 += -0.32867109775543213f * d * f4; - g4 += -0.32867109775543213f * d * f24; - } - { const float d = D(ii, k, 43); - g17 += 0.23240555822849274f * d * f8; - g8 += 0.23240555822849274f * d * f17; - g18 += 0.24845199286937714f * d * f7; - g7 += 0.24845199286937714f * d * f18; - g19 += 0.3042903244495392f * d * f6; - g6 += 0.3042903244495392f * d * f19; - g19 += 0.08784104883670807f * d * f8; - g8 += 0.08784104883670807f * d * f19; - g20 += -0.2222222238779068f * d * f5; - g5 += -0.2222222238779068f * d * f20; - g21 += -0.08784104883670807f * d * f4; - g4 += -0.08784104883670807f * d * f21; - g22 += -0.24845199286937714f * d * f5; - g5 += -0.24845199286937714f * d * f22; - g23 += -0.23240555822849274f * d * f4; - g4 += -0.23240555822849274f * d * f23; - } - { const float d = D(ii, k, 44); - g18 += 0.21516573429107666f * d * f4; - g4 += 0.21516573429107666f * d * f18; - g19 += 0.3042903244495392f * d * f5; - g5 += 0.3042903244495392f * d * f19; - g20 += 0.3333333432674408f * d * f6; - g6 += 0.3333333432674408f * d * f20; - g21 += 0.3042903244495392f * d * f7; - g7 += 0.3042903244495392f * d * f21; - g22 += 0.21516573429107666f * d * f8; - g8 += 0.21516573429107666f * d * f22; - } - { const float d = D(ii, k, 45); - g17 += 0.23240555822849274f * d * f4; - g4 += 0.23240555822849274f * d * f17; - g18 += 0.24845199286937714f * d * f5; - g5 += 0.24845199286937714f * d * f18; - g19 += -0.08784104883670807f * d * f4; - g4 += -0.08784104883670807f * d * f19; - g20 += -0.2222222238779068f * d * f7; - g7 += -0.2222222238779068f * d * f20; - g21 += 0.3042903244495392f * d * f6; - g6 += 0.3042903244495392f * d * f21; - g21 += -0.08784104883670807f * d * f8; - g8 += -0.08784104883670807f * d * f21; - g22 += 0.24845199286937714f * d * f7; - g7 += 0.24845199286937714f * d * f22; - g23 += 0.23240555822849274f * d * f8; - g8 += 0.23240555822849274f * d * f23; - } - { const float d = D(ii, k, 46); - g16 += 0.32867109775543213f * d * f4; - g4 += 0.32867109775543213f * d * f16; - g17 += 0.23240555822849274f * d * f5; - g5 += 0.23240555822849274f * d * f17; - g19 += 0.08784104883670807f * d * f5; - g5 += 0.08784104883670807f * d * f19; - g20 += 0.0555555559694767f * d * f8; - g8 += 0.0555555559694767f * d * f20; - g21 += -0.08784104883670807f * d * f7; - g7 += -0.08784104883670807f * d * f21; - g22 += 0.21516573429107666f * d * f6; - g6 += 0.21516573429107666f * d * f22; - g23 += 0.23240555822849274f * d * f7; - g7 += 0.23240555822849274f * d * f23; - g24 += 0.32867109775543213f * d * f8; - g8 += 0.32867109775543213f * d * f24; - } - { const float d = D(ii, k, 47); - g22 += -0.22771002352237701f * d * f16; - g16 += -0.22771002352237701f * d * f22; - g21 += -0.34156501293182373f * d * f17; - g17 += -0.34156501293182373f * d * f21; - g20 += -0.5773502588272095f * d * f18; - g18 += -0.5773502588272095f * d * f20; - g24 += 0.22771002352237701f * d * f18; - g18 += 0.22771002352237701f * d * f24; - g21 += 0.4303314685821533f * d * f19; - g19 += 0.4303314685821533f * d * f21; - g23 += 0.34156501293182373f * d * f19; - g19 += 0.34156501293182373f * d * f23; - } - { const float d = D(ii, k, 48); - g23 += 0.4260064363479614f * d * f16; - g16 += 0.4260064363479614f * d * f23; - g22 += 0.4025382399559021f * d * f17; - g17 += 0.4025382399559021f * d * f22; - g24 += -0.4260064363479614f * d * f17; - g17 += -0.4260064363479614f * d * f24; - g21 += 0.273861289024353f * d * f18; - g18 += 0.273861289024353f * d * f21; - g23 += -0.4025382399559021f * d * f18; - g18 += -0.4025382399559021f * d * f23; - g20 += 0.13608276844024658f * d * f19; - g19 += 0.13608276844024658f * d * f20; - g22 += -0.273861289024353f * d * f19; - g19 += -0.273861289024353f * d * f22; - } - { const float d = D(ii, k, 49); - g16 += -0.3478327989578247f * d * f16; - g16 += -0.3478327989578247f * d * f16; - g17 += -0.08695819973945618f * d * f17; - g17 += -0.08695819973945618f * d * f17; - g18 += 0.09938079863786697f * d * f18; - g18 += 0.09938079863786697f * d * f18; - g19 += 0.21118420362472534f * d * f19; - g19 += 0.21118420362472534f * d * f19; - g20 += 0.24845199286937714f * d * f20; - g20 += 0.24845199286937714f * d * f20; - g21 += 0.21118420362472534f * d * f21; - g21 += 0.21118420362472534f * d * f21; - g22 += 0.09938079863786697f * d * f22; - g22 += 0.09938079863786697f * d * f22; - g23 += -0.08695819973945618f * d * f23; - g23 += -0.08695819973945618f * d * f23; - g24 += -0.3478327989578247f * d * f24; - g24 += -0.3478327989578247f * d * f24; - } - { const float d = D(ii, k, 50); - g17 += 0.4260064363479614f * d * f16; - g16 += 0.4260064363479614f * d * f17; - g18 += 0.4025382399559021f * d * f17; - g17 += 0.4025382399559021f * d * f18; - g19 += 0.273861289024353f * d * f18; - g18 += 0.273861289024353f * d * f19; - g21 += 0.13608276844024658f * d * f20; - g20 += 0.13608276844024658f * d * f21; - g22 += 0.273861289024353f * d * f21; - g21 += 0.273861289024353f * d * f22; - g23 += 0.4025382399559021f * d * f22; - g22 += 0.4025382399559021f * d * f23; - g24 += 0.4260064363479614f * d * f23; - g23 += 0.4260064363479614f * d * f24; - } - { const float d = D(ii, k, 51); - g18 += -0.22771002352237701f * d * f16; - g16 += -0.22771002352237701f * d * f18; - g19 += -0.34156501293182373f * d * f17; - g17 += -0.34156501293182373f * d * f19; - g19 += -0.21516573429107666f * d * f19; - g19 += -0.21516573429107666f * d * f19; - g22 += -0.5773502588272095f * d * f20; - g20 += -0.5773502588272095f * d * f22; - g21 += 0.21516573429107666f * d * f21; - g21 += 0.21516573429107666f * d * f21; - g23 += -0.34156501293182373f * d * f21; - g21 += -0.34156501293182373f * d * f23; - g24 += -0.22771002352237701f * d * f22; - g22 += -0.22771002352237701f * d * f24; - } - { const float d = D(ii, k, 52); - g4 += 0.6236095428466797f * d * f3; - g3 += 0.6236095428466797f * d * f4; - g8 += 0.6236095428466797f * d * f1; - g1 += 0.6236095428466797f * d * f8; - } - { const float d = D(ii, k, 53); - g4 += 0.5091750621795654f * d * f2; - g2 += 0.5091750621795654f * d * f4; - g5 += 0.5091750621795654f * d * f3; - g3 += 0.5091750621795654f * d * f5; - g7 += 0.5091750621795654f * d * f1; - g1 += 0.5091750621795654f * d * f7; - } - { const float d = D(ii, k, 54); - g4 += -0.16101530194282532f * d * f3; - g3 += -0.16101530194282532f * d * f4; - g5 += 0.6440612077713013f * d * f2; - g2 += 0.6440612077713013f * d * f5; - g6 += 0.5577733516693115f * d * f1; - g1 += 0.5577733516693115f * d * f6; - g8 += 0.16101530194282532f * d * f1; - g1 += 0.16101530194282532f * d * f8; - } - { const float d = D(ii, k, 55); - g5 += -0.3944053053855896f * d * f1; - g1 += -0.3944053053855896f * d * f5; - g6 += 0.6831300258636475f * d * f2; - g2 += 0.6831300258636475f * d * f6; - g7 += -0.3944053053855896f * d * f3; - g3 += -0.3944053053855896f * d * f7; - } - { const float d = D(ii, k, 56); - g4 += -0.16101530194282532f * d * f1; - g1 += -0.16101530194282532f * d * f4; - g6 += 0.5577733516693115f * d * f3; - g3 += 0.5577733516693115f * d * f6; - g7 += 0.6440612077713013f * d * f2; - g2 += 0.6440612077713013f * d * f7; - g8 += -0.16101530194282532f * d * f3; - g3 += -0.16101530194282532f * d * f8; - } - { const float d = D(ii, k, 57); - g5 += -0.5091750621795654f * d * f1; - g1 += -0.5091750621795654f * d * f5; - g7 += 0.5091750621795654f * d * f3; - g3 += 0.5091750621795654f * d * f7; - g8 += 0.5091750621795654f * d * f2; - g2 += 0.5091750621795654f * d * f8; - } - { const float d = D(ii, k, 58); - g4 += -0.6236095428466797f * d * f1; - g1 += -0.6236095428466797f * d * f4; - g8 += 0.6236095428466797f * d * f3; - g3 += 0.6236095428466797f * d * f8; - } - { const float d = D(ii, k, 59); - g9 += 1.0f * d * f0; - g0 += 1.0f * d * f9; - } - { const float d = D(ii, k, 60); - g10 += 1.0f * d * f0; - g0 += 1.0f * d * f10; - } - { const float d = D(ii, k, 61); - g11 += 1.0f * d * f0; - g0 += 1.0f * d * f11; - } - { const float d = D(ii, k, 62); - g12 += 1.0f * d * f0; - g0 += 1.0f * d * f12; - } - { const float d = D(ii, k, 63); - g13 += 1.0f * d * f0; - g0 += 1.0f * d * f13; - } - { const float d = D(ii, k, 64); - g14 += 1.0f * d * f0; - g0 += 1.0f * d * f14; - } - { const float d = D(ii, k, 65); - g15 += 1.0f * d * f0; - g0 += 1.0f * d * f15; - } - { const float d = D(ii, k, 66); - g9 += -0.55901700258255f * d * f6; - g6 += -0.55901700258255f * d * f9; - g10 += 0.3952847123146057f * d * f7; - g7 += 0.3952847123146057f * d * f10; - g11 += -0.25f * d * f8; - g8 += -0.25f * d * f11; - g13 += -0.25f * d * f4; - g4 += -0.25f * d * f13; - g14 += 0.3952847123146057f * d * f5; - g5 += 0.3952847123146057f * d * f14; - } - { const float d = D(ii, k, 67); - g9 += 0.3952847123146057f * d * f7; - g7 += 0.3952847123146057f * d * f9; - g11 += 0.3061862289905548f * d * f7; - g7 += 0.3061862289905548f * d * f11; - g12 += -0.5f * d * f4; - g4 += -0.5f * d * f12; - g13 += 0.3061862289905548f * d * f5; - g5 += 0.3061862289905548f * d * f13; - g15 += -0.3952847123146057f * d * f5; - g5 += -0.3952847123146057f * d * f15; - } - { const float d = D(ii, k, 68); - g9 += -0.25f * d * f8; - g8 += -0.25f * d * f9; - g10 += 0.3061862289905548f * d * f7; - g7 += 0.3061862289905548f * d * f10; - g11 += 0.3354102075099945f * d * f6; - g6 += 0.3354102075099945f * d * f11; - g11 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f11; - g12 += 0.15811388194561005f * d * f5; - g5 += 0.15811388194561005f * d * f12; - g13 += 0.3872983455657959f * d * f4; - g4 += 0.3872983455657959f * d * f13; - g14 += -0.3061862289905548f * d * f5; - g5 += -0.3061862289905548f * d * f14; - g15 += 0.25f * d * f4; - g4 += 0.25f * d * f15; - } - { const float d = D(ii, k, 69); - g10 += -0.5f * d * f4; - g4 += -0.5f * d * f10; - g11 += 0.15811388194561005f * d * f5; - g5 += 0.15811388194561005f * d * f11; - g12 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f12; - g13 += 0.15811388194561005f * d * f7; - g7 += 0.15811388194561005f * d * f13; - g14 += -0.5f * d * f8; - g8 += -0.5f * d * f14; - } - { const float d = D(ii, k, 70); - g9 += -0.25f * d * f4; - g4 += -0.25f * d * f9; - g10 += 0.3061862289905548f * d * f5; - g5 += 0.3061862289905548f * d * f10; - g11 += 0.3872983455657959f * d * f4; - g4 += 0.3872983455657959f * d * f11; - g12 += 0.15811388194561005f * d * f7; - g7 += 0.15811388194561005f * d * f12; - g13 += 0.3354102075099945f * d * f6; - g6 += 0.3354102075099945f * d * f13; - g13 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f13; - g14 += 0.3061862289905548f * d * f7; - g7 += 0.3061862289905548f * d * f14; - g15 += -0.25f * d * f8; - g8 += -0.25f * d * f15; - } - { const float d = D(ii, k, 71); - g9 += 0.3952847123146057f * d * f5; - g5 += 0.3952847123146057f * d * f9; - g11 += -0.3061862289905548f * d * f5; - g5 += -0.3061862289905548f * d * f11; - g12 += -0.5f * d * f8; - g8 += -0.5f * d * f12; - g13 += 0.3061862289905548f * d * f7; - g7 += 0.3061862289905548f * d * f13; - g15 += 0.3952847123146057f * d * f7; - g7 += 0.3952847123146057f * d * f15; - } - { const float d = D(ii, k, 72); - g10 += -0.3952847123146057f * d * f5; - g5 += -0.3952847123146057f * d * f10; - g11 += 0.25f * d * f4; - g4 += 0.25f * d * f11; - g13 += -0.25f * d * f8; - g8 += -0.25f * d * f13; - g14 += 0.3952847123146057f * d * f7; - g7 += 0.3952847123146057f * d * f14; - g15 += -0.55901700258255f * d * f6; - g6 += -0.55901700258255f * d * f15; - } - { const float d = D(ii, k, 73); - g16 += 0.47628965973854065f * d * f3; - g3 += 0.47628965973854065f * d * f16; - g17 += 0.3367876708507538f * d * f2; - g2 += 0.3367876708507538f * d * f17; - g18 += -0.09001028537750244f * d * f3; - g3 += -0.09001028537750244f * d * f18; - g22 += -0.09001028537750244f * d * f1; - g1 += -0.09001028537750244f * d * f22; - g24 += -0.47628965973854065f * d * f1; - g1 += -0.47628965973854065f * d * f24; - } - { const float d = D(ii, k, 74); - g17 += 0.4124789535999298f * d * f3; - g3 += 0.4124789535999298f * d * f17; - g18 += 0.44095855951309204f * d * f2; - g2 += 0.44095855951309204f * d * f18; - g19 += -0.15590238571166992f * d * f3; - g3 += -0.15590238571166992f * d * f19; - g21 += -0.15590238571166992f * d * f1; - g1 += -0.15590238571166992f * d * f21; - g23 += -0.4124789535999298f * d * f1; - g1 += -0.4124789535999298f * d * f23; - } - { const float d = D(ii, k, 75); - g18 += 0.3486083447933197f * d * f3; - g3 += 0.3486083447933197f * d * f18; - g19 += 0.4930066466331482f * d * f2; - g2 += 0.4930066466331482f * d * f19; - g20 += -0.31180477142333984f * d * f1; - g1 += -0.31180477142333984f * d * f20; - g22 += -0.3486083447933197f * d * f1; - g1 += -0.3486083447933197f * d * f22; - } - { const float d = D(ii, k, 76); - g19 += 0.4025382399559021f * d * f1; - g1 += 0.4025382399559021f * d * f19; - g20 += 0.5091750621795654f * d * f2; - g2 += 0.5091750621795654f * d * f20; - g21 += 0.4025382399559021f * d * f3; - g3 += 0.4025382399559021f * d * f21; - } - { const float d = D(ii, k, 77); - g18 += 0.3486083447933197f * d * f1; - g1 += 0.3486083447933197f * d * f18; - g20 += -0.31180477142333984f * d * f3; - g3 += -0.31180477142333984f * d * f20; - g21 += 0.4930066466331482f * d * f2; - g2 += 0.4930066466331482f * d * f21; - g22 += 0.3486083447933197f * d * f3; - g3 += 0.3486083447933197f * d * f22; - } - { const float d = D(ii, k, 78); - g17 += 0.4124789535999298f * d * f1; - g1 += 0.4124789535999298f * d * f17; - g19 += 0.15590238571166992f * d * f1; - g1 += 0.15590238571166992f * d * f19; - g21 += -0.15590238571166992f * d * f3; - g3 += -0.15590238571166992f * d * f21; - g22 += 0.44095855951309204f * d * f2; - g2 += 0.44095855951309204f * d * f22; - g23 += 0.4124789535999298f * d * f3; - g3 += 0.4124789535999298f * d * f23; - } - { const float d = D(ii, k, 79); - g16 += 0.47628965973854065f * d * f1; - g1 += 0.47628965973854065f * d * f16; - g18 += 0.09001028537750244f * d * f1; - g1 += 0.09001028537750244f * d * f18; - g22 += -0.09001028537750244f * d * f3; - g3 += -0.09001028537750244f * d * f22; - g23 += 0.3367876708507538f * d * f2; - g2 += 0.3367876708507538f * d * f23; - g24 += 0.47628965973854065f * d * f3; - g3 += 0.47628965973854065f * d * f24; - } - { const float d = D(ii, k, 80); - g16 += -0.2545875310897827f * d * f13; - g13 += -0.2545875310897827f * d * f16; - g17 += -0.44095855951309204f * d * f12; - g12 += -0.44095855951309204f * d * f17; - g18 += 0.28867512941360474f * d * f13; - g13 += 0.28867512941360474f * d * f18; - g19 += -0.21516573429107666f * d * f14; - g14 += -0.21516573429107666f * d * f19; - g20 += 0.1666666716337204f * d * f9; - g9 += 0.1666666716337204f * d * f20; - g21 += -0.21516573429107666f * d * f10; - g10 += -0.21516573429107666f * d * f21; - g22 += 0.28867512941360474f * d * f11; - g11 += 0.28867512941360474f * d * f22; - g24 += 0.2545875310897827f * d * f11; - g11 += 0.2545875310897827f * d * f24; - } - { const float d = D(ii, k, 81); - g16 += 0.32867109775543213f * d * f14; - g14 += 0.32867109775543213f * d * f16; - g17 += 0.146986186504364f * d * f13; - g13 += 0.146986186504364f * d * f17; - g18 += -0.09622504562139511f * d * f12; - g12 += -0.09622504562139511f * d * f18; - g19 += 0.2222222238779068f * d * f13; - g13 += 0.2222222238779068f * d * f19; - g19 += 0.21516573429107666f * d * f15; - g15 += 0.21516573429107666f * d * f19; - g20 += -0.3888888955116272f * d * f10; - g10 += -0.3888888955116272f * d * f20; - g21 += -0.21516573429107666f * d * f9; - g9 += -0.21516573429107666f * d * f21; - g21 += 0.2222222238779068f * d * f11; - g11 += 0.2222222238779068f * d * f21; - g23 += -0.146986186504364f * d * f11; - g11 += -0.146986186504364f * d * f23; - g24 += -0.32867109775543213f * d * f10; - g10 += -0.32867109775543213f * d * f24; - } - { const float d = D(ii, k, 82); - g16 += -0.2545875310897827f * d * f15; - g15 += -0.2545875310897827f * d * f16; - g17 += 0.146986186504364f * d * f14; - g14 += 0.146986186504364f * d * f17; - g18 += 0.24845199286937714f * d * f13; - g13 += 0.24845199286937714f * d * f18; - g18 += -0.28867512941360474f * d * f15; - g15 += -0.28867512941360474f * d * f18; - g19 += 0.21516573429107666f * d * f12; - g12 += 0.21516573429107666f * d * f19; - g19 += -0.2222222238779068f * d * f14; - g14 += -0.2222222238779068f * d * f19; - g20 += 0.0555555559694767f * d * f11; - g11 += 0.0555555559694767f * d * f20; - g21 += 0.2222222238779068f * d * f10; - g10 += 0.2222222238779068f * d * f21; - g22 += 0.28867512941360474f * d * f9; - g9 += 0.28867512941360474f * d * f22; - g22 += -0.24845199286937714f * d * f11; - g11 += -0.24845199286937714f * d * f22; - g23 += -0.146986186504364f * d * f10; - g10 += -0.146986186504364f * d * f23; - g24 += 0.2545875310897827f * d * f9; - g9 += 0.2545875310897827f * d * f24; - } - { const float d = D(ii, k, 83); - g17 += -0.44095855951309204f * d * f9; - g9 += -0.44095855951309204f * d * f17; - g18 += -0.09622504562139511f * d * f10; - g10 += -0.09622504562139511f * d * f18; - g19 += 0.21516573429107666f * d * f11; - g11 += 0.21516573429107666f * d * f19; - g20 += 0.3333333432674408f * d * f12; - g12 += 0.3333333432674408f * d * f20; - g21 += 0.21516573429107666f * d * f13; - g13 += 0.21516573429107666f * d * f21; - g22 += -0.09622504562139511f * d * f14; - g14 += -0.09622504562139511f * d * f22; - g23 += -0.44095855951309204f * d * f15; - g15 += -0.44095855951309204f * d * f23; - } - { const float d = D(ii, k, 84); - g16 += -0.2545875310897827f * d * f9; - g9 += -0.2545875310897827f * d * f16; - g17 += 0.146986186504364f * d * f10; - g10 += 0.146986186504364f * d * f17; - g18 += 0.28867512941360474f * d * f9; - g9 += 0.28867512941360474f * d * f18; - g18 += 0.24845199286937714f * d * f11; - g11 += 0.24845199286937714f * d * f18; - g19 += 0.2222222238779068f * d * f10; - g10 += 0.2222222238779068f * d * f19; - g20 += 0.0555555559694767f * d * f13; - g13 += 0.0555555559694767f * d * f20; - g21 += 0.21516573429107666f * d * f12; - g12 += 0.21516573429107666f * d * f21; - g21 += 0.2222222238779068f * d * f14; - g14 += 0.2222222238779068f * d * f21; - g22 += 0.24845199286937714f * d * f13; - g13 += 0.24845199286937714f * d * f22; - g22 += 0.28867512941360474f * d * f15; - g15 += 0.28867512941360474f * d * f22; - g23 += 0.146986186504364f * d * f14; - g14 += 0.146986186504364f * d * f23; - g24 += -0.2545875310897827f * d * f15; - g15 += -0.2545875310897827f * d * f24; - } - { const float d = D(ii, k, 85); - g16 += 0.32867109775543213f * d * f10; - g10 += 0.32867109775543213f * d * f16; - g17 += 0.146986186504364f * d * f11; - g11 += 0.146986186504364f * d * f17; - g19 += -0.21516573429107666f * d * f9; - g9 += -0.21516573429107666f * d * f19; - g19 += -0.2222222238779068f * d * f11; - g11 += -0.2222222238779068f * d * f19; - g20 += -0.3888888955116272f * d * f14; - g14 += -0.3888888955116272f * d * f20; - g21 += 0.2222222238779068f * d * f13; - g13 += 0.2222222238779068f * d * f21; - g21 += -0.21516573429107666f * d * f15; - g15 += -0.21516573429107666f * d * f21; - g22 += -0.09622504562139511f * d * f12; - g12 += -0.09622504562139511f * d * f22; - g23 += 0.146986186504364f * d * f13; - g13 += 0.146986186504364f * d * f23; - g24 += 0.32867109775543213f * d * f14; - g14 += 0.32867109775543213f * d * f24; - } - { const float d = D(ii, k, 86); - g16 += -0.2545875310897827f * d * f11; - g11 += -0.2545875310897827f * d * f16; - g18 += -0.28867512941360474f * d * f11; - g11 += -0.28867512941360474f * d * f18; - g19 += 0.21516573429107666f * d * f10; - g10 += 0.21516573429107666f * d * f19; - g20 += 0.1666666716337204f * d * f15; - g15 += 0.1666666716337204f * d * f20; - g21 += -0.21516573429107666f * d * f14; - g14 += -0.21516573429107666f * d * f21; - g22 += 0.28867512941360474f * d * f13; - g13 += 0.28867512941360474f * d * f22; - g23 += -0.44095855951309204f * d * f12; - g12 += -0.44095855951309204f * d * f23; - g24 += -0.2545875310897827f * d * f13; - g13 += -0.2545875310897827f * d * f24; - } - { const float d = D(ii, k, 87); - g8 += 1.1832159757614136f * d * f4; - g4 += 1.1832159757614136f * d * f8; - } - { const float d = D(ii, k, 88); - g7 += 0.8366600275039673f * d * f4; - g4 += 0.8366600275039673f * d * f7; - g8 += 0.8366600275039673f * d * f5; - g5 += 0.8366600275039673f * d * f8; - } - { const float d = D(ii, k, 89); - g6 += 0.7745966911315918f * d * f4; - g4 += 0.7745966911315918f * d * f6; - g7 += 0.8944271802902222f * d * f5; - g5 += 0.8944271802902222f * d * f7; - } - { const float d = D(ii, k, 90); - g7 += -0.3162277638912201f * d * f4; - g4 += -0.3162277638912201f * d * f7; - g6 += 1.095445156097412f * d * f5; - g5 += 1.095445156097412f * d * f6; - g8 += 0.3162277638912201f * d * f5; - g5 += 0.3162277638912201f * d * f8; - } - { const float d = D(ii, k, 91); - g4 += 0.10000000149011612f * d * f4; - g4 += 0.10000000149011612f * d * f4; - g5 += -0.4000000059604645f * d * f5; - g5 += -0.4000000059604645f * d * f5; - g6 += 0.6000000238418579f * d * f6; - g6 += 0.6000000238418579f * d * f6; - g7 += -0.4000000059604645f * d * f7; - g7 += -0.4000000059604645f * d * f7; - g8 += 0.10000000149011612f * d * f8; - g8 += 0.10000000149011612f * d * f8; - } - { const float d = D(ii, k, 92); - g5 += -0.3162277638912201f * d * f4; - g4 += -0.3162277638912201f * d * f5; - g7 += 1.095445156097412f * d * f6; - g6 += 1.095445156097412f * d * f7; - g8 += -0.3162277638912201f * d * f7; - g7 += -0.3162277638912201f * d * f8; - } - { const float d = D(ii, k, 93); - g5 += -0.4472135901451111f * d * f5; - g5 += -0.4472135901451111f * d * f5; - g8 += 0.7745966911315918f * d * f6; - g6 += 0.7745966911315918f * d * f8; - g7 += 0.4472135901451111f * d * f7; - g7 += 0.4472135901451111f * d * f7; - } - { const float d = D(ii, k, 94); - g5 += -0.8366600275039673f * d * f4; - g4 += -0.8366600275039673f * d * f5; - g8 += 0.8366600275039673f * d * f7; - g7 += 0.8366600275039673f * d * f8; - } - { const float d = D(ii, k, 95); - g4 += -0.5916079878807068f * d * f4; - g4 += -0.5916079878807068f * d * f4; - g8 += 0.5916079878807068f * d * f8; - g8 += 0.5916079878807068f * d * f8; - } - { const float d = D(ii, k, 96); - g9 += 0.6123724579811096f * d * f3; - g3 += 0.6123724579811096f * d * f9; - g15 += 0.6123724579811096f * d * f1; - g1 += 0.6123724579811096f * d * f15; - } - { const float d = D(ii, k, 97); - g9 += 0.4330126941204071f * d * f2; - g2 += 0.4330126941204071f * d * f9; - g10 += 0.5303300619125366f * d * f3; - g3 += 0.5303300619125366f * d * f10; - g14 += 0.5303300619125366f * d * f1; - g1 += 0.5303300619125366f * d * f14; - } - { const float d = D(ii, k, 98); - g9 += -0.1157275140285492f * d * f3; - g3 += -0.1157275140285492f * d * f9; - g10 += 0.5669466853141785f * d * f2; - g2 += 0.5669466853141785f * d * f10; - g11 += 0.4482107162475586f * d * f3; - g3 += 0.4482107162475586f * d * f11; - g13 += 0.4482107162475586f * d * f1; - g1 += 0.4482107162475586f * d * f13; - g15 += 0.1157275140285492f * d * f1; - g1 += 0.1157275140285492f * d * f15; - } - { const float d = D(ii, k, 99); - g10 += -0.20044593513011932f * d * f3; - g3 += -0.20044593513011932f * d * f10; - g11 += 0.6338657140731812f * d * f2; - g2 += 0.6338657140731812f * d * f11; - g12 += 0.5175491571426392f * d * f1; - g1 += 0.5175491571426392f * d * f12; - g14 += 0.20044593513011932f * d * f1; - g1 += 0.20044593513011932f * d * f14; - } - { const float d = D(ii, k, 100); - g11 += -0.40089187026023865f * d * f1; - g1 += -0.40089187026023865f * d * f11; - g12 += 0.6546536684036255f * d * f2; - g2 += 0.6546536684036255f * d * f12; - g13 += -0.40089187026023865f * d * f3; - g3 += -0.40089187026023865f * d * f13; - } - { const float d = D(ii, k, 101); - g10 += -0.20044593513011932f * d * f1; - g1 += -0.20044593513011932f * d * f10; - g12 += 0.5175491571426392f * d * f3; - g3 += 0.5175491571426392f * d * f12; - g13 += 0.6338657140731812f * d * f2; - g2 += 0.6338657140731812f * d * f13; - g14 += -0.20044593513011932f * d * f3; - g3 += -0.20044593513011932f * d * f14; - } - { const float d = D(ii, k, 102); - g9 += -0.1157275140285492f * d * f1; - g1 += -0.1157275140285492f * d * f9; - g11 += -0.4482107162475586f * d * f1; - g1 += -0.4482107162475586f * d * f11; - g13 += 0.4482107162475586f * d * f3; - g3 += 0.4482107162475586f * d * f13; - g14 += 0.5669466853141785f * d * f2; - g2 += 0.5669466853141785f * d * f14; - g15 += -0.1157275140285492f * d * f3; - g3 += -0.1157275140285492f * d * f15; - } - { const float d = D(ii, k, 103); - g10 += -0.5303300619125366f * d * f1; - g1 += -0.5303300619125366f * d * f10; - g14 += 0.5303300619125366f * d * f3; - g3 += 0.5303300619125366f * d * f14; - g15 += 0.4330126941204071f * d * f2; - g2 += 0.4330126941204071f * d * f15; - } - { const float d = D(ii, k, 104); - g9 += -0.6123724579811096f * d * f1; - g1 += -0.6123724579811096f * d * f9; - g15 += 0.6123724579811096f * d * f3; - g3 += 0.6123724579811096f * d * f15; - } - { const float d = D(ii, k, 105); - g13 += -0.6546536684036255f * d * f9; - g9 += -0.6546536684036255f * d * f13; - g14 += 0.8451542258262634f * d * f10; - g10 += 0.8451542258262634f * d * f14; - g15 += -0.6546536684036255f * d * f11; - g11 += -0.6546536684036255f * d * f15; - } - { const float d = D(ii, k, 106); - g12 += -1.133893370628357f * d * f9; - g9 += -1.133893370628357f * d * f12; - g13 += 0.37796446681022644f * d * f10; - g10 += 0.37796446681022644f * d * f13; - g14 += 0.37796446681022644f * d * f11; - g11 += 0.37796446681022644f * d * f14; - } - { const float d = D(ii, k, 107); - g13 += 0.7423074841499329f * d * f9; - g9 += 0.7423074841499329f * d * f13; - g12 += -0.2474358230829239f * d * f10; - g10 += -0.2474358230829239f * d * f12; - g13 += 0.6388765573501587f * d * f11; - g11 += 0.6388765573501587f * d * f13; - g15 += -0.7423074841499329f * d * f11; - g11 += -0.7423074841499329f * d * f15; - } - { const float d = D(ii, k, 108); - g14 += -0.5532833337783813f * d * f9; - g9 += -0.5532833337783813f * d * f14; - g13 += 0.5714285969734192f * d * f10; - g10 += 0.5714285969734192f * d * f13; - g15 += 0.5532833337783813f * d * f10; - g10 += 0.5532833337783813f * d * f15; - g12 += 0.5532833337783813f * d * f11; - g11 += 0.5532833337783813f * d * f12; - g14 += -0.5714285969734192f * d * f11; - g11 += -0.5714285969734192f * d * f14; - } - { const float d = D(ii, k, 109); - g9 += 0.2142857164144516f * d * f9; - g9 += 0.2142857164144516f * d * f9; - g10 += -0.5f * d * f10; - g10 += -0.5f * d * f10; - g11 += 0.0714285746216774f * d * f11; - g11 += 0.0714285746216774f * d * f11; - g12 += 0.4285714328289032f * d * f12; - g12 += 0.4285714328289032f * d * f12; - g13 += 0.0714285746216774f * d * f13; - g13 += 0.0714285746216774f * d * f13; - g14 += -0.5f * d * f14; - g14 += -0.5f * d * f14; - g15 += 0.2142857164144516f * d * f15; - g15 += 0.2142857164144516f * d * f15; - } - { const float d = D(ii, k, 110); - g10 += -0.5532833337783813f * d * f9; - g9 += -0.5532833337783813f * d * f10; - g11 += 0.5714285969734192f * d * f10; - g10 += 0.5714285969734192f * d * f11; - g13 += 0.5532833337783813f * d * f12; - g12 += 0.5532833337783813f * d * f13; - g14 += 0.5714285969734192f * d * f13; - g13 += 0.5714285969734192f * d * f14; - g15 += -0.5532833337783813f * d * f14; - g14 += -0.5532833337783813f * d * f15; - } - { const float d = D(ii, k, 111); - g11 += 0.7423074841499329f * d * f9; - g9 += 0.7423074841499329f * d * f11; - g11 += -0.31943827867507935f * d * f11; - g11 += -0.31943827867507935f * d * f11; - g14 += -0.2474358230829239f * d * f12; - g12 += -0.2474358230829239f * d * f14; - g13 += 0.31943827867507935f * d * f13; - g13 += 0.31943827867507935f * d * f13; - g15 += 0.7423074841499329f * d * f13; - g13 += 0.7423074841499329f * d * f15; - } - { const float d = D(ii, k, 112); - g11 += -0.37796446681022644f * d * f10; - g10 += -0.37796446681022644f * d * f11; - g15 += -1.133893370628357f * d * f12; - g12 += -1.133893370628357f * d * f15; - g14 += 0.37796446681022644f * d * f13; - g13 += 0.37796446681022644f * d * f14; - } - { const float d = D(ii, k, 113); - g11 += 0.6546536684036255f * d * f9; - g9 += 0.6546536684036255f * d * f11; - g10 += -0.4225771129131317f * d * f10; - g10 += -0.4225771129131317f * d * f10; - g15 += -0.6546536684036255f * d * f13; - g13 += -0.6546536684036255f * d * f15; - g14 += 0.4225771129131317f * d * f14; - g14 += 0.4225771129131317f * d * f14; - } - { const float d = D(ii, k, 114); - g16 += 1.0f * d * f0; - g0 += 1.0f * d * f16; - } - { const float d = D(ii, k, 115); - g17 += 1.0f * d * f0; - g0 += 1.0f * d * f17; - } - { const float d = D(ii, k, 116); - g18 += 1.0f * d * f0; - g0 += 1.0f * d * f18; - } - { const float d = D(ii, k, 117); - g19 += 1.0f * d * f0; - g0 += 1.0f * d * f19; - } - { const float d = D(ii, k, 118); - g20 += 1.0f * d * f0; - g0 += 1.0f * d * f20; - } - { const float d = D(ii, k, 119); - g21 += 1.0f * d * f0; - g0 += 1.0f * d * f21; - } - { const float d = D(ii, k, 120); - g22 += 1.0f * d * f0; - g0 += 1.0f * d * f22; - } - { const float d = D(ii, k, 121); - g23 += 1.0f * d * f0; - g0 += 1.0f * d * f23; - } - { const float d = D(ii, k, 122); - g24 += 1.0f * d * f0; - g0 += 1.0f * d * f24; - } - { const float d = D(ii, k, 123); - g16 += -0.6260990500450134f * d * f6; - g6 += -0.6260990500450134f * d * f16; - g17 += 0.38340580463409424f * d * f7; - g7 += 0.38340580463409424f * d * f17; - g18 += -0.20493902266025543f * d * f8; - g8 += -0.20493902266025543f * d * f18; - g22 += -0.20493902266025543f * d * f4; - g4 += -0.20493902266025543f * d * f22; - g23 += 0.38340580463409424f * d * f5; - g5 += 0.38340580463409424f * d * f23; - } - { const float d = D(ii, k, 124); - g16 += 0.38340580463409424f * d * f7; - g7 += 0.38340580463409424f * d * f16; - g17 += -0.15652476251125336f * d * f6; - g6 += -0.15652476251125336f * d * f17; - g18 += 0.36228442192077637f * d * f7; - g7 += 0.36228442192077637f * d * f18; - g19 += -0.30740851163864136f * d * f8; - g8 += -0.30740851163864136f * d * f19; - g21 += -0.30740851163864136f * d * f4; - g4 += -0.30740851163864136f * d * f21; - g22 += 0.36228442192077637f * d * f5; - g5 += 0.36228442192077637f * d * f22; - g24 += -0.38340580463409424f * d * f5; - g5 += -0.38340580463409424f * d * f24; - } - { const float d = D(ii, k, 125); - g16 += -0.20493902266025543f * d * f8; - g8 += -0.20493902266025543f * d * f16; - g17 += 0.36228442192077637f * d * f7; - g7 += 0.36228442192077637f * d * f17; - g18 += 0.17888544499874115f * d * f6; - g6 += 0.17888544499874115f * d * f18; - g19 += 0.24647514522075653f * d * f7; - g7 += 0.24647514522075653f * d * f19; - g20 += -0.5196152329444885f * d * f4; - g4 += -0.5196152329444885f * d * f20; - g21 += 0.24647514522075653f * d * f5; - g5 += 0.24647514522075653f * d * f21; - g23 += -0.36228442192077637f * d * f5; - g5 += -0.36228442192077637f * d * f23; - g24 += 0.20493902266025543f * d * f4; - g4 += 0.20493902266025543f * d * f24; - } - { const float d = D(ii, k, 126); - g17 += -0.30740851163864136f * d * f8; - g8 += -0.30740851163864136f * d * f17; - g18 += 0.24647514522075653f * d * f7; - g7 += 0.24647514522075653f * d * f18; - g19 += 0.3801315426826477f * d * f6; - g6 += 0.3801315426826477f * d * f19; - g19 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f19; - g20 += 0.12247448414564133f * d * f5; - g5 += 0.12247448414564133f * d * f20; - g21 += 0.3872983455657959f * d * f4; - g4 += 0.3872983455657959f * d * f21; - g22 += -0.24647514522075653f * d * f5; - g5 += -0.24647514522075653f * d * f22; - g23 += 0.30740851163864136f * d * f4; - g4 += 0.30740851163864136f * d * f23; - } - { const float d = D(ii, k, 127); - g18 += -0.5196152329444885f * d * f4; - g4 += -0.5196152329444885f * d * f18; - g19 += 0.12247448414564133f * d * f5; - g5 += 0.12247448414564133f * d * f19; - g20 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f20; - g21 += 0.12247448414564133f * d * f7; - g7 += 0.12247448414564133f * d * f21; - g22 += -0.5196152329444885f * d * f8; - g8 += -0.5196152329444885f * d * f22; - } - { const float d = D(ii, k, 128); - g17 += -0.30740851163864136f * d * f4; - g4 += -0.30740851163864136f * d * f17; - g18 += 0.24647514522075653f * d * f5; - g5 += 0.24647514522075653f * d * f18; - g19 += 0.3872983455657959f * d * f4; - g4 += 0.3872983455657959f * d * f19; - g20 += 0.12247448414564133f * d * f7; - g7 += 0.12247448414564133f * d * f20; - g21 += 0.3801315426826477f * d * f6; - g6 += 0.3801315426826477f * d * f21; - g21 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f21; - g22 += 0.24647514522075653f * d * f7; - g7 += 0.24647514522075653f * d * f22; - g23 += -0.30740851163864136f * d * f8; - g8 += -0.30740851163864136f * d * f23; - } - { const float d = D(ii, k, 129); - g16 += -0.20493902266025543f * d * f4; - g4 += -0.20493902266025543f * d * f16; - g17 += 0.36228442192077637f * d * f5; - g5 += 0.36228442192077637f * d * f17; - g19 += -0.24647514522075653f * d * f5; - g5 += -0.24647514522075653f * d * f19; - g20 += -0.5196152329444885f * d * f8; - g8 += -0.5196152329444885f * d * f20; - g21 += 0.24647514522075653f * d * f7; - g7 += 0.24647514522075653f * d * f21; - g22 += 0.17888544499874115f * d * f6; - g6 += 0.17888544499874115f * d * f22; - g23 += 0.36228442192077637f * d * f7; - g7 += 0.36228442192077637f * d * f23; - g24 += -0.20493902266025543f * d * f8; - g8 += -0.20493902266025543f * d * f24; - } - { const float d = D(ii, k, 130); - g16 += 0.38340580463409424f * d * f5; - g5 += 0.38340580463409424f * d * f16; - g18 += -0.36228442192077637f * d * f5; - g5 += -0.36228442192077637f * d * f18; - g19 += 0.30740851163864136f * d * f4; - g4 += 0.30740851163864136f * d * f19; - g21 += -0.30740851163864136f * d * f8; - g8 += -0.30740851163864136f * d * f21; - g22 += 0.36228442192077637f * d * f7; - g7 += 0.36228442192077637f * d * f22; - g23 += -0.15652476251125336f * d * f6; - g6 += -0.15652476251125336f * d * f23; - g24 += 0.38340580463409424f * d * f7; - g7 += 0.38340580463409424f * d * f24; - } - { const float d = D(ii, k, 131); - g17 += -0.38340580463409424f * d * f5; - g5 += -0.38340580463409424f * d * f17; - g18 += 0.20493902266025543f * d * f4; - g4 += 0.20493902266025543f * d * f18; - g22 += -0.20493902266025543f * d * f8; - g8 += -0.20493902266025543f * d * f22; - g23 += 0.38340580463409424f * d * f7; - g7 += 0.38340580463409424f * d * f23; - g24 += -0.6260990500450134f * d * f6; - g6 += -0.6260990500450134f * d * f24; - } - { const float d = D(ii, k, 132); - g20 += 0.5185185074806213f * d * f16; - g16 += 0.5185185074806213f * d * f20; - g21 += -0.5797213315963745f * d * f17; - g17 += -0.5797213315963745f * d * f21; - g22 += 0.6573421955108643f * d * f18; - g18 += 0.6573421955108643f * d * f22; - g23 += -0.5797213315963745f * d * f19; - g19 += -0.5797213315963745f * d * f23; - } - { const float d = D(ii, k, 133); - g21 += -0.5797213315963745f * d * f16; - g16 += -0.5797213315963745f * d * f21; - g20 += -0.7777777910232544f * d * f17; - g17 += -0.7777777910232544f * d * f20; - g21 += 0.21911406517028809f * d * f18; - g18 += 0.21911406517028809f * d * f21; - g22 += 0.21911406517028809f * d * f19; - g19 += 0.21911406517028809f * d * f22; - g24 += 0.5797213315963745f * d * f19; - g19 += 0.5797213315963745f * d * f24; - } - { const float d = D(ii, k, 134); - g22 += 0.6573421955108643f * d * f16; - g16 += 0.6573421955108643f * d * f22; - g21 += 0.21911406517028809f * d * f17; - g17 += 0.21911406517028809f * d * f21; - g20 += -0.40740740299224854f * d * f18; - g18 += -0.40740740299224854f * d * f20; - g24 += -0.6573421955108643f * d * f18; - g18 += -0.6573421955108643f * d * f24; - g21 += 0.4969039857387543f * d * f19; - g19 += 0.4969039857387543f * d * f21; - g23 += -0.21911406517028809f * d * f19; - g19 += -0.21911406517028809f * d * f23; - } - { const float d = D(ii, k, 135); - g23 += -0.5797213315963745f * d * f16; - g16 += -0.5797213315963745f * d * f23; - g22 += 0.21911406517028809f * d * f17; - g17 += 0.21911406517028809f * d * f22; - g24 += 0.5797213315963745f * d * f17; - g17 += 0.5797213315963745f * d * f24; - g21 += 0.4969039857387543f * d * f18; - g18 += 0.4969039857387543f * d * f21; - g23 += -0.21911406517028809f * d * f18; - g18 += -0.21911406517028809f * d * f23; - g20 += 0.3333333432674408f * d * f19; - g19 += 0.3333333432674408f * d * f20; - g22 += -0.4969039857387543f * d * f19; - g19 += -0.4969039857387543f * d * f22; - } - { const float d = D(ii, k, 136); - g16 += 0.25925925374031067f * d * f16; - g16 += 0.25925925374031067f * d * f16; - g17 += -0.3888888955116272f * d * f17; - g17 += -0.3888888955116272f * d * f17; - g18 += -0.20370370149612427f * d * f18; - g18 += -0.20370370149612427f * d * f18; - g19 += 0.1666666716337204f * d * f19; - g19 += 0.1666666716337204f * d * f19; - g20 += 0.3333333432674408f * d * f20; - g20 += 0.3333333432674408f * d * f20; - g21 += 0.1666666716337204f * d * f21; - g21 += 0.1666666716337204f * d * f21; - g22 += -0.20370370149612427f * d * f22; - g22 += -0.20370370149612427f * d * f22; - g23 += -0.3888888955116272f * d * f23; - g23 += -0.3888888955116272f * d * f23; - g24 += 0.25925925374031067f * d * f24; - g24 += 0.25925925374031067f * d * f24; - } - { const float d = D(ii, k, 137); - g17 += -0.5797213315963745f * d * f16; - g16 += -0.5797213315963745f * d * f17; - g18 += 0.21911406517028809f * d * f17; - g17 += 0.21911406517028809f * d * f18; - g19 += 0.4969039857387543f * d * f18; - g18 += 0.4969039857387543f * d * f19; - g21 += 0.3333333432674408f * d * f20; - g20 += 0.3333333432674408f * d * f21; - g22 += 0.4969039857387543f * d * f21; - g21 += 0.4969039857387543f * d * f22; - g23 += 0.21911406517028809f * d * f22; - g22 += 0.21911406517028809f * d * f23; - g24 += -0.5797213315963745f * d * f23; - g23 += -0.5797213315963745f * d * f24; - } - { const float d = D(ii, k, 138); - g18 += 0.6573421955108643f * d * f16; - g16 += 0.6573421955108643f * d * f18; - g19 += 0.21911406517028809f * d * f17; - g17 += 0.21911406517028809f * d * f19; - g19 += -0.24845199286937714f * d * f19; - g19 += -0.24845199286937714f * d * f19; - g22 += -0.40740740299224854f * d * f20; - g20 += -0.40740740299224854f * d * f22; - g21 += 0.24845199286937714f * d * f21; - g21 += 0.24845199286937714f * d * f21; - g23 += 0.21911406517028809f * d * f21; - g21 += 0.21911406517028809f * d * f23; - g24 += 0.6573421955108643f * d * f22; - g22 += 0.6573421955108643f * d * f24; - } - { const float d = D(ii, k, 139); - g19 += -0.5797213315963745f * d * f16; - g16 += -0.5797213315963745f * d * f19; - g19 += -0.21911406517028809f * d * f18; - g18 += -0.21911406517028809f * d * f19; - g23 += -0.7777777910232544f * d * f20; - g20 += -0.7777777910232544f * d * f23; - g22 += 0.21911406517028809f * d * f21; - g21 += 0.21911406517028809f * d * f22; - g24 += -0.5797213315963745f * d * f21; - g21 += -0.5797213315963745f * d * f24; - } - { const float d = D(ii, k, 140); - g19 += 0.5797213315963745f * d * f17; - g17 += 0.5797213315963745f * d * f19; - g18 += -0.32867109775543213f * d * f18; - g18 += -0.32867109775543213f * d * f18; - g24 += 0.5185185074806213f * d * f20; - g20 += 0.5185185074806213f * d * f24; - g23 += -0.5797213315963745f * d * f21; - g21 += -0.5797213315963745f * d * f23; - g22 += 0.32867109775543213f * d * f22; - g22 += 0.32867109775543213f * d * f22; - } - dF(ii, k, 0) += g0; - dF(ii, k, 1) += g1; - dF(ii, k, 2) += g2; - dF(ii, k, 3) += g3; - dF(ii, k, 4) += g4; - dF(ii, k, 5) += g5; - dF(ii, k, 6) += g6; - dF(ii, k, 7) += g7; - dF(ii, k, 8) += g8; - dF(ii, k, 9) += g9; - dF(ii, k, 10) += g10; - dF(ii, k, 11) += g11; - dF(ii, k, 12) += g12; - dF(ii, k, 13) += g13; - dF(ii, k, 14) += g14; - dF(ii, k, 15) += g15; - dF(ii, k, 16) += g16; - dF(ii, k, 17) += g17; - dF(ii, k, 18) += g18; - dF(ii, k, 19) += g19; - dF(ii, k, 20) += g20; - dF(ii, k, 21) += g21; - dF(ii, k, 22) += g22; - dF(ii, k, 23) += g23; - dF(ii, k, 24) += g24; - } -} - -constexpr int nt_AAA = 50; -constexpr int tab_AAA[50][3] = {{0,0,0}, {1,0,1}, {8,1,2}, {9,2,2}, {10,3,2}, {2,0,3}, {27,4,4}, {28,5,4}, {29,6,4}, {30,7,4}, {31,8,4}, {11,1,5}, {12,2,5}, {13,3,5}, {3,0,6}, {37,4,7}, {38,5,7}, {39,6,7}, {40,7,7}, {41,8,7}, {42,4,8}, {43,5,8}, {44,6,8}, {45,7,8}, {46,8,8}, {14,1,9}, {15,2,9}, {16,3,9}, {80,9,10}, {81,10,10}, {82,11,10}, {83,12,10}, {84,13,10}, {85,14,10}, {86,15,10}, {4,0,11}, {47,4,12}, {48,5,12}, {49,6,12}, {50,7,12}, {51,8,12}, {132,16,13}, {133,17,13}, {134,18,13}, {135,19,13}, {136,20,13}, {137,21,13}, {138,22,13}, {139,23,13}, {140,24,13}}; -constexpr double cg_AAA[50] = {1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108}; - -template -KOKKOS_INLINE_FUNCTION void fwd_AAA(const V &L, const V &R, const V &out, const int ii, const int k) -{ - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a4 = L(ii, k, 4); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a13 = L(ii, k, 13); - const float a14 = L(ii, k, 14); - const float a15 = L(ii, k, 15); - const float a16 = L(ii, k, 16); - const float a27 = L(ii, k, 27); - const float a28 = L(ii, k, 28); - const float a29 = L(ii, k, 29); - const float a30 = L(ii, k, 30); - const float a31 = L(ii, k, 31); - const float a37 = L(ii, k, 37); - const float a38 = L(ii, k, 38); - const float a39 = L(ii, k, 39); - const float a40 = L(ii, k, 40); - const float a41 = L(ii, k, 41); - const float a42 = L(ii, k, 42); - const float a43 = L(ii, k, 43); - const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); - const float a48 = L(ii, k, 48); - const float a49 = L(ii, k, 49); - const float a50 = L(ii, k, 50); - const float a51 = L(ii, k, 51); - const float a80 = L(ii, k, 80); - const float a81 = L(ii, k, 81); - const float a82 = L(ii, k, 82); - const float a83 = L(ii, k, 83); - const float a84 = L(ii, k, 84); - const float a85 = L(ii, k, 85); - const float a86 = L(ii, k, 86); - const float a132 = L(ii, k, 132); - const float a133 = L(ii, k, 133); - const float a134 = L(ii, k, 134); - const float a135 = L(ii, k, 135); - const float a136 = L(ii, k, 136); - const float a137 = L(ii, k, 137); - const float a138 = L(ii, k, 138); - const float a139 = L(ii, k, 139); - const float a140 = L(ii, k, 140); - const float b0 = R(ii, k, 0); - const float b1 = R(ii, k, 1); - const float b2 = R(ii, k, 2); - const float b3 = R(ii, k, 3); - const float b4 = R(ii, k, 4); - const float b5 = R(ii, k, 5); - const float b6 = R(ii, k, 6); - const float b7 = R(ii, k, 7); - const float b8 = R(ii, k, 8); - const float b9 = R(ii, k, 9); - const float b10 = R(ii, k, 10); - const float b11 = R(ii, k, 11); - const float b12 = R(ii, k, 12); - const float b13 = R(ii, k, 13); - const float b14 = R(ii, k, 14); - const float b15 = R(ii, k, 15); - const float b16 = R(ii, k, 16); - const float b17 = R(ii, k, 17); - const float b18 = R(ii, k, 18); - const float b19 = R(ii, k, 19); - const float b20 = R(ii, k, 20); - const float b21 = R(ii, k, 21); - const float b22 = R(ii, k, 22); - const float b23 = R(ii, k, 23); - const float b24 = R(ii, k, 24); - out(ii, k, 0) = 1.0f * a0 * b0; - out(ii, k, 1) = 1.0f * a1 * b0; - out(ii, k, 2) = 0.3333333432674408f * a8 * b1 + 0.3333333432674408f * a9 * b2 + 0.3333333432674408f * a10 * b3; - out(ii, k, 3) = 1.0f * a2 * b0; - out(ii, k, 4) = 0.20000000298023224f * a27 * b4 + 0.20000000298023224f * a28 * b5 + 0.20000000298023224f * a29 * b6 + 0.20000000298023224f * a30 * b7 + 0.20000000298023224f * a31 * b8; - out(ii, k, 5) = 0.3333333432674408f * a11 * b1 + 0.3333333432674408f * a12 * b2 + 0.3333333432674408f * a13 * b3; - out(ii, k, 6) = 1.0f * a3 * b0; - out(ii, k, 7) = 0.20000000298023224f * a37 * b4 + 0.20000000298023224f * a38 * b5 + 0.20000000298023224f * a39 * b6 + 0.20000000298023224f * a40 * b7 + 0.20000000298023224f * a41 * b8; - out(ii, k, 8) = 0.20000000298023224f * a42 * b4 + 0.20000000298023224f * a43 * b5 + 0.20000000298023224f * a44 * b6 + 0.20000000298023224f * a45 * b7 + 0.20000000298023224f * a46 * b8; - out(ii, k, 9) = 0.3333333432674408f * a14 * b1 + 0.3333333432674408f * a15 * b2 + 0.3333333432674408f * a16 * b3; - out(ii, k, 10) = 0.1428571492433548f * a80 * b9 + 0.1428571492433548f * a81 * b10 + 0.1428571492433548f * a82 * b11 + 0.1428571492433548f * a83 * b12 + 0.1428571492433548f * a84 * b13 + 0.1428571492433548f * a85 * b14 + 0.1428571492433548f * a86 * b15; - out(ii, k, 11) = 1.0f * a4 * b0; - out(ii, k, 12) = 0.20000000298023224f * a47 * b4 + 0.20000000298023224f * a48 * b5 + 0.20000000298023224f * a49 * b6 + 0.20000000298023224f * a50 * b7 + 0.20000000298023224f * a51 * b8; - out(ii, k, 13) = 0.1111111119389534f * a132 * b16 + 0.1111111119389534f * a133 * b17 + 0.1111111119389534f * a134 * b18 + 0.1111111119389534f * a135 * b19 + 0.1111111119389534f * a136 * b20 + 0.1111111119389534f * a137 * b21 + 0.1111111119389534f * a138 * b22 + 0.1111111119389534f * a139 * b23 + 0.1111111119389534f * a140 * b24; -} - -template -KOKKOS_INLINE_FUNCTION void rev_AAA(const V &L, const V &R, const V &D, const V &dL, const V &dR, const int ii, const int k) -{ - { - const float b0 = R(ii, k, 0); - const float b1 = R(ii, k, 1); - const float b2 = R(ii, k, 2); - const float b3 = R(ii, k, 3); - const float b4 = R(ii, k, 4); - const float b5 = R(ii, k, 5); - const float b6 = R(ii, k, 6); - const float b7 = R(ii, k, 7); - const float b8 = R(ii, k, 8); - const float b9 = R(ii, k, 9); - const float b10 = R(ii, k, 10); - const float b11 = R(ii, k, 11); - const float b12 = R(ii, k, 12); - const float b13 = R(ii, k, 13); - const float b14 = R(ii, k, 14); - const float b15 = R(ii, k, 15); - const float b16 = R(ii, k, 16); - const float b17 = R(ii, k, 17); - const float b18 = R(ii, k, 18); - const float b19 = R(ii, k, 19); - const float b20 = R(ii, k, 20); - const float b21 = R(ii, k, 21); - const float b22 = R(ii, k, 22); - const float b23 = R(ii, k, 23); - const float b24 = R(ii, k, 24); - { - float g0 = 0.0f; - float g1 = 0.0f; - float g2 = 0.0f; - float g3 = 0.0f; - float g4 = 0.0f; - float g5 = 0.0f; - float g6 = 0.0f; - float g7 = 0.0f; - float g8 = 0.0f; - float g9 = 0.0f; - float g10 = 0.0f; - float g11 = 0.0f; - float g12 = 0.0f; - float g13 = 0.0f; - float g14 = 0.0f; - float g15 = 0.0f; - float g16 = 0.0f; - float g17 = 0.0f; - float g18 = 0.0f; - float g19 = 0.0f; - float g20 = 0.0f; - float g21 = 0.0f; - float g22 = 0.0f; - float g23 = 0.0f; - float g24 = 0.0f; - float g25 = 0.0f; - float g26 = 0.0f; - float g27 = 0.0f; - float g28 = 0.0f; - float g29 = 0.0f; - float g30 = 0.0f; - float g31 = 0.0f; - float g32 = 0.0f; - float g33 = 0.0f; - float g34 = 0.0f; - float g35 = 0.0f; - float g36 = 0.0f; - float g37 = 0.0f; - float g38 = 0.0f; - float g39 = 0.0f; - float g40 = 0.0f; - float g41 = 0.0f; - float g42 = 0.0f; - float g43 = 0.0f; - float g44 = 0.0f; - float g45 = 0.0f; - float g46 = 0.0f; - float g47 = 0.0f; - float g48 = 0.0f; - float g49 = 0.0f; - float g50 = 0.0f; - float g51 = 0.0f; - float g52 = 0.0f; - float g53 = 0.0f; - float g54 = 0.0f; - float g55 = 0.0f; - float g56 = 0.0f; - float g57 = 0.0f; - float g58 = 0.0f; - float g59 = 0.0f; - float g60 = 0.0f; - float g61 = 0.0f; - float g62 = 0.0f; - float g63 = 0.0f; - float g64 = 0.0f; - float g65 = 0.0f; - float g66 = 0.0f; - float g67 = 0.0f; - float g68 = 0.0f; - float g69 = 0.0f; - float g70 = 0.0f; - float g71 = 0.0f; - float g72 = 0.0f; - float g73 = 0.0f; - float g74 = 0.0f; - float g75 = 0.0f; - float g76 = 0.0f; - float g77 = 0.0f; - float g78 = 0.0f; - float g79 = 0.0f; - float g80 = 0.0f; - float g81 = 0.0f; - float g82 = 0.0f; - float g83 = 0.0f; - float g84 = 0.0f; - float g85 = 0.0f; - float g86 = 0.0f; - float g87 = 0.0f; - float g88 = 0.0f; - float g89 = 0.0f; - float g90 = 0.0f; - float g91 = 0.0f; - float g92 = 0.0f; - float g93 = 0.0f; - float g94 = 0.0f; - float g95 = 0.0f; - float g96 = 0.0f; - float g97 = 0.0f; - float g98 = 0.0f; - float g99 = 0.0f; - float g100 = 0.0f; - float g101 = 0.0f; - float g102 = 0.0f; - float g103 = 0.0f; - float g104 = 0.0f; - float g105 = 0.0f; - float g106 = 0.0f; - float g107 = 0.0f; - float g108 = 0.0f; - float g109 = 0.0f; - float g110 = 0.0f; - float g111 = 0.0f; - float g112 = 0.0f; - float g113 = 0.0f; - float g114 = 0.0f; - float g115 = 0.0f; - float g116 = 0.0f; - float g117 = 0.0f; - float g118 = 0.0f; - float g119 = 0.0f; - float g120 = 0.0f; - float g121 = 0.0f; - float g122 = 0.0f; - float g123 = 0.0f; - float g124 = 0.0f; - float g125 = 0.0f; - float g126 = 0.0f; - float g127 = 0.0f; - float g128 = 0.0f; - float g129 = 0.0f; - float g130 = 0.0f; - float g131 = 0.0f; - float g132 = 0.0f; - float g133 = 0.0f; - float g134 = 0.0f; - float g135 = 0.0f; - float g136 = 0.0f; - float g137 = 0.0f; - float g138 = 0.0f; - float g139 = 0.0f; - float g140 = 0.0f; - { const float d = D(ii, k, 0); - g0 += 1.0f * d * b0; - } - { const float d = D(ii, k, 1); - g1 += 1.0f * d * b0; - } - { const float d = D(ii, k, 2); - g8 += 0.3333333432674408f * d * b1; - g9 += 0.3333333432674408f * d * b2; - g10 += 0.3333333432674408f * d * b3; - } - { const float d = D(ii, k, 3); - g2 += 1.0f * d * b0; - } - { const float d = D(ii, k, 4); - g27 += 0.20000000298023224f * d * b4; - g28 += 0.20000000298023224f * d * b5; - g29 += 0.20000000298023224f * d * b6; - g30 += 0.20000000298023224f * d * b7; - g31 += 0.20000000298023224f * d * b8; - } - { const float d = D(ii, k, 5); - g11 += 0.3333333432674408f * d * b1; - g12 += 0.3333333432674408f * d * b2; - g13 += 0.3333333432674408f * d * b3; - } - { const float d = D(ii, k, 6); - g3 += 1.0f * d * b0; - } - { const float d = D(ii, k, 7); - g37 += 0.20000000298023224f * d * b4; - g38 += 0.20000000298023224f * d * b5; - g39 += 0.20000000298023224f * d * b6; - g40 += 0.20000000298023224f * d * b7; - g41 += 0.20000000298023224f * d * b8; - } - { const float d = D(ii, k, 8); - g42 += 0.20000000298023224f * d * b4; - g43 += 0.20000000298023224f * d * b5; - g44 += 0.20000000298023224f * d * b6; - g45 += 0.20000000298023224f * d * b7; - g46 += 0.20000000298023224f * d * b8; - } - { const float d = D(ii, k, 9); - g14 += 0.3333333432674408f * d * b1; - g15 += 0.3333333432674408f * d * b2; - g16 += 0.3333333432674408f * d * b3; - } - { const float d = D(ii, k, 10); - g80 += 0.1428571492433548f * d * b9; - g81 += 0.1428571492433548f * d * b10; - g82 += 0.1428571492433548f * d * b11; - g83 += 0.1428571492433548f * d * b12; - g84 += 0.1428571492433548f * d * b13; - g85 += 0.1428571492433548f * d * b14; - g86 += 0.1428571492433548f * d * b15; - } - { const float d = D(ii, k, 11); - g4 += 1.0f * d * b0; - } - { const float d = D(ii, k, 12); - g47 += 0.20000000298023224f * d * b4; - g48 += 0.20000000298023224f * d * b5; - g49 += 0.20000000298023224f * d * b6; - g50 += 0.20000000298023224f * d * b7; - g51 += 0.20000000298023224f * d * b8; - } - { const float d = D(ii, k, 13); - g132 += 0.1111111119389534f * d * b16; - g133 += 0.1111111119389534f * d * b17; - g134 += 0.1111111119389534f * d * b18; - g135 += 0.1111111119389534f * d * b19; - g136 += 0.1111111119389534f * d * b20; - g137 += 0.1111111119389534f * d * b21; - g138 += 0.1111111119389534f * d * b22; - g139 += 0.1111111119389534f * d * b23; - g140 += 0.1111111119389534f * d * b24; - } - dL(ii, k, 0) = g0; - dL(ii, k, 1) = g1; - dL(ii, k, 2) = g2; - dL(ii, k, 3) = g3; - dL(ii, k, 4) = g4; - dL(ii, k, 5) = g5; - dL(ii, k, 6) = g6; - dL(ii, k, 7) = g7; - dL(ii, k, 8) = g8; - dL(ii, k, 9) = g9; - dL(ii, k, 10) = g10; - dL(ii, k, 11) = g11; - dL(ii, k, 12) = g12; - dL(ii, k, 13) = g13; - dL(ii, k, 14) = g14; - dL(ii, k, 15) = g15; - dL(ii, k, 16) = g16; - dL(ii, k, 17) = g17; - dL(ii, k, 18) = g18; - dL(ii, k, 19) = g19; - dL(ii, k, 20) = g20; - dL(ii, k, 21) = g21; - dL(ii, k, 22) = g22; - dL(ii, k, 23) = g23; - dL(ii, k, 24) = g24; - dL(ii, k, 25) = g25; - dL(ii, k, 26) = g26; - dL(ii, k, 27) = g27; - dL(ii, k, 28) = g28; - dL(ii, k, 29) = g29; - dL(ii, k, 30) = g30; - dL(ii, k, 31) = g31; - dL(ii, k, 32) = g32; - dL(ii, k, 33) = g33; - dL(ii, k, 34) = g34; - dL(ii, k, 35) = g35; - dL(ii, k, 36) = g36; - dL(ii, k, 37) = g37; - dL(ii, k, 38) = g38; - dL(ii, k, 39) = g39; - dL(ii, k, 40) = g40; - dL(ii, k, 41) = g41; - dL(ii, k, 42) = g42; - dL(ii, k, 43) = g43; - dL(ii, k, 44) = g44; - dL(ii, k, 45) = g45; - dL(ii, k, 46) = g46; - dL(ii, k, 47) = g47; - dL(ii, k, 48) = g48; - dL(ii, k, 49) = g49; - dL(ii, k, 50) = g50; - dL(ii, k, 51) = g51; - dL(ii, k, 52) = g52; - dL(ii, k, 53) = g53; - dL(ii, k, 54) = g54; - dL(ii, k, 55) = g55; - dL(ii, k, 56) = g56; - dL(ii, k, 57) = g57; - dL(ii, k, 58) = g58; - dL(ii, k, 59) = g59; - dL(ii, k, 60) = g60; - dL(ii, k, 61) = g61; - dL(ii, k, 62) = g62; - dL(ii, k, 63) = g63; - dL(ii, k, 64) = g64; - dL(ii, k, 65) = g65; - dL(ii, k, 66) = g66; - dL(ii, k, 67) = g67; - dL(ii, k, 68) = g68; - dL(ii, k, 69) = g69; - dL(ii, k, 70) = g70; - dL(ii, k, 71) = g71; - dL(ii, k, 72) = g72; - dL(ii, k, 73) = g73; - dL(ii, k, 74) = g74; - dL(ii, k, 75) = g75; - dL(ii, k, 76) = g76; - dL(ii, k, 77) = g77; - dL(ii, k, 78) = g78; - dL(ii, k, 79) = g79; - dL(ii, k, 80) = g80; - dL(ii, k, 81) = g81; - dL(ii, k, 82) = g82; - dL(ii, k, 83) = g83; - dL(ii, k, 84) = g84; - dL(ii, k, 85) = g85; - dL(ii, k, 86) = g86; - dL(ii, k, 87) = g87; - dL(ii, k, 88) = g88; - dL(ii, k, 89) = g89; - dL(ii, k, 90) = g90; - dL(ii, k, 91) = g91; - dL(ii, k, 92) = g92; - dL(ii, k, 93) = g93; - dL(ii, k, 94) = g94; - dL(ii, k, 95) = g95; - dL(ii, k, 96) = g96; - dL(ii, k, 97) = g97; - dL(ii, k, 98) = g98; - dL(ii, k, 99) = g99; - dL(ii, k, 100) = g100; - dL(ii, k, 101) = g101; - dL(ii, k, 102) = g102; - dL(ii, k, 103) = g103; - dL(ii, k, 104) = g104; - dL(ii, k, 105) = g105; - dL(ii, k, 106) = g106; - dL(ii, k, 107) = g107; - dL(ii, k, 108) = g108; - dL(ii, k, 109) = g109; - dL(ii, k, 110) = g110; - dL(ii, k, 111) = g111; - dL(ii, k, 112) = g112; - dL(ii, k, 113) = g113; - dL(ii, k, 114) = g114; - dL(ii, k, 115) = g115; - dL(ii, k, 116) = g116; - dL(ii, k, 117) = g117; - dL(ii, k, 118) = g118; - dL(ii, k, 119) = g119; - dL(ii, k, 120) = g120; - dL(ii, k, 121) = g121; - dL(ii, k, 122) = g122; - dL(ii, k, 123) = g123; - dL(ii, k, 124) = g124; - dL(ii, k, 125) = g125; - dL(ii, k, 126) = g126; - dL(ii, k, 127) = g127; - dL(ii, k, 128) = g128; - dL(ii, k, 129) = g129; - dL(ii, k, 130) = g130; - dL(ii, k, 131) = g131; - dL(ii, k, 132) = g132; - dL(ii, k, 133) = g133; - dL(ii, k, 134) = g134; - dL(ii, k, 135) = g135; - dL(ii, k, 136) = g136; - dL(ii, k, 137) = g137; - dL(ii, k, 138) = g138; - dL(ii, k, 139) = g139; - dL(ii, k, 140) = g140; - } - } - { - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a4 = L(ii, k, 4); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a13 = L(ii, k, 13); - const float a14 = L(ii, k, 14); - const float a15 = L(ii, k, 15); - const float a16 = L(ii, k, 16); - const float a27 = L(ii, k, 27); - const float a28 = L(ii, k, 28); - const float a29 = L(ii, k, 29); - const float a30 = L(ii, k, 30); - const float a31 = L(ii, k, 31); - const float a37 = L(ii, k, 37); - const float a38 = L(ii, k, 38); - const float a39 = L(ii, k, 39); - const float a40 = L(ii, k, 40); - const float a41 = L(ii, k, 41); - const float a42 = L(ii, k, 42); - const float a43 = L(ii, k, 43); - const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); - const float a48 = L(ii, k, 48); - const float a49 = L(ii, k, 49); - const float a50 = L(ii, k, 50); - const float a51 = L(ii, k, 51); - const float a80 = L(ii, k, 80); - const float a81 = L(ii, k, 81); - const float a82 = L(ii, k, 82); - const float a83 = L(ii, k, 83); - const float a84 = L(ii, k, 84); - const float a85 = L(ii, k, 85); - const float a86 = L(ii, k, 86); - const float a132 = L(ii, k, 132); - const float a133 = L(ii, k, 133); - const float a134 = L(ii, k, 134); - const float a135 = L(ii, k, 135); - const float a136 = L(ii, k, 136); - const float a137 = L(ii, k, 137); - const float a138 = L(ii, k, 138); - const float a139 = L(ii, k, 139); - const float a140 = L(ii, k, 140); - float h0 = 0.0f; - float h1 = 0.0f; - float h2 = 0.0f; - float h3 = 0.0f; - float h4 = 0.0f; - float h5 = 0.0f; - float h6 = 0.0f; - float h7 = 0.0f; - float h8 = 0.0f; - float h9 = 0.0f; - float h10 = 0.0f; - float h11 = 0.0f; - float h12 = 0.0f; - float h13 = 0.0f; - float h14 = 0.0f; - float h15 = 0.0f; - float h16 = 0.0f; - float h17 = 0.0f; - float h18 = 0.0f; - float h19 = 0.0f; - float h20 = 0.0f; - float h21 = 0.0f; - float h22 = 0.0f; - float h23 = 0.0f; - float h24 = 0.0f; - { const float d = D(ii, k, 0); - h0 += 1.0f * d * a0; - } - { const float d = D(ii, k, 1); - h0 += 1.0f * d * a1; - } - { const float d = D(ii, k, 2); - h1 += 0.3333333432674408f * d * a8; - h2 += 0.3333333432674408f * d * a9; - h3 += 0.3333333432674408f * d * a10; - } - { const float d = D(ii, k, 3); - h0 += 1.0f * d * a2; - } - { const float d = D(ii, k, 4); - h4 += 0.20000000298023224f * d * a27; - h5 += 0.20000000298023224f * d * a28; - h6 += 0.20000000298023224f * d * a29; - h7 += 0.20000000298023224f * d * a30; - h8 += 0.20000000298023224f * d * a31; - } - { const float d = D(ii, k, 5); - h1 += 0.3333333432674408f * d * a11; - h2 += 0.3333333432674408f * d * a12; - h3 += 0.3333333432674408f * d * a13; - } - { const float d = D(ii, k, 6); - h0 += 1.0f * d * a3; - } - { const float d = D(ii, k, 7); - h4 += 0.20000000298023224f * d * a37; - h5 += 0.20000000298023224f * d * a38; - h6 += 0.20000000298023224f * d * a39; - h7 += 0.20000000298023224f * d * a40; - h8 += 0.20000000298023224f * d * a41; - } - { const float d = D(ii, k, 8); - h4 += 0.20000000298023224f * d * a42; - h5 += 0.20000000298023224f * d * a43; - h6 += 0.20000000298023224f * d * a44; - h7 += 0.20000000298023224f * d * a45; - h8 += 0.20000000298023224f * d * a46; - } - { const float d = D(ii, k, 9); - h1 += 0.3333333432674408f * d * a14; - h2 += 0.3333333432674408f * d * a15; - h3 += 0.3333333432674408f * d * a16; - } - { const float d = D(ii, k, 10); - h9 += 0.1428571492433548f * d * a80; - h10 += 0.1428571492433548f * d * a81; - h11 += 0.1428571492433548f * d * a82; - h12 += 0.1428571492433548f * d * a83; - h13 += 0.1428571492433548f * d * a84; - h14 += 0.1428571492433548f * d * a85; - h15 += 0.1428571492433548f * d * a86; - } - { const float d = D(ii, k, 11); - h0 += 1.0f * d * a4; - } - { const float d = D(ii, k, 12); - h4 += 0.20000000298023224f * d * a47; - h5 += 0.20000000298023224f * d * a48; - h6 += 0.20000000298023224f * d * a49; - h7 += 0.20000000298023224f * d * a50; - h8 += 0.20000000298023224f * d * a51; - } - { const float d = D(ii, k, 13); - h16 += 0.1111111119389534f * d * a132; - h17 += 0.1111111119389534f * d * a133; - h18 += 0.1111111119389534f * d * a134; - h19 += 0.1111111119389534f * d * a135; - h20 += 0.1111111119389534f * d * a136; - h21 += 0.1111111119389534f * d * a137; - h22 += 0.1111111119389534f * d * a138; - h23 += 0.1111111119389534f * d * a139; - h24 += 0.1111111119389534f * d * a140; - } - dR(ii, k, 0) += h0; - dR(ii, k, 1) += h1; - dR(ii, k, 2) += h2; - dR(ii, k, 3) += h3; - dR(ii, k, 4) += h4; - dR(ii, k, 5) += h5; - dR(ii, k, 6) += h6; - dR(ii, k, 7) += h7; - dR(ii, k, 8) += h8; - dR(ii, k, 9) += h9; - dR(ii, k, 10) += h10; - dR(ii, k, 11) += h11; - dR(ii, k, 12) += h12; - dR(ii, k, 13) += h13; - dR(ii, k, 14) += h14; - dR(ii, k, 15) += h15; - dR(ii, k, 16) += h16; - dR(ii, k, 17) += h17; - dR(ii, k, 18) += h18; - dR(ii, k, 19) += h19; - dR(ii, k, 20) += h20; - dR(ii, k, 21) += h21; - dR(ii, k, 22) += h22; - dR(ii, k, 23) += h23; - dR(ii, k, 24) += h24; - } -} - -constexpr int nt_AAAA = 335; -constexpr int tab_AAAA[335][3] = {{0,0,0}, {1,0,1}, {2,0,2}, {3,0,3}, {4,0,4}, {8,5,5}, {9,6,5}, {10,7,5}, {11,5,6}, {12,6,6}, {13,7,6}, {14,5,7}, {15,6,7}, {16,7,7}, {1,1,8}, {2,1,9}, {3,1,10}, {4,1,11}, {27,17,12}, {28,18,12}, {29,19,12}, {30,20,12}, {31,21,12}, {32,17,13}, {33,18,13}, {34,19,13}, {35,20,13}, {36,21,13}, {37,17,14}, {38,18,14}, {39,19,14}, {40,20,14}, {41,21,14}, {42,17,15}, {43,18,15}, {44,19,15}, {45,20,15}, {46,21,15}, {47,17,16}, {48,18,16}, {49,19,16}, {50,20,16}, {51,21,16}, {27,22,17}, {28,23,17}, {29,24,17}, {30,25,17}, {31,26,17}, {37,22,18}, {38,23,18}, {39,24,18}, {40,25,18}, {41,26,18}, {42,22,19}, {43,23,19}, {44,24,19}, {45,25,19}, {46,26,19}, {47,22,20}, {48,23,20}, {49,24,20}, {50,25,20}, {51,26,20}, {8,8,21}, {9,9,21}, {10,10,21}, {11,8,22}, {12,9,22}, {13,10,22}, {14,8,23}, {15,9,23}, {16,10,23}, {52,52,24}, {53,53,24}, {54,54,24}, {55,55,24}, {56,56,24}, {57,57,24}, {58,58,24}, {66,52,25}, {67,53,25}, {68,54,25}, {69,55,25}, {70,56,25}, {71,57,25}, {72,58,25}, {80,52,26}, {81,53,26}, {82,54,26}, {83,55,26}, {84,56,26}, {85,57,26}, {86,58,26}, {2,2,27}, {3,2,28}, {4,2,29}, {32,27,30}, {33,28,30}, {34,29,30}, {35,30,30}, {36,31,30}, {37,27,31}, {38,28,31}, {39,29,31}, {40,30,31}, {41,31,31}, {42,27,32}, {43,28,32}, {44,29,32}, {45,30,32}, {46,31,32}, {47,27,33}, {48,28,33}, {49,29,33}, {50,30,33}, {51,31,33}, {96,87,34}, {97,88,34}, {98,89,34}, {99,90,34}, {100,91,34}, {101,92,34}, {102,93,34}, {103,94,34}, {104,95,34}, {105,87,35}, {106,88,35}, {107,89,35}, {108,90,35}, {109,91,35}, {110,92,35}, {111,93,35}, {112,94,35}, {113,95,35}, {132,87,36}, {133,88,36}, {134,89,36}, {135,90,36}, {136,91,36}, {137,92,36}, {138,93,36}, {139,94,36}, {140,95,36}, {80,59,37}, {81,60,37}, {82,61,37}, {83,62,37}, {84,63,37}, {85,64,37}, {86,65,37}, {32,32,38}, {33,33,38}, {34,34,38}, {35,35,38}, {36,36,38}, {37,32,39}, {38,33,39}, {39,34,39}, {40,35,39}, {41,36,39}, {42,32,40}, {43,33,40}, {44,34,40}, {45,35,40}, {46,36,40}, {47,32,41}, {48,33,41}, {49,34,41}, {50,35,41}, {51,36,41}, {96,96,42}, {97,97,42}, {98,98,42}, {99,99,42}, {100,100,42}, {101,101,42}, {102,102,42}, {103,103,42}, {104,104,42}, {123,96,43}, {124,97,43}, {125,98,43}, {126,99,43}, {127,100,43}, {128,101,43}, {129,102,43}, {130,103,43}, {131,104,43}, {132,96,44}, {133,97,44}, {134,98,44}, {135,99,44}, {136,100,44}, {137,101,44}, {138,102,44}, {139,103,44}, {140,104,44}, {11,11,45}, {12,12,45}, {13,13,45}, {14,11,46}, {15,12,46}, {16,13,46}, {66,66,47}, {67,67,47}, {68,68,47}, {69,69,47}, {70,70,47}, {71,71,47}, {72,72,47}, {73,66,48}, {74,67,48}, {75,68,48}, {76,69,48}, {77,70,48}, {78,71,48}, {79,72,48}, {80,66,49}, {81,67,49}, {82,68,49}, {83,69,49}, {84,70,49}, {85,71,49}, {86,72,49}, {3,3,50}, {4,3,51}, {37,37,52}, {38,38,52}, {39,39,52}, {40,40,52}, {41,41,52}, {42,37,53}, {43,38,53}, {44,39,53}, {45,40,53}, {46,41,53}, {47,37,54}, {48,38,54}, {49,39,54}, {50,40,54}, {51,41,54}, {105,105,55}, {106,106,55}, {107,107,55}, {108,108,55}, {109,109,55}, {110,110,55}, {111,111,55}, {112,112,55}, {113,113,55}, {123,105,56}, {124,106,56}, {125,107,56}, {126,108,56}, {127,109,56}, {128,110,56}, {129,111,56}, {130,112,56}, {131,113,56}, {132,105,57}, {133,106,57}, {134,107,57}, {135,108,57}, {136,109,57}, {137,110,57}, {138,111,57}, {139,112,57}, {140,113,57}, {132,114,58}, {133,115,58}, {134,116,58}, {135,117,58}, {136,118,58}, {137,119,58}, {138,120,58}, {139,121,58}, {140,122,58}, {73,73,59}, {74,74,59}, {75,75,59}, {76,76,59}, {77,77,59}, {78,78,59}, {79,79,59}, {80,73,60}, {81,74,60}, {82,75,60}, {83,76,60}, {84,77,60}, {85,78,60}, {86,79,60}, {42,42,61}, {43,43,61}, {44,44,61}, {45,45,61}, {46,46,61}, {47,42,62}, {48,43,62}, {49,44,62}, {50,45,62}, {51,46,62}, {123,123,63}, {124,124,63}, {125,125,63}, {126,126,63}, {127,127,63}, {128,128,63}, {129,129,63}, {130,130,63}, {131,131,63}, {14,14,64}, {15,15,64}, {16,16,64}, {80,80,65}, {81,81,65}, {82,82,65}, {83,83,65}, {84,84,65}, {85,85,65}, {86,86,65}, {4,4,66}, {47,47,67}, {48,48,67}, {49,49,67}, {50,50,67}, {51,51,67}, {132,132,68}, {133,133,68}, {134,134,68}, {135,135,68}, {136,136,68}, {137,137,68}, {138,138,68}, {139,139,68}, {140,140,68}}; -constexpr double cg_AAAA[335] = {1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.3333333333333333, 0.33333333333333337, 0.3333333333333333, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 0.14285714285714285, 0.14285714285714282, 0.14285714285714282, 0.14285714285714282, 1.0000000000000002, 0.19999999999999993, 0.19999999999999993, 0.19999999999999998, 0.19999999999999993, 0.19999999999999993, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.1111111111111111, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108, 0.11111111111111108}; - -template -KOKKOS_INLINE_FUNCTION void fwd_AAAA(const V &L, const V &R, const V &out, const int ii, const int k) -{ - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a4 = L(ii, k, 4); - const float a5 = L(ii, k, 5); - const float a6 = L(ii, k, 6); - const float a7 = L(ii, k, 7); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a13 = L(ii, k, 13); - const float a14 = L(ii, k, 14); - const float a15 = L(ii, k, 15); - const float a16 = L(ii, k, 16); - const float a17 = L(ii, k, 17); - const float a18 = L(ii, k, 18); - const float a19 = L(ii, k, 19); - const float a20 = L(ii, k, 20); - const float a21 = L(ii, k, 21); - const float a22 = L(ii, k, 22); - const float a23 = L(ii, k, 23); - const float a24 = L(ii, k, 24); - const float a25 = L(ii, k, 25); - const float a26 = L(ii, k, 26); - const float a27 = L(ii, k, 27); - const float a28 = L(ii, k, 28); - const float a29 = L(ii, k, 29); - const float a30 = L(ii, k, 30); - const float a31 = L(ii, k, 31); - const float a32 = L(ii, k, 32); - const float a33 = L(ii, k, 33); - const float a34 = L(ii, k, 34); - const float a35 = L(ii, k, 35); - const float a36 = L(ii, k, 36); - const float a37 = L(ii, k, 37); - const float a38 = L(ii, k, 38); - const float a39 = L(ii, k, 39); - const float a40 = L(ii, k, 40); - const float a41 = L(ii, k, 41); - const float a42 = L(ii, k, 42); - const float a43 = L(ii, k, 43); - const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); - const float a48 = L(ii, k, 48); - const float a49 = L(ii, k, 49); - const float a50 = L(ii, k, 50); - const float a51 = L(ii, k, 51); - const float a52 = L(ii, k, 52); - const float a53 = L(ii, k, 53); - const float a54 = L(ii, k, 54); - const float a55 = L(ii, k, 55); - const float a56 = L(ii, k, 56); - const float a57 = L(ii, k, 57); - const float a58 = L(ii, k, 58); - const float a59 = L(ii, k, 59); - const float a60 = L(ii, k, 60); - const float a61 = L(ii, k, 61); - const float a62 = L(ii, k, 62); - const float a63 = L(ii, k, 63); - const float a64 = L(ii, k, 64); - const float a65 = L(ii, k, 65); - const float a66 = L(ii, k, 66); - const float a67 = L(ii, k, 67); - const float a68 = L(ii, k, 68); - const float a69 = L(ii, k, 69); - const float a70 = L(ii, k, 70); - const float a71 = L(ii, k, 71); - const float a72 = L(ii, k, 72); - const float a73 = L(ii, k, 73); - const float a74 = L(ii, k, 74); - const float a75 = L(ii, k, 75); - const float a76 = L(ii, k, 76); - const float a77 = L(ii, k, 77); - const float a78 = L(ii, k, 78); - const float a79 = L(ii, k, 79); - const float a80 = L(ii, k, 80); - const float a81 = L(ii, k, 81); - const float a82 = L(ii, k, 82); - const float a83 = L(ii, k, 83); - const float a84 = L(ii, k, 84); - const float a85 = L(ii, k, 85); - const float a86 = L(ii, k, 86); - const float a87 = L(ii, k, 87); - const float a88 = L(ii, k, 88); - const float a89 = L(ii, k, 89); - const float a90 = L(ii, k, 90); - const float a91 = L(ii, k, 91); - const float a92 = L(ii, k, 92); - const float a93 = L(ii, k, 93); - const float a94 = L(ii, k, 94); - const float a95 = L(ii, k, 95); - const float a96 = L(ii, k, 96); - const float a97 = L(ii, k, 97); - const float a98 = L(ii, k, 98); - const float a99 = L(ii, k, 99); - const float a100 = L(ii, k, 100); - const float a101 = L(ii, k, 101); - const float a102 = L(ii, k, 102); - const float a103 = L(ii, k, 103); - const float a104 = L(ii, k, 104); - const float a105 = L(ii, k, 105); - const float a106 = L(ii, k, 106); - const float a107 = L(ii, k, 107); - const float a108 = L(ii, k, 108); - const float a109 = L(ii, k, 109); - const float a110 = L(ii, k, 110); - const float a111 = L(ii, k, 111); - const float a112 = L(ii, k, 112); - const float a113 = L(ii, k, 113); - const float a114 = L(ii, k, 114); - const float a115 = L(ii, k, 115); - const float a116 = L(ii, k, 116); - const float a117 = L(ii, k, 117); - const float a118 = L(ii, k, 118); - const float a119 = L(ii, k, 119); - const float a120 = L(ii, k, 120); - const float a121 = L(ii, k, 121); - const float a122 = L(ii, k, 122); - const float a123 = L(ii, k, 123); - const float a124 = L(ii, k, 124); - const float a125 = L(ii, k, 125); - const float a126 = L(ii, k, 126); - const float a127 = L(ii, k, 127); - const float a128 = L(ii, k, 128); - const float a129 = L(ii, k, 129); - const float a130 = L(ii, k, 130); - const float a131 = L(ii, k, 131); - const float a132 = L(ii, k, 132); - const float a133 = L(ii, k, 133); - const float a134 = L(ii, k, 134); - const float a135 = L(ii, k, 135); - const float a136 = L(ii, k, 136); - const float a137 = L(ii, k, 137); - const float a138 = L(ii, k, 138); - const float a139 = L(ii, k, 139); - const float a140 = L(ii, k, 140); - out(ii, k, 0) = 1.0f * a0 * a0; - out(ii, k, 1) = 1.0f * a1 * a0; - out(ii, k, 2) = 1.0f * a2 * a0; - out(ii, k, 3) = 1.0f * a3 * a0; - out(ii, k, 4) = 1.0f * a4 * a0; - out(ii, k, 5) = 0.3333333432674408f * a8 * a5 + 0.3333333432674408f * a9 * a6 + 0.3333333432674408f * a10 * a7; - out(ii, k, 6) = 0.3333333432674408f * a11 * a5 + 0.3333333432674408f * a12 * a6 + 0.3333333432674408f * a13 * a7; - out(ii, k, 7) = 0.3333333432674408f * a14 * a5 + 0.3333333432674408f * a15 * a6 + 0.3333333432674408f * a16 * a7; - out(ii, k, 8) = 1.0f * a1 * a1; - out(ii, k, 9) = 1.0f * a2 * a1; - out(ii, k, 10) = 1.0f * a3 * a1; - out(ii, k, 11) = 1.0f * a4 * a1; - out(ii, k, 12) = 0.20000000298023224f * a27 * a17 + 0.20000000298023224f * a28 * a18 + 0.20000000298023224f * a29 * a19 + 0.20000000298023224f * a30 * a20 + 0.20000000298023224f * a31 * a21; - out(ii, k, 13) = 0.20000000298023224f * a32 * a17 + 0.20000000298023224f * a33 * a18 + 0.20000000298023224f * a34 * a19 + 0.20000000298023224f * a35 * a20 + 0.20000000298023224f * a36 * a21; - out(ii, k, 14) = 0.20000000298023224f * a37 * a17 + 0.20000000298023224f * a38 * a18 + 0.20000000298023224f * a39 * a19 + 0.20000000298023224f * a40 * a20 + 0.20000000298023224f * a41 * a21; - out(ii, k, 15) = 0.20000000298023224f * a42 * a17 + 0.20000000298023224f * a43 * a18 + 0.20000000298023224f * a44 * a19 + 0.20000000298023224f * a45 * a20 + 0.20000000298023224f * a46 * a21; - out(ii, k, 16) = 0.20000000298023224f * a47 * a17 + 0.20000000298023224f * a48 * a18 + 0.20000000298023224f * a49 * a19 + 0.20000000298023224f * a50 * a20 + 0.20000000298023224f * a51 * a21; - out(ii, k, 17) = 0.20000000298023224f * a27 * a22 + 0.20000000298023224f * a28 * a23 + 0.20000000298023224f * a29 * a24 + 0.20000000298023224f * a30 * a25 + 0.20000000298023224f * a31 * a26; - out(ii, k, 18) = 0.20000000298023224f * a37 * a22 + 0.20000000298023224f * a38 * a23 + 0.20000000298023224f * a39 * a24 + 0.20000000298023224f * a40 * a25 + 0.20000000298023224f * a41 * a26; - out(ii, k, 19) = 0.20000000298023224f * a42 * a22 + 0.20000000298023224f * a43 * a23 + 0.20000000298023224f * a44 * a24 + 0.20000000298023224f * a45 * a25 + 0.20000000298023224f * a46 * a26; - out(ii, k, 20) = 0.20000000298023224f * a47 * a22 + 0.20000000298023224f * a48 * a23 + 0.20000000298023224f * a49 * a24 + 0.20000000298023224f * a50 * a25 + 0.20000000298023224f * a51 * a26; - out(ii, k, 21) = 0.3333333432674408f * a8 * a8 + 0.3333333432674408f * a9 * a9 + 0.3333333432674408f * a10 * a10; - out(ii, k, 22) = 0.3333333432674408f * a11 * a8 + 0.3333333432674408f * a12 * a9 + 0.3333333432674408f * a13 * a10; - out(ii, k, 23) = 0.3333333432674408f * a14 * a8 + 0.3333333432674408f * a15 * a9 + 0.3333333432674408f * a16 * a10; - out(ii, k, 24) = 0.1428571492433548f * a52 * a52 + 0.1428571492433548f * a53 * a53 + 0.1428571492433548f * a54 * a54 + 0.1428571492433548f * a55 * a55 + 0.1428571492433548f * a56 * a56 + 0.1428571492433548f * a57 * a57 + 0.1428571492433548f * a58 * a58; - out(ii, k, 25) = 0.1428571492433548f * a66 * a52 + 0.1428571492433548f * a67 * a53 + 0.1428571492433548f * a68 * a54 + 0.1428571492433548f * a69 * a55 + 0.1428571492433548f * a70 * a56 + 0.1428571492433548f * a71 * a57 + 0.1428571492433548f * a72 * a58; - out(ii, k, 26) = 0.1428571492433548f * a80 * a52 + 0.1428571492433548f * a81 * a53 + 0.1428571492433548f * a82 * a54 + 0.1428571492433548f * a83 * a55 + 0.1428571492433548f * a84 * a56 + 0.1428571492433548f * a85 * a57 + 0.1428571492433548f * a86 * a58; - out(ii, k, 27) = 1.0f * a2 * a2; - out(ii, k, 28) = 1.0f * a3 * a2; - out(ii, k, 29) = 1.0f * a4 * a2; - out(ii, k, 30) = 0.20000000298023224f * a32 * a27 + 0.20000000298023224f * a33 * a28 + 0.20000000298023224f * a34 * a29 + 0.20000000298023224f * a35 * a30 + 0.20000000298023224f * a36 * a31; - out(ii, k, 31) = 0.20000000298023224f * a37 * a27 + 0.20000000298023224f * a38 * a28 + 0.20000000298023224f * a39 * a29 + 0.20000000298023224f * a40 * a30 + 0.20000000298023224f * a41 * a31; - out(ii, k, 32) = 0.20000000298023224f * a42 * a27 + 0.20000000298023224f * a43 * a28 + 0.20000000298023224f * a44 * a29 + 0.20000000298023224f * a45 * a30 + 0.20000000298023224f * a46 * a31; - out(ii, k, 33) = 0.20000000298023224f * a47 * a27 + 0.20000000298023224f * a48 * a28 + 0.20000000298023224f * a49 * a29 + 0.20000000298023224f * a50 * a30 + 0.20000000298023224f * a51 * a31; - out(ii, k, 34) = 0.1111111119389534f * a96 * a87 + 0.1111111119389534f * a97 * a88 + 0.1111111119389534f * a98 * a89 + 0.1111111119389534f * a99 * a90 + 0.1111111119389534f * a100 * a91 + 0.1111111119389534f * a101 * a92 + 0.1111111119389534f * a102 * a93 + 0.1111111119389534f * a103 * a94 + 0.1111111119389534f * a104 * a95; - out(ii, k, 35) = 0.1111111119389534f * a105 * a87 + 0.1111111119389534f * a106 * a88 + 0.1111111119389534f * a107 * a89 + 0.1111111119389534f * a108 * a90 + 0.1111111119389534f * a109 * a91 + 0.1111111119389534f * a110 * a92 + 0.1111111119389534f * a111 * a93 + 0.1111111119389534f * a112 * a94 + 0.1111111119389534f * a113 * a95; - out(ii, k, 36) = 0.1111111119389534f * a132 * a87 + 0.1111111119389534f * a133 * a88 + 0.1111111119389534f * a134 * a89 + 0.1111111119389534f * a135 * a90 + 0.1111111119389534f * a136 * a91 + 0.1111111119389534f * a137 * a92 + 0.1111111119389534f * a138 * a93 + 0.1111111119389534f * a139 * a94 + 0.1111111119389534f * a140 * a95; - out(ii, k, 37) = 0.1428571492433548f * a80 * a59 + 0.1428571492433548f * a81 * a60 + 0.1428571492433548f * a82 * a61 + 0.1428571492433548f * a83 * a62 + 0.1428571492433548f * a84 * a63 + 0.1428571492433548f * a85 * a64 + 0.1428571492433548f * a86 * a65; - out(ii, k, 38) = 0.20000000298023224f * a32 * a32 + 0.20000000298023224f * a33 * a33 + 0.20000000298023224f * a34 * a34 + 0.20000000298023224f * a35 * a35 + 0.20000000298023224f * a36 * a36; - out(ii, k, 39) = 0.20000000298023224f * a37 * a32 + 0.20000000298023224f * a38 * a33 + 0.20000000298023224f * a39 * a34 + 0.20000000298023224f * a40 * a35 + 0.20000000298023224f * a41 * a36; - out(ii, k, 40) = 0.20000000298023224f * a42 * a32 + 0.20000000298023224f * a43 * a33 + 0.20000000298023224f * a44 * a34 + 0.20000000298023224f * a45 * a35 + 0.20000000298023224f * a46 * a36; - out(ii, k, 41) = 0.20000000298023224f * a47 * a32 + 0.20000000298023224f * a48 * a33 + 0.20000000298023224f * a49 * a34 + 0.20000000298023224f * a50 * a35 + 0.20000000298023224f * a51 * a36; - out(ii, k, 42) = 0.1111111119389534f * a96 * a96 + 0.1111111119389534f * a97 * a97 + 0.1111111119389534f * a98 * a98 + 0.1111111119389534f * a99 * a99 + 0.1111111119389534f * a100 * a100 + 0.1111111119389534f * a101 * a101 + 0.1111111119389534f * a102 * a102 + 0.1111111119389534f * a103 * a103 + 0.1111111119389534f * a104 * a104; - out(ii, k, 43) = 0.1111111119389534f * a123 * a96 + 0.1111111119389534f * a124 * a97 + 0.1111111119389534f * a125 * a98 + 0.1111111119389534f * a126 * a99 + 0.1111111119389534f * a127 * a100 + 0.1111111119389534f * a128 * a101 + 0.1111111119389534f * a129 * a102 + 0.1111111119389534f * a130 * a103 + 0.1111111119389534f * a131 * a104; - out(ii, k, 44) = 0.1111111119389534f * a132 * a96 + 0.1111111119389534f * a133 * a97 + 0.1111111119389534f * a134 * a98 + 0.1111111119389534f * a135 * a99 + 0.1111111119389534f * a136 * a100 + 0.1111111119389534f * a137 * a101 + 0.1111111119389534f * a138 * a102 + 0.1111111119389534f * a139 * a103 + 0.1111111119389534f * a140 * a104; - out(ii, k, 45) = 0.3333333432674408f * a11 * a11 + 0.3333333432674408f * a12 * a12 + 0.3333333432674408f * a13 * a13; - out(ii, k, 46) = 0.3333333432674408f * a14 * a11 + 0.3333333432674408f * a15 * a12 + 0.3333333432674408f * a16 * a13; - out(ii, k, 47) = 0.1428571492433548f * a66 * a66 + 0.1428571492433548f * a67 * a67 + 0.1428571492433548f * a68 * a68 + 0.1428571492433548f * a69 * a69 + 0.1428571492433548f * a70 * a70 + 0.1428571492433548f * a71 * a71 + 0.1428571492433548f * a72 * a72; - out(ii, k, 48) = 0.1428571492433548f * a73 * a66 + 0.1428571492433548f * a74 * a67 + 0.1428571492433548f * a75 * a68 + 0.1428571492433548f * a76 * a69 + 0.1428571492433548f * a77 * a70 + 0.1428571492433548f * a78 * a71 + 0.1428571492433548f * a79 * a72; - out(ii, k, 49) = 0.1428571492433548f * a80 * a66 + 0.1428571492433548f * a81 * a67 + 0.1428571492433548f * a82 * a68 + 0.1428571492433548f * a83 * a69 + 0.1428571492433548f * a84 * a70 + 0.1428571492433548f * a85 * a71 + 0.1428571492433548f * a86 * a72; - out(ii, k, 50) = 1.0f * a3 * a3; - out(ii, k, 51) = 1.0f * a4 * a3; - out(ii, k, 52) = 0.20000000298023224f * a37 * a37 + 0.20000000298023224f * a38 * a38 + 0.20000000298023224f * a39 * a39 + 0.20000000298023224f * a40 * a40 + 0.20000000298023224f * a41 * a41; - out(ii, k, 53) = 0.20000000298023224f * a42 * a37 + 0.20000000298023224f * a43 * a38 + 0.20000000298023224f * a44 * a39 + 0.20000000298023224f * a45 * a40 + 0.20000000298023224f * a46 * a41; - out(ii, k, 54) = 0.20000000298023224f * a47 * a37 + 0.20000000298023224f * a48 * a38 + 0.20000000298023224f * a49 * a39 + 0.20000000298023224f * a50 * a40 + 0.20000000298023224f * a51 * a41; - out(ii, k, 55) = 0.1111111119389534f * a105 * a105 + 0.1111111119389534f * a106 * a106 + 0.1111111119389534f * a107 * a107 + 0.1111111119389534f * a108 * a108 + 0.1111111119389534f * a109 * a109 + 0.1111111119389534f * a110 * a110 + 0.1111111119389534f * a111 * a111 + 0.1111111119389534f * a112 * a112 + 0.1111111119389534f * a113 * a113; - out(ii, k, 56) = 0.1111111119389534f * a123 * a105 + 0.1111111119389534f * a124 * a106 + 0.1111111119389534f * a125 * a107 + 0.1111111119389534f * a126 * a108 + 0.1111111119389534f * a127 * a109 + 0.1111111119389534f * a128 * a110 + 0.1111111119389534f * a129 * a111 + 0.1111111119389534f * a130 * a112 + 0.1111111119389534f * a131 * a113; - out(ii, k, 57) = 0.1111111119389534f * a132 * a105 + 0.1111111119389534f * a133 * a106 + 0.1111111119389534f * a134 * a107 + 0.1111111119389534f * a135 * a108 + 0.1111111119389534f * a136 * a109 + 0.1111111119389534f * a137 * a110 + 0.1111111119389534f * a138 * a111 + 0.1111111119389534f * a139 * a112 + 0.1111111119389534f * a140 * a113; - out(ii, k, 58) = 0.1111111119389534f * a132 * a114 + 0.1111111119389534f * a133 * a115 + 0.1111111119389534f * a134 * a116 + 0.1111111119389534f * a135 * a117 + 0.1111111119389534f * a136 * a118 + 0.1111111119389534f * a137 * a119 + 0.1111111119389534f * a138 * a120 + 0.1111111119389534f * a139 * a121 + 0.1111111119389534f * a140 * a122; - out(ii, k, 59) = 0.1428571492433548f * a73 * a73 + 0.1428571492433548f * a74 * a74 + 0.1428571492433548f * a75 * a75 + 0.1428571492433548f * a76 * a76 + 0.1428571492433548f * a77 * a77 + 0.1428571492433548f * a78 * a78 + 0.1428571492433548f * a79 * a79; - out(ii, k, 60) = 0.1428571492433548f * a80 * a73 + 0.1428571492433548f * a81 * a74 + 0.1428571492433548f * a82 * a75 + 0.1428571492433548f * a83 * a76 + 0.1428571492433548f * a84 * a77 + 0.1428571492433548f * a85 * a78 + 0.1428571492433548f * a86 * a79; - out(ii, k, 61) = 0.20000000298023224f * a42 * a42 + 0.20000000298023224f * a43 * a43 + 0.20000000298023224f * a44 * a44 + 0.20000000298023224f * a45 * a45 + 0.20000000298023224f * a46 * a46; - out(ii, k, 62) = 0.20000000298023224f * a47 * a42 + 0.20000000298023224f * a48 * a43 + 0.20000000298023224f * a49 * a44 + 0.20000000298023224f * a50 * a45 + 0.20000000298023224f * a51 * a46; - out(ii, k, 63) = 0.1111111119389534f * a123 * a123 + 0.1111111119389534f * a124 * a124 + 0.1111111119389534f * a125 * a125 + 0.1111111119389534f * a126 * a126 + 0.1111111119389534f * a127 * a127 + 0.1111111119389534f * a128 * a128 + 0.1111111119389534f * a129 * a129 + 0.1111111119389534f * a130 * a130 + 0.1111111119389534f * a131 * a131; - out(ii, k, 64) = 0.3333333432674408f * a14 * a14 + 0.3333333432674408f * a15 * a15 + 0.3333333432674408f * a16 * a16; - out(ii, k, 65) = 0.1428571492433548f * a80 * a80 + 0.1428571492433548f * a81 * a81 + 0.1428571492433548f * a82 * a82 + 0.1428571492433548f * a83 * a83 + 0.1428571492433548f * a84 * a84 + 0.1428571492433548f * a85 * a85 + 0.1428571492433548f * a86 * a86; - out(ii, k, 66) = 1.0f * a4 * a4; - out(ii, k, 67) = 0.20000000298023224f * a47 * a47 + 0.20000000298023224f * a48 * a48 + 0.20000000298023224f * a49 * a49 + 0.20000000298023224f * a50 * a50 + 0.20000000298023224f * a51 * a51; - out(ii, k, 68) = 0.1111111119389534f * a132 * a132 + 0.1111111119389534f * a133 * a133 + 0.1111111119389534f * a134 * a134 + 0.1111111119389534f * a135 * a135 + 0.1111111119389534f * a136 * a136 + 0.1111111119389534f * a137 * a137 + 0.1111111119389534f * a138 * a138 + 0.1111111119389534f * a139 * a139 + 0.1111111119389534f * a140 * a140; -} - -template -KOKKOS_INLINE_FUNCTION void rev_AAAA(const V &F, const V &, const V &D, const V &dF, const V &, const int ii, const int k) -{ - const float f0 = F(ii, k, 0); - const float f1 = F(ii, k, 1); - const float f2 = F(ii, k, 2); - const float f3 = F(ii, k, 3); - const float f4 = F(ii, k, 4); - const float f5 = F(ii, k, 5); - const float f6 = F(ii, k, 6); - const float f7 = F(ii, k, 7); - const float f8 = F(ii, k, 8); - const float f9 = F(ii, k, 9); - const float f10 = F(ii, k, 10); - const float f11 = F(ii, k, 11); - const float f12 = F(ii, k, 12); - const float f13 = F(ii, k, 13); - const float f14 = F(ii, k, 14); - const float f15 = F(ii, k, 15); - const float f16 = F(ii, k, 16); - const float f17 = F(ii, k, 17); - const float f18 = F(ii, k, 18); - const float f19 = F(ii, k, 19); - const float f20 = F(ii, k, 20); - const float f21 = F(ii, k, 21); - const float f22 = F(ii, k, 22); - const float f23 = F(ii, k, 23); - const float f24 = F(ii, k, 24); - const float f25 = F(ii, k, 25); - const float f26 = F(ii, k, 26); - const float f27 = F(ii, k, 27); - const float f28 = F(ii, k, 28); - const float f29 = F(ii, k, 29); - const float f30 = F(ii, k, 30); - const float f31 = F(ii, k, 31); - const float f32 = F(ii, k, 32); - const float f33 = F(ii, k, 33); - const float f34 = F(ii, k, 34); - const float f35 = F(ii, k, 35); - const float f36 = F(ii, k, 36); - const float f37 = F(ii, k, 37); - const float f38 = F(ii, k, 38); - const float f39 = F(ii, k, 39); - const float f40 = F(ii, k, 40); - const float f41 = F(ii, k, 41); - const float f42 = F(ii, k, 42); - const float f43 = F(ii, k, 43); - const float f44 = F(ii, k, 44); - const float f45 = F(ii, k, 45); - const float f46 = F(ii, k, 46); - const float f47 = F(ii, k, 47); - const float f48 = F(ii, k, 48); - const float f49 = F(ii, k, 49); - const float f50 = F(ii, k, 50); - const float f51 = F(ii, k, 51); - const float f52 = F(ii, k, 52); - const float f53 = F(ii, k, 53); - const float f54 = F(ii, k, 54); - const float f55 = F(ii, k, 55); - const float f56 = F(ii, k, 56); - const float f57 = F(ii, k, 57); - const float f58 = F(ii, k, 58); - const float f59 = F(ii, k, 59); - const float f60 = F(ii, k, 60); - const float f61 = F(ii, k, 61); - const float f62 = F(ii, k, 62); - const float f63 = F(ii, k, 63); - const float f64 = F(ii, k, 64); - const float f65 = F(ii, k, 65); - const float f66 = F(ii, k, 66); - const float f67 = F(ii, k, 67); - const float f68 = F(ii, k, 68); - const float f69 = F(ii, k, 69); - const float f70 = F(ii, k, 70); - const float f71 = F(ii, k, 71); - const float f72 = F(ii, k, 72); - const float f73 = F(ii, k, 73); - const float f74 = F(ii, k, 74); - const float f75 = F(ii, k, 75); - const float f76 = F(ii, k, 76); - const float f77 = F(ii, k, 77); - const float f78 = F(ii, k, 78); - const float f79 = F(ii, k, 79); - const float f80 = F(ii, k, 80); - const float f81 = F(ii, k, 81); - const float f82 = F(ii, k, 82); - const float f83 = F(ii, k, 83); - const float f84 = F(ii, k, 84); - const float f85 = F(ii, k, 85); - const float f86 = F(ii, k, 86); - const float f87 = F(ii, k, 87); - const float f88 = F(ii, k, 88); - const float f89 = F(ii, k, 89); - const float f90 = F(ii, k, 90); - const float f91 = F(ii, k, 91); - const float f92 = F(ii, k, 92); - const float f93 = F(ii, k, 93); - const float f94 = F(ii, k, 94); - const float f95 = F(ii, k, 95); - const float f96 = F(ii, k, 96); - const float f97 = F(ii, k, 97); - const float f98 = F(ii, k, 98); - const float f99 = F(ii, k, 99); - const float f100 = F(ii, k, 100); - const float f101 = F(ii, k, 101); - const float f102 = F(ii, k, 102); - const float f103 = F(ii, k, 103); - const float f104 = F(ii, k, 104); - const float f105 = F(ii, k, 105); - const float f106 = F(ii, k, 106); - const float f107 = F(ii, k, 107); - const float f108 = F(ii, k, 108); - const float f109 = F(ii, k, 109); - const float f110 = F(ii, k, 110); - const float f111 = F(ii, k, 111); - const float f112 = F(ii, k, 112); - const float f113 = F(ii, k, 113); - const float f114 = F(ii, k, 114); - const float f115 = F(ii, k, 115); - const float f116 = F(ii, k, 116); - const float f117 = F(ii, k, 117); - const float f118 = F(ii, k, 118); - const float f119 = F(ii, k, 119); - const float f120 = F(ii, k, 120); - const float f121 = F(ii, k, 121); - const float f122 = F(ii, k, 122); - const float f123 = F(ii, k, 123); - const float f124 = F(ii, k, 124); - const float f125 = F(ii, k, 125); - const float f126 = F(ii, k, 126); - const float f127 = F(ii, k, 127); - const float f128 = F(ii, k, 128); - const float f129 = F(ii, k, 129); - const float f130 = F(ii, k, 130); - const float f131 = F(ii, k, 131); - const float f132 = F(ii, k, 132); - const float f133 = F(ii, k, 133); - const float f134 = F(ii, k, 134); - const float f135 = F(ii, k, 135); - const float f136 = F(ii, k, 136); - const float f137 = F(ii, k, 137); - const float f138 = F(ii, k, 138); - const float f139 = F(ii, k, 139); - const float f140 = F(ii, k, 140); - { - float g0 = 0.0f; - float g1 = 0.0f; - float g2 = 0.0f; - float g3 = 0.0f; - float g4 = 0.0f; - float g5 = 0.0f; - float g6 = 0.0f; - float g7 = 0.0f; - float g8 = 0.0f; - float g9 = 0.0f; - float g10 = 0.0f; - float g11 = 0.0f; - float g12 = 0.0f; - float g13 = 0.0f; - float g14 = 0.0f; - float g15 = 0.0f; - float g16 = 0.0f; - float g17 = 0.0f; - float g18 = 0.0f; - float g19 = 0.0f; - float g20 = 0.0f; - float g21 = 0.0f; - float g22 = 0.0f; - float g23 = 0.0f; - float g24 = 0.0f; - float g25 = 0.0f; - float g26 = 0.0f; - float g27 = 0.0f; - float g28 = 0.0f; - float g29 = 0.0f; - float g30 = 0.0f; - float g31 = 0.0f; - float g32 = 0.0f; - float g33 = 0.0f; - float g34 = 0.0f; - float g35 = 0.0f; - float g36 = 0.0f; - float g37 = 0.0f; - float g38 = 0.0f; - float g39 = 0.0f; - float g40 = 0.0f; - float g41 = 0.0f; - float g42 = 0.0f; - float g43 = 0.0f; - float g44 = 0.0f; - float g45 = 0.0f; - float g46 = 0.0f; - float g47 = 0.0f; - { const float d = D(ii, k, 0); - g0 += 1.0f * d * f0; - g0 += 1.0f * d * f0; - } - { const float d = D(ii, k, 1); - g1 += 1.0f * d * f0; - g0 += 1.0f * d * f1; - } - { const float d = D(ii, k, 2); - g2 += 1.0f * d * f0; - g0 += 1.0f * d * f2; - } - { const float d = D(ii, k, 3); - g3 += 1.0f * d * f0; - g0 += 1.0f * d * f3; - } - { const float d = D(ii, k, 4); - g4 += 1.0f * d * f0; - g0 += 1.0f * d * f4; - } - { const float d = D(ii, k, 5); - g8 += 0.3333333432674408f * d * f5; - g5 += 0.3333333432674408f * d * f8; - g9 += 0.3333333432674408f * d * f6; - g6 += 0.3333333432674408f * d * f9; - g10 += 0.3333333432674408f * d * f7; - g7 += 0.3333333432674408f * d * f10; - } - { const float d = D(ii, k, 6); - g11 += 0.3333333432674408f * d * f5; - g5 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f6; - g6 += 0.3333333432674408f * d * f12; - g13 += 0.3333333432674408f * d * f7; - g7 += 0.3333333432674408f * d * f13; - } - { const float d = D(ii, k, 7); - g14 += 0.3333333432674408f * d * f5; - g5 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f6; - g6 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f7; - g7 += 0.3333333432674408f * d * f16; - } - { const float d = D(ii, k, 8); - g1 += 1.0f * d * f1; - g1 += 1.0f * d * f1; - } - { const float d = D(ii, k, 9); - g2 += 1.0f * d * f1; - g1 += 1.0f * d * f2; - } - { const float d = D(ii, k, 10); - g3 += 1.0f * d * f1; - g1 += 1.0f * d * f3; - } - { const float d = D(ii, k, 11); - g4 += 1.0f * d * f1; - g1 += 1.0f * d * f4; - } - { const float d = D(ii, k, 12); - g27 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f27; - g28 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f28; - g29 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f29; - g30 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f30; - g31 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f31; - } - { const float d = D(ii, k, 13); - g32 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f32; - g33 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f36; - } - { const float d = D(ii, k, 14); - g37 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 15); - g42 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 16); - g47 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f47; - g18 += 0.20000000298023224f * d * f48; - g19 += 0.20000000298023224f * d * f49; - g20 += 0.20000000298023224f * d * f50; - g21 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 17); - g27 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f27; - g28 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f28; - g29 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f29; - g30 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f30; - g31 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f31; - } - { const float d = D(ii, k, 18); - g37 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 19); - g42 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 20); - g47 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f47; - g23 += 0.20000000298023224f * d * f48; - g24 += 0.20000000298023224f * d * f49; - g25 += 0.20000000298023224f * d * f50; - g26 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 21); - g8 += 0.3333333432674408f * d * f8; - g8 += 0.3333333432674408f * d * f8; - g9 += 0.3333333432674408f * d * f9; - g9 += 0.3333333432674408f * d * f9; - g10 += 0.3333333432674408f * d * f10; - g10 += 0.3333333432674408f * d * f10; - } - { const float d = D(ii, k, 22); - g11 += 0.3333333432674408f * d * f8; - g8 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f9; - g9 += 0.3333333432674408f * d * f12; - g13 += 0.3333333432674408f * d * f10; - g10 += 0.3333333432674408f * d * f13; - } - { const float d = D(ii, k, 23); - g14 += 0.3333333432674408f * d * f8; - g8 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f9; - g9 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f10; - g10 += 0.3333333432674408f * d * f16; - } - { const float d = D(ii, k, 27); - g2 += 1.0f * d * f2; - g2 += 1.0f * d * f2; - } - { const float d = D(ii, k, 28); - g3 += 1.0f * d * f2; - g2 += 1.0f * d * f3; - } - { const float d = D(ii, k, 29); - g4 += 1.0f * d * f2; - g2 += 1.0f * d * f4; - } - { const float d = D(ii, k, 30); - g32 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f32; - g33 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f36; - } - { const float d = D(ii, k, 31); - g37 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 32); - g42 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 33); - g47 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f47; - g28 += 0.20000000298023224f * d * f48; - g29 += 0.20000000298023224f * d * f49; - g30 += 0.20000000298023224f * d * f50; - g31 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 38); - g32 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f32; - g33 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f36; - } - { const float d = D(ii, k, 39); - g37 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 40); - g42 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 41); - g47 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f47; - g33 += 0.20000000298023224f * d * f48; - g34 += 0.20000000298023224f * d * f49; - g35 += 0.20000000298023224f * d * f50; - g36 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 45); - g11 += 0.3333333432674408f * d * f11; - g11 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f12; - g12 += 0.3333333432674408f * d * f12; - g13 += 0.3333333432674408f * d * f13; - g13 += 0.3333333432674408f * d * f13; - } - { const float d = D(ii, k, 46); - g14 += 0.3333333432674408f * d * f11; - g11 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f12; - g12 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f13; - g13 += 0.3333333432674408f * d * f16; - } - { const float d = D(ii, k, 50); - g3 += 1.0f * d * f3; - g3 += 1.0f * d * f3; - } - { const float d = D(ii, k, 51); - g4 += 1.0f * d * f3; - g3 += 1.0f * d * f4; - } - { const float d = D(ii, k, 52); - g37 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f38; - g38 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f39; - g39 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f40; - g40 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f41; - g41 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 53); - g42 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f38; - g38 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f39; - g39 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f40; - g40 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f41; - g41 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 54); - g47 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f47; - g38 += 0.20000000298023224f * d * f48; - g39 += 0.20000000298023224f * d * f49; - g40 += 0.20000000298023224f * d * f50; - g41 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 61); - g42 += 0.20000000298023224f * d * f42; - g42 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f43; - g43 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f44; - g44 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f45; - g45 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f46; - g46 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 62); - g47 += 0.20000000298023224f * d * f42; - g42 += 0.20000000298023224f * d * f47; - g43 += 0.20000000298023224f * d * f48; - g44 += 0.20000000298023224f * d * f49; - g45 += 0.20000000298023224f * d * f50; - g46 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 64); - g14 += 0.3333333432674408f * d * f14; - g14 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f15; - g15 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f16; - g16 += 0.3333333432674408f * d * f16; - } - { const float d = D(ii, k, 66); - g4 += 1.0f * d * f4; - g4 += 1.0f * d * f4; - } - { const float d = D(ii, k, 67); - g47 += 0.20000000298023224f * d * f47; - g47 += 0.20000000298023224f * d * f47; - } - dF(ii, k, 0) = g0; - dF(ii, k, 1) = g1; - dF(ii, k, 2) = g2; - dF(ii, k, 3) = g3; - dF(ii, k, 4) = g4; - dF(ii, k, 5) = g5; - dF(ii, k, 6) = g6; - dF(ii, k, 7) = g7; - dF(ii, k, 8) = g8; - dF(ii, k, 9) = g9; - dF(ii, k, 10) = g10; - dF(ii, k, 11) = g11; - dF(ii, k, 12) = g12; - dF(ii, k, 13) = g13; - dF(ii, k, 14) = g14; - dF(ii, k, 15) = g15; - dF(ii, k, 16) = g16; - dF(ii, k, 17) = g17; - dF(ii, k, 18) = g18; - dF(ii, k, 19) = g19; - dF(ii, k, 20) = g20; - dF(ii, k, 21) = g21; - dF(ii, k, 22) = g22; - dF(ii, k, 23) = g23; - dF(ii, k, 24) = g24; - dF(ii, k, 25) = g25; - dF(ii, k, 26) = g26; - dF(ii, k, 27) = g27; - dF(ii, k, 28) = g28; - dF(ii, k, 29) = g29; - dF(ii, k, 30) = g30; - dF(ii, k, 31) = g31; - dF(ii, k, 32) = g32; - dF(ii, k, 33) = g33; - dF(ii, k, 34) = g34; - dF(ii, k, 35) = g35; - dF(ii, k, 36) = g36; - dF(ii, k, 37) = g37; - dF(ii, k, 38) = g38; - dF(ii, k, 39) = g39; - dF(ii, k, 40) = g40; - dF(ii, k, 41) = g41; - dF(ii, k, 42) = g42; - dF(ii, k, 43) = g43; - dF(ii, k, 44) = g44; - dF(ii, k, 45) = g45; - dF(ii, k, 46) = g46; - dF(ii, k, 47) = g47; - } - { - float g48 = 0.0f; - float g49 = 0.0f; - float g50 = 0.0f; - float g51 = 0.0f; - float g52 = 0.0f; - float g53 = 0.0f; - float g54 = 0.0f; - float g55 = 0.0f; - float g56 = 0.0f; - float g57 = 0.0f; - float g58 = 0.0f; - float g59 = 0.0f; - float g60 = 0.0f; - float g61 = 0.0f; - float g62 = 0.0f; - float g63 = 0.0f; - float g64 = 0.0f; - float g65 = 0.0f; - float g66 = 0.0f; - float g67 = 0.0f; - float g68 = 0.0f; - float g69 = 0.0f; - float g70 = 0.0f; - float g71 = 0.0f; - float g72 = 0.0f; - float g73 = 0.0f; - float g74 = 0.0f; - float g75 = 0.0f; - float g76 = 0.0f; - float g77 = 0.0f; - float g78 = 0.0f; - float g79 = 0.0f; - float g80 = 0.0f; - float g81 = 0.0f; - float g82 = 0.0f; - float g83 = 0.0f; - float g84 = 0.0f; - float g85 = 0.0f; - float g86 = 0.0f; - float g87 = 0.0f; - float g88 = 0.0f; - float g89 = 0.0f; - float g90 = 0.0f; - float g91 = 0.0f; - float g92 = 0.0f; - float g93 = 0.0f; - float g94 = 0.0f; - float g95 = 0.0f; - { const float d = D(ii, k, 16); - g48 += 0.20000000298023224f * d * f18; - g49 += 0.20000000298023224f * d * f19; - g50 += 0.20000000298023224f * d * f20; - g51 += 0.20000000298023224f * d * f21; - } - { const float d = D(ii, k, 20); - g48 += 0.20000000298023224f * d * f23; - g49 += 0.20000000298023224f * d * f24; - g50 += 0.20000000298023224f * d * f25; - g51 += 0.20000000298023224f * d * f26; - } - { const float d = D(ii, k, 24); - g52 += 0.1428571492433548f * d * f52; - g52 += 0.1428571492433548f * d * f52; - g53 += 0.1428571492433548f * d * f53; - g53 += 0.1428571492433548f * d * f53; - g54 += 0.1428571492433548f * d * f54; - g54 += 0.1428571492433548f * d * f54; - g55 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f55; - g56 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f56; - g57 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f57; - g58 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f58; - } - { const float d = D(ii, k, 25); - g66 += 0.1428571492433548f * d * f52; - g52 += 0.1428571492433548f * d * f66; - g67 += 0.1428571492433548f * d * f53; - g53 += 0.1428571492433548f * d * f67; - g68 += 0.1428571492433548f * d * f54; - g54 += 0.1428571492433548f * d * f68; - g69 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f72; - } - { const float d = D(ii, k, 26); - g80 += 0.1428571492433548f * d * f52; - g52 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f53; - g53 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f54; - g54 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f86; - } - { const float d = D(ii, k, 33); - g48 += 0.20000000298023224f * d * f28; - g49 += 0.20000000298023224f * d * f29; - g50 += 0.20000000298023224f * d * f30; - g51 += 0.20000000298023224f * d * f31; - } - { const float d = D(ii, k, 34); - g87 += 0.1111111119389534f * d * f96; - g88 += 0.1111111119389534f * d * f97; - g89 += 0.1111111119389534f * d * f98; - g90 += 0.1111111119389534f * d * f99; - g91 += 0.1111111119389534f * d * f100; - g92 += 0.1111111119389534f * d * f101; - g93 += 0.1111111119389534f * d * f102; - g94 += 0.1111111119389534f * d * f103; - g95 += 0.1111111119389534f * d * f104; - } - { const float d = D(ii, k, 35); - g87 += 0.1111111119389534f * d * f105; - g88 += 0.1111111119389534f * d * f106; - g89 += 0.1111111119389534f * d * f107; - g90 += 0.1111111119389534f * d * f108; - g91 += 0.1111111119389534f * d * f109; - g92 += 0.1111111119389534f * d * f110; - g93 += 0.1111111119389534f * d * f111; - g94 += 0.1111111119389534f * d * f112; - g95 += 0.1111111119389534f * d * f113; - } - { const float d = D(ii, k, 36); - g87 += 0.1111111119389534f * d * f132; - g88 += 0.1111111119389534f * d * f133; - g89 += 0.1111111119389534f * d * f134; - g90 += 0.1111111119389534f * d * f135; - g91 += 0.1111111119389534f * d * f136; - g92 += 0.1111111119389534f * d * f137; - g93 += 0.1111111119389534f * d * f138; - g94 += 0.1111111119389534f * d * f139; - g95 += 0.1111111119389534f * d * f140; - } - { const float d = D(ii, k, 37); - g80 += 0.1428571492433548f * d * f59; - g59 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f60; - g60 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f61; - g61 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f62; - g62 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f63; - g63 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f64; - g64 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f65; - g65 += 0.1428571492433548f * d * f86; - } - { const float d = D(ii, k, 41); - g48 += 0.20000000298023224f * d * f33; - g49 += 0.20000000298023224f * d * f34; - g50 += 0.20000000298023224f * d * f35; - g51 += 0.20000000298023224f * d * f36; - } - { const float d = D(ii, k, 47); - g66 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f66; - g67 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f67; - g68 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f68; - g69 += 0.1428571492433548f * d * f69; - g69 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f70; - g70 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f71; - g71 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f72; - g72 += 0.1428571492433548f * d * f72; - } - { const float d = D(ii, k, 48); - g73 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f75; - g76 += 0.1428571492433548f * d * f69; - g69 += 0.1428571492433548f * d * f76; - g77 += 0.1428571492433548f * d * f70; - g70 += 0.1428571492433548f * d * f77; - g78 += 0.1428571492433548f * d * f71; - g71 += 0.1428571492433548f * d * f78; - g79 += 0.1428571492433548f * d * f72; - g72 += 0.1428571492433548f * d * f79; - } - { const float d = D(ii, k, 49); - g80 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f69; - g69 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f70; - g70 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f71; - g71 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f72; - g72 += 0.1428571492433548f * d * f86; - } - { const float d = D(ii, k, 54); - g48 += 0.20000000298023224f * d * f38; - g49 += 0.20000000298023224f * d * f39; - g50 += 0.20000000298023224f * d * f40; - g51 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 59); - g73 += 0.1428571492433548f * d * f73; - g73 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f74; - g74 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f75; - g75 += 0.1428571492433548f * d * f75; - g76 += 0.1428571492433548f * d * f76; - g76 += 0.1428571492433548f * d * f76; - g77 += 0.1428571492433548f * d * f77; - g77 += 0.1428571492433548f * d * f77; - g78 += 0.1428571492433548f * d * f78; - g78 += 0.1428571492433548f * d * f78; - g79 += 0.1428571492433548f * d * f79; - g79 += 0.1428571492433548f * d * f79; - } - { const float d = D(ii, k, 60); - g80 += 0.1428571492433548f * d * f73; - g73 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f74; - g74 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f75; - g75 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f76; - g76 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f77; - g77 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f78; - g78 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f79; - g79 += 0.1428571492433548f * d * f86; - } - { const float d = D(ii, k, 62); - g48 += 0.20000000298023224f * d * f43; - g49 += 0.20000000298023224f * d * f44; - g50 += 0.20000000298023224f * d * f45; - g51 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 65); - g80 += 0.1428571492433548f * d * f80; - g80 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f81; - g81 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f82; - g82 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f83; - g83 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f84; - g84 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f85; - g85 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f86; - g86 += 0.1428571492433548f * d * f86; - } - { const float d = D(ii, k, 67); - g48 += 0.20000000298023224f * d * f48; - g48 += 0.20000000298023224f * d * f48; - g49 += 0.20000000298023224f * d * f49; - g49 += 0.20000000298023224f * d * f49; - g50 += 0.20000000298023224f * d * f50; - g50 += 0.20000000298023224f * d * f50; - g51 += 0.20000000298023224f * d * f51; - g51 += 0.20000000298023224f * d * f51; - } - dF(ii, k, 48) = g48; - dF(ii, k, 49) = g49; - dF(ii, k, 50) = g50; - dF(ii, k, 51) = g51; - dF(ii, k, 52) = g52; - dF(ii, k, 53) = g53; - dF(ii, k, 54) = g54; - dF(ii, k, 55) = g55; - dF(ii, k, 56) = g56; - dF(ii, k, 57) = g57; - dF(ii, k, 58) = g58; - dF(ii, k, 59) = g59; - dF(ii, k, 60) = g60; - dF(ii, k, 61) = g61; - dF(ii, k, 62) = g62; - dF(ii, k, 63) = g63; - dF(ii, k, 64) = g64; - dF(ii, k, 65) = g65; - dF(ii, k, 66) = g66; - dF(ii, k, 67) = g67; - dF(ii, k, 68) = g68; - dF(ii, k, 69) = g69; - dF(ii, k, 70) = g70; - dF(ii, k, 71) = g71; - dF(ii, k, 72) = g72; - dF(ii, k, 73) = g73; - dF(ii, k, 74) = g74; - dF(ii, k, 75) = g75; - dF(ii, k, 76) = g76; - dF(ii, k, 77) = g77; - dF(ii, k, 78) = g78; - dF(ii, k, 79) = g79; - dF(ii, k, 80) = g80; - dF(ii, k, 81) = g81; - dF(ii, k, 82) = g82; - dF(ii, k, 83) = g83; - dF(ii, k, 84) = g84; - dF(ii, k, 85) = g85; - dF(ii, k, 86) = g86; - dF(ii, k, 87) = g87; - dF(ii, k, 88) = g88; - dF(ii, k, 89) = g89; - dF(ii, k, 90) = g90; - dF(ii, k, 91) = g91; - dF(ii, k, 92) = g92; - dF(ii, k, 93) = g93; - dF(ii, k, 94) = g94; - dF(ii, k, 95) = g95; - } - { - float g96 = 0.0f; - float g97 = 0.0f; - float g98 = 0.0f; - float g99 = 0.0f; - float g100 = 0.0f; - float g101 = 0.0f; - float g102 = 0.0f; - float g103 = 0.0f; - float g104 = 0.0f; - float g105 = 0.0f; - float g106 = 0.0f; - float g107 = 0.0f; - float g108 = 0.0f; - float g109 = 0.0f; - float g110 = 0.0f; - float g111 = 0.0f; - float g112 = 0.0f; - float g113 = 0.0f; - float g114 = 0.0f; - float g115 = 0.0f; - float g116 = 0.0f; - float g117 = 0.0f; - float g118 = 0.0f; - float g119 = 0.0f; - float g120 = 0.0f; - float g121 = 0.0f; - float g122 = 0.0f; - float g123 = 0.0f; - float g124 = 0.0f; - float g125 = 0.0f; - float g126 = 0.0f; - float g127 = 0.0f; - float g128 = 0.0f; - float g129 = 0.0f; - float g130 = 0.0f; - float g131 = 0.0f; - float g132 = 0.0f; - float g133 = 0.0f; - float g134 = 0.0f; - float g135 = 0.0f; - float g136 = 0.0f; - float g137 = 0.0f; - float g138 = 0.0f; - float g139 = 0.0f; - float g140 = 0.0f; - { const float d = D(ii, k, 34); - g96 += 0.1111111119389534f * d * f87; - g97 += 0.1111111119389534f * d * f88; - g98 += 0.1111111119389534f * d * f89; - g99 += 0.1111111119389534f * d * f90; - g100 += 0.1111111119389534f * d * f91; - g101 += 0.1111111119389534f * d * f92; - g102 += 0.1111111119389534f * d * f93; - g103 += 0.1111111119389534f * d * f94; - g104 += 0.1111111119389534f * d * f95; - } - { const float d = D(ii, k, 35); - g105 += 0.1111111119389534f * d * f87; - g106 += 0.1111111119389534f * d * f88; - g107 += 0.1111111119389534f * d * f89; - g108 += 0.1111111119389534f * d * f90; - g109 += 0.1111111119389534f * d * f91; - g110 += 0.1111111119389534f * d * f92; - g111 += 0.1111111119389534f * d * f93; - g112 += 0.1111111119389534f * d * f94; - g113 += 0.1111111119389534f * d * f95; - } - { const float d = D(ii, k, 36); - g132 += 0.1111111119389534f * d * f87; - g133 += 0.1111111119389534f * d * f88; - g134 += 0.1111111119389534f * d * f89; - g135 += 0.1111111119389534f * d * f90; - g136 += 0.1111111119389534f * d * f91; - g137 += 0.1111111119389534f * d * f92; - g138 += 0.1111111119389534f * d * f93; - g139 += 0.1111111119389534f * d * f94; - g140 += 0.1111111119389534f * d * f95; - } - { const float d = D(ii, k, 42); - g96 += 0.1111111119389534f * d * f96; - g96 += 0.1111111119389534f * d * f96; - g97 += 0.1111111119389534f * d * f97; - g97 += 0.1111111119389534f * d * f97; - g98 += 0.1111111119389534f * d * f98; - g98 += 0.1111111119389534f * d * f98; - g99 += 0.1111111119389534f * d * f99; - g99 += 0.1111111119389534f * d * f99; - g100 += 0.1111111119389534f * d * f100; - g100 += 0.1111111119389534f * d * f100; - g101 += 0.1111111119389534f * d * f101; - g101 += 0.1111111119389534f * d * f101; - g102 += 0.1111111119389534f * d * f102; - g102 += 0.1111111119389534f * d * f102; - g103 += 0.1111111119389534f * d * f103; - g103 += 0.1111111119389534f * d * f103; - g104 += 0.1111111119389534f * d * f104; - g104 += 0.1111111119389534f * d * f104; - } - { const float d = D(ii, k, 43); - g123 += 0.1111111119389534f * d * f96; - g96 += 0.1111111119389534f * d * f123; - g124 += 0.1111111119389534f * d * f97; - g97 += 0.1111111119389534f * d * f124; - g125 += 0.1111111119389534f * d * f98; - g98 += 0.1111111119389534f * d * f125; - g126 += 0.1111111119389534f * d * f99; - g99 += 0.1111111119389534f * d * f126; - g127 += 0.1111111119389534f * d * f100; - g100 += 0.1111111119389534f * d * f127; - g128 += 0.1111111119389534f * d * f101; - g101 += 0.1111111119389534f * d * f128; - g129 += 0.1111111119389534f * d * f102; - g102 += 0.1111111119389534f * d * f129; - g130 += 0.1111111119389534f * d * f103; - g103 += 0.1111111119389534f * d * f130; - g131 += 0.1111111119389534f * d * f104; - g104 += 0.1111111119389534f * d * f131; - } - { const float d = D(ii, k, 44); - g132 += 0.1111111119389534f * d * f96; - g96 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f97; - g97 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f98; - g98 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f99; - g99 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f100; - g100 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f101; - g101 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f102; - g102 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f103; - g103 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f104; - g104 += 0.1111111119389534f * d * f140; - } - { const float d = D(ii, k, 55); - g105 += 0.1111111119389534f * d * f105; - g105 += 0.1111111119389534f * d * f105; - g106 += 0.1111111119389534f * d * f106; - g106 += 0.1111111119389534f * d * f106; - g107 += 0.1111111119389534f * d * f107; - g107 += 0.1111111119389534f * d * f107; - g108 += 0.1111111119389534f * d * f108; - g108 += 0.1111111119389534f * d * f108; - g109 += 0.1111111119389534f * d * f109; - g109 += 0.1111111119389534f * d * f109; - g110 += 0.1111111119389534f * d * f110; - g110 += 0.1111111119389534f * d * f110; - g111 += 0.1111111119389534f * d * f111; - g111 += 0.1111111119389534f * d * f111; - g112 += 0.1111111119389534f * d * f112; - g112 += 0.1111111119389534f * d * f112; - g113 += 0.1111111119389534f * d * f113; - g113 += 0.1111111119389534f * d * f113; - } - { const float d = D(ii, k, 56); - g123 += 0.1111111119389534f * d * f105; - g105 += 0.1111111119389534f * d * f123; - g124 += 0.1111111119389534f * d * f106; - g106 += 0.1111111119389534f * d * f124; - g125 += 0.1111111119389534f * d * f107; - g107 += 0.1111111119389534f * d * f125; - g126 += 0.1111111119389534f * d * f108; - g108 += 0.1111111119389534f * d * f126; - g127 += 0.1111111119389534f * d * f109; - g109 += 0.1111111119389534f * d * f127; - g128 += 0.1111111119389534f * d * f110; - g110 += 0.1111111119389534f * d * f128; - g129 += 0.1111111119389534f * d * f111; - g111 += 0.1111111119389534f * d * f129; - g130 += 0.1111111119389534f * d * f112; - g112 += 0.1111111119389534f * d * f130; - g131 += 0.1111111119389534f * d * f113; - g113 += 0.1111111119389534f * d * f131; - } - { const float d = D(ii, k, 57); - g132 += 0.1111111119389534f * d * f105; - g105 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f106; - g106 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f107; - g107 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f108; - g108 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f109; - g109 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f110; - g110 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f111; - g111 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f112; - g112 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f113; - g113 += 0.1111111119389534f * d * f140; - } - { const float d = D(ii, k, 58); - g132 += 0.1111111119389534f * d * f114; - g114 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f115; - g115 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f116; - g116 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f117; - g117 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f118; - g118 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f119; - g119 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f120; - g120 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f121; - g121 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f122; - g122 += 0.1111111119389534f * d * f140; - } - { const float d = D(ii, k, 63); - g123 += 0.1111111119389534f * d * f123; - g123 += 0.1111111119389534f * d * f123; - g124 += 0.1111111119389534f * d * f124; - g124 += 0.1111111119389534f * d * f124; - g125 += 0.1111111119389534f * d * f125; - g125 += 0.1111111119389534f * d * f125; - g126 += 0.1111111119389534f * d * f126; - g126 += 0.1111111119389534f * d * f126; - g127 += 0.1111111119389534f * d * f127; - g127 += 0.1111111119389534f * d * f127; - g128 += 0.1111111119389534f * d * f128; - g128 += 0.1111111119389534f * d * f128; - g129 += 0.1111111119389534f * d * f129; - g129 += 0.1111111119389534f * d * f129; - g130 += 0.1111111119389534f * d * f130; - g130 += 0.1111111119389534f * d * f130; - g131 += 0.1111111119389534f * d * f131; - g131 += 0.1111111119389534f * d * f131; - } - { const float d = D(ii, k, 68); - g132 += 0.1111111119389534f * d * f132; - g132 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f133; - g133 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f134; - g134 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f135; - g135 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f136; - g136 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f137; - g137 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f138; - g138 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f139; - g139 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f140; - g140 += 0.1111111119389534f * d * f140; - } - dF(ii, k, 96) = g96; - dF(ii, k, 97) = g97; - dF(ii, k, 98) = g98; - dF(ii, k, 99) = g99; - dF(ii, k, 100) = g100; - dF(ii, k, 101) = g101; - dF(ii, k, 102) = g102; - dF(ii, k, 103) = g103; - dF(ii, k, 104) = g104; - dF(ii, k, 105) = g105; - dF(ii, k, 106) = g106; - dF(ii, k, 107) = g107; - dF(ii, k, 108) = g108; - dF(ii, k, 109) = g109; - dF(ii, k, 110) = g110; - dF(ii, k, 111) = g111; - dF(ii, k, 112) = g112; - dF(ii, k, 113) = g113; - dF(ii, k, 114) = g114; - dF(ii, k, 115) = g115; - dF(ii, k, 116) = g116; - dF(ii, k, 117) = g117; - dF(ii, k, 118) = g118; - dF(ii, k, 119) = g119; - dF(ii, k, 120) = g120; - dF(ii, k, 121) = g121; - dF(ii, k, 122) = g122; - dF(ii, k, 123) = g123; - dF(ii, k, 124) = g124; - dF(ii, k, 125) = g125; - dF(ii, k, 126) = g126; - dF(ii, k, 127) = g127; - dF(ii, k, 128) = g128; - dF(ii, k, 129) = g129; - dF(ii, k, 130) = g130; - dF(ii, k, 131) = g131; - dF(ii, k, 132) = g132; - dF(ii, k, 133) = g133; - dF(ii, k, 134) = g134; - dF(ii, k, 135) = g135; - dF(ii, k, 136) = g136; - dF(ii, k, 137) = g137; - dF(ii, k, 138) = g138; - dF(ii, k, 139) = g139; - dF(ii, k, 140) = g140; - } -} - -} // namespace G1LShape_L -} // namespace kk -} // namespace grace - -#endif diff --git a/libgrace/include/grace/kk/g2l_shape_smaxm.h b/libgrace/include/grace/kk/g2l_shape_smaxm.h deleted file mode 100644 index bd7c57e..0000000 --- a/libgrace/include/grace/kk/g2l_shape_smaxm.h +++ /dev/null @@ -1,12389 +0,0 @@ -// SPDX-License-Identifier: LicenseRef-ASL (Academic Software Licence, see LICENSE.md) -// Generated from GRACE-2L-SMAX-OMAT-medium/kokkos.npz -- do not edit. -#ifndef LMP_PAIR_GRACE_2L_FUSED_SHAPE_SMAXM_H -#define LMP_PAIR_GRACE_2L_FUSED_SHAPE_SMAXM_H - -#include - -namespace grace { -namespace kk { -namespace G2LShape_SMAXM { - -constexpr int nt_AA = 623; -constexpr int tab_AA[623][3] = {{0,0,0}, {1,1,1}, {2,2,1}, {3,3,1}, {4,4,2}, {5,5,2}, {6,6,2}, {7,7,2}, {8,8,2}, {9,9,3}, {10,10,3}, {11,11,3}, {12,12,3}, {13,13,3}, {14,14,3}, {15,15,3}, {16,16,4}, {17,17,4}, {18,18,4}, {19,19,4}, {20,20,4}, {21,21,4}, {22,22,4}, {23,23,4}, {24,24,4}, {1,0,5}, {2,0,6}, {3,0,7}, {4,3,8}, {5,2,8}, {6,1,8}, {8,1,8}, {5,1,9}, {6,2,9}, {7,3,9}, {4,1,10}, {6,3,10}, {7,2,10}, {8,3,10}, {9,8,11}, {10,7,11}, {11,6,11}, {11,8,11}, {12,5,11}, {13,4,11}, {14,5,11}, {15,4,11}, {10,4,12}, {11,5,12}, {12,6,12}, {13,7,12}, {14,8,12}, {9,4,13}, {10,5,13}, {11,4,13}, {12,7,13}, {13,6,13}, {13,8,13}, {14,7,13}, {15,8,13}, {16,15,14}, {17,14,14}, {18,13,14}, {18,15,14}, {19,12,14}, {19,14,14}, {20,11,14}, {21,10,14}, {22,9,14}, {22,11,14}, {23,10,14}, {24,9,14}, {17,9,15}, {18,10,15}, {19,11,15}, {20,12,15}, {21,13,15}, {22,14,15}, {23,15,15}, {16,9,16}, {17,10,16}, {18,9,16}, {18,11,16}, {19,10,16}, {20,13,16}, {21,12,16}, {21,14,16}, {22,13,16}, {22,15,16}, {23,14,16}, {24,15,16}, {3,1,17}, {2,1,18}, {1,1,19}, {2,2,19}, {3,3,19}, {3,2,20}, {1,1,21}, {3,3,21}, {4,0,22}, {5,0,23}, {6,0,24}, {7,0,25}, {8,0,26}, {6,4,27}, {7,5,27}, {7,4,28}, {6,5,28}, {8,5,28}, {4,4,29}, {5,5,29}, {6,6,29}, {7,7,29}, {8,8,29}, {5,4,30}, {7,6,30}, {8,7,30}, {5,5,31}, {8,6,31}, {7,7,31}, {9,3,32}, {10,2,32}, {11,3,32}, {13,1,32}, {15,1,32}, {10,3,33}, {11,2,33}, {12,1,33}, {14,1,33}, {11,1,34}, {12,2,34}, {13,3,34}, {10,1,35}, {12,3,35}, {13,2,35}, {14,3,35}, {9,1,36}, {11,1,36}, {13,3,36}, {14,2,36}, {15,3,36}, {13,9,37}, {12,10,37}, {13,11,37}, {15,11,37}, {14,9,38}, {13,10,38}, {15,10,38}, {12,11,38}, {14,11,38}, {9,9,39}, {11,11,39}, {12,12,39}, {13,13,39}, {15,15,39}, {10,9,40}, {11,10,40}, {13,12,40}, {14,13,40}, {15,14,40}, {11,9,41}, {11,11,41}, {14,12,41}, {13,13,41}, {15,13,41}, {16,8,42}, {17,7,42}, {18,6,42}, {19,7,42}, {20,4,42}, {21,5,42}, {23,5,42}, {24,4,42}, {17,8,43}, {18,7,43}, {19,6,43}, {19,8,43}, {20,5,43}, {21,4,43}, {22,5,43}, {23,4,43}, {18,4,44}, {19,5,44}, {20,6,44}, {21,7,44}, {22,8,44}, {17,4,45}, {18,5,45}, {19,4,45}, {20,7,45}, {21,6,45}, {21,8,45}, {22,7,45}, {23,8,45}, {16,4,46}, {17,5,46}, {19,5,46}, {20,8,46}, {21,7,46}, {22,6,46}, {23,7,46}, {24,8,46}, {22,16,47}, {21,17,47}, {20,18,47}, {24,18,47}, {21,19,47}, {23,19,47}, {23,16,48}, {22,17,48}, {24,17,48}, {21,18,48}, {23,18,48}, {20,19,48}, {22,19,48}, {16,16,49}, {17,17,49}, {18,18,49}, {19,19,49}, {20,20,49}, {21,21,49}, {22,22,49}, {23,23,49}, {24,24,49}, {17,16,50}, {18,17,50}, {19,18,50}, {21,20,50}, {22,21,50}, {23,22,50}, {24,23,50}, {18,16,51}, {19,17,51}, {19,19,51}, {22,20,51}, {21,21,51}, {23,21,51}, {24,22,51}, {4,3,52}, {8,1,52}, {4,2,53}, {5,3,53}, {7,1,53}, {4,3,54}, {5,2,54}, {6,1,54}, {8,1,54}, {5,1,55}, {6,2,55}, {7,3,55}, {4,1,56}, {6,3,56}, {7,2,56}, {8,3,56}, {5,1,57}, {7,3,57}, {8,2,57}, {4,1,58}, {8,3,58}, {9,0,59}, {10,0,60}, {11,0,61}, {12,0,62}, {13,0,63}, {14,0,64}, {15,0,65}, {9,6,66}, {10,7,66}, {11,8,66}, {13,4,66}, {14,5,66}, {9,7,67}, {11,7,67}, {12,4,67}, {13,5,67}, {15,5,67}, {9,8,68}, {10,7,68}, {11,6,68}, {11,8,68}, {12,5,68}, {13,4,68}, {14,5,68}, {15,4,68}, {10,4,69}, {11,5,69}, {12,6,69}, {13,7,69}, {14,8,69}, {9,4,70}, {10,5,70}, {11,4,70}, {12,7,70}, {13,6,70}, {13,8,70}, {14,7,70}, {15,8,70}, {9,5,71}, {11,5,71}, {12,8,71}, {13,7,71}, {15,7,71}, {10,5,72}, {11,4,72}, {13,8,72}, {14,7,72}, {15,6,72}, {16,3,73}, {17,2,73}, {18,3,73}, {22,1,73}, {24,1,73}, {17,3,74}, {18,2,74}, {19,3,74}, {21,1,74}, {23,1,74}, {18,3,75}, {19,2,75}, {20,1,75}, {22,1,75}, {19,1,76}, {20,2,76}, {21,3,76}, {18,1,77}, {20,3,77}, {21,2,77}, {22,3,77}, {17,1,78}, {19,1,78}, {21,3,78}, {22,2,78}, {23,3,78}, {16,1,79}, {18,1,79}, {22,3,79}, {23,2,79}, {24,3,79}, {16,13,80}, {17,12,80}, {18,13,80}, {19,14,80}, {20,9,80}, {21,10,80}, {22,11,80}, {24,11,80}, {16,14,81}, {17,13,81}, {18,12,81}, {19,13,81}, {19,15,81}, {20,10,81}, {21,9,81}, {21,11,81}, {23,11,81}, {24,10,81}, {16,15,82}, {17,14,82}, {18,13,82}, {18,15,82}, {19,12,82}, {19,14,82}, {20,11,82}, {21,10,82}, {22,9,82}, {22,11,82}, {23,10,82}, {24,9,82}, {17,9,83}, {18,10,83}, {19,11,83}, {20,12,83}, {21,13,83}, {22,14,83}, {23,15,83}, {16,9,84}, {17,10,84}, {18,9,84}, {18,11,84}, {19,10,84}, {20,13,84}, {21,12,84}, {21,14,84}, {22,13,84}, {22,15,84}, {23,14,84}, {24,15,84}, {16,10,85}, {17,11,85}, {19,9,85}, {19,11,85}, {20,14,85}, {21,13,85}, {21,15,85}, {22,12,85}, {23,13,85}, {24,14,85}, {16,11,86}, {18,11,86}, {19,10,86}, {20,15,86}, {21,14,86}, {22,13,86}, {23,12,86}, {24,13,86}, {8,4,87}, {7,4,88}, {8,5,88}, {6,4,89}, {7,5,89}, {7,4,90}, {6,5,90}, {8,5,90}, {4,4,91}, {5,5,91}, {6,6,91}, {7,7,91}, {8,8,91}, {5,4,92}, {7,6,92}, {8,7,92}, {5,5,93}, {8,6,93}, {7,7,93}, {5,4,94}, {8,7,94}, {4,4,95}, {8,8,95}, {9,3,96}, {15,1,96}, {9,2,97}, {10,3,97}, {14,1,97}, {9,3,98}, {10,2,98}, {11,3,98}, {13,1,98}, {15,1,98}, {10,3,99}, {11,2,99}, {12,1,99}, {14,1,99}, {11,1,100}, {12,2,100}, {13,3,100}, {10,1,101}, {12,3,101}, {13,2,101}, {14,3,101}, {9,1,102}, {11,1,102}, {13,3,102}, {14,2,102}, {15,3,102}, {10,1,103}, {14,3,103}, {15,2,103}, {9,1,104}, {15,3,104}, {13,9,105}, {14,10,105}, {15,11,105}, {12,9,106}, {13,10,106}, {14,11,106}, {13,9,107}, {12,10,107}, {13,11,107}, {15,11,107}, {14,9,108}, {13,10,108}, {15,10,108}, {12,11,108}, {14,11,108}, {9,9,109}, {10,10,109}, {11,11,109}, {12,12,109}, {13,13,109}, {14,14,109}, {15,15,109}, {10,9,110}, {11,10,110}, {13,12,110}, {14,13,110}, {15,14,110}, {11,9,111}, {11,11,111}, {14,12,111}, {13,13,111}, {15,13,111}, {11,10,112}, {15,12,112}, {14,13,112}, {11,9,113}, {10,10,113}, {15,13,113}, {14,14,113}, {16,0,114}, {17,0,115}, {18,0,116}, {19,0,117}, {20,0,118}, {21,0,119}, {22,0,120}, {23,0,121}, {24,0,122}, {16,6,123}, {17,7,123}, {18,8,123}, {22,4,123}, {23,5,123}, {16,7,124}, {17,6,124}, {18,7,124}, {19,8,124}, {21,4,124}, {22,5,124}, {24,5,124}, {16,8,125}, {17,7,125}, {18,6,125}, {19,7,125}, {20,4,125}, {21,5,125}, {23,5,125}, {24,4,125}, {17,8,126}, {18,7,126}, {19,6,126}, {19,8,126}, {20,5,126}, {21,4,126}, {22,5,126}, {23,4,126}, {18,4,127}, {19,5,127}, {20,6,127}, {21,7,127}, {22,8,127}, {17,4,128}, {18,5,128}, {19,4,128}, {20,7,128}, {21,6,128}, {21,8,128}, {22,7,128}, {23,8,128}, {16,4,129}, {17,5,129}, {19,5,129}, {20,8,129}, {21,7,129}, {22,6,129}, {23,7,129}, {24,8,129}, {16,5,130}, {18,5,130}, {19,4,130}, {21,8,130}, {22,7,130}, {23,6,130}, {24,7,130}, {17,5,131}, {18,4,131}, {22,8,131}, {23,7,131}, {24,6,131}, {20,16,132}, {21,17,132}, {22,18,132}, {23,19,132}, {21,16,133}, {20,17,133}, {21,18,133}, {22,19,133}, {24,19,133}, {22,16,134}, {21,17,134}, {20,18,134}, {24,18,134}, {21,19,134}, {23,19,134}, {23,16,135}, {22,17,135}, {24,17,135}, {21,18,135}, {23,18,135}, {20,19,135}, {22,19,135}, {16,16,136}, {17,17,136}, {18,18,136}, {19,19,136}, {20,20,136}, {21,21,136}, {22,22,136}, {23,23,136}, {24,24,136}, {17,16,137}, {18,17,137}, {19,18,137}, {21,20,137}, {22,21,137}, {23,22,137}, {24,23,137}, {18,16,138}, {19,17,138}, {19,19,138}, {22,20,138}, {21,21,138}, {23,21,138}, {24,22,138}, {19,16,139}, {19,18,139}, {23,20,139}, {22,21,139}, {24,21,139}, {19,17,140}, {18,18,140}, {24,20,140}, {23,21,140}, {22,22,140}}; -constexpr double cg_AA[623] = {1.0, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 1.29099440574646, 1.29099440574646, -0.3726779818534851, 0.7453559637069702, -0.3726779818534851, 1.29099440574646, -0.64549720287323, 0.64549720287323, 1.0, 1.0, 1.0, 1.0, 1.0, -0.8944271802902222, 0.7745966911315918, 0.7745966911315918, 0.4472135901451111, -0.7745966911315918, -0.4472135901451111, 0.22360679507255554, 0.4472135901451111, 0.22360679507255554, -0.4472135901451111, 0.7745966911315918, 0.4472135901451111, 0.7745966911315918, -0.3872983455657959, -0.8944271802902222, 0.3872983455657959, 0.44543540477752686, 0.36369648575782776, -0.11501092463731766, -0.11501092463731766, -0.44543540477752686, 0.36369648575782776, 0.46004369854927063, -0.28171807527542114, -0.36369648575782776, 0.39840954542160034, 0.48795002698898315, 0.39840954542160034, 0.36369648575782776, -0.28171807527542114, 0.46004369854927063, 0.36369648575782776, 0.44543540477752686, 0.11501092463731766, -0.11501092463731766, 0.36369648575782776, 0.44543540477752686, -0.3571428656578064, -0.7142857313156128, 0.5532833337783813, 0.3571428656578064, 0.5646924376487732, 0.4374088943004608, -0.5646924376487732, 0.22587697207927704, -0.4374088943004608, -0.3992978632450104, 0.2395787090063095, 0.31943827867507935, 0.2395787090063095, -0.3992978632450104, 0.5646924376487732, 0.4374088943004608, 0.22587697207927704, 0.4374088943004608, 0.5646924376487732, -0.3571428656578064, -0.2766416668891907, -0.7142857313156128, 0.2766416668891907, -0.3571428656578064, 0.32867109775543213, 0.23240555822849274, 0.21516573429107666, -0.08784104883670807, 0.0555555559694767, -0.08784104883670807, -0.23240555822849274, -0.32867109775543213, 0.23240555822849274, 0.24845199286937714, 0.3042903244495392, 0.08784104883670807, -0.2222222238779068, -0.08784104883670807, -0.24845199286937714, -0.23240555822849274, 0.21516573429107666, 0.3042903244495392, 0.3333333432674408, 0.3042903244495392, 0.21516573429107666, 0.23240555822849274, 0.24845199286937714, -0.08784104883670807, -0.2222222238779068, 0.3042903244495392, -0.08784104883670807, 0.24845199286937714, 0.23240555822849274, 0.32867109775543213, 0.23240555822849274, 0.08784104883670807, 0.0555555559694767, -0.08784104883670807, 0.21516573429107666, 0.23240555822849274, 0.32867109775543213, -0.22771002352237701, -0.34156501293182373, -0.5773502588272095, 0.22771002352237701, 0.4303314685821533, 0.34156501293182373, 0.4260064363479614, 0.4025382399559021, -0.4260064363479614, 0.273861289024353, -0.4025382399559021, 0.13608276844024658, -0.273861289024353, -0.3478327989578247, -0.08695819973945618, 0.09938079863786697, 0.21118420362472534, 0.24845199286937714, 0.21118420362472534, 0.09938079863786697, -0.08695819973945618, -0.3478327989578247, 0.4260064363479614, 0.4025382399559021, 0.273861289024353, 0.13608276844024658, 0.273861289024353, 0.4025382399559021, 0.4260064363479614, -0.22771002352237701, -0.34156501293182373, -0.21516573429107666, -0.5773502588272095, 0.21516573429107666, -0.34156501293182373, -0.22771002352237701, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, 0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.5577733516693115, 0.6440612077713013, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.55901700258255, 0.3952847123146057, -0.25, -0.25, 0.3952847123146057, 0.3952847123146057, 0.3061862289905548, -0.5, 0.3061862289905548, -0.3952847123146057, -0.25, 0.3061862289905548, 0.3354102075099945, -0.3872983455657959, 0.15811388194561005, 0.3872983455657959, -0.3061862289905548, 0.25, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3061862289905548, 0.3872983455657959, 0.15811388194561005, 0.3354102075099945, 0.3872983455657959, 0.3061862289905548, -0.25, 0.3952847123146057, -0.3061862289905548, -0.5, 0.3061862289905548, 0.3952847123146057, -0.3952847123146057, 0.25, -0.25, 0.3952847123146057, -0.55901700258255, 0.47628965973854065, 0.3367876708507538, -0.09001028537750244, -0.09001028537750244, -0.47628965973854065, 0.4124789535999298, 0.44095855951309204, -0.15590238571166992, -0.15590238571166992, -0.4124789535999298, 0.3486083447933197, 0.4930066466331482, -0.31180477142333984, -0.3486083447933197, 0.4025382399559021, 0.5091750621795654, 0.4025382399559021, 0.3486083447933197, -0.31180477142333984, 0.4930066466331482, 0.3486083447933197, 0.4124789535999298, 0.15590238571166992, -0.15590238571166992, 0.44095855951309204, 0.4124789535999298, 0.47628965973854065, 0.09001028537750244, -0.09001028537750244, 0.3367876708507538, 0.47628965973854065, -0.2545875310897827, -0.44095855951309204, 0.28867512941360474, -0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, 0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.09622504562139511, 0.2222222238779068, 0.21516573429107666, -0.3888888955116272, -0.21516573429107666, 0.2222222238779068, -0.146986186504364, -0.32867109775543213, -0.2545875310897827, 0.146986186504364, 0.24845199286937714, -0.28867512941360474, 0.21516573429107666, -0.2222222238779068, 0.0555555559694767, 0.2222222238779068, 0.28867512941360474, -0.24845199286937714, -0.146986186504364, 0.2545875310897827, -0.44095855951309204, -0.09622504562139511, 0.21516573429107666, 0.3333333432674408, 0.21516573429107666, -0.09622504562139511, -0.44095855951309204, -0.2545875310897827, 0.146986186504364, 0.28867512941360474, 0.24845199286937714, 0.2222222238779068, 0.0555555559694767, 0.21516573429107666, 0.2222222238779068, 0.24845199286937714, 0.28867512941360474, 0.146986186504364, -0.2545875310897827, 0.32867109775543213, 0.146986186504364, -0.21516573429107666, -0.2222222238779068, -0.3888888955116272, 0.2222222238779068, -0.21516573429107666, -0.09622504562139511, 0.146986186504364, 0.32867109775543213, -0.2545875310897827, -0.28867512941360474, 0.21516573429107666, 0.1666666716337204, -0.21516573429107666, 0.28867512941360474, -0.44095855951309204, -0.2545875310897827, 1.1832159757614136, 0.8366600275039673, 0.8366600275039673, 0.7745966911315918, 0.8944271802902222, -0.3162277638912201, 1.095445156097412, 0.3162277638912201, 0.10000000149011612, -0.4000000059604645, 0.6000000238418579, -0.4000000059604645, 0.10000000149011612, -0.3162277638912201, 1.095445156097412, -0.3162277638912201, -0.4472135901451111, 0.7745966911315918, 0.4472135901451111, -0.8366600275039673, 0.8366600275039673, -0.5916079878807068, 0.5916079878807068, 0.6123724579811096, 0.6123724579811096, 0.4330126941204071, 0.5303300619125366, 0.5303300619125366, -0.1157275140285492, 0.5669466853141785, 0.4482107162475586, 0.4482107162475586, 0.1157275140285492, -0.20044593513011932, 0.6338657140731812, 0.5175491571426392, 0.20044593513011932, -0.40089187026023865, 0.6546536684036255, -0.40089187026023865, -0.20044593513011932, 0.5175491571426392, 0.6338657140731812, -0.20044593513011932, -0.1157275140285492, -0.4482107162475586, 0.4482107162475586, 0.5669466853141785, -0.1157275140285492, -0.5303300619125366, 0.5303300619125366, 0.4330126941204071, -0.6123724579811096, 0.6123724579811096, -0.6546536684036255, 0.8451542258262634, -0.6546536684036255, -1.133893370628357, 0.37796446681022644, 0.37796446681022644, 0.7423074841499329, -0.2474358230829239, 0.6388765573501587, -0.7423074841499329, -0.5532833337783813, 0.5714285969734192, 0.5532833337783813, 0.5532833337783813, -0.5714285969734192, 0.2142857164144516, -0.5, 0.0714285746216774, 0.4285714328289032, 0.0714285746216774, -0.5, 0.2142857164144516, -0.5532833337783813, 0.5714285969734192, 0.5532833337783813, 0.5714285969734192, -0.5532833337783813, 0.7423074841499329, -0.31943827867507935, -0.2474358230829239, 0.31943827867507935, 0.7423074841499329, -0.37796446681022644, -1.133893370628357, 0.37796446681022644, 0.6546536684036255, -0.4225771129131317, -0.6546536684036255, 0.4225771129131317, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.6260990500450134, 0.38340580463409424, -0.20493902266025543, -0.20493902266025543, 0.38340580463409424, 0.38340580463409424, -0.15652476251125336, 0.36228442192077637, -0.30740851163864136, -0.30740851163864136, 0.36228442192077637, -0.38340580463409424, -0.20493902266025543, 0.36228442192077637, 0.17888544499874115, 0.24647514522075653, -0.5196152329444885, 0.24647514522075653, -0.36228442192077637, 0.20493902266025543, -0.30740851163864136, 0.24647514522075653, 0.3801315426826477, -0.3872983455657959, 0.12247448414564133, 0.3872983455657959, -0.24647514522075653, 0.30740851163864136, -0.5196152329444885, 0.12247448414564133, 0.4472135901451111, 0.12247448414564133, -0.5196152329444885, -0.30740851163864136, 0.24647514522075653, 0.3872983455657959, 0.12247448414564133, 0.3801315426826477, 0.3872983455657959, 0.24647514522075653, -0.30740851163864136, -0.20493902266025543, 0.36228442192077637, -0.24647514522075653, -0.5196152329444885, 0.24647514522075653, 0.17888544499874115, 0.36228442192077637, -0.20493902266025543, 0.38340580463409424, -0.36228442192077637, 0.30740851163864136, -0.30740851163864136, 0.36228442192077637, -0.15652476251125336, 0.38340580463409424, -0.38340580463409424, 0.20493902266025543, -0.20493902266025543, 0.38340580463409424, -0.6260990500450134, 0.5185185074806213, -0.5797213315963745, 0.6573421955108643, -0.5797213315963745, -0.5797213315963745, -0.7777777910232544, 0.21911406517028809, 0.21911406517028809, 0.5797213315963745, 0.6573421955108643, 0.21911406517028809, -0.40740740299224854, -0.6573421955108643, 0.4969039857387543, -0.21911406517028809, -0.5797213315963745, 0.21911406517028809, 0.5797213315963745, 0.4969039857387543, -0.21911406517028809, 0.3333333432674408, -0.4969039857387543, 0.25925925374031067, -0.3888888955116272, -0.20370370149612427, 0.1666666716337204, 0.3333333432674408, 0.1666666716337204, -0.20370370149612427, -0.3888888955116272, 0.25925925374031067, -0.5797213315963745, 0.21911406517028809, 0.4969039857387543, 0.3333333432674408, 0.4969039857387543, 0.21911406517028809, -0.5797213315963745, 0.6573421955108643, 0.21911406517028809, -0.24845199286937714, -0.40740740299224854, 0.24845199286937714, 0.21911406517028809, 0.6573421955108643, -0.5797213315963745, -0.21911406517028809, -0.7777777910232544, 0.21911406517028809, -0.5797213315963745, 0.5797213315963745, -0.32867109775543213, 0.5185185074806213, -0.5797213315963745, 0.32867109775543213}; - -template -KOKKOS_INLINE_FUNCTION void fwd_AA(const V &L, const V &R, const V &out, const int ii, const int k) -{ - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a4 = L(ii, k, 4); - const float a5 = L(ii, k, 5); - const float a6 = L(ii, k, 6); - const float a7 = L(ii, k, 7); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a13 = L(ii, k, 13); - const float a14 = L(ii, k, 14); - const float a15 = L(ii, k, 15); - const float a16 = L(ii, k, 16); - const float a17 = L(ii, k, 17); - const float a18 = L(ii, k, 18); - const float a19 = L(ii, k, 19); - const float a20 = L(ii, k, 20); - const float a21 = L(ii, k, 21); - const float a22 = L(ii, k, 22); - const float a23 = L(ii, k, 23); - const float a24 = L(ii, k, 24); - out(ii, k, 0) = 1.0f * a0 * a0; - out(ii, k, 1) = 0.3333333432674408f * a1 * a1 + 0.3333333432674408f * a2 * a2 + 0.3333333432674408f * a3 * a3; - out(ii, k, 2) = 0.20000000298023224f * a4 * a4 + 0.20000000298023224f * a5 * a5 + 0.20000000298023224f * a6 * a6 + 0.20000000298023224f * a7 * a7 + 0.20000000298023224f * a8 * a8; - out(ii, k, 3) = 0.1428571492433548f * a9 * a9 + 0.1428571492433548f * a10 * a10 + 0.1428571492433548f * a11 * a11 + 0.1428571492433548f * a12 * a12 + 0.1428571492433548f * a13 * a13 + 0.1428571492433548f * a14 * a14 + 0.1428571492433548f * a15 * a15; - out(ii, k, 4) = 0.1111111119389534f * a16 * a16 + 0.1111111119389534f * a17 * a17 + 0.1111111119389534f * a18 * a18 + 0.1111111119389534f * a19 * a19 + 0.1111111119389534f * a20 * a20 + 0.1111111119389534f * a21 * a21 + 0.1111111119389534f * a22 * a22 + 0.1111111119389534f * a23 * a23 + 0.1111111119389534f * a24 * a24; - out(ii, k, 5) = 1.0f * a1 * a0; - out(ii, k, 6) = 1.0f * a2 * a0; - out(ii, k, 7) = 1.0f * a3 * a0; - out(ii, k, 8) = 0.3872983455657959f * a4 * a3 + 0.3872983455657959f * a5 * a2 + -0.22360679507255554f * a6 * a1 + -0.3872983455657959f * a8 * a1; - out(ii, k, 9) = 0.3872983455657959f * a5 * a1 + 0.4472135901451111f * a6 * a2 + 0.3872983455657959f * a7 * a3; - out(ii, k, 10) = 0.3872983455657959f * a4 * a1 + -0.22360679507255554f * a6 * a3 + 0.3872983455657959f * a7 * a2 + 0.3872983455657959f * a8 * a3; - out(ii, k, 11) = 0.26726123690605164f * a9 * a8 + 0.2182178944349289f * a10 * a7 + 0.23904572427272797f * a11 * a6 + 0.0690065547823906f * a11 * a8 + -0.16903084516525269f * a12 * a5 + -0.0690065547823906f * a13 * a4 + -0.2182178944349289f * a14 * a5 + -0.26726123690605164f * a15 * a4; - out(ii, k, 12) = 0.2182178944349289f * a10 * a4 + 0.2760262191295624f * a11 * a5 + 0.29277002811431885f * a12 * a6 + 0.2760262191295624f * a13 * a7 + 0.2182178944349289f * a14 * a8; - out(ii, k, 13) = 0.26726123690605164f * a9 * a4 + 0.2182178944349289f * a10 * a5 + -0.0690065547823906f * a11 * a4 + -0.16903084516525269f * a12 * a7 + 0.23904572427272797f * a13 * a6 + -0.0690065547823906f * a13 * a8 + 0.2182178944349289f * a14 * a7 + 0.26726123690605164f * a15 * a8; - out(ii, k, 14) = 0.20412415266036987f * a16 * a15 + 0.1767766922712326f * a17 * a14 + 0.14940357208251953f * a18 * a13 + 0.03857583925127983f * a18 * a15 + 0.17251639068126678f * a19 * a12 + 0.06681530922651291f * a19 * a14 + -0.13363061845302582f * a20 * a11 + -0.06681530922651291f * a21 * a10 + -0.03857583925127983f * a22 * a9 + -0.14940357208251953f * a22 * a11 + -0.1767766922712326f * a23 * a10 + -0.20412415266036987f * a24 * a9; - out(ii, k, 15) = 0.14433756470680237f * a17 * a9 + 0.18898223340511322f * a18 * a10 + 0.21128855645656586f * a19 * a11 + 0.2182178944349289f * a20 * a12 + 0.21128855645656586f * a21 * a13 + 0.18898223340511322f * a22 * a14 + 0.14433756470680237f * a23 * a15; - out(ii, k, 16) = 0.20412415266036987f * a16 * a9 + 0.1767766922712326f * a17 * a10 + -0.03857583925127983f * a18 * a9 + 0.14940357208251953f * a18 * a11 + -0.06681530922651291f * a19 * a10 + -0.13363061845302582f * a20 * a13 + 0.17251639068126678f * a21 * a12 + -0.06681530922651291f * a21 * a14 + 0.14940357208251953f * a22 * a13 + -0.03857583925127983f * a22 * a15 + 0.1767766922712326f * a23 * a14 + 0.20412415266036987f * a24 * a15; - out(ii, k, 17) = 1.29099440574646f * a3 * a1; - out(ii, k, 18) = 1.29099440574646f * a2 * a1; - out(ii, k, 19) = -0.3726779818534851f * a1 * a1 + 0.7453559637069702f * a2 * a2 + -0.3726779818534851f * a3 * a3; - out(ii, k, 20) = 1.29099440574646f * a3 * a2; - out(ii, k, 21) = -0.64549720287323f * a1 * a1 + 0.64549720287323f * a3 * a3; - out(ii, k, 22) = 1.0f * a4 * a0; - out(ii, k, 23) = 1.0f * a5 * a0; - out(ii, k, 24) = 1.0f * a6 * a0; - out(ii, k, 25) = 1.0f * a7 * a0; - out(ii, k, 26) = 1.0f * a8 * a0; - out(ii, k, 27) = -0.8944271802902222f * a6 * a4 + 0.7745966911315918f * a7 * a5; - out(ii, k, 28) = 0.7745966911315918f * a7 * a4 + 0.4472135901451111f * a6 * a5 + -0.7745966911315918f * a8 * a5; - out(ii, k, 29) = -0.4472135901451111f * a4 * a4 + 0.22360679507255554f * a5 * a5 + 0.4472135901451111f * a6 * a6 + 0.22360679507255554f * a7 * a7 + -0.4472135901451111f * a8 * a8; - out(ii, k, 30) = 0.7745966911315918f * a5 * a4 + 0.4472135901451111f * a7 * a6 + 0.7745966911315918f * a8 * a7; - out(ii, k, 31) = -0.3872983455657959f * a5 * a5 + -0.8944271802902222f * a8 * a6 + 0.3872983455657959f * a7 * a7; - out(ii, k, 32) = 0.44543540477752686f * a9 * a3 + 0.36369648575782776f * a10 * a2 + -0.11501092463731766f * a11 * a3 + -0.11501092463731766f * a13 * a1 + -0.44543540477752686f * a15 * a1; - out(ii, k, 33) = 0.36369648575782776f * a10 * a3 + 0.46004369854927063f * a11 * a2 + -0.28171807527542114f * a12 * a1 + -0.36369648575782776f * a14 * a1; - out(ii, k, 34) = 0.39840954542160034f * a11 * a1 + 0.48795002698898315f * a12 * a2 + 0.39840954542160034f * a13 * a3; - out(ii, k, 35) = 0.36369648575782776f * a10 * a1 + -0.28171807527542114f * a12 * a3 + 0.46004369854927063f * a13 * a2 + 0.36369648575782776f * a14 * a3; - out(ii, k, 36) = 0.44543540477752686f * a9 * a1 + 0.11501092463731766f * a11 * a1 + -0.11501092463731766f * a13 * a3 + 0.36369648575782776f * a14 * a2 + 0.44543540477752686f * a15 * a3; - out(ii, k, 37) = -0.3571428656578064f * a13 * a9 + -0.7142857313156128f * a12 * a10 + 0.5532833337783813f * a13 * a11 + 0.3571428656578064f * a15 * a11; - out(ii, k, 38) = 0.5646924376487732f * a14 * a9 + 0.4374088943004608f * a13 * a10 + -0.5646924376487732f * a15 * a10 + 0.22587697207927704f * a12 * a11 + -0.4374088943004608f * a14 * a11; - out(ii, k, 39) = -0.3992978632450104f * a9 * a9 + 0.2395787090063095f * a11 * a11 + 0.31943827867507935f * a12 * a12 + 0.2395787090063095f * a13 * a13 + -0.3992978632450104f * a15 * a15; - out(ii, k, 40) = 0.5646924376487732f * a10 * a9 + 0.4374088943004608f * a11 * a10 + 0.22587697207927704f * a13 * a12 + 0.4374088943004608f * a14 * a13 + 0.5646924376487732f * a15 * a14; - out(ii, k, 41) = -0.3571428656578064f * a11 * a9 + -0.2766416668891907f * a11 * a11 + -0.7142857313156128f * a14 * a12 + 0.2766416668891907f * a13 * a13 + -0.3571428656578064f * a15 * a13; - out(ii, k, 42) = 0.32867109775543213f * a16 * a8 + 0.23240555822849274f * a17 * a7 + 0.21516573429107666f * a18 * a6 + -0.08784104883670807f * a19 * a7 + 0.0555555559694767f * a20 * a4 + -0.08784104883670807f * a21 * a5 + -0.23240555822849274f * a23 * a5 + -0.32867109775543213f * a24 * a4; - out(ii, k, 43) = 0.23240555822849274f * a17 * a8 + 0.24845199286937714f * a18 * a7 + 0.3042903244495392f * a19 * a6 + 0.08784104883670807f * a19 * a8 + -0.2222222238779068f * a20 * a5 + -0.08784104883670807f * a21 * a4 + -0.24845199286937714f * a22 * a5 + -0.23240555822849274f * a23 * a4; - out(ii, k, 44) = 0.21516573429107666f * a18 * a4 + 0.3042903244495392f * a19 * a5 + 0.3333333432674408f * a20 * a6 + 0.3042903244495392f * a21 * a7 + 0.21516573429107666f * a22 * a8; - out(ii, k, 45) = 0.23240555822849274f * a17 * a4 + 0.24845199286937714f * a18 * a5 + -0.08784104883670807f * a19 * a4 + -0.2222222238779068f * a20 * a7 + 0.3042903244495392f * a21 * a6 + -0.08784104883670807f * a21 * a8 + 0.24845199286937714f * a22 * a7 + 0.23240555822849274f * a23 * a8; - out(ii, k, 46) = 0.32867109775543213f * a16 * a4 + 0.23240555822849274f * a17 * a5 + 0.08784104883670807f * a19 * a5 + 0.0555555559694767f * a20 * a8 + -0.08784104883670807f * a21 * a7 + 0.21516573429107666f * a22 * a6 + 0.23240555822849274f * a23 * a7 + 0.32867109775543213f * a24 * a8; - out(ii, k, 47) = -0.22771002352237701f * a22 * a16 + -0.34156501293182373f * a21 * a17 + -0.5773502588272095f * a20 * a18 + 0.22771002352237701f * a24 * a18 + 0.4303314685821533f * a21 * a19 + 0.34156501293182373f * a23 * a19; - out(ii, k, 48) = 0.4260064363479614f * a23 * a16 + 0.4025382399559021f * a22 * a17 + -0.4260064363479614f * a24 * a17 + 0.273861289024353f * a21 * a18 + -0.4025382399559021f * a23 * a18 + 0.13608276844024658f * a20 * a19 + -0.273861289024353f * a22 * a19; - out(ii, k, 49) = -0.3478327989578247f * a16 * a16 + -0.08695819973945618f * a17 * a17 + 0.09938079863786697f * a18 * a18 + 0.21118420362472534f * a19 * a19 + 0.24845199286937714f * a20 * a20 + 0.21118420362472534f * a21 * a21 + 0.09938079863786697f * a22 * a22 + -0.08695819973945618f * a23 * a23 + -0.3478327989578247f * a24 * a24; - out(ii, k, 50) = 0.4260064363479614f * a17 * a16 + 0.4025382399559021f * a18 * a17 + 0.273861289024353f * a19 * a18 + 0.13608276844024658f * a21 * a20 + 0.273861289024353f * a22 * a21 + 0.4025382399559021f * a23 * a22 + 0.4260064363479614f * a24 * a23; - out(ii, k, 51) = -0.22771002352237701f * a18 * a16 + -0.34156501293182373f * a19 * a17 + -0.21516573429107666f * a19 * a19 + -0.5773502588272095f * a22 * a20 + 0.21516573429107666f * a21 * a21 + -0.34156501293182373f * a23 * a21 + -0.22771002352237701f * a24 * a22; - out(ii, k, 52) = 0.6236095428466797f * a4 * a3 + 0.6236095428466797f * a8 * a1; - out(ii, k, 53) = 0.5091750621795654f * a4 * a2 + 0.5091750621795654f * a5 * a3 + 0.5091750621795654f * a7 * a1; - out(ii, k, 54) = -0.16101530194282532f * a4 * a3 + 0.6440612077713013f * a5 * a2 + 0.5577733516693115f * a6 * a1 + 0.16101530194282532f * a8 * a1; - out(ii, k, 55) = -0.3944053053855896f * a5 * a1 + 0.6831300258636475f * a6 * a2 + -0.3944053053855896f * a7 * a3; - out(ii, k, 56) = -0.16101530194282532f * a4 * a1 + 0.5577733516693115f * a6 * a3 + 0.6440612077713013f * a7 * a2 + -0.16101530194282532f * a8 * a3; - out(ii, k, 57) = -0.5091750621795654f * a5 * a1 + 0.5091750621795654f * a7 * a3 + 0.5091750621795654f * a8 * a2; - out(ii, k, 58) = -0.6236095428466797f * a4 * a1 + 0.6236095428466797f * a8 * a3; - out(ii, k, 59) = 1.0f * a9 * a0; - out(ii, k, 60) = 1.0f * a10 * a0; - out(ii, k, 61) = 1.0f * a11 * a0; - out(ii, k, 62) = 1.0f * a12 * a0; - out(ii, k, 63) = 1.0f * a13 * a0; - out(ii, k, 64) = 1.0f * a14 * a0; - out(ii, k, 65) = 1.0f * a15 * a0; - out(ii, k, 66) = -0.55901700258255f * a9 * a6 + 0.3952847123146057f * a10 * a7 + -0.25f * a11 * a8 + -0.25f * a13 * a4 + 0.3952847123146057f * a14 * a5; - out(ii, k, 67) = 0.3952847123146057f * a9 * a7 + 0.3061862289905548f * a11 * a7 + -0.5f * a12 * a4 + 0.3061862289905548f * a13 * a5 + -0.3952847123146057f * a15 * a5; - out(ii, k, 68) = -0.25f * a9 * a8 + 0.3061862289905548f * a10 * a7 + 0.3354102075099945f * a11 * a6 + -0.3872983455657959f * a11 * a8 + 0.15811388194561005f * a12 * a5 + 0.3872983455657959f * a13 * a4 + -0.3061862289905548f * a14 * a5 + 0.25f * a15 * a4; - out(ii, k, 69) = -0.5f * a10 * a4 + 0.15811388194561005f * a11 * a5 + 0.4472135901451111f * a12 * a6 + 0.15811388194561005f * a13 * a7 + -0.5f * a14 * a8; - out(ii, k, 70) = -0.25f * a9 * a4 + 0.3061862289905548f * a10 * a5 + 0.3872983455657959f * a11 * a4 + 0.15811388194561005f * a12 * a7 + 0.3354102075099945f * a13 * a6 + 0.3872983455657959f * a13 * a8 + 0.3061862289905548f * a14 * a7 + -0.25f * a15 * a8; - out(ii, k, 71) = 0.3952847123146057f * a9 * a5 + -0.3061862289905548f * a11 * a5 + -0.5f * a12 * a8 + 0.3061862289905548f * a13 * a7 + 0.3952847123146057f * a15 * a7; - out(ii, k, 72) = -0.3952847123146057f * a10 * a5 + 0.25f * a11 * a4 + -0.25f * a13 * a8 + 0.3952847123146057f * a14 * a7 + -0.55901700258255f * a15 * a6; - out(ii, k, 73) = 0.47628965973854065f * a16 * a3 + 0.3367876708507538f * a17 * a2 + -0.09001028537750244f * a18 * a3 + -0.09001028537750244f * a22 * a1 + -0.47628965973854065f * a24 * a1; - out(ii, k, 74) = 0.4124789535999298f * a17 * a3 + 0.44095855951309204f * a18 * a2 + -0.15590238571166992f * a19 * a3 + -0.15590238571166992f * a21 * a1 + -0.4124789535999298f * a23 * a1; - out(ii, k, 75) = 0.3486083447933197f * a18 * a3 + 0.4930066466331482f * a19 * a2 + -0.31180477142333984f * a20 * a1 + -0.3486083447933197f * a22 * a1; - out(ii, k, 76) = 0.4025382399559021f * a19 * a1 + 0.5091750621795654f * a20 * a2 + 0.4025382399559021f * a21 * a3; - out(ii, k, 77) = 0.3486083447933197f * a18 * a1 + -0.31180477142333984f * a20 * a3 + 0.4930066466331482f * a21 * a2 + 0.3486083447933197f * a22 * a3; - out(ii, k, 78) = 0.4124789535999298f * a17 * a1 + 0.15590238571166992f * a19 * a1 + -0.15590238571166992f * a21 * a3 + 0.44095855951309204f * a22 * a2 + 0.4124789535999298f * a23 * a3; - out(ii, k, 79) = 0.47628965973854065f * a16 * a1 + 0.09001028537750244f * a18 * a1 + -0.09001028537750244f * a22 * a3 + 0.3367876708507538f * a23 * a2 + 0.47628965973854065f * a24 * a3; - out(ii, k, 80) = -0.2545875310897827f * a16 * a13 + -0.44095855951309204f * a17 * a12 + 0.28867512941360474f * a18 * a13 + -0.21516573429107666f * a19 * a14 + 0.1666666716337204f * a20 * a9 + -0.21516573429107666f * a21 * a10 + 0.28867512941360474f * a22 * a11 + 0.2545875310897827f * a24 * a11; - out(ii, k, 81) = 0.32867109775543213f * a16 * a14 + 0.146986186504364f * a17 * a13 + -0.09622504562139511f * a18 * a12 + 0.2222222238779068f * a19 * a13 + 0.21516573429107666f * a19 * a15 + -0.3888888955116272f * a20 * a10 + -0.21516573429107666f * a21 * a9 + 0.2222222238779068f * a21 * a11 + -0.146986186504364f * a23 * a11 + -0.32867109775543213f * a24 * a10; - out(ii, k, 82) = -0.2545875310897827f * a16 * a15 + 0.146986186504364f * a17 * a14 + 0.24845199286937714f * a18 * a13 + -0.28867512941360474f * a18 * a15 + 0.21516573429107666f * a19 * a12 + -0.2222222238779068f * a19 * a14 + 0.0555555559694767f * a20 * a11 + 0.2222222238779068f * a21 * a10 + 0.28867512941360474f * a22 * a9 + -0.24845199286937714f * a22 * a11 + -0.146986186504364f * a23 * a10 + 0.2545875310897827f * a24 * a9; - out(ii, k, 83) = -0.44095855951309204f * a17 * a9 + -0.09622504562139511f * a18 * a10 + 0.21516573429107666f * a19 * a11 + 0.3333333432674408f * a20 * a12 + 0.21516573429107666f * a21 * a13 + -0.09622504562139511f * a22 * a14 + -0.44095855951309204f * a23 * a15; - out(ii, k, 84) = -0.2545875310897827f * a16 * a9 + 0.146986186504364f * a17 * a10 + 0.28867512941360474f * a18 * a9 + 0.24845199286937714f * a18 * a11 + 0.2222222238779068f * a19 * a10 + 0.0555555559694767f * a20 * a13 + 0.21516573429107666f * a21 * a12 + 0.2222222238779068f * a21 * a14 + 0.24845199286937714f * a22 * a13 + 0.28867512941360474f * a22 * a15 + 0.146986186504364f * a23 * a14 + -0.2545875310897827f * a24 * a15; - out(ii, k, 85) = 0.32867109775543213f * a16 * a10 + 0.146986186504364f * a17 * a11 + -0.21516573429107666f * a19 * a9 + -0.2222222238779068f * a19 * a11 + -0.3888888955116272f * a20 * a14 + 0.2222222238779068f * a21 * a13 + -0.21516573429107666f * a21 * a15 + -0.09622504562139511f * a22 * a12 + 0.146986186504364f * a23 * a13 + 0.32867109775543213f * a24 * a14; - out(ii, k, 86) = -0.2545875310897827f * a16 * a11 + -0.28867512941360474f * a18 * a11 + 0.21516573429107666f * a19 * a10 + 0.1666666716337204f * a20 * a15 + -0.21516573429107666f * a21 * a14 + 0.28867512941360474f * a22 * a13 + -0.44095855951309204f * a23 * a12 + -0.2545875310897827f * a24 * a13; - out(ii, k, 87) = 1.1832159757614136f * a8 * a4; - out(ii, k, 88) = 0.8366600275039673f * a7 * a4 + 0.8366600275039673f * a8 * a5; - out(ii, k, 89) = 0.7745966911315918f * a6 * a4 + 0.8944271802902222f * a7 * a5; - out(ii, k, 90) = -0.3162277638912201f * a7 * a4 + 1.095445156097412f * a6 * a5 + 0.3162277638912201f * a8 * a5; - out(ii, k, 91) = 0.10000000149011612f * a4 * a4 + -0.4000000059604645f * a5 * a5 + 0.6000000238418579f * a6 * a6 + -0.4000000059604645f * a7 * a7 + 0.10000000149011612f * a8 * a8; - out(ii, k, 92) = -0.3162277638912201f * a5 * a4 + 1.095445156097412f * a7 * a6 + -0.3162277638912201f * a8 * a7; - out(ii, k, 93) = -0.4472135901451111f * a5 * a5 + 0.7745966911315918f * a8 * a6 + 0.4472135901451111f * a7 * a7; - out(ii, k, 94) = -0.8366600275039673f * a5 * a4 + 0.8366600275039673f * a8 * a7; - out(ii, k, 95) = -0.5916079878807068f * a4 * a4 + 0.5916079878807068f * a8 * a8; - out(ii, k, 96) = 0.6123724579811096f * a9 * a3 + 0.6123724579811096f * a15 * a1; - out(ii, k, 97) = 0.4330126941204071f * a9 * a2 + 0.5303300619125366f * a10 * a3 + 0.5303300619125366f * a14 * a1; - out(ii, k, 98) = -0.1157275140285492f * a9 * a3 + 0.5669466853141785f * a10 * a2 + 0.4482107162475586f * a11 * a3 + 0.4482107162475586f * a13 * a1 + 0.1157275140285492f * a15 * a1; - out(ii, k, 99) = -0.20044593513011932f * a10 * a3 + 0.6338657140731812f * a11 * a2 + 0.5175491571426392f * a12 * a1 + 0.20044593513011932f * a14 * a1; - out(ii, k, 100) = -0.40089187026023865f * a11 * a1 + 0.6546536684036255f * a12 * a2 + -0.40089187026023865f * a13 * a3; - out(ii, k, 101) = -0.20044593513011932f * a10 * a1 + 0.5175491571426392f * a12 * a3 + 0.6338657140731812f * a13 * a2 + -0.20044593513011932f * a14 * a3; - out(ii, k, 102) = -0.1157275140285492f * a9 * a1 + -0.4482107162475586f * a11 * a1 + 0.4482107162475586f * a13 * a3 + 0.5669466853141785f * a14 * a2 + -0.1157275140285492f * a15 * a3; - out(ii, k, 103) = -0.5303300619125366f * a10 * a1 + 0.5303300619125366f * a14 * a3 + 0.4330126941204071f * a15 * a2; - out(ii, k, 104) = -0.6123724579811096f * a9 * a1 + 0.6123724579811096f * a15 * a3; - out(ii, k, 105) = -0.6546536684036255f * a13 * a9 + 0.8451542258262634f * a14 * a10 + -0.6546536684036255f * a15 * a11; - out(ii, k, 106) = -1.133893370628357f * a12 * a9 + 0.37796446681022644f * a13 * a10 + 0.37796446681022644f * a14 * a11; - out(ii, k, 107) = 0.7423074841499329f * a13 * a9 + -0.2474358230829239f * a12 * a10 + 0.6388765573501587f * a13 * a11 + -0.7423074841499329f * a15 * a11; - out(ii, k, 108) = -0.5532833337783813f * a14 * a9 + 0.5714285969734192f * a13 * a10 + 0.5532833337783813f * a15 * a10 + 0.5532833337783813f * a12 * a11 + -0.5714285969734192f * a14 * a11; - out(ii, k, 109) = 0.2142857164144516f * a9 * a9 + -0.5f * a10 * a10 + 0.0714285746216774f * a11 * a11 + 0.4285714328289032f * a12 * a12 + 0.0714285746216774f * a13 * a13 + -0.5f * a14 * a14 + 0.2142857164144516f * a15 * a15; - out(ii, k, 110) = -0.5532833337783813f * a10 * a9 + 0.5714285969734192f * a11 * a10 + 0.5532833337783813f * a13 * a12 + 0.5714285969734192f * a14 * a13 + -0.5532833337783813f * a15 * a14; - out(ii, k, 111) = 0.7423074841499329f * a11 * a9 + -0.31943827867507935f * a11 * a11 + -0.2474358230829239f * a14 * a12 + 0.31943827867507935f * a13 * a13 + 0.7423074841499329f * a15 * a13; - out(ii, k, 112) = -0.37796446681022644f * a11 * a10 + -1.133893370628357f * a15 * a12 + 0.37796446681022644f * a14 * a13; - out(ii, k, 113) = 0.6546536684036255f * a11 * a9 + -0.4225771129131317f * a10 * a10 + -0.6546536684036255f * a15 * a13 + 0.4225771129131317f * a14 * a14; - out(ii, k, 114) = 1.0f * a16 * a0; - out(ii, k, 115) = 1.0f * a17 * a0; - out(ii, k, 116) = 1.0f * a18 * a0; - out(ii, k, 117) = 1.0f * a19 * a0; - out(ii, k, 118) = 1.0f * a20 * a0; - out(ii, k, 119) = 1.0f * a21 * a0; - out(ii, k, 120) = 1.0f * a22 * a0; - out(ii, k, 121) = 1.0f * a23 * a0; - out(ii, k, 122) = 1.0f * a24 * a0; - out(ii, k, 123) = -0.6260990500450134f * a16 * a6 + 0.38340580463409424f * a17 * a7 + -0.20493902266025543f * a18 * a8 + -0.20493902266025543f * a22 * a4 + 0.38340580463409424f * a23 * a5; - out(ii, k, 124) = 0.38340580463409424f * a16 * a7 + -0.15652476251125336f * a17 * a6 + 0.36228442192077637f * a18 * a7 + -0.30740851163864136f * a19 * a8 + -0.30740851163864136f * a21 * a4 + 0.36228442192077637f * a22 * a5 + -0.38340580463409424f * a24 * a5; - out(ii, k, 125) = -0.20493902266025543f * a16 * a8 + 0.36228442192077637f * a17 * a7 + 0.17888544499874115f * a18 * a6 + 0.24647514522075653f * a19 * a7 + -0.5196152329444885f * a20 * a4 + 0.24647514522075653f * a21 * a5 + -0.36228442192077637f * a23 * a5 + 0.20493902266025543f * a24 * a4; - out(ii, k, 126) = -0.30740851163864136f * a17 * a8 + 0.24647514522075653f * a18 * a7 + 0.3801315426826477f * a19 * a6 + -0.3872983455657959f * a19 * a8 + 0.12247448414564133f * a20 * a5 + 0.3872983455657959f * a21 * a4 + -0.24647514522075653f * a22 * a5 + 0.30740851163864136f * a23 * a4; - out(ii, k, 127) = -0.5196152329444885f * a18 * a4 + 0.12247448414564133f * a19 * a5 + 0.4472135901451111f * a20 * a6 + 0.12247448414564133f * a21 * a7 + -0.5196152329444885f * a22 * a8; - out(ii, k, 128) = -0.30740851163864136f * a17 * a4 + 0.24647514522075653f * a18 * a5 + 0.3872983455657959f * a19 * a4 + 0.12247448414564133f * a20 * a7 + 0.3801315426826477f * a21 * a6 + 0.3872983455657959f * a21 * a8 + 0.24647514522075653f * a22 * a7 + -0.30740851163864136f * a23 * a8; - out(ii, k, 129) = -0.20493902266025543f * a16 * a4 + 0.36228442192077637f * a17 * a5 + -0.24647514522075653f * a19 * a5 + -0.5196152329444885f * a20 * a8 + 0.24647514522075653f * a21 * a7 + 0.17888544499874115f * a22 * a6 + 0.36228442192077637f * a23 * a7 + -0.20493902266025543f * a24 * a8; - out(ii, k, 130) = 0.38340580463409424f * a16 * a5 + -0.36228442192077637f * a18 * a5 + 0.30740851163864136f * a19 * a4 + -0.30740851163864136f * a21 * a8 + 0.36228442192077637f * a22 * a7 + -0.15652476251125336f * a23 * a6 + 0.38340580463409424f * a24 * a7; - out(ii, k, 131) = -0.38340580463409424f * a17 * a5 + 0.20493902266025543f * a18 * a4 + -0.20493902266025543f * a22 * a8 + 0.38340580463409424f * a23 * a7 + -0.6260990500450134f * a24 * a6; - out(ii, k, 132) = 0.5185185074806213f * a20 * a16 + -0.5797213315963745f * a21 * a17 + 0.6573421955108643f * a22 * a18 + -0.5797213315963745f * a23 * a19; - out(ii, k, 133) = -0.5797213315963745f * a21 * a16 + -0.7777777910232544f * a20 * a17 + 0.21911406517028809f * a21 * a18 + 0.21911406517028809f * a22 * a19 + 0.5797213315963745f * a24 * a19; - out(ii, k, 134) = 0.6573421955108643f * a22 * a16 + 0.21911406517028809f * a21 * a17 + -0.40740740299224854f * a20 * a18 + -0.6573421955108643f * a24 * a18 + 0.4969039857387543f * a21 * a19 + -0.21911406517028809f * a23 * a19; - out(ii, k, 135) = -0.5797213315963745f * a23 * a16 + 0.21911406517028809f * a22 * a17 + 0.5797213315963745f * a24 * a17 + 0.4969039857387543f * a21 * a18 + -0.21911406517028809f * a23 * a18 + 0.3333333432674408f * a20 * a19 + -0.4969039857387543f * a22 * a19; - out(ii, k, 136) = 0.25925925374031067f * a16 * a16 + -0.3888888955116272f * a17 * a17 + -0.20370370149612427f * a18 * a18 + 0.1666666716337204f * a19 * a19 + 0.3333333432674408f * a20 * a20 + 0.1666666716337204f * a21 * a21 + -0.20370370149612427f * a22 * a22 + -0.3888888955116272f * a23 * a23 + 0.25925925374031067f * a24 * a24; - out(ii, k, 137) = -0.5797213315963745f * a17 * a16 + 0.21911406517028809f * a18 * a17 + 0.4969039857387543f * a19 * a18 + 0.3333333432674408f * a21 * a20 + 0.4969039857387543f * a22 * a21 + 0.21911406517028809f * a23 * a22 + -0.5797213315963745f * a24 * a23; - out(ii, k, 138) = 0.6573421955108643f * a18 * a16 + 0.21911406517028809f * a19 * a17 + -0.24845199286937714f * a19 * a19 + -0.40740740299224854f * a22 * a20 + 0.24845199286937714f * a21 * a21 + 0.21911406517028809f * a23 * a21 + 0.6573421955108643f * a24 * a22; - out(ii, k, 139) = -0.5797213315963745f * a19 * a16 + -0.21911406517028809f * a19 * a18 + -0.7777777910232544f * a23 * a20 + 0.21911406517028809f * a22 * a21 + -0.5797213315963745f * a24 * a21; - out(ii, k, 140) = 0.5797213315963745f * a19 * a17 + -0.32867109775543213f * a18 * a18 + 0.5185185074806213f * a24 * a20 + -0.5797213315963745f * a23 * a21 + 0.32867109775543213f * a22 * a22; -} - -template -KOKKOS_INLINE_FUNCTION void rev_AA(const V &F, const V &, const V &D, const V &dF, const V &, const int ii, const int k) -{ - const float f0 = F(ii, k, 0); - const float f1 = F(ii, k, 1); - const float f2 = F(ii, k, 2); - const float f3 = F(ii, k, 3); - const float f4 = F(ii, k, 4); - const float f5 = F(ii, k, 5); - const float f6 = F(ii, k, 6); - const float f7 = F(ii, k, 7); - const float f8 = F(ii, k, 8); - const float f9 = F(ii, k, 9); - const float f10 = F(ii, k, 10); - const float f11 = F(ii, k, 11); - const float f12 = F(ii, k, 12); - const float f13 = F(ii, k, 13); - const float f14 = F(ii, k, 14); - const float f15 = F(ii, k, 15); - const float f16 = F(ii, k, 16); - const float f17 = F(ii, k, 17); - const float f18 = F(ii, k, 18); - const float f19 = F(ii, k, 19); - const float f20 = F(ii, k, 20); - const float f21 = F(ii, k, 21); - const float f22 = F(ii, k, 22); - const float f23 = F(ii, k, 23); - const float f24 = F(ii, k, 24); - { - float g0 = 0.0f; - float g1 = 0.0f; - float g2 = 0.0f; - float g3 = 0.0f; - float g4 = 0.0f; - float g5 = 0.0f; - float g6 = 0.0f; - float g7 = 0.0f; - float g8 = 0.0f; - float g9 = 0.0f; - float g10 = 0.0f; - float g11 = 0.0f; - float g12 = 0.0f; - float g13 = 0.0f; - float g14 = 0.0f; - float g15 = 0.0f; - float g16 = 0.0f; - float g17 = 0.0f; - float g18 = 0.0f; - float g19 = 0.0f; - float g20 = 0.0f; - float g21 = 0.0f; - float g22 = 0.0f; - float g23 = 0.0f; - float g24 = 0.0f; - { const float d = D(ii, k, 0); - g0 += 1.0f * d * f0; - g0 += 1.0f * d * f0; - } - { const float d = D(ii, k, 1); - g1 += 0.3333333432674408f * d * f1; - g1 += 0.3333333432674408f * d * f1; - g2 += 0.3333333432674408f * d * f2; - g2 += 0.3333333432674408f * d * f2; - g3 += 0.3333333432674408f * d * f3; - g3 += 0.3333333432674408f * d * f3; - } - { const float d = D(ii, k, 2); - g4 += 0.20000000298023224f * d * f4; - g4 += 0.20000000298023224f * d * f4; - g5 += 0.20000000298023224f * d * f5; - g5 += 0.20000000298023224f * d * f5; - g6 += 0.20000000298023224f * d * f6; - g6 += 0.20000000298023224f * d * f6; - g7 += 0.20000000298023224f * d * f7; - g7 += 0.20000000298023224f * d * f7; - g8 += 0.20000000298023224f * d * f8; - g8 += 0.20000000298023224f * d * f8; - } - { const float d = D(ii, k, 3); - g9 += 0.1428571492433548f * d * f9; - g9 += 0.1428571492433548f * d * f9; - g10 += 0.1428571492433548f * d * f10; - g10 += 0.1428571492433548f * d * f10; - g11 += 0.1428571492433548f * d * f11; - g11 += 0.1428571492433548f * d * f11; - g12 += 0.1428571492433548f * d * f12; - g12 += 0.1428571492433548f * d * f12; - g13 += 0.1428571492433548f * d * f13; - g13 += 0.1428571492433548f * d * f13; - g14 += 0.1428571492433548f * d * f14; - g14 += 0.1428571492433548f * d * f14; - g15 += 0.1428571492433548f * d * f15; - g15 += 0.1428571492433548f * d * f15; - } - { const float d = D(ii, k, 4); - g16 += 0.1111111119389534f * d * f16; - g16 += 0.1111111119389534f * d * f16; - g17 += 0.1111111119389534f * d * f17; - g17 += 0.1111111119389534f * d * f17; - g18 += 0.1111111119389534f * d * f18; - g18 += 0.1111111119389534f * d * f18; - g19 += 0.1111111119389534f * d * f19; - g19 += 0.1111111119389534f * d * f19; - g20 += 0.1111111119389534f * d * f20; - g20 += 0.1111111119389534f * d * f20; - g21 += 0.1111111119389534f * d * f21; - g21 += 0.1111111119389534f * d * f21; - g22 += 0.1111111119389534f * d * f22; - g22 += 0.1111111119389534f * d * f22; - g23 += 0.1111111119389534f * d * f23; - g23 += 0.1111111119389534f * d * f23; - g24 += 0.1111111119389534f * d * f24; - g24 += 0.1111111119389534f * d * f24; - } - { const float d = D(ii, k, 5); - g1 += 1.0f * d * f0; - g0 += 1.0f * d * f1; - } - { const float d = D(ii, k, 6); - g2 += 1.0f * d * f0; - g0 += 1.0f * d * f2; - } - { const float d = D(ii, k, 7); - g3 += 1.0f * d * f0; - g0 += 1.0f * d * f3; - } - { const float d = D(ii, k, 8); - g4 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f4; - g5 += 0.3872983455657959f * d * f2; - g2 += 0.3872983455657959f * d * f5; - g6 += -0.22360679507255554f * d * f1; - g1 += -0.22360679507255554f * d * f6; - g8 += -0.3872983455657959f * d * f1; - g1 += -0.3872983455657959f * d * f8; - } - { const float d = D(ii, k, 9); - g5 += 0.3872983455657959f * d * f1; - g1 += 0.3872983455657959f * d * f5; - g6 += 0.4472135901451111f * d * f2; - g2 += 0.4472135901451111f * d * f6; - g7 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f7; - } - { const float d = D(ii, k, 10); - g4 += 0.3872983455657959f * d * f1; - g1 += 0.3872983455657959f * d * f4; - g6 += -0.22360679507255554f * d * f3; - g3 += -0.22360679507255554f * d * f6; - g7 += 0.3872983455657959f * d * f2; - g2 += 0.3872983455657959f * d * f7; - g8 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f8; - } - { const float d = D(ii, k, 11); - g9 += 0.26726123690605164f * d * f8; - g8 += 0.26726123690605164f * d * f9; - g10 += 0.2182178944349289f * d * f7; - g7 += 0.2182178944349289f * d * f10; - g11 += 0.23904572427272797f * d * f6; - g6 += 0.23904572427272797f * d * f11; - g11 += 0.0690065547823906f * d * f8; - g8 += 0.0690065547823906f * d * f11; - g12 += -0.16903084516525269f * d * f5; - g5 += -0.16903084516525269f * d * f12; - g13 += -0.0690065547823906f * d * f4; - g4 += -0.0690065547823906f * d * f13; - g14 += -0.2182178944349289f * d * f5; - g5 += -0.2182178944349289f * d * f14; - g15 += -0.26726123690605164f * d * f4; - g4 += -0.26726123690605164f * d * f15; - } - { const float d = D(ii, k, 12); - g10 += 0.2182178944349289f * d * f4; - g4 += 0.2182178944349289f * d * f10; - g11 += 0.2760262191295624f * d * f5; - g5 += 0.2760262191295624f * d * f11; - g12 += 0.29277002811431885f * d * f6; - g6 += 0.29277002811431885f * d * f12; - g13 += 0.2760262191295624f * d * f7; - g7 += 0.2760262191295624f * d * f13; - g14 += 0.2182178944349289f * d * f8; - g8 += 0.2182178944349289f * d * f14; - } - { const float d = D(ii, k, 13); - g9 += 0.26726123690605164f * d * f4; - g4 += 0.26726123690605164f * d * f9; - g10 += 0.2182178944349289f * d * f5; - g5 += 0.2182178944349289f * d * f10; - g11 += -0.0690065547823906f * d * f4; - g4 += -0.0690065547823906f * d * f11; - g12 += -0.16903084516525269f * d * f7; - g7 += -0.16903084516525269f * d * f12; - g13 += 0.23904572427272797f * d * f6; - g6 += 0.23904572427272797f * d * f13; - g13 += -0.0690065547823906f * d * f8; - g8 += -0.0690065547823906f * d * f13; - g14 += 0.2182178944349289f * d * f7; - g7 += 0.2182178944349289f * d * f14; - g15 += 0.26726123690605164f * d * f8; - g8 += 0.26726123690605164f * d * f15; - } - { const float d = D(ii, k, 14); - g16 += 0.20412415266036987f * d * f15; - g15 += 0.20412415266036987f * d * f16; - g17 += 0.1767766922712326f * d * f14; - g14 += 0.1767766922712326f * d * f17; - g18 += 0.14940357208251953f * d * f13; - g13 += 0.14940357208251953f * d * f18; - g18 += 0.03857583925127983f * d * f15; - g15 += 0.03857583925127983f * d * f18; - g19 += 0.17251639068126678f * d * f12; - g12 += 0.17251639068126678f * d * f19; - g19 += 0.06681530922651291f * d * f14; - g14 += 0.06681530922651291f * d * f19; - g20 += -0.13363061845302582f * d * f11; - g11 += -0.13363061845302582f * d * f20; - g21 += -0.06681530922651291f * d * f10; - g10 += -0.06681530922651291f * d * f21; - g22 += -0.03857583925127983f * d * f9; - g9 += -0.03857583925127983f * d * f22; - g22 += -0.14940357208251953f * d * f11; - g11 += -0.14940357208251953f * d * f22; - g23 += -0.1767766922712326f * d * f10; - g10 += -0.1767766922712326f * d * f23; - g24 += -0.20412415266036987f * d * f9; - g9 += -0.20412415266036987f * d * f24; - } - { const float d = D(ii, k, 15); - g17 += 0.14433756470680237f * d * f9; - g9 += 0.14433756470680237f * d * f17; - g18 += 0.18898223340511322f * d * f10; - g10 += 0.18898223340511322f * d * f18; - g19 += 0.21128855645656586f * d * f11; - g11 += 0.21128855645656586f * d * f19; - g20 += 0.2182178944349289f * d * f12; - g12 += 0.2182178944349289f * d * f20; - g21 += 0.21128855645656586f * d * f13; - g13 += 0.21128855645656586f * d * f21; - g22 += 0.18898223340511322f * d * f14; - g14 += 0.18898223340511322f * d * f22; - g23 += 0.14433756470680237f * d * f15; - g15 += 0.14433756470680237f * d * f23; - } - { const float d = D(ii, k, 16); - g16 += 0.20412415266036987f * d * f9; - g9 += 0.20412415266036987f * d * f16; - g17 += 0.1767766922712326f * d * f10; - g10 += 0.1767766922712326f * d * f17; - g18 += -0.03857583925127983f * d * f9; - g9 += -0.03857583925127983f * d * f18; - g18 += 0.14940357208251953f * d * f11; - g11 += 0.14940357208251953f * d * f18; - g19 += -0.06681530922651291f * d * f10; - g10 += -0.06681530922651291f * d * f19; - g20 += -0.13363061845302582f * d * f13; - g13 += -0.13363061845302582f * d * f20; - g21 += 0.17251639068126678f * d * f12; - g12 += 0.17251639068126678f * d * f21; - g21 += -0.06681530922651291f * d * f14; - g14 += -0.06681530922651291f * d * f21; - g22 += 0.14940357208251953f * d * f13; - g13 += 0.14940357208251953f * d * f22; - g22 += -0.03857583925127983f * d * f15; - g15 += -0.03857583925127983f * d * f22; - g23 += 0.1767766922712326f * d * f14; - g14 += 0.1767766922712326f * d * f23; - g24 += 0.20412415266036987f * d * f15; - g15 += 0.20412415266036987f * d * f24; - } - { const float d = D(ii, k, 17); - g3 += 1.29099440574646f * d * f1; - g1 += 1.29099440574646f * d * f3; - } - { const float d = D(ii, k, 18); - g2 += 1.29099440574646f * d * f1; - g1 += 1.29099440574646f * d * f2; - } - { const float d = D(ii, k, 19); - g1 += -0.3726779818534851f * d * f1; - g1 += -0.3726779818534851f * d * f1; - g2 += 0.7453559637069702f * d * f2; - g2 += 0.7453559637069702f * d * f2; - g3 += -0.3726779818534851f * d * f3; - g3 += -0.3726779818534851f * d * f3; - } - { const float d = D(ii, k, 20); - g3 += 1.29099440574646f * d * f2; - g2 += 1.29099440574646f * d * f3; - } - { const float d = D(ii, k, 21); - g1 += -0.64549720287323f * d * f1; - g1 += -0.64549720287323f * d * f1; - g3 += 0.64549720287323f * d * f3; - g3 += 0.64549720287323f * d * f3; - } - { const float d = D(ii, k, 22); - g4 += 1.0f * d * f0; - g0 += 1.0f * d * f4; - } - { const float d = D(ii, k, 23); - g5 += 1.0f * d * f0; - g0 += 1.0f * d * f5; - } - { const float d = D(ii, k, 24); - g6 += 1.0f * d * f0; - g0 += 1.0f * d * f6; - } - { const float d = D(ii, k, 25); - g7 += 1.0f * d * f0; - g0 += 1.0f * d * f7; - } - { const float d = D(ii, k, 26); - g8 += 1.0f * d * f0; - g0 += 1.0f * d * f8; - } - { const float d = D(ii, k, 27); - g6 += -0.8944271802902222f * d * f4; - g4 += -0.8944271802902222f * d * f6; - g7 += 0.7745966911315918f * d * f5; - g5 += 0.7745966911315918f * d * f7; - } - { const float d = D(ii, k, 28); - g7 += 0.7745966911315918f * d * f4; - g4 += 0.7745966911315918f * d * f7; - g6 += 0.4472135901451111f * d * f5; - g5 += 0.4472135901451111f * d * f6; - g8 += -0.7745966911315918f * d * f5; - g5 += -0.7745966911315918f * d * f8; - } - { const float d = D(ii, k, 29); - g4 += -0.4472135901451111f * d * f4; - g4 += -0.4472135901451111f * d * f4; - g5 += 0.22360679507255554f * d * f5; - g5 += 0.22360679507255554f * d * f5; - g6 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f6; - g7 += 0.22360679507255554f * d * f7; - g7 += 0.22360679507255554f * d * f7; - g8 += -0.4472135901451111f * d * f8; - g8 += -0.4472135901451111f * d * f8; - } - { const float d = D(ii, k, 30); - g5 += 0.7745966911315918f * d * f4; - g4 += 0.7745966911315918f * d * f5; - g7 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f7; - g8 += 0.7745966911315918f * d * f7; - g7 += 0.7745966911315918f * d * f8; - } - { const float d = D(ii, k, 31); - g5 += -0.3872983455657959f * d * f5; - g5 += -0.3872983455657959f * d * f5; - g8 += -0.8944271802902222f * d * f6; - g6 += -0.8944271802902222f * d * f8; - g7 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f7; - } - { const float d = D(ii, k, 32); - g9 += 0.44543540477752686f * d * f3; - g3 += 0.44543540477752686f * d * f9; - g10 += 0.36369648575782776f * d * f2; - g2 += 0.36369648575782776f * d * f10; - g11 += -0.11501092463731766f * d * f3; - g3 += -0.11501092463731766f * d * f11; - g13 += -0.11501092463731766f * d * f1; - g1 += -0.11501092463731766f * d * f13; - g15 += -0.44543540477752686f * d * f1; - g1 += -0.44543540477752686f * d * f15; - } - { const float d = D(ii, k, 33); - g10 += 0.36369648575782776f * d * f3; - g3 += 0.36369648575782776f * d * f10; - g11 += 0.46004369854927063f * d * f2; - g2 += 0.46004369854927063f * d * f11; - g12 += -0.28171807527542114f * d * f1; - g1 += -0.28171807527542114f * d * f12; - g14 += -0.36369648575782776f * d * f1; - g1 += -0.36369648575782776f * d * f14; - } - { const float d = D(ii, k, 34); - g11 += 0.39840954542160034f * d * f1; - g1 += 0.39840954542160034f * d * f11; - g12 += 0.48795002698898315f * d * f2; - g2 += 0.48795002698898315f * d * f12; - g13 += 0.39840954542160034f * d * f3; - g3 += 0.39840954542160034f * d * f13; - } - { const float d = D(ii, k, 35); - g10 += 0.36369648575782776f * d * f1; - g1 += 0.36369648575782776f * d * f10; - g12 += -0.28171807527542114f * d * f3; - g3 += -0.28171807527542114f * d * f12; - g13 += 0.46004369854927063f * d * f2; - g2 += 0.46004369854927063f * d * f13; - g14 += 0.36369648575782776f * d * f3; - g3 += 0.36369648575782776f * d * f14; - } - { const float d = D(ii, k, 36); - g9 += 0.44543540477752686f * d * f1; - g1 += 0.44543540477752686f * d * f9; - g11 += 0.11501092463731766f * d * f1; - g1 += 0.11501092463731766f * d * f11; - g13 += -0.11501092463731766f * d * f3; - g3 += -0.11501092463731766f * d * f13; - g14 += 0.36369648575782776f * d * f2; - g2 += 0.36369648575782776f * d * f14; - g15 += 0.44543540477752686f * d * f3; - g3 += 0.44543540477752686f * d * f15; - } - { const float d = D(ii, k, 37); - g13 += -0.3571428656578064f * d * f9; - g9 += -0.3571428656578064f * d * f13; - g12 += -0.7142857313156128f * d * f10; - g10 += -0.7142857313156128f * d * f12; - g13 += 0.5532833337783813f * d * f11; - g11 += 0.5532833337783813f * d * f13; - g15 += 0.3571428656578064f * d * f11; - g11 += 0.3571428656578064f * d * f15; - } - { const float d = D(ii, k, 38); - g14 += 0.5646924376487732f * d * f9; - g9 += 0.5646924376487732f * d * f14; - g13 += 0.4374088943004608f * d * f10; - g10 += 0.4374088943004608f * d * f13; - g15 += -0.5646924376487732f * d * f10; - g10 += -0.5646924376487732f * d * f15; - g12 += 0.22587697207927704f * d * f11; - g11 += 0.22587697207927704f * d * f12; - g14 += -0.4374088943004608f * d * f11; - g11 += -0.4374088943004608f * d * f14; - } - { const float d = D(ii, k, 39); - g9 += -0.3992978632450104f * d * f9; - g9 += -0.3992978632450104f * d * f9; - g11 += 0.2395787090063095f * d * f11; - g11 += 0.2395787090063095f * d * f11; - g12 += 0.31943827867507935f * d * f12; - g12 += 0.31943827867507935f * d * f12; - g13 += 0.2395787090063095f * d * f13; - g13 += 0.2395787090063095f * d * f13; - g15 += -0.3992978632450104f * d * f15; - g15 += -0.3992978632450104f * d * f15; - } - { const float d = D(ii, k, 40); - g10 += 0.5646924376487732f * d * f9; - g9 += 0.5646924376487732f * d * f10; - g11 += 0.4374088943004608f * d * f10; - g10 += 0.4374088943004608f * d * f11; - g13 += 0.22587697207927704f * d * f12; - g12 += 0.22587697207927704f * d * f13; - g14 += 0.4374088943004608f * d * f13; - g13 += 0.4374088943004608f * d * f14; - g15 += 0.5646924376487732f * d * f14; - g14 += 0.5646924376487732f * d * f15; - } - { const float d = D(ii, k, 41); - g11 += -0.3571428656578064f * d * f9; - g9 += -0.3571428656578064f * d * f11; - g11 += -0.2766416668891907f * d * f11; - g11 += -0.2766416668891907f * d * f11; - g14 += -0.7142857313156128f * d * f12; - g12 += -0.7142857313156128f * d * f14; - g13 += 0.2766416668891907f * d * f13; - g13 += 0.2766416668891907f * d * f13; - g15 += -0.3571428656578064f * d * f13; - g13 += -0.3571428656578064f * d * f15; - } - { const float d = D(ii, k, 42); - g16 += 0.32867109775543213f * d * f8; - g8 += 0.32867109775543213f * d * f16; - g17 += 0.23240555822849274f * d * f7; - g7 += 0.23240555822849274f * d * f17; - g18 += 0.21516573429107666f * d * f6; - g6 += 0.21516573429107666f * d * f18; - g19 += -0.08784104883670807f * d * f7; - g7 += -0.08784104883670807f * d * f19; - g20 += 0.0555555559694767f * d * f4; - g4 += 0.0555555559694767f * d * f20; - g21 += -0.08784104883670807f * d * f5; - g5 += -0.08784104883670807f * d * f21; - g23 += -0.23240555822849274f * d * f5; - g5 += -0.23240555822849274f * d * f23; - g24 += -0.32867109775543213f * d * f4; - g4 += -0.32867109775543213f * d * f24; - } - { const float d = D(ii, k, 43); - g17 += 0.23240555822849274f * d * f8; - g8 += 0.23240555822849274f * d * f17; - g18 += 0.24845199286937714f * d * f7; - g7 += 0.24845199286937714f * d * f18; - g19 += 0.3042903244495392f * d * f6; - g6 += 0.3042903244495392f * d * f19; - g19 += 0.08784104883670807f * d * f8; - g8 += 0.08784104883670807f * d * f19; - g20 += -0.2222222238779068f * d * f5; - g5 += -0.2222222238779068f * d * f20; - g21 += -0.08784104883670807f * d * f4; - g4 += -0.08784104883670807f * d * f21; - g22 += -0.24845199286937714f * d * f5; - g5 += -0.24845199286937714f * d * f22; - g23 += -0.23240555822849274f * d * f4; - g4 += -0.23240555822849274f * d * f23; - } - { const float d = D(ii, k, 44); - g18 += 0.21516573429107666f * d * f4; - g4 += 0.21516573429107666f * d * f18; - g19 += 0.3042903244495392f * d * f5; - g5 += 0.3042903244495392f * d * f19; - g20 += 0.3333333432674408f * d * f6; - g6 += 0.3333333432674408f * d * f20; - g21 += 0.3042903244495392f * d * f7; - g7 += 0.3042903244495392f * d * f21; - g22 += 0.21516573429107666f * d * f8; - g8 += 0.21516573429107666f * d * f22; - } - { const float d = D(ii, k, 45); - g17 += 0.23240555822849274f * d * f4; - g4 += 0.23240555822849274f * d * f17; - g18 += 0.24845199286937714f * d * f5; - g5 += 0.24845199286937714f * d * f18; - g19 += -0.08784104883670807f * d * f4; - g4 += -0.08784104883670807f * d * f19; - g20 += -0.2222222238779068f * d * f7; - g7 += -0.2222222238779068f * d * f20; - g21 += 0.3042903244495392f * d * f6; - g6 += 0.3042903244495392f * d * f21; - g21 += -0.08784104883670807f * d * f8; - g8 += -0.08784104883670807f * d * f21; - g22 += 0.24845199286937714f * d * f7; - g7 += 0.24845199286937714f * d * f22; - g23 += 0.23240555822849274f * d * f8; - g8 += 0.23240555822849274f * d * f23; - } - { const float d = D(ii, k, 46); - g16 += 0.32867109775543213f * d * f4; - g4 += 0.32867109775543213f * d * f16; - g17 += 0.23240555822849274f * d * f5; - g5 += 0.23240555822849274f * d * f17; - g19 += 0.08784104883670807f * d * f5; - g5 += 0.08784104883670807f * d * f19; - g20 += 0.0555555559694767f * d * f8; - g8 += 0.0555555559694767f * d * f20; - g21 += -0.08784104883670807f * d * f7; - g7 += -0.08784104883670807f * d * f21; - g22 += 0.21516573429107666f * d * f6; - g6 += 0.21516573429107666f * d * f22; - g23 += 0.23240555822849274f * d * f7; - g7 += 0.23240555822849274f * d * f23; - g24 += 0.32867109775543213f * d * f8; - g8 += 0.32867109775543213f * d * f24; - } - { const float d = D(ii, k, 47); - g22 += -0.22771002352237701f * d * f16; - g16 += -0.22771002352237701f * d * f22; - g21 += -0.34156501293182373f * d * f17; - g17 += -0.34156501293182373f * d * f21; - g20 += -0.5773502588272095f * d * f18; - g18 += -0.5773502588272095f * d * f20; - g24 += 0.22771002352237701f * d * f18; - g18 += 0.22771002352237701f * d * f24; - g21 += 0.4303314685821533f * d * f19; - g19 += 0.4303314685821533f * d * f21; - g23 += 0.34156501293182373f * d * f19; - g19 += 0.34156501293182373f * d * f23; - } - { const float d = D(ii, k, 48); - g23 += 0.4260064363479614f * d * f16; - g16 += 0.4260064363479614f * d * f23; - g22 += 0.4025382399559021f * d * f17; - g17 += 0.4025382399559021f * d * f22; - g24 += -0.4260064363479614f * d * f17; - g17 += -0.4260064363479614f * d * f24; - g21 += 0.273861289024353f * d * f18; - g18 += 0.273861289024353f * d * f21; - g23 += -0.4025382399559021f * d * f18; - g18 += -0.4025382399559021f * d * f23; - g20 += 0.13608276844024658f * d * f19; - g19 += 0.13608276844024658f * d * f20; - g22 += -0.273861289024353f * d * f19; - g19 += -0.273861289024353f * d * f22; - } - { const float d = D(ii, k, 49); - g16 += -0.3478327989578247f * d * f16; - g16 += -0.3478327989578247f * d * f16; - g17 += -0.08695819973945618f * d * f17; - g17 += -0.08695819973945618f * d * f17; - g18 += 0.09938079863786697f * d * f18; - g18 += 0.09938079863786697f * d * f18; - g19 += 0.21118420362472534f * d * f19; - g19 += 0.21118420362472534f * d * f19; - g20 += 0.24845199286937714f * d * f20; - g20 += 0.24845199286937714f * d * f20; - g21 += 0.21118420362472534f * d * f21; - g21 += 0.21118420362472534f * d * f21; - g22 += 0.09938079863786697f * d * f22; - g22 += 0.09938079863786697f * d * f22; - g23 += -0.08695819973945618f * d * f23; - g23 += -0.08695819973945618f * d * f23; - g24 += -0.3478327989578247f * d * f24; - g24 += -0.3478327989578247f * d * f24; - } - { const float d = D(ii, k, 50); - g17 += 0.4260064363479614f * d * f16; - g16 += 0.4260064363479614f * d * f17; - g18 += 0.4025382399559021f * d * f17; - g17 += 0.4025382399559021f * d * f18; - g19 += 0.273861289024353f * d * f18; - g18 += 0.273861289024353f * d * f19; - g21 += 0.13608276844024658f * d * f20; - g20 += 0.13608276844024658f * d * f21; - g22 += 0.273861289024353f * d * f21; - g21 += 0.273861289024353f * d * f22; - g23 += 0.4025382399559021f * d * f22; - g22 += 0.4025382399559021f * d * f23; - g24 += 0.4260064363479614f * d * f23; - g23 += 0.4260064363479614f * d * f24; - } - { const float d = D(ii, k, 51); - g18 += -0.22771002352237701f * d * f16; - g16 += -0.22771002352237701f * d * f18; - g19 += -0.34156501293182373f * d * f17; - g17 += -0.34156501293182373f * d * f19; - g19 += -0.21516573429107666f * d * f19; - g19 += -0.21516573429107666f * d * f19; - g22 += -0.5773502588272095f * d * f20; - g20 += -0.5773502588272095f * d * f22; - g21 += 0.21516573429107666f * d * f21; - g21 += 0.21516573429107666f * d * f21; - g23 += -0.34156501293182373f * d * f21; - g21 += -0.34156501293182373f * d * f23; - g24 += -0.22771002352237701f * d * f22; - g22 += -0.22771002352237701f * d * f24; - } - { const float d = D(ii, k, 52); - g4 += 0.6236095428466797f * d * f3; - g3 += 0.6236095428466797f * d * f4; - g8 += 0.6236095428466797f * d * f1; - g1 += 0.6236095428466797f * d * f8; - } - { const float d = D(ii, k, 53); - g4 += 0.5091750621795654f * d * f2; - g2 += 0.5091750621795654f * d * f4; - g5 += 0.5091750621795654f * d * f3; - g3 += 0.5091750621795654f * d * f5; - g7 += 0.5091750621795654f * d * f1; - g1 += 0.5091750621795654f * d * f7; - } - { const float d = D(ii, k, 54); - g4 += -0.16101530194282532f * d * f3; - g3 += -0.16101530194282532f * d * f4; - g5 += 0.6440612077713013f * d * f2; - g2 += 0.6440612077713013f * d * f5; - g6 += 0.5577733516693115f * d * f1; - g1 += 0.5577733516693115f * d * f6; - g8 += 0.16101530194282532f * d * f1; - g1 += 0.16101530194282532f * d * f8; - } - { const float d = D(ii, k, 55); - g5 += -0.3944053053855896f * d * f1; - g1 += -0.3944053053855896f * d * f5; - g6 += 0.6831300258636475f * d * f2; - g2 += 0.6831300258636475f * d * f6; - g7 += -0.3944053053855896f * d * f3; - g3 += -0.3944053053855896f * d * f7; - } - { const float d = D(ii, k, 56); - g4 += -0.16101530194282532f * d * f1; - g1 += -0.16101530194282532f * d * f4; - g6 += 0.5577733516693115f * d * f3; - g3 += 0.5577733516693115f * d * f6; - g7 += 0.6440612077713013f * d * f2; - g2 += 0.6440612077713013f * d * f7; - g8 += -0.16101530194282532f * d * f3; - g3 += -0.16101530194282532f * d * f8; - } - { const float d = D(ii, k, 57); - g5 += -0.5091750621795654f * d * f1; - g1 += -0.5091750621795654f * d * f5; - g7 += 0.5091750621795654f * d * f3; - g3 += 0.5091750621795654f * d * f7; - g8 += 0.5091750621795654f * d * f2; - g2 += 0.5091750621795654f * d * f8; - } - { const float d = D(ii, k, 58); - g4 += -0.6236095428466797f * d * f1; - g1 += -0.6236095428466797f * d * f4; - g8 += 0.6236095428466797f * d * f3; - g3 += 0.6236095428466797f * d * f8; - } - { const float d = D(ii, k, 59); - g9 += 1.0f * d * f0; - g0 += 1.0f * d * f9; - } - { const float d = D(ii, k, 60); - g10 += 1.0f * d * f0; - g0 += 1.0f * d * f10; - } - { const float d = D(ii, k, 61); - g11 += 1.0f * d * f0; - g0 += 1.0f * d * f11; - } - { const float d = D(ii, k, 62); - g12 += 1.0f * d * f0; - g0 += 1.0f * d * f12; - } - { const float d = D(ii, k, 63); - g13 += 1.0f * d * f0; - g0 += 1.0f * d * f13; - } - { const float d = D(ii, k, 64); - g14 += 1.0f * d * f0; - g0 += 1.0f * d * f14; - } - { const float d = D(ii, k, 65); - g15 += 1.0f * d * f0; - g0 += 1.0f * d * f15; - } - { const float d = D(ii, k, 66); - g9 += -0.55901700258255f * d * f6; - g6 += -0.55901700258255f * d * f9; - g10 += 0.3952847123146057f * d * f7; - g7 += 0.3952847123146057f * d * f10; - g11 += -0.25f * d * f8; - g8 += -0.25f * d * f11; - g13 += -0.25f * d * f4; - g4 += -0.25f * d * f13; - g14 += 0.3952847123146057f * d * f5; - g5 += 0.3952847123146057f * d * f14; - } - { const float d = D(ii, k, 67); - g9 += 0.3952847123146057f * d * f7; - g7 += 0.3952847123146057f * d * f9; - g11 += 0.3061862289905548f * d * f7; - g7 += 0.3061862289905548f * d * f11; - g12 += -0.5f * d * f4; - g4 += -0.5f * d * f12; - g13 += 0.3061862289905548f * d * f5; - g5 += 0.3061862289905548f * d * f13; - g15 += -0.3952847123146057f * d * f5; - g5 += -0.3952847123146057f * d * f15; - } - { const float d = D(ii, k, 68); - g9 += -0.25f * d * f8; - g8 += -0.25f * d * f9; - g10 += 0.3061862289905548f * d * f7; - g7 += 0.3061862289905548f * d * f10; - g11 += 0.3354102075099945f * d * f6; - g6 += 0.3354102075099945f * d * f11; - g11 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f11; - g12 += 0.15811388194561005f * d * f5; - g5 += 0.15811388194561005f * d * f12; - g13 += 0.3872983455657959f * d * f4; - g4 += 0.3872983455657959f * d * f13; - g14 += -0.3061862289905548f * d * f5; - g5 += -0.3061862289905548f * d * f14; - g15 += 0.25f * d * f4; - g4 += 0.25f * d * f15; - } - { const float d = D(ii, k, 69); - g10 += -0.5f * d * f4; - g4 += -0.5f * d * f10; - g11 += 0.15811388194561005f * d * f5; - g5 += 0.15811388194561005f * d * f11; - g12 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f12; - g13 += 0.15811388194561005f * d * f7; - g7 += 0.15811388194561005f * d * f13; - g14 += -0.5f * d * f8; - g8 += -0.5f * d * f14; - } - { const float d = D(ii, k, 70); - g9 += -0.25f * d * f4; - g4 += -0.25f * d * f9; - g10 += 0.3061862289905548f * d * f5; - g5 += 0.3061862289905548f * d * f10; - g11 += 0.3872983455657959f * d * f4; - g4 += 0.3872983455657959f * d * f11; - g12 += 0.15811388194561005f * d * f7; - g7 += 0.15811388194561005f * d * f12; - g13 += 0.3354102075099945f * d * f6; - g6 += 0.3354102075099945f * d * f13; - g13 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f13; - g14 += 0.3061862289905548f * d * f7; - g7 += 0.3061862289905548f * d * f14; - g15 += -0.25f * d * f8; - g8 += -0.25f * d * f15; - } - { const float d = D(ii, k, 71); - g9 += 0.3952847123146057f * d * f5; - g5 += 0.3952847123146057f * d * f9; - g11 += -0.3061862289905548f * d * f5; - g5 += -0.3061862289905548f * d * f11; - g12 += -0.5f * d * f8; - g8 += -0.5f * d * f12; - g13 += 0.3061862289905548f * d * f7; - g7 += 0.3061862289905548f * d * f13; - g15 += 0.3952847123146057f * d * f7; - g7 += 0.3952847123146057f * d * f15; - } - { const float d = D(ii, k, 72); - g10 += -0.3952847123146057f * d * f5; - g5 += -0.3952847123146057f * d * f10; - g11 += 0.25f * d * f4; - g4 += 0.25f * d * f11; - g13 += -0.25f * d * f8; - g8 += -0.25f * d * f13; - g14 += 0.3952847123146057f * d * f7; - g7 += 0.3952847123146057f * d * f14; - g15 += -0.55901700258255f * d * f6; - g6 += -0.55901700258255f * d * f15; - } - { const float d = D(ii, k, 73); - g16 += 0.47628965973854065f * d * f3; - g3 += 0.47628965973854065f * d * f16; - g17 += 0.3367876708507538f * d * f2; - g2 += 0.3367876708507538f * d * f17; - g18 += -0.09001028537750244f * d * f3; - g3 += -0.09001028537750244f * d * f18; - g22 += -0.09001028537750244f * d * f1; - g1 += -0.09001028537750244f * d * f22; - g24 += -0.47628965973854065f * d * f1; - g1 += -0.47628965973854065f * d * f24; - } - { const float d = D(ii, k, 74); - g17 += 0.4124789535999298f * d * f3; - g3 += 0.4124789535999298f * d * f17; - g18 += 0.44095855951309204f * d * f2; - g2 += 0.44095855951309204f * d * f18; - g19 += -0.15590238571166992f * d * f3; - g3 += -0.15590238571166992f * d * f19; - g21 += -0.15590238571166992f * d * f1; - g1 += -0.15590238571166992f * d * f21; - g23 += -0.4124789535999298f * d * f1; - g1 += -0.4124789535999298f * d * f23; - } - { const float d = D(ii, k, 75); - g18 += 0.3486083447933197f * d * f3; - g3 += 0.3486083447933197f * d * f18; - g19 += 0.4930066466331482f * d * f2; - g2 += 0.4930066466331482f * d * f19; - g20 += -0.31180477142333984f * d * f1; - g1 += -0.31180477142333984f * d * f20; - g22 += -0.3486083447933197f * d * f1; - g1 += -0.3486083447933197f * d * f22; - } - { const float d = D(ii, k, 76); - g19 += 0.4025382399559021f * d * f1; - g1 += 0.4025382399559021f * d * f19; - g20 += 0.5091750621795654f * d * f2; - g2 += 0.5091750621795654f * d * f20; - g21 += 0.4025382399559021f * d * f3; - g3 += 0.4025382399559021f * d * f21; - } - { const float d = D(ii, k, 77); - g18 += 0.3486083447933197f * d * f1; - g1 += 0.3486083447933197f * d * f18; - g20 += -0.31180477142333984f * d * f3; - g3 += -0.31180477142333984f * d * f20; - g21 += 0.4930066466331482f * d * f2; - g2 += 0.4930066466331482f * d * f21; - g22 += 0.3486083447933197f * d * f3; - g3 += 0.3486083447933197f * d * f22; - } - { const float d = D(ii, k, 78); - g17 += 0.4124789535999298f * d * f1; - g1 += 0.4124789535999298f * d * f17; - g19 += 0.15590238571166992f * d * f1; - g1 += 0.15590238571166992f * d * f19; - g21 += -0.15590238571166992f * d * f3; - g3 += -0.15590238571166992f * d * f21; - g22 += 0.44095855951309204f * d * f2; - g2 += 0.44095855951309204f * d * f22; - g23 += 0.4124789535999298f * d * f3; - g3 += 0.4124789535999298f * d * f23; - } - { const float d = D(ii, k, 79); - g16 += 0.47628965973854065f * d * f1; - g1 += 0.47628965973854065f * d * f16; - g18 += 0.09001028537750244f * d * f1; - g1 += 0.09001028537750244f * d * f18; - g22 += -0.09001028537750244f * d * f3; - g3 += -0.09001028537750244f * d * f22; - g23 += 0.3367876708507538f * d * f2; - g2 += 0.3367876708507538f * d * f23; - g24 += 0.47628965973854065f * d * f3; - g3 += 0.47628965973854065f * d * f24; - } - { const float d = D(ii, k, 80); - g16 += -0.2545875310897827f * d * f13; - g13 += -0.2545875310897827f * d * f16; - g17 += -0.44095855951309204f * d * f12; - g12 += -0.44095855951309204f * d * f17; - g18 += 0.28867512941360474f * d * f13; - g13 += 0.28867512941360474f * d * f18; - g19 += -0.21516573429107666f * d * f14; - g14 += -0.21516573429107666f * d * f19; - g20 += 0.1666666716337204f * d * f9; - g9 += 0.1666666716337204f * d * f20; - g21 += -0.21516573429107666f * d * f10; - g10 += -0.21516573429107666f * d * f21; - g22 += 0.28867512941360474f * d * f11; - g11 += 0.28867512941360474f * d * f22; - g24 += 0.2545875310897827f * d * f11; - g11 += 0.2545875310897827f * d * f24; - } - { const float d = D(ii, k, 81); - g16 += 0.32867109775543213f * d * f14; - g14 += 0.32867109775543213f * d * f16; - g17 += 0.146986186504364f * d * f13; - g13 += 0.146986186504364f * d * f17; - g18 += -0.09622504562139511f * d * f12; - g12 += -0.09622504562139511f * d * f18; - g19 += 0.2222222238779068f * d * f13; - g13 += 0.2222222238779068f * d * f19; - g19 += 0.21516573429107666f * d * f15; - g15 += 0.21516573429107666f * d * f19; - g20 += -0.3888888955116272f * d * f10; - g10 += -0.3888888955116272f * d * f20; - g21 += -0.21516573429107666f * d * f9; - g9 += -0.21516573429107666f * d * f21; - g21 += 0.2222222238779068f * d * f11; - g11 += 0.2222222238779068f * d * f21; - g23 += -0.146986186504364f * d * f11; - g11 += -0.146986186504364f * d * f23; - g24 += -0.32867109775543213f * d * f10; - g10 += -0.32867109775543213f * d * f24; - } - { const float d = D(ii, k, 82); - g16 += -0.2545875310897827f * d * f15; - g15 += -0.2545875310897827f * d * f16; - g17 += 0.146986186504364f * d * f14; - g14 += 0.146986186504364f * d * f17; - g18 += 0.24845199286937714f * d * f13; - g13 += 0.24845199286937714f * d * f18; - g18 += -0.28867512941360474f * d * f15; - g15 += -0.28867512941360474f * d * f18; - g19 += 0.21516573429107666f * d * f12; - g12 += 0.21516573429107666f * d * f19; - g19 += -0.2222222238779068f * d * f14; - g14 += -0.2222222238779068f * d * f19; - g20 += 0.0555555559694767f * d * f11; - g11 += 0.0555555559694767f * d * f20; - g21 += 0.2222222238779068f * d * f10; - g10 += 0.2222222238779068f * d * f21; - g22 += 0.28867512941360474f * d * f9; - g9 += 0.28867512941360474f * d * f22; - g22 += -0.24845199286937714f * d * f11; - g11 += -0.24845199286937714f * d * f22; - g23 += -0.146986186504364f * d * f10; - g10 += -0.146986186504364f * d * f23; - g24 += 0.2545875310897827f * d * f9; - g9 += 0.2545875310897827f * d * f24; - } - { const float d = D(ii, k, 83); - g17 += -0.44095855951309204f * d * f9; - g9 += -0.44095855951309204f * d * f17; - g18 += -0.09622504562139511f * d * f10; - g10 += -0.09622504562139511f * d * f18; - g19 += 0.21516573429107666f * d * f11; - g11 += 0.21516573429107666f * d * f19; - g20 += 0.3333333432674408f * d * f12; - g12 += 0.3333333432674408f * d * f20; - g21 += 0.21516573429107666f * d * f13; - g13 += 0.21516573429107666f * d * f21; - g22 += -0.09622504562139511f * d * f14; - g14 += -0.09622504562139511f * d * f22; - g23 += -0.44095855951309204f * d * f15; - g15 += -0.44095855951309204f * d * f23; - } - { const float d = D(ii, k, 84); - g16 += -0.2545875310897827f * d * f9; - g9 += -0.2545875310897827f * d * f16; - g17 += 0.146986186504364f * d * f10; - g10 += 0.146986186504364f * d * f17; - g18 += 0.28867512941360474f * d * f9; - g9 += 0.28867512941360474f * d * f18; - g18 += 0.24845199286937714f * d * f11; - g11 += 0.24845199286937714f * d * f18; - g19 += 0.2222222238779068f * d * f10; - g10 += 0.2222222238779068f * d * f19; - g20 += 0.0555555559694767f * d * f13; - g13 += 0.0555555559694767f * d * f20; - g21 += 0.21516573429107666f * d * f12; - g12 += 0.21516573429107666f * d * f21; - g21 += 0.2222222238779068f * d * f14; - g14 += 0.2222222238779068f * d * f21; - g22 += 0.24845199286937714f * d * f13; - g13 += 0.24845199286937714f * d * f22; - g22 += 0.28867512941360474f * d * f15; - g15 += 0.28867512941360474f * d * f22; - g23 += 0.146986186504364f * d * f14; - g14 += 0.146986186504364f * d * f23; - g24 += -0.2545875310897827f * d * f15; - g15 += -0.2545875310897827f * d * f24; - } - { const float d = D(ii, k, 85); - g16 += 0.32867109775543213f * d * f10; - g10 += 0.32867109775543213f * d * f16; - g17 += 0.146986186504364f * d * f11; - g11 += 0.146986186504364f * d * f17; - g19 += -0.21516573429107666f * d * f9; - g9 += -0.21516573429107666f * d * f19; - g19 += -0.2222222238779068f * d * f11; - g11 += -0.2222222238779068f * d * f19; - g20 += -0.3888888955116272f * d * f14; - g14 += -0.3888888955116272f * d * f20; - g21 += 0.2222222238779068f * d * f13; - g13 += 0.2222222238779068f * d * f21; - g21 += -0.21516573429107666f * d * f15; - g15 += -0.21516573429107666f * d * f21; - g22 += -0.09622504562139511f * d * f12; - g12 += -0.09622504562139511f * d * f22; - g23 += 0.146986186504364f * d * f13; - g13 += 0.146986186504364f * d * f23; - g24 += 0.32867109775543213f * d * f14; - g14 += 0.32867109775543213f * d * f24; - } - { const float d = D(ii, k, 86); - g16 += -0.2545875310897827f * d * f11; - g11 += -0.2545875310897827f * d * f16; - g18 += -0.28867512941360474f * d * f11; - g11 += -0.28867512941360474f * d * f18; - g19 += 0.21516573429107666f * d * f10; - g10 += 0.21516573429107666f * d * f19; - g20 += 0.1666666716337204f * d * f15; - g15 += 0.1666666716337204f * d * f20; - g21 += -0.21516573429107666f * d * f14; - g14 += -0.21516573429107666f * d * f21; - g22 += 0.28867512941360474f * d * f13; - g13 += 0.28867512941360474f * d * f22; - g23 += -0.44095855951309204f * d * f12; - g12 += -0.44095855951309204f * d * f23; - g24 += -0.2545875310897827f * d * f13; - g13 += -0.2545875310897827f * d * f24; - } - { const float d = D(ii, k, 87); - g8 += 1.1832159757614136f * d * f4; - g4 += 1.1832159757614136f * d * f8; - } - { const float d = D(ii, k, 88); - g7 += 0.8366600275039673f * d * f4; - g4 += 0.8366600275039673f * d * f7; - g8 += 0.8366600275039673f * d * f5; - g5 += 0.8366600275039673f * d * f8; - } - { const float d = D(ii, k, 89); - g6 += 0.7745966911315918f * d * f4; - g4 += 0.7745966911315918f * d * f6; - g7 += 0.8944271802902222f * d * f5; - g5 += 0.8944271802902222f * d * f7; - } - { const float d = D(ii, k, 90); - g7 += -0.3162277638912201f * d * f4; - g4 += -0.3162277638912201f * d * f7; - g6 += 1.095445156097412f * d * f5; - g5 += 1.095445156097412f * d * f6; - g8 += 0.3162277638912201f * d * f5; - g5 += 0.3162277638912201f * d * f8; - } - { const float d = D(ii, k, 91); - g4 += 0.10000000149011612f * d * f4; - g4 += 0.10000000149011612f * d * f4; - g5 += -0.4000000059604645f * d * f5; - g5 += -0.4000000059604645f * d * f5; - g6 += 0.6000000238418579f * d * f6; - g6 += 0.6000000238418579f * d * f6; - g7 += -0.4000000059604645f * d * f7; - g7 += -0.4000000059604645f * d * f7; - g8 += 0.10000000149011612f * d * f8; - g8 += 0.10000000149011612f * d * f8; - } - { const float d = D(ii, k, 92); - g5 += -0.3162277638912201f * d * f4; - g4 += -0.3162277638912201f * d * f5; - g7 += 1.095445156097412f * d * f6; - g6 += 1.095445156097412f * d * f7; - g8 += -0.3162277638912201f * d * f7; - g7 += -0.3162277638912201f * d * f8; - } - { const float d = D(ii, k, 93); - g5 += -0.4472135901451111f * d * f5; - g5 += -0.4472135901451111f * d * f5; - g8 += 0.7745966911315918f * d * f6; - g6 += 0.7745966911315918f * d * f8; - g7 += 0.4472135901451111f * d * f7; - g7 += 0.4472135901451111f * d * f7; - } - { const float d = D(ii, k, 94); - g5 += -0.8366600275039673f * d * f4; - g4 += -0.8366600275039673f * d * f5; - g8 += 0.8366600275039673f * d * f7; - g7 += 0.8366600275039673f * d * f8; - } - { const float d = D(ii, k, 95); - g4 += -0.5916079878807068f * d * f4; - g4 += -0.5916079878807068f * d * f4; - g8 += 0.5916079878807068f * d * f8; - g8 += 0.5916079878807068f * d * f8; - } - { const float d = D(ii, k, 96); - g9 += 0.6123724579811096f * d * f3; - g3 += 0.6123724579811096f * d * f9; - g15 += 0.6123724579811096f * d * f1; - g1 += 0.6123724579811096f * d * f15; - } - { const float d = D(ii, k, 97); - g9 += 0.4330126941204071f * d * f2; - g2 += 0.4330126941204071f * d * f9; - g10 += 0.5303300619125366f * d * f3; - g3 += 0.5303300619125366f * d * f10; - g14 += 0.5303300619125366f * d * f1; - g1 += 0.5303300619125366f * d * f14; - } - { const float d = D(ii, k, 98); - g9 += -0.1157275140285492f * d * f3; - g3 += -0.1157275140285492f * d * f9; - g10 += 0.5669466853141785f * d * f2; - g2 += 0.5669466853141785f * d * f10; - g11 += 0.4482107162475586f * d * f3; - g3 += 0.4482107162475586f * d * f11; - g13 += 0.4482107162475586f * d * f1; - g1 += 0.4482107162475586f * d * f13; - g15 += 0.1157275140285492f * d * f1; - g1 += 0.1157275140285492f * d * f15; - } - { const float d = D(ii, k, 99); - g10 += -0.20044593513011932f * d * f3; - g3 += -0.20044593513011932f * d * f10; - g11 += 0.6338657140731812f * d * f2; - g2 += 0.6338657140731812f * d * f11; - g12 += 0.5175491571426392f * d * f1; - g1 += 0.5175491571426392f * d * f12; - g14 += 0.20044593513011932f * d * f1; - g1 += 0.20044593513011932f * d * f14; - } - { const float d = D(ii, k, 100); - g11 += -0.40089187026023865f * d * f1; - g1 += -0.40089187026023865f * d * f11; - g12 += 0.6546536684036255f * d * f2; - g2 += 0.6546536684036255f * d * f12; - g13 += -0.40089187026023865f * d * f3; - g3 += -0.40089187026023865f * d * f13; - } - { const float d = D(ii, k, 101); - g10 += -0.20044593513011932f * d * f1; - g1 += -0.20044593513011932f * d * f10; - g12 += 0.5175491571426392f * d * f3; - g3 += 0.5175491571426392f * d * f12; - g13 += 0.6338657140731812f * d * f2; - g2 += 0.6338657140731812f * d * f13; - g14 += -0.20044593513011932f * d * f3; - g3 += -0.20044593513011932f * d * f14; - } - { const float d = D(ii, k, 102); - g9 += -0.1157275140285492f * d * f1; - g1 += -0.1157275140285492f * d * f9; - g11 += -0.4482107162475586f * d * f1; - g1 += -0.4482107162475586f * d * f11; - g13 += 0.4482107162475586f * d * f3; - g3 += 0.4482107162475586f * d * f13; - g14 += 0.5669466853141785f * d * f2; - g2 += 0.5669466853141785f * d * f14; - g15 += -0.1157275140285492f * d * f3; - g3 += -0.1157275140285492f * d * f15; - } - { const float d = D(ii, k, 103); - g10 += -0.5303300619125366f * d * f1; - g1 += -0.5303300619125366f * d * f10; - g14 += 0.5303300619125366f * d * f3; - g3 += 0.5303300619125366f * d * f14; - g15 += 0.4330126941204071f * d * f2; - g2 += 0.4330126941204071f * d * f15; - } - { const float d = D(ii, k, 104); - g9 += -0.6123724579811096f * d * f1; - g1 += -0.6123724579811096f * d * f9; - g15 += 0.6123724579811096f * d * f3; - g3 += 0.6123724579811096f * d * f15; - } - { const float d = D(ii, k, 105); - g13 += -0.6546536684036255f * d * f9; - g9 += -0.6546536684036255f * d * f13; - g14 += 0.8451542258262634f * d * f10; - g10 += 0.8451542258262634f * d * f14; - g15 += -0.6546536684036255f * d * f11; - g11 += -0.6546536684036255f * d * f15; - } - { const float d = D(ii, k, 106); - g12 += -1.133893370628357f * d * f9; - g9 += -1.133893370628357f * d * f12; - g13 += 0.37796446681022644f * d * f10; - g10 += 0.37796446681022644f * d * f13; - g14 += 0.37796446681022644f * d * f11; - g11 += 0.37796446681022644f * d * f14; - } - { const float d = D(ii, k, 107); - g13 += 0.7423074841499329f * d * f9; - g9 += 0.7423074841499329f * d * f13; - g12 += -0.2474358230829239f * d * f10; - g10 += -0.2474358230829239f * d * f12; - g13 += 0.6388765573501587f * d * f11; - g11 += 0.6388765573501587f * d * f13; - g15 += -0.7423074841499329f * d * f11; - g11 += -0.7423074841499329f * d * f15; - } - { const float d = D(ii, k, 108); - g14 += -0.5532833337783813f * d * f9; - g9 += -0.5532833337783813f * d * f14; - g13 += 0.5714285969734192f * d * f10; - g10 += 0.5714285969734192f * d * f13; - g15 += 0.5532833337783813f * d * f10; - g10 += 0.5532833337783813f * d * f15; - g12 += 0.5532833337783813f * d * f11; - g11 += 0.5532833337783813f * d * f12; - g14 += -0.5714285969734192f * d * f11; - g11 += -0.5714285969734192f * d * f14; - } - { const float d = D(ii, k, 109); - g9 += 0.2142857164144516f * d * f9; - g9 += 0.2142857164144516f * d * f9; - g10 += -0.5f * d * f10; - g10 += -0.5f * d * f10; - g11 += 0.0714285746216774f * d * f11; - g11 += 0.0714285746216774f * d * f11; - g12 += 0.4285714328289032f * d * f12; - g12 += 0.4285714328289032f * d * f12; - g13 += 0.0714285746216774f * d * f13; - g13 += 0.0714285746216774f * d * f13; - g14 += -0.5f * d * f14; - g14 += -0.5f * d * f14; - g15 += 0.2142857164144516f * d * f15; - g15 += 0.2142857164144516f * d * f15; - } - { const float d = D(ii, k, 110); - g10 += -0.5532833337783813f * d * f9; - g9 += -0.5532833337783813f * d * f10; - g11 += 0.5714285969734192f * d * f10; - g10 += 0.5714285969734192f * d * f11; - g13 += 0.5532833337783813f * d * f12; - g12 += 0.5532833337783813f * d * f13; - g14 += 0.5714285969734192f * d * f13; - g13 += 0.5714285969734192f * d * f14; - g15 += -0.5532833337783813f * d * f14; - g14 += -0.5532833337783813f * d * f15; - } - { const float d = D(ii, k, 111); - g11 += 0.7423074841499329f * d * f9; - g9 += 0.7423074841499329f * d * f11; - g11 += -0.31943827867507935f * d * f11; - g11 += -0.31943827867507935f * d * f11; - g14 += -0.2474358230829239f * d * f12; - g12 += -0.2474358230829239f * d * f14; - g13 += 0.31943827867507935f * d * f13; - g13 += 0.31943827867507935f * d * f13; - g15 += 0.7423074841499329f * d * f13; - g13 += 0.7423074841499329f * d * f15; - } - { const float d = D(ii, k, 112); - g11 += -0.37796446681022644f * d * f10; - g10 += -0.37796446681022644f * d * f11; - g15 += -1.133893370628357f * d * f12; - g12 += -1.133893370628357f * d * f15; - g14 += 0.37796446681022644f * d * f13; - g13 += 0.37796446681022644f * d * f14; - } - { const float d = D(ii, k, 113); - g11 += 0.6546536684036255f * d * f9; - g9 += 0.6546536684036255f * d * f11; - g10 += -0.4225771129131317f * d * f10; - g10 += -0.4225771129131317f * d * f10; - g15 += -0.6546536684036255f * d * f13; - g13 += -0.6546536684036255f * d * f15; - g14 += 0.4225771129131317f * d * f14; - g14 += 0.4225771129131317f * d * f14; - } - { const float d = D(ii, k, 114); - g16 += 1.0f * d * f0; - g0 += 1.0f * d * f16; - } - { const float d = D(ii, k, 115); - g17 += 1.0f * d * f0; - g0 += 1.0f * d * f17; - } - { const float d = D(ii, k, 116); - g18 += 1.0f * d * f0; - g0 += 1.0f * d * f18; - } - { const float d = D(ii, k, 117); - g19 += 1.0f * d * f0; - g0 += 1.0f * d * f19; - } - { const float d = D(ii, k, 118); - g20 += 1.0f * d * f0; - g0 += 1.0f * d * f20; - } - { const float d = D(ii, k, 119); - g21 += 1.0f * d * f0; - g0 += 1.0f * d * f21; - } - { const float d = D(ii, k, 120); - g22 += 1.0f * d * f0; - g0 += 1.0f * d * f22; - } - { const float d = D(ii, k, 121); - g23 += 1.0f * d * f0; - g0 += 1.0f * d * f23; - } - { const float d = D(ii, k, 122); - g24 += 1.0f * d * f0; - g0 += 1.0f * d * f24; - } - { const float d = D(ii, k, 123); - g16 += -0.6260990500450134f * d * f6; - g6 += -0.6260990500450134f * d * f16; - g17 += 0.38340580463409424f * d * f7; - g7 += 0.38340580463409424f * d * f17; - g18 += -0.20493902266025543f * d * f8; - g8 += -0.20493902266025543f * d * f18; - g22 += -0.20493902266025543f * d * f4; - g4 += -0.20493902266025543f * d * f22; - g23 += 0.38340580463409424f * d * f5; - g5 += 0.38340580463409424f * d * f23; - } - { const float d = D(ii, k, 124); - g16 += 0.38340580463409424f * d * f7; - g7 += 0.38340580463409424f * d * f16; - g17 += -0.15652476251125336f * d * f6; - g6 += -0.15652476251125336f * d * f17; - g18 += 0.36228442192077637f * d * f7; - g7 += 0.36228442192077637f * d * f18; - g19 += -0.30740851163864136f * d * f8; - g8 += -0.30740851163864136f * d * f19; - g21 += -0.30740851163864136f * d * f4; - g4 += -0.30740851163864136f * d * f21; - g22 += 0.36228442192077637f * d * f5; - g5 += 0.36228442192077637f * d * f22; - g24 += -0.38340580463409424f * d * f5; - g5 += -0.38340580463409424f * d * f24; - } - { const float d = D(ii, k, 125); - g16 += -0.20493902266025543f * d * f8; - g8 += -0.20493902266025543f * d * f16; - g17 += 0.36228442192077637f * d * f7; - g7 += 0.36228442192077637f * d * f17; - g18 += 0.17888544499874115f * d * f6; - g6 += 0.17888544499874115f * d * f18; - g19 += 0.24647514522075653f * d * f7; - g7 += 0.24647514522075653f * d * f19; - g20 += -0.5196152329444885f * d * f4; - g4 += -0.5196152329444885f * d * f20; - g21 += 0.24647514522075653f * d * f5; - g5 += 0.24647514522075653f * d * f21; - g23 += -0.36228442192077637f * d * f5; - g5 += -0.36228442192077637f * d * f23; - g24 += 0.20493902266025543f * d * f4; - g4 += 0.20493902266025543f * d * f24; - } - { const float d = D(ii, k, 126); - g17 += -0.30740851163864136f * d * f8; - g8 += -0.30740851163864136f * d * f17; - g18 += 0.24647514522075653f * d * f7; - g7 += 0.24647514522075653f * d * f18; - g19 += 0.3801315426826477f * d * f6; - g6 += 0.3801315426826477f * d * f19; - g19 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f19; - g20 += 0.12247448414564133f * d * f5; - g5 += 0.12247448414564133f * d * f20; - g21 += 0.3872983455657959f * d * f4; - g4 += 0.3872983455657959f * d * f21; - g22 += -0.24647514522075653f * d * f5; - g5 += -0.24647514522075653f * d * f22; - g23 += 0.30740851163864136f * d * f4; - g4 += 0.30740851163864136f * d * f23; - } - { const float d = D(ii, k, 127); - g18 += -0.5196152329444885f * d * f4; - g4 += -0.5196152329444885f * d * f18; - g19 += 0.12247448414564133f * d * f5; - g5 += 0.12247448414564133f * d * f19; - g20 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f20; - g21 += 0.12247448414564133f * d * f7; - g7 += 0.12247448414564133f * d * f21; - g22 += -0.5196152329444885f * d * f8; - g8 += -0.5196152329444885f * d * f22; - } - { const float d = D(ii, k, 128); - g17 += -0.30740851163864136f * d * f4; - g4 += -0.30740851163864136f * d * f17; - g18 += 0.24647514522075653f * d * f5; - g5 += 0.24647514522075653f * d * f18; - g19 += 0.3872983455657959f * d * f4; - g4 += 0.3872983455657959f * d * f19; - g20 += 0.12247448414564133f * d * f7; - g7 += 0.12247448414564133f * d * f20; - g21 += 0.3801315426826477f * d * f6; - g6 += 0.3801315426826477f * d * f21; - g21 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f21; - g22 += 0.24647514522075653f * d * f7; - g7 += 0.24647514522075653f * d * f22; - g23 += -0.30740851163864136f * d * f8; - g8 += -0.30740851163864136f * d * f23; - } - { const float d = D(ii, k, 129); - g16 += -0.20493902266025543f * d * f4; - g4 += -0.20493902266025543f * d * f16; - g17 += 0.36228442192077637f * d * f5; - g5 += 0.36228442192077637f * d * f17; - g19 += -0.24647514522075653f * d * f5; - g5 += -0.24647514522075653f * d * f19; - g20 += -0.5196152329444885f * d * f8; - g8 += -0.5196152329444885f * d * f20; - g21 += 0.24647514522075653f * d * f7; - g7 += 0.24647514522075653f * d * f21; - g22 += 0.17888544499874115f * d * f6; - g6 += 0.17888544499874115f * d * f22; - g23 += 0.36228442192077637f * d * f7; - g7 += 0.36228442192077637f * d * f23; - g24 += -0.20493902266025543f * d * f8; - g8 += -0.20493902266025543f * d * f24; - } - { const float d = D(ii, k, 130); - g16 += 0.38340580463409424f * d * f5; - g5 += 0.38340580463409424f * d * f16; - g18 += -0.36228442192077637f * d * f5; - g5 += -0.36228442192077637f * d * f18; - g19 += 0.30740851163864136f * d * f4; - g4 += 0.30740851163864136f * d * f19; - g21 += -0.30740851163864136f * d * f8; - g8 += -0.30740851163864136f * d * f21; - g22 += 0.36228442192077637f * d * f7; - g7 += 0.36228442192077637f * d * f22; - g23 += -0.15652476251125336f * d * f6; - g6 += -0.15652476251125336f * d * f23; - g24 += 0.38340580463409424f * d * f7; - g7 += 0.38340580463409424f * d * f24; - } - { const float d = D(ii, k, 131); - g17 += -0.38340580463409424f * d * f5; - g5 += -0.38340580463409424f * d * f17; - g18 += 0.20493902266025543f * d * f4; - g4 += 0.20493902266025543f * d * f18; - g22 += -0.20493902266025543f * d * f8; - g8 += -0.20493902266025543f * d * f22; - g23 += 0.38340580463409424f * d * f7; - g7 += 0.38340580463409424f * d * f23; - g24 += -0.6260990500450134f * d * f6; - g6 += -0.6260990500450134f * d * f24; - } - { const float d = D(ii, k, 132); - g20 += 0.5185185074806213f * d * f16; - g16 += 0.5185185074806213f * d * f20; - g21 += -0.5797213315963745f * d * f17; - g17 += -0.5797213315963745f * d * f21; - g22 += 0.6573421955108643f * d * f18; - g18 += 0.6573421955108643f * d * f22; - g23 += -0.5797213315963745f * d * f19; - g19 += -0.5797213315963745f * d * f23; - } - { const float d = D(ii, k, 133); - g21 += -0.5797213315963745f * d * f16; - g16 += -0.5797213315963745f * d * f21; - g20 += -0.7777777910232544f * d * f17; - g17 += -0.7777777910232544f * d * f20; - g21 += 0.21911406517028809f * d * f18; - g18 += 0.21911406517028809f * d * f21; - g22 += 0.21911406517028809f * d * f19; - g19 += 0.21911406517028809f * d * f22; - g24 += 0.5797213315963745f * d * f19; - g19 += 0.5797213315963745f * d * f24; - } - { const float d = D(ii, k, 134); - g22 += 0.6573421955108643f * d * f16; - g16 += 0.6573421955108643f * d * f22; - g21 += 0.21911406517028809f * d * f17; - g17 += 0.21911406517028809f * d * f21; - g20 += -0.40740740299224854f * d * f18; - g18 += -0.40740740299224854f * d * f20; - g24 += -0.6573421955108643f * d * f18; - g18 += -0.6573421955108643f * d * f24; - g21 += 0.4969039857387543f * d * f19; - g19 += 0.4969039857387543f * d * f21; - g23 += -0.21911406517028809f * d * f19; - g19 += -0.21911406517028809f * d * f23; - } - { const float d = D(ii, k, 135); - g23 += -0.5797213315963745f * d * f16; - g16 += -0.5797213315963745f * d * f23; - g22 += 0.21911406517028809f * d * f17; - g17 += 0.21911406517028809f * d * f22; - g24 += 0.5797213315963745f * d * f17; - g17 += 0.5797213315963745f * d * f24; - g21 += 0.4969039857387543f * d * f18; - g18 += 0.4969039857387543f * d * f21; - g23 += -0.21911406517028809f * d * f18; - g18 += -0.21911406517028809f * d * f23; - g20 += 0.3333333432674408f * d * f19; - g19 += 0.3333333432674408f * d * f20; - g22 += -0.4969039857387543f * d * f19; - g19 += -0.4969039857387543f * d * f22; - } - { const float d = D(ii, k, 136); - g16 += 0.25925925374031067f * d * f16; - g16 += 0.25925925374031067f * d * f16; - g17 += -0.3888888955116272f * d * f17; - g17 += -0.3888888955116272f * d * f17; - g18 += -0.20370370149612427f * d * f18; - g18 += -0.20370370149612427f * d * f18; - g19 += 0.1666666716337204f * d * f19; - g19 += 0.1666666716337204f * d * f19; - g20 += 0.3333333432674408f * d * f20; - g20 += 0.3333333432674408f * d * f20; - g21 += 0.1666666716337204f * d * f21; - g21 += 0.1666666716337204f * d * f21; - g22 += -0.20370370149612427f * d * f22; - g22 += -0.20370370149612427f * d * f22; - g23 += -0.3888888955116272f * d * f23; - g23 += -0.3888888955116272f * d * f23; - g24 += 0.25925925374031067f * d * f24; - g24 += 0.25925925374031067f * d * f24; - } - { const float d = D(ii, k, 137); - g17 += -0.5797213315963745f * d * f16; - g16 += -0.5797213315963745f * d * f17; - g18 += 0.21911406517028809f * d * f17; - g17 += 0.21911406517028809f * d * f18; - g19 += 0.4969039857387543f * d * f18; - g18 += 0.4969039857387543f * d * f19; - g21 += 0.3333333432674408f * d * f20; - g20 += 0.3333333432674408f * d * f21; - g22 += 0.4969039857387543f * d * f21; - g21 += 0.4969039857387543f * d * f22; - g23 += 0.21911406517028809f * d * f22; - g22 += 0.21911406517028809f * d * f23; - g24 += -0.5797213315963745f * d * f23; - g23 += -0.5797213315963745f * d * f24; - } - { const float d = D(ii, k, 138); - g18 += 0.6573421955108643f * d * f16; - g16 += 0.6573421955108643f * d * f18; - g19 += 0.21911406517028809f * d * f17; - g17 += 0.21911406517028809f * d * f19; - g19 += -0.24845199286937714f * d * f19; - g19 += -0.24845199286937714f * d * f19; - g22 += -0.40740740299224854f * d * f20; - g20 += -0.40740740299224854f * d * f22; - g21 += 0.24845199286937714f * d * f21; - g21 += 0.24845199286937714f * d * f21; - g23 += 0.21911406517028809f * d * f21; - g21 += 0.21911406517028809f * d * f23; - g24 += 0.6573421955108643f * d * f22; - g22 += 0.6573421955108643f * d * f24; - } - { const float d = D(ii, k, 139); - g19 += -0.5797213315963745f * d * f16; - g16 += -0.5797213315963745f * d * f19; - g19 += -0.21911406517028809f * d * f18; - g18 += -0.21911406517028809f * d * f19; - g23 += -0.7777777910232544f * d * f20; - g20 += -0.7777777910232544f * d * f23; - g22 += 0.21911406517028809f * d * f21; - g21 += 0.21911406517028809f * d * f22; - g24 += -0.5797213315963745f * d * f21; - g21 += -0.5797213315963745f * d * f24; - } - { const float d = D(ii, k, 140); - g19 += 0.5797213315963745f * d * f17; - g17 += 0.5797213315963745f * d * f19; - g18 += -0.32867109775543213f * d * f18; - g18 += -0.32867109775543213f * d * f18; - g24 += 0.5185185074806213f * d * f20; - g20 += 0.5185185074806213f * d * f24; - g23 += -0.5797213315963745f * d * f21; - g21 += -0.5797213315963745f * d * f23; - g22 += 0.32867109775543213f * d * f22; - g22 += 0.32867109775543213f * d * f22; - } - dF(ii, k, 0) = g0; - dF(ii, k, 1) = g1; - dF(ii, k, 2) = g2; - dF(ii, k, 3) = g3; - dF(ii, k, 4) = g4; - dF(ii, k, 5) = g5; - dF(ii, k, 6) = g6; - dF(ii, k, 7) = g7; - dF(ii, k, 8) = g8; - dF(ii, k, 9) = g9; - dF(ii, k, 10) = g10; - dF(ii, k, 11) = g11; - dF(ii, k, 12) = g12; - dF(ii, k, 13) = g13; - dF(ii, k, 14) = g14; - dF(ii, k, 15) = g15; - dF(ii, k, 16) = g16; - dF(ii, k, 17) = g17; - dF(ii, k, 18) = g18; - dF(ii, k, 19) = g19; - dF(ii, k, 20) = g20; - dF(ii, k, 21) = g21; - dF(ii, k, 22) = g22; - dF(ii, k, 23) = g23; - dF(ii, k, 24) = g24; - } -} - -constexpr int nt_AAA = 547; -constexpr int tab_AAA[547][3] = {{0,0,0}, {1,0,1}, {8,1,2}, {9,2,2}, {10,3,2}, {2,0,3}, {27,4,4}, {28,5,4}, {29,6,4}, {30,7,4}, {31,8,4}, {11,1,5}, {12,2,5}, {13,3,5}, {3,0,6}, {37,4,7}, {38,5,7}, {39,6,7}, {40,7,7}, {41,8,7}, {42,4,8}, {43,5,8}, {44,6,8}, {45,7,8}, {46,8,8}, {14,1,9}, {15,2,9}, {16,3,9}, {80,9,10}, {81,10,10}, {82,11,10}, {83,12,10}, {84,13,10}, {85,14,10}, {86,15,10}, {4,0,11}, {47,4,12}, {48,5,12}, {49,6,12}, {50,7,12}, {51,8,12}, {132,16,13}, {133,17,13}, {134,18,13}, {135,19,13}, {136,20,13}, {137,21,13}, {138,22,13}, {139,23,13}, {140,24,13}, {0,1,14}, {0,2,15}, {0,3,16}, {1,1,17}, {1,2,18}, {1,3,19}, {8,0,20}, {9,0,21}, {10,0,22}, {8,6,23}, {8,8,23}, {9,5,23}, {10,4,23}, {8,5,24}, {9,6,24}, {10,7,24}, {8,4,25}, {9,7,25}, {10,6,25}, {10,8,25}, {52,8,26}, {53,7,26}, {54,6,26}, {54,8,26}, {55,5,26}, {56,4,26}, {57,5,26}, {58,4,26}, {53,4,27}, {54,5,27}, {55,6,27}, {56,7,27}, {57,8,27}, {52,4,28}, {53,5,28}, {54,4,28}, {55,7,28}, {56,6,28}, {56,8,28}, {57,7,28}, {58,8,28}, {2,1,29}, {2,2,30}, {2,3,31}, {27,3,32}, {28,2,32}, {29,1,32}, {31,1,32}, {28,1,33}, {29,2,33}, {30,3,33}, {27,1,34}, {29,3,34}, {30,2,34}, {31,3,34}, {27,13,35}, {27,15,35}, {28,12,35}, {28,14,35}, {29,11,35}, {30,10,35}, {31,9,35}, {31,11,35}, {27,10,36}, {28,11,36}, {29,12,36}, {30,13,36}, {31,14,36}, {27,9,37}, {27,11,37}, {28,10,37}, {29,13,37}, {30,12,37}, {30,14,37}, {31,13,37}, {31,15,37}, {87,15,38}, {88,14,38}, {89,13,38}, {89,15,38}, {90,12,38}, {90,14,38}, {91,11,38}, {92,10,38}, {93,9,38}, {93,11,38}, {94,10,38}, {95,9,38}, {88,9,39}, {89,10,39}, {90,11,39}, {91,12,39}, {92,13,39}, {93,14,39}, {94,15,39}, {87,9,40}, {88,10,40}, {89,9,40}, {89,11,40}, {90,10,40}, {91,13,40}, {92,12,40}, {92,14,40}, {93,13,40}, {93,15,40}, {94,14,40}, {95,15,40}, {32,3,41}, {33,2,41}, {34,1,41}, {36,1,41}, {33,1,42}, {34,2,42}, {35,3,42}, {32,1,43}, {34,3,43}, {35,2,43}, {36,3,43}, {32,13,44}, {32,15,44}, {33,12,44}, {33,14,44}, {34,11,44}, {35,10,44}, {36,9,44}, {36,11,44}, {32,10,45}, {33,11,45}, {34,12,45}, {35,13,45}, {36,14,45}, {32,9,46}, {32,11,46}, {33,10,46}, {34,13,46}, {35,12,46}, {35,14,46}, {36,13,46}, {36,15,46}, {96,15,47}, {97,14,47}, {98,13,47}, {98,15,47}, {99,12,47}, {99,14,47}, {100,11,47}, {101,10,47}, {102,9,47}, {102,11,47}, {103,10,47}, {104,9,47}, {97,9,48}, {98,10,48}, {99,11,48}, {100,12,48}, {101,13,48}, {102,14,48}, {103,15,48}, {96,9,49}, {97,10,49}, {98,9,49}, {98,11,49}, {99,10,49}, {100,13,49}, {101,12,49}, {101,14,49}, {102,13,49}, {102,15,49}, {103,14,49}, {104,15,49}, {11,0,50}, {12,0,51}, {13,0,52}, {11,6,53}, {11,8,53}, {12,5,53}, {13,4,53}, {11,5,54}, {12,6,54}, {13,7,54}, {11,4,55}, {12,7,55}, {13,6,55}, {13,8,55}, {66,8,56}, {67,7,56}, {68,6,56}, {68,8,56}, {69,5,56}, {70,4,56}, {71,5,56}, {72,4,56}, {67,4,57}, {68,5,57}, {69,6,57}, {70,7,57}, {71,8,57}, {66,4,58}, {67,5,58}, {68,4,58}, {69,7,58}, {70,6,58}, {70,8,58}, {71,7,58}, {72,8,58}, {66,22,59}, {66,24,59}, {67,21,59}, {67,23,59}, {68,20,59}, {68,22,59}, {69,19,59}, {70,18,59}, {71,17,59}, {71,19,59}, {72,16,59}, {72,18,59}, {66,17,60}, {67,18,60}, {68,19,60}, {69,20,60}, {70,21,60}, {71,22,60}, {72,23,60}, {66,16,61}, {66,18,61}, {67,17,61}, {67,19,61}, {68,18,61}, {69,21,61}, {70,20,61}, {70,22,61}, {71,21,61}, {71,23,61}, {72,22,61}, {72,24,61}, {3,1,62}, {3,2,63}, {3,3,64}, {37,3,65}, {38,2,65}, {39,1,65}, {41,1,65}, {38,1,66}, {39,2,66}, {40,3,66}, {37,1,67}, {39,3,67}, {40,2,67}, {41,3,67}, {37,13,68}, {37,15,68}, {38,12,68}, {38,14,68}, {39,11,68}, {40,10,68}, {41,9,68}, {41,11,68}, {37,10,69}, {38,11,69}, {39,12,69}, {40,13,69}, {41,14,69}, {37,9,70}, {37,11,70}, {38,10,70}, {39,13,70}, {40,12,70}, {40,14,70}, {41,13,70}, {41,15,70}, {73,22,71}, {73,24,71}, {74,21,71}, {74,23,71}, {75,20,71}, {75,22,71}, {76,19,71}, {77,18,71}, {78,17,71}, {78,19,71}, {79,16,71}, {79,18,71}, {73,17,72}, {74,18,72}, {75,19,72}, {76,20,72}, {77,21,72}, {78,22,72}, {79,23,72}, {73,16,73}, {73,18,73}, {74,17,73}, {74,19,73}, {75,18,73}, {76,21,73}, {77,20,73}, {77,22,73}, {78,21,73}, {78,23,73}, {79,22,73}, {79,24,73}, {42,3,74}, {43,2,74}, {44,1,74}, {46,1,74}, {43,1,75}, {44,2,75}, {45,3,75}, {42,1,76}, {44,3,76}, {45,2,76}, {46,3,76}, {42,13,77}, {42,15,77}, {43,12,77}, {43,14,77}, {44,11,77}, {45,10,77}, {46,9,77}, {46,11,77}, {42,10,78}, {43,11,78}, {44,12,78}, {45,13,78}, {46,14,78}, {42,9,79}, {42,11,79}, {43,10,79}, {44,13,79}, {45,12,79}, {45,14,79}, {46,13,79}, {46,15,79}, {123,15,80}, {124,14,80}, {125,13,80}, {125,15,80}, {126,12,80}, {126,14,80}, {127,11,80}, {128,10,80}, {129,9,80}, {129,11,80}, {130,10,80}, {131,9,80}, {124,9,81}, {125,10,81}, {126,11,81}, {127,12,81}, {128,13,81}, {129,14,81}, {130,15,81}, {123,9,82}, {124,10,82}, {125,9,82}, {125,11,82}, {126,10,82}, {127,13,82}, {128,12,82}, {128,14,82}, {129,13,82}, {129,15,82}, {130,14,82}, {131,15,82}, {14,0,83}, {15,0,84}, {16,0,85}, {14,6,86}, {14,8,86}, {15,5,86}, {16,4,86}, {14,5,87}, {15,6,87}, {16,7,87}, {14,4,88}, {15,7,88}, {16,6,88}, {16,8,88}, {80,8,89}, {81,7,89}, {82,6,89}, {82,8,89}, {83,5,89}, {84,4,89}, {85,5,89}, {86,4,89}, {81,4,90}, {82,5,90}, {83,6,90}, {84,7,90}, {85,8,90}, {80,4,91}, {81,5,91}, {82,4,91}, {83,7,91}, {84,6,91}, {84,8,91}, {85,7,91}, {86,8,91}, {80,22,92}, {80,24,92}, {81,21,92}, {81,23,92}, {82,20,92}, {82,22,92}, {83,19,92}, {84,18,92}, {85,17,92}, {85,19,92}, {86,16,92}, {86,18,92}, {80,17,93}, {81,18,93}, {82,19,93}, {83,20,93}, {84,21,93}, {85,22,93}, {86,23,93}, {80,16,94}, {80,18,94}, {81,17,94}, {81,19,94}, {82,18,94}, {83,21,94}, {84,20,94}, {84,22,94}, {85,21,94}, {85,23,94}, {86,22,94}, {86,24,94}, {4,1,95}, {4,2,96}, {4,3,97}, {47,3,98}, {48,2,98}, {49,1,98}, {51,1,98}, {48,1,99}, {49,2,99}, {50,3,99}, {47,1,100}, {49,3,100}, {50,2,100}, {51,3,100}, {47,13,101}, {47,15,101}, {48,12,101}, {48,14,101}, {49,11,101}, {50,10,101}, {51,9,101}, {51,11,101}, {47,10,102}, {48,11,102}, {49,12,102}, {50,13,102}, {51,14,102}, {47,9,103}, {47,11,103}, {48,10,103}, {49,13,103}, {50,12,103}, {50,14,103}, {51,13,103}, {51,15,103}, {132,15,104}, {133,14,104}, {134,13,104}, {134,15,104}, {135,12,104}, {135,14,104}, {136,11,104}, {137,10,104}, {138,9,104}, {138,11,104}, {139,10,104}, {140,9,104}, {133,9,105}, {134,10,105}, {135,11,105}, {136,12,105}, {137,13,105}, {138,14,105}, {139,15,105}, {132,9,106}, {133,10,106}, {134,9,106}, {134,11,106}, {135,10,106}, {136,13,106}, {137,12,106}, {137,14,106}, {138,13,106}, {138,15,106}, {139,14,106}, {140,15,106}}; -constexpr double cg_AAA[547] = {1.0, 1.0, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.0690065547823906, -0.26726123690605164, -0.16903084516525269, -0.2182178944349289, 0.23904572427272797, 0.2182178944349289, 0.26726123690605164, 0.0690065547823906, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, -0.0690065547823906, 0.2182178944349289, 0.23904572427272797, -0.16903084516525269, 0.2182178944349289, -0.0690065547823906, 0.26726123690605164, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.0690065547823906, -0.26726123690605164, -0.16903084516525269, -0.2182178944349289, 0.23904572427272797, 0.2182178944349289, 0.26726123690605164, 0.0690065547823906, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, -0.0690065547823906, 0.2182178944349289, 0.23904572427272797, -0.16903084516525269, 0.2182178944349289, -0.0690065547823906, 0.26726123690605164, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 1.0, 1.0, 1.0, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, -0.03857583925127983, -0.20412415266036987, -0.06681530922651291, -0.1767766922712326, -0.13363061845302582, -0.14940357208251953, 0.17251639068126678, 0.14940357208251953, 0.1767766922712326, 0.06681530922651291, 0.20412415266036987, 0.03857583925127983, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, -0.03857583925127983, 0.1767766922712326, -0.06681530922651291, 0.14940357208251953, 0.17251639068126678, -0.13363061845302582, 0.14940357208251953, -0.06681530922651291, 0.1767766922712326, -0.03857583925127983, 0.20412415266036987, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.0690065547823906, -0.26726123690605164, -0.16903084516525269, -0.2182178944349289, 0.23904572427272797, 0.2182178944349289, 0.26726123690605164, 0.0690065547823906, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, -0.0690065547823906, 0.2182178944349289, 0.23904572427272797, -0.16903084516525269, 0.2182178944349289, -0.0690065547823906, 0.26726123690605164, -0.03857583925127983, -0.20412415266036987, -0.06681530922651291, -0.1767766922712326, -0.13363061845302582, -0.14940357208251953, 0.17251639068126678, 0.14940357208251953, 0.1767766922712326, 0.06681530922651291, 0.20412415266036987, 0.03857583925127983, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, -0.03857583925127983, 0.1767766922712326, -0.06681530922651291, 0.14940357208251953, 0.17251639068126678, -0.13363061845302582, 0.14940357208251953, -0.06681530922651291, 0.1767766922712326, -0.03857583925127983, 0.20412415266036987, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.0690065547823906, -0.26726123690605164, -0.16903084516525269, -0.2182178944349289, 0.23904572427272797, 0.2182178944349289, 0.26726123690605164, 0.0690065547823906, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, -0.0690065547823906, 0.2182178944349289, 0.23904572427272797, -0.16903084516525269, 0.2182178944349289, -0.0690065547823906, 0.26726123690605164, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 1.0, 1.0, 1.0, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, -0.03857583925127983, -0.20412415266036987, -0.06681530922651291, -0.1767766922712326, -0.13363061845302582, -0.14940357208251953, 0.17251639068126678, 0.14940357208251953, 0.1767766922712326, 0.06681530922651291, 0.20412415266036987, 0.03857583925127983, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, -0.03857583925127983, 0.1767766922712326, -0.06681530922651291, 0.14940357208251953, 0.17251639068126678, -0.13363061845302582, 0.14940357208251953, -0.06681530922651291, 0.1767766922712326, -0.03857583925127983, 0.20412415266036987, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, -0.0690065547823906, -0.26726123690605164, -0.16903084516525269, -0.2182178944349289, 0.23904572427272797, 0.2182178944349289, 0.26726123690605164, 0.0690065547823906, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, -0.0690065547823906, 0.2182178944349289, 0.23904572427272797, -0.16903084516525269, 0.2182178944349289, -0.0690065547823906, 0.26726123690605164, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987}; - -template -KOKKOS_INLINE_FUNCTION void fwd_AAA(const V &L, const V &R, const V &out, const int ii, const int k) -{ - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a4 = L(ii, k, 4); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a13 = L(ii, k, 13); - const float a14 = L(ii, k, 14); - const float a15 = L(ii, k, 15); - const float a16 = L(ii, k, 16); - const float a27 = L(ii, k, 27); - const float a28 = L(ii, k, 28); - const float a29 = L(ii, k, 29); - const float a30 = L(ii, k, 30); - const float a31 = L(ii, k, 31); - const float a32 = L(ii, k, 32); - const float a33 = L(ii, k, 33); - const float a34 = L(ii, k, 34); - const float a35 = L(ii, k, 35); - const float a36 = L(ii, k, 36); - const float a37 = L(ii, k, 37); - const float a38 = L(ii, k, 38); - const float a39 = L(ii, k, 39); - const float a40 = L(ii, k, 40); - const float a41 = L(ii, k, 41); - const float a42 = L(ii, k, 42); - const float a43 = L(ii, k, 43); - const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); - const float a48 = L(ii, k, 48); - const float a49 = L(ii, k, 49); - const float a50 = L(ii, k, 50); - const float a51 = L(ii, k, 51); - const float a52 = L(ii, k, 52); - const float a53 = L(ii, k, 53); - const float a54 = L(ii, k, 54); - const float a55 = L(ii, k, 55); - const float a56 = L(ii, k, 56); - const float a57 = L(ii, k, 57); - const float a58 = L(ii, k, 58); - const float a66 = L(ii, k, 66); - const float a67 = L(ii, k, 67); - const float a68 = L(ii, k, 68); - const float a69 = L(ii, k, 69); - const float a70 = L(ii, k, 70); - const float a71 = L(ii, k, 71); - const float a72 = L(ii, k, 72); - const float a73 = L(ii, k, 73); - const float a74 = L(ii, k, 74); - const float a75 = L(ii, k, 75); - const float a76 = L(ii, k, 76); - const float a77 = L(ii, k, 77); - const float a78 = L(ii, k, 78); - const float a79 = L(ii, k, 79); - const float a80 = L(ii, k, 80); - const float a81 = L(ii, k, 81); - const float a82 = L(ii, k, 82); - const float a83 = L(ii, k, 83); - const float a84 = L(ii, k, 84); - const float a85 = L(ii, k, 85); - const float a86 = L(ii, k, 86); - const float a87 = L(ii, k, 87); - const float a88 = L(ii, k, 88); - const float a89 = L(ii, k, 89); - const float a90 = L(ii, k, 90); - const float a91 = L(ii, k, 91); - const float a92 = L(ii, k, 92); - const float a93 = L(ii, k, 93); - const float a94 = L(ii, k, 94); - const float a95 = L(ii, k, 95); - const float a96 = L(ii, k, 96); - const float a97 = L(ii, k, 97); - const float a98 = L(ii, k, 98); - const float a99 = L(ii, k, 99); - const float a100 = L(ii, k, 100); - const float a101 = L(ii, k, 101); - const float a102 = L(ii, k, 102); - const float a103 = L(ii, k, 103); - const float a104 = L(ii, k, 104); - const float a123 = L(ii, k, 123); - const float a124 = L(ii, k, 124); - const float a125 = L(ii, k, 125); - const float a126 = L(ii, k, 126); - const float a127 = L(ii, k, 127); - const float a128 = L(ii, k, 128); - const float a129 = L(ii, k, 129); - const float a130 = L(ii, k, 130); - const float a131 = L(ii, k, 131); - const float a132 = L(ii, k, 132); - const float a133 = L(ii, k, 133); - const float a134 = L(ii, k, 134); - const float a135 = L(ii, k, 135); - const float a136 = L(ii, k, 136); - const float a137 = L(ii, k, 137); - const float a138 = L(ii, k, 138); - const float a139 = L(ii, k, 139); - const float a140 = L(ii, k, 140); - const float b0 = R(ii, k, 0); - const float b1 = R(ii, k, 1); - const float b2 = R(ii, k, 2); - const float b3 = R(ii, k, 3); - const float b4 = R(ii, k, 4); - const float b5 = R(ii, k, 5); - const float b6 = R(ii, k, 6); - const float b7 = R(ii, k, 7); - const float b8 = R(ii, k, 8); - const float b9 = R(ii, k, 9); - const float b10 = R(ii, k, 10); - const float b11 = R(ii, k, 11); - const float b12 = R(ii, k, 12); - const float b13 = R(ii, k, 13); - const float b14 = R(ii, k, 14); - const float b15 = R(ii, k, 15); - const float b16 = R(ii, k, 16); - const float b17 = R(ii, k, 17); - const float b18 = R(ii, k, 18); - const float b19 = R(ii, k, 19); - const float b20 = R(ii, k, 20); - const float b21 = R(ii, k, 21); - const float b22 = R(ii, k, 22); - const float b23 = R(ii, k, 23); - const float b24 = R(ii, k, 24); - out(ii, k, 0) = 1.0f * a0 * b0; - out(ii, k, 1) = 1.0f * a1 * b0; - out(ii, k, 2) = 0.3333333432674408f * a8 * b1 + 0.3333333432674408f * a9 * b2 + 0.3333333432674408f * a10 * b3; - out(ii, k, 3) = 1.0f * a2 * b0; - out(ii, k, 4) = 0.20000000298023224f * a27 * b4 + 0.20000000298023224f * a28 * b5 + 0.20000000298023224f * a29 * b6 + 0.20000000298023224f * a30 * b7 + 0.20000000298023224f * a31 * b8; - out(ii, k, 5) = 0.3333333432674408f * a11 * b1 + 0.3333333432674408f * a12 * b2 + 0.3333333432674408f * a13 * b3; - out(ii, k, 6) = 1.0f * a3 * b0; - out(ii, k, 7) = 0.20000000298023224f * a37 * b4 + 0.20000000298023224f * a38 * b5 + 0.20000000298023224f * a39 * b6 + 0.20000000298023224f * a40 * b7 + 0.20000000298023224f * a41 * b8; - out(ii, k, 8) = 0.20000000298023224f * a42 * b4 + 0.20000000298023224f * a43 * b5 + 0.20000000298023224f * a44 * b6 + 0.20000000298023224f * a45 * b7 + 0.20000000298023224f * a46 * b8; - out(ii, k, 9) = 0.3333333432674408f * a14 * b1 + 0.3333333432674408f * a15 * b2 + 0.3333333432674408f * a16 * b3; - out(ii, k, 10) = 0.1428571492433548f * a80 * b9 + 0.1428571492433548f * a81 * b10 + 0.1428571492433548f * a82 * b11 + 0.1428571492433548f * a83 * b12 + 0.1428571492433548f * a84 * b13 + 0.1428571492433548f * a85 * b14 + 0.1428571492433548f * a86 * b15; - out(ii, k, 11) = 1.0f * a4 * b0; - out(ii, k, 12) = 0.20000000298023224f * a47 * b4 + 0.20000000298023224f * a48 * b5 + 0.20000000298023224f * a49 * b6 + 0.20000000298023224f * a50 * b7 + 0.20000000298023224f * a51 * b8; - out(ii, k, 13) = 0.1111111119389534f * a132 * b16 + 0.1111111119389534f * a133 * b17 + 0.1111111119389534f * a134 * b18 + 0.1111111119389534f * a135 * b19 + 0.1111111119389534f * a136 * b20 + 0.1111111119389534f * a137 * b21 + 0.1111111119389534f * a138 * b22 + 0.1111111119389534f * a139 * b23 + 0.1111111119389534f * a140 * b24; - out(ii, k, 14) = 1.0f * a0 * b1; - out(ii, k, 15) = 1.0f * a0 * b2; - out(ii, k, 16) = 1.0f * a0 * b3; - out(ii, k, 17) = 1.0f * a1 * b1; - out(ii, k, 18) = 1.0f * a1 * b2; - out(ii, k, 19) = 1.0f * a1 * b3; - out(ii, k, 20) = 1.0f * a8 * b0; - out(ii, k, 21) = 1.0f * a9 * b0; - out(ii, k, 22) = 1.0f * a10 * b0; - out(ii, k, 23) = -0.22360679507255554f * a8 * b6 + -0.3872983455657959f * a8 * b8 + 0.3872983455657959f * a9 * b5 + 0.3872983455657959f * a10 * b4; - out(ii, k, 24) = 0.3872983455657959f * a8 * b5 + 0.4472135901451111f * a9 * b6 + 0.3872983455657959f * a10 * b7; - out(ii, k, 25) = 0.3872983455657959f * a8 * b4 + 0.3872983455657959f * a9 * b7 + -0.22360679507255554f * a10 * b6 + 0.3872983455657959f * a10 * b8; - out(ii, k, 26) = 0.26726123690605164f * a52 * b8 + 0.2182178944349289f * a53 * b7 + 0.23904572427272797f * a54 * b6 + 0.0690065547823906f * a54 * b8 + -0.16903084516525269f * a55 * b5 + -0.0690065547823906f * a56 * b4 + -0.2182178944349289f * a57 * b5 + -0.26726123690605164f * a58 * b4; - out(ii, k, 27) = 0.2182178944349289f * a53 * b4 + 0.2760262191295624f * a54 * b5 + 0.29277002811431885f * a55 * b6 + 0.2760262191295624f * a56 * b7 + 0.2182178944349289f * a57 * b8; - out(ii, k, 28) = 0.26726123690605164f * a52 * b4 + 0.2182178944349289f * a53 * b5 + -0.0690065547823906f * a54 * b4 + -0.16903084516525269f * a55 * b7 + 0.23904572427272797f * a56 * b6 + -0.0690065547823906f * a56 * b8 + 0.2182178944349289f * a57 * b7 + 0.26726123690605164f * a58 * b8; - out(ii, k, 29) = 1.0f * a2 * b1; - out(ii, k, 30) = 1.0f * a2 * b2; - out(ii, k, 31) = 1.0f * a2 * b3; - out(ii, k, 32) = 0.3872983455657959f * a27 * b3 + 0.3872983455657959f * a28 * b2 + -0.22360679507255554f * a29 * b1 + -0.3872983455657959f * a31 * b1; - out(ii, k, 33) = 0.3872983455657959f * a28 * b1 + 0.4472135901451111f * a29 * b2 + 0.3872983455657959f * a30 * b3; - out(ii, k, 34) = 0.3872983455657959f * a27 * b1 + -0.22360679507255554f * a29 * b3 + 0.3872983455657959f * a30 * b2 + 0.3872983455657959f * a31 * b3; - out(ii, k, 35) = -0.0690065547823906f * a27 * b13 + -0.26726123690605164f * a27 * b15 + -0.16903084516525269f * a28 * b12 + -0.2182178944349289f * a28 * b14 + 0.23904572427272797f * a29 * b11 + 0.2182178944349289f * a30 * b10 + 0.26726123690605164f * a31 * b9 + 0.0690065547823906f * a31 * b11; - out(ii, k, 36) = 0.2182178944349289f * a27 * b10 + 0.2760262191295624f * a28 * b11 + 0.29277002811431885f * a29 * b12 + 0.2760262191295624f * a30 * b13 + 0.2182178944349289f * a31 * b14; - out(ii, k, 37) = 0.26726123690605164f * a27 * b9 + -0.0690065547823906f * a27 * b11 + 0.2182178944349289f * a28 * b10 + 0.23904572427272797f * a29 * b13 + -0.16903084516525269f * a30 * b12 + 0.2182178944349289f * a30 * b14 + -0.0690065547823906f * a31 * b13 + 0.26726123690605164f * a31 * b15; - out(ii, k, 38) = 0.20412415266036987f * a87 * b15 + 0.1767766922712326f * a88 * b14 + 0.14940357208251953f * a89 * b13 + 0.03857583925127983f * a89 * b15 + 0.17251639068126678f * a90 * b12 + 0.06681530922651291f * a90 * b14 + -0.13363061845302582f * a91 * b11 + -0.06681530922651291f * a92 * b10 + -0.03857583925127983f * a93 * b9 + -0.14940357208251953f * a93 * b11 + -0.1767766922712326f * a94 * b10 + -0.20412415266036987f * a95 * b9; - out(ii, k, 39) = 0.14433756470680237f * a88 * b9 + 0.18898223340511322f * a89 * b10 + 0.21128855645656586f * a90 * b11 + 0.2182178944349289f * a91 * b12 + 0.21128855645656586f * a92 * b13 + 0.18898223340511322f * a93 * b14 + 0.14433756470680237f * a94 * b15; - out(ii, k, 40) = 0.20412415266036987f * a87 * b9 + 0.1767766922712326f * a88 * b10 + -0.03857583925127983f * a89 * b9 + 0.14940357208251953f * a89 * b11 + -0.06681530922651291f * a90 * b10 + -0.13363061845302582f * a91 * b13 + 0.17251639068126678f * a92 * b12 + -0.06681530922651291f * a92 * b14 + 0.14940357208251953f * a93 * b13 + -0.03857583925127983f * a93 * b15 + 0.1767766922712326f * a94 * b14 + 0.20412415266036987f * a95 * b15; - out(ii, k, 41) = 0.3872983455657959f * a32 * b3 + 0.3872983455657959f * a33 * b2 + -0.22360679507255554f * a34 * b1 + -0.3872983455657959f * a36 * b1; - out(ii, k, 42) = 0.3872983455657959f * a33 * b1 + 0.4472135901451111f * a34 * b2 + 0.3872983455657959f * a35 * b3; - out(ii, k, 43) = 0.3872983455657959f * a32 * b1 + -0.22360679507255554f * a34 * b3 + 0.3872983455657959f * a35 * b2 + 0.3872983455657959f * a36 * b3; - out(ii, k, 44) = -0.0690065547823906f * a32 * b13 + -0.26726123690605164f * a32 * b15 + -0.16903084516525269f * a33 * b12 + -0.2182178944349289f * a33 * b14 + 0.23904572427272797f * a34 * b11 + 0.2182178944349289f * a35 * b10 + 0.26726123690605164f * a36 * b9 + 0.0690065547823906f * a36 * b11; - out(ii, k, 45) = 0.2182178944349289f * a32 * b10 + 0.2760262191295624f * a33 * b11 + 0.29277002811431885f * a34 * b12 + 0.2760262191295624f * a35 * b13 + 0.2182178944349289f * a36 * b14; - out(ii, k, 46) = 0.26726123690605164f * a32 * b9 + -0.0690065547823906f * a32 * b11 + 0.2182178944349289f * a33 * b10 + 0.23904572427272797f * a34 * b13 + -0.16903084516525269f * a35 * b12 + 0.2182178944349289f * a35 * b14 + -0.0690065547823906f * a36 * b13 + 0.26726123690605164f * a36 * b15; - out(ii, k, 47) = 0.20412415266036987f * a96 * b15 + 0.1767766922712326f * a97 * b14 + 0.14940357208251953f * a98 * b13 + 0.03857583925127983f * a98 * b15 + 0.17251639068126678f * a99 * b12 + 0.06681530922651291f * a99 * b14 + -0.13363061845302582f * a100 * b11 + -0.06681530922651291f * a101 * b10 + -0.03857583925127983f * a102 * b9 + -0.14940357208251953f * a102 * b11 + -0.1767766922712326f * a103 * b10 + -0.20412415266036987f * a104 * b9; - out(ii, k, 48) = 0.14433756470680237f * a97 * b9 + 0.18898223340511322f * a98 * b10 + 0.21128855645656586f * a99 * b11 + 0.2182178944349289f * a100 * b12 + 0.21128855645656586f * a101 * b13 + 0.18898223340511322f * a102 * b14 + 0.14433756470680237f * a103 * b15; - out(ii, k, 49) = 0.20412415266036987f * a96 * b9 + 0.1767766922712326f * a97 * b10 + -0.03857583925127983f * a98 * b9 + 0.14940357208251953f * a98 * b11 + -0.06681530922651291f * a99 * b10 + -0.13363061845302582f * a100 * b13 + 0.17251639068126678f * a101 * b12 + -0.06681530922651291f * a101 * b14 + 0.14940357208251953f * a102 * b13 + -0.03857583925127983f * a102 * b15 + 0.1767766922712326f * a103 * b14 + 0.20412415266036987f * a104 * b15; - out(ii, k, 50) = 1.0f * a11 * b0; - out(ii, k, 51) = 1.0f * a12 * b0; - out(ii, k, 52) = 1.0f * a13 * b0; - out(ii, k, 53) = -0.22360679507255554f * a11 * b6 + -0.3872983455657959f * a11 * b8 + 0.3872983455657959f * a12 * b5 + 0.3872983455657959f * a13 * b4; - out(ii, k, 54) = 0.3872983455657959f * a11 * b5 + 0.4472135901451111f * a12 * b6 + 0.3872983455657959f * a13 * b7; - out(ii, k, 55) = 0.3872983455657959f * a11 * b4 + 0.3872983455657959f * a12 * b7 + -0.22360679507255554f * a13 * b6 + 0.3872983455657959f * a13 * b8; - out(ii, k, 56) = 0.26726123690605164f * a66 * b8 + 0.2182178944349289f * a67 * b7 + 0.23904572427272797f * a68 * b6 + 0.0690065547823906f * a68 * b8 + -0.16903084516525269f * a69 * b5 + -0.0690065547823906f * a70 * b4 + -0.2182178944349289f * a71 * b5 + -0.26726123690605164f * a72 * b4; - out(ii, k, 57) = 0.2182178944349289f * a67 * b4 + 0.2760262191295624f * a68 * b5 + 0.29277002811431885f * a69 * b6 + 0.2760262191295624f * a70 * b7 + 0.2182178944349289f * a71 * b8; - out(ii, k, 58) = 0.26726123690605164f * a66 * b4 + 0.2182178944349289f * a67 * b5 + -0.0690065547823906f * a68 * b4 + -0.16903084516525269f * a69 * b7 + 0.23904572427272797f * a70 * b6 + -0.0690065547823906f * a70 * b8 + 0.2182178944349289f * a71 * b7 + 0.26726123690605164f * a72 * b8; - out(ii, k, 59) = -0.03857583925127983f * a66 * b22 + -0.20412415266036987f * a66 * b24 + -0.06681530922651291f * a67 * b21 + -0.1767766922712326f * a67 * b23 + -0.13363061845302582f * a68 * b20 + -0.14940357208251953f * a68 * b22 + 0.17251639068126678f * a69 * b19 + 0.14940357208251953f * a70 * b18 + 0.1767766922712326f * a71 * b17 + 0.06681530922651291f * a71 * b19 + 0.20412415266036987f * a72 * b16 + 0.03857583925127983f * a72 * b18; - out(ii, k, 60) = 0.14433756470680237f * a66 * b17 + 0.18898223340511322f * a67 * b18 + 0.21128855645656586f * a68 * b19 + 0.2182178944349289f * a69 * b20 + 0.21128855645656586f * a70 * b21 + 0.18898223340511322f * a71 * b22 + 0.14433756470680237f * a72 * b23; - out(ii, k, 61) = 0.20412415266036987f * a66 * b16 + -0.03857583925127983f * a66 * b18 + 0.1767766922712326f * a67 * b17 + -0.06681530922651291f * a67 * b19 + 0.14940357208251953f * a68 * b18 + 0.17251639068126678f * a69 * b21 + -0.13363061845302582f * a70 * b20 + 0.14940357208251953f * a70 * b22 + -0.06681530922651291f * a71 * b21 + 0.1767766922712326f * a71 * b23 + -0.03857583925127983f * a72 * b22 + 0.20412415266036987f * a72 * b24; - out(ii, k, 62) = 1.0f * a3 * b1; - out(ii, k, 63) = 1.0f * a3 * b2; - out(ii, k, 64) = 1.0f * a3 * b3; - out(ii, k, 65) = 0.3872983455657959f * a37 * b3 + 0.3872983455657959f * a38 * b2 + -0.22360679507255554f * a39 * b1 + -0.3872983455657959f * a41 * b1; - out(ii, k, 66) = 0.3872983455657959f * a38 * b1 + 0.4472135901451111f * a39 * b2 + 0.3872983455657959f * a40 * b3; - out(ii, k, 67) = 0.3872983455657959f * a37 * b1 + -0.22360679507255554f * a39 * b3 + 0.3872983455657959f * a40 * b2 + 0.3872983455657959f * a41 * b3; - out(ii, k, 68) = -0.0690065547823906f * a37 * b13 + -0.26726123690605164f * a37 * b15 + -0.16903084516525269f * a38 * b12 + -0.2182178944349289f * a38 * b14 + 0.23904572427272797f * a39 * b11 + 0.2182178944349289f * a40 * b10 + 0.26726123690605164f * a41 * b9 + 0.0690065547823906f * a41 * b11; - out(ii, k, 69) = 0.2182178944349289f * a37 * b10 + 0.2760262191295624f * a38 * b11 + 0.29277002811431885f * a39 * b12 + 0.2760262191295624f * a40 * b13 + 0.2182178944349289f * a41 * b14; - out(ii, k, 70) = 0.26726123690605164f * a37 * b9 + -0.0690065547823906f * a37 * b11 + 0.2182178944349289f * a38 * b10 + 0.23904572427272797f * a39 * b13 + -0.16903084516525269f * a40 * b12 + 0.2182178944349289f * a40 * b14 + -0.0690065547823906f * a41 * b13 + 0.26726123690605164f * a41 * b15; - out(ii, k, 71) = -0.03857583925127983f * a73 * b22 + -0.20412415266036987f * a73 * b24 + -0.06681530922651291f * a74 * b21 + -0.1767766922712326f * a74 * b23 + -0.13363061845302582f * a75 * b20 + -0.14940357208251953f * a75 * b22 + 0.17251639068126678f * a76 * b19 + 0.14940357208251953f * a77 * b18 + 0.1767766922712326f * a78 * b17 + 0.06681530922651291f * a78 * b19 + 0.20412415266036987f * a79 * b16 + 0.03857583925127983f * a79 * b18; - out(ii, k, 72) = 0.14433756470680237f * a73 * b17 + 0.18898223340511322f * a74 * b18 + 0.21128855645656586f * a75 * b19 + 0.2182178944349289f * a76 * b20 + 0.21128855645656586f * a77 * b21 + 0.18898223340511322f * a78 * b22 + 0.14433756470680237f * a79 * b23; - out(ii, k, 73) = 0.20412415266036987f * a73 * b16 + -0.03857583925127983f * a73 * b18 + 0.1767766922712326f * a74 * b17 + -0.06681530922651291f * a74 * b19 + 0.14940357208251953f * a75 * b18 + 0.17251639068126678f * a76 * b21 + -0.13363061845302582f * a77 * b20 + 0.14940357208251953f * a77 * b22 + -0.06681530922651291f * a78 * b21 + 0.1767766922712326f * a78 * b23 + -0.03857583925127983f * a79 * b22 + 0.20412415266036987f * a79 * b24; - out(ii, k, 74) = 0.3872983455657959f * a42 * b3 + 0.3872983455657959f * a43 * b2 + -0.22360679507255554f * a44 * b1 + -0.3872983455657959f * a46 * b1; - out(ii, k, 75) = 0.3872983455657959f * a43 * b1 + 0.4472135901451111f * a44 * b2 + 0.3872983455657959f * a45 * b3; - out(ii, k, 76) = 0.3872983455657959f * a42 * b1 + -0.22360679507255554f * a44 * b3 + 0.3872983455657959f * a45 * b2 + 0.3872983455657959f * a46 * b3; - out(ii, k, 77) = -0.0690065547823906f * a42 * b13 + -0.26726123690605164f * a42 * b15 + -0.16903084516525269f * a43 * b12 + -0.2182178944349289f * a43 * b14 + 0.23904572427272797f * a44 * b11 + 0.2182178944349289f * a45 * b10 + 0.26726123690605164f * a46 * b9 + 0.0690065547823906f * a46 * b11; - out(ii, k, 78) = 0.2182178944349289f * a42 * b10 + 0.2760262191295624f * a43 * b11 + 0.29277002811431885f * a44 * b12 + 0.2760262191295624f * a45 * b13 + 0.2182178944349289f * a46 * b14; - out(ii, k, 79) = 0.26726123690605164f * a42 * b9 + -0.0690065547823906f * a42 * b11 + 0.2182178944349289f * a43 * b10 + 0.23904572427272797f * a44 * b13 + -0.16903084516525269f * a45 * b12 + 0.2182178944349289f * a45 * b14 + -0.0690065547823906f * a46 * b13 + 0.26726123690605164f * a46 * b15; - out(ii, k, 80) = 0.20412415266036987f * a123 * b15 + 0.1767766922712326f * a124 * b14 + 0.14940357208251953f * a125 * b13 + 0.03857583925127983f * a125 * b15 + 0.17251639068126678f * a126 * b12 + 0.06681530922651291f * a126 * b14 + -0.13363061845302582f * a127 * b11 + -0.06681530922651291f * a128 * b10 + -0.03857583925127983f * a129 * b9 + -0.14940357208251953f * a129 * b11 + -0.1767766922712326f * a130 * b10 + -0.20412415266036987f * a131 * b9; - out(ii, k, 81) = 0.14433756470680237f * a124 * b9 + 0.18898223340511322f * a125 * b10 + 0.21128855645656586f * a126 * b11 + 0.2182178944349289f * a127 * b12 + 0.21128855645656586f * a128 * b13 + 0.18898223340511322f * a129 * b14 + 0.14433756470680237f * a130 * b15; - out(ii, k, 82) = 0.20412415266036987f * a123 * b9 + 0.1767766922712326f * a124 * b10 + -0.03857583925127983f * a125 * b9 + 0.14940357208251953f * a125 * b11 + -0.06681530922651291f * a126 * b10 + -0.13363061845302582f * a127 * b13 + 0.17251639068126678f * a128 * b12 + -0.06681530922651291f * a128 * b14 + 0.14940357208251953f * a129 * b13 + -0.03857583925127983f * a129 * b15 + 0.1767766922712326f * a130 * b14 + 0.20412415266036987f * a131 * b15; - out(ii, k, 83) = 1.0f * a14 * b0; - out(ii, k, 84) = 1.0f * a15 * b0; - out(ii, k, 85) = 1.0f * a16 * b0; - out(ii, k, 86) = -0.22360679507255554f * a14 * b6 + -0.3872983455657959f * a14 * b8 + 0.3872983455657959f * a15 * b5 + 0.3872983455657959f * a16 * b4; - out(ii, k, 87) = 0.3872983455657959f * a14 * b5 + 0.4472135901451111f * a15 * b6 + 0.3872983455657959f * a16 * b7; - out(ii, k, 88) = 0.3872983455657959f * a14 * b4 + 0.3872983455657959f * a15 * b7 + -0.22360679507255554f * a16 * b6 + 0.3872983455657959f * a16 * b8; - out(ii, k, 89) = 0.26726123690605164f * a80 * b8 + 0.2182178944349289f * a81 * b7 + 0.23904572427272797f * a82 * b6 + 0.0690065547823906f * a82 * b8 + -0.16903084516525269f * a83 * b5 + -0.0690065547823906f * a84 * b4 + -0.2182178944349289f * a85 * b5 + -0.26726123690605164f * a86 * b4; - out(ii, k, 90) = 0.2182178944349289f * a81 * b4 + 0.2760262191295624f * a82 * b5 + 0.29277002811431885f * a83 * b6 + 0.2760262191295624f * a84 * b7 + 0.2182178944349289f * a85 * b8; - out(ii, k, 91) = 0.26726123690605164f * a80 * b4 + 0.2182178944349289f * a81 * b5 + -0.0690065547823906f * a82 * b4 + -0.16903084516525269f * a83 * b7 + 0.23904572427272797f * a84 * b6 + -0.0690065547823906f * a84 * b8 + 0.2182178944349289f * a85 * b7 + 0.26726123690605164f * a86 * b8; - out(ii, k, 92) = -0.03857583925127983f * a80 * b22 + -0.20412415266036987f * a80 * b24 + -0.06681530922651291f * a81 * b21 + -0.1767766922712326f * a81 * b23 + -0.13363061845302582f * a82 * b20 + -0.14940357208251953f * a82 * b22 + 0.17251639068126678f * a83 * b19 + 0.14940357208251953f * a84 * b18 + 0.1767766922712326f * a85 * b17 + 0.06681530922651291f * a85 * b19 + 0.20412415266036987f * a86 * b16 + 0.03857583925127983f * a86 * b18; - out(ii, k, 93) = 0.14433756470680237f * a80 * b17 + 0.18898223340511322f * a81 * b18 + 0.21128855645656586f * a82 * b19 + 0.2182178944349289f * a83 * b20 + 0.21128855645656586f * a84 * b21 + 0.18898223340511322f * a85 * b22 + 0.14433756470680237f * a86 * b23; - out(ii, k, 94) = 0.20412415266036987f * a80 * b16 + -0.03857583925127983f * a80 * b18 + 0.1767766922712326f * a81 * b17 + -0.06681530922651291f * a81 * b19 + 0.14940357208251953f * a82 * b18 + 0.17251639068126678f * a83 * b21 + -0.13363061845302582f * a84 * b20 + 0.14940357208251953f * a84 * b22 + -0.06681530922651291f * a85 * b21 + 0.1767766922712326f * a85 * b23 + -0.03857583925127983f * a86 * b22 + 0.20412415266036987f * a86 * b24; - out(ii, k, 95) = 1.0f * a4 * b1; - out(ii, k, 96) = 1.0f * a4 * b2; - out(ii, k, 97) = 1.0f * a4 * b3; - out(ii, k, 98) = 0.3872983455657959f * a47 * b3 + 0.3872983455657959f * a48 * b2 + -0.22360679507255554f * a49 * b1 + -0.3872983455657959f * a51 * b1; - out(ii, k, 99) = 0.3872983455657959f * a48 * b1 + 0.4472135901451111f * a49 * b2 + 0.3872983455657959f * a50 * b3; - out(ii, k, 100) = 0.3872983455657959f * a47 * b1 + -0.22360679507255554f * a49 * b3 + 0.3872983455657959f * a50 * b2 + 0.3872983455657959f * a51 * b3; - out(ii, k, 101) = -0.0690065547823906f * a47 * b13 + -0.26726123690605164f * a47 * b15 + -0.16903084516525269f * a48 * b12 + -0.2182178944349289f * a48 * b14 + 0.23904572427272797f * a49 * b11 + 0.2182178944349289f * a50 * b10 + 0.26726123690605164f * a51 * b9 + 0.0690065547823906f * a51 * b11; - out(ii, k, 102) = 0.2182178944349289f * a47 * b10 + 0.2760262191295624f * a48 * b11 + 0.29277002811431885f * a49 * b12 + 0.2760262191295624f * a50 * b13 + 0.2182178944349289f * a51 * b14; - out(ii, k, 103) = 0.26726123690605164f * a47 * b9 + -0.0690065547823906f * a47 * b11 + 0.2182178944349289f * a48 * b10 + 0.23904572427272797f * a49 * b13 + -0.16903084516525269f * a50 * b12 + 0.2182178944349289f * a50 * b14 + -0.0690065547823906f * a51 * b13 + 0.26726123690605164f * a51 * b15; - out(ii, k, 104) = 0.20412415266036987f * a132 * b15 + 0.1767766922712326f * a133 * b14 + 0.14940357208251953f * a134 * b13 + 0.03857583925127983f * a134 * b15 + 0.17251639068126678f * a135 * b12 + 0.06681530922651291f * a135 * b14 + -0.13363061845302582f * a136 * b11 + -0.06681530922651291f * a137 * b10 + -0.03857583925127983f * a138 * b9 + -0.14940357208251953f * a138 * b11 + -0.1767766922712326f * a139 * b10 + -0.20412415266036987f * a140 * b9; - out(ii, k, 105) = 0.14433756470680237f * a133 * b9 + 0.18898223340511322f * a134 * b10 + 0.21128855645656586f * a135 * b11 + 0.2182178944349289f * a136 * b12 + 0.21128855645656586f * a137 * b13 + 0.18898223340511322f * a138 * b14 + 0.14433756470680237f * a139 * b15; - out(ii, k, 106) = 0.20412415266036987f * a132 * b9 + 0.1767766922712326f * a133 * b10 + -0.03857583925127983f * a134 * b9 + 0.14940357208251953f * a134 * b11 + -0.06681530922651291f * a135 * b10 + -0.13363061845302582f * a136 * b13 + 0.17251639068126678f * a137 * b12 + -0.06681530922651291f * a137 * b14 + 0.14940357208251953f * a138 * b13 + -0.03857583925127983f * a138 * b15 + 0.1767766922712326f * a139 * b14 + 0.20412415266036987f * a140 * b15; -} - -template -KOKKOS_INLINE_FUNCTION void rev_AAA(const V &L, const V &R, const V &D, const V &dL, const V &dR, const int ii, const int k) -{ - { - const float b0 = R(ii, k, 0); - const float b1 = R(ii, k, 1); - const float b2 = R(ii, k, 2); - const float b3 = R(ii, k, 3); - const float b4 = R(ii, k, 4); - const float b5 = R(ii, k, 5); - const float b6 = R(ii, k, 6); - const float b7 = R(ii, k, 7); - const float b8 = R(ii, k, 8); - const float b9 = R(ii, k, 9); - const float b10 = R(ii, k, 10); - const float b11 = R(ii, k, 11); - const float b12 = R(ii, k, 12); - const float b13 = R(ii, k, 13); - const float b14 = R(ii, k, 14); - const float b15 = R(ii, k, 15); - const float b16 = R(ii, k, 16); - const float b17 = R(ii, k, 17); - const float b18 = R(ii, k, 18); - const float b19 = R(ii, k, 19); - const float b20 = R(ii, k, 20); - const float b21 = R(ii, k, 21); - const float b22 = R(ii, k, 22); - const float b23 = R(ii, k, 23); - const float b24 = R(ii, k, 24); - { - float g0 = 0.0f; - float g1 = 0.0f; - float g2 = 0.0f; - float g3 = 0.0f; - float g4 = 0.0f; - float g5 = 0.0f; - float g6 = 0.0f; - float g7 = 0.0f; - float g8 = 0.0f; - float g9 = 0.0f; - float g10 = 0.0f; - float g11 = 0.0f; - float g12 = 0.0f; - float g13 = 0.0f; - float g14 = 0.0f; - float g15 = 0.0f; - float g16 = 0.0f; - float g17 = 0.0f; - float g18 = 0.0f; - float g19 = 0.0f; - float g20 = 0.0f; - float g21 = 0.0f; - float g22 = 0.0f; - float g23 = 0.0f; - float g24 = 0.0f; - float g25 = 0.0f; - float g26 = 0.0f; - float g27 = 0.0f; - float g28 = 0.0f; - float g29 = 0.0f; - float g30 = 0.0f; - float g31 = 0.0f; - float g32 = 0.0f; - float g33 = 0.0f; - float g34 = 0.0f; - float g35 = 0.0f; - float g36 = 0.0f; - float g37 = 0.0f; - float g38 = 0.0f; - float g39 = 0.0f; - float g40 = 0.0f; - float g41 = 0.0f; - float g42 = 0.0f; - float g43 = 0.0f; - float g44 = 0.0f; - float g45 = 0.0f; - float g46 = 0.0f; - float g47 = 0.0f; - float g48 = 0.0f; - float g49 = 0.0f; - float g50 = 0.0f; - float g51 = 0.0f; - float g52 = 0.0f; - float g53 = 0.0f; - float g54 = 0.0f; - float g55 = 0.0f; - float g56 = 0.0f; - float g57 = 0.0f; - float g58 = 0.0f; - float g59 = 0.0f; - float g60 = 0.0f; - float g61 = 0.0f; - float g62 = 0.0f; - float g63 = 0.0f; - float g64 = 0.0f; - float g65 = 0.0f; - float g66 = 0.0f; - float g67 = 0.0f; - float g68 = 0.0f; - float g69 = 0.0f; - float g70 = 0.0f; - float g71 = 0.0f; - float g72 = 0.0f; - float g73 = 0.0f; - float g74 = 0.0f; - float g75 = 0.0f; - float g76 = 0.0f; - float g77 = 0.0f; - float g78 = 0.0f; - float g79 = 0.0f; - float g80 = 0.0f; - float g81 = 0.0f; - float g82 = 0.0f; - float g83 = 0.0f; - float g84 = 0.0f; - float g85 = 0.0f; - float g86 = 0.0f; - float g87 = 0.0f; - float g88 = 0.0f; - float g89 = 0.0f; - float g90 = 0.0f; - float g91 = 0.0f; - float g92 = 0.0f; - float g93 = 0.0f; - float g94 = 0.0f; - float g95 = 0.0f; - float g96 = 0.0f; - float g97 = 0.0f; - float g98 = 0.0f; - float g99 = 0.0f; - float g100 = 0.0f; - float g101 = 0.0f; - float g102 = 0.0f; - float g103 = 0.0f; - float g104 = 0.0f; - float g105 = 0.0f; - float g106 = 0.0f; - float g107 = 0.0f; - float g108 = 0.0f; - float g109 = 0.0f; - float g110 = 0.0f; - float g111 = 0.0f; - float g112 = 0.0f; - float g113 = 0.0f; - float g114 = 0.0f; - float g115 = 0.0f; - float g116 = 0.0f; - float g117 = 0.0f; - float g118 = 0.0f; - float g119 = 0.0f; - float g120 = 0.0f; - float g121 = 0.0f; - float g122 = 0.0f; - float g123 = 0.0f; - float g124 = 0.0f; - float g125 = 0.0f; - float g126 = 0.0f; - float g127 = 0.0f; - float g128 = 0.0f; - float g129 = 0.0f; - float g130 = 0.0f; - float g131 = 0.0f; - float g132 = 0.0f; - float g133 = 0.0f; - float g134 = 0.0f; - float g135 = 0.0f; - float g136 = 0.0f; - float g137 = 0.0f; - float g138 = 0.0f; - float g139 = 0.0f; - float g140 = 0.0f; - { const float d = D(ii, k, 0); - g0 += 1.0f * d * b0; - } - { const float d = D(ii, k, 1); - g1 += 1.0f * d * b0; - } - { const float d = D(ii, k, 2); - g8 += 0.3333333432674408f * d * b1; - g9 += 0.3333333432674408f * d * b2; - g10 += 0.3333333432674408f * d * b3; - } - { const float d = D(ii, k, 3); - g2 += 1.0f * d * b0; - } - { const float d = D(ii, k, 4); - g27 += 0.20000000298023224f * d * b4; - g28 += 0.20000000298023224f * d * b5; - g29 += 0.20000000298023224f * d * b6; - g30 += 0.20000000298023224f * d * b7; - g31 += 0.20000000298023224f * d * b8; - } - { const float d = D(ii, k, 5); - g11 += 0.3333333432674408f * d * b1; - g12 += 0.3333333432674408f * d * b2; - g13 += 0.3333333432674408f * d * b3; - } - { const float d = D(ii, k, 6); - g3 += 1.0f * d * b0; - } - { const float d = D(ii, k, 7); - g37 += 0.20000000298023224f * d * b4; - g38 += 0.20000000298023224f * d * b5; - g39 += 0.20000000298023224f * d * b6; - g40 += 0.20000000298023224f * d * b7; - g41 += 0.20000000298023224f * d * b8; - } - { const float d = D(ii, k, 8); - g42 += 0.20000000298023224f * d * b4; - g43 += 0.20000000298023224f * d * b5; - g44 += 0.20000000298023224f * d * b6; - g45 += 0.20000000298023224f * d * b7; - g46 += 0.20000000298023224f * d * b8; - } - { const float d = D(ii, k, 9); - g14 += 0.3333333432674408f * d * b1; - g15 += 0.3333333432674408f * d * b2; - g16 += 0.3333333432674408f * d * b3; - } - { const float d = D(ii, k, 10); - g80 += 0.1428571492433548f * d * b9; - g81 += 0.1428571492433548f * d * b10; - g82 += 0.1428571492433548f * d * b11; - g83 += 0.1428571492433548f * d * b12; - g84 += 0.1428571492433548f * d * b13; - g85 += 0.1428571492433548f * d * b14; - g86 += 0.1428571492433548f * d * b15; - } - { const float d = D(ii, k, 11); - g4 += 1.0f * d * b0; - } - { const float d = D(ii, k, 12); - g47 += 0.20000000298023224f * d * b4; - g48 += 0.20000000298023224f * d * b5; - g49 += 0.20000000298023224f * d * b6; - g50 += 0.20000000298023224f * d * b7; - g51 += 0.20000000298023224f * d * b8; - } - { const float d = D(ii, k, 13); - g132 += 0.1111111119389534f * d * b16; - g133 += 0.1111111119389534f * d * b17; - g134 += 0.1111111119389534f * d * b18; - g135 += 0.1111111119389534f * d * b19; - g136 += 0.1111111119389534f * d * b20; - g137 += 0.1111111119389534f * d * b21; - g138 += 0.1111111119389534f * d * b22; - g139 += 0.1111111119389534f * d * b23; - g140 += 0.1111111119389534f * d * b24; - } - { const float d = D(ii, k, 14); - g0 += 1.0f * d * b1; - } - { const float d = D(ii, k, 15); - g0 += 1.0f * d * b2; - } - { const float d = D(ii, k, 16); - g0 += 1.0f * d * b3; - } - { const float d = D(ii, k, 17); - g1 += 1.0f * d * b1; - } - { const float d = D(ii, k, 18); - g1 += 1.0f * d * b2; - } - { const float d = D(ii, k, 19); - g1 += 1.0f * d * b3; - } - { const float d = D(ii, k, 20); - g8 += 1.0f * d * b0; - } - { const float d = D(ii, k, 21); - g9 += 1.0f * d * b0; - } - { const float d = D(ii, k, 22); - g10 += 1.0f * d * b0; - } - { const float d = D(ii, k, 23); - g8 += -0.22360679507255554f * d * b6; - g8 += -0.3872983455657959f * d * b8; - g9 += 0.3872983455657959f * d * b5; - g10 += 0.3872983455657959f * d * b4; - } - { const float d = D(ii, k, 24); - g8 += 0.3872983455657959f * d * b5; - g9 += 0.4472135901451111f * d * b6; - g10 += 0.3872983455657959f * d * b7; - } - { const float d = D(ii, k, 25); - g8 += 0.3872983455657959f * d * b4; - g9 += 0.3872983455657959f * d * b7; - g10 += -0.22360679507255554f * d * b6; - g10 += 0.3872983455657959f * d * b8; - } - { const float d = D(ii, k, 26); - g52 += 0.26726123690605164f * d * b8; - g53 += 0.2182178944349289f * d * b7; - g54 += 0.23904572427272797f * d * b6; - g54 += 0.0690065547823906f * d * b8; - g55 += -0.16903084516525269f * d * b5; - g56 += -0.0690065547823906f * d * b4; - g57 += -0.2182178944349289f * d * b5; - g58 += -0.26726123690605164f * d * b4; - } - { const float d = D(ii, k, 27); - g53 += 0.2182178944349289f * d * b4; - g54 += 0.2760262191295624f * d * b5; - g55 += 0.29277002811431885f * d * b6; - g56 += 0.2760262191295624f * d * b7; - g57 += 0.2182178944349289f * d * b8; - } - { const float d = D(ii, k, 28); - g52 += 0.26726123690605164f * d * b4; - g53 += 0.2182178944349289f * d * b5; - g54 += -0.0690065547823906f * d * b4; - g55 += -0.16903084516525269f * d * b7; - g56 += 0.23904572427272797f * d * b6; - g56 += -0.0690065547823906f * d * b8; - g57 += 0.2182178944349289f * d * b7; - g58 += 0.26726123690605164f * d * b8; - } - { const float d = D(ii, k, 29); - g2 += 1.0f * d * b1; - } - { const float d = D(ii, k, 30); - g2 += 1.0f * d * b2; - } - { const float d = D(ii, k, 31); - g2 += 1.0f * d * b3; - } - { const float d = D(ii, k, 32); - g27 += 0.3872983455657959f * d * b3; - g28 += 0.3872983455657959f * d * b2; - g29 += -0.22360679507255554f * d * b1; - g31 += -0.3872983455657959f * d * b1; - } - { const float d = D(ii, k, 33); - g28 += 0.3872983455657959f * d * b1; - g29 += 0.4472135901451111f * d * b2; - g30 += 0.3872983455657959f * d * b3; - } - { const float d = D(ii, k, 34); - g27 += 0.3872983455657959f * d * b1; - g29 += -0.22360679507255554f * d * b3; - g30 += 0.3872983455657959f * d * b2; - g31 += 0.3872983455657959f * d * b3; - } - { const float d = D(ii, k, 35); - g27 += -0.0690065547823906f * d * b13; - g27 += -0.26726123690605164f * d * b15; - g28 += -0.16903084516525269f * d * b12; - g28 += -0.2182178944349289f * d * b14; - g29 += 0.23904572427272797f * d * b11; - g30 += 0.2182178944349289f * d * b10; - g31 += 0.26726123690605164f * d * b9; - g31 += 0.0690065547823906f * d * b11; - } - { const float d = D(ii, k, 36); - g27 += 0.2182178944349289f * d * b10; - g28 += 0.2760262191295624f * d * b11; - g29 += 0.29277002811431885f * d * b12; - g30 += 0.2760262191295624f * d * b13; - g31 += 0.2182178944349289f * d * b14; - } - { const float d = D(ii, k, 37); - g27 += 0.26726123690605164f * d * b9; - g27 += -0.0690065547823906f * d * b11; - g28 += 0.2182178944349289f * d * b10; - g29 += 0.23904572427272797f * d * b13; - g30 += -0.16903084516525269f * d * b12; - g30 += 0.2182178944349289f * d * b14; - g31 += -0.0690065547823906f * d * b13; - g31 += 0.26726123690605164f * d * b15; - } - { const float d = D(ii, k, 38); - g87 += 0.20412415266036987f * d * b15; - g88 += 0.1767766922712326f * d * b14; - g89 += 0.14940357208251953f * d * b13; - g89 += 0.03857583925127983f * d * b15; - g90 += 0.17251639068126678f * d * b12; - g90 += 0.06681530922651291f * d * b14; - g91 += -0.13363061845302582f * d * b11; - g92 += -0.06681530922651291f * d * b10; - g93 += -0.03857583925127983f * d * b9; - g93 += -0.14940357208251953f * d * b11; - g94 += -0.1767766922712326f * d * b10; - g95 += -0.20412415266036987f * d * b9; - } - { const float d = D(ii, k, 39); - g88 += 0.14433756470680237f * d * b9; - g89 += 0.18898223340511322f * d * b10; - g90 += 0.21128855645656586f * d * b11; - g91 += 0.2182178944349289f * d * b12; - g92 += 0.21128855645656586f * d * b13; - g93 += 0.18898223340511322f * d * b14; - g94 += 0.14433756470680237f * d * b15; - } - { const float d = D(ii, k, 40); - g87 += 0.20412415266036987f * d * b9; - g88 += 0.1767766922712326f * d * b10; - g89 += -0.03857583925127983f * d * b9; - g89 += 0.14940357208251953f * d * b11; - g90 += -0.06681530922651291f * d * b10; - g91 += -0.13363061845302582f * d * b13; - g92 += 0.17251639068126678f * d * b12; - g92 += -0.06681530922651291f * d * b14; - g93 += 0.14940357208251953f * d * b13; - g93 += -0.03857583925127983f * d * b15; - g94 += 0.1767766922712326f * d * b14; - g95 += 0.20412415266036987f * d * b15; - } - { const float d = D(ii, k, 41); - g32 += 0.3872983455657959f * d * b3; - g33 += 0.3872983455657959f * d * b2; - g34 += -0.22360679507255554f * d * b1; - g36 += -0.3872983455657959f * d * b1; - } - { const float d = D(ii, k, 42); - g33 += 0.3872983455657959f * d * b1; - g34 += 0.4472135901451111f * d * b2; - g35 += 0.3872983455657959f * d * b3; - } - { const float d = D(ii, k, 43); - g32 += 0.3872983455657959f * d * b1; - g34 += -0.22360679507255554f * d * b3; - g35 += 0.3872983455657959f * d * b2; - g36 += 0.3872983455657959f * d * b3; - } - { const float d = D(ii, k, 44); - g32 += -0.0690065547823906f * d * b13; - g32 += -0.26726123690605164f * d * b15; - g33 += -0.16903084516525269f * d * b12; - g33 += -0.2182178944349289f * d * b14; - g34 += 0.23904572427272797f * d * b11; - g35 += 0.2182178944349289f * d * b10; - g36 += 0.26726123690605164f * d * b9; - g36 += 0.0690065547823906f * d * b11; - } - { const float d = D(ii, k, 45); - g32 += 0.2182178944349289f * d * b10; - g33 += 0.2760262191295624f * d * b11; - g34 += 0.29277002811431885f * d * b12; - g35 += 0.2760262191295624f * d * b13; - g36 += 0.2182178944349289f * d * b14; - } - { const float d = D(ii, k, 46); - g32 += 0.26726123690605164f * d * b9; - g32 += -0.0690065547823906f * d * b11; - g33 += 0.2182178944349289f * d * b10; - g34 += 0.23904572427272797f * d * b13; - g35 += -0.16903084516525269f * d * b12; - g35 += 0.2182178944349289f * d * b14; - g36 += -0.0690065547823906f * d * b13; - g36 += 0.26726123690605164f * d * b15; - } - { const float d = D(ii, k, 47); - g96 += 0.20412415266036987f * d * b15; - g97 += 0.1767766922712326f * d * b14; - g98 += 0.14940357208251953f * d * b13; - g98 += 0.03857583925127983f * d * b15; - g99 += 0.17251639068126678f * d * b12; - g99 += 0.06681530922651291f * d * b14; - g100 += -0.13363061845302582f * d * b11; - g101 += -0.06681530922651291f * d * b10; - g102 += -0.03857583925127983f * d * b9; - g102 += -0.14940357208251953f * d * b11; - g103 += -0.1767766922712326f * d * b10; - g104 += -0.20412415266036987f * d * b9; - } - { const float d = D(ii, k, 48); - g97 += 0.14433756470680237f * d * b9; - g98 += 0.18898223340511322f * d * b10; - g99 += 0.21128855645656586f * d * b11; - g100 += 0.2182178944349289f * d * b12; - g101 += 0.21128855645656586f * d * b13; - g102 += 0.18898223340511322f * d * b14; - g103 += 0.14433756470680237f * d * b15; - } - { const float d = D(ii, k, 49); - g96 += 0.20412415266036987f * d * b9; - g97 += 0.1767766922712326f * d * b10; - g98 += -0.03857583925127983f * d * b9; - g98 += 0.14940357208251953f * d * b11; - g99 += -0.06681530922651291f * d * b10; - g100 += -0.13363061845302582f * d * b13; - g101 += 0.17251639068126678f * d * b12; - g101 += -0.06681530922651291f * d * b14; - g102 += 0.14940357208251953f * d * b13; - g102 += -0.03857583925127983f * d * b15; - g103 += 0.1767766922712326f * d * b14; - g104 += 0.20412415266036987f * d * b15; - } - { const float d = D(ii, k, 50); - g11 += 1.0f * d * b0; - } - { const float d = D(ii, k, 51); - g12 += 1.0f * d * b0; - } - { const float d = D(ii, k, 52); - g13 += 1.0f * d * b0; - } - { const float d = D(ii, k, 53); - g11 += -0.22360679507255554f * d * b6; - g11 += -0.3872983455657959f * d * b8; - g12 += 0.3872983455657959f * d * b5; - g13 += 0.3872983455657959f * d * b4; - } - { const float d = D(ii, k, 54); - g11 += 0.3872983455657959f * d * b5; - g12 += 0.4472135901451111f * d * b6; - g13 += 0.3872983455657959f * d * b7; - } - { const float d = D(ii, k, 55); - g11 += 0.3872983455657959f * d * b4; - g12 += 0.3872983455657959f * d * b7; - g13 += -0.22360679507255554f * d * b6; - g13 += 0.3872983455657959f * d * b8; - } - { const float d = D(ii, k, 56); - g66 += 0.26726123690605164f * d * b8; - g67 += 0.2182178944349289f * d * b7; - g68 += 0.23904572427272797f * d * b6; - g68 += 0.0690065547823906f * d * b8; - g69 += -0.16903084516525269f * d * b5; - g70 += -0.0690065547823906f * d * b4; - g71 += -0.2182178944349289f * d * b5; - g72 += -0.26726123690605164f * d * b4; - } - { const float d = D(ii, k, 57); - g67 += 0.2182178944349289f * d * b4; - g68 += 0.2760262191295624f * d * b5; - g69 += 0.29277002811431885f * d * b6; - g70 += 0.2760262191295624f * d * b7; - g71 += 0.2182178944349289f * d * b8; - } - { const float d = D(ii, k, 58); - g66 += 0.26726123690605164f * d * b4; - g67 += 0.2182178944349289f * d * b5; - g68 += -0.0690065547823906f * d * b4; - g69 += -0.16903084516525269f * d * b7; - g70 += 0.23904572427272797f * d * b6; - g70 += -0.0690065547823906f * d * b8; - g71 += 0.2182178944349289f * d * b7; - g72 += 0.26726123690605164f * d * b8; - } - { const float d = D(ii, k, 59); - g66 += -0.03857583925127983f * d * b22; - g66 += -0.20412415266036987f * d * b24; - g67 += -0.06681530922651291f * d * b21; - g67 += -0.1767766922712326f * d * b23; - g68 += -0.13363061845302582f * d * b20; - g68 += -0.14940357208251953f * d * b22; - g69 += 0.17251639068126678f * d * b19; - g70 += 0.14940357208251953f * d * b18; - g71 += 0.1767766922712326f * d * b17; - g71 += 0.06681530922651291f * d * b19; - g72 += 0.20412415266036987f * d * b16; - g72 += 0.03857583925127983f * d * b18; - } - { const float d = D(ii, k, 60); - g66 += 0.14433756470680237f * d * b17; - g67 += 0.18898223340511322f * d * b18; - g68 += 0.21128855645656586f * d * b19; - g69 += 0.2182178944349289f * d * b20; - g70 += 0.21128855645656586f * d * b21; - g71 += 0.18898223340511322f * d * b22; - g72 += 0.14433756470680237f * d * b23; - } - { const float d = D(ii, k, 61); - g66 += 0.20412415266036987f * d * b16; - g66 += -0.03857583925127983f * d * b18; - g67 += 0.1767766922712326f * d * b17; - g67 += -0.06681530922651291f * d * b19; - g68 += 0.14940357208251953f * d * b18; - g69 += 0.17251639068126678f * d * b21; - g70 += -0.13363061845302582f * d * b20; - g70 += 0.14940357208251953f * d * b22; - g71 += -0.06681530922651291f * d * b21; - g71 += 0.1767766922712326f * d * b23; - g72 += -0.03857583925127983f * d * b22; - g72 += 0.20412415266036987f * d * b24; - } - { const float d = D(ii, k, 62); - g3 += 1.0f * d * b1; - } - { const float d = D(ii, k, 63); - g3 += 1.0f * d * b2; - } - { const float d = D(ii, k, 64); - g3 += 1.0f * d * b3; - } - { const float d = D(ii, k, 65); - g37 += 0.3872983455657959f * d * b3; - g38 += 0.3872983455657959f * d * b2; - g39 += -0.22360679507255554f * d * b1; - g41 += -0.3872983455657959f * d * b1; - } - { const float d = D(ii, k, 66); - g38 += 0.3872983455657959f * d * b1; - g39 += 0.4472135901451111f * d * b2; - g40 += 0.3872983455657959f * d * b3; - } - { const float d = D(ii, k, 67); - g37 += 0.3872983455657959f * d * b1; - g39 += -0.22360679507255554f * d * b3; - g40 += 0.3872983455657959f * d * b2; - g41 += 0.3872983455657959f * d * b3; - } - { const float d = D(ii, k, 68); - g37 += -0.0690065547823906f * d * b13; - g37 += -0.26726123690605164f * d * b15; - g38 += -0.16903084516525269f * d * b12; - g38 += -0.2182178944349289f * d * b14; - g39 += 0.23904572427272797f * d * b11; - g40 += 0.2182178944349289f * d * b10; - g41 += 0.26726123690605164f * d * b9; - g41 += 0.0690065547823906f * d * b11; - } - { const float d = D(ii, k, 69); - g37 += 0.2182178944349289f * d * b10; - g38 += 0.2760262191295624f * d * b11; - g39 += 0.29277002811431885f * d * b12; - g40 += 0.2760262191295624f * d * b13; - g41 += 0.2182178944349289f * d * b14; - } - { const float d = D(ii, k, 70); - g37 += 0.26726123690605164f * d * b9; - g37 += -0.0690065547823906f * d * b11; - g38 += 0.2182178944349289f * d * b10; - g39 += 0.23904572427272797f * d * b13; - g40 += -0.16903084516525269f * d * b12; - g40 += 0.2182178944349289f * d * b14; - g41 += -0.0690065547823906f * d * b13; - g41 += 0.26726123690605164f * d * b15; - } - { const float d = D(ii, k, 71); - g73 += -0.03857583925127983f * d * b22; - g73 += -0.20412415266036987f * d * b24; - g74 += -0.06681530922651291f * d * b21; - g74 += -0.1767766922712326f * d * b23; - g75 += -0.13363061845302582f * d * b20; - g75 += -0.14940357208251953f * d * b22; - g76 += 0.17251639068126678f * d * b19; - g77 += 0.14940357208251953f * d * b18; - g78 += 0.1767766922712326f * d * b17; - g78 += 0.06681530922651291f * d * b19; - g79 += 0.20412415266036987f * d * b16; - g79 += 0.03857583925127983f * d * b18; - } - { const float d = D(ii, k, 72); - g73 += 0.14433756470680237f * d * b17; - g74 += 0.18898223340511322f * d * b18; - g75 += 0.21128855645656586f * d * b19; - g76 += 0.2182178944349289f * d * b20; - g77 += 0.21128855645656586f * d * b21; - g78 += 0.18898223340511322f * d * b22; - g79 += 0.14433756470680237f * d * b23; - } - { const float d = D(ii, k, 73); - g73 += 0.20412415266036987f * d * b16; - g73 += -0.03857583925127983f * d * b18; - g74 += 0.1767766922712326f * d * b17; - g74 += -0.06681530922651291f * d * b19; - g75 += 0.14940357208251953f * d * b18; - g76 += 0.17251639068126678f * d * b21; - g77 += -0.13363061845302582f * d * b20; - g77 += 0.14940357208251953f * d * b22; - g78 += -0.06681530922651291f * d * b21; - g78 += 0.1767766922712326f * d * b23; - g79 += -0.03857583925127983f * d * b22; - g79 += 0.20412415266036987f * d * b24; - } - { const float d = D(ii, k, 74); - g42 += 0.3872983455657959f * d * b3; - g43 += 0.3872983455657959f * d * b2; - g44 += -0.22360679507255554f * d * b1; - g46 += -0.3872983455657959f * d * b1; - } - { const float d = D(ii, k, 75); - g43 += 0.3872983455657959f * d * b1; - g44 += 0.4472135901451111f * d * b2; - g45 += 0.3872983455657959f * d * b3; - } - { const float d = D(ii, k, 76); - g42 += 0.3872983455657959f * d * b1; - g44 += -0.22360679507255554f * d * b3; - g45 += 0.3872983455657959f * d * b2; - g46 += 0.3872983455657959f * d * b3; - } - { const float d = D(ii, k, 77); - g42 += -0.0690065547823906f * d * b13; - g42 += -0.26726123690605164f * d * b15; - g43 += -0.16903084516525269f * d * b12; - g43 += -0.2182178944349289f * d * b14; - g44 += 0.23904572427272797f * d * b11; - g45 += 0.2182178944349289f * d * b10; - g46 += 0.26726123690605164f * d * b9; - g46 += 0.0690065547823906f * d * b11; - } - { const float d = D(ii, k, 78); - g42 += 0.2182178944349289f * d * b10; - g43 += 0.2760262191295624f * d * b11; - g44 += 0.29277002811431885f * d * b12; - g45 += 0.2760262191295624f * d * b13; - g46 += 0.2182178944349289f * d * b14; - } - { const float d = D(ii, k, 79); - g42 += 0.26726123690605164f * d * b9; - g42 += -0.0690065547823906f * d * b11; - g43 += 0.2182178944349289f * d * b10; - g44 += 0.23904572427272797f * d * b13; - g45 += -0.16903084516525269f * d * b12; - g45 += 0.2182178944349289f * d * b14; - g46 += -0.0690065547823906f * d * b13; - g46 += 0.26726123690605164f * d * b15; - } - { const float d = D(ii, k, 80); - g123 += 0.20412415266036987f * d * b15; - g124 += 0.1767766922712326f * d * b14; - g125 += 0.14940357208251953f * d * b13; - g125 += 0.03857583925127983f * d * b15; - g126 += 0.17251639068126678f * d * b12; - g126 += 0.06681530922651291f * d * b14; - g127 += -0.13363061845302582f * d * b11; - g128 += -0.06681530922651291f * d * b10; - g129 += -0.03857583925127983f * d * b9; - g129 += -0.14940357208251953f * d * b11; - g130 += -0.1767766922712326f * d * b10; - g131 += -0.20412415266036987f * d * b9; - } - { const float d = D(ii, k, 81); - g124 += 0.14433756470680237f * d * b9; - g125 += 0.18898223340511322f * d * b10; - g126 += 0.21128855645656586f * d * b11; - g127 += 0.2182178944349289f * d * b12; - g128 += 0.21128855645656586f * d * b13; - g129 += 0.18898223340511322f * d * b14; - g130 += 0.14433756470680237f * d * b15; - } - { const float d = D(ii, k, 82); - g123 += 0.20412415266036987f * d * b9; - g124 += 0.1767766922712326f * d * b10; - g125 += -0.03857583925127983f * d * b9; - g125 += 0.14940357208251953f * d * b11; - g126 += -0.06681530922651291f * d * b10; - g127 += -0.13363061845302582f * d * b13; - g128 += 0.17251639068126678f * d * b12; - g128 += -0.06681530922651291f * d * b14; - g129 += 0.14940357208251953f * d * b13; - g129 += -0.03857583925127983f * d * b15; - g130 += 0.1767766922712326f * d * b14; - g131 += 0.20412415266036987f * d * b15; - } - { const float d = D(ii, k, 83); - g14 += 1.0f * d * b0; - } - { const float d = D(ii, k, 84); - g15 += 1.0f * d * b0; - } - { const float d = D(ii, k, 85); - g16 += 1.0f * d * b0; - } - { const float d = D(ii, k, 86); - g14 += -0.22360679507255554f * d * b6; - g14 += -0.3872983455657959f * d * b8; - g15 += 0.3872983455657959f * d * b5; - g16 += 0.3872983455657959f * d * b4; - } - { const float d = D(ii, k, 87); - g14 += 0.3872983455657959f * d * b5; - g15 += 0.4472135901451111f * d * b6; - g16 += 0.3872983455657959f * d * b7; - } - { const float d = D(ii, k, 88); - g14 += 0.3872983455657959f * d * b4; - g15 += 0.3872983455657959f * d * b7; - g16 += -0.22360679507255554f * d * b6; - g16 += 0.3872983455657959f * d * b8; - } - { const float d = D(ii, k, 89); - g80 += 0.26726123690605164f * d * b8; - g81 += 0.2182178944349289f * d * b7; - g82 += 0.23904572427272797f * d * b6; - g82 += 0.0690065547823906f * d * b8; - g83 += -0.16903084516525269f * d * b5; - g84 += -0.0690065547823906f * d * b4; - g85 += -0.2182178944349289f * d * b5; - g86 += -0.26726123690605164f * d * b4; - } - { const float d = D(ii, k, 90); - g81 += 0.2182178944349289f * d * b4; - g82 += 0.2760262191295624f * d * b5; - g83 += 0.29277002811431885f * d * b6; - g84 += 0.2760262191295624f * d * b7; - g85 += 0.2182178944349289f * d * b8; - } - { const float d = D(ii, k, 91); - g80 += 0.26726123690605164f * d * b4; - g81 += 0.2182178944349289f * d * b5; - g82 += -0.0690065547823906f * d * b4; - g83 += -0.16903084516525269f * d * b7; - g84 += 0.23904572427272797f * d * b6; - g84 += -0.0690065547823906f * d * b8; - g85 += 0.2182178944349289f * d * b7; - g86 += 0.26726123690605164f * d * b8; - } - { const float d = D(ii, k, 92); - g80 += -0.03857583925127983f * d * b22; - g80 += -0.20412415266036987f * d * b24; - g81 += -0.06681530922651291f * d * b21; - g81 += -0.1767766922712326f * d * b23; - g82 += -0.13363061845302582f * d * b20; - g82 += -0.14940357208251953f * d * b22; - g83 += 0.17251639068126678f * d * b19; - g84 += 0.14940357208251953f * d * b18; - g85 += 0.1767766922712326f * d * b17; - g85 += 0.06681530922651291f * d * b19; - g86 += 0.20412415266036987f * d * b16; - g86 += 0.03857583925127983f * d * b18; - } - { const float d = D(ii, k, 93); - g80 += 0.14433756470680237f * d * b17; - g81 += 0.18898223340511322f * d * b18; - g82 += 0.21128855645656586f * d * b19; - g83 += 0.2182178944349289f * d * b20; - g84 += 0.21128855645656586f * d * b21; - g85 += 0.18898223340511322f * d * b22; - g86 += 0.14433756470680237f * d * b23; - } - { const float d = D(ii, k, 94); - g80 += 0.20412415266036987f * d * b16; - g80 += -0.03857583925127983f * d * b18; - g81 += 0.1767766922712326f * d * b17; - g81 += -0.06681530922651291f * d * b19; - g82 += 0.14940357208251953f * d * b18; - g83 += 0.17251639068126678f * d * b21; - g84 += -0.13363061845302582f * d * b20; - g84 += 0.14940357208251953f * d * b22; - g85 += -0.06681530922651291f * d * b21; - g85 += 0.1767766922712326f * d * b23; - g86 += -0.03857583925127983f * d * b22; - g86 += 0.20412415266036987f * d * b24; - } - { const float d = D(ii, k, 95); - g4 += 1.0f * d * b1; - } - { const float d = D(ii, k, 96); - g4 += 1.0f * d * b2; - } - { const float d = D(ii, k, 97); - g4 += 1.0f * d * b3; - } - { const float d = D(ii, k, 98); - g47 += 0.3872983455657959f * d * b3; - g48 += 0.3872983455657959f * d * b2; - g49 += -0.22360679507255554f * d * b1; - g51 += -0.3872983455657959f * d * b1; - } - { const float d = D(ii, k, 99); - g48 += 0.3872983455657959f * d * b1; - g49 += 0.4472135901451111f * d * b2; - g50 += 0.3872983455657959f * d * b3; - } - { const float d = D(ii, k, 100); - g47 += 0.3872983455657959f * d * b1; - g49 += -0.22360679507255554f * d * b3; - g50 += 0.3872983455657959f * d * b2; - g51 += 0.3872983455657959f * d * b3; - } - { const float d = D(ii, k, 101); - g47 += -0.0690065547823906f * d * b13; - g47 += -0.26726123690605164f * d * b15; - g48 += -0.16903084516525269f * d * b12; - g48 += -0.2182178944349289f * d * b14; - g49 += 0.23904572427272797f * d * b11; - g50 += 0.2182178944349289f * d * b10; - g51 += 0.26726123690605164f * d * b9; - g51 += 0.0690065547823906f * d * b11; - } - { const float d = D(ii, k, 102); - g47 += 0.2182178944349289f * d * b10; - g48 += 0.2760262191295624f * d * b11; - g49 += 0.29277002811431885f * d * b12; - g50 += 0.2760262191295624f * d * b13; - g51 += 0.2182178944349289f * d * b14; - } - { const float d = D(ii, k, 103); - g47 += 0.26726123690605164f * d * b9; - g47 += -0.0690065547823906f * d * b11; - g48 += 0.2182178944349289f * d * b10; - g49 += 0.23904572427272797f * d * b13; - g50 += -0.16903084516525269f * d * b12; - g50 += 0.2182178944349289f * d * b14; - g51 += -0.0690065547823906f * d * b13; - g51 += 0.26726123690605164f * d * b15; - } - { const float d = D(ii, k, 104); - g132 += 0.20412415266036987f * d * b15; - g133 += 0.1767766922712326f * d * b14; - g134 += 0.14940357208251953f * d * b13; - g134 += 0.03857583925127983f * d * b15; - g135 += 0.17251639068126678f * d * b12; - g135 += 0.06681530922651291f * d * b14; - g136 += -0.13363061845302582f * d * b11; - g137 += -0.06681530922651291f * d * b10; - g138 += -0.03857583925127983f * d * b9; - g138 += -0.14940357208251953f * d * b11; - g139 += -0.1767766922712326f * d * b10; - g140 += -0.20412415266036987f * d * b9; - } - { const float d = D(ii, k, 105); - g133 += 0.14433756470680237f * d * b9; - g134 += 0.18898223340511322f * d * b10; - g135 += 0.21128855645656586f * d * b11; - g136 += 0.2182178944349289f * d * b12; - g137 += 0.21128855645656586f * d * b13; - g138 += 0.18898223340511322f * d * b14; - g139 += 0.14433756470680237f * d * b15; - } - { const float d = D(ii, k, 106); - g132 += 0.20412415266036987f * d * b9; - g133 += 0.1767766922712326f * d * b10; - g134 += -0.03857583925127983f * d * b9; - g134 += 0.14940357208251953f * d * b11; - g135 += -0.06681530922651291f * d * b10; - g136 += -0.13363061845302582f * d * b13; - g137 += 0.17251639068126678f * d * b12; - g137 += -0.06681530922651291f * d * b14; - g138 += 0.14940357208251953f * d * b13; - g138 += -0.03857583925127983f * d * b15; - g139 += 0.1767766922712326f * d * b14; - g140 += 0.20412415266036987f * d * b15; - } - dL(ii, k, 0) = g0; - dL(ii, k, 1) = g1; - dL(ii, k, 2) = g2; - dL(ii, k, 3) = g3; - dL(ii, k, 4) = g4; - dL(ii, k, 5) = g5; - dL(ii, k, 6) = g6; - dL(ii, k, 7) = g7; - dL(ii, k, 8) = g8; - dL(ii, k, 9) = g9; - dL(ii, k, 10) = g10; - dL(ii, k, 11) = g11; - dL(ii, k, 12) = g12; - dL(ii, k, 13) = g13; - dL(ii, k, 14) = g14; - dL(ii, k, 15) = g15; - dL(ii, k, 16) = g16; - dL(ii, k, 17) = g17; - dL(ii, k, 18) = g18; - dL(ii, k, 19) = g19; - dL(ii, k, 20) = g20; - dL(ii, k, 21) = g21; - dL(ii, k, 22) = g22; - dL(ii, k, 23) = g23; - dL(ii, k, 24) = g24; - dL(ii, k, 25) = g25; - dL(ii, k, 26) = g26; - dL(ii, k, 27) = g27; - dL(ii, k, 28) = g28; - dL(ii, k, 29) = g29; - dL(ii, k, 30) = g30; - dL(ii, k, 31) = g31; - dL(ii, k, 32) = g32; - dL(ii, k, 33) = g33; - dL(ii, k, 34) = g34; - dL(ii, k, 35) = g35; - dL(ii, k, 36) = g36; - dL(ii, k, 37) = g37; - dL(ii, k, 38) = g38; - dL(ii, k, 39) = g39; - dL(ii, k, 40) = g40; - dL(ii, k, 41) = g41; - dL(ii, k, 42) = g42; - dL(ii, k, 43) = g43; - dL(ii, k, 44) = g44; - dL(ii, k, 45) = g45; - dL(ii, k, 46) = g46; - dL(ii, k, 47) = g47; - dL(ii, k, 48) = g48; - dL(ii, k, 49) = g49; - dL(ii, k, 50) = g50; - dL(ii, k, 51) = g51; - dL(ii, k, 52) = g52; - dL(ii, k, 53) = g53; - dL(ii, k, 54) = g54; - dL(ii, k, 55) = g55; - dL(ii, k, 56) = g56; - dL(ii, k, 57) = g57; - dL(ii, k, 58) = g58; - dL(ii, k, 59) = g59; - dL(ii, k, 60) = g60; - dL(ii, k, 61) = g61; - dL(ii, k, 62) = g62; - dL(ii, k, 63) = g63; - dL(ii, k, 64) = g64; - dL(ii, k, 65) = g65; - dL(ii, k, 66) = g66; - dL(ii, k, 67) = g67; - dL(ii, k, 68) = g68; - dL(ii, k, 69) = g69; - dL(ii, k, 70) = g70; - dL(ii, k, 71) = g71; - dL(ii, k, 72) = g72; - dL(ii, k, 73) = g73; - dL(ii, k, 74) = g74; - dL(ii, k, 75) = g75; - dL(ii, k, 76) = g76; - dL(ii, k, 77) = g77; - dL(ii, k, 78) = g78; - dL(ii, k, 79) = g79; - dL(ii, k, 80) = g80; - dL(ii, k, 81) = g81; - dL(ii, k, 82) = g82; - dL(ii, k, 83) = g83; - dL(ii, k, 84) = g84; - dL(ii, k, 85) = g85; - dL(ii, k, 86) = g86; - dL(ii, k, 87) = g87; - dL(ii, k, 88) = g88; - dL(ii, k, 89) = g89; - dL(ii, k, 90) = g90; - dL(ii, k, 91) = g91; - dL(ii, k, 92) = g92; - dL(ii, k, 93) = g93; - dL(ii, k, 94) = g94; - dL(ii, k, 95) = g95; - dL(ii, k, 96) = g96; - dL(ii, k, 97) = g97; - dL(ii, k, 98) = g98; - dL(ii, k, 99) = g99; - dL(ii, k, 100) = g100; - dL(ii, k, 101) = g101; - dL(ii, k, 102) = g102; - dL(ii, k, 103) = g103; - dL(ii, k, 104) = g104; - dL(ii, k, 105) = g105; - dL(ii, k, 106) = g106; - dL(ii, k, 107) = g107; - dL(ii, k, 108) = g108; - dL(ii, k, 109) = g109; - dL(ii, k, 110) = g110; - dL(ii, k, 111) = g111; - dL(ii, k, 112) = g112; - dL(ii, k, 113) = g113; - dL(ii, k, 114) = g114; - dL(ii, k, 115) = g115; - dL(ii, k, 116) = g116; - dL(ii, k, 117) = g117; - dL(ii, k, 118) = g118; - dL(ii, k, 119) = g119; - dL(ii, k, 120) = g120; - dL(ii, k, 121) = g121; - dL(ii, k, 122) = g122; - dL(ii, k, 123) = g123; - dL(ii, k, 124) = g124; - dL(ii, k, 125) = g125; - dL(ii, k, 126) = g126; - dL(ii, k, 127) = g127; - dL(ii, k, 128) = g128; - dL(ii, k, 129) = g129; - dL(ii, k, 130) = g130; - dL(ii, k, 131) = g131; - dL(ii, k, 132) = g132; - dL(ii, k, 133) = g133; - dL(ii, k, 134) = g134; - dL(ii, k, 135) = g135; - dL(ii, k, 136) = g136; - dL(ii, k, 137) = g137; - dL(ii, k, 138) = g138; - dL(ii, k, 139) = g139; - dL(ii, k, 140) = g140; - } - } - { - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a4 = L(ii, k, 4); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a13 = L(ii, k, 13); - const float a14 = L(ii, k, 14); - const float a15 = L(ii, k, 15); - const float a16 = L(ii, k, 16); - const float a27 = L(ii, k, 27); - const float a28 = L(ii, k, 28); - const float a29 = L(ii, k, 29); - const float a30 = L(ii, k, 30); - const float a31 = L(ii, k, 31); - const float a32 = L(ii, k, 32); - const float a33 = L(ii, k, 33); - const float a34 = L(ii, k, 34); - const float a35 = L(ii, k, 35); - const float a36 = L(ii, k, 36); - const float a37 = L(ii, k, 37); - const float a38 = L(ii, k, 38); - const float a39 = L(ii, k, 39); - const float a40 = L(ii, k, 40); - const float a41 = L(ii, k, 41); - const float a42 = L(ii, k, 42); - const float a43 = L(ii, k, 43); - const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); - const float a48 = L(ii, k, 48); - const float a49 = L(ii, k, 49); - const float a50 = L(ii, k, 50); - const float a51 = L(ii, k, 51); - const float a52 = L(ii, k, 52); - const float a53 = L(ii, k, 53); - const float a54 = L(ii, k, 54); - const float a55 = L(ii, k, 55); - const float a56 = L(ii, k, 56); - const float a57 = L(ii, k, 57); - const float a58 = L(ii, k, 58); - const float a66 = L(ii, k, 66); - const float a67 = L(ii, k, 67); - const float a68 = L(ii, k, 68); - const float a69 = L(ii, k, 69); - const float a70 = L(ii, k, 70); - const float a71 = L(ii, k, 71); - const float a72 = L(ii, k, 72); - const float a73 = L(ii, k, 73); - const float a74 = L(ii, k, 74); - const float a75 = L(ii, k, 75); - const float a76 = L(ii, k, 76); - const float a77 = L(ii, k, 77); - const float a78 = L(ii, k, 78); - const float a79 = L(ii, k, 79); - const float a80 = L(ii, k, 80); - const float a81 = L(ii, k, 81); - const float a82 = L(ii, k, 82); - const float a83 = L(ii, k, 83); - const float a84 = L(ii, k, 84); - const float a85 = L(ii, k, 85); - const float a86 = L(ii, k, 86); - const float a87 = L(ii, k, 87); - const float a88 = L(ii, k, 88); - const float a89 = L(ii, k, 89); - const float a90 = L(ii, k, 90); - const float a91 = L(ii, k, 91); - const float a92 = L(ii, k, 92); - const float a93 = L(ii, k, 93); - const float a94 = L(ii, k, 94); - const float a95 = L(ii, k, 95); - const float a96 = L(ii, k, 96); - const float a97 = L(ii, k, 97); - const float a98 = L(ii, k, 98); - const float a99 = L(ii, k, 99); - const float a100 = L(ii, k, 100); - const float a101 = L(ii, k, 101); - const float a102 = L(ii, k, 102); - const float a103 = L(ii, k, 103); - const float a104 = L(ii, k, 104); - const float a123 = L(ii, k, 123); - const float a124 = L(ii, k, 124); - const float a125 = L(ii, k, 125); - const float a126 = L(ii, k, 126); - const float a127 = L(ii, k, 127); - const float a128 = L(ii, k, 128); - const float a129 = L(ii, k, 129); - const float a130 = L(ii, k, 130); - const float a131 = L(ii, k, 131); - const float a132 = L(ii, k, 132); - const float a133 = L(ii, k, 133); - const float a134 = L(ii, k, 134); - const float a135 = L(ii, k, 135); - const float a136 = L(ii, k, 136); - const float a137 = L(ii, k, 137); - const float a138 = L(ii, k, 138); - const float a139 = L(ii, k, 139); - const float a140 = L(ii, k, 140); - float h0 = 0.0f; - float h1 = 0.0f; - float h2 = 0.0f; - float h3 = 0.0f; - float h4 = 0.0f; - float h5 = 0.0f; - float h6 = 0.0f; - float h7 = 0.0f; - float h8 = 0.0f; - float h9 = 0.0f; - float h10 = 0.0f; - float h11 = 0.0f; - float h12 = 0.0f; - float h13 = 0.0f; - float h14 = 0.0f; - float h15 = 0.0f; - float h16 = 0.0f; - float h17 = 0.0f; - float h18 = 0.0f; - float h19 = 0.0f; - float h20 = 0.0f; - float h21 = 0.0f; - float h22 = 0.0f; - float h23 = 0.0f; - float h24 = 0.0f; - { const float d = D(ii, k, 0); - h0 += 1.0f * d * a0; - } - { const float d = D(ii, k, 1); - h0 += 1.0f * d * a1; - } - { const float d = D(ii, k, 2); - h1 += 0.3333333432674408f * d * a8; - h2 += 0.3333333432674408f * d * a9; - h3 += 0.3333333432674408f * d * a10; - } - { const float d = D(ii, k, 3); - h0 += 1.0f * d * a2; - } - { const float d = D(ii, k, 4); - h4 += 0.20000000298023224f * d * a27; - h5 += 0.20000000298023224f * d * a28; - h6 += 0.20000000298023224f * d * a29; - h7 += 0.20000000298023224f * d * a30; - h8 += 0.20000000298023224f * d * a31; - } - { const float d = D(ii, k, 5); - h1 += 0.3333333432674408f * d * a11; - h2 += 0.3333333432674408f * d * a12; - h3 += 0.3333333432674408f * d * a13; - } - { const float d = D(ii, k, 6); - h0 += 1.0f * d * a3; - } - { const float d = D(ii, k, 7); - h4 += 0.20000000298023224f * d * a37; - h5 += 0.20000000298023224f * d * a38; - h6 += 0.20000000298023224f * d * a39; - h7 += 0.20000000298023224f * d * a40; - h8 += 0.20000000298023224f * d * a41; - } - { const float d = D(ii, k, 8); - h4 += 0.20000000298023224f * d * a42; - h5 += 0.20000000298023224f * d * a43; - h6 += 0.20000000298023224f * d * a44; - h7 += 0.20000000298023224f * d * a45; - h8 += 0.20000000298023224f * d * a46; - } - { const float d = D(ii, k, 9); - h1 += 0.3333333432674408f * d * a14; - h2 += 0.3333333432674408f * d * a15; - h3 += 0.3333333432674408f * d * a16; - } - { const float d = D(ii, k, 10); - h9 += 0.1428571492433548f * d * a80; - h10 += 0.1428571492433548f * d * a81; - h11 += 0.1428571492433548f * d * a82; - h12 += 0.1428571492433548f * d * a83; - h13 += 0.1428571492433548f * d * a84; - h14 += 0.1428571492433548f * d * a85; - h15 += 0.1428571492433548f * d * a86; - } - { const float d = D(ii, k, 11); - h0 += 1.0f * d * a4; - } - { const float d = D(ii, k, 12); - h4 += 0.20000000298023224f * d * a47; - h5 += 0.20000000298023224f * d * a48; - h6 += 0.20000000298023224f * d * a49; - h7 += 0.20000000298023224f * d * a50; - h8 += 0.20000000298023224f * d * a51; - } - { const float d = D(ii, k, 13); - h16 += 0.1111111119389534f * d * a132; - h17 += 0.1111111119389534f * d * a133; - h18 += 0.1111111119389534f * d * a134; - h19 += 0.1111111119389534f * d * a135; - h20 += 0.1111111119389534f * d * a136; - h21 += 0.1111111119389534f * d * a137; - h22 += 0.1111111119389534f * d * a138; - h23 += 0.1111111119389534f * d * a139; - h24 += 0.1111111119389534f * d * a140; - } - { const float d = D(ii, k, 14); - h1 += 1.0f * d * a0; - } - { const float d = D(ii, k, 15); - h2 += 1.0f * d * a0; - } - { const float d = D(ii, k, 16); - h3 += 1.0f * d * a0; - } - { const float d = D(ii, k, 17); - h1 += 1.0f * d * a1; - } - { const float d = D(ii, k, 18); - h2 += 1.0f * d * a1; - } - { const float d = D(ii, k, 19); - h3 += 1.0f * d * a1; - } - { const float d = D(ii, k, 20); - h0 += 1.0f * d * a8; - } - { const float d = D(ii, k, 21); - h0 += 1.0f * d * a9; - } - { const float d = D(ii, k, 22); - h0 += 1.0f * d * a10; - } - { const float d = D(ii, k, 23); - h6 += -0.22360679507255554f * d * a8; - h8 += -0.3872983455657959f * d * a8; - h5 += 0.3872983455657959f * d * a9; - h4 += 0.3872983455657959f * d * a10; - } - { const float d = D(ii, k, 24); - h5 += 0.3872983455657959f * d * a8; - h6 += 0.4472135901451111f * d * a9; - h7 += 0.3872983455657959f * d * a10; - } - { const float d = D(ii, k, 25); - h4 += 0.3872983455657959f * d * a8; - h7 += 0.3872983455657959f * d * a9; - h6 += -0.22360679507255554f * d * a10; - h8 += 0.3872983455657959f * d * a10; - } - { const float d = D(ii, k, 26); - h8 += 0.26726123690605164f * d * a52; - h7 += 0.2182178944349289f * d * a53; - h6 += 0.23904572427272797f * d * a54; - h8 += 0.0690065547823906f * d * a54; - h5 += -0.16903084516525269f * d * a55; - h4 += -0.0690065547823906f * d * a56; - h5 += -0.2182178944349289f * d * a57; - h4 += -0.26726123690605164f * d * a58; - } - { const float d = D(ii, k, 27); - h4 += 0.2182178944349289f * d * a53; - h5 += 0.2760262191295624f * d * a54; - h6 += 0.29277002811431885f * d * a55; - h7 += 0.2760262191295624f * d * a56; - h8 += 0.2182178944349289f * d * a57; - } - { const float d = D(ii, k, 28); - h4 += 0.26726123690605164f * d * a52; - h5 += 0.2182178944349289f * d * a53; - h4 += -0.0690065547823906f * d * a54; - h7 += -0.16903084516525269f * d * a55; - h6 += 0.23904572427272797f * d * a56; - h8 += -0.0690065547823906f * d * a56; - h7 += 0.2182178944349289f * d * a57; - h8 += 0.26726123690605164f * d * a58; - } - { const float d = D(ii, k, 29); - h1 += 1.0f * d * a2; - } - { const float d = D(ii, k, 30); - h2 += 1.0f * d * a2; - } - { const float d = D(ii, k, 31); - h3 += 1.0f * d * a2; - } - { const float d = D(ii, k, 32); - h3 += 0.3872983455657959f * d * a27; - h2 += 0.3872983455657959f * d * a28; - h1 += -0.22360679507255554f * d * a29; - h1 += -0.3872983455657959f * d * a31; - } - { const float d = D(ii, k, 33); - h1 += 0.3872983455657959f * d * a28; - h2 += 0.4472135901451111f * d * a29; - h3 += 0.3872983455657959f * d * a30; - } - { const float d = D(ii, k, 34); - h1 += 0.3872983455657959f * d * a27; - h3 += -0.22360679507255554f * d * a29; - h2 += 0.3872983455657959f * d * a30; - h3 += 0.3872983455657959f * d * a31; - } - { const float d = D(ii, k, 35); - h13 += -0.0690065547823906f * d * a27; - h15 += -0.26726123690605164f * d * a27; - h12 += -0.16903084516525269f * d * a28; - h14 += -0.2182178944349289f * d * a28; - h11 += 0.23904572427272797f * d * a29; - h10 += 0.2182178944349289f * d * a30; - h9 += 0.26726123690605164f * d * a31; - h11 += 0.0690065547823906f * d * a31; - } - { const float d = D(ii, k, 36); - h10 += 0.2182178944349289f * d * a27; - h11 += 0.2760262191295624f * d * a28; - h12 += 0.29277002811431885f * d * a29; - h13 += 0.2760262191295624f * d * a30; - h14 += 0.2182178944349289f * d * a31; - } - { const float d = D(ii, k, 37); - h9 += 0.26726123690605164f * d * a27; - h11 += -0.0690065547823906f * d * a27; - h10 += 0.2182178944349289f * d * a28; - h13 += 0.23904572427272797f * d * a29; - h12 += -0.16903084516525269f * d * a30; - h14 += 0.2182178944349289f * d * a30; - h13 += -0.0690065547823906f * d * a31; - h15 += 0.26726123690605164f * d * a31; - } - { const float d = D(ii, k, 38); - h15 += 0.20412415266036987f * d * a87; - h14 += 0.1767766922712326f * d * a88; - h13 += 0.14940357208251953f * d * a89; - h15 += 0.03857583925127983f * d * a89; - h12 += 0.17251639068126678f * d * a90; - h14 += 0.06681530922651291f * d * a90; - h11 += -0.13363061845302582f * d * a91; - h10 += -0.06681530922651291f * d * a92; - h9 += -0.03857583925127983f * d * a93; - h11 += -0.14940357208251953f * d * a93; - h10 += -0.1767766922712326f * d * a94; - h9 += -0.20412415266036987f * d * a95; - } - { const float d = D(ii, k, 39); - h9 += 0.14433756470680237f * d * a88; - h10 += 0.18898223340511322f * d * a89; - h11 += 0.21128855645656586f * d * a90; - h12 += 0.2182178944349289f * d * a91; - h13 += 0.21128855645656586f * d * a92; - h14 += 0.18898223340511322f * d * a93; - h15 += 0.14433756470680237f * d * a94; - } - { const float d = D(ii, k, 40); - h9 += 0.20412415266036987f * d * a87; - h10 += 0.1767766922712326f * d * a88; - h9 += -0.03857583925127983f * d * a89; - h11 += 0.14940357208251953f * d * a89; - h10 += -0.06681530922651291f * d * a90; - h13 += -0.13363061845302582f * d * a91; - h12 += 0.17251639068126678f * d * a92; - h14 += -0.06681530922651291f * d * a92; - h13 += 0.14940357208251953f * d * a93; - h15 += -0.03857583925127983f * d * a93; - h14 += 0.1767766922712326f * d * a94; - h15 += 0.20412415266036987f * d * a95; - } - { const float d = D(ii, k, 41); - h3 += 0.3872983455657959f * d * a32; - h2 += 0.3872983455657959f * d * a33; - h1 += -0.22360679507255554f * d * a34; - h1 += -0.3872983455657959f * d * a36; - } - { const float d = D(ii, k, 42); - h1 += 0.3872983455657959f * d * a33; - h2 += 0.4472135901451111f * d * a34; - h3 += 0.3872983455657959f * d * a35; - } - { const float d = D(ii, k, 43); - h1 += 0.3872983455657959f * d * a32; - h3 += -0.22360679507255554f * d * a34; - h2 += 0.3872983455657959f * d * a35; - h3 += 0.3872983455657959f * d * a36; - } - { const float d = D(ii, k, 44); - h13 += -0.0690065547823906f * d * a32; - h15 += -0.26726123690605164f * d * a32; - h12 += -0.16903084516525269f * d * a33; - h14 += -0.2182178944349289f * d * a33; - h11 += 0.23904572427272797f * d * a34; - h10 += 0.2182178944349289f * d * a35; - h9 += 0.26726123690605164f * d * a36; - h11 += 0.0690065547823906f * d * a36; - } - { const float d = D(ii, k, 45); - h10 += 0.2182178944349289f * d * a32; - h11 += 0.2760262191295624f * d * a33; - h12 += 0.29277002811431885f * d * a34; - h13 += 0.2760262191295624f * d * a35; - h14 += 0.2182178944349289f * d * a36; - } - { const float d = D(ii, k, 46); - h9 += 0.26726123690605164f * d * a32; - h11 += -0.0690065547823906f * d * a32; - h10 += 0.2182178944349289f * d * a33; - h13 += 0.23904572427272797f * d * a34; - h12 += -0.16903084516525269f * d * a35; - h14 += 0.2182178944349289f * d * a35; - h13 += -0.0690065547823906f * d * a36; - h15 += 0.26726123690605164f * d * a36; - } - { const float d = D(ii, k, 47); - h15 += 0.20412415266036987f * d * a96; - h14 += 0.1767766922712326f * d * a97; - h13 += 0.14940357208251953f * d * a98; - h15 += 0.03857583925127983f * d * a98; - h12 += 0.17251639068126678f * d * a99; - h14 += 0.06681530922651291f * d * a99; - h11 += -0.13363061845302582f * d * a100; - h10 += -0.06681530922651291f * d * a101; - h9 += -0.03857583925127983f * d * a102; - h11 += -0.14940357208251953f * d * a102; - h10 += -0.1767766922712326f * d * a103; - h9 += -0.20412415266036987f * d * a104; - } - { const float d = D(ii, k, 48); - h9 += 0.14433756470680237f * d * a97; - h10 += 0.18898223340511322f * d * a98; - h11 += 0.21128855645656586f * d * a99; - h12 += 0.2182178944349289f * d * a100; - h13 += 0.21128855645656586f * d * a101; - h14 += 0.18898223340511322f * d * a102; - h15 += 0.14433756470680237f * d * a103; - } - { const float d = D(ii, k, 49); - h9 += 0.20412415266036987f * d * a96; - h10 += 0.1767766922712326f * d * a97; - h9 += -0.03857583925127983f * d * a98; - h11 += 0.14940357208251953f * d * a98; - h10 += -0.06681530922651291f * d * a99; - h13 += -0.13363061845302582f * d * a100; - h12 += 0.17251639068126678f * d * a101; - h14 += -0.06681530922651291f * d * a101; - h13 += 0.14940357208251953f * d * a102; - h15 += -0.03857583925127983f * d * a102; - h14 += 0.1767766922712326f * d * a103; - h15 += 0.20412415266036987f * d * a104; - } - { const float d = D(ii, k, 50); - h0 += 1.0f * d * a11; - } - { const float d = D(ii, k, 51); - h0 += 1.0f * d * a12; - } - { const float d = D(ii, k, 52); - h0 += 1.0f * d * a13; - } - { const float d = D(ii, k, 53); - h6 += -0.22360679507255554f * d * a11; - h8 += -0.3872983455657959f * d * a11; - h5 += 0.3872983455657959f * d * a12; - h4 += 0.3872983455657959f * d * a13; - } - { const float d = D(ii, k, 54); - h5 += 0.3872983455657959f * d * a11; - h6 += 0.4472135901451111f * d * a12; - h7 += 0.3872983455657959f * d * a13; - } - { const float d = D(ii, k, 55); - h4 += 0.3872983455657959f * d * a11; - h7 += 0.3872983455657959f * d * a12; - h6 += -0.22360679507255554f * d * a13; - h8 += 0.3872983455657959f * d * a13; - } - { const float d = D(ii, k, 56); - h8 += 0.26726123690605164f * d * a66; - h7 += 0.2182178944349289f * d * a67; - h6 += 0.23904572427272797f * d * a68; - h8 += 0.0690065547823906f * d * a68; - h5 += -0.16903084516525269f * d * a69; - h4 += -0.0690065547823906f * d * a70; - h5 += -0.2182178944349289f * d * a71; - h4 += -0.26726123690605164f * d * a72; - } - { const float d = D(ii, k, 57); - h4 += 0.2182178944349289f * d * a67; - h5 += 0.2760262191295624f * d * a68; - h6 += 0.29277002811431885f * d * a69; - h7 += 0.2760262191295624f * d * a70; - h8 += 0.2182178944349289f * d * a71; - } - { const float d = D(ii, k, 58); - h4 += 0.26726123690605164f * d * a66; - h5 += 0.2182178944349289f * d * a67; - h4 += -0.0690065547823906f * d * a68; - h7 += -0.16903084516525269f * d * a69; - h6 += 0.23904572427272797f * d * a70; - h8 += -0.0690065547823906f * d * a70; - h7 += 0.2182178944349289f * d * a71; - h8 += 0.26726123690605164f * d * a72; - } - { const float d = D(ii, k, 59); - h22 += -0.03857583925127983f * d * a66; - h24 += -0.20412415266036987f * d * a66; - h21 += -0.06681530922651291f * d * a67; - h23 += -0.1767766922712326f * d * a67; - h20 += -0.13363061845302582f * d * a68; - h22 += -0.14940357208251953f * d * a68; - h19 += 0.17251639068126678f * d * a69; - h18 += 0.14940357208251953f * d * a70; - h17 += 0.1767766922712326f * d * a71; - h19 += 0.06681530922651291f * d * a71; - h16 += 0.20412415266036987f * d * a72; - h18 += 0.03857583925127983f * d * a72; - } - { const float d = D(ii, k, 60); - h17 += 0.14433756470680237f * d * a66; - h18 += 0.18898223340511322f * d * a67; - h19 += 0.21128855645656586f * d * a68; - h20 += 0.2182178944349289f * d * a69; - h21 += 0.21128855645656586f * d * a70; - h22 += 0.18898223340511322f * d * a71; - h23 += 0.14433756470680237f * d * a72; - } - { const float d = D(ii, k, 61); - h16 += 0.20412415266036987f * d * a66; - h18 += -0.03857583925127983f * d * a66; - h17 += 0.1767766922712326f * d * a67; - h19 += -0.06681530922651291f * d * a67; - h18 += 0.14940357208251953f * d * a68; - h21 += 0.17251639068126678f * d * a69; - h20 += -0.13363061845302582f * d * a70; - h22 += 0.14940357208251953f * d * a70; - h21 += -0.06681530922651291f * d * a71; - h23 += 0.1767766922712326f * d * a71; - h22 += -0.03857583925127983f * d * a72; - h24 += 0.20412415266036987f * d * a72; - } - { const float d = D(ii, k, 62); - h1 += 1.0f * d * a3; - } - { const float d = D(ii, k, 63); - h2 += 1.0f * d * a3; - } - { const float d = D(ii, k, 64); - h3 += 1.0f * d * a3; - } - { const float d = D(ii, k, 65); - h3 += 0.3872983455657959f * d * a37; - h2 += 0.3872983455657959f * d * a38; - h1 += -0.22360679507255554f * d * a39; - h1 += -0.3872983455657959f * d * a41; - } - { const float d = D(ii, k, 66); - h1 += 0.3872983455657959f * d * a38; - h2 += 0.4472135901451111f * d * a39; - h3 += 0.3872983455657959f * d * a40; - } - { const float d = D(ii, k, 67); - h1 += 0.3872983455657959f * d * a37; - h3 += -0.22360679507255554f * d * a39; - h2 += 0.3872983455657959f * d * a40; - h3 += 0.3872983455657959f * d * a41; - } - { const float d = D(ii, k, 68); - h13 += -0.0690065547823906f * d * a37; - h15 += -0.26726123690605164f * d * a37; - h12 += -0.16903084516525269f * d * a38; - h14 += -0.2182178944349289f * d * a38; - h11 += 0.23904572427272797f * d * a39; - h10 += 0.2182178944349289f * d * a40; - h9 += 0.26726123690605164f * d * a41; - h11 += 0.0690065547823906f * d * a41; - } - { const float d = D(ii, k, 69); - h10 += 0.2182178944349289f * d * a37; - h11 += 0.2760262191295624f * d * a38; - h12 += 0.29277002811431885f * d * a39; - h13 += 0.2760262191295624f * d * a40; - h14 += 0.2182178944349289f * d * a41; - } - { const float d = D(ii, k, 70); - h9 += 0.26726123690605164f * d * a37; - h11 += -0.0690065547823906f * d * a37; - h10 += 0.2182178944349289f * d * a38; - h13 += 0.23904572427272797f * d * a39; - h12 += -0.16903084516525269f * d * a40; - h14 += 0.2182178944349289f * d * a40; - h13 += -0.0690065547823906f * d * a41; - h15 += 0.26726123690605164f * d * a41; - } - { const float d = D(ii, k, 71); - h22 += -0.03857583925127983f * d * a73; - h24 += -0.20412415266036987f * d * a73; - h21 += -0.06681530922651291f * d * a74; - h23 += -0.1767766922712326f * d * a74; - h20 += -0.13363061845302582f * d * a75; - h22 += -0.14940357208251953f * d * a75; - h19 += 0.17251639068126678f * d * a76; - h18 += 0.14940357208251953f * d * a77; - h17 += 0.1767766922712326f * d * a78; - h19 += 0.06681530922651291f * d * a78; - h16 += 0.20412415266036987f * d * a79; - h18 += 0.03857583925127983f * d * a79; - } - { const float d = D(ii, k, 72); - h17 += 0.14433756470680237f * d * a73; - h18 += 0.18898223340511322f * d * a74; - h19 += 0.21128855645656586f * d * a75; - h20 += 0.2182178944349289f * d * a76; - h21 += 0.21128855645656586f * d * a77; - h22 += 0.18898223340511322f * d * a78; - h23 += 0.14433756470680237f * d * a79; - } - { const float d = D(ii, k, 73); - h16 += 0.20412415266036987f * d * a73; - h18 += -0.03857583925127983f * d * a73; - h17 += 0.1767766922712326f * d * a74; - h19 += -0.06681530922651291f * d * a74; - h18 += 0.14940357208251953f * d * a75; - h21 += 0.17251639068126678f * d * a76; - h20 += -0.13363061845302582f * d * a77; - h22 += 0.14940357208251953f * d * a77; - h21 += -0.06681530922651291f * d * a78; - h23 += 0.1767766922712326f * d * a78; - h22 += -0.03857583925127983f * d * a79; - h24 += 0.20412415266036987f * d * a79; - } - { const float d = D(ii, k, 74); - h3 += 0.3872983455657959f * d * a42; - h2 += 0.3872983455657959f * d * a43; - h1 += -0.22360679507255554f * d * a44; - h1 += -0.3872983455657959f * d * a46; - } - { const float d = D(ii, k, 75); - h1 += 0.3872983455657959f * d * a43; - h2 += 0.4472135901451111f * d * a44; - h3 += 0.3872983455657959f * d * a45; - } - { const float d = D(ii, k, 76); - h1 += 0.3872983455657959f * d * a42; - h3 += -0.22360679507255554f * d * a44; - h2 += 0.3872983455657959f * d * a45; - h3 += 0.3872983455657959f * d * a46; - } - { const float d = D(ii, k, 77); - h13 += -0.0690065547823906f * d * a42; - h15 += -0.26726123690605164f * d * a42; - h12 += -0.16903084516525269f * d * a43; - h14 += -0.2182178944349289f * d * a43; - h11 += 0.23904572427272797f * d * a44; - h10 += 0.2182178944349289f * d * a45; - h9 += 0.26726123690605164f * d * a46; - h11 += 0.0690065547823906f * d * a46; - } - { const float d = D(ii, k, 78); - h10 += 0.2182178944349289f * d * a42; - h11 += 0.2760262191295624f * d * a43; - h12 += 0.29277002811431885f * d * a44; - h13 += 0.2760262191295624f * d * a45; - h14 += 0.2182178944349289f * d * a46; - } - { const float d = D(ii, k, 79); - h9 += 0.26726123690605164f * d * a42; - h11 += -0.0690065547823906f * d * a42; - h10 += 0.2182178944349289f * d * a43; - h13 += 0.23904572427272797f * d * a44; - h12 += -0.16903084516525269f * d * a45; - h14 += 0.2182178944349289f * d * a45; - h13 += -0.0690065547823906f * d * a46; - h15 += 0.26726123690605164f * d * a46; - } - { const float d = D(ii, k, 80); - h15 += 0.20412415266036987f * d * a123; - h14 += 0.1767766922712326f * d * a124; - h13 += 0.14940357208251953f * d * a125; - h15 += 0.03857583925127983f * d * a125; - h12 += 0.17251639068126678f * d * a126; - h14 += 0.06681530922651291f * d * a126; - h11 += -0.13363061845302582f * d * a127; - h10 += -0.06681530922651291f * d * a128; - h9 += -0.03857583925127983f * d * a129; - h11 += -0.14940357208251953f * d * a129; - h10 += -0.1767766922712326f * d * a130; - h9 += -0.20412415266036987f * d * a131; - } - { const float d = D(ii, k, 81); - h9 += 0.14433756470680237f * d * a124; - h10 += 0.18898223340511322f * d * a125; - h11 += 0.21128855645656586f * d * a126; - h12 += 0.2182178944349289f * d * a127; - h13 += 0.21128855645656586f * d * a128; - h14 += 0.18898223340511322f * d * a129; - h15 += 0.14433756470680237f * d * a130; - } - { const float d = D(ii, k, 82); - h9 += 0.20412415266036987f * d * a123; - h10 += 0.1767766922712326f * d * a124; - h9 += -0.03857583925127983f * d * a125; - h11 += 0.14940357208251953f * d * a125; - h10 += -0.06681530922651291f * d * a126; - h13 += -0.13363061845302582f * d * a127; - h12 += 0.17251639068126678f * d * a128; - h14 += -0.06681530922651291f * d * a128; - h13 += 0.14940357208251953f * d * a129; - h15 += -0.03857583925127983f * d * a129; - h14 += 0.1767766922712326f * d * a130; - h15 += 0.20412415266036987f * d * a131; - } - { const float d = D(ii, k, 83); - h0 += 1.0f * d * a14; - } - { const float d = D(ii, k, 84); - h0 += 1.0f * d * a15; - } - { const float d = D(ii, k, 85); - h0 += 1.0f * d * a16; - } - { const float d = D(ii, k, 86); - h6 += -0.22360679507255554f * d * a14; - h8 += -0.3872983455657959f * d * a14; - h5 += 0.3872983455657959f * d * a15; - h4 += 0.3872983455657959f * d * a16; - } - { const float d = D(ii, k, 87); - h5 += 0.3872983455657959f * d * a14; - h6 += 0.4472135901451111f * d * a15; - h7 += 0.3872983455657959f * d * a16; - } - { const float d = D(ii, k, 88); - h4 += 0.3872983455657959f * d * a14; - h7 += 0.3872983455657959f * d * a15; - h6 += -0.22360679507255554f * d * a16; - h8 += 0.3872983455657959f * d * a16; - } - { const float d = D(ii, k, 89); - h8 += 0.26726123690605164f * d * a80; - h7 += 0.2182178944349289f * d * a81; - h6 += 0.23904572427272797f * d * a82; - h8 += 0.0690065547823906f * d * a82; - h5 += -0.16903084516525269f * d * a83; - h4 += -0.0690065547823906f * d * a84; - h5 += -0.2182178944349289f * d * a85; - h4 += -0.26726123690605164f * d * a86; - } - { const float d = D(ii, k, 90); - h4 += 0.2182178944349289f * d * a81; - h5 += 0.2760262191295624f * d * a82; - h6 += 0.29277002811431885f * d * a83; - h7 += 0.2760262191295624f * d * a84; - h8 += 0.2182178944349289f * d * a85; - } - { const float d = D(ii, k, 91); - h4 += 0.26726123690605164f * d * a80; - h5 += 0.2182178944349289f * d * a81; - h4 += -0.0690065547823906f * d * a82; - h7 += -0.16903084516525269f * d * a83; - h6 += 0.23904572427272797f * d * a84; - h8 += -0.0690065547823906f * d * a84; - h7 += 0.2182178944349289f * d * a85; - h8 += 0.26726123690605164f * d * a86; - } - { const float d = D(ii, k, 92); - h22 += -0.03857583925127983f * d * a80; - h24 += -0.20412415266036987f * d * a80; - h21 += -0.06681530922651291f * d * a81; - h23 += -0.1767766922712326f * d * a81; - h20 += -0.13363061845302582f * d * a82; - h22 += -0.14940357208251953f * d * a82; - h19 += 0.17251639068126678f * d * a83; - h18 += 0.14940357208251953f * d * a84; - h17 += 0.1767766922712326f * d * a85; - h19 += 0.06681530922651291f * d * a85; - h16 += 0.20412415266036987f * d * a86; - h18 += 0.03857583925127983f * d * a86; - } - { const float d = D(ii, k, 93); - h17 += 0.14433756470680237f * d * a80; - h18 += 0.18898223340511322f * d * a81; - h19 += 0.21128855645656586f * d * a82; - h20 += 0.2182178944349289f * d * a83; - h21 += 0.21128855645656586f * d * a84; - h22 += 0.18898223340511322f * d * a85; - h23 += 0.14433756470680237f * d * a86; - } - { const float d = D(ii, k, 94); - h16 += 0.20412415266036987f * d * a80; - h18 += -0.03857583925127983f * d * a80; - h17 += 0.1767766922712326f * d * a81; - h19 += -0.06681530922651291f * d * a81; - h18 += 0.14940357208251953f * d * a82; - h21 += 0.17251639068126678f * d * a83; - h20 += -0.13363061845302582f * d * a84; - h22 += 0.14940357208251953f * d * a84; - h21 += -0.06681530922651291f * d * a85; - h23 += 0.1767766922712326f * d * a85; - h22 += -0.03857583925127983f * d * a86; - h24 += 0.20412415266036987f * d * a86; - } - { const float d = D(ii, k, 95); - h1 += 1.0f * d * a4; - } - { const float d = D(ii, k, 96); - h2 += 1.0f * d * a4; - } - { const float d = D(ii, k, 97); - h3 += 1.0f * d * a4; - } - { const float d = D(ii, k, 98); - h3 += 0.3872983455657959f * d * a47; - h2 += 0.3872983455657959f * d * a48; - h1 += -0.22360679507255554f * d * a49; - h1 += -0.3872983455657959f * d * a51; - } - { const float d = D(ii, k, 99); - h1 += 0.3872983455657959f * d * a48; - h2 += 0.4472135901451111f * d * a49; - h3 += 0.3872983455657959f * d * a50; - } - { const float d = D(ii, k, 100); - h1 += 0.3872983455657959f * d * a47; - h3 += -0.22360679507255554f * d * a49; - h2 += 0.3872983455657959f * d * a50; - h3 += 0.3872983455657959f * d * a51; - } - { const float d = D(ii, k, 101); - h13 += -0.0690065547823906f * d * a47; - h15 += -0.26726123690605164f * d * a47; - h12 += -0.16903084516525269f * d * a48; - h14 += -0.2182178944349289f * d * a48; - h11 += 0.23904572427272797f * d * a49; - h10 += 0.2182178944349289f * d * a50; - h9 += 0.26726123690605164f * d * a51; - h11 += 0.0690065547823906f * d * a51; - } - { const float d = D(ii, k, 102); - h10 += 0.2182178944349289f * d * a47; - h11 += 0.2760262191295624f * d * a48; - h12 += 0.29277002811431885f * d * a49; - h13 += 0.2760262191295624f * d * a50; - h14 += 0.2182178944349289f * d * a51; - } - { const float d = D(ii, k, 103); - h9 += 0.26726123690605164f * d * a47; - h11 += -0.0690065547823906f * d * a47; - h10 += 0.2182178944349289f * d * a48; - h13 += 0.23904572427272797f * d * a49; - h12 += -0.16903084516525269f * d * a50; - h14 += 0.2182178944349289f * d * a50; - h13 += -0.0690065547823906f * d * a51; - h15 += 0.26726123690605164f * d * a51; - } - { const float d = D(ii, k, 104); - h15 += 0.20412415266036987f * d * a132; - h14 += 0.1767766922712326f * d * a133; - h13 += 0.14940357208251953f * d * a134; - h15 += 0.03857583925127983f * d * a134; - h12 += 0.17251639068126678f * d * a135; - h14 += 0.06681530922651291f * d * a135; - h11 += -0.13363061845302582f * d * a136; - h10 += -0.06681530922651291f * d * a137; - h9 += -0.03857583925127983f * d * a138; - h11 += -0.14940357208251953f * d * a138; - h10 += -0.1767766922712326f * d * a139; - h9 += -0.20412415266036987f * d * a140; - } - { const float d = D(ii, k, 105); - h9 += 0.14433756470680237f * d * a133; - h10 += 0.18898223340511322f * d * a134; - h11 += 0.21128855645656586f * d * a135; - h12 += 0.2182178944349289f * d * a136; - h13 += 0.21128855645656586f * d * a137; - h14 += 0.18898223340511322f * d * a138; - h15 += 0.14433756470680237f * d * a139; - } - { const float d = D(ii, k, 106); - h9 += 0.20412415266036987f * d * a132; - h10 += 0.1767766922712326f * d * a133; - h9 += -0.03857583925127983f * d * a134; - h11 += 0.14940357208251953f * d * a134; - h10 += -0.06681530922651291f * d * a135; - h13 += -0.13363061845302582f * d * a136; - h12 += 0.17251639068126678f * d * a137; - h14 += -0.06681530922651291f * d * a137; - h13 += 0.14940357208251953f * d * a138; - h15 += -0.03857583925127983f * d * a138; - h14 += 0.1767766922712326f * d * a139; - h15 += 0.20412415266036987f * d * a140; - } - dR(ii, k, 0) += h0; - dR(ii, k, 1) += h1; - dR(ii, k, 2) += h2; - dR(ii, k, 3) += h3; - dR(ii, k, 4) += h4; - dR(ii, k, 5) += h5; - dR(ii, k, 6) += h6; - dR(ii, k, 7) += h7; - dR(ii, k, 8) += h8; - dR(ii, k, 9) += h9; - dR(ii, k, 10) += h10; - dR(ii, k, 11) += h11; - dR(ii, k, 12) += h12; - dR(ii, k, 13) += h13; - dR(ii, k, 14) += h14; - dR(ii, k, 15) += h15; - dR(ii, k, 16) += h16; - dR(ii, k, 17) += h17; - dR(ii, k, 18) += h18; - dR(ii, k, 19) += h19; - dR(ii, k, 20) += h20; - dR(ii, k, 21) += h21; - dR(ii, k, 22) += h22; - dR(ii, k, 23) += h23; - dR(ii, k, 24) += h24; - } -} - -constexpr int nt_AAAA = 2138; -constexpr int tab_AAAA[2138][3] = {{0,0,0}, {1,0,1}, {2,0,2}, {3,0,3}, {4,0,4}, {8,5,5}, {9,6,5}, {10,7,5}, {11,5,6}, {12,6,6}, {13,7,6}, {14,5,7}, {15,6,7}, {16,7,7}, {1,1,8}, {2,1,9}, {3,1,10}, {4,1,11}, {27,17,12}, {28,18,12}, {29,19,12}, {30,20,12}, {31,21,12}, {32,17,13}, {33,18,13}, {34,19,13}, {35,20,13}, {36,21,13}, {37,17,14}, {38,18,14}, {39,19,14}, {40,20,14}, {41,21,14}, {42,17,15}, {43,18,15}, {44,19,15}, {45,20,15}, {46,21,15}, {47,17,16}, {48,18,16}, {49,19,16}, {50,20,16}, {51,21,16}, {27,22,17}, {28,23,17}, {29,24,17}, {30,25,17}, {31,26,17}, {37,22,18}, {38,23,18}, {39,24,18}, {40,25,18}, {41,26,18}, {42,22,19}, {43,23,19}, {44,24,19}, {45,25,19}, {46,26,19}, {47,22,20}, {48,23,20}, {49,24,20}, {50,25,20}, {51,26,20}, {8,8,21}, {9,9,21}, {10,10,21}, {11,8,22}, {12,9,22}, {13,10,22}, {14,8,23}, {15,9,23}, {16,10,23}, {52,52,24}, {53,53,24}, {54,54,24}, {55,55,24}, {56,56,24}, {57,57,24}, {58,58,24}, {66,52,25}, {67,53,25}, {68,54,25}, {69,55,25}, {70,56,25}, {71,57,25}, {72,58,25}, {80,52,26}, {81,53,26}, {82,54,26}, {83,55,26}, {84,56,26}, {85,57,26}, {86,58,26}, {2,2,27}, {3,2,28}, {4,2,29}, {32,27,30}, {33,28,30}, {34,29,30}, {35,30,30}, {36,31,30}, {37,27,31}, {38,28,31}, {39,29,31}, {40,30,31}, {41,31,31}, {42,27,32}, {43,28,32}, {44,29,32}, {45,30,32}, {46,31,32}, {47,27,33}, {48,28,33}, {49,29,33}, {50,30,33}, {51,31,33}, {96,87,34}, {97,88,34}, {98,89,34}, {99,90,34}, {100,91,34}, {101,92,34}, {102,93,34}, {103,94,34}, {104,95,34}, {105,87,35}, {106,88,35}, {107,89,35}, {108,90,35}, {109,91,35}, {110,92,35}, {111,93,35}, {112,94,35}, {113,95,35}, {132,87,36}, {133,88,36}, {134,89,36}, {135,90,36}, {136,91,36}, {137,92,36}, {138,93,36}, {139,94,36}, {140,95,36}, {80,59,37}, {81,60,37}, {82,61,37}, {83,62,37}, {84,63,37}, {85,64,37}, {86,65,37}, {32,32,38}, {33,33,38}, {34,34,38}, {35,35,38}, {36,36,38}, {37,32,39}, {38,33,39}, {39,34,39}, {40,35,39}, {41,36,39}, {42,32,40}, {43,33,40}, {44,34,40}, {45,35,40}, {46,36,40}, {47,32,41}, {48,33,41}, {49,34,41}, {50,35,41}, {51,36,41}, {96,96,42}, {97,97,42}, {98,98,42}, {99,99,42}, {100,100,42}, {101,101,42}, {102,102,42}, {103,103,42}, {104,104,42}, {123,96,43}, {124,97,43}, {125,98,43}, {126,99,43}, {127,100,43}, {128,101,43}, {129,102,43}, {130,103,43}, {131,104,43}, {132,96,44}, {133,97,44}, {134,98,44}, {135,99,44}, {136,100,44}, {137,101,44}, {138,102,44}, {139,103,44}, {140,104,44}, {11,11,45}, {12,12,45}, {13,13,45}, {14,11,46}, {15,12,46}, {16,13,46}, {66,66,47}, {67,67,47}, {68,68,47}, {69,69,47}, {70,70,47}, {71,71,47}, {72,72,47}, {73,66,48}, {74,67,48}, {75,68,48}, {76,69,48}, {77,70,48}, {78,71,48}, {79,72,48}, {80,66,49}, {81,67,49}, {82,68,49}, {83,69,49}, {84,70,49}, {85,71,49}, {86,72,49}, {3,3,50}, {4,3,51}, {37,37,52}, {38,38,52}, {39,39,52}, {40,40,52}, {41,41,52}, {42,37,53}, {43,38,53}, {44,39,53}, {45,40,53}, {46,41,53}, {47,37,54}, {48,38,54}, {49,39,54}, {50,40,54}, {51,41,54}, {105,105,55}, {106,106,55}, {107,107,55}, {108,108,55}, {109,109,55}, {110,110,55}, {111,111,55}, {112,112,55}, {113,113,55}, {123,105,56}, {124,106,56}, {125,107,56}, {126,108,56}, {127,109,56}, {128,110,56}, {129,111,56}, {130,112,56}, {131,113,56}, {132,105,57}, {133,106,57}, {134,107,57}, {135,108,57}, {136,109,57}, {137,110,57}, {138,111,57}, {139,112,57}, {140,113,57}, {132,114,58}, {133,115,58}, {134,116,58}, {135,117,58}, {136,118,58}, {137,119,58}, {138,120,58}, {139,121,58}, {140,122,58}, {73,73,59}, {74,74,59}, {75,75,59}, {76,76,59}, {77,77,59}, {78,78,59}, {79,79,59}, {80,73,60}, {81,74,60}, {82,75,60}, {83,76,60}, {84,77,60}, {85,78,60}, {86,79,60}, {42,42,61}, {43,43,61}, {44,44,61}, {45,45,61}, {46,46,61}, {47,42,62}, {48,43,62}, {49,44,62}, {50,45,62}, {51,46,62}, {123,123,63}, {124,124,63}, {125,125,63}, {126,126,63}, {127,127,63}, {128,128,63}, {129,129,63}, {130,130,63}, {131,131,63}, {14,14,64}, {15,15,64}, {16,16,64}, {80,80,65}, {81,81,65}, {82,82,65}, {83,83,65}, {84,84,65}, {85,85,65}, {86,86,65}, {4,4,66}, {47,47,67}, {48,48,67}, {49,49,67}, {50,50,67}, {51,51,67}, {132,132,68}, {133,133,68}, {134,134,68}, {135,135,68}, {136,136,68}, {137,137,68}, {138,138,68}, {139,139,68}, {140,140,68}, {5,0,69}, {6,0,70}, {7,0,71}, {5,1,72}, {6,1,73}, {7,1,74}, {5,2,75}, {6,2,76}, {7,2,77}, {5,3,78}, {6,3,79}, {7,3,80}, {5,4,81}, {6,4,82}, {7,4,83}, {17,10,84}, {18,9,84}, {19,8,84}, {21,8,84}, {18,8,85}, {19,9,85}, {20,10,85}, {17,8,86}, {19,10,86}, {20,9,86}, {21,10,86}, {17,13,87}, {18,12,87}, {19,11,87}, {21,11,87}, {18,11,88}, {19,12,88}, {20,13,88}, {17,11,89}, {19,13,89}, {20,12,89}, {21,13,89}, {17,16,90}, {18,15,90}, {19,14,90}, {21,14,90}, {18,14,91}, {19,15,91}, {20,16,91}, {17,14,92}, {19,16,92}, {20,15,92}, {21,16,92}, {22,10,93}, {23,9,93}, {24,8,93}, {26,8,93}, {23,8,94}, {24,9,94}, {25,10,94}, {22,8,95}, {24,10,95}, {25,9,95}, {26,10,95}, {22,13,96}, {23,12,96}, {24,11,96}, {26,11,96}, {23,11,97}, {24,12,97}, {25,13,97}, {22,11,98}, {24,13,98}, {25,12,98}, {26,13,98}, {22,16,99}, {23,15,99}, {24,14,99}, {26,14,99}, {23,14,100}, {24,15,100}, {25,16,100}, {22,14,101}, {24,16,101}, {25,15,101}, {26,16,101}, {8,0,102}, {9,0,103}, {10,0,104}, {8,1,105}, {9,1,106}, {10,1,107}, {8,2,108}, {9,2,109}, {10,2,110}, {8,3,111}, {9,3,112}, {10,3,113}, {8,4,114}, {9,4,115}, {10,4,116}, {52,21,117}, {53,20,117}, {54,19,117}, {54,21,117}, {55,18,117}, {56,17,117}, {57,18,117}, {58,17,117}, {53,17,118}, {54,18,118}, {55,19,118}, {56,20,118}, {57,21,118}, {52,17,119}, {53,18,119}, {54,17,119}, {55,20,119}, {56,19,119}, {56,21,119}, {57,20,119}, {58,21,119}, {52,26,120}, {53,25,120}, {54,24,120}, {54,26,120}, {55,23,120}, {56,22,120}, {57,23,120}, {58,22,120}, {53,22,121}, {54,23,121}, {55,24,121}, {56,25,121}, {57,26,121}, {52,22,122}, {53,23,122}, {54,22,122}, {55,25,122}, {56,24,122}, {56,26,122}, {57,25,122}, {58,26,122}, {52,31,123}, {53,30,123}, {54,29,123}, {54,31,123}, {55,28,123}, {56,27,123}, {57,28,123}, {58,27,123}, {53,27,124}, {54,28,124}, {55,29,124}, {56,30,124}, {57,31,124}, {52,27,125}, {53,28,125}, {54,27,125}, {55,30,125}, {56,29,125}, {56,31,125}, {57,30,125}, {58,31,125}, {52,36,126}, {53,35,126}, {54,34,126}, {54,36,126}, {55,33,126}, {56,32,126}, {57,33,126}, {58,32,126}, {53,32,127}, {54,33,127}, {55,34,127}, {56,35,127}, {57,36,127}, {52,32,128}, {53,33,128}, {54,32,128}, {55,35,128}, {56,34,128}, {56,36,128}, {57,35,128}, {58,36,128}, {52,41,129}, {53,40,129}, {54,39,129}, {54,41,129}, {55,38,129}, {56,37,129}, {57,38,129}, {58,37,129}, {53,37,130}, {54,38,130}, {55,39,130}, {56,40,130}, {57,41,130}, {52,37,131}, {53,38,131}, {54,37,131}, {55,40,131}, {56,39,131}, {56,41,131}, {57,40,131}, {58,41,131}, {52,46,132}, {53,45,132}, {54,44,132}, {54,46,132}, {55,43,132}, {56,42,132}, {57,43,132}, {58,42,132}, {53,42,133}, {54,43,133}, {55,44,133}, {56,45,133}, {57,46,133}, {52,42,134}, {53,43,134}, {54,42,134}, {55,45,134}, {56,44,134}, {56,46,134}, {57,45,134}, {58,46,134}, {52,51,135}, {53,50,135}, {54,49,135}, {54,51,135}, {55,48,135}, {56,47,135}, {57,48,135}, {58,47,135}, {53,47,136}, {54,48,136}, {55,49,136}, {56,50,136}, {57,51,136}, {52,47,137}, {53,48,137}, {54,47,137}, {55,50,137}, {56,49,137}, {56,51,137}, {57,50,137}, {58,51,137}, {27,7,138}, {28,6,138}, {29,5,138}, {31,5,138}, {28,5,139}, {29,6,139}, {30,7,139}, {27,5,140}, {29,7,140}, {30,6,140}, {31,7,140}, {27,10,141}, {28,9,141}, {29,8,141}, {31,8,141}, {28,8,142}, {29,9,142}, {30,10,142}, {27,8,143}, {29,10,143}, {30,9,143}, {31,10,143}, {27,13,144}, {28,12,144}, {29,11,144}, {31,11,144}, {28,11,145}, {29,12,145}, {30,13,145}, {27,11,146}, {29,13,146}, {30,12,146}, {31,13,146}, {27,16,147}, {28,15,147}, {29,14,147}, {31,14,147}, {28,14,148}, {29,15,148}, {30,16,148}, {27,14,149}, {29,16,149}, {30,15,149}, {31,16,149}, {87,65,150}, {88,64,150}, {89,63,150}, {89,65,150}, {90,62,150}, {90,64,150}, {91,61,150}, {92,60,150}, {93,59,150}, {93,61,150}, {94,60,150}, {95,59,150}, {88,59,151}, {89,60,151}, {90,61,151}, {91,62,151}, {92,63,151}, {93,64,151}, {94,65,151}, {87,59,152}, {88,60,152}, {89,59,152}, {89,61,152}, {90,60,152}, {91,63,152}, {92,62,152}, {92,64,152}, {93,63,152}, {93,65,152}, {94,64,152}, {95,65,152}, {87,72,153}, {88,71,153}, {89,70,153}, {89,72,153}, {90,69,153}, {90,71,153}, {91,68,153}, {92,67,153}, {93,66,153}, {93,68,153}, {94,67,153}, {95,66,153}, {88,66,154}, {89,67,154}, {90,68,154}, {91,69,154}, {92,70,154}, {93,71,154}, {94,72,154}, {87,66,155}, {88,67,155}, {89,66,155}, {89,68,155}, {90,67,155}, {91,70,155}, {92,69,155}, {92,71,155}, {93,70,155}, {93,72,155}, {94,71,155}, {95,72,155}, {87,79,156}, {88,78,156}, {89,77,156}, {89,79,156}, {90,76,156}, {90,78,156}, {91,75,156}, {92,74,156}, {93,73,156}, {93,75,156}, {94,74,156}, {95,73,156}, {88,73,157}, {89,74,157}, {90,75,157}, {91,76,157}, {92,77,157}, {93,78,157}, {94,79,157}, {87,73,158}, {88,74,158}, {89,73,158}, {89,75,158}, {90,74,158}, {91,77,158}, {92,76,158}, {92,78,158}, {93,77,158}, {93,79,158}, {94,78,158}, {95,79,158}, {87,86,159}, {88,85,159}, {89,84,159}, {89,86,159}, {90,83,159}, {90,85,159}, {91,82,159}, {92,81,159}, {93,80,159}, {93,82,159}, {94,81,159}, {95,80,159}, {88,80,160}, {89,81,160}, {90,82,160}, {91,83,160}, {92,84,160}, {93,85,160}, {94,86,160}, {87,80,161}, {88,81,161}, {89,80,161}, {89,82,161}, {90,81,161}, {91,84,161}, {92,83,161}, {92,85,161}, {93,84,161}, {93,86,161}, {94,85,161}, {95,86,161}, {59,31,162}, {60,30,162}, {61,29,162}, {61,31,162}, {62,28,162}, {63,27,162}, {64,28,162}, {65,27,162}, {60,27,163}, {61,28,163}, {62,29,163}, {63,30,163}, {64,31,163}, {59,27,164}, {60,28,164}, {61,27,164}, {62,30,164}, {63,29,164}, {63,31,164}, {64,30,164}, {65,31,164}, {59,36,165}, {60,35,165}, {61,34,165}, {61,36,165}, {62,33,165}, {63,32,165}, {64,33,165}, {65,32,165}, {60,32,166}, {61,33,166}, {62,34,166}, {63,35,166}, {64,36,166}, {59,32,167}, {60,33,167}, {61,32,167}, {62,35,167}, {63,34,167}, {63,36,167}, {64,35,167}, {65,36,167}, {59,41,168}, {60,40,168}, {61,39,168}, {61,41,168}, {62,38,168}, {63,37,168}, {64,38,168}, {65,37,168}, {60,37,169}, {61,38,169}, {62,39,169}, {63,40,169}, {64,41,169}, {59,37,170}, {60,38,170}, {61,37,170}, {62,40,170}, {63,39,170}, {63,41,170}, {64,40,170}, {65,41,170}, {59,46,171}, {60,45,171}, {61,44,171}, {61,46,171}, {62,43,171}, {63,42,171}, {64,43,171}, {65,42,171}, {60,42,172}, {61,43,172}, {62,44,172}, {63,45,172}, {64,46,172}, {59,42,173}, {60,43,173}, {61,42,173}, {62,45,173}, {63,44,173}, {63,46,173}, {64,45,173}, {65,46,173}, {59,51,174}, {60,50,174}, {61,49,174}, {61,51,174}, {62,48,174}, {63,47,174}, {64,48,174}, {65,47,174}, {60,47,175}, {61,48,175}, {62,49,175}, {63,50,175}, {64,51,175}, {59,47,176}, {60,48,176}, {61,47,176}, {62,50,176}, {63,49,176}, {63,51,176}, {64,50,176}, {65,51,176}, {32,7,177}, {33,6,177}, {34,5,177}, {36,5,177}, {33,5,178}, {34,6,178}, {35,7,178}, {32,5,179}, {34,7,179}, {35,6,179}, {36,7,179}, {32,10,180}, {33,9,180}, {34,8,180}, {36,8,180}, {33,8,181}, {34,9,181}, {35,10,181}, {32,8,182}, {34,10,182}, {35,9,182}, {36,10,182}, {32,13,183}, {33,12,183}, {34,11,183}, {36,11,183}, {33,11,184}, {34,12,184}, {35,13,184}, {32,11,185}, {34,13,185}, {35,12,185}, {36,13,185}, {32,16,186}, {33,15,186}, {34,14,186}, {36,14,186}, {33,14,187}, {34,15,187}, {35,16,187}, {32,14,188}, {34,16,188}, {35,15,188}, {36,16,188}, {96,58,189}, {97,57,189}, {98,56,189}, {98,58,189}, {99,55,189}, {99,57,189}, {100,54,189}, {101,53,189}, {102,52,189}, {102,54,189}, {103,53,189}, {104,52,189}, {97,52,190}, {98,53,190}, {99,54,190}, {100,55,190}, {101,56,190}, {102,57,190}, {103,58,190}, {96,52,191}, {97,53,191}, {98,52,191}, {98,54,191}, {99,53,191}, {100,56,191}, {101,55,191}, {101,57,191}, {102,56,191}, {102,58,191}, {103,57,191}, {104,58,191}, {96,65,192}, {97,64,192}, {98,63,192}, {98,65,192}, {99,62,192}, {99,64,192}, {100,61,192}, {101,60,192}, {102,59,192}, {102,61,192}, {103,60,192}, {104,59,192}, {97,59,193}, {98,60,193}, {99,61,193}, {100,62,193}, {101,63,193}, {102,64,193}, {103,65,193}, {96,59,194}, {97,60,194}, {98,59,194}, {98,61,194}, {99,60,194}, {100,63,194}, {101,62,194}, {101,64,194}, {102,63,194}, {102,65,194}, {103,64,194}, {104,65,194}, {96,72,195}, {97,71,195}, {98,70,195}, {98,72,195}, {99,69,195}, {99,71,195}, {100,68,195}, {101,67,195}, {102,66,195}, {102,68,195}, {103,67,195}, {104,66,195}, {97,66,196}, {98,67,196}, {99,68,196}, {100,69,196}, {101,70,196}, {102,71,196}, {103,72,196}, {96,66,197}, {97,67,197}, {98,66,197}, {98,68,197}, {99,67,197}, {100,70,197}, {101,69,197}, {101,71,197}, {102,70,197}, {102,72,197}, {103,71,197}, {104,72,197}, {96,79,198}, {97,78,198}, {98,77,198}, {98,79,198}, {99,76,198}, {99,78,198}, {100,75,198}, {101,74,198}, {102,73,198}, {102,75,198}, {103,74,198}, {104,73,198}, {97,73,199}, {98,74,199}, {99,75,199}, {100,76,199}, {101,77,199}, {102,78,199}, {103,79,199}, {96,73,200}, {97,74,200}, {98,73,200}, {98,75,200}, {99,74,200}, {100,77,200}, {101,76,200}, {101,78,200}, {102,77,200}, {102,79,200}, {103,78,200}, {104,79,200}, {96,86,201}, {97,85,201}, {98,84,201}, {98,86,201}, {99,83,201}, {99,85,201}, {100,82,201}, {101,81,201}, {102,80,201}, {102,82,201}, {103,81,201}, {104,80,201}, {97,80,202}, {98,81,202}, {99,82,202}, {100,83,202}, {101,84,202}, {102,85,202}, {103,86,202}, {96,80,203}, {97,81,203}, {98,80,203}, {98,82,203}, {99,81,203}, {100,84,203}, {101,83,203}, {101,85,203}, {102,84,203}, {102,86,203}, {103,85,203}, {104,86,203}, {11,0,204}, {12,0,205}, {13,0,206}, {11,1,207}, {12,1,208}, {13,1,209}, {11,2,210}, {12,2,211}, {13,2,212}, {11,3,213}, {12,3,214}, {13,3,215}, {11,4,216}, {12,4,217}, {13,4,218}, {66,21,219}, {67,20,219}, {68,19,219}, {68,21,219}, {69,18,219}, {70,17,219}, {71,18,219}, {72,17,219}, {67,17,220}, {68,18,220}, {69,19,220}, {70,20,220}, {71,21,220}, {66,17,221}, {67,18,221}, {68,17,221}, {69,20,221}, {70,19,221}, {70,21,221}, {71,20,221}, {72,21,221}, {66,26,222}, {67,25,222}, {68,24,222}, {68,26,222}, {69,23,222}, {70,22,222}, {71,23,222}, {72,22,222}, {67,22,223}, {68,23,223}, {69,24,223}, {70,25,223}, {71,26,223}, {66,22,224}, {67,23,224}, {68,22,224}, {69,25,224}, {70,24,224}, {70,26,224}, {71,25,224}, {72,26,224}, {66,31,225}, {67,30,225}, {68,29,225}, {68,31,225}, {69,28,225}, {70,27,225}, {71,28,225}, {72,27,225}, {67,27,226}, {68,28,226}, {69,29,226}, {70,30,226}, {71,31,226}, {66,27,227}, {67,28,227}, {68,27,227}, {69,30,227}, {70,29,227}, {70,31,227}, {71,30,227}, {72,31,227}, {66,36,228}, {67,35,228}, {68,34,228}, {68,36,228}, {69,33,228}, {70,32,228}, {71,33,228}, {72,32,228}, {67,32,229}, {68,33,229}, {69,34,229}, {70,35,229}, {71,36,229}, {66,32,230}, {67,33,230}, {68,32,230}, {69,35,230}, {70,34,230}, {70,36,230}, {71,35,230}, {72,36,230}, {66,46,231}, {67,45,231}, {68,44,231}, {68,46,231}, {69,43,231}, {70,42,231}, {71,43,231}, {72,42,231}, {67,42,232}, {68,43,232}, {69,44,232}, {70,45,232}, {71,46,232}, {66,42,233}, {67,43,233}, {68,42,233}, {69,45,233}, {70,44,233}, {70,46,233}, {71,45,233}, {72,46,233}, {66,51,234}, {67,50,234}, {68,49,234}, {68,51,234}, {69,48,234}, {70,47,234}, {71,48,234}, {72,47,234}, {67,47,235}, {68,48,235}, {69,49,235}, {70,50,235}, {71,51,235}, {66,47,236}, {67,48,236}, {68,47,236}, {69,50,236}, {70,49,236}, {70,51,236}, {71,50,236}, {72,51,236}, {37,7,237}, {38,6,237}, {39,5,237}, {41,5,237}, {38,5,238}, {39,6,238}, {40,7,238}, {37,5,239}, {39,7,239}, {40,6,239}, {41,7,239}, {37,10,240}, {38,9,240}, {39,8,240}, {41,8,240}, {38,8,241}, {39,9,241}, {40,10,241}, {37,8,242}, {39,10,242}, {40,9,242}, {41,10,242}, {37,13,243}, {38,12,243}, {39,11,243}, {41,11,243}, {38,11,244}, {39,12,244}, {40,13,244}, {37,11,245}, {39,13,245}, {40,12,245}, {41,13,245}, {37,16,246}, {38,15,246}, {39,14,246}, {41,14,246}, {38,14,247}, {39,15,247}, {40,16,247}, {37,14,248}, {39,16,248}, {40,15,248}, {41,16,248}, {105,58,249}, {106,57,249}, {107,56,249}, {107,58,249}, {108,55,249}, {108,57,249}, {109,54,249}, {110,53,249}, {111,52,249}, {111,54,249}, {112,53,249}, {113,52,249}, {106,52,250}, {107,53,250}, {108,54,250}, {109,55,250}, {110,56,250}, {111,57,250}, {112,58,250}, {105,52,251}, {106,53,251}, {107,52,251}, {107,54,251}, {108,53,251}, {109,56,251}, {110,55,251}, {110,57,251}, {111,56,251}, {111,58,251}, {112,57,251}, {113,58,251}, {105,72,252}, {106,71,252}, {107,70,252}, {107,72,252}, {108,69,252}, {108,71,252}, {109,68,252}, {110,67,252}, {111,66,252}, {111,68,252}, {112,67,252}, {113,66,252}, {106,66,253}, {107,67,253}, {108,68,253}, {109,69,253}, {110,70,253}, {111,71,253}, {112,72,253}, {105,66,254}, {106,67,254}, {107,66,254}, {107,68,254}, {108,67,254}, {109,70,254}, {110,69,254}, {110,71,254}, {111,70,254}, {111,72,254}, {112,71,254}, {113,72,254}, {105,79,255}, {106,78,255}, {107,77,255}, {107,79,255}, {108,76,255}, {108,78,255}, {109,75,255}, {110,74,255}, {111,73,255}, {111,75,255}, {112,74,255}, {113,73,255}, {106,73,256}, {107,74,256}, {108,75,256}, {109,76,256}, {110,77,256}, {111,78,256}, {112,79,256}, {105,73,257}, {106,74,257}, {107,73,257}, {107,75,257}, {108,74,257}, {109,77,257}, {110,76,257}, {110,78,257}, {111,77,257}, {111,79,257}, {112,78,257}, {113,79,257}, {105,86,258}, {106,85,258}, {107,84,258}, {107,86,258}, {108,83,258}, {108,85,258}, {109,82,258}, {110,81,258}, {111,80,258}, {111,82,258}, {112,81,258}, {113,80,258}, {106,80,259}, {107,81,259}, {108,82,259}, {109,83,259}, {110,84,259}, {111,85,259}, {112,86,259}, {105,80,260}, {106,81,260}, {107,80,260}, {107,82,260}, {108,81,260}, {109,84,260}, {110,83,260}, {110,85,260}, {111,84,260}, {111,86,260}, {112,85,260}, {113,86,260}, {114,72,261}, {115,71,261}, {116,70,261}, {116,72,261}, {117,69,261}, {117,71,261}, {118,68,261}, {119,67,261}, {120,66,261}, {120,68,261}, {121,67,261}, {122,66,261}, {115,66,262}, {116,67,262}, {117,68,262}, {118,69,262}, {119,70,262}, {120,71,262}, {121,72,262}, {114,66,263}, {115,67,263}, {116,66,263}, {116,68,263}, {117,67,263}, {118,70,263}, {119,69,263}, {119,71,263}, {120,70,263}, {120,72,263}, {121,71,263}, {122,72,263}, {114,79,264}, {115,78,264}, {116,77,264}, {116,79,264}, {117,76,264}, {117,78,264}, {118,75,264}, {119,74,264}, {120,73,264}, {120,75,264}, {121,74,264}, {122,73,264}, {115,73,265}, {116,74,265}, {117,75,265}, {118,76,265}, {119,77,265}, {120,78,265}, {121,79,265}, {114,73,266}, {115,74,266}, {116,73,266}, {116,75,266}, {117,74,266}, {118,77,266}, {119,76,266}, {119,78,266}, {120,77,266}, {120,79,266}, {121,78,266}, {122,79,266}, {114,86,267}, {115,85,267}, {116,84,267}, {116,86,267}, {117,83,267}, {117,85,267}, {118,82,267}, {119,81,267}, {120,80,267}, {120,82,267}, {121,81,267}, {122,80,267}, {115,80,268}, {116,81,268}, {117,82,268}, {118,83,268}, {119,84,268}, {120,85,268}, {121,86,268}, {114,80,269}, {115,81,269}, {116,80,269}, {116,82,269}, {117,81,269}, {118,84,269}, {119,83,269}, {119,85,269}, {120,84,269}, {120,86,269}, {121,85,269}, {122,86,269}, {73,21,270}, {74,20,270}, {75,19,270}, {75,21,270}, {76,18,270}, {77,17,270}, {78,18,270}, {79,17,270}, {74,17,271}, {75,18,271}, {76,19,271}, {77,20,271}, {78,21,271}, {73,17,272}, {74,18,272}, {75,17,272}, {76,20,272}, {77,19,272}, {77,21,272}, {78,20,272}, {79,21,272}, {73,31,273}, {74,30,273}, {75,29,273}, {75,31,273}, {76,28,273}, {77,27,273}, {78,28,273}, {79,27,273}, {74,27,274}, {75,28,274}, {76,29,274}, {77,30,274}, {78,31,274}, {73,27,275}, {74,28,275}, {75,27,275}, {76,30,275}, {77,29,275}, {77,31,275}, {78,30,275}, {79,31,275}, {73,36,276}, {74,35,276}, {75,34,276}, {75,36,276}, {76,33,276}, {77,32,276}, {78,33,276}, {79,32,276}, {74,32,277}, {75,33,277}, {76,34,277}, {77,35,277}, {78,36,277}, {73,32,278}, {74,33,278}, {75,32,278}, {76,35,278}, {77,34,278}, {77,36,278}, {78,35,278}, {79,36,278}, {73,41,279}, {74,40,279}, {75,39,279}, {75,41,279}, {76,38,279}, {77,37,279}, {78,38,279}, {79,37,279}, {74,37,280}, {75,38,280}, {76,39,280}, {77,40,280}, {78,41,280}, {73,37,281}, {74,38,281}, {75,37,281}, {76,40,281}, {77,39,281}, {77,41,281}, {78,40,281}, {79,41,281}, {73,46,282}, {74,45,282}, {75,44,282}, {75,46,282}, {76,43,282}, {77,42,282}, {78,43,282}, {79,42,282}, {74,42,283}, {75,43,283}, {76,44,283}, {77,45,283}, {78,46,283}, {73,42,284}, {74,43,284}, {75,42,284}, {76,45,284}, {77,44,284}, {77,46,284}, {78,45,284}, {79,46,284}, {73,51,285}, {74,50,285}, {75,49,285}, {75,51,285}, {76,48,285}, {77,47,285}, {78,48,285}, {79,47,285}, {74,47,286}, {75,48,286}, {76,49,286}, {77,50,286}, {78,51,286}, {73,47,287}, {74,48,287}, {75,47,287}, {76,50,287}, {77,49,287}, {77,51,287}, {78,50,287}, {79,51,287}, {42,7,288}, {43,6,288}, {44,5,288}, {46,5,288}, {43,5,289}, {44,6,289}, {45,7,289}, {42,5,290}, {44,7,290}, {45,6,290}, {46,7,290}, {42,10,291}, {43,9,291}, {44,8,291}, {46,8,291}, {43,8,292}, {44,9,292}, {45,10,292}, {42,8,293}, {44,10,293}, {45,9,293}, {46,10,293}, {42,13,294}, {43,12,294}, {44,11,294}, {46,11,294}, {43,11,295}, {44,12,295}, {45,13,295}, {42,11,296}, {44,13,296}, {45,12,296}, {46,13,296}, {42,16,297}, {43,15,297}, {44,14,297}, {46,14,297}, {43,14,298}, {44,15,298}, {45,16,298}, {42,14,299}, {44,16,299}, {45,15,299}, {46,16,299}, {123,58,300}, {124,57,300}, {125,56,300}, {125,58,300}, {126,55,300}, {126,57,300}, {127,54,300}, {128,53,300}, {129,52,300}, {129,54,300}, {130,53,300}, {131,52,300}, {124,52,301}, {125,53,301}, {126,54,301}, {127,55,301}, {128,56,301}, {129,57,301}, {130,58,301}, {123,52,302}, {124,53,302}, {125,52,302}, {125,54,302}, {126,53,302}, {127,56,302}, {128,55,302}, {128,57,302}, {129,56,302}, {129,58,302}, {130,57,302}, {131,58,302}, {123,65,303}, {124,64,303}, {125,63,303}, {125,65,303}, {126,62,303}, {126,64,303}, {127,61,303}, {128,60,303}, {129,59,303}, {129,61,303}, {130,60,303}, {131,59,303}, {124,59,304}, {125,60,304}, {126,61,304}, {127,62,304}, {128,63,304}, {129,64,304}, {130,65,304}, {123,59,305}, {124,60,305}, {125,59,305}, {125,61,305}, {126,60,305}, {127,63,305}, {128,62,305}, {128,64,305}, {129,63,305}, {129,65,305}, {130,64,305}, {131,65,305}, {123,72,306}, {124,71,306}, {125,70,306}, {125,72,306}, {126,69,306}, {126,71,306}, {127,68,306}, {128,67,306}, {129,66,306}, {129,68,306}, {130,67,306}, {131,66,306}, {124,66,307}, {125,67,307}, {126,68,307}, {127,69,307}, {128,70,307}, {129,71,307}, {130,72,307}, {123,66,308}, {124,67,308}, {125,66,308}, {125,68,308}, {126,67,308}, {127,70,308}, {128,69,308}, {128,71,308}, {129,70,308}, {129,72,308}, {130,71,308}, {131,72,308}, {123,79,309}, {124,78,309}, {125,77,309}, {125,79,309}, {126,76,309}, {126,78,309}, {127,75,309}, {128,74,309}, {129,73,309}, {129,75,309}, {130,74,309}, {131,73,309}, {124,73,310}, {125,74,310}, {126,75,310}, {127,76,310}, {128,77,310}, {129,78,310}, {130,79,310}, {123,73,311}, {124,74,311}, {125,73,311}, {125,75,311}, {126,74,311}, {127,77,311}, {128,76,311}, {128,78,311}, {129,77,311}, {129,79,311}, {130,78,311}, {131,79,311}, {123,86,312}, {124,85,312}, {125,84,312}, {125,86,312}, {126,83,312}, {126,85,312}, {127,82,312}, {128,81,312}, {129,80,312}, {129,82,312}, {130,81,312}, {131,80,312}, {124,80,313}, {125,81,313}, {126,82,313}, {127,83,313}, {128,84,313}, {129,85,313}, {130,86,313}, {123,80,314}, {124,81,314}, {125,80,314}, {125,82,314}, {126,81,314}, {127,84,314}, {128,83,314}, {128,85,314}, {129,84,314}, {129,86,314}, {130,85,314}, {131,86,314}, {14,0,315}, {15,0,316}, {16,0,317}, {14,1,318}, {15,1,319}, {16,1,320}, {14,2,321}, {15,2,322}, {16,2,323}, {14,3,324}, {15,3,325}, {16,3,326}, {14,4,327}, {15,4,328}, {16,4,329}, {80,21,330}, {81,20,330}, {82,19,330}, {82,21,330}, {83,18,330}, {84,17,330}, {85,18,330}, {86,17,330}, {81,17,331}, {82,18,331}, {83,19,331}, {84,20,331}, {85,21,331}, {80,17,332}, {81,18,332}, {82,17,332}, {83,20,332}, {84,19,332}, {84,21,332}, {85,20,332}, {86,21,332}, {80,26,333}, {81,25,333}, {82,24,333}, {82,26,333}, {83,23,333}, {84,22,333}, {85,23,333}, {86,22,333}, {81,22,334}, {82,23,334}, {83,24,334}, {84,25,334}, {85,26,334}, {80,22,335}, {81,23,335}, {82,22,335}, {83,25,335}, {84,24,335}, {84,26,335}, {85,25,335}, {86,26,335}, {80,31,336}, {81,30,336}, {82,29,336}, {82,31,336}, {83,28,336}, {84,27,336}, {85,28,336}, {86,27,336}, {81,27,337}, {82,28,337}, {83,29,337}, {84,30,337}, {85,31,337}, {80,27,338}, {81,28,338}, {82,27,338}, {83,30,338}, {84,29,338}, {84,31,338}, {85,30,338}, {86,31,338}, {80,36,339}, {81,35,339}, {82,34,339}, {82,36,339}, {83,33,339}, {84,32,339}, {85,33,339}, {86,32,339}, {81,32,340}, {82,33,340}, {83,34,340}, {84,35,340}, {85,36,340}, {80,32,341}, {81,33,341}, {82,32,341}, {83,35,341}, {84,34,341}, {84,36,341}, {85,35,341}, {86,36,341}, {80,41,342}, {81,40,342}, {82,39,342}, {82,41,342}, {83,38,342}, {84,37,342}, {85,38,342}, {86,37,342}, {81,37,343}, {82,38,343}, {83,39,343}, {84,40,343}, {85,41,343}, {80,37,344}, {81,38,344}, {82,37,344}, {83,40,344}, {84,39,344}, {84,41,344}, {85,40,344}, {86,41,344}, {80,46,345}, {81,45,345}, {82,44,345}, {82,46,345}, {83,43,345}, {84,42,345}, {85,43,345}, {86,42,345}, {81,42,346}, {82,43,346}, {83,44,346}, {84,45,346}, {85,46,346}, {80,42,347}, {81,43,347}, {82,42,347}, {83,45,347}, {84,44,347}, {84,46,347}, {85,45,347}, {86,46,347}, {80,51,348}, {81,50,348}, {82,49,348}, {82,51,348}, {83,48,348}, {84,47,348}, {85,48,348}, {86,47,348}, {81,47,349}, {82,48,349}, {83,49,349}, {84,50,349}, {85,51,349}, {80,47,350}, {81,48,350}, {82,47,350}, {83,50,350}, {84,49,350}, {84,51,350}, {85,50,350}, {86,51,350}, {47,7,351}, {48,6,351}, {49,5,351}, {51,5,351}, {48,5,352}, {49,6,352}, {50,7,352}, {47,5,353}, {49,7,353}, {50,6,353}, {51,7,353}, {47,10,354}, {48,9,354}, {49,8,354}, {51,8,354}, {48,8,355}, {49,9,355}, {50,10,355}, {47,8,356}, {49,10,356}, {50,9,356}, {51,10,356}, {47,13,357}, {48,12,357}, {49,11,357}, {51,11,357}, {48,11,358}, {49,12,358}, {50,13,358}, {47,11,359}, {49,13,359}, {50,12,359}, {51,13,359}, {47,16,360}, {48,15,360}, {49,14,360}, {51,14,360}, {48,14,361}, {49,15,361}, {50,16,361}, {47,14,362}, {49,16,362}, {50,15,362}, {51,16,362}, {132,58,363}, {133,57,363}, {134,56,363}, {134,58,363}, {135,55,363}, {135,57,363}, {136,54,363}, {137,53,363}, {138,52,363}, {138,54,363}, {139,53,363}, {140,52,363}, {133,52,364}, {134,53,364}, {135,54,364}, {136,55,364}, {137,56,364}, {138,57,364}, {139,58,364}, {132,52,365}, {133,53,365}, {134,52,365}, {134,54,365}, {135,53,365}, {136,56,365}, {137,55,365}, {137,57,365}, {138,56,365}, {138,58,365}, {139,57,365}, {140,58,365}, {132,65,366}, {133,64,366}, {134,63,366}, {134,65,366}, {135,62,366}, {135,64,366}, {136,61,366}, {137,60,366}, {138,59,366}, {138,61,366}, {139,60,366}, {140,59,366}, {133,59,367}, {134,60,367}, {135,61,367}, {136,62,367}, {137,63,367}, {138,64,367}, {139,65,367}, {132,59,368}, {133,60,368}, {134,59,368}, {134,61,368}, {135,60,368}, {136,63,368}, {137,62,368}, {137,64,368}, {138,63,368}, {138,65,368}, {139,64,368}, {140,65,368}, {132,72,369}, {133,71,369}, {134,70,369}, {134,72,369}, {135,69,369}, {135,71,369}, {136,68,369}, {137,67,369}, {138,66,369}, {138,68,369}, {139,67,369}, {140,66,369}, {133,66,370}, {134,67,370}, {135,68,370}, {136,69,370}, {137,70,370}, {138,71,370}, {139,72,370}, {132,66,371}, {133,67,371}, {134,66,371}, {134,68,371}, {135,67,371}, {136,70,371}, {137,69,371}, {137,71,371}, {138,70,371}, {138,72,371}, {139,71,371}, {140,72,371}, {132,79,372}, {133,78,372}, {134,77,372}, {134,79,372}, {135,76,372}, {135,78,372}, {136,75,372}, {137,74,372}, {138,73,372}, {138,75,372}, {139,74,372}, {140,73,372}, {133,73,373}, {134,74,373}, {135,75,373}, {136,76,373}, {137,77,373}, {138,78,373}, {139,79,373}, {132,73,374}, {133,74,374}, {134,73,374}, {134,75,374}, {135,74,374}, {136,77,374}, {137,76,374}, {137,78,374}, {138,77,374}, {138,79,374}, {139,78,374}, {140,79,374}, {132,86,375}, {133,85,375}, {134,84,375}, {134,86,375}, {135,83,375}, {135,85,375}, {136,82,375}, {137,81,375}, {138,80,375}, {138,82,375}, {139,81,375}, {140,80,375}, {133,80,376}, {134,81,376}, {135,82,376}, {136,83,376}, {137,84,376}, {138,85,376}, {139,86,376}, {132,80,377}, {133,81,377}, {134,80,377}, {134,82,377}, {135,81,377}, {136,84,377}, {137,83,377}, {137,85,377}, {138,84,377}, {138,86,377}, {139,85,377}, {140,86,377}}; -constexpr double cg_AAAA[2138] = {1.0, 1.0, 1.0, 1.0, 1.0, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 1.0, 1.0, 1.0, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 1.0, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 0.1111111119389534, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987, 0.20412415266036987, 0.1767766922712326, 0.14940357208251953, 0.03857583925127983, 0.17251639068126678, 0.06681530922651291, -0.13363061845302582, -0.06681530922651291, -0.03857583925127983, -0.14940357208251953, -0.1767766922712326, -0.20412415266036987, 0.14433756470680237, 0.18898223340511322, 0.21128855645656586, 0.2182178944349289, 0.21128855645656586, 0.18898223340511322, 0.14433756470680237, 0.20412415266036987, 0.1767766922712326, -0.03857583925127983, 0.14940357208251953, -0.06681530922651291, -0.13363061845302582, 0.17251639068126678, -0.06681530922651291, 0.14940357208251953, -0.03857583925127983, 0.1767766922712326, 0.20412415266036987}; - -template -KOKKOS_INLINE_FUNCTION void fwd_AAAA(const V &L, const V &R, const V &out, const int ii, const int k) -{ - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a4 = L(ii, k, 4); - const float a5 = L(ii, k, 5); - const float a6 = L(ii, k, 6); - const float a7 = L(ii, k, 7); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a13 = L(ii, k, 13); - const float a14 = L(ii, k, 14); - const float a15 = L(ii, k, 15); - const float a16 = L(ii, k, 16); - const float a17 = L(ii, k, 17); - const float a18 = L(ii, k, 18); - const float a19 = L(ii, k, 19); - const float a20 = L(ii, k, 20); - const float a21 = L(ii, k, 21); - const float a22 = L(ii, k, 22); - const float a23 = L(ii, k, 23); - const float a24 = L(ii, k, 24); - const float a25 = L(ii, k, 25); - const float a26 = L(ii, k, 26); - const float a27 = L(ii, k, 27); - const float a28 = L(ii, k, 28); - const float a29 = L(ii, k, 29); - const float a30 = L(ii, k, 30); - const float a31 = L(ii, k, 31); - const float a32 = L(ii, k, 32); - const float a33 = L(ii, k, 33); - const float a34 = L(ii, k, 34); - const float a35 = L(ii, k, 35); - const float a36 = L(ii, k, 36); - const float a37 = L(ii, k, 37); - const float a38 = L(ii, k, 38); - const float a39 = L(ii, k, 39); - const float a40 = L(ii, k, 40); - const float a41 = L(ii, k, 41); - const float a42 = L(ii, k, 42); - const float a43 = L(ii, k, 43); - const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); - const float a48 = L(ii, k, 48); - const float a49 = L(ii, k, 49); - const float a50 = L(ii, k, 50); - const float a51 = L(ii, k, 51); - const float a52 = L(ii, k, 52); - const float a53 = L(ii, k, 53); - const float a54 = L(ii, k, 54); - const float a55 = L(ii, k, 55); - const float a56 = L(ii, k, 56); - const float a57 = L(ii, k, 57); - const float a58 = L(ii, k, 58); - const float a59 = L(ii, k, 59); - const float a60 = L(ii, k, 60); - const float a61 = L(ii, k, 61); - const float a62 = L(ii, k, 62); - const float a63 = L(ii, k, 63); - const float a64 = L(ii, k, 64); - const float a65 = L(ii, k, 65); - const float a66 = L(ii, k, 66); - const float a67 = L(ii, k, 67); - const float a68 = L(ii, k, 68); - const float a69 = L(ii, k, 69); - const float a70 = L(ii, k, 70); - const float a71 = L(ii, k, 71); - const float a72 = L(ii, k, 72); - const float a73 = L(ii, k, 73); - const float a74 = L(ii, k, 74); - const float a75 = L(ii, k, 75); - const float a76 = L(ii, k, 76); - const float a77 = L(ii, k, 77); - const float a78 = L(ii, k, 78); - const float a79 = L(ii, k, 79); - const float a80 = L(ii, k, 80); - const float a81 = L(ii, k, 81); - const float a82 = L(ii, k, 82); - const float a83 = L(ii, k, 83); - const float a84 = L(ii, k, 84); - const float a85 = L(ii, k, 85); - const float a86 = L(ii, k, 86); - const float a87 = L(ii, k, 87); - const float a88 = L(ii, k, 88); - const float a89 = L(ii, k, 89); - const float a90 = L(ii, k, 90); - const float a91 = L(ii, k, 91); - const float a92 = L(ii, k, 92); - const float a93 = L(ii, k, 93); - const float a94 = L(ii, k, 94); - const float a95 = L(ii, k, 95); - const float a96 = L(ii, k, 96); - const float a97 = L(ii, k, 97); - const float a98 = L(ii, k, 98); - const float a99 = L(ii, k, 99); - const float a100 = L(ii, k, 100); - const float a101 = L(ii, k, 101); - const float a102 = L(ii, k, 102); - const float a103 = L(ii, k, 103); - const float a104 = L(ii, k, 104); - const float a105 = L(ii, k, 105); - const float a106 = L(ii, k, 106); - const float a107 = L(ii, k, 107); - const float a108 = L(ii, k, 108); - const float a109 = L(ii, k, 109); - const float a110 = L(ii, k, 110); - const float a111 = L(ii, k, 111); - const float a112 = L(ii, k, 112); - const float a113 = L(ii, k, 113); - const float a114 = L(ii, k, 114); - const float a115 = L(ii, k, 115); - const float a116 = L(ii, k, 116); - const float a117 = L(ii, k, 117); - const float a118 = L(ii, k, 118); - const float a119 = L(ii, k, 119); - const float a120 = L(ii, k, 120); - const float a121 = L(ii, k, 121); - const float a122 = L(ii, k, 122); - const float a123 = L(ii, k, 123); - const float a124 = L(ii, k, 124); - const float a125 = L(ii, k, 125); - const float a126 = L(ii, k, 126); - const float a127 = L(ii, k, 127); - const float a128 = L(ii, k, 128); - const float a129 = L(ii, k, 129); - const float a130 = L(ii, k, 130); - const float a131 = L(ii, k, 131); - const float a132 = L(ii, k, 132); - const float a133 = L(ii, k, 133); - const float a134 = L(ii, k, 134); - const float a135 = L(ii, k, 135); - const float a136 = L(ii, k, 136); - const float a137 = L(ii, k, 137); - const float a138 = L(ii, k, 138); - const float a139 = L(ii, k, 139); - const float a140 = L(ii, k, 140); - out(ii, k, 0) = 1.0f * a0 * a0; - out(ii, k, 1) = 1.0f * a1 * a0; - out(ii, k, 2) = 1.0f * a2 * a0; - out(ii, k, 3) = 1.0f * a3 * a0; - out(ii, k, 4) = 1.0f * a4 * a0; - out(ii, k, 5) = 0.3333333432674408f * a8 * a5 + 0.3333333432674408f * a9 * a6 + 0.3333333432674408f * a10 * a7; - out(ii, k, 6) = 0.3333333432674408f * a11 * a5 + 0.3333333432674408f * a12 * a6 + 0.3333333432674408f * a13 * a7; - out(ii, k, 7) = 0.3333333432674408f * a14 * a5 + 0.3333333432674408f * a15 * a6 + 0.3333333432674408f * a16 * a7; - out(ii, k, 8) = 1.0f * a1 * a1; - out(ii, k, 9) = 1.0f * a2 * a1; - out(ii, k, 10) = 1.0f * a3 * a1; - out(ii, k, 11) = 1.0f * a4 * a1; - out(ii, k, 12) = 0.20000000298023224f * a27 * a17 + 0.20000000298023224f * a28 * a18 + 0.20000000298023224f * a29 * a19 + 0.20000000298023224f * a30 * a20 + 0.20000000298023224f * a31 * a21; - out(ii, k, 13) = 0.20000000298023224f * a32 * a17 + 0.20000000298023224f * a33 * a18 + 0.20000000298023224f * a34 * a19 + 0.20000000298023224f * a35 * a20 + 0.20000000298023224f * a36 * a21; - out(ii, k, 14) = 0.20000000298023224f * a37 * a17 + 0.20000000298023224f * a38 * a18 + 0.20000000298023224f * a39 * a19 + 0.20000000298023224f * a40 * a20 + 0.20000000298023224f * a41 * a21; - out(ii, k, 15) = 0.20000000298023224f * a42 * a17 + 0.20000000298023224f * a43 * a18 + 0.20000000298023224f * a44 * a19 + 0.20000000298023224f * a45 * a20 + 0.20000000298023224f * a46 * a21; - out(ii, k, 16) = 0.20000000298023224f * a47 * a17 + 0.20000000298023224f * a48 * a18 + 0.20000000298023224f * a49 * a19 + 0.20000000298023224f * a50 * a20 + 0.20000000298023224f * a51 * a21; - out(ii, k, 17) = 0.20000000298023224f * a27 * a22 + 0.20000000298023224f * a28 * a23 + 0.20000000298023224f * a29 * a24 + 0.20000000298023224f * a30 * a25 + 0.20000000298023224f * a31 * a26; - out(ii, k, 18) = 0.20000000298023224f * a37 * a22 + 0.20000000298023224f * a38 * a23 + 0.20000000298023224f * a39 * a24 + 0.20000000298023224f * a40 * a25 + 0.20000000298023224f * a41 * a26; - out(ii, k, 19) = 0.20000000298023224f * a42 * a22 + 0.20000000298023224f * a43 * a23 + 0.20000000298023224f * a44 * a24 + 0.20000000298023224f * a45 * a25 + 0.20000000298023224f * a46 * a26; - out(ii, k, 20) = 0.20000000298023224f * a47 * a22 + 0.20000000298023224f * a48 * a23 + 0.20000000298023224f * a49 * a24 + 0.20000000298023224f * a50 * a25 + 0.20000000298023224f * a51 * a26; - out(ii, k, 21) = 0.3333333432674408f * a8 * a8 + 0.3333333432674408f * a9 * a9 + 0.3333333432674408f * a10 * a10; - out(ii, k, 22) = 0.3333333432674408f * a11 * a8 + 0.3333333432674408f * a12 * a9 + 0.3333333432674408f * a13 * a10; - out(ii, k, 23) = 0.3333333432674408f * a14 * a8 + 0.3333333432674408f * a15 * a9 + 0.3333333432674408f * a16 * a10; - out(ii, k, 24) = 0.1428571492433548f * a52 * a52 + 0.1428571492433548f * a53 * a53 + 0.1428571492433548f * a54 * a54 + 0.1428571492433548f * a55 * a55 + 0.1428571492433548f * a56 * a56 + 0.1428571492433548f * a57 * a57 + 0.1428571492433548f * a58 * a58; - out(ii, k, 25) = 0.1428571492433548f * a66 * a52 + 0.1428571492433548f * a67 * a53 + 0.1428571492433548f * a68 * a54 + 0.1428571492433548f * a69 * a55 + 0.1428571492433548f * a70 * a56 + 0.1428571492433548f * a71 * a57 + 0.1428571492433548f * a72 * a58; - out(ii, k, 26) = 0.1428571492433548f * a80 * a52 + 0.1428571492433548f * a81 * a53 + 0.1428571492433548f * a82 * a54 + 0.1428571492433548f * a83 * a55 + 0.1428571492433548f * a84 * a56 + 0.1428571492433548f * a85 * a57 + 0.1428571492433548f * a86 * a58; - out(ii, k, 27) = 1.0f * a2 * a2; - out(ii, k, 28) = 1.0f * a3 * a2; - out(ii, k, 29) = 1.0f * a4 * a2; - out(ii, k, 30) = 0.20000000298023224f * a32 * a27 + 0.20000000298023224f * a33 * a28 + 0.20000000298023224f * a34 * a29 + 0.20000000298023224f * a35 * a30 + 0.20000000298023224f * a36 * a31; - out(ii, k, 31) = 0.20000000298023224f * a37 * a27 + 0.20000000298023224f * a38 * a28 + 0.20000000298023224f * a39 * a29 + 0.20000000298023224f * a40 * a30 + 0.20000000298023224f * a41 * a31; - out(ii, k, 32) = 0.20000000298023224f * a42 * a27 + 0.20000000298023224f * a43 * a28 + 0.20000000298023224f * a44 * a29 + 0.20000000298023224f * a45 * a30 + 0.20000000298023224f * a46 * a31; - out(ii, k, 33) = 0.20000000298023224f * a47 * a27 + 0.20000000298023224f * a48 * a28 + 0.20000000298023224f * a49 * a29 + 0.20000000298023224f * a50 * a30 + 0.20000000298023224f * a51 * a31; - out(ii, k, 34) = 0.1111111119389534f * a96 * a87 + 0.1111111119389534f * a97 * a88 + 0.1111111119389534f * a98 * a89 + 0.1111111119389534f * a99 * a90 + 0.1111111119389534f * a100 * a91 + 0.1111111119389534f * a101 * a92 + 0.1111111119389534f * a102 * a93 + 0.1111111119389534f * a103 * a94 + 0.1111111119389534f * a104 * a95; - out(ii, k, 35) = 0.1111111119389534f * a105 * a87 + 0.1111111119389534f * a106 * a88 + 0.1111111119389534f * a107 * a89 + 0.1111111119389534f * a108 * a90 + 0.1111111119389534f * a109 * a91 + 0.1111111119389534f * a110 * a92 + 0.1111111119389534f * a111 * a93 + 0.1111111119389534f * a112 * a94 + 0.1111111119389534f * a113 * a95; - out(ii, k, 36) = 0.1111111119389534f * a132 * a87 + 0.1111111119389534f * a133 * a88 + 0.1111111119389534f * a134 * a89 + 0.1111111119389534f * a135 * a90 + 0.1111111119389534f * a136 * a91 + 0.1111111119389534f * a137 * a92 + 0.1111111119389534f * a138 * a93 + 0.1111111119389534f * a139 * a94 + 0.1111111119389534f * a140 * a95; - out(ii, k, 37) = 0.1428571492433548f * a80 * a59 + 0.1428571492433548f * a81 * a60 + 0.1428571492433548f * a82 * a61 + 0.1428571492433548f * a83 * a62 + 0.1428571492433548f * a84 * a63 + 0.1428571492433548f * a85 * a64 + 0.1428571492433548f * a86 * a65; - out(ii, k, 38) = 0.20000000298023224f * a32 * a32 + 0.20000000298023224f * a33 * a33 + 0.20000000298023224f * a34 * a34 + 0.20000000298023224f * a35 * a35 + 0.20000000298023224f * a36 * a36; - out(ii, k, 39) = 0.20000000298023224f * a37 * a32 + 0.20000000298023224f * a38 * a33 + 0.20000000298023224f * a39 * a34 + 0.20000000298023224f * a40 * a35 + 0.20000000298023224f * a41 * a36; - out(ii, k, 40) = 0.20000000298023224f * a42 * a32 + 0.20000000298023224f * a43 * a33 + 0.20000000298023224f * a44 * a34 + 0.20000000298023224f * a45 * a35 + 0.20000000298023224f * a46 * a36; - out(ii, k, 41) = 0.20000000298023224f * a47 * a32 + 0.20000000298023224f * a48 * a33 + 0.20000000298023224f * a49 * a34 + 0.20000000298023224f * a50 * a35 + 0.20000000298023224f * a51 * a36; - out(ii, k, 42) = 0.1111111119389534f * a96 * a96 + 0.1111111119389534f * a97 * a97 + 0.1111111119389534f * a98 * a98 + 0.1111111119389534f * a99 * a99 + 0.1111111119389534f * a100 * a100 + 0.1111111119389534f * a101 * a101 + 0.1111111119389534f * a102 * a102 + 0.1111111119389534f * a103 * a103 + 0.1111111119389534f * a104 * a104; - out(ii, k, 43) = 0.1111111119389534f * a123 * a96 + 0.1111111119389534f * a124 * a97 + 0.1111111119389534f * a125 * a98 + 0.1111111119389534f * a126 * a99 + 0.1111111119389534f * a127 * a100 + 0.1111111119389534f * a128 * a101 + 0.1111111119389534f * a129 * a102 + 0.1111111119389534f * a130 * a103 + 0.1111111119389534f * a131 * a104; - out(ii, k, 44) = 0.1111111119389534f * a132 * a96 + 0.1111111119389534f * a133 * a97 + 0.1111111119389534f * a134 * a98 + 0.1111111119389534f * a135 * a99 + 0.1111111119389534f * a136 * a100 + 0.1111111119389534f * a137 * a101 + 0.1111111119389534f * a138 * a102 + 0.1111111119389534f * a139 * a103 + 0.1111111119389534f * a140 * a104; - out(ii, k, 45) = 0.3333333432674408f * a11 * a11 + 0.3333333432674408f * a12 * a12 + 0.3333333432674408f * a13 * a13; - out(ii, k, 46) = 0.3333333432674408f * a14 * a11 + 0.3333333432674408f * a15 * a12 + 0.3333333432674408f * a16 * a13; - out(ii, k, 47) = 0.1428571492433548f * a66 * a66 + 0.1428571492433548f * a67 * a67 + 0.1428571492433548f * a68 * a68 + 0.1428571492433548f * a69 * a69 + 0.1428571492433548f * a70 * a70 + 0.1428571492433548f * a71 * a71 + 0.1428571492433548f * a72 * a72; - out(ii, k, 48) = 0.1428571492433548f * a73 * a66 + 0.1428571492433548f * a74 * a67 + 0.1428571492433548f * a75 * a68 + 0.1428571492433548f * a76 * a69 + 0.1428571492433548f * a77 * a70 + 0.1428571492433548f * a78 * a71 + 0.1428571492433548f * a79 * a72; - out(ii, k, 49) = 0.1428571492433548f * a80 * a66 + 0.1428571492433548f * a81 * a67 + 0.1428571492433548f * a82 * a68 + 0.1428571492433548f * a83 * a69 + 0.1428571492433548f * a84 * a70 + 0.1428571492433548f * a85 * a71 + 0.1428571492433548f * a86 * a72; - out(ii, k, 50) = 1.0f * a3 * a3; - out(ii, k, 51) = 1.0f * a4 * a3; - out(ii, k, 52) = 0.20000000298023224f * a37 * a37 + 0.20000000298023224f * a38 * a38 + 0.20000000298023224f * a39 * a39 + 0.20000000298023224f * a40 * a40 + 0.20000000298023224f * a41 * a41; - out(ii, k, 53) = 0.20000000298023224f * a42 * a37 + 0.20000000298023224f * a43 * a38 + 0.20000000298023224f * a44 * a39 + 0.20000000298023224f * a45 * a40 + 0.20000000298023224f * a46 * a41; - out(ii, k, 54) = 0.20000000298023224f * a47 * a37 + 0.20000000298023224f * a48 * a38 + 0.20000000298023224f * a49 * a39 + 0.20000000298023224f * a50 * a40 + 0.20000000298023224f * a51 * a41; - out(ii, k, 55) = 0.1111111119389534f * a105 * a105 + 0.1111111119389534f * a106 * a106 + 0.1111111119389534f * a107 * a107 + 0.1111111119389534f * a108 * a108 + 0.1111111119389534f * a109 * a109 + 0.1111111119389534f * a110 * a110 + 0.1111111119389534f * a111 * a111 + 0.1111111119389534f * a112 * a112 + 0.1111111119389534f * a113 * a113; - out(ii, k, 56) = 0.1111111119389534f * a123 * a105 + 0.1111111119389534f * a124 * a106 + 0.1111111119389534f * a125 * a107 + 0.1111111119389534f * a126 * a108 + 0.1111111119389534f * a127 * a109 + 0.1111111119389534f * a128 * a110 + 0.1111111119389534f * a129 * a111 + 0.1111111119389534f * a130 * a112 + 0.1111111119389534f * a131 * a113; - out(ii, k, 57) = 0.1111111119389534f * a132 * a105 + 0.1111111119389534f * a133 * a106 + 0.1111111119389534f * a134 * a107 + 0.1111111119389534f * a135 * a108 + 0.1111111119389534f * a136 * a109 + 0.1111111119389534f * a137 * a110 + 0.1111111119389534f * a138 * a111 + 0.1111111119389534f * a139 * a112 + 0.1111111119389534f * a140 * a113; - out(ii, k, 58) = 0.1111111119389534f * a132 * a114 + 0.1111111119389534f * a133 * a115 + 0.1111111119389534f * a134 * a116 + 0.1111111119389534f * a135 * a117 + 0.1111111119389534f * a136 * a118 + 0.1111111119389534f * a137 * a119 + 0.1111111119389534f * a138 * a120 + 0.1111111119389534f * a139 * a121 + 0.1111111119389534f * a140 * a122; - out(ii, k, 59) = 0.1428571492433548f * a73 * a73 + 0.1428571492433548f * a74 * a74 + 0.1428571492433548f * a75 * a75 + 0.1428571492433548f * a76 * a76 + 0.1428571492433548f * a77 * a77 + 0.1428571492433548f * a78 * a78 + 0.1428571492433548f * a79 * a79; - out(ii, k, 60) = 0.1428571492433548f * a80 * a73 + 0.1428571492433548f * a81 * a74 + 0.1428571492433548f * a82 * a75 + 0.1428571492433548f * a83 * a76 + 0.1428571492433548f * a84 * a77 + 0.1428571492433548f * a85 * a78 + 0.1428571492433548f * a86 * a79; - out(ii, k, 61) = 0.20000000298023224f * a42 * a42 + 0.20000000298023224f * a43 * a43 + 0.20000000298023224f * a44 * a44 + 0.20000000298023224f * a45 * a45 + 0.20000000298023224f * a46 * a46; - out(ii, k, 62) = 0.20000000298023224f * a47 * a42 + 0.20000000298023224f * a48 * a43 + 0.20000000298023224f * a49 * a44 + 0.20000000298023224f * a50 * a45 + 0.20000000298023224f * a51 * a46; - out(ii, k, 63) = 0.1111111119389534f * a123 * a123 + 0.1111111119389534f * a124 * a124 + 0.1111111119389534f * a125 * a125 + 0.1111111119389534f * a126 * a126 + 0.1111111119389534f * a127 * a127 + 0.1111111119389534f * a128 * a128 + 0.1111111119389534f * a129 * a129 + 0.1111111119389534f * a130 * a130 + 0.1111111119389534f * a131 * a131; - out(ii, k, 64) = 0.3333333432674408f * a14 * a14 + 0.3333333432674408f * a15 * a15 + 0.3333333432674408f * a16 * a16; - out(ii, k, 65) = 0.1428571492433548f * a80 * a80 + 0.1428571492433548f * a81 * a81 + 0.1428571492433548f * a82 * a82 + 0.1428571492433548f * a83 * a83 + 0.1428571492433548f * a84 * a84 + 0.1428571492433548f * a85 * a85 + 0.1428571492433548f * a86 * a86; - out(ii, k, 66) = 1.0f * a4 * a4; - out(ii, k, 67) = 0.20000000298023224f * a47 * a47 + 0.20000000298023224f * a48 * a48 + 0.20000000298023224f * a49 * a49 + 0.20000000298023224f * a50 * a50 + 0.20000000298023224f * a51 * a51; - out(ii, k, 68) = 0.1111111119389534f * a132 * a132 + 0.1111111119389534f * a133 * a133 + 0.1111111119389534f * a134 * a134 + 0.1111111119389534f * a135 * a135 + 0.1111111119389534f * a136 * a136 + 0.1111111119389534f * a137 * a137 + 0.1111111119389534f * a138 * a138 + 0.1111111119389534f * a139 * a139 + 0.1111111119389534f * a140 * a140; - out(ii, k, 69) = 1.0f * a5 * a0; - out(ii, k, 70) = 1.0f * a6 * a0; - out(ii, k, 71) = 1.0f * a7 * a0; - out(ii, k, 72) = 1.0f * a5 * a1; - out(ii, k, 73) = 1.0f * a6 * a1; - out(ii, k, 74) = 1.0f * a7 * a1; - out(ii, k, 75) = 1.0f * a5 * a2; - out(ii, k, 76) = 1.0f * a6 * a2; - out(ii, k, 77) = 1.0f * a7 * a2; - out(ii, k, 78) = 1.0f * a5 * a3; - out(ii, k, 79) = 1.0f * a6 * a3; - out(ii, k, 80) = 1.0f * a7 * a3; - out(ii, k, 81) = 1.0f * a5 * a4; - out(ii, k, 82) = 1.0f * a6 * a4; - out(ii, k, 83) = 1.0f * a7 * a4; - out(ii, k, 84) = 0.3872983455657959f * a17 * a10 + 0.3872983455657959f * a18 * a9 + -0.22360679507255554f * a19 * a8 + -0.3872983455657959f * a21 * a8; - out(ii, k, 85) = 0.3872983455657959f * a18 * a8 + 0.4472135901451111f * a19 * a9 + 0.3872983455657959f * a20 * a10; - out(ii, k, 86) = 0.3872983455657959f * a17 * a8 + -0.22360679507255554f * a19 * a10 + 0.3872983455657959f * a20 * a9 + 0.3872983455657959f * a21 * a10; - out(ii, k, 87) = 0.3872983455657959f * a17 * a13 + 0.3872983455657959f * a18 * a12 + -0.22360679507255554f * a19 * a11 + -0.3872983455657959f * a21 * a11; - out(ii, k, 88) = 0.3872983455657959f * a18 * a11 + 0.4472135901451111f * a19 * a12 + 0.3872983455657959f * a20 * a13; - out(ii, k, 89) = 0.3872983455657959f * a17 * a11 + -0.22360679507255554f * a19 * a13 + 0.3872983455657959f * a20 * a12 + 0.3872983455657959f * a21 * a13; - out(ii, k, 90) = 0.3872983455657959f * a17 * a16 + 0.3872983455657959f * a18 * a15 + -0.22360679507255554f * a19 * a14 + -0.3872983455657959f * a21 * a14; - out(ii, k, 91) = 0.3872983455657959f * a18 * a14 + 0.4472135901451111f * a19 * a15 + 0.3872983455657959f * a20 * a16; - out(ii, k, 92) = 0.3872983455657959f * a17 * a14 + -0.22360679507255554f * a19 * a16 + 0.3872983455657959f * a20 * a15 + 0.3872983455657959f * a21 * a16; - out(ii, k, 93) = 0.3872983455657959f * a22 * a10 + 0.3872983455657959f * a23 * a9 + -0.22360679507255554f * a24 * a8 + -0.3872983455657959f * a26 * a8; - out(ii, k, 94) = 0.3872983455657959f * a23 * a8 + 0.4472135901451111f * a24 * a9 + 0.3872983455657959f * a25 * a10; - out(ii, k, 95) = 0.3872983455657959f * a22 * a8 + -0.22360679507255554f * a24 * a10 + 0.3872983455657959f * a25 * a9 + 0.3872983455657959f * a26 * a10; - out(ii, k, 96) = 0.3872983455657959f * a22 * a13 + 0.3872983455657959f * a23 * a12 + -0.22360679507255554f * a24 * a11 + -0.3872983455657959f * a26 * a11; - out(ii, k, 97) = 0.3872983455657959f * a23 * a11 + 0.4472135901451111f * a24 * a12 + 0.3872983455657959f * a25 * a13; - out(ii, k, 98) = 0.3872983455657959f * a22 * a11 + -0.22360679507255554f * a24 * a13 + 0.3872983455657959f * a25 * a12 + 0.3872983455657959f * a26 * a13; - out(ii, k, 99) = 0.3872983455657959f * a22 * a16 + 0.3872983455657959f * a23 * a15 + -0.22360679507255554f * a24 * a14 + -0.3872983455657959f * a26 * a14; - out(ii, k, 100) = 0.3872983455657959f * a23 * a14 + 0.4472135901451111f * a24 * a15 + 0.3872983455657959f * a25 * a16; - out(ii, k, 101) = 0.3872983455657959f * a22 * a14 + -0.22360679507255554f * a24 * a16 + 0.3872983455657959f * a25 * a15 + 0.3872983455657959f * a26 * a16; - out(ii, k, 102) = 1.0f * a8 * a0; - out(ii, k, 103) = 1.0f * a9 * a0; - out(ii, k, 104) = 1.0f * a10 * a0; - out(ii, k, 105) = 1.0f * a8 * a1; - out(ii, k, 106) = 1.0f * a9 * a1; - out(ii, k, 107) = 1.0f * a10 * a1; - out(ii, k, 108) = 1.0f * a8 * a2; - out(ii, k, 109) = 1.0f * a9 * a2; - out(ii, k, 110) = 1.0f * a10 * a2; - out(ii, k, 111) = 1.0f * a8 * a3; - out(ii, k, 112) = 1.0f * a9 * a3; - out(ii, k, 113) = 1.0f * a10 * a3; - out(ii, k, 114) = 1.0f * a8 * a4; - out(ii, k, 115) = 1.0f * a9 * a4; - out(ii, k, 116) = 1.0f * a10 * a4; - out(ii, k, 117) = 0.26726123690605164f * a52 * a21 + 0.2182178944349289f * a53 * a20 + 0.23904572427272797f * a54 * a19 + 0.0690065547823906f * a54 * a21 + -0.16903084516525269f * a55 * a18 + -0.0690065547823906f * a56 * a17 + -0.2182178944349289f * a57 * a18 + -0.26726123690605164f * a58 * a17; - out(ii, k, 118) = 0.2182178944349289f * a53 * a17 + 0.2760262191295624f * a54 * a18 + 0.29277002811431885f * a55 * a19 + 0.2760262191295624f * a56 * a20 + 0.2182178944349289f * a57 * a21; - out(ii, k, 119) = 0.26726123690605164f * a52 * a17 + 0.2182178944349289f * a53 * a18 + -0.0690065547823906f * a54 * a17 + -0.16903084516525269f * a55 * a20 + 0.23904572427272797f * a56 * a19 + -0.0690065547823906f * a56 * a21 + 0.2182178944349289f * a57 * a20 + 0.26726123690605164f * a58 * a21; - out(ii, k, 120) = 0.26726123690605164f * a52 * a26 + 0.2182178944349289f * a53 * a25 + 0.23904572427272797f * a54 * a24 + 0.0690065547823906f * a54 * a26 + -0.16903084516525269f * a55 * a23 + -0.0690065547823906f * a56 * a22 + -0.2182178944349289f * a57 * a23 + -0.26726123690605164f * a58 * a22; - out(ii, k, 121) = 0.2182178944349289f * a53 * a22 + 0.2760262191295624f * a54 * a23 + 0.29277002811431885f * a55 * a24 + 0.2760262191295624f * a56 * a25 + 0.2182178944349289f * a57 * a26; - out(ii, k, 122) = 0.26726123690605164f * a52 * a22 + 0.2182178944349289f * a53 * a23 + -0.0690065547823906f * a54 * a22 + -0.16903084516525269f * a55 * a25 + 0.23904572427272797f * a56 * a24 + -0.0690065547823906f * a56 * a26 + 0.2182178944349289f * a57 * a25 + 0.26726123690605164f * a58 * a26; - out(ii, k, 123) = 0.26726123690605164f * a52 * a31 + 0.2182178944349289f * a53 * a30 + 0.23904572427272797f * a54 * a29 + 0.0690065547823906f * a54 * a31 + -0.16903084516525269f * a55 * a28 + -0.0690065547823906f * a56 * a27 + -0.2182178944349289f * a57 * a28 + -0.26726123690605164f * a58 * a27; - out(ii, k, 124) = 0.2182178944349289f * a53 * a27 + 0.2760262191295624f * a54 * a28 + 0.29277002811431885f * a55 * a29 + 0.2760262191295624f * a56 * a30 + 0.2182178944349289f * a57 * a31; - out(ii, k, 125) = 0.26726123690605164f * a52 * a27 + 0.2182178944349289f * a53 * a28 + -0.0690065547823906f * a54 * a27 + -0.16903084516525269f * a55 * a30 + 0.23904572427272797f * a56 * a29 + -0.0690065547823906f * a56 * a31 + 0.2182178944349289f * a57 * a30 + 0.26726123690605164f * a58 * a31; - out(ii, k, 126) = 0.26726123690605164f * a52 * a36 + 0.2182178944349289f * a53 * a35 + 0.23904572427272797f * a54 * a34 + 0.0690065547823906f * a54 * a36 + -0.16903084516525269f * a55 * a33 + -0.0690065547823906f * a56 * a32 + -0.2182178944349289f * a57 * a33 + -0.26726123690605164f * a58 * a32; - out(ii, k, 127) = 0.2182178944349289f * a53 * a32 + 0.2760262191295624f * a54 * a33 + 0.29277002811431885f * a55 * a34 + 0.2760262191295624f * a56 * a35 + 0.2182178944349289f * a57 * a36; - out(ii, k, 128) = 0.26726123690605164f * a52 * a32 + 0.2182178944349289f * a53 * a33 + -0.0690065547823906f * a54 * a32 + -0.16903084516525269f * a55 * a35 + 0.23904572427272797f * a56 * a34 + -0.0690065547823906f * a56 * a36 + 0.2182178944349289f * a57 * a35 + 0.26726123690605164f * a58 * a36; - out(ii, k, 129) = 0.26726123690605164f * a52 * a41 + 0.2182178944349289f * a53 * a40 + 0.23904572427272797f * a54 * a39 + 0.0690065547823906f * a54 * a41 + -0.16903084516525269f * a55 * a38 + -0.0690065547823906f * a56 * a37 + -0.2182178944349289f * a57 * a38 + -0.26726123690605164f * a58 * a37; - out(ii, k, 130) = 0.2182178944349289f * a53 * a37 + 0.2760262191295624f * a54 * a38 + 0.29277002811431885f * a55 * a39 + 0.2760262191295624f * a56 * a40 + 0.2182178944349289f * a57 * a41; - out(ii, k, 131) = 0.26726123690605164f * a52 * a37 + 0.2182178944349289f * a53 * a38 + -0.0690065547823906f * a54 * a37 + -0.16903084516525269f * a55 * a40 + 0.23904572427272797f * a56 * a39 + -0.0690065547823906f * a56 * a41 + 0.2182178944349289f * a57 * a40 + 0.26726123690605164f * a58 * a41; - out(ii, k, 132) = 0.26726123690605164f * a52 * a46 + 0.2182178944349289f * a53 * a45 + 0.23904572427272797f * a54 * a44 + 0.0690065547823906f * a54 * a46 + -0.16903084516525269f * a55 * a43 + -0.0690065547823906f * a56 * a42 + -0.2182178944349289f * a57 * a43 + -0.26726123690605164f * a58 * a42; - out(ii, k, 133) = 0.2182178944349289f * a53 * a42 + 0.2760262191295624f * a54 * a43 + 0.29277002811431885f * a55 * a44 + 0.2760262191295624f * a56 * a45 + 0.2182178944349289f * a57 * a46; - out(ii, k, 134) = 0.26726123690605164f * a52 * a42 + 0.2182178944349289f * a53 * a43 + -0.0690065547823906f * a54 * a42 + -0.16903084516525269f * a55 * a45 + 0.23904572427272797f * a56 * a44 + -0.0690065547823906f * a56 * a46 + 0.2182178944349289f * a57 * a45 + 0.26726123690605164f * a58 * a46; - out(ii, k, 135) = 0.26726123690605164f * a52 * a51 + 0.2182178944349289f * a53 * a50 + 0.23904572427272797f * a54 * a49 + 0.0690065547823906f * a54 * a51 + -0.16903084516525269f * a55 * a48 + -0.0690065547823906f * a56 * a47 + -0.2182178944349289f * a57 * a48 + -0.26726123690605164f * a58 * a47; - out(ii, k, 136) = 0.2182178944349289f * a53 * a47 + 0.2760262191295624f * a54 * a48 + 0.29277002811431885f * a55 * a49 + 0.2760262191295624f * a56 * a50 + 0.2182178944349289f * a57 * a51; - out(ii, k, 137) = 0.26726123690605164f * a52 * a47 + 0.2182178944349289f * a53 * a48 + -0.0690065547823906f * a54 * a47 + -0.16903084516525269f * a55 * a50 + 0.23904572427272797f * a56 * a49 + -0.0690065547823906f * a56 * a51 + 0.2182178944349289f * a57 * a50 + 0.26726123690605164f * a58 * a51; - out(ii, k, 138) = 0.3872983455657959f * a27 * a7 + 0.3872983455657959f * a28 * a6 + -0.22360679507255554f * a29 * a5 + -0.3872983455657959f * a31 * a5; - out(ii, k, 139) = 0.3872983455657959f * a28 * a5 + 0.4472135901451111f * a29 * a6 + 0.3872983455657959f * a30 * a7; - out(ii, k, 140) = 0.3872983455657959f * a27 * a5 + -0.22360679507255554f * a29 * a7 + 0.3872983455657959f * a30 * a6 + 0.3872983455657959f * a31 * a7; - out(ii, k, 141) = 0.3872983455657959f * a27 * a10 + 0.3872983455657959f * a28 * a9 + -0.22360679507255554f * a29 * a8 + -0.3872983455657959f * a31 * a8; - out(ii, k, 142) = 0.3872983455657959f * a28 * a8 + 0.4472135901451111f * a29 * a9 + 0.3872983455657959f * a30 * a10; - out(ii, k, 143) = 0.3872983455657959f * a27 * a8 + -0.22360679507255554f * a29 * a10 + 0.3872983455657959f * a30 * a9 + 0.3872983455657959f * a31 * a10; - out(ii, k, 144) = 0.3872983455657959f * a27 * a13 + 0.3872983455657959f * a28 * a12 + -0.22360679507255554f * a29 * a11 + -0.3872983455657959f * a31 * a11; - out(ii, k, 145) = 0.3872983455657959f * a28 * a11 + 0.4472135901451111f * a29 * a12 + 0.3872983455657959f * a30 * a13; - out(ii, k, 146) = 0.3872983455657959f * a27 * a11 + -0.22360679507255554f * a29 * a13 + 0.3872983455657959f * a30 * a12 + 0.3872983455657959f * a31 * a13; - out(ii, k, 147) = 0.3872983455657959f * a27 * a16 + 0.3872983455657959f * a28 * a15 + -0.22360679507255554f * a29 * a14 + -0.3872983455657959f * a31 * a14; - out(ii, k, 148) = 0.3872983455657959f * a28 * a14 + 0.4472135901451111f * a29 * a15 + 0.3872983455657959f * a30 * a16; - out(ii, k, 149) = 0.3872983455657959f * a27 * a14 + -0.22360679507255554f * a29 * a16 + 0.3872983455657959f * a30 * a15 + 0.3872983455657959f * a31 * a16; - out(ii, k, 150) = 0.20412415266036987f * a87 * a65 + 0.1767766922712326f * a88 * a64 + 0.14940357208251953f * a89 * a63 + 0.03857583925127983f * a89 * a65 + 0.17251639068126678f * a90 * a62 + 0.06681530922651291f * a90 * a64 + -0.13363061845302582f * a91 * a61 + -0.06681530922651291f * a92 * a60 + -0.03857583925127983f * a93 * a59 + -0.14940357208251953f * a93 * a61 + -0.1767766922712326f * a94 * a60 + -0.20412415266036987f * a95 * a59; - out(ii, k, 151) = 0.14433756470680237f * a88 * a59 + 0.18898223340511322f * a89 * a60 + 0.21128855645656586f * a90 * a61 + 0.2182178944349289f * a91 * a62 + 0.21128855645656586f * a92 * a63 + 0.18898223340511322f * a93 * a64 + 0.14433756470680237f * a94 * a65; - out(ii, k, 152) = 0.20412415266036987f * a87 * a59 + 0.1767766922712326f * a88 * a60 + -0.03857583925127983f * a89 * a59 + 0.14940357208251953f * a89 * a61 + -0.06681530922651291f * a90 * a60 + -0.13363061845302582f * a91 * a63 + 0.17251639068126678f * a92 * a62 + -0.06681530922651291f * a92 * a64 + 0.14940357208251953f * a93 * a63 + -0.03857583925127983f * a93 * a65 + 0.1767766922712326f * a94 * a64 + 0.20412415266036987f * a95 * a65; - out(ii, k, 153) = 0.20412415266036987f * a87 * a72 + 0.1767766922712326f * a88 * a71 + 0.14940357208251953f * a89 * a70 + 0.03857583925127983f * a89 * a72 + 0.17251639068126678f * a90 * a69 + 0.06681530922651291f * a90 * a71 + -0.13363061845302582f * a91 * a68 + -0.06681530922651291f * a92 * a67 + -0.03857583925127983f * a93 * a66 + -0.14940357208251953f * a93 * a68 + -0.1767766922712326f * a94 * a67 + -0.20412415266036987f * a95 * a66; - out(ii, k, 154) = 0.14433756470680237f * a88 * a66 + 0.18898223340511322f * a89 * a67 + 0.21128855645656586f * a90 * a68 + 0.2182178944349289f * a91 * a69 + 0.21128855645656586f * a92 * a70 + 0.18898223340511322f * a93 * a71 + 0.14433756470680237f * a94 * a72; - out(ii, k, 155) = 0.20412415266036987f * a87 * a66 + 0.1767766922712326f * a88 * a67 + -0.03857583925127983f * a89 * a66 + 0.14940357208251953f * a89 * a68 + -0.06681530922651291f * a90 * a67 + -0.13363061845302582f * a91 * a70 + 0.17251639068126678f * a92 * a69 + -0.06681530922651291f * a92 * a71 + 0.14940357208251953f * a93 * a70 + -0.03857583925127983f * a93 * a72 + 0.1767766922712326f * a94 * a71 + 0.20412415266036987f * a95 * a72; - out(ii, k, 156) = 0.20412415266036987f * a87 * a79 + 0.1767766922712326f * a88 * a78 + 0.14940357208251953f * a89 * a77 + 0.03857583925127983f * a89 * a79 + 0.17251639068126678f * a90 * a76 + 0.06681530922651291f * a90 * a78 + -0.13363061845302582f * a91 * a75 + -0.06681530922651291f * a92 * a74 + -0.03857583925127983f * a93 * a73 + -0.14940357208251953f * a93 * a75 + -0.1767766922712326f * a94 * a74 + -0.20412415266036987f * a95 * a73; - out(ii, k, 157) = 0.14433756470680237f * a88 * a73 + 0.18898223340511322f * a89 * a74 + 0.21128855645656586f * a90 * a75 + 0.2182178944349289f * a91 * a76 + 0.21128855645656586f * a92 * a77 + 0.18898223340511322f * a93 * a78 + 0.14433756470680237f * a94 * a79; - out(ii, k, 158) = 0.20412415266036987f * a87 * a73 + 0.1767766922712326f * a88 * a74 + -0.03857583925127983f * a89 * a73 + 0.14940357208251953f * a89 * a75 + -0.06681530922651291f * a90 * a74 + -0.13363061845302582f * a91 * a77 + 0.17251639068126678f * a92 * a76 + -0.06681530922651291f * a92 * a78 + 0.14940357208251953f * a93 * a77 + -0.03857583925127983f * a93 * a79 + 0.1767766922712326f * a94 * a78 + 0.20412415266036987f * a95 * a79; - out(ii, k, 159) = 0.20412415266036987f * a87 * a86 + 0.1767766922712326f * a88 * a85 + 0.14940357208251953f * a89 * a84 + 0.03857583925127983f * a89 * a86 + 0.17251639068126678f * a90 * a83 + 0.06681530922651291f * a90 * a85 + -0.13363061845302582f * a91 * a82 + -0.06681530922651291f * a92 * a81 + -0.03857583925127983f * a93 * a80 + -0.14940357208251953f * a93 * a82 + -0.1767766922712326f * a94 * a81 + -0.20412415266036987f * a95 * a80; - out(ii, k, 160) = 0.14433756470680237f * a88 * a80 + 0.18898223340511322f * a89 * a81 + 0.21128855645656586f * a90 * a82 + 0.2182178944349289f * a91 * a83 + 0.21128855645656586f * a92 * a84 + 0.18898223340511322f * a93 * a85 + 0.14433756470680237f * a94 * a86; - out(ii, k, 161) = 0.20412415266036987f * a87 * a80 + 0.1767766922712326f * a88 * a81 + -0.03857583925127983f * a89 * a80 + 0.14940357208251953f * a89 * a82 + -0.06681530922651291f * a90 * a81 + -0.13363061845302582f * a91 * a84 + 0.17251639068126678f * a92 * a83 + -0.06681530922651291f * a92 * a85 + 0.14940357208251953f * a93 * a84 + -0.03857583925127983f * a93 * a86 + 0.1767766922712326f * a94 * a85 + 0.20412415266036987f * a95 * a86; - out(ii, k, 162) = 0.26726123690605164f * a59 * a31 + 0.2182178944349289f * a60 * a30 + 0.23904572427272797f * a61 * a29 + 0.0690065547823906f * a61 * a31 + -0.16903084516525269f * a62 * a28 + -0.0690065547823906f * a63 * a27 + -0.2182178944349289f * a64 * a28 + -0.26726123690605164f * a65 * a27; - out(ii, k, 163) = 0.2182178944349289f * a60 * a27 + 0.2760262191295624f * a61 * a28 + 0.29277002811431885f * a62 * a29 + 0.2760262191295624f * a63 * a30 + 0.2182178944349289f * a64 * a31; - out(ii, k, 164) = 0.26726123690605164f * a59 * a27 + 0.2182178944349289f * a60 * a28 + -0.0690065547823906f * a61 * a27 + -0.16903084516525269f * a62 * a30 + 0.23904572427272797f * a63 * a29 + -0.0690065547823906f * a63 * a31 + 0.2182178944349289f * a64 * a30 + 0.26726123690605164f * a65 * a31; - out(ii, k, 165) = 0.26726123690605164f * a59 * a36 + 0.2182178944349289f * a60 * a35 + 0.23904572427272797f * a61 * a34 + 0.0690065547823906f * a61 * a36 + -0.16903084516525269f * a62 * a33 + -0.0690065547823906f * a63 * a32 + -0.2182178944349289f * a64 * a33 + -0.26726123690605164f * a65 * a32; - out(ii, k, 166) = 0.2182178944349289f * a60 * a32 + 0.2760262191295624f * a61 * a33 + 0.29277002811431885f * a62 * a34 + 0.2760262191295624f * a63 * a35 + 0.2182178944349289f * a64 * a36; - out(ii, k, 167) = 0.26726123690605164f * a59 * a32 + 0.2182178944349289f * a60 * a33 + -0.0690065547823906f * a61 * a32 + -0.16903084516525269f * a62 * a35 + 0.23904572427272797f * a63 * a34 + -0.0690065547823906f * a63 * a36 + 0.2182178944349289f * a64 * a35 + 0.26726123690605164f * a65 * a36; - out(ii, k, 168) = 0.26726123690605164f * a59 * a41 + 0.2182178944349289f * a60 * a40 + 0.23904572427272797f * a61 * a39 + 0.0690065547823906f * a61 * a41 + -0.16903084516525269f * a62 * a38 + -0.0690065547823906f * a63 * a37 + -0.2182178944349289f * a64 * a38 + -0.26726123690605164f * a65 * a37; - out(ii, k, 169) = 0.2182178944349289f * a60 * a37 + 0.2760262191295624f * a61 * a38 + 0.29277002811431885f * a62 * a39 + 0.2760262191295624f * a63 * a40 + 0.2182178944349289f * a64 * a41; - out(ii, k, 170) = 0.26726123690605164f * a59 * a37 + 0.2182178944349289f * a60 * a38 + -0.0690065547823906f * a61 * a37 + -0.16903084516525269f * a62 * a40 + 0.23904572427272797f * a63 * a39 + -0.0690065547823906f * a63 * a41 + 0.2182178944349289f * a64 * a40 + 0.26726123690605164f * a65 * a41; - out(ii, k, 171) = 0.26726123690605164f * a59 * a46 + 0.2182178944349289f * a60 * a45 + 0.23904572427272797f * a61 * a44 + 0.0690065547823906f * a61 * a46 + -0.16903084516525269f * a62 * a43 + -0.0690065547823906f * a63 * a42 + -0.2182178944349289f * a64 * a43 + -0.26726123690605164f * a65 * a42; - out(ii, k, 172) = 0.2182178944349289f * a60 * a42 + 0.2760262191295624f * a61 * a43 + 0.29277002811431885f * a62 * a44 + 0.2760262191295624f * a63 * a45 + 0.2182178944349289f * a64 * a46; - out(ii, k, 173) = 0.26726123690605164f * a59 * a42 + 0.2182178944349289f * a60 * a43 + -0.0690065547823906f * a61 * a42 + -0.16903084516525269f * a62 * a45 + 0.23904572427272797f * a63 * a44 + -0.0690065547823906f * a63 * a46 + 0.2182178944349289f * a64 * a45 + 0.26726123690605164f * a65 * a46; - out(ii, k, 174) = 0.26726123690605164f * a59 * a51 + 0.2182178944349289f * a60 * a50 + 0.23904572427272797f * a61 * a49 + 0.0690065547823906f * a61 * a51 + -0.16903084516525269f * a62 * a48 + -0.0690065547823906f * a63 * a47 + -0.2182178944349289f * a64 * a48 + -0.26726123690605164f * a65 * a47; - out(ii, k, 175) = 0.2182178944349289f * a60 * a47 + 0.2760262191295624f * a61 * a48 + 0.29277002811431885f * a62 * a49 + 0.2760262191295624f * a63 * a50 + 0.2182178944349289f * a64 * a51; - out(ii, k, 176) = 0.26726123690605164f * a59 * a47 + 0.2182178944349289f * a60 * a48 + -0.0690065547823906f * a61 * a47 + -0.16903084516525269f * a62 * a50 + 0.23904572427272797f * a63 * a49 + -0.0690065547823906f * a63 * a51 + 0.2182178944349289f * a64 * a50 + 0.26726123690605164f * a65 * a51; - out(ii, k, 177) = 0.3872983455657959f * a32 * a7 + 0.3872983455657959f * a33 * a6 + -0.22360679507255554f * a34 * a5 + -0.3872983455657959f * a36 * a5; - out(ii, k, 178) = 0.3872983455657959f * a33 * a5 + 0.4472135901451111f * a34 * a6 + 0.3872983455657959f * a35 * a7; - out(ii, k, 179) = 0.3872983455657959f * a32 * a5 + -0.22360679507255554f * a34 * a7 + 0.3872983455657959f * a35 * a6 + 0.3872983455657959f * a36 * a7; - out(ii, k, 180) = 0.3872983455657959f * a32 * a10 + 0.3872983455657959f * a33 * a9 + -0.22360679507255554f * a34 * a8 + -0.3872983455657959f * a36 * a8; - out(ii, k, 181) = 0.3872983455657959f * a33 * a8 + 0.4472135901451111f * a34 * a9 + 0.3872983455657959f * a35 * a10; - out(ii, k, 182) = 0.3872983455657959f * a32 * a8 + -0.22360679507255554f * a34 * a10 + 0.3872983455657959f * a35 * a9 + 0.3872983455657959f * a36 * a10; - out(ii, k, 183) = 0.3872983455657959f * a32 * a13 + 0.3872983455657959f * a33 * a12 + -0.22360679507255554f * a34 * a11 + -0.3872983455657959f * a36 * a11; - out(ii, k, 184) = 0.3872983455657959f * a33 * a11 + 0.4472135901451111f * a34 * a12 + 0.3872983455657959f * a35 * a13; - out(ii, k, 185) = 0.3872983455657959f * a32 * a11 + -0.22360679507255554f * a34 * a13 + 0.3872983455657959f * a35 * a12 + 0.3872983455657959f * a36 * a13; - out(ii, k, 186) = 0.3872983455657959f * a32 * a16 + 0.3872983455657959f * a33 * a15 + -0.22360679507255554f * a34 * a14 + -0.3872983455657959f * a36 * a14; - out(ii, k, 187) = 0.3872983455657959f * a33 * a14 + 0.4472135901451111f * a34 * a15 + 0.3872983455657959f * a35 * a16; - out(ii, k, 188) = 0.3872983455657959f * a32 * a14 + -0.22360679507255554f * a34 * a16 + 0.3872983455657959f * a35 * a15 + 0.3872983455657959f * a36 * a16; - out(ii, k, 189) = 0.20412415266036987f * a96 * a58 + 0.1767766922712326f * a97 * a57 + 0.14940357208251953f * a98 * a56 + 0.03857583925127983f * a98 * a58 + 0.17251639068126678f * a99 * a55 + 0.06681530922651291f * a99 * a57 + -0.13363061845302582f * a100 * a54 + -0.06681530922651291f * a101 * a53 + -0.03857583925127983f * a102 * a52 + -0.14940357208251953f * a102 * a54 + -0.1767766922712326f * a103 * a53 + -0.20412415266036987f * a104 * a52; - out(ii, k, 190) = 0.14433756470680237f * a97 * a52 + 0.18898223340511322f * a98 * a53 + 0.21128855645656586f * a99 * a54 + 0.2182178944349289f * a100 * a55 + 0.21128855645656586f * a101 * a56 + 0.18898223340511322f * a102 * a57 + 0.14433756470680237f * a103 * a58; - out(ii, k, 191) = 0.20412415266036987f * a96 * a52 + 0.1767766922712326f * a97 * a53 + -0.03857583925127983f * a98 * a52 + 0.14940357208251953f * a98 * a54 + -0.06681530922651291f * a99 * a53 + -0.13363061845302582f * a100 * a56 + 0.17251639068126678f * a101 * a55 + -0.06681530922651291f * a101 * a57 + 0.14940357208251953f * a102 * a56 + -0.03857583925127983f * a102 * a58 + 0.1767766922712326f * a103 * a57 + 0.20412415266036987f * a104 * a58; - out(ii, k, 192) = 0.20412415266036987f * a96 * a65 + 0.1767766922712326f * a97 * a64 + 0.14940357208251953f * a98 * a63 + 0.03857583925127983f * a98 * a65 + 0.17251639068126678f * a99 * a62 + 0.06681530922651291f * a99 * a64 + -0.13363061845302582f * a100 * a61 + -0.06681530922651291f * a101 * a60 + -0.03857583925127983f * a102 * a59 + -0.14940357208251953f * a102 * a61 + -0.1767766922712326f * a103 * a60 + -0.20412415266036987f * a104 * a59; - out(ii, k, 193) = 0.14433756470680237f * a97 * a59 + 0.18898223340511322f * a98 * a60 + 0.21128855645656586f * a99 * a61 + 0.2182178944349289f * a100 * a62 + 0.21128855645656586f * a101 * a63 + 0.18898223340511322f * a102 * a64 + 0.14433756470680237f * a103 * a65; - out(ii, k, 194) = 0.20412415266036987f * a96 * a59 + 0.1767766922712326f * a97 * a60 + -0.03857583925127983f * a98 * a59 + 0.14940357208251953f * a98 * a61 + -0.06681530922651291f * a99 * a60 + -0.13363061845302582f * a100 * a63 + 0.17251639068126678f * a101 * a62 + -0.06681530922651291f * a101 * a64 + 0.14940357208251953f * a102 * a63 + -0.03857583925127983f * a102 * a65 + 0.1767766922712326f * a103 * a64 + 0.20412415266036987f * a104 * a65; - out(ii, k, 195) = 0.20412415266036987f * a96 * a72 + 0.1767766922712326f * a97 * a71 + 0.14940357208251953f * a98 * a70 + 0.03857583925127983f * a98 * a72 + 0.17251639068126678f * a99 * a69 + 0.06681530922651291f * a99 * a71 + -0.13363061845302582f * a100 * a68 + -0.06681530922651291f * a101 * a67 + -0.03857583925127983f * a102 * a66 + -0.14940357208251953f * a102 * a68 + -0.1767766922712326f * a103 * a67 + -0.20412415266036987f * a104 * a66; - out(ii, k, 196) = 0.14433756470680237f * a97 * a66 + 0.18898223340511322f * a98 * a67 + 0.21128855645656586f * a99 * a68 + 0.2182178944349289f * a100 * a69 + 0.21128855645656586f * a101 * a70 + 0.18898223340511322f * a102 * a71 + 0.14433756470680237f * a103 * a72; - out(ii, k, 197) = 0.20412415266036987f * a96 * a66 + 0.1767766922712326f * a97 * a67 + -0.03857583925127983f * a98 * a66 + 0.14940357208251953f * a98 * a68 + -0.06681530922651291f * a99 * a67 + -0.13363061845302582f * a100 * a70 + 0.17251639068126678f * a101 * a69 + -0.06681530922651291f * a101 * a71 + 0.14940357208251953f * a102 * a70 + -0.03857583925127983f * a102 * a72 + 0.1767766922712326f * a103 * a71 + 0.20412415266036987f * a104 * a72; - out(ii, k, 198) = 0.20412415266036987f * a96 * a79 + 0.1767766922712326f * a97 * a78 + 0.14940357208251953f * a98 * a77 + 0.03857583925127983f * a98 * a79 + 0.17251639068126678f * a99 * a76 + 0.06681530922651291f * a99 * a78 + -0.13363061845302582f * a100 * a75 + -0.06681530922651291f * a101 * a74 + -0.03857583925127983f * a102 * a73 + -0.14940357208251953f * a102 * a75 + -0.1767766922712326f * a103 * a74 + -0.20412415266036987f * a104 * a73; - out(ii, k, 199) = 0.14433756470680237f * a97 * a73 + 0.18898223340511322f * a98 * a74 + 0.21128855645656586f * a99 * a75 + 0.2182178944349289f * a100 * a76 + 0.21128855645656586f * a101 * a77 + 0.18898223340511322f * a102 * a78 + 0.14433756470680237f * a103 * a79; - out(ii, k, 200) = 0.20412415266036987f * a96 * a73 + 0.1767766922712326f * a97 * a74 + -0.03857583925127983f * a98 * a73 + 0.14940357208251953f * a98 * a75 + -0.06681530922651291f * a99 * a74 + -0.13363061845302582f * a100 * a77 + 0.17251639068126678f * a101 * a76 + -0.06681530922651291f * a101 * a78 + 0.14940357208251953f * a102 * a77 + -0.03857583925127983f * a102 * a79 + 0.1767766922712326f * a103 * a78 + 0.20412415266036987f * a104 * a79; - out(ii, k, 201) = 0.20412415266036987f * a96 * a86 + 0.1767766922712326f * a97 * a85 + 0.14940357208251953f * a98 * a84 + 0.03857583925127983f * a98 * a86 + 0.17251639068126678f * a99 * a83 + 0.06681530922651291f * a99 * a85 + -0.13363061845302582f * a100 * a82 + -0.06681530922651291f * a101 * a81 + -0.03857583925127983f * a102 * a80 + -0.14940357208251953f * a102 * a82 + -0.1767766922712326f * a103 * a81 + -0.20412415266036987f * a104 * a80; - out(ii, k, 202) = 0.14433756470680237f * a97 * a80 + 0.18898223340511322f * a98 * a81 + 0.21128855645656586f * a99 * a82 + 0.2182178944349289f * a100 * a83 + 0.21128855645656586f * a101 * a84 + 0.18898223340511322f * a102 * a85 + 0.14433756470680237f * a103 * a86; - out(ii, k, 203) = 0.20412415266036987f * a96 * a80 + 0.1767766922712326f * a97 * a81 + -0.03857583925127983f * a98 * a80 + 0.14940357208251953f * a98 * a82 + -0.06681530922651291f * a99 * a81 + -0.13363061845302582f * a100 * a84 + 0.17251639068126678f * a101 * a83 + -0.06681530922651291f * a101 * a85 + 0.14940357208251953f * a102 * a84 + -0.03857583925127983f * a102 * a86 + 0.1767766922712326f * a103 * a85 + 0.20412415266036987f * a104 * a86; - out(ii, k, 204) = 1.0f * a11 * a0; - out(ii, k, 205) = 1.0f * a12 * a0; - out(ii, k, 206) = 1.0f * a13 * a0; - out(ii, k, 207) = 1.0f * a11 * a1; - out(ii, k, 208) = 1.0f * a12 * a1; - out(ii, k, 209) = 1.0f * a13 * a1; - out(ii, k, 210) = 1.0f * a11 * a2; - out(ii, k, 211) = 1.0f * a12 * a2; - out(ii, k, 212) = 1.0f * a13 * a2; - out(ii, k, 213) = 1.0f * a11 * a3; - out(ii, k, 214) = 1.0f * a12 * a3; - out(ii, k, 215) = 1.0f * a13 * a3; - out(ii, k, 216) = 1.0f * a11 * a4; - out(ii, k, 217) = 1.0f * a12 * a4; - out(ii, k, 218) = 1.0f * a13 * a4; - out(ii, k, 219) = 0.26726123690605164f * a66 * a21 + 0.2182178944349289f * a67 * a20 + 0.23904572427272797f * a68 * a19 + 0.0690065547823906f * a68 * a21 + -0.16903084516525269f * a69 * a18 + -0.0690065547823906f * a70 * a17 + -0.2182178944349289f * a71 * a18 + -0.26726123690605164f * a72 * a17; - out(ii, k, 220) = 0.2182178944349289f * a67 * a17 + 0.2760262191295624f * a68 * a18 + 0.29277002811431885f * a69 * a19 + 0.2760262191295624f * a70 * a20 + 0.2182178944349289f * a71 * a21; - out(ii, k, 221) = 0.26726123690605164f * a66 * a17 + 0.2182178944349289f * a67 * a18 + -0.0690065547823906f * a68 * a17 + -0.16903084516525269f * a69 * a20 + 0.23904572427272797f * a70 * a19 + -0.0690065547823906f * a70 * a21 + 0.2182178944349289f * a71 * a20 + 0.26726123690605164f * a72 * a21; - out(ii, k, 222) = 0.26726123690605164f * a66 * a26 + 0.2182178944349289f * a67 * a25 + 0.23904572427272797f * a68 * a24 + 0.0690065547823906f * a68 * a26 + -0.16903084516525269f * a69 * a23 + -0.0690065547823906f * a70 * a22 + -0.2182178944349289f * a71 * a23 + -0.26726123690605164f * a72 * a22; - out(ii, k, 223) = 0.2182178944349289f * a67 * a22 + 0.2760262191295624f * a68 * a23 + 0.29277002811431885f * a69 * a24 + 0.2760262191295624f * a70 * a25 + 0.2182178944349289f * a71 * a26; - out(ii, k, 224) = 0.26726123690605164f * a66 * a22 + 0.2182178944349289f * a67 * a23 + -0.0690065547823906f * a68 * a22 + -0.16903084516525269f * a69 * a25 + 0.23904572427272797f * a70 * a24 + -0.0690065547823906f * a70 * a26 + 0.2182178944349289f * a71 * a25 + 0.26726123690605164f * a72 * a26; - out(ii, k, 225) = 0.26726123690605164f * a66 * a31 + 0.2182178944349289f * a67 * a30 + 0.23904572427272797f * a68 * a29 + 0.0690065547823906f * a68 * a31 + -0.16903084516525269f * a69 * a28 + -0.0690065547823906f * a70 * a27 + -0.2182178944349289f * a71 * a28 + -0.26726123690605164f * a72 * a27; - out(ii, k, 226) = 0.2182178944349289f * a67 * a27 + 0.2760262191295624f * a68 * a28 + 0.29277002811431885f * a69 * a29 + 0.2760262191295624f * a70 * a30 + 0.2182178944349289f * a71 * a31; - out(ii, k, 227) = 0.26726123690605164f * a66 * a27 + 0.2182178944349289f * a67 * a28 + -0.0690065547823906f * a68 * a27 + -0.16903084516525269f * a69 * a30 + 0.23904572427272797f * a70 * a29 + -0.0690065547823906f * a70 * a31 + 0.2182178944349289f * a71 * a30 + 0.26726123690605164f * a72 * a31; - out(ii, k, 228) = 0.26726123690605164f * a66 * a36 + 0.2182178944349289f * a67 * a35 + 0.23904572427272797f * a68 * a34 + 0.0690065547823906f * a68 * a36 + -0.16903084516525269f * a69 * a33 + -0.0690065547823906f * a70 * a32 + -0.2182178944349289f * a71 * a33 + -0.26726123690605164f * a72 * a32; - out(ii, k, 229) = 0.2182178944349289f * a67 * a32 + 0.2760262191295624f * a68 * a33 + 0.29277002811431885f * a69 * a34 + 0.2760262191295624f * a70 * a35 + 0.2182178944349289f * a71 * a36; - out(ii, k, 230) = 0.26726123690605164f * a66 * a32 + 0.2182178944349289f * a67 * a33 + -0.0690065547823906f * a68 * a32 + -0.16903084516525269f * a69 * a35 + 0.23904572427272797f * a70 * a34 + -0.0690065547823906f * a70 * a36 + 0.2182178944349289f * a71 * a35 + 0.26726123690605164f * a72 * a36; - out(ii, k, 231) = 0.26726123690605164f * a66 * a46 + 0.2182178944349289f * a67 * a45 + 0.23904572427272797f * a68 * a44 + 0.0690065547823906f * a68 * a46 + -0.16903084516525269f * a69 * a43 + -0.0690065547823906f * a70 * a42 + -0.2182178944349289f * a71 * a43 + -0.26726123690605164f * a72 * a42; - out(ii, k, 232) = 0.2182178944349289f * a67 * a42 + 0.2760262191295624f * a68 * a43 + 0.29277002811431885f * a69 * a44 + 0.2760262191295624f * a70 * a45 + 0.2182178944349289f * a71 * a46; - out(ii, k, 233) = 0.26726123690605164f * a66 * a42 + 0.2182178944349289f * a67 * a43 + -0.0690065547823906f * a68 * a42 + -0.16903084516525269f * a69 * a45 + 0.23904572427272797f * a70 * a44 + -0.0690065547823906f * a70 * a46 + 0.2182178944349289f * a71 * a45 + 0.26726123690605164f * a72 * a46; - out(ii, k, 234) = 0.26726123690605164f * a66 * a51 + 0.2182178944349289f * a67 * a50 + 0.23904572427272797f * a68 * a49 + 0.0690065547823906f * a68 * a51 + -0.16903084516525269f * a69 * a48 + -0.0690065547823906f * a70 * a47 + -0.2182178944349289f * a71 * a48 + -0.26726123690605164f * a72 * a47; - out(ii, k, 235) = 0.2182178944349289f * a67 * a47 + 0.2760262191295624f * a68 * a48 + 0.29277002811431885f * a69 * a49 + 0.2760262191295624f * a70 * a50 + 0.2182178944349289f * a71 * a51; - out(ii, k, 236) = 0.26726123690605164f * a66 * a47 + 0.2182178944349289f * a67 * a48 + -0.0690065547823906f * a68 * a47 + -0.16903084516525269f * a69 * a50 + 0.23904572427272797f * a70 * a49 + -0.0690065547823906f * a70 * a51 + 0.2182178944349289f * a71 * a50 + 0.26726123690605164f * a72 * a51; - out(ii, k, 237) = 0.3872983455657959f * a37 * a7 + 0.3872983455657959f * a38 * a6 + -0.22360679507255554f * a39 * a5 + -0.3872983455657959f * a41 * a5; - out(ii, k, 238) = 0.3872983455657959f * a38 * a5 + 0.4472135901451111f * a39 * a6 + 0.3872983455657959f * a40 * a7; - out(ii, k, 239) = 0.3872983455657959f * a37 * a5 + -0.22360679507255554f * a39 * a7 + 0.3872983455657959f * a40 * a6 + 0.3872983455657959f * a41 * a7; - out(ii, k, 240) = 0.3872983455657959f * a37 * a10 + 0.3872983455657959f * a38 * a9 + -0.22360679507255554f * a39 * a8 + -0.3872983455657959f * a41 * a8; - out(ii, k, 241) = 0.3872983455657959f * a38 * a8 + 0.4472135901451111f * a39 * a9 + 0.3872983455657959f * a40 * a10; - out(ii, k, 242) = 0.3872983455657959f * a37 * a8 + -0.22360679507255554f * a39 * a10 + 0.3872983455657959f * a40 * a9 + 0.3872983455657959f * a41 * a10; - out(ii, k, 243) = 0.3872983455657959f * a37 * a13 + 0.3872983455657959f * a38 * a12 + -0.22360679507255554f * a39 * a11 + -0.3872983455657959f * a41 * a11; - out(ii, k, 244) = 0.3872983455657959f * a38 * a11 + 0.4472135901451111f * a39 * a12 + 0.3872983455657959f * a40 * a13; - out(ii, k, 245) = 0.3872983455657959f * a37 * a11 + -0.22360679507255554f * a39 * a13 + 0.3872983455657959f * a40 * a12 + 0.3872983455657959f * a41 * a13; - out(ii, k, 246) = 0.3872983455657959f * a37 * a16 + 0.3872983455657959f * a38 * a15 + -0.22360679507255554f * a39 * a14 + -0.3872983455657959f * a41 * a14; - out(ii, k, 247) = 0.3872983455657959f * a38 * a14 + 0.4472135901451111f * a39 * a15 + 0.3872983455657959f * a40 * a16; - out(ii, k, 248) = 0.3872983455657959f * a37 * a14 + -0.22360679507255554f * a39 * a16 + 0.3872983455657959f * a40 * a15 + 0.3872983455657959f * a41 * a16; - out(ii, k, 249) = 0.20412415266036987f * a105 * a58 + 0.1767766922712326f * a106 * a57 + 0.14940357208251953f * a107 * a56 + 0.03857583925127983f * a107 * a58 + 0.17251639068126678f * a108 * a55 + 0.06681530922651291f * a108 * a57 + -0.13363061845302582f * a109 * a54 + -0.06681530922651291f * a110 * a53 + -0.03857583925127983f * a111 * a52 + -0.14940357208251953f * a111 * a54 + -0.1767766922712326f * a112 * a53 + -0.20412415266036987f * a113 * a52; - out(ii, k, 250) = 0.14433756470680237f * a106 * a52 + 0.18898223340511322f * a107 * a53 + 0.21128855645656586f * a108 * a54 + 0.2182178944349289f * a109 * a55 + 0.21128855645656586f * a110 * a56 + 0.18898223340511322f * a111 * a57 + 0.14433756470680237f * a112 * a58; - out(ii, k, 251) = 0.20412415266036987f * a105 * a52 + 0.1767766922712326f * a106 * a53 + -0.03857583925127983f * a107 * a52 + 0.14940357208251953f * a107 * a54 + -0.06681530922651291f * a108 * a53 + -0.13363061845302582f * a109 * a56 + 0.17251639068126678f * a110 * a55 + -0.06681530922651291f * a110 * a57 + 0.14940357208251953f * a111 * a56 + -0.03857583925127983f * a111 * a58 + 0.1767766922712326f * a112 * a57 + 0.20412415266036987f * a113 * a58; - out(ii, k, 252) = 0.20412415266036987f * a105 * a72 + 0.1767766922712326f * a106 * a71 + 0.14940357208251953f * a107 * a70 + 0.03857583925127983f * a107 * a72 + 0.17251639068126678f * a108 * a69 + 0.06681530922651291f * a108 * a71 + -0.13363061845302582f * a109 * a68 + -0.06681530922651291f * a110 * a67 + -0.03857583925127983f * a111 * a66 + -0.14940357208251953f * a111 * a68 + -0.1767766922712326f * a112 * a67 + -0.20412415266036987f * a113 * a66; - out(ii, k, 253) = 0.14433756470680237f * a106 * a66 + 0.18898223340511322f * a107 * a67 + 0.21128855645656586f * a108 * a68 + 0.2182178944349289f * a109 * a69 + 0.21128855645656586f * a110 * a70 + 0.18898223340511322f * a111 * a71 + 0.14433756470680237f * a112 * a72; - out(ii, k, 254) = 0.20412415266036987f * a105 * a66 + 0.1767766922712326f * a106 * a67 + -0.03857583925127983f * a107 * a66 + 0.14940357208251953f * a107 * a68 + -0.06681530922651291f * a108 * a67 + -0.13363061845302582f * a109 * a70 + 0.17251639068126678f * a110 * a69 + -0.06681530922651291f * a110 * a71 + 0.14940357208251953f * a111 * a70 + -0.03857583925127983f * a111 * a72 + 0.1767766922712326f * a112 * a71 + 0.20412415266036987f * a113 * a72; - out(ii, k, 255) = 0.20412415266036987f * a105 * a79 + 0.1767766922712326f * a106 * a78 + 0.14940357208251953f * a107 * a77 + 0.03857583925127983f * a107 * a79 + 0.17251639068126678f * a108 * a76 + 0.06681530922651291f * a108 * a78 + -0.13363061845302582f * a109 * a75 + -0.06681530922651291f * a110 * a74 + -0.03857583925127983f * a111 * a73 + -0.14940357208251953f * a111 * a75 + -0.1767766922712326f * a112 * a74 + -0.20412415266036987f * a113 * a73; - out(ii, k, 256) = 0.14433756470680237f * a106 * a73 + 0.18898223340511322f * a107 * a74 + 0.21128855645656586f * a108 * a75 + 0.2182178944349289f * a109 * a76 + 0.21128855645656586f * a110 * a77 + 0.18898223340511322f * a111 * a78 + 0.14433756470680237f * a112 * a79; - out(ii, k, 257) = 0.20412415266036987f * a105 * a73 + 0.1767766922712326f * a106 * a74 + -0.03857583925127983f * a107 * a73 + 0.14940357208251953f * a107 * a75 + -0.06681530922651291f * a108 * a74 + -0.13363061845302582f * a109 * a77 + 0.17251639068126678f * a110 * a76 + -0.06681530922651291f * a110 * a78 + 0.14940357208251953f * a111 * a77 + -0.03857583925127983f * a111 * a79 + 0.1767766922712326f * a112 * a78 + 0.20412415266036987f * a113 * a79; - out(ii, k, 258) = 0.20412415266036987f * a105 * a86 + 0.1767766922712326f * a106 * a85 + 0.14940357208251953f * a107 * a84 + 0.03857583925127983f * a107 * a86 + 0.17251639068126678f * a108 * a83 + 0.06681530922651291f * a108 * a85 + -0.13363061845302582f * a109 * a82 + -0.06681530922651291f * a110 * a81 + -0.03857583925127983f * a111 * a80 + -0.14940357208251953f * a111 * a82 + -0.1767766922712326f * a112 * a81 + -0.20412415266036987f * a113 * a80; - out(ii, k, 259) = 0.14433756470680237f * a106 * a80 + 0.18898223340511322f * a107 * a81 + 0.21128855645656586f * a108 * a82 + 0.2182178944349289f * a109 * a83 + 0.21128855645656586f * a110 * a84 + 0.18898223340511322f * a111 * a85 + 0.14433756470680237f * a112 * a86; - out(ii, k, 260) = 0.20412415266036987f * a105 * a80 + 0.1767766922712326f * a106 * a81 + -0.03857583925127983f * a107 * a80 + 0.14940357208251953f * a107 * a82 + -0.06681530922651291f * a108 * a81 + -0.13363061845302582f * a109 * a84 + 0.17251639068126678f * a110 * a83 + -0.06681530922651291f * a110 * a85 + 0.14940357208251953f * a111 * a84 + -0.03857583925127983f * a111 * a86 + 0.1767766922712326f * a112 * a85 + 0.20412415266036987f * a113 * a86; - out(ii, k, 261) = 0.20412415266036987f * a114 * a72 + 0.1767766922712326f * a115 * a71 + 0.14940357208251953f * a116 * a70 + 0.03857583925127983f * a116 * a72 + 0.17251639068126678f * a117 * a69 + 0.06681530922651291f * a117 * a71 + -0.13363061845302582f * a118 * a68 + -0.06681530922651291f * a119 * a67 + -0.03857583925127983f * a120 * a66 + -0.14940357208251953f * a120 * a68 + -0.1767766922712326f * a121 * a67 + -0.20412415266036987f * a122 * a66; - out(ii, k, 262) = 0.14433756470680237f * a115 * a66 + 0.18898223340511322f * a116 * a67 + 0.21128855645656586f * a117 * a68 + 0.2182178944349289f * a118 * a69 + 0.21128855645656586f * a119 * a70 + 0.18898223340511322f * a120 * a71 + 0.14433756470680237f * a121 * a72; - out(ii, k, 263) = 0.20412415266036987f * a114 * a66 + 0.1767766922712326f * a115 * a67 + -0.03857583925127983f * a116 * a66 + 0.14940357208251953f * a116 * a68 + -0.06681530922651291f * a117 * a67 + -0.13363061845302582f * a118 * a70 + 0.17251639068126678f * a119 * a69 + -0.06681530922651291f * a119 * a71 + 0.14940357208251953f * a120 * a70 + -0.03857583925127983f * a120 * a72 + 0.1767766922712326f * a121 * a71 + 0.20412415266036987f * a122 * a72; - out(ii, k, 264) = 0.20412415266036987f * a114 * a79 + 0.1767766922712326f * a115 * a78 + 0.14940357208251953f * a116 * a77 + 0.03857583925127983f * a116 * a79 + 0.17251639068126678f * a117 * a76 + 0.06681530922651291f * a117 * a78 + -0.13363061845302582f * a118 * a75 + -0.06681530922651291f * a119 * a74 + -0.03857583925127983f * a120 * a73 + -0.14940357208251953f * a120 * a75 + -0.1767766922712326f * a121 * a74 + -0.20412415266036987f * a122 * a73; - out(ii, k, 265) = 0.14433756470680237f * a115 * a73 + 0.18898223340511322f * a116 * a74 + 0.21128855645656586f * a117 * a75 + 0.2182178944349289f * a118 * a76 + 0.21128855645656586f * a119 * a77 + 0.18898223340511322f * a120 * a78 + 0.14433756470680237f * a121 * a79; - out(ii, k, 266) = 0.20412415266036987f * a114 * a73 + 0.1767766922712326f * a115 * a74 + -0.03857583925127983f * a116 * a73 + 0.14940357208251953f * a116 * a75 + -0.06681530922651291f * a117 * a74 + -0.13363061845302582f * a118 * a77 + 0.17251639068126678f * a119 * a76 + -0.06681530922651291f * a119 * a78 + 0.14940357208251953f * a120 * a77 + -0.03857583925127983f * a120 * a79 + 0.1767766922712326f * a121 * a78 + 0.20412415266036987f * a122 * a79; - out(ii, k, 267) = 0.20412415266036987f * a114 * a86 + 0.1767766922712326f * a115 * a85 + 0.14940357208251953f * a116 * a84 + 0.03857583925127983f * a116 * a86 + 0.17251639068126678f * a117 * a83 + 0.06681530922651291f * a117 * a85 + -0.13363061845302582f * a118 * a82 + -0.06681530922651291f * a119 * a81 + -0.03857583925127983f * a120 * a80 + -0.14940357208251953f * a120 * a82 + -0.1767766922712326f * a121 * a81 + -0.20412415266036987f * a122 * a80; - out(ii, k, 268) = 0.14433756470680237f * a115 * a80 + 0.18898223340511322f * a116 * a81 + 0.21128855645656586f * a117 * a82 + 0.2182178944349289f * a118 * a83 + 0.21128855645656586f * a119 * a84 + 0.18898223340511322f * a120 * a85 + 0.14433756470680237f * a121 * a86; - out(ii, k, 269) = 0.20412415266036987f * a114 * a80 + 0.1767766922712326f * a115 * a81 + -0.03857583925127983f * a116 * a80 + 0.14940357208251953f * a116 * a82 + -0.06681530922651291f * a117 * a81 + -0.13363061845302582f * a118 * a84 + 0.17251639068126678f * a119 * a83 + -0.06681530922651291f * a119 * a85 + 0.14940357208251953f * a120 * a84 + -0.03857583925127983f * a120 * a86 + 0.1767766922712326f * a121 * a85 + 0.20412415266036987f * a122 * a86; - out(ii, k, 270) = 0.26726123690605164f * a73 * a21 + 0.2182178944349289f * a74 * a20 + 0.23904572427272797f * a75 * a19 + 0.0690065547823906f * a75 * a21 + -0.16903084516525269f * a76 * a18 + -0.0690065547823906f * a77 * a17 + -0.2182178944349289f * a78 * a18 + -0.26726123690605164f * a79 * a17; - out(ii, k, 271) = 0.2182178944349289f * a74 * a17 + 0.2760262191295624f * a75 * a18 + 0.29277002811431885f * a76 * a19 + 0.2760262191295624f * a77 * a20 + 0.2182178944349289f * a78 * a21; - out(ii, k, 272) = 0.26726123690605164f * a73 * a17 + 0.2182178944349289f * a74 * a18 + -0.0690065547823906f * a75 * a17 + -0.16903084516525269f * a76 * a20 + 0.23904572427272797f * a77 * a19 + -0.0690065547823906f * a77 * a21 + 0.2182178944349289f * a78 * a20 + 0.26726123690605164f * a79 * a21; - out(ii, k, 273) = 0.26726123690605164f * a73 * a31 + 0.2182178944349289f * a74 * a30 + 0.23904572427272797f * a75 * a29 + 0.0690065547823906f * a75 * a31 + -0.16903084516525269f * a76 * a28 + -0.0690065547823906f * a77 * a27 + -0.2182178944349289f * a78 * a28 + -0.26726123690605164f * a79 * a27; - out(ii, k, 274) = 0.2182178944349289f * a74 * a27 + 0.2760262191295624f * a75 * a28 + 0.29277002811431885f * a76 * a29 + 0.2760262191295624f * a77 * a30 + 0.2182178944349289f * a78 * a31; - out(ii, k, 275) = 0.26726123690605164f * a73 * a27 + 0.2182178944349289f * a74 * a28 + -0.0690065547823906f * a75 * a27 + -0.16903084516525269f * a76 * a30 + 0.23904572427272797f * a77 * a29 + -0.0690065547823906f * a77 * a31 + 0.2182178944349289f * a78 * a30 + 0.26726123690605164f * a79 * a31; - out(ii, k, 276) = 0.26726123690605164f * a73 * a36 + 0.2182178944349289f * a74 * a35 + 0.23904572427272797f * a75 * a34 + 0.0690065547823906f * a75 * a36 + -0.16903084516525269f * a76 * a33 + -0.0690065547823906f * a77 * a32 + -0.2182178944349289f * a78 * a33 + -0.26726123690605164f * a79 * a32; - out(ii, k, 277) = 0.2182178944349289f * a74 * a32 + 0.2760262191295624f * a75 * a33 + 0.29277002811431885f * a76 * a34 + 0.2760262191295624f * a77 * a35 + 0.2182178944349289f * a78 * a36; - out(ii, k, 278) = 0.26726123690605164f * a73 * a32 + 0.2182178944349289f * a74 * a33 + -0.0690065547823906f * a75 * a32 + -0.16903084516525269f * a76 * a35 + 0.23904572427272797f * a77 * a34 + -0.0690065547823906f * a77 * a36 + 0.2182178944349289f * a78 * a35 + 0.26726123690605164f * a79 * a36; - out(ii, k, 279) = 0.26726123690605164f * a73 * a41 + 0.2182178944349289f * a74 * a40 + 0.23904572427272797f * a75 * a39 + 0.0690065547823906f * a75 * a41 + -0.16903084516525269f * a76 * a38 + -0.0690065547823906f * a77 * a37 + -0.2182178944349289f * a78 * a38 + -0.26726123690605164f * a79 * a37; - out(ii, k, 280) = 0.2182178944349289f * a74 * a37 + 0.2760262191295624f * a75 * a38 + 0.29277002811431885f * a76 * a39 + 0.2760262191295624f * a77 * a40 + 0.2182178944349289f * a78 * a41; - out(ii, k, 281) = 0.26726123690605164f * a73 * a37 + 0.2182178944349289f * a74 * a38 + -0.0690065547823906f * a75 * a37 + -0.16903084516525269f * a76 * a40 + 0.23904572427272797f * a77 * a39 + -0.0690065547823906f * a77 * a41 + 0.2182178944349289f * a78 * a40 + 0.26726123690605164f * a79 * a41; - out(ii, k, 282) = 0.26726123690605164f * a73 * a46 + 0.2182178944349289f * a74 * a45 + 0.23904572427272797f * a75 * a44 + 0.0690065547823906f * a75 * a46 + -0.16903084516525269f * a76 * a43 + -0.0690065547823906f * a77 * a42 + -0.2182178944349289f * a78 * a43 + -0.26726123690605164f * a79 * a42; - out(ii, k, 283) = 0.2182178944349289f * a74 * a42 + 0.2760262191295624f * a75 * a43 + 0.29277002811431885f * a76 * a44 + 0.2760262191295624f * a77 * a45 + 0.2182178944349289f * a78 * a46; - out(ii, k, 284) = 0.26726123690605164f * a73 * a42 + 0.2182178944349289f * a74 * a43 + -0.0690065547823906f * a75 * a42 + -0.16903084516525269f * a76 * a45 + 0.23904572427272797f * a77 * a44 + -0.0690065547823906f * a77 * a46 + 0.2182178944349289f * a78 * a45 + 0.26726123690605164f * a79 * a46; - out(ii, k, 285) = 0.26726123690605164f * a73 * a51 + 0.2182178944349289f * a74 * a50 + 0.23904572427272797f * a75 * a49 + 0.0690065547823906f * a75 * a51 + -0.16903084516525269f * a76 * a48 + -0.0690065547823906f * a77 * a47 + -0.2182178944349289f * a78 * a48 + -0.26726123690605164f * a79 * a47; - out(ii, k, 286) = 0.2182178944349289f * a74 * a47 + 0.2760262191295624f * a75 * a48 + 0.29277002811431885f * a76 * a49 + 0.2760262191295624f * a77 * a50 + 0.2182178944349289f * a78 * a51; - out(ii, k, 287) = 0.26726123690605164f * a73 * a47 + 0.2182178944349289f * a74 * a48 + -0.0690065547823906f * a75 * a47 + -0.16903084516525269f * a76 * a50 + 0.23904572427272797f * a77 * a49 + -0.0690065547823906f * a77 * a51 + 0.2182178944349289f * a78 * a50 + 0.26726123690605164f * a79 * a51; - out(ii, k, 288) = 0.3872983455657959f * a42 * a7 + 0.3872983455657959f * a43 * a6 + -0.22360679507255554f * a44 * a5 + -0.3872983455657959f * a46 * a5; - out(ii, k, 289) = 0.3872983455657959f * a43 * a5 + 0.4472135901451111f * a44 * a6 + 0.3872983455657959f * a45 * a7; - out(ii, k, 290) = 0.3872983455657959f * a42 * a5 + -0.22360679507255554f * a44 * a7 + 0.3872983455657959f * a45 * a6 + 0.3872983455657959f * a46 * a7; - out(ii, k, 291) = 0.3872983455657959f * a42 * a10 + 0.3872983455657959f * a43 * a9 + -0.22360679507255554f * a44 * a8 + -0.3872983455657959f * a46 * a8; - out(ii, k, 292) = 0.3872983455657959f * a43 * a8 + 0.4472135901451111f * a44 * a9 + 0.3872983455657959f * a45 * a10; - out(ii, k, 293) = 0.3872983455657959f * a42 * a8 + -0.22360679507255554f * a44 * a10 + 0.3872983455657959f * a45 * a9 + 0.3872983455657959f * a46 * a10; - out(ii, k, 294) = 0.3872983455657959f * a42 * a13 + 0.3872983455657959f * a43 * a12 + -0.22360679507255554f * a44 * a11 + -0.3872983455657959f * a46 * a11; - out(ii, k, 295) = 0.3872983455657959f * a43 * a11 + 0.4472135901451111f * a44 * a12 + 0.3872983455657959f * a45 * a13; - out(ii, k, 296) = 0.3872983455657959f * a42 * a11 + -0.22360679507255554f * a44 * a13 + 0.3872983455657959f * a45 * a12 + 0.3872983455657959f * a46 * a13; - out(ii, k, 297) = 0.3872983455657959f * a42 * a16 + 0.3872983455657959f * a43 * a15 + -0.22360679507255554f * a44 * a14 + -0.3872983455657959f * a46 * a14; - out(ii, k, 298) = 0.3872983455657959f * a43 * a14 + 0.4472135901451111f * a44 * a15 + 0.3872983455657959f * a45 * a16; - out(ii, k, 299) = 0.3872983455657959f * a42 * a14 + -0.22360679507255554f * a44 * a16 + 0.3872983455657959f * a45 * a15 + 0.3872983455657959f * a46 * a16; - out(ii, k, 300) = 0.20412415266036987f * a123 * a58 + 0.1767766922712326f * a124 * a57 + 0.14940357208251953f * a125 * a56 + 0.03857583925127983f * a125 * a58 + 0.17251639068126678f * a126 * a55 + 0.06681530922651291f * a126 * a57 + -0.13363061845302582f * a127 * a54 + -0.06681530922651291f * a128 * a53 + -0.03857583925127983f * a129 * a52 + -0.14940357208251953f * a129 * a54 + -0.1767766922712326f * a130 * a53 + -0.20412415266036987f * a131 * a52; - out(ii, k, 301) = 0.14433756470680237f * a124 * a52 + 0.18898223340511322f * a125 * a53 + 0.21128855645656586f * a126 * a54 + 0.2182178944349289f * a127 * a55 + 0.21128855645656586f * a128 * a56 + 0.18898223340511322f * a129 * a57 + 0.14433756470680237f * a130 * a58; - out(ii, k, 302) = 0.20412415266036987f * a123 * a52 + 0.1767766922712326f * a124 * a53 + -0.03857583925127983f * a125 * a52 + 0.14940357208251953f * a125 * a54 + -0.06681530922651291f * a126 * a53 + -0.13363061845302582f * a127 * a56 + 0.17251639068126678f * a128 * a55 + -0.06681530922651291f * a128 * a57 + 0.14940357208251953f * a129 * a56 + -0.03857583925127983f * a129 * a58 + 0.1767766922712326f * a130 * a57 + 0.20412415266036987f * a131 * a58; - out(ii, k, 303) = 0.20412415266036987f * a123 * a65 + 0.1767766922712326f * a124 * a64 + 0.14940357208251953f * a125 * a63 + 0.03857583925127983f * a125 * a65 + 0.17251639068126678f * a126 * a62 + 0.06681530922651291f * a126 * a64 + -0.13363061845302582f * a127 * a61 + -0.06681530922651291f * a128 * a60 + -0.03857583925127983f * a129 * a59 + -0.14940357208251953f * a129 * a61 + -0.1767766922712326f * a130 * a60 + -0.20412415266036987f * a131 * a59; - out(ii, k, 304) = 0.14433756470680237f * a124 * a59 + 0.18898223340511322f * a125 * a60 + 0.21128855645656586f * a126 * a61 + 0.2182178944349289f * a127 * a62 + 0.21128855645656586f * a128 * a63 + 0.18898223340511322f * a129 * a64 + 0.14433756470680237f * a130 * a65; - out(ii, k, 305) = 0.20412415266036987f * a123 * a59 + 0.1767766922712326f * a124 * a60 + -0.03857583925127983f * a125 * a59 + 0.14940357208251953f * a125 * a61 + -0.06681530922651291f * a126 * a60 + -0.13363061845302582f * a127 * a63 + 0.17251639068126678f * a128 * a62 + -0.06681530922651291f * a128 * a64 + 0.14940357208251953f * a129 * a63 + -0.03857583925127983f * a129 * a65 + 0.1767766922712326f * a130 * a64 + 0.20412415266036987f * a131 * a65; - out(ii, k, 306) = 0.20412415266036987f * a123 * a72 + 0.1767766922712326f * a124 * a71 + 0.14940357208251953f * a125 * a70 + 0.03857583925127983f * a125 * a72 + 0.17251639068126678f * a126 * a69 + 0.06681530922651291f * a126 * a71 + -0.13363061845302582f * a127 * a68 + -0.06681530922651291f * a128 * a67 + -0.03857583925127983f * a129 * a66 + -0.14940357208251953f * a129 * a68 + -0.1767766922712326f * a130 * a67 + -0.20412415266036987f * a131 * a66; - out(ii, k, 307) = 0.14433756470680237f * a124 * a66 + 0.18898223340511322f * a125 * a67 + 0.21128855645656586f * a126 * a68 + 0.2182178944349289f * a127 * a69 + 0.21128855645656586f * a128 * a70 + 0.18898223340511322f * a129 * a71 + 0.14433756470680237f * a130 * a72; - out(ii, k, 308) = 0.20412415266036987f * a123 * a66 + 0.1767766922712326f * a124 * a67 + -0.03857583925127983f * a125 * a66 + 0.14940357208251953f * a125 * a68 + -0.06681530922651291f * a126 * a67 + -0.13363061845302582f * a127 * a70 + 0.17251639068126678f * a128 * a69 + -0.06681530922651291f * a128 * a71 + 0.14940357208251953f * a129 * a70 + -0.03857583925127983f * a129 * a72 + 0.1767766922712326f * a130 * a71 + 0.20412415266036987f * a131 * a72; - out(ii, k, 309) = 0.20412415266036987f * a123 * a79 + 0.1767766922712326f * a124 * a78 + 0.14940357208251953f * a125 * a77 + 0.03857583925127983f * a125 * a79 + 0.17251639068126678f * a126 * a76 + 0.06681530922651291f * a126 * a78 + -0.13363061845302582f * a127 * a75 + -0.06681530922651291f * a128 * a74 + -0.03857583925127983f * a129 * a73 + -0.14940357208251953f * a129 * a75 + -0.1767766922712326f * a130 * a74 + -0.20412415266036987f * a131 * a73; - out(ii, k, 310) = 0.14433756470680237f * a124 * a73 + 0.18898223340511322f * a125 * a74 + 0.21128855645656586f * a126 * a75 + 0.2182178944349289f * a127 * a76 + 0.21128855645656586f * a128 * a77 + 0.18898223340511322f * a129 * a78 + 0.14433756470680237f * a130 * a79; - out(ii, k, 311) = 0.20412415266036987f * a123 * a73 + 0.1767766922712326f * a124 * a74 + -0.03857583925127983f * a125 * a73 + 0.14940357208251953f * a125 * a75 + -0.06681530922651291f * a126 * a74 + -0.13363061845302582f * a127 * a77 + 0.17251639068126678f * a128 * a76 + -0.06681530922651291f * a128 * a78 + 0.14940357208251953f * a129 * a77 + -0.03857583925127983f * a129 * a79 + 0.1767766922712326f * a130 * a78 + 0.20412415266036987f * a131 * a79; - out(ii, k, 312) = 0.20412415266036987f * a123 * a86 + 0.1767766922712326f * a124 * a85 + 0.14940357208251953f * a125 * a84 + 0.03857583925127983f * a125 * a86 + 0.17251639068126678f * a126 * a83 + 0.06681530922651291f * a126 * a85 + -0.13363061845302582f * a127 * a82 + -0.06681530922651291f * a128 * a81 + -0.03857583925127983f * a129 * a80 + -0.14940357208251953f * a129 * a82 + -0.1767766922712326f * a130 * a81 + -0.20412415266036987f * a131 * a80; - out(ii, k, 313) = 0.14433756470680237f * a124 * a80 + 0.18898223340511322f * a125 * a81 + 0.21128855645656586f * a126 * a82 + 0.2182178944349289f * a127 * a83 + 0.21128855645656586f * a128 * a84 + 0.18898223340511322f * a129 * a85 + 0.14433756470680237f * a130 * a86; - out(ii, k, 314) = 0.20412415266036987f * a123 * a80 + 0.1767766922712326f * a124 * a81 + -0.03857583925127983f * a125 * a80 + 0.14940357208251953f * a125 * a82 + -0.06681530922651291f * a126 * a81 + -0.13363061845302582f * a127 * a84 + 0.17251639068126678f * a128 * a83 + -0.06681530922651291f * a128 * a85 + 0.14940357208251953f * a129 * a84 + -0.03857583925127983f * a129 * a86 + 0.1767766922712326f * a130 * a85 + 0.20412415266036987f * a131 * a86; - out(ii, k, 315) = 1.0f * a14 * a0; - out(ii, k, 316) = 1.0f * a15 * a0; - out(ii, k, 317) = 1.0f * a16 * a0; - out(ii, k, 318) = 1.0f * a14 * a1; - out(ii, k, 319) = 1.0f * a15 * a1; - out(ii, k, 320) = 1.0f * a16 * a1; - out(ii, k, 321) = 1.0f * a14 * a2; - out(ii, k, 322) = 1.0f * a15 * a2; - out(ii, k, 323) = 1.0f * a16 * a2; - out(ii, k, 324) = 1.0f * a14 * a3; - out(ii, k, 325) = 1.0f * a15 * a3; - out(ii, k, 326) = 1.0f * a16 * a3; - out(ii, k, 327) = 1.0f * a14 * a4; - out(ii, k, 328) = 1.0f * a15 * a4; - out(ii, k, 329) = 1.0f * a16 * a4; - out(ii, k, 330) = 0.26726123690605164f * a80 * a21 + 0.2182178944349289f * a81 * a20 + 0.23904572427272797f * a82 * a19 + 0.0690065547823906f * a82 * a21 + -0.16903084516525269f * a83 * a18 + -0.0690065547823906f * a84 * a17 + -0.2182178944349289f * a85 * a18 + -0.26726123690605164f * a86 * a17; - out(ii, k, 331) = 0.2182178944349289f * a81 * a17 + 0.2760262191295624f * a82 * a18 + 0.29277002811431885f * a83 * a19 + 0.2760262191295624f * a84 * a20 + 0.2182178944349289f * a85 * a21; - out(ii, k, 332) = 0.26726123690605164f * a80 * a17 + 0.2182178944349289f * a81 * a18 + -0.0690065547823906f * a82 * a17 + -0.16903084516525269f * a83 * a20 + 0.23904572427272797f * a84 * a19 + -0.0690065547823906f * a84 * a21 + 0.2182178944349289f * a85 * a20 + 0.26726123690605164f * a86 * a21; - out(ii, k, 333) = 0.26726123690605164f * a80 * a26 + 0.2182178944349289f * a81 * a25 + 0.23904572427272797f * a82 * a24 + 0.0690065547823906f * a82 * a26 + -0.16903084516525269f * a83 * a23 + -0.0690065547823906f * a84 * a22 + -0.2182178944349289f * a85 * a23 + -0.26726123690605164f * a86 * a22; - out(ii, k, 334) = 0.2182178944349289f * a81 * a22 + 0.2760262191295624f * a82 * a23 + 0.29277002811431885f * a83 * a24 + 0.2760262191295624f * a84 * a25 + 0.2182178944349289f * a85 * a26; - out(ii, k, 335) = 0.26726123690605164f * a80 * a22 + 0.2182178944349289f * a81 * a23 + -0.0690065547823906f * a82 * a22 + -0.16903084516525269f * a83 * a25 + 0.23904572427272797f * a84 * a24 + -0.0690065547823906f * a84 * a26 + 0.2182178944349289f * a85 * a25 + 0.26726123690605164f * a86 * a26; - out(ii, k, 336) = 0.26726123690605164f * a80 * a31 + 0.2182178944349289f * a81 * a30 + 0.23904572427272797f * a82 * a29 + 0.0690065547823906f * a82 * a31 + -0.16903084516525269f * a83 * a28 + -0.0690065547823906f * a84 * a27 + -0.2182178944349289f * a85 * a28 + -0.26726123690605164f * a86 * a27; - out(ii, k, 337) = 0.2182178944349289f * a81 * a27 + 0.2760262191295624f * a82 * a28 + 0.29277002811431885f * a83 * a29 + 0.2760262191295624f * a84 * a30 + 0.2182178944349289f * a85 * a31; - out(ii, k, 338) = 0.26726123690605164f * a80 * a27 + 0.2182178944349289f * a81 * a28 + -0.0690065547823906f * a82 * a27 + -0.16903084516525269f * a83 * a30 + 0.23904572427272797f * a84 * a29 + -0.0690065547823906f * a84 * a31 + 0.2182178944349289f * a85 * a30 + 0.26726123690605164f * a86 * a31; - out(ii, k, 339) = 0.26726123690605164f * a80 * a36 + 0.2182178944349289f * a81 * a35 + 0.23904572427272797f * a82 * a34 + 0.0690065547823906f * a82 * a36 + -0.16903084516525269f * a83 * a33 + -0.0690065547823906f * a84 * a32 + -0.2182178944349289f * a85 * a33 + -0.26726123690605164f * a86 * a32; - out(ii, k, 340) = 0.2182178944349289f * a81 * a32 + 0.2760262191295624f * a82 * a33 + 0.29277002811431885f * a83 * a34 + 0.2760262191295624f * a84 * a35 + 0.2182178944349289f * a85 * a36; - out(ii, k, 341) = 0.26726123690605164f * a80 * a32 + 0.2182178944349289f * a81 * a33 + -0.0690065547823906f * a82 * a32 + -0.16903084516525269f * a83 * a35 + 0.23904572427272797f * a84 * a34 + -0.0690065547823906f * a84 * a36 + 0.2182178944349289f * a85 * a35 + 0.26726123690605164f * a86 * a36; - out(ii, k, 342) = 0.26726123690605164f * a80 * a41 + 0.2182178944349289f * a81 * a40 + 0.23904572427272797f * a82 * a39 + 0.0690065547823906f * a82 * a41 + -0.16903084516525269f * a83 * a38 + -0.0690065547823906f * a84 * a37 + -0.2182178944349289f * a85 * a38 + -0.26726123690605164f * a86 * a37; - out(ii, k, 343) = 0.2182178944349289f * a81 * a37 + 0.2760262191295624f * a82 * a38 + 0.29277002811431885f * a83 * a39 + 0.2760262191295624f * a84 * a40 + 0.2182178944349289f * a85 * a41; - out(ii, k, 344) = 0.26726123690605164f * a80 * a37 + 0.2182178944349289f * a81 * a38 + -0.0690065547823906f * a82 * a37 + -0.16903084516525269f * a83 * a40 + 0.23904572427272797f * a84 * a39 + -0.0690065547823906f * a84 * a41 + 0.2182178944349289f * a85 * a40 + 0.26726123690605164f * a86 * a41; - out(ii, k, 345) = 0.26726123690605164f * a80 * a46 + 0.2182178944349289f * a81 * a45 + 0.23904572427272797f * a82 * a44 + 0.0690065547823906f * a82 * a46 + -0.16903084516525269f * a83 * a43 + -0.0690065547823906f * a84 * a42 + -0.2182178944349289f * a85 * a43 + -0.26726123690605164f * a86 * a42; - out(ii, k, 346) = 0.2182178944349289f * a81 * a42 + 0.2760262191295624f * a82 * a43 + 0.29277002811431885f * a83 * a44 + 0.2760262191295624f * a84 * a45 + 0.2182178944349289f * a85 * a46; - out(ii, k, 347) = 0.26726123690605164f * a80 * a42 + 0.2182178944349289f * a81 * a43 + -0.0690065547823906f * a82 * a42 + -0.16903084516525269f * a83 * a45 + 0.23904572427272797f * a84 * a44 + -0.0690065547823906f * a84 * a46 + 0.2182178944349289f * a85 * a45 + 0.26726123690605164f * a86 * a46; - out(ii, k, 348) = 0.26726123690605164f * a80 * a51 + 0.2182178944349289f * a81 * a50 + 0.23904572427272797f * a82 * a49 + 0.0690065547823906f * a82 * a51 + -0.16903084516525269f * a83 * a48 + -0.0690065547823906f * a84 * a47 + -0.2182178944349289f * a85 * a48 + -0.26726123690605164f * a86 * a47; - out(ii, k, 349) = 0.2182178944349289f * a81 * a47 + 0.2760262191295624f * a82 * a48 + 0.29277002811431885f * a83 * a49 + 0.2760262191295624f * a84 * a50 + 0.2182178944349289f * a85 * a51; - out(ii, k, 350) = 0.26726123690605164f * a80 * a47 + 0.2182178944349289f * a81 * a48 + -0.0690065547823906f * a82 * a47 + -0.16903084516525269f * a83 * a50 + 0.23904572427272797f * a84 * a49 + -0.0690065547823906f * a84 * a51 + 0.2182178944349289f * a85 * a50 + 0.26726123690605164f * a86 * a51; - out(ii, k, 351) = 0.3872983455657959f * a47 * a7 + 0.3872983455657959f * a48 * a6 + -0.22360679507255554f * a49 * a5 + -0.3872983455657959f * a51 * a5; - out(ii, k, 352) = 0.3872983455657959f * a48 * a5 + 0.4472135901451111f * a49 * a6 + 0.3872983455657959f * a50 * a7; - out(ii, k, 353) = 0.3872983455657959f * a47 * a5 + -0.22360679507255554f * a49 * a7 + 0.3872983455657959f * a50 * a6 + 0.3872983455657959f * a51 * a7; - out(ii, k, 354) = 0.3872983455657959f * a47 * a10 + 0.3872983455657959f * a48 * a9 + -0.22360679507255554f * a49 * a8 + -0.3872983455657959f * a51 * a8; - out(ii, k, 355) = 0.3872983455657959f * a48 * a8 + 0.4472135901451111f * a49 * a9 + 0.3872983455657959f * a50 * a10; - out(ii, k, 356) = 0.3872983455657959f * a47 * a8 + -0.22360679507255554f * a49 * a10 + 0.3872983455657959f * a50 * a9 + 0.3872983455657959f * a51 * a10; - out(ii, k, 357) = 0.3872983455657959f * a47 * a13 + 0.3872983455657959f * a48 * a12 + -0.22360679507255554f * a49 * a11 + -0.3872983455657959f * a51 * a11; - out(ii, k, 358) = 0.3872983455657959f * a48 * a11 + 0.4472135901451111f * a49 * a12 + 0.3872983455657959f * a50 * a13; - out(ii, k, 359) = 0.3872983455657959f * a47 * a11 + -0.22360679507255554f * a49 * a13 + 0.3872983455657959f * a50 * a12 + 0.3872983455657959f * a51 * a13; - out(ii, k, 360) = 0.3872983455657959f * a47 * a16 + 0.3872983455657959f * a48 * a15 + -0.22360679507255554f * a49 * a14 + -0.3872983455657959f * a51 * a14; - out(ii, k, 361) = 0.3872983455657959f * a48 * a14 + 0.4472135901451111f * a49 * a15 + 0.3872983455657959f * a50 * a16; - out(ii, k, 362) = 0.3872983455657959f * a47 * a14 + -0.22360679507255554f * a49 * a16 + 0.3872983455657959f * a50 * a15 + 0.3872983455657959f * a51 * a16; - out(ii, k, 363) = 0.20412415266036987f * a132 * a58 + 0.1767766922712326f * a133 * a57 + 0.14940357208251953f * a134 * a56 + 0.03857583925127983f * a134 * a58 + 0.17251639068126678f * a135 * a55 + 0.06681530922651291f * a135 * a57 + -0.13363061845302582f * a136 * a54 + -0.06681530922651291f * a137 * a53 + -0.03857583925127983f * a138 * a52 + -0.14940357208251953f * a138 * a54 + -0.1767766922712326f * a139 * a53 + -0.20412415266036987f * a140 * a52; - out(ii, k, 364) = 0.14433756470680237f * a133 * a52 + 0.18898223340511322f * a134 * a53 + 0.21128855645656586f * a135 * a54 + 0.2182178944349289f * a136 * a55 + 0.21128855645656586f * a137 * a56 + 0.18898223340511322f * a138 * a57 + 0.14433756470680237f * a139 * a58; - out(ii, k, 365) = 0.20412415266036987f * a132 * a52 + 0.1767766922712326f * a133 * a53 + -0.03857583925127983f * a134 * a52 + 0.14940357208251953f * a134 * a54 + -0.06681530922651291f * a135 * a53 + -0.13363061845302582f * a136 * a56 + 0.17251639068126678f * a137 * a55 + -0.06681530922651291f * a137 * a57 + 0.14940357208251953f * a138 * a56 + -0.03857583925127983f * a138 * a58 + 0.1767766922712326f * a139 * a57 + 0.20412415266036987f * a140 * a58; - out(ii, k, 366) = 0.20412415266036987f * a132 * a65 + 0.1767766922712326f * a133 * a64 + 0.14940357208251953f * a134 * a63 + 0.03857583925127983f * a134 * a65 + 0.17251639068126678f * a135 * a62 + 0.06681530922651291f * a135 * a64 + -0.13363061845302582f * a136 * a61 + -0.06681530922651291f * a137 * a60 + -0.03857583925127983f * a138 * a59 + -0.14940357208251953f * a138 * a61 + -0.1767766922712326f * a139 * a60 + -0.20412415266036987f * a140 * a59; - out(ii, k, 367) = 0.14433756470680237f * a133 * a59 + 0.18898223340511322f * a134 * a60 + 0.21128855645656586f * a135 * a61 + 0.2182178944349289f * a136 * a62 + 0.21128855645656586f * a137 * a63 + 0.18898223340511322f * a138 * a64 + 0.14433756470680237f * a139 * a65; - out(ii, k, 368) = 0.20412415266036987f * a132 * a59 + 0.1767766922712326f * a133 * a60 + -0.03857583925127983f * a134 * a59 + 0.14940357208251953f * a134 * a61 + -0.06681530922651291f * a135 * a60 + -0.13363061845302582f * a136 * a63 + 0.17251639068126678f * a137 * a62 + -0.06681530922651291f * a137 * a64 + 0.14940357208251953f * a138 * a63 + -0.03857583925127983f * a138 * a65 + 0.1767766922712326f * a139 * a64 + 0.20412415266036987f * a140 * a65; - out(ii, k, 369) = 0.20412415266036987f * a132 * a72 + 0.1767766922712326f * a133 * a71 + 0.14940357208251953f * a134 * a70 + 0.03857583925127983f * a134 * a72 + 0.17251639068126678f * a135 * a69 + 0.06681530922651291f * a135 * a71 + -0.13363061845302582f * a136 * a68 + -0.06681530922651291f * a137 * a67 + -0.03857583925127983f * a138 * a66 + -0.14940357208251953f * a138 * a68 + -0.1767766922712326f * a139 * a67 + -0.20412415266036987f * a140 * a66; - out(ii, k, 370) = 0.14433756470680237f * a133 * a66 + 0.18898223340511322f * a134 * a67 + 0.21128855645656586f * a135 * a68 + 0.2182178944349289f * a136 * a69 + 0.21128855645656586f * a137 * a70 + 0.18898223340511322f * a138 * a71 + 0.14433756470680237f * a139 * a72; - out(ii, k, 371) = 0.20412415266036987f * a132 * a66 + 0.1767766922712326f * a133 * a67 + -0.03857583925127983f * a134 * a66 + 0.14940357208251953f * a134 * a68 + -0.06681530922651291f * a135 * a67 + -0.13363061845302582f * a136 * a70 + 0.17251639068126678f * a137 * a69 + -0.06681530922651291f * a137 * a71 + 0.14940357208251953f * a138 * a70 + -0.03857583925127983f * a138 * a72 + 0.1767766922712326f * a139 * a71 + 0.20412415266036987f * a140 * a72; - out(ii, k, 372) = 0.20412415266036987f * a132 * a79 + 0.1767766922712326f * a133 * a78 + 0.14940357208251953f * a134 * a77 + 0.03857583925127983f * a134 * a79 + 0.17251639068126678f * a135 * a76 + 0.06681530922651291f * a135 * a78 + -0.13363061845302582f * a136 * a75 + -0.06681530922651291f * a137 * a74 + -0.03857583925127983f * a138 * a73 + -0.14940357208251953f * a138 * a75 + -0.1767766922712326f * a139 * a74 + -0.20412415266036987f * a140 * a73; - out(ii, k, 373) = 0.14433756470680237f * a133 * a73 + 0.18898223340511322f * a134 * a74 + 0.21128855645656586f * a135 * a75 + 0.2182178944349289f * a136 * a76 + 0.21128855645656586f * a137 * a77 + 0.18898223340511322f * a138 * a78 + 0.14433756470680237f * a139 * a79; - out(ii, k, 374) = 0.20412415266036987f * a132 * a73 + 0.1767766922712326f * a133 * a74 + -0.03857583925127983f * a134 * a73 + 0.14940357208251953f * a134 * a75 + -0.06681530922651291f * a135 * a74 + -0.13363061845302582f * a136 * a77 + 0.17251639068126678f * a137 * a76 + -0.06681530922651291f * a137 * a78 + 0.14940357208251953f * a138 * a77 + -0.03857583925127983f * a138 * a79 + 0.1767766922712326f * a139 * a78 + 0.20412415266036987f * a140 * a79; - out(ii, k, 375) = 0.20412415266036987f * a132 * a86 + 0.1767766922712326f * a133 * a85 + 0.14940357208251953f * a134 * a84 + 0.03857583925127983f * a134 * a86 + 0.17251639068126678f * a135 * a83 + 0.06681530922651291f * a135 * a85 + -0.13363061845302582f * a136 * a82 + -0.06681530922651291f * a137 * a81 + -0.03857583925127983f * a138 * a80 + -0.14940357208251953f * a138 * a82 + -0.1767766922712326f * a139 * a81 + -0.20412415266036987f * a140 * a80; - out(ii, k, 376) = 0.14433756470680237f * a133 * a80 + 0.18898223340511322f * a134 * a81 + 0.21128855645656586f * a135 * a82 + 0.2182178944349289f * a136 * a83 + 0.21128855645656586f * a137 * a84 + 0.18898223340511322f * a138 * a85 + 0.14433756470680237f * a139 * a86; - out(ii, k, 377) = 0.20412415266036987f * a132 * a80 + 0.1767766922712326f * a133 * a81 + -0.03857583925127983f * a134 * a80 + 0.14940357208251953f * a134 * a82 + -0.06681530922651291f * a135 * a81 + -0.13363061845302582f * a136 * a84 + 0.17251639068126678f * a137 * a83 + -0.06681530922651291f * a137 * a85 + 0.14940357208251953f * a138 * a84 + -0.03857583925127983f * a138 * a86 + 0.1767766922712326f * a139 * a85 + 0.20412415266036987f * a140 * a86; -} - -template -KOKKOS_INLINE_FUNCTION void rev_AAAA(const V &F, const V &, const V &D, const V &dF, const V &, const int ii, const int k) -{ - const float f0 = F(ii, k, 0); - const float f1 = F(ii, k, 1); - const float f2 = F(ii, k, 2); - const float f3 = F(ii, k, 3); - const float f4 = F(ii, k, 4); - const float f5 = F(ii, k, 5); - const float f6 = F(ii, k, 6); - const float f7 = F(ii, k, 7); - const float f8 = F(ii, k, 8); - const float f9 = F(ii, k, 9); - const float f10 = F(ii, k, 10); - const float f11 = F(ii, k, 11); - const float f12 = F(ii, k, 12); - const float f13 = F(ii, k, 13); - const float f14 = F(ii, k, 14); - const float f15 = F(ii, k, 15); - const float f16 = F(ii, k, 16); - const float f17 = F(ii, k, 17); - const float f18 = F(ii, k, 18); - const float f19 = F(ii, k, 19); - const float f20 = F(ii, k, 20); - const float f21 = F(ii, k, 21); - const float f22 = F(ii, k, 22); - const float f23 = F(ii, k, 23); - const float f24 = F(ii, k, 24); - const float f25 = F(ii, k, 25); - const float f26 = F(ii, k, 26); - const float f27 = F(ii, k, 27); - const float f28 = F(ii, k, 28); - const float f29 = F(ii, k, 29); - const float f30 = F(ii, k, 30); - const float f31 = F(ii, k, 31); - const float f32 = F(ii, k, 32); - const float f33 = F(ii, k, 33); - const float f34 = F(ii, k, 34); - const float f35 = F(ii, k, 35); - const float f36 = F(ii, k, 36); - const float f37 = F(ii, k, 37); - const float f38 = F(ii, k, 38); - const float f39 = F(ii, k, 39); - const float f40 = F(ii, k, 40); - const float f41 = F(ii, k, 41); - const float f42 = F(ii, k, 42); - const float f43 = F(ii, k, 43); - const float f44 = F(ii, k, 44); - const float f45 = F(ii, k, 45); - const float f46 = F(ii, k, 46); - const float f47 = F(ii, k, 47); - const float f48 = F(ii, k, 48); - const float f49 = F(ii, k, 49); - const float f50 = F(ii, k, 50); - const float f51 = F(ii, k, 51); - const float f52 = F(ii, k, 52); - const float f53 = F(ii, k, 53); - const float f54 = F(ii, k, 54); - const float f55 = F(ii, k, 55); - const float f56 = F(ii, k, 56); - const float f57 = F(ii, k, 57); - const float f58 = F(ii, k, 58); - const float f59 = F(ii, k, 59); - const float f60 = F(ii, k, 60); - const float f61 = F(ii, k, 61); - const float f62 = F(ii, k, 62); - const float f63 = F(ii, k, 63); - const float f64 = F(ii, k, 64); - const float f65 = F(ii, k, 65); - const float f66 = F(ii, k, 66); - const float f67 = F(ii, k, 67); - const float f68 = F(ii, k, 68); - const float f69 = F(ii, k, 69); - const float f70 = F(ii, k, 70); - const float f71 = F(ii, k, 71); - const float f72 = F(ii, k, 72); - const float f73 = F(ii, k, 73); - const float f74 = F(ii, k, 74); - const float f75 = F(ii, k, 75); - const float f76 = F(ii, k, 76); - const float f77 = F(ii, k, 77); - const float f78 = F(ii, k, 78); - const float f79 = F(ii, k, 79); - const float f80 = F(ii, k, 80); - const float f81 = F(ii, k, 81); - const float f82 = F(ii, k, 82); - const float f83 = F(ii, k, 83); - const float f84 = F(ii, k, 84); - const float f85 = F(ii, k, 85); - const float f86 = F(ii, k, 86); - const float f87 = F(ii, k, 87); - const float f88 = F(ii, k, 88); - const float f89 = F(ii, k, 89); - const float f90 = F(ii, k, 90); - const float f91 = F(ii, k, 91); - const float f92 = F(ii, k, 92); - const float f93 = F(ii, k, 93); - const float f94 = F(ii, k, 94); - const float f95 = F(ii, k, 95); - const float f96 = F(ii, k, 96); - const float f97 = F(ii, k, 97); - const float f98 = F(ii, k, 98); - const float f99 = F(ii, k, 99); - const float f100 = F(ii, k, 100); - const float f101 = F(ii, k, 101); - const float f102 = F(ii, k, 102); - const float f103 = F(ii, k, 103); - const float f104 = F(ii, k, 104); - const float f105 = F(ii, k, 105); - const float f106 = F(ii, k, 106); - const float f107 = F(ii, k, 107); - const float f108 = F(ii, k, 108); - const float f109 = F(ii, k, 109); - const float f110 = F(ii, k, 110); - const float f111 = F(ii, k, 111); - const float f112 = F(ii, k, 112); - const float f113 = F(ii, k, 113); - const float f114 = F(ii, k, 114); - const float f115 = F(ii, k, 115); - const float f116 = F(ii, k, 116); - const float f117 = F(ii, k, 117); - const float f118 = F(ii, k, 118); - const float f119 = F(ii, k, 119); - const float f120 = F(ii, k, 120); - const float f121 = F(ii, k, 121); - const float f122 = F(ii, k, 122); - const float f123 = F(ii, k, 123); - const float f124 = F(ii, k, 124); - const float f125 = F(ii, k, 125); - const float f126 = F(ii, k, 126); - const float f127 = F(ii, k, 127); - const float f128 = F(ii, k, 128); - const float f129 = F(ii, k, 129); - const float f130 = F(ii, k, 130); - const float f131 = F(ii, k, 131); - const float f132 = F(ii, k, 132); - const float f133 = F(ii, k, 133); - const float f134 = F(ii, k, 134); - const float f135 = F(ii, k, 135); - const float f136 = F(ii, k, 136); - const float f137 = F(ii, k, 137); - const float f138 = F(ii, k, 138); - const float f139 = F(ii, k, 139); - const float f140 = F(ii, k, 140); - { - float g0 = 0.0f; - float g1 = 0.0f; - float g2 = 0.0f; - float g3 = 0.0f; - float g4 = 0.0f; - float g5 = 0.0f; - float g6 = 0.0f; - float g7 = 0.0f; - float g8 = 0.0f; - float g9 = 0.0f; - float g10 = 0.0f; - float g11 = 0.0f; - float g12 = 0.0f; - float g13 = 0.0f; - float g14 = 0.0f; - float g15 = 0.0f; - float g16 = 0.0f; - float g17 = 0.0f; - float g18 = 0.0f; - float g19 = 0.0f; - float g20 = 0.0f; - float g21 = 0.0f; - float g22 = 0.0f; - float g23 = 0.0f; - float g24 = 0.0f; - float g25 = 0.0f; - float g26 = 0.0f; - float g27 = 0.0f; - float g28 = 0.0f; - float g29 = 0.0f; - float g30 = 0.0f; - float g31 = 0.0f; - float g32 = 0.0f; - float g33 = 0.0f; - float g34 = 0.0f; - float g35 = 0.0f; - float g36 = 0.0f; - float g37 = 0.0f; - float g38 = 0.0f; - float g39 = 0.0f; - float g40 = 0.0f; - float g41 = 0.0f; - float g42 = 0.0f; - float g43 = 0.0f; - float g44 = 0.0f; - float g45 = 0.0f; - float g46 = 0.0f; - float g47 = 0.0f; - { const float d = D(ii, k, 0); - g0 += 1.0f * d * f0; - g0 += 1.0f * d * f0; - } - { const float d = D(ii, k, 1); - g1 += 1.0f * d * f0; - g0 += 1.0f * d * f1; - } - { const float d = D(ii, k, 2); - g2 += 1.0f * d * f0; - g0 += 1.0f * d * f2; - } - { const float d = D(ii, k, 3); - g3 += 1.0f * d * f0; - g0 += 1.0f * d * f3; - } - { const float d = D(ii, k, 4); - g4 += 1.0f * d * f0; - g0 += 1.0f * d * f4; - } - { const float d = D(ii, k, 5); - g8 += 0.3333333432674408f * d * f5; - g5 += 0.3333333432674408f * d * f8; - g9 += 0.3333333432674408f * d * f6; - g6 += 0.3333333432674408f * d * f9; - g10 += 0.3333333432674408f * d * f7; - g7 += 0.3333333432674408f * d * f10; - } - { const float d = D(ii, k, 6); - g11 += 0.3333333432674408f * d * f5; - g5 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f6; - g6 += 0.3333333432674408f * d * f12; - g13 += 0.3333333432674408f * d * f7; - g7 += 0.3333333432674408f * d * f13; - } - { const float d = D(ii, k, 7); - g14 += 0.3333333432674408f * d * f5; - g5 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f6; - g6 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f7; - g7 += 0.3333333432674408f * d * f16; - } - { const float d = D(ii, k, 8); - g1 += 1.0f * d * f1; - g1 += 1.0f * d * f1; - } - { const float d = D(ii, k, 9); - g2 += 1.0f * d * f1; - g1 += 1.0f * d * f2; - } - { const float d = D(ii, k, 10); - g3 += 1.0f * d * f1; - g1 += 1.0f * d * f3; - } - { const float d = D(ii, k, 11); - g4 += 1.0f * d * f1; - g1 += 1.0f * d * f4; - } - { const float d = D(ii, k, 12); - g27 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f27; - g28 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f28; - g29 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f29; - g30 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f30; - g31 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f31; - } - { const float d = D(ii, k, 13); - g32 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f32; - g33 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f36; - } - { const float d = D(ii, k, 14); - g37 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 15); - g42 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 16); - g47 += 0.20000000298023224f * d * f17; - g17 += 0.20000000298023224f * d * f47; - g18 += 0.20000000298023224f * d * f48; - g19 += 0.20000000298023224f * d * f49; - g20 += 0.20000000298023224f * d * f50; - g21 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 17); - g27 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f27; - g28 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f28; - g29 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f29; - g30 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f30; - g31 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f31; - } - { const float d = D(ii, k, 18); - g37 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 19); - g42 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 20); - g47 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f47; - g23 += 0.20000000298023224f * d * f48; - g24 += 0.20000000298023224f * d * f49; - g25 += 0.20000000298023224f * d * f50; - g26 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 21); - g8 += 0.3333333432674408f * d * f8; - g8 += 0.3333333432674408f * d * f8; - g9 += 0.3333333432674408f * d * f9; - g9 += 0.3333333432674408f * d * f9; - g10 += 0.3333333432674408f * d * f10; - g10 += 0.3333333432674408f * d * f10; - } - { const float d = D(ii, k, 22); - g11 += 0.3333333432674408f * d * f8; - g8 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f9; - g9 += 0.3333333432674408f * d * f12; - g13 += 0.3333333432674408f * d * f10; - g10 += 0.3333333432674408f * d * f13; - } - { const float d = D(ii, k, 23); - g14 += 0.3333333432674408f * d * f8; - g8 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f9; - g9 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f10; - g10 += 0.3333333432674408f * d * f16; - } - { const float d = D(ii, k, 27); - g2 += 1.0f * d * f2; - g2 += 1.0f * d * f2; - } - { const float d = D(ii, k, 28); - g3 += 1.0f * d * f2; - g2 += 1.0f * d * f3; - } - { const float d = D(ii, k, 29); - g4 += 1.0f * d * f2; - g2 += 1.0f * d * f4; - } - { const float d = D(ii, k, 30); - g32 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f32; - g33 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f36; - } - { const float d = D(ii, k, 31); - g37 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 32); - g42 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 33); - g47 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f47; - g28 += 0.20000000298023224f * d * f48; - g29 += 0.20000000298023224f * d * f49; - g30 += 0.20000000298023224f * d * f50; - g31 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 38); - g32 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f32; - g33 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f36; - } - { const float d = D(ii, k, 39); - g37 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 40); - g42 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 41); - g47 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f47; - g33 += 0.20000000298023224f * d * f48; - g34 += 0.20000000298023224f * d * f49; - g35 += 0.20000000298023224f * d * f50; - g36 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 45); - g11 += 0.3333333432674408f * d * f11; - g11 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f12; - g12 += 0.3333333432674408f * d * f12; - g13 += 0.3333333432674408f * d * f13; - g13 += 0.3333333432674408f * d * f13; - } - { const float d = D(ii, k, 46); - g14 += 0.3333333432674408f * d * f11; - g11 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f12; - g12 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f13; - g13 += 0.3333333432674408f * d * f16; - } - { const float d = D(ii, k, 50); - g3 += 1.0f * d * f3; - g3 += 1.0f * d * f3; - } - { const float d = D(ii, k, 51); - g4 += 1.0f * d * f3; - g3 += 1.0f * d * f4; - } - { const float d = D(ii, k, 52); - g37 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f37; - g38 += 0.20000000298023224f * d * f38; - g38 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f39; - g39 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f40; - g40 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f41; - g41 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 53); - g42 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f38; - g38 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f39; - g39 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f40; - g40 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f41; - g41 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 54); - g47 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f47; - g38 += 0.20000000298023224f * d * f48; - g39 += 0.20000000298023224f * d * f49; - g40 += 0.20000000298023224f * d * f50; - g41 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 61); - g42 += 0.20000000298023224f * d * f42; - g42 += 0.20000000298023224f * d * f42; - g43 += 0.20000000298023224f * d * f43; - g43 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f44; - g44 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f45; - g45 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f46; - g46 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 62); - g47 += 0.20000000298023224f * d * f42; - g42 += 0.20000000298023224f * d * f47; - g43 += 0.20000000298023224f * d * f48; - g44 += 0.20000000298023224f * d * f49; - g45 += 0.20000000298023224f * d * f50; - g46 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 64); - g14 += 0.3333333432674408f * d * f14; - g14 += 0.3333333432674408f * d * f14; - g15 += 0.3333333432674408f * d * f15; - g15 += 0.3333333432674408f * d * f15; - g16 += 0.3333333432674408f * d * f16; - g16 += 0.3333333432674408f * d * f16; - } - { const float d = D(ii, k, 66); - g4 += 1.0f * d * f4; - g4 += 1.0f * d * f4; - } - { const float d = D(ii, k, 67); - g47 += 0.20000000298023224f * d * f47; - g47 += 0.20000000298023224f * d * f47; - } - { const float d = D(ii, k, 69); - g5 += 1.0f * d * f0; - g0 += 1.0f * d * f5; - } - { const float d = D(ii, k, 70); - g6 += 1.0f * d * f0; - g0 += 1.0f * d * f6; - } - { const float d = D(ii, k, 71); - g7 += 1.0f * d * f0; - g0 += 1.0f * d * f7; - } - { const float d = D(ii, k, 72); - g5 += 1.0f * d * f1; - g1 += 1.0f * d * f5; - } - { const float d = D(ii, k, 73); - g6 += 1.0f * d * f1; - g1 += 1.0f * d * f6; - } - { const float d = D(ii, k, 74); - g7 += 1.0f * d * f1; - g1 += 1.0f * d * f7; - } - { const float d = D(ii, k, 75); - g5 += 1.0f * d * f2; - g2 += 1.0f * d * f5; - } - { const float d = D(ii, k, 76); - g6 += 1.0f * d * f2; - g2 += 1.0f * d * f6; - } - { const float d = D(ii, k, 77); - g7 += 1.0f * d * f2; - g2 += 1.0f * d * f7; - } - { const float d = D(ii, k, 78); - g5 += 1.0f * d * f3; - g3 += 1.0f * d * f5; - } - { const float d = D(ii, k, 79); - g6 += 1.0f * d * f3; - g3 += 1.0f * d * f6; - } - { const float d = D(ii, k, 80); - g7 += 1.0f * d * f3; - g3 += 1.0f * d * f7; - } - { const float d = D(ii, k, 81); - g5 += 1.0f * d * f4; - g4 += 1.0f * d * f5; - } - { const float d = D(ii, k, 82); - g6 += 1.0f * d * f4; - g4 += 1.0f * d * f6; - } - { const float d = D(ii, k, 83); - g7 += 1.0f * d * f4; - g4 += 1.0f * d * f7; - } - { const float d = D(ii, k, 84); - g17 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f17; - g18 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f18; - g19 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f19; - g21 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f21; - } - { const float d = D(ii, k, 85); - g18 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f18; - g19 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f19; - g20 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f20; - } - { const float d = D(ii, k, 86); - g17 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f17; - g19 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f19; - g20 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f20; - g21 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f21; - } - { const float d = D(ii, k, 87); - g17 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f17; - g18 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f18; - g19 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f19; - g21 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f21; - } - { const float d = D(ii, k, 88); - g18 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f18; - g19 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f19; - g20 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f20; - } - { const float d = D(ii, k, 89); - g17 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f17; - g19 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f19; - g20 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f20; - g21 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f21; - } - { const float d = D(ii, k, 90); - g17 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f17; - g18 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f18; - g19 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f19; - g21 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f21; - } - { const float d = D(ii, k, 91); - g18 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f18; - g19 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f19; - g20 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f20; - } - { const float d = D(ii, k, 92); - g17 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f17; - g19 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f19; - g20 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f20; - g21 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f21; - } - { const float d = D(ii, k, 93); - g22 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f22; - g23 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f23; - g24 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f24; - g26 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f26; - } - { const float d = D(ii, k, 94); - g23 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f23; - g24 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f24; - g25 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f25; - } - { const float d = D(ii, k, 95); - g22 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f22; - g24 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f24; - g25 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f25; - g26 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f26; - } - { const float d = D(ii, k, 96); - g22 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f22; - g23 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f23; - g24 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f24; - g26 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f26; - } - { const float d = D(ii, k, 97); - g23 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f23; - g24 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f24; - g25 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f25; - } - { const float d = D(ii, k, 98); - g22 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f22; - g24 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f24; - g25 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f25; - g26 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f26; - } - { const float d = D(ii, k, 99); - g22 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f22; - g23 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f23; - g24 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f24; - g26 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f26; - } - { const float d = D(ii, k, 100); - g23 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f23; - g24 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f24; - g25 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f25; - } - { const float d = D(ii, k, 101); - g22 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f22; - g24 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f24; - g25 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f25; - g26 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f26; - } - { const float d = D(ii, k, 102); - g8 += 1.0f * d * f0; - g0 += 1.0f * d * f8; - } - { const float d = D(ii, k, 103); - g9 += 1.0f * d * f0; - g0 += 1.0f * d * f9; - } - { const float d = D(ii, k, 104); - g10 += 1.0f * d * f0; - g0 += 1.0f * d * f10; - } - { const float d = D(ii, k, 105); - g8 += 1.0f * d * f1; - g1 += 1.0f * d * f8; - } - { const float d = D(ii, k, 106); - g9 += 1.0f * d * f1; - g1 += 1.0f * d * f9; - } - { const float d = D(ii, k, 107); - g10 += 1.0f * d * f1; - g1 += 1.0f * d * f10; - } - { const float d = D(ii, k, 108); - g8 += 1.0f * d * f2; - g2 += 1.0f * d * f8; - } - { const float d = D(ii, k, 109); - g9 += 1.0f * d * f2; - g2 += 1.0f * d * f9; - } - { const float d = D(ii, k, 110); - g10 += 1.0f * d * f2; - g2 += 1.0f * d * f10; - } - { const float d = D(ii, k, 111); - g8 += 1.0f * d * f3; - g3 += 1.0f * d * f8; - } - { const float d = D(ii, k, 112); - g9 += 1.0f * d * f3; - g3 += 1.0f * d * f9; - } - { const float d = D(ii, k, 113); - g10 += 1.0f * d * f3; - g3 += 1.0f * d * f10; - } - { const float d = D(ii, k, 114); - g8 += 1.0f * d * f4; - g4 += 1.0f * d * f8; - } - { const float d = D(ii, k, 115); - g9 += 1.0f * d * f4; - g4 += 1.0f * d * f9; - } - { const float d = D(ii, k, 116); - g10 += 1.0f * d * f4; - g4 += 1.0f * d * f10; - } - { const float d = D(ii, k, 117); - g21 += 0.26726123690605164f * d * f52; - g20 += 0.2182178944349289f * d * f53; - g19 += 0.23904572427272797f * d * f54; - g21 += 0.0690065547823906f * d * f54; - g18 += -0.16903084516525269f * d * f55; - g17 += -0.0690065547823906f * d * f56; - g18 += -0.2182178944349289f * d * f57; - g17 += -0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 118); - g17 += 0.2182178944349289f * d * f53; - g18 += 0.2760262191295624f * d * f54; - g19 += 0.29277002811431885f * d * f55; - g20 += 0.2760262191295624f * d * f56; - g21 += 0.2182178944349289f * d * f57; - } - { const float d = D(ii, k, 119); - g17 += 0.26726123690605164f * d * f52; - g18 += 0.2182178944349289f * d * f53; - g17 += -0.0690065547823906f * d * f54; - g20 += -0.16903084516525269f * d * f55; - g19 += 0.23904572427272797f * d * f56; - g21 += -0.0690065547823906f * d * f56; - g20 += 0.2182178944349289f * d * f57; - g21 += 0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 120); - g26 += 0.26726123690605164f * d * f52; - g25 += 0.2182178944349289f * d * f53; - g24 += 0.23904572427272797f * d * f54; - g26 += 0.0690065547823906f * d * f54; - g23 += -0.16903084516525269f * d * f55; - g22 += -0.0690065547823906f * d * f56; - g23 += -0.2182178944349289f * d * f57; - g22 += -0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 121); - g22 += 0.2182178944349289f * d * f53; - g23 += 0.2760262191295624f * d * f54; - g24 += 0.29277002811431885f * d * f55; - g25 += 0.2760262191295624f * d * f56; - g26 += 0.2182178944349289f * d * f57; - } - { const float d = D(ii, k, 122); - g22 += 0.26726123690605164f * d * f52; - g23 += 0.2182178944349289f * d * f53; - g22 += -0.0690065547823906f * d * f54; - g25 += -0.16903084516525269f * d * f55; - g24 += 0.23904572427272797f * d * f56; - g26 += -0.0690065547823906f * d * f56; - g25 += 0.2182178944349289f * d * f57; - g26 += 0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 123); - g31 += 0.26726123690605164f * d * f52; - g30 += 0.2182178944349289f * d * f53; - g29 += 0.23904572427272797f * d * f54; - g31 += 0.0690065547823906f * d * f54; - g28 += -0.16903084516525269f * d * f55; - g27 += -0.0690065547823906f * d * f56; - g28 += -0.2182178944349289f * d * f57; - g27 += -0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 124); - g27 += 0.2182178944349289f * d * f53; - g28 += 0.2760262191295624f * d * f54; - g29 += 0.29277002811431885f * d * f55; - g30 += 0.2760262191295624f * d * f56; - g31 += 0.2182178944349289f * d * f57; - } - { const float d = D(ii, k, 125); - g27 += 0.26726123690605164f * d * f52; - g28 += 0.2182178944349289f * d * f53; - g27 += -0.0690065547823906f * d * f54; - g30 += -0.16903084516525269f * d * f55; - g29 += 0.23904572427272797f * d * f56; - g31 += -0.0690065547823906f * d * f56; - g30 += 0.2182178944349289f * d * f57; - g31 += 0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 126); - g36 += 0.26726123690605164f * d * f52; - g35 += 0.2182178944349289f * d * f53; - g34 += 0.23904572427272797f * d * f54; - g36 += 0.0690065547823906f * d * f54; - g33 += -0.16903084516525269f * d * f55; - g32 += -0.0690065547823906f * d * f56; - g33 += -0.2182178944349289f * d * f57; - g32 += -0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 127); - g32 += 0.2182178944349289f * d * f53; - g33 += 0.2760262191295624f * d * f54; - g34 += 0.29277002811431885f * d * f55; - g35 += 0.2760262191295624f * d * f56; - g36 += 0.2182178944349289f * d * f57; - } - { const float d = D(ii, k, 128); - g32 += 0.26726123690605164f * d * f52; - g33 += 0.2182178944349289f * d * f53; - g32 += -0.0690065547823906f * d * f54; - g35 += -0.16903084516525269f * d * f55; - g34 += 0.23904572427272797f * d * f56; - g36 += -0.0690065547823906f * d * f56; - g35 += 0.2182178944349289f * d * f57; - g36 += 0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 129); - g41 += 0.26726123690605164f * d * f52; - g40 += 0.2182178944349289f * d * f53; - g39 += 0.23904572427272797f * d * f54; - g41 += 0.0690065547823906f * d * f54; - g38 += -0.16903084516525269f * d * f55; - g37 += -0.0690065547823906f * d * f56; - g38 += -0.2182178944349289f * d * f57; - g37 += -0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 130); - g37 += 0.2182178944349289f * d * f53; - g38 += 0.2760262191295624f * d * f54; - g39 += 0.29277002811431885f * d * f55; - g40 += 0.2760262191295624f * d * f56; - g41 += 0.2182178944349289f * d * f57; - } - { const float d = D(ii, k, 131); - g37 += 0.26726123690605164f * d * f52; - g38 += 0.2182178944349289f * d * f53; - g37 += -0.0690065547823906f * d * f54; - g40 += -0.16903084516525269f * d * f55; - g39 += 0.23904572427272797f * d * f56; - g41 += -0.0690065547823906f * d * f56; - g40 += 0.2182178944349289f * d * f57; - g41 += 0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 132); - g46 += 0.26726123690605164f * d * f52; - g45 += 0.2182178944349289f * d * f53; - g44 += 0.23904572427272797f * d * f54; - g46 += 0.0690065547823906f * d * f54; - g43 += -0.16903084516525269f * d * f55; - g42 += -0.0690065547823906f * d * f56; - g43 += -0.2182178944349289f * d * f57; - g42 += -0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 133); - g42 += 0.2182178944349289f * d * f53; - g43 += 0.2760262191295624f * d * f54; - g44 += 0.29277002811431885f * d * f55; - g45 += 0.2760262191295624f * d * f56; - g46 += 0.2182178944349289f * d * f57; - } - { const float d = D(ii, k, 134); - g42 += 0.26726123690605164f * d * f52; - g43 += 0.2182178944349289f * d * f53; - g42 += -0.0690065547823906f * d * f54; - g45 += -0.16903084516525269f * d * f55; - g44 += 0.23904572427272797f * d * f56; - g46 += -0.0690065547823906f * d * f56; - g45 += 0.2182178944349289f * d * f57; - g46 += 0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 135); - g47 += -0.0690065547823906f * d * f56; - g47 += -0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 136); - g47 += 0.2182178944349289f * d * f53; - } - { const float d = D(ii, k, 137); - g47 += 0.26726123690605164f * d * f52; - g47 += -0.0690065547823906f * d * f54; - } - { const float d = D(ii, k, 138); - g27 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f27; - g28 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f28; - g29 += -0.22360679507255554f * d * f5; - g5 += -0.22360679507255554f * d * f29; - g31 += -0.3872983455657959f * d * f5; - g5 += -0.3872983455657959f * d * f31; - } - { const float d = D(ii, k, 139); - g28 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f28; - g29 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f29; - g30 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f30; - } - { const float d = D(ii, k, 140); - g27 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f27; - g29 += -0.22360679507255554f * d * f7; - g7 += -0.22360679507255554f * d * f29; - g30 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f30; - g31 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f31; - } - { const float d = D(ii, k, 141); - g27 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f27; - g28 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f28; - g29 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f29; - g31 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f31; - } - { const float d = D(ii, k, 142); - g28 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f28; - g29 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f29; - g30 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f30; - } - { const float d = D(ii, k, 143); - g27 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f27; - g29 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f29; - g30 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f30; - g31 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f31; - } - { const float d = D(ii, k, 144); - g27 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f27; - g28 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f28; - g29 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f29; - g31 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f31; - } - { const float d = D(ii, k, 145); - g28 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f28; - g29 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f29; - g30 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f30; - } - { const float d = D(ii, k, 146); - g27 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f27; - g29 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f29; - g30 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f30; - g31 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f31; - } - { const float d = D(ii, k, 147); - g27 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f27; - g28 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f28; - g29 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f29; - g31 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f31; - } - { const float d = D(ii, k, 148); - g28 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f28; - g29 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f29; - g30 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f30; - } - { const float d = D(ii, k, 149); - g27 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f27; - g29 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f29; - g30 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f30; - g31 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f31; - } - { const float d = D(ii, k, 162); - g31 += 0.26726123690605164f * d * f59; - g30 += 0.2182178944349289f * d * f60; - g29 += 0.23904572427272797f * d * f61; - g31 += 0.0690065547823906f * d * f61; - g28 += -0.16903084516525269f * d * f62; - g27 += -0.0690065547823906f * d * f63; - g28 += -0.2182178944349289f * d * f64; - g27 += -0.26726123690605164f * d * f65; - } - { const float d = D(ii, k, 163); - g27 += 0.2182178944349289f * d * f60; - g28 += 0.2760262191295624f * d * f61; - g29 += 0.29277002811431885f * d * f62; - g30 += 0.2760262191295624f * d * f63; - g31 += 0.2182178944349289f * d * f64; - } - { const float d = D(ii, k, 164); - g27 += 0.26726123690605164f * d * f59; - g28 += 0.2182178944349289f * d * f60; - g27 += -0.0690065547823906f * d * f61; - g30 += -0.16903084516525269f * d * f62; - g29 += 0.23904572427272797f * d * f63; - g31 += -0.0690065547823906f * d * f63; - g30 += 0.2182178944349289f * d * f64; - g31 += 0.26726123690605164f * d * f65; - } - { const float d = D(ii, k, 165); - g36 += 0.26726123690605164f * d * f59; - g35 += 0.2182178944349289f * d * f60; - g34 += 0.23904572427272797f * d * f61; - g36 += 0.0690065547823906f * d * f61; - g33 += -0.16903084516525269f * d * f62; - g32 += -0.0690065547823906f * d * f63; - g33 += -0.2182178944349289f * d * f64; - g32 += -0.26726123690605164f * d * f65; - } - { const float d = D(ii, k, 166); - g32 += 0.2182178944349289f * d * f60; - g33 += 0.2760262191295624f * d * f61; - g34 += 0.29277002811431885f * d * f62; - g35 += 0.2760262191295624f * d * f63; - g36 += 0.2182178944349289f * d * f64; - } - { const float d = D(ii, k, 167); - g32 += 0.26726123690605164f * d * f59; - g33 += 0.2182178944349289f * d * f60; - g32 += -0.0690065547823906f * d * f61; - g35 += -0.16903084516525269f * d * f62; - g34 += 0.23904572427272797f * d * f63; - g36 += -0.0690065547823906f * d * f63; - g35 += 0.2182178944349289f * d * f64; - g36 += 0.26726123690605164f * d * f65; - } - { const float d = D(ii, k, 168); - g41 += 0.26726123690605164f * d * f59; - g40 += 0.2182178944349289f * d * f60; - g39 += 0.23904572427272797f * d * f61; - g41 += 0.0690065547823906f * d * f61; - g38 += -0.16903084516525269f * d * f62; - g37 += -0.0690065547823906f * d * f63; - g38 += -0.2182178944349289f * d * f64; - g37 += -0.26726123690605164f * d * f65; - } - { const float d = D(ii, k, 169); - g37 += 0.2182178944349289f * d * f60; - g38 += 0.2760262191295624f * d * f61; - g39 += 0.29277002811431885f * d * f62; - g40 += 0.2760262191295624f * d * f63; - g41 += 0.2182178944349289f * d * f64; - } - { const float d = D(ii, k, 170); - g37 += 0.26726123690605164f * d * f59; - g38 += 0.2182178944349289f * d * f60; - g37 += -0.0690065547823906f * d * f61; - g40 += -0.16903084516525269f * d * f62; - g39 += 0.23904572427272797f * d * f63; - g41 += -0.0690065547823906f * d * f63; - g40 += 0.2182178944349289f * d * f64; - g41 += 0.26726123690605164f * d * f65; - } - { const float d = D(ii, k, 171); - g46 += 0.26726123690605164f * d * f59; - g45 += 0.2182178944349289f * d * f60; - g44 += 0.23904572427272797f * d * f61; - g46 += 0.0690065547823906f * d * f61; - g43 += -0.16903084516525269f * d * f62; - g42 += -0.0690065547823906f * d * f63; - g43 += -0.2182178944349289f * d * f64; - g42 += -0.26726123690605164f * d * f65; - } - { const float d = D(ii, k, 172); - g42 += 0.2182178944349289f * d * f60; - g43 += 0.2760262191295624f * d * f61; - g44 += 0.29277002811431885f * d * f62; - g45 += 0.2760262191295624f * d * f63; - g46 += 0.2182178944349289f * d * f64; - } - { const float d = D(ii, k, 173); - g42 += 0.26726123690605164f * d * f59; - g43 += 0.2182178944349289f * d * f60; - g42 += -0.0690065547823906f * d * f61; - g45 += -0.16903084516525269f * d * f62; - g44 += 0.23904572427272797f * d * f63; - g46 += -0.0690065547823906f * d * f63; - g45 += 0.2182178944349289f * d * f64; - g46 += 0.26726123690605164f * d * f65; - } - { const float d = D(ii, k, 174); - g47 += -0.0690065547823906f * d * f63; - g47 += -0.26726123690605164f * d * f65; - } - { const float d = D(ii, k, 175); - g47 += 0.2182178944349289f * d * f60; - } - { const float d = D(ii, k, 176); - g47 += 0.26726123690605164f * d * f59; - g47 += -0.0690065547823906f * d * f61; - } - { const float d = D(ii, k, 177); - g32 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f32; - g33 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f33; - g34 += -0.22360679507255554f * d * f5; - g5 += -0.22360679507255554f * d * f34; - g36 += -0.3872983455657959f * d * f5; - g5 += -0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 178); - g33 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f33; - g34 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f34; - g35 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f35; - } - { const float d = D(ii, k, 179); - g32 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f32; - g34 += -0.22360679507255554f * d * f7; - g7 += -0.22360679507255554f * d * f34; - g35 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f35; - g36 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 180); - g32 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f32; - g33 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f33; - g34 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f34; - g36 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 181); - g33 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f33; - g34 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f34; - g35 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f35; - } - { const float d = D(ii, k, 182); - g32 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f32; - g34 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f34; - g35 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f35; - g36 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 183); - g32 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f32; - g33 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f33; - g34 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f34; - g36 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 184); - g33 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f33; - g34 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f34; - g35 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f35; - } - { const float d = D(ii, k, 185); - g32 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f32; - g34 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f34; - g35 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f35; - g36 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 186); - g32 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f32; - g33 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f33; - g34 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f34; - g36 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 187); - g33 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f33; - g34 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f34; - g35 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f35; - } - { const float d = D(ii, k, 188); - g32 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f32; - g34 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f34; - g35 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f35; - g36 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f36; - } - { const float d = D(ii, k, 204); - g11 += 1.0f * d * f0; - g0 += 1.0f * d * f11; - } - { const float d = D(ii, k, 205); - g12 += 1.0f * d * f0; - g0 += 1.0f * d * f12; - } - { const float d = D(ii, k, 206); - g13 += 1.0f * d * f0; - g0 += 1.0f * d * f13; - } - { const float d = D(ii, k, 207); - g11 += 1.0f * d * f1; - g1 += 1.0f * d * f11; - } - { const float d = D(ii, k, 208); - g12 += 1.0f * d * f1; - g1 += 1.0f * d * f12; - } - { const float d = D(ii, k, 209); - g13 += 1.0f * d * f1; - g1 += 1.0f * d * f13; - } - { const float d = D(ii, k, 210); - g11 += 1.0f * d * f2; - g2 += 1.0f * d * f11; - } - { const float d = D(ii, k, 211); - g12 += 1.0f * d * f2; - g2 += 1.0f * d * f12; - } - { const float d = D(ii, k, 212); - g13 += 1.0f * d * f2; - g2 += 1.0f * d * f13; - } - { const float d = D(ii, k, 213); - g11 += 1.0f * d * f3; - g3 += 1.0f * d * f11; - } - { const float d = D(ii, k, 214); - g12 += 1.0f * d * f3; - g3 += 1.0f * d * f12; - } - { const float d = D(ii, k, 215); - g13 += 1.0f * d * f3; - g3 += 1.0f * d * f13; - } - { const float d = D(ii, k, 216); - g11 += 1.0f * d * f4; - g4 += 1.0f * d * f11; - } - { const float d = D(ii, k, 217); - g12 += 1.0f * d * f4; - g4 += 1.0f * d * f12; - } - { const float d = D(ii, k, 218); - g13 += 1.0f * d * f4; - g4 += 1.0f * d * f13; - } - { const float d = D(ii, k, 219); - g21 += 0.26726123690605164f * d * f66; - g20 += 0.2182178944349289f * d * f67; - g19 += 0.23904572427272797f * d * f68; - g21 += 0.0690065547823906f * d * f68; - g18 += -0.16903084516525269f * d * f69; - g17 += -0.0690065547823906f * d * f70; - g18 += -0.2182178944349289f * d * f71; - g17 += -0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 220); - g17 += 0.2182178944349289f * d * f67; - g18 += 0.2760262191295624f * d * f68; - g19 += 0.29277002811431885f * d * f69; - g20 += 0.2760262191295624f * d * f70; - g21 += 0.2182178944349289f * d * f71; - } - { const float d = D(ii, k, 221); - g17 += 0.26726123690605164f * d * f66; - g18 += 0.2182178944349289f * d * f67; - g17 += -0.0690065547823906f * d * f68; - g20 += -0.16903084516525269f * d * f69; - g19 += 0.23904572427272797f * d * f70; - g21 += -0.0690065547823906f * d * f70; - g20 += 0.2182178944349289f * d * f71; - g21 += 0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 222); - g26 += 0.26726123690605164f * d * f66; - g25 += 0.2182178944349289f * d * f67; - g24 += 0.23904572427272797f * d * f68; - g26 += 0.0690065547823906f * d * f68; - g23 += -0.16903084516525269f * d * f69; - g22 += -0.0690065547823906f * d * f70; - g23 += -0.2182178944349289f * d * f71; - g22 += -0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 223); - g22 += 0.2182178944349289f * d * f67; - g23 += 0.2760262191295624f * d * f68; - g24 += 0.29277002811431885f * d * f69; - g25 += 0.2760262191295624f * d * f70; - g26 += 0.2182178944349289f * d * f71; - } - { const float d = D(ii, k, 224); - g22 += 0.26726123690605164f * d * f66; - g23 += 0.2182178944349289f * d * f67; - g22 += -0.0690065547823906f * d * f68; - g25 += -0.16903084516525269f * d * f69; - g24 += 0.23904572427272797f * d * f70; - g26 += -0.0690065547823906f * d * f70; - g25 += 0.2182178944349289f * d * f71; - g26 += 0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 225); - g31 += 0.26726123690605164f * d * f66; - g30 += 0.2182178944349289f * d * f67; - g29 += 0.23904572427272797f * d * f68; - g31 += 0.0690065547823906f * d * f68; - g28 += -0.16903084516525269f * d * f69; - g27 += -0.0690065547823906f * d * f70; - g28 += -0.2182178944349289f * d * f71; - g27 += -0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 226); - g27 += 0.2182178944349289f * d * f67; - g28 += 0.2760262191295624f * d * f68; - g29 += 0.29277002811431885f * d * f69; - g30 += 0.2760262191295624f * d * f70; - g31 += 0.2182178944349289f * d * f71; - } - { const float d = D(ii, k, 227); - g27 += 0.26726123690605164f * d * f66; - g28 += 0.2182178944349289f * d * f67; - g27 += -0.0690065547823906f * d * f68; - g30 += -0.16903084516525269f * d * f69; - g29 += 0.23904572427272797f * d * f70; - g31 += -0.0690065547823906f * d * f70; - g30 += 0.2182178944349289f * d * f71; - g31 += 0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 228); - g36 += 0.26726123690605164f * d * f66; - g35 += 0.2182178944349289f * d * f67; - g34 += 0.23904572427272797f * d * f68; - g36 += 0.0690065547823906f * d * f68; - g33 += -0.16903084516525269f * d * f69; - g32 += -0.0690065547823906f * d * f70; - g33 += -0.2182178944349289f * d * f71; - g32 += -0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 229); - g32 += 0.2182178944349289f * d * f67; - g33 += 0.2760262191295624f * d * f68; - g34 += 0.29277002811431885f * d * f69; - g35 += 0.2760262191295624f * d * f70; - g36 += 0.2182178944349289f * d * f71; - } - { const float d = D(ii, k, 230); - g32 += 0.26726123690605164f * d * f66; - g33 += 0.2182178944349289f * d * f67; - g32 += -0.0690065547823906f * d * f68; - g35 += -0.16903084516525269f * d * f69; - g34 += 0.23904572427272797f * d * f70; - g36 += -0.0690065547823906f * d * f70; - g35 += 0.2182178944349289f * d * f71; - g36 += 0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 231); - g46 += 0.26726123690605164f * d * f66; - g45 += 0.2182178944349289f * d * f67; - g44 += 0.23904572427272797f * d * f68; - g46 += 0.0690065547823906f * d * f68; - g43 += -0.16903084516525269f * d * f69; - g42 += -0.0690065547823906f * d * f70; - g43 += -0.2182178944349289f * d * f71; - g42 += -0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 232); - g42 += 0.2182178944349289f * d * f67; - g43 += 0.2760262191295624f * d * f68; - g44 += 0.29277002811431885f * d * f69; - g45 += 0.2760262191295624f * d * f70; - g46 += 0.2182178944349289f * d * f71; - } - { const float d = D(ii, k, 233); - g42 += 0.26726123690605164f * d * f66; - g43 += 0.2182178944349289f * d * f67; - g42 += -0.0690065547823906f * d * f68; - g45 += -0.16903084516525269f * d * f69; - g44 += 0.23904572427272797f * d * f70; - g46 += -0.0690065547823906f * d * f70; - g45 += 0.2182178944349289f * d * f71; - g46 += 0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 234); - g47 += -0.0690065547823906f * d * f70; - g47 += -0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 235); - g47 += 0.2182178944349289f * d * f67; - } - { const float d = D(ii, k, 236); - g47 += 0.26726123690605164f * d * f66; - g47 += -0.0690065547823906f * d * f68; - } - { const float d = D(ii, k, 237); - g37 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f37; - g38 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f38; - g39 += -0.22360679507255554f * d * f5; - g5 += -0.22360679507255554f * d * f39; - g41 += -0.3872983455657959f * d * f5; - g5 += -0.3872983455657959f * d * f41; - } - { const float d = D(ii, k, 238); - g38 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f38; - g39 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f39; - g40 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f40; - } - { const float d = D(ii, k, 239); - g37 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f37; - g39 += -0.22360679507255554f * d * f7; - g7 += -0.22360679507255554f * d * f39; - g40 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f40; - g41 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f41; - } - { const float d = D(ii, k, 240); - g37 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f37; - g38 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f38; - g39 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f39; - g41 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f41; - } - { const float d = D(ii, k, 241); - g38 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f38; - g39 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f39; - g40 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f40; - } - { const float d = D(ii, k, 242); - g37 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f37; - g39 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f39; - g40 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f40; - g41 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f41; - } - { const float d = D(ii, k, 243); - g37 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f37; - g38 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f38; - g39 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f39; - g41 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f41; - } - { const float d = D(ii, k, 244); - g38 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f38; - g39 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f39; - g40 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f40; - } - { const float d = D(ii, k, 245); - g37 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f37; - g39 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f39; - g40 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f40; - g41 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f41; - } - { const float d = D(ii, k, 246); - g37 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f37; - g38 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f38; - g39 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f39; - g41 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f41; - } - { const float d = D(ii, k, 247); - g38 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f38; - g39 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f39; - g40 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f40; - } - { const float d = D(ii, k, 248); - g37 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f37; - g39 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f39; - g40 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f40; - g41 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f41; - } - { const float d = D(ii, k, 270); - g21 += 0.26726123690605164f * d * f73; - g20 += 0.2182178944349289f * d * f74; - g19 += 0.23904572427272797f * d * f75; - g21 += 0.0690065547823906f * d * f75; - g18 += -0.16903084516525269f * d * f76; - g17 += -0.0690065547823906f * d * f77; - g18 += -0.2182178944349289f * d * f78; - g17 += -0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 271); - g17 += 0.2182178944349289f * d * f74; - g18 += 0.2760262191295624f * d * f75; - g19 += 0.29277002811431885f * d * f76; - g20 += 0.2760262191295624f * d * f77; - g21 += 0.2182178944349289f * d * f78; - } - { const float d = D(ii, k, 272); - g17 += 0.26726123690605164f * d * f73; - g18 += 0.2182178944349289f * d * f74; - g17 += -0.0690065547823906f * d * f75; - g20 += -0.16903084516525269f * d * f76; - g19 += 0.23904572427272797f * d * f77; - g21 += -0.0690065547823906f * d * f77; - g20 += 0.2182178944349289f * d * f78; - g21 += 0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 273); - g31 += 0.26726123690605164f * d * f73; - g30 += 0.2182178944349289f * d * f74; - g29 += 0.23904572427272797f * d * f75; - g31 += 0.0690065547823906f * d * f75; - g28 += -0.16903084516525269f * d * f76; - g27 += -0.0690065547823906f * d * f77; - g28 += -0.2182178944349289f * d * f78; - g27 += -0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 274); - g27 += 0.2182178944349289f * d * f74; - g28 += 0.2760262191295624f * d * f75; - g29 += 0.29277002811431885f * d * f76; - g30 += 0.2760262191295624f * d * f77; - g31 += 0.2182178944349289f * d * f78; - } - { const float d = D(ii, k, 275); - g27 += 0.26726123690605164f * d * f73; - g28 += 0.2182178944349289f * d * f74; - g27 += -0.0690065547823906f * d * f75; - g30 += -0.16903084516525269f * d * f76; - g29 += 0.23904572427272797f * d * f77; - g31 += -0.0690065547823906f * d * f77; - g30 += 0.2182178944349289f * d * f78; - g31 += 0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 276); - g36 += 0.26726123690605164f * d * f73; - g35 += 0.2182178944349289f * d * f74; - g34 += 0.23904572427272797f * d * f75; - g36 += 0.0690065547823906f * d * f75; - g33 += -0.16903084516525269f * d * f76; - g32 += -0.0690065547823906f * d * f77; - g33 += -0.2182178944349289f * d * f78; - g32 += -0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 277); - g32 += 0.2182178944349289f * d * f74; - g33 += 0.2760262191295624f * d * f75; - g34 += 0.29277002811431885f * d * f76; - g35 += 0.2760262191295624f * d * f77; - g36 += 0.2182178944349289f * d * f78; - } - { const float d = D(ii, k, 278); - g32 += 0.26726123690605164f * d * f73; - g33 += 0.2182178944349289f * d * f74; - g32 += -0.0690065547823906f * d * f75; - g35 += -0.16903084516525269f * d * f76; - g34 += 0.23904572427272797f * d * f77; - g36 += -0.0690065547823906f * d * f77; - g35 += 0.2182178944349289f * d * f78; - g36 += 0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 279); - g41 += 0.26726123690605164f * d * f73; - g40 += 0.2182178944349289f * d * f74; - g39 += 0.23904572427272797f * d * f75; - g41 += 0.0690065547823906f * d * f75; - g38 += -0.16903084516525269f * d * f76; - g37 += -0.0690065547823906f * d * f77; - g38 += -0.2182178944349289f * d * f78; - g37 += -0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 280); - g37 += 0.2182178944349289f * d * f74; - g38 += 0.2760262191295624f * d * f75; - g39 += 0.29277002811431885f * d * f76; - g40 += 0.2760262191295624f * d * f77; - g41 += 0.2182178944349289f * d * f78; - } - { const float d = D(ii, k, 281); - g37 += 0.26726123690605164f * d * f73; - g38 += 0.2182178944349289f * d * f74; - g37 += -0.0690065547823906f * d * f75; - g40 += -0.16903084516525269f * d * f76; - g39 += 0.23904572427272797f * d * f77; - g41 += -0.0690065547823906f * d * f77; - g40 += 0.2182178944349289f * d * f78; - g41 += 0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 282); - g46 += 0.26726123690605164f * d * f73; - g45 += 0.2182178944349289f * d * f74; - g44 += 0.23904572427272797f * d * f75; - g46 += 0.0690065547823906f * d * f75; - g43 += -0.16903084516525269f * d * f76; - g42 += -0.0690065547823906f * d * f77; - g43 += -0.2182178944349289f * d * f78; - g42 += -0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 283); - g42 += 0.2182178944349289f * d * f74; - g43 += 0.2760262191295624f * d * f75; - g44 += 0.29277002811431885f * d * f76; - g45 += 0.2760262191295624f * d * f77; - g46 += 0.2182178944349289f * d * f78; - } - { const float d = D(ii, k, 284); - g42 += 0.26726123690605164f * d * f73; - g43 += 0.2182178944349289f * d * f74; - g42 += -0.0690065547823906f * d * f75; - g45 += -0.16903084516525269f * d * f76; - g44 += 0.23904572427272797f * d * f77; - g46 += -0.0690065547823906f * d * f77; - g45 += 0.2182178944349289f * d * f78; - g46 += 0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 285); - g47 += -0.0690065547823906f * d * f77; - g47 += -0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 286); - g47 += 0.2182178944349289f * d * f74; - } - { const float d = D(ii, k, 287); - g47 += 0.26726123690605164f * d * f73; - g47 += -0.0690065547823906f * d * f75; - } - { const float d = D(ii, k, 288); - g42 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f42; - g43 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f43; - g44 += -0.22360679507255554f * d * f5; - g5 += -0.22360679507255554f * d * f44; - g46 += -0.3872983455657959f * d * f5; - g5 += -0.3872983455657959f * d * f46; - } - { const float d = D(ii, k, 289); - g43 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f43; - g44 += 0.4472135901451111f * d * f6; - g6 += 0.4472135901451111f * d * f44; - g45 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f45; - } - { const float d = D(ii, k, 290); - g42 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f42; - g44 += -0.22360679507255554f * d * f7; - g7 += -0.22360679507255554f * d * f44; - g45 += 0.3872983455657959f * d * f6; - g6 += 0.3872983455657959f * d * f45; - g46 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f46; - } - { const float d = D(ii, k, 291); - g42 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f42; - g43 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f43; - g44 += -0.22360679507255554f * d * f8; - g8 += -0.22360679507255554f * d * f44; - g46 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f46; - } - { const float d = D(ii, k, 292); - g43 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f43; - g44 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f44; - g45 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f45; - } - { const float d = D(ii, k, 293); - g42 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f42; - g44 += -0.22360679507255554f * d * f10; - g10 += -0.22360679507255554f * d * f44; - g45 += 0.3872983455657959f * d * f9; - g9 += 0.3872983455657959f * d * f45; - g46 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f46; - } - { const float d = D(ii, k, 294); - g42 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f42; - g43 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f43; - g44 += -0.22360679507255554f * d * f11; - g11 += -0.22360679507255554f * d * f44; - g46 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f46; - } - { const float d = D(ii, k, 295); - g43 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f43; - g44 += 0.4472135901451111f * d * f12; - g12 += 0.4472135901451111f * d * f44; - g45 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f45; - } - { const float d = D(ii, k, 296); - g42 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f42; - g44 += -0.22360679507255554f * d * f13; - g13 += -0.22360679507255554f * d * f44; - g45 += 0.3872983455657959f * d * f12; - g12 += 0.3872983455657959f * d * f45; - g46 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f46; - } - { const float d = D(ii, k, 297); - g42 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f42; - g43 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f43; - g44 += -0.22360679507255554f * d * f14; - g14 += -0.22360679507255554f * d * f44; - g46 += -0.3872983455657959f * d * f14; - g14 += -0.3872983455657959f * d * f46; - } - { const float d = D(ii, k, 298); - g43 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f43; - g44 += 0.4472135901451111f * d * f15; - g15 += 0.4472135901451111f * d * f44; - g45 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f45; - } - { const float d = D(ii, k, 299); - g42 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f42; - g44 += -0.22360679507255554f * d * f16; - g16 += -0.22360679507255554f * d * f44; - g45 += 0.3872983455657959f * d * f15; - g15 += 0.3872983455657959f * d * f45; - g46 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f46; - } - { const float d = D(ii, k, 315); - g14 += 1.0f * d * f0; - g0 += 1.0f * d * f14; - } - { const float d = D(ii, k, 316); - g15 += 1.0f * d * f0; - g0 += 1.0f * d * f15; - } - { const float d = D(ii, k, 317); - g16 += 1.0f * d * f0; - g0 += 1.0f * d * f16; - } - { const float d = D(ii, k, 318); - g14 += 1.0f * d * f1; - g1 += 1.0f * d * f14; - } - { const float d = D(ii, k, 319); - g15 += 1.0f * d * f1; - g1 += 1.0f * d * f15; - } - { const float d = D(ii, k, 320); - g16 += 1.0f * d * f1; - g1 += 1.0f * d * f16; - } - { const float d = D(ii, k, 321); - g14 += 1.0f * d * f2; - g2 += 1.0f * d * f14; - } - { const float d = D(ii, k, 322); - g15 += 1.0f * d * f2; - g2 += 1.0f * d * f15; - } - { const float d = D(ii, k, 323); - g16 += 1.0f * d * f2; - g2 += 1.0f * d * f16; - } - { const float d = D(ii, k, 324); - g14 += 1.0f * d * f3; - g3 += 1.0f * d * f14; - } - { const float d = D(ii, k, 325); - g15 += 1.0f * d * f3; - g3 += 1.0f * d * f15; - } - { const float d = D(ii, k, 326); - g16 += 1.0f * d * f3; - g3 += 1.0f * d * f16; - } - { const float d = D(ii, k, 327); - g14 += 1.0f * d * f4; - g4 += 1.0f * d * f14; - } - { const float d = D(ii, k, 328); - g15 += 1.0f * d * f4; - g4 += 1.0f * d * f15; - } - { const float d = D(ii, k, 329); - g16 += 1.0f * d * f4; - g4 += 1.0f * d * f16; - } - { const float d = D(ii, k, 330); - g21 += 0.26726123690605164f * d * f80; - g20 += 0.2182178944349289f * d * f81; - g19 += 0.23904572427272797f * d * f82; - g21 += 0.0690065547823906f * d * f82; - g18 += -0.16903084516525269f * d * f83; - g17 += -0.0690065547823906f * d * f84; - g18 += -0.2182178944349289f * d * f85; - g17 += -0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 331); - g17 += 0.2182178944349289f * d * f81; - g18 += 0.2760262191295624f * d * f82; - g19 += 0.29277002811431885f * d * f83; - g20 += 0.2760262191295624f * d * f84; - g21 += 0.2182178944349289f * d * f85; - } - { const float d = D(ii, k, 332); - g17 += 0.26726123690605164f * d * f80; - g18 += 0.2182178944349289f * d * f81; - g17 += -0.0690065547823906f * d * f82; - g20 += -0.16903084516525269f * d * f83; - g19 += 0.23904572427272797f * d * f84; - g21 += -0.0690065547823906f * d * f84; - g20 += 0.2182178944349289f * d * f85; - g21 += 0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 333); - g26 += 0.26726123690605164f * d * f80; - g25 += 0.2182178944349289f * d * f81; - g24 += 0.23904572427272797f * d * f82; - g26 += 0.0690065547823906f * d * f82; - g23 += -0.16903084516525269f * d * f83; - g22 += -0.0690065547823906f * d * f84; - g23 += -0.2182178944349289f * d * f85; - g22 += -0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 334); - g22 += 0.2182178944349289f * d * f81; - g23 += 0.2760262191295624f * d * f82; - g24 += 0.29277002811431885f * d * f83; - g25 += 0.2760262191295624f * d * f84; - g26 += 0.2182178944349289f * d * f85; - } - { const float d = D(ii, k, 335); - g22 += 0.26726123690605164f * d * f80; - g23 += 0.2182178944349289f * d * f81; - g22 += -0.0690065547823906f * d * f82; - g25 += -0.16903084516525269f * d * f83; - g24 += 0.23904572427272797f * d * f84; - g26 += -0.0690065547823906f * d * f84; - g25 += 0.2182178944349289f * d * f85; - g26 += 0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 336); - g31 += 0.26726123690605164f * d * f80; - g30 += 0.2182178944349289f * d * f81; - g29 += 0.23904572427272797f * d * f82; - g31 += 0.0690065547823906f * d * f82; - g28 += -0.16903084516525269f * d * f83; - g27 += -0.0690065547823906f * d * f84; - g28 += -0.2182178944349289f * d * f85; - g27 += -0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 337); - g27 += 0.2182178944349289f * d * f81; - g28 += 0.2760262191295624f * d * f82; - g29 += 0.29277002811431885f * d * f83; - g30 += 0.2760262191295624f * d * f84; - g31 += 0.2182178944349289f * d * f85; - } - { const float d = D(ii, k, 338); - g27 += 0.26726123690605164f * d * f80; - g28 += 0.2182178944349289f * d * f81; - g27 += -0.0690065547823906f * d * f82; - g30 += -0.16903084516525269f * d * f83; - g29 += 0.23904572427272797f * d * f84; - g31 += -0.0690065547823906f * d * f84; - g30 += 0.2182178944349289f * d * f85; - g31 += 0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 339); - g36 += 0.26726123690605164f * d * f80; - g35 += 0.2182178944349289f * d * f81; - g34 += 0.23904572427272797f * d * f82; - g36 += 0.0690065547823906f * d * f82; - g33 += -0.16903084516525269f * d * f83; - g32 += -0.0690065547823906f * d * f84; - g33 += -0.2182178944349289f * d * f85; - g32 += -0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 340); - g32 += 0.2182178944349289f * d * f81; - g33 += 0.2760262191295624f * d * f82; - g34 += 0.29277002811431885f * d * f83; - g35 += 0.2760262191295624f * d * f84; - g36 += 0.2182178944349289f * d * f85; - } - { const float d = D(ii, k, 341); - g32 += 0.26726123690605164f * d * f80; - g33 += 0.2182178944349289f * d * f81; - g32 += -0.0690065547823906f * d * f82; - g35 += -0.16903084516525269f * d * f83; - g34 += 0.23904572427272797f * d * f84; - g36 += -0.0690065547823906f * d * f84; - g35 += 0.2182178944349289f * d * f85; - g36 += 0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 342); - g41 += 0.26726123690605164f * d * f80; - g40 += 0.2182178944349289f * d * f81; - g39 += 0.23904572427272797f * d * f82; - g41 += 0.0690065547823906f * d * f82; - g38 += -0.16903084516525269f * d * f83; - g37 += -0.0690065547823906f * d * f84; - g38 += -0.2182178944349289f * d * f85; - g37 += -0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 343); - g37 += 0.2182178944349289f * d * f81; - g38 += 0.2760262191295624f * d * f82; - g39 += 0.29277002811431885f * d * f83; - g40 += 0.2760262191295624f * d * f84; - g41 += 0.2182178944349289f * d * f85; - } - { const float d = D(ii, k, 344); - g37 += 0.26726123690605164f * d * f80; - g38 += 0.2182178944349289f * d * f81; - g37 += -0.0690065547823906f * d * f82; - g40 += -0.16903084516525269f * d * f83; - g39 += 0.23904572427272797f * d * f84; - g41 += -0.0690065547823906f * d * f84; - g40 += 0.2182178944349289f * d * f85; - g41 += 0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 345); - g46 += 0.26726123690605164f * d * f80; - g45 += 0.2182178944349289f * d * f81; - g44 += 0.23904572427272797f * d * f82; - g46 += 0.0690065547823906f * d * f82; - g43 += -0.16903084516525269f * d * f83; - g42 += -0.0690065547823906f * d * f84; - g43 += -0.2182178944349289f * d * f85; - g42 += -0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 346); - g42 += 0.2182178944349289f * d * f81; - g43 += 0.2760262191295624f * d * f82; - g44 += 0.29277002811431885f * d * f83; - g45 += 0.2760262191295624f * d * f84; - g46 += 0.2182178944349289f * d * f85; - } - { const float d = D(ii, k, 347); - g42 += 0.26726123690605164f * d * f80; - g43 += 0.2182178944349289f * d * f81; - g42 += -0.0690065547823906f * d * f82; - g45 += -0.16903084516525269f * d * f83; - g44 += 0.23904572427272797f * d * f84; - g46 += -0.0690065547823906f * d * f84; - g45 += 0.2182178944349289f * d * f85; - g46 += 0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 348); - g47 += -0.0690065547823906f * d * f84; - g47 += -0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 349); - g47 += 0.2182178944349289f * d * f81; - } - { const float d = D(ii, k, 350); - g47 += 0.26726123690605164f * d * f80; - g47 += -0.0690065547823906f * d * f82; - } - { const float d = D(ii, k, 351); - g47 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f47; - g6 += 0.3872983455657959f * d * f48; - g5 += -0.22360679507255554f * d * f49; - g5 += -0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 352); - g5 += 0.3872983455657959f * d * f48; - g6 += 0.4472135901451111f * d * f49; - g7 += 0.3872983455657959f * d * f50; - } - { const float d = D(ii, k, 353); - g47 += 0.3872983455657959f * d * f5; - g5 += 0.3872983455657959f * d * f47; - g7 += -0.22360679507255554f * d * f49; - g6 += 0.3872983455657959f * d * f50; - g7 += 0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 354); - g47 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f47; - g9 += 0.3872983455657959f * d * f48; - g8 += -0.22360679507255554f * d * f49; - g8 += -0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 355); - g8 += 0.3872983455657959f * d * f48; - g9 += 0.4472135901451111f * d * f49; - g10 += 0.3872983455657959f * d * f50; - } - { const float d = D(ii, k, 356); - g47 += 0.3872983455657959f * d * f8; - g8 += 0.3872983455657959f * d * f47; - g10 += -0.22360679507255554f * d * f49; - g9 += 0.3872983455657959f * d * f50; - g10 += 0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 357); - g47 += 0.3872983455657959f * d * f13; - g13 += 0.3872983455657959f * d * f47; - g12 += 0.3872983455657959f * d * f48; - g11 += -0.22360679507255554f * d * f49; - g11 += -0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 358); - g11 += 0.3872983455657959f * d * f48; - g12 += 0.4472135901451111f * d * f49; - g13 += 0.3872983455657959f * d * f50; - } - { const float d = D(ii, k, 359); - g47 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f47; - g13 += -0.22360679507255554f * d * f49; - g12 += 0.3872983455657959f * d * f50; - g13 += 0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 360); - g47 += 0.3872983455657959f * d * f16; - g16 += 0.3872983455657959f * d * f47; - g15 += 0.3872983455657959f * d * f48; - g14 += -0.22360679507255554f * d * f49; - g14 += -0.3872983455657959f * d * f51; - } - { const float d = D(ii, k, 361); - g14 += 0.3872983455657959f * d * f48; - g15 += 0.4472135901451111f * d * f49; - g16 += 0.3872983455657959f * d * f50; - } - { const float d = D(ii, k, 362); - g47 += 0.3872983455657959f * d * f14; - g14 += 0.3872983455657959f * d * f47; - g16 += -0.22360679507255554f * d * f49; - g15 += 0.3872983455657959f * d * f50; - g16 += 0.3872983455657959f * d * f51; - } - dF(ii, k, 0) = g0; - dF(ii, k, 1) = g1; - dF(ii, k, 2) = g2; - dF(ii, k, 3) = g3; - dF(ii, k, 4) = g4; - dF(ii, k, 5) = g5; - dF(ii, k, 6) = g6; - dF(ii, k, 7) = g7; - dF(ii, k, 8) = g8; - dF(ii, k, 9) = g9; - dF(ii, k, 10) = g10; - dF(ii, k, 11) = g11; - dF(ii, k, 12) = g12; - dF(ii, k, 13) = g13; - dF(ii, k, 14) = g14; - dF(ii, k, 15) = g15; - dF(ii, k, 16) = g16; - dF(ii, k, 17) = g17; - dF(ii, k, 18) = g18; - dF(ii, k, 19) = g19; - dF(ii, k, 20) = g20; - dF(ii, k, 21) = g21; - dF(ii, k, 22) = g22; - dF(ii, k, 23) = g23; - dF(ii, k, 24) = g24; - dF(ii, k, 25) = g25; - dF(ii, k, 26) = g26; - dF(ii, k, 27) = g27; - dF(ii, k, 28) = g28; - dF(ii, k, 29) = g29; - dF(ii, k, 30) = g30; - dF(ii, k, 31) = g31; - dF(ii, k, 32) = g32; - dF(ii, k, 33) = g33; - dF(ii, k, 34) = g34; - dF(ii, k, 35) = g35; - dF(ii, k, 36) = g36; - dF(ii, k, 37) = g37; - dF(ii, k, 38) = g38; - dF(ii, k, 39) = g39; - dF(ii, k, 40) = g40; - dF(ii, k, 41) = g41; - dF(ii, k, 42) = g42; - dF(ii, k, 43) = g43; - dF(ii, k, 44) = g44; - dF(ii, k, 45) = g45; - dF(ii, k, 46) = g46; - dF(ii, k, 47) = g47; - } - { - float g48 = 0.0f; - float g49 = 0.0f; - float g50 = 0.0f; - float g51 = 0.0f; - float g52 = 0.0f; - float g53 = 0.0f; - float g54 = 0.0f; - float g55 = 0.0f; - float g56 = 0.0f; - float g57 = 0.0f; - float g58 = 0.0f; - float g59 = 0.0f; - float g60 = 0.0f; - float g61 = 0.0f; - float g62 = 0.0f; - float g63 = 0.0f; - float g64 = 0.0f; - float g65 = 0.0f; - float g66 = 0.0f; - float g67 = 0.0f; - float g68 = 0.0f; - float g69 = 0.0f; - float g70 = 0.0f; - float g71 = 0.0f; - float g72 = 0.0f; - float g73 = 0.0f; - float g74 = 0.0f; - float g75 = 0.0f; - float g76 = 0.0f; - float g77 = 0.0f; - float g78 = 0.0f; - float g79 = 0.0f; - float g80 = 0.0f; - float g81 = 0.0f; - float g82 = 0.0f; - float g83 = 0.0f; - float g84 = 0.0f; - float g85 = 0.0f; - float g86 = 0.0f; - float g87 = 0.0f; - float g88 = 0.0f; - float g89 = 0.0f; - float g90 = 0.0f; - float g91 = 0.0f; - float g92 = 0.0f; - float g93 = 0.0f; - float g94 = 0.0f; - float g95 = 0.0f; - { const float d = D(ii, k, 16); - g48 += 0.20000000298023224f * d * f18; - g49 += 0.20000000298023224f * d * f19; - g50 += 0.20000000298023224f * d * f20; - g51 += 0.20000000298023224f * d * f21; - } - { const float d = D(ii, k, 20); - g48 += 0.20000000298023224f * d * f23; - g49 += 0.20000000298023224f * d * f24; - g50 += 0.20000000298023224f * d * f25; - g51 += 0.20000000298023224f * d * f26; - } - { const float d = D(ii, k, 24); - g52 += 0.1428571492433548f * d * f52; - g52 += 0.1428571492433548f * d * f52; - g53 += 0.1428571492433548f * d * f53; - g53 += 0.1428571492433548f * d * f53; - g54 += 0.1428571492433548f * d * f54; - g54 += 0.1428571492433548f * d * f54; - g55 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f55; - g56 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f56; - g57 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f57; - g58 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f58; - } - { const float d = D(ii, k, 25); - g66 += 0.1428571492433548f * d * f52; - g52 += 0.1428571492433548f * d * f66; - g67 += 0.1428571492433548f * d * f53; - g53 += 0.1428571492433548f * d * f67; - g68 += 0.1428571492433548f * d * f54; - g54 += 0.1428571492433548f * d * f68; - g69 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f72; - } - { const float d = D(ii, k, 26); - g80 += 0.1428571492433548f * d * f52; - g52 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f53; - g53 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f54; - g54 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f86; - } - { const float d = D(ii, k, 33); - g48 += 0.20000000298023224f * d * f28; - g49 += 0.20000000298023224f * d * f29; - g50 += 0.20000000298023224f * d * f30; - g51 += 0.20000000298023224f * d * f31; - } - { const float d = D(ii, k, 34); - g87 += 0.1111111119389534f * d * f96; - g88 += 0.1111111119389534f * d * f97; - g89 += 0.1111111119389534f * d * f98; - g90 += 0.1111111119389534f * d * f99; - g91 += 0.1111111119389534f * d * f100; - g92 += 0.1111111119389534f * d * f101; - g93 += 0.1111111119389534f * d * f102; - g94 += 0.1111111119389534f * d * f103; - g95 += 0.1111111119389534f * d * f104; - } - { const float d = D(ii, k, 35); - g87 += 0.1111111119389534f * d * f105; - g88 += 0.1111111119389534f * d * f106; - g89 += 0.1111111119389534f * d * f107; - g90 += 0.1111111119389534f * d * f108; - g91 += 0.1111111119389534f * d * f109; - g92 += 0.1111111119389534f * d * f110; - g93 += 0.1111111119389534f * d * f111; - g94 += 0.1111111119389534f * d * f112; - g95 += 0.1111111119389534f * d * f113; - } - { const float d = D(ii, k, 36); - g87 += 0.1111111119389534f * d * f132; - g88 += 0.1111111119389534f * d * f133; - g89 += 0.1111111119389534f * d * f134; - g90 += 0.1111111119389534f * d * f135; - g91 += 0.1111111119389534f * d * f136; - g92 += 0.1111111119389534f * d * f137; - g93 += 0.1111111119389534f * d * f138; - g94 += 0.1111111119389534f * d * f139; - g95 += 0.1111111119389534f * d * f140; - } - { const float d = D(ii, k, 37); - g80 += 0.1428571492433548f * d * f59; - g59 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f60; - g60 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f61; - g61 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f62; - g62 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f63; - g63 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f64; - g64 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f65; - g65 += 0.1428571492433548f * d * f86; - } - { const float d = D(ii, k, 41); - g48 += 0.20000000298023224f * d * f33; - g49 += 0.20000000298023224f * d * f34; - g50 += 0.20000000298023224f * d * f35; - g51 += 0.20000000298023224f * d * f36; - } - { const float d = D(ii, k, 47); - g66 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f66; - g67 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f67; - g68 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f68; - g69 += 0.1428571492433548f * d * f69; - g69 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f70; - g70 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f71; - g71 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f72; - g72 += 0.1428571492433548f * d * f72; - } - { const float d = D(ii, k, 48); - g73 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f75; - g76 += 0.1428571492433548f * d * f69; - g69 += 0.1428571492433548f * d * f76; - g77 += 0.1428571492433548f * d * f70; - g70 += 0.1428571492433548f * d * f77; - g78 += 0.1428571492433548f * d * f71; - g71 += 0.1428571492433548f * d * f78; - g79 += 0.1428571492433548f * d * f72; - g72 += 0.1428571492433548f * d * f79; - } - { const float d = D(ii, k, 49); - g80 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f69; - g69 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f70; - g70 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f71; - g71 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f72; - g72 += 0.1428571492433548f * d * f86; - } - { const float d = D(ii, k, 54); - g48 += 0.20000000298023224f * d * f38; - g49 += 0.20000000298023224f * d * f39; - g50 += 0.20000000298023224f * d * f40; - g51 += 0.20000000298023224f * d * f41; - } - { const float d = D(ii, k, 59); - g73 += 0.1428571492433548f * d * f73; - g73 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f74; - g74 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f75; - g75 += 0.1428571492433548f * d * f75; - g76 += 0.1428571492433548f * d * f76; - g76 += 0.1428571492433548f * d * f76; - g77 += 0.1428571492433548f * d * f77; - g77 += 0.1428571492433548f * d * f77; - g78 += 0.1428571492433548f * d * f78; - g78 += 0.1428571492433548f * d * f78; - g79 += 0.1428571492433548f * d * f79; - g79 += 0.1428571492433548f * d * f79; - } - { const float d = D(ii, k, 60); - g80 += 0.1428571492433548f * d * f73; - g73 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f74; - g74 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f75; - g75 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f76; - g76 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f77; - g77 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f78; - g78 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f79; - g79 += 0.1428571492433548f * d * f86; - } - { const float d = D(ii, k, 62); - g48 += 0.20000000298023224f * d * f43; - g49 += 0.20000000298023224f * d * f44; - g50 += 0.20000000298023224f * d * f45; - g51 += 0.20000000298023224f * d * f46; - } - { const float d = D(ii, k, 65); - g80 += 0.1428571492433548f * d * f80; - g80 += 0.1428571492433548f * d * f80; - g81 += 0.1428571492433548f * d * f81; - g81 += 0.1428571492433548f * d * f81; - g82 += 0.1428571492433548f * d * f82; - g82 += 0.1428571492433548f * d * f82; - g83 += 0.1428571492433548f * d * f83; - g83 += 0.1428571492433548f * d * f83; - g84 += 0.1428571492433548f * d * f84; - g84 += 0.1428571492433548f * d * f84; - g85 += 0.1428571492433548f * d * f85; - g85 += 0.1428571492433548f * d * f85; - g86 += 0.1428571492433548f * d * f86; - g86 += 0.1428571492433548f * d * f86; - } - { const float d = D(ii, k, 67); - g48 += 0.20000000298023224f * d * f48; - g48 += 0.20000000298023224f * d * f48; - g49 += 0.20000000298023224f * d * f49; - g49 += 0.20000000298023224f * d * f49; - g50 += 0.20000000298023224f * d * f50; - g50 += 0.20000000298023224f * d * f50; - g51 += 0.20000000298023224f * d * f51; - g51 += 0.20000000298023224f * d * f51; - } - { const float d = D(ii, k, 117); - g52 += 0.26726123690605164f * d * f21; - g53 += 0.2182178944349289f * d * f20; - g54 += 0.23904572427272797f * d * f19; - g54 += 0.0690065547823906f * d * f21; - g55 += -0.16903084516525269f * d * f18; - g56 += -0.0690065547823906f * d * f17; - g57 += -0.2182178944349289f * d * f18; - g58 += -0.26726123690605164f * d * f17; - } - { const float d = D(ii, k, 118); - g53 += 0.2182178944349289f * d * f17; - g54 += 0.2760262191295624f * d * f18; - g55 += 0.29277002811431885f * d * f19; - g56 += 0.2760262191295624f * d * f20; - g57 += 0.2182178944349289f * d * f21; - } - { const float d = D(ii, k, 119); - g52 += 0.26726123690605164f * d * f17; - g53 += 0.2182178944349289f * d * f18; - g54 += -0.0690065547823906f * d * f17; - g55 += -0.16903084516525269f * d * f20; - g56 += 0.23904572427272797f * d * f19; - g56 += -0.0690065547823906f * d * f21; - g57 += 0.2182178944349289f * d * f20; - g58 += 0.26726123690605164f * d * f21; - } - { const float d = D(ii, k, 120); - g52 += 0.26726123690605164f * d * f26; - g53 += 0.2182178944349289f * d * f25; - g54 += 0.23904572427272797f * d * f24; - g54 += 0.0690065547823906f * d * f26; - g55 += -0.16903084516525269f * d * f23; - g56 += -0.0690065547823906f * d * f22; - g57 += -0.2182178944349289f * d * f23; - g58 += -0.26726123690605164f * d * f22; - } - { const float d = D(ii, k, 121); - g53 += 0.2182178944349289f * d * f22; - g54 += 0.2760262191295624f * d * f23; - g55 += 0.29277002811431885f * d * f24; - g56 += 0.2760262191295624f * d * f25; - g57 += 0.2182178944349289f * d * f26; - } - { const float d = D(ii, k, 122); - g52 += 0.26726123690605164f * d * f22; - g53 += 0.2182178944349289f * d * f23; - g54 += -0.0690065547823906f * d * f22; - g55 += -0.16903084516525269f * d * f25; - g56 += 0.23904572427272797f * d * f24; - g56 += -0.0690065547823906f * d * f26; - g57 += 0.2182178944349289f * d * f25; - g58 += 0.26726123690605164f * d * f26; - } - { const float d = D(ii, k, 123); - g52 += 0.26726123690605164f * d * f31; - g53 += 0.2182178944349289f * d * f30; - g54 += 0.23904572427272797f * d * f29; - g54 += 0.0690065547823906f * d * f31; - g55 += -0.16903084516525269f * d * f28; - g56 += -0.0690065547823906f * d * f27; - g57 += -0.2182178944349289f * d * f28; - g58 += -0.26726123690605164f * d * f27; - } - { const float d = D(ii, k, 124); - g53 += 0.2182178944349289f * d * f27; - g54 += 0.2760262191295624f * d * f28; - g55 += 0.29277002811431885f * d * f29; - g56 += 0.2760262191295624f * d * f30; - g57 += 0.2182178944349289f * d * f31; - } - { const float d = D(ii, k, 125); - g52 += 0.26726123690605164f * d * f27; - g53 += 0.2182178944349289f * d * f28; - g54 += -0.0690065547823906f * d * f27; - g55 += -0.16903084516525269f * d * f30; - g56 += 0.23904572427272797f * d * f29; - g56 += -0.0690065547823906f * d * f31; - g57 += 0.2182178944349289f * d * f30; - g58 += 0.26726123690605164f * d * f31; - } - { const float d = D(ii, k, 126); - g52 += 0.26726123690605164f * d * f36; - g53 += 0.2182178944349289f * d * f35; - g54 += 0.23904572427272797f * d * f34; - g54 += 0.0690065547823906f * d * f36; - g55 += -0.16903084516525269f * d * f33; - g56 += -0.0690065547823906f * d * f32; - g57 += -0.2182178944349289f * d * f33; - g58 += -0.26726123690605164f * d * f32; - } - { const float d = D(ii, k, 127); - g53 += 0.2182178944349289f * d * f32; - g54 += 0.2760262191295624f * d * f33; - g55 += 0.29277002811431885f * d * f34; - g56 += 0.2760262191295624f * d * f35; - g57 += 0.2182178944349289f * d * f36; - } - { const float d = D(ii, k, 128); - g52 += 0.26726123690605164f * d * f32; - g53 += 0.2182178944349289f * d * f33; - g54 += -0.0690065547823906f * d * f32; - g55 += -0.16903084516525269f * d * f35; - g56 += 0.23904572427272797f * d * f34; - g56 += -0.0690065547823906f * d * f36; - g57 += 0.2182178944349289f * d * f35; - g58 += 0.26726123690605164f * d * f36; - } - { const float d = D(ii, k, 129); - g52 += 0.26726123690605164f * d * f41; - g53 += 0.2182178944349289f * d * f40; - g54 += 0.23904572427272797f * d * f39; - g54 += 0.0690065547823906f * d * f41; - g55 += -0.16903084516525269f * d * f38; - g56 += -0.0690065547823906f * d * f37; - g57 += -0.2182178944349289f * d * f38; - g58 += -0.26726123690605164f * d * f37; - } - { const float d = D(ii, k, 130); - g53 += 0.2182178944349289f * d * f37; - g54 += 0.2760262191295624f * d * f38; - g55 += 0.29277002811431885f * d * f39; - g56 += 0.2760262191295624f * d * f40; - g57 += 0.2182178944349289f * d * f41; - } - { const float d = D(ii, k, 131); - g52 += 0.26726123690605164f * d * f37; - g53 += 0.2182178944349289f * d * f38; - g54 += -0.0690065547823906f * d * f37; - g55 += -0.16903084516525269f * d * f40; - g56 += 0.23904572427272797f * d * f39; - g56 += -0.0690065547823906f * d * f41; - g57 += 0.2182178944349289f * d * f40; - g58 += 0.26726123690605164f * d * f41; - } - { const float d = D(ii, k, 132); - g52 += 0.26726123690605164f * d * f46; - g53 += 0.2182178944349289f * d * f45; - g54 += 0.23904572427272797f * d * f44; - g54 += 0.0690065547823906f * d * f46; - g55 += -0.16903084516525269f * d * f43; - g56 += -0.0690065547823906f * d * f42; - g57 += -0.2182178944349289f * d * f43; - g58 += -0.26726123690605164f * d * f42; - } - { const float d = D(ii, k, 133); - g53 += 0.2182178944349289f * d * f42; - g54 += 0.2760262191295624f * d * f43; - g55 += 0.29277002811431885f * d * f44; - g56 += 0.2760262191295624f * d * f45; - g57 += 0.2182178944349289f * d * f46; - } - { const float d = D(ii, k, 134); - g52 += 0.26726123690605164f * d * f42; - g53 += 0.2182178944349289f * d * f43; - g54 += -0.0690065547823906f * d * f42; - g55 += -0.16903084516525269f * d * f45; - g56 += 0.23904572427272797f * d * f44; - g56 += -0.0690065547823906f * d * f46; - g57 += 0.2182178944349289f * d * f45; - g58 += 0.26726123690605164f * d * f46; - } - { const float d = D(ii, k, 135); - g52 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f52; - g53 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f53; - g54 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f54; - g54 += 0.0690065547823906f * d * f51; - g51 += 0.0690065547823906f * d * f54; - g55 += -0.16903084516525269f * d * f48; - g48 += -0.16903084516525269f * d * f55; - g56 += -0.0690065547823906f * d * f47; - g57 += -0.2182178944349289f * d * f48; - g48 += -0.2182178944349289f * d * f57; - g58 += -0.26726123690605164f * d * f47; - } - { const float d = D(ii, k, 136); - g53 += 0.2182178944349289f * d * f47; - g54 += 0.2760262191295624f * d * f48; - g48 += 0.2760262191295624f * d * f54; - g55 += 0.29277002811431885f * d * f49; - g49 += 0.29277002811431885f * d * f55; - g56 += 0.2760262191295624f * d * f50; - g50 += 0.2760262191295624f * d * f56; - g57 += 0.2182178944349289f * d * f51; - g51 += 0.2182178944349289f * d * f57; - } - { const float d = D(ii, k, 137); - g52 += 0.26726123690605164f * d * f47; - g53 += 0.2182178944349289f * d * f48; - g48 += 0.2182178944349289f * d * f53; - g54 += -0.0690065547823906f * d * f47; - g55 += -0.16903084516525269f * d * f50; - g50 += -0.16903084516525269f * d * f55; - g56 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f56; - g56 += -0.0690065547823906f * d * f51; - g51 += -0.0690065547823906f * d * f56; - g57 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f57; - g58 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f58; - } - { const float d = D(ii, k, 150); - g87 += 0.20412415266036987f * d * f65; - g65 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f64; - g64 += 0.1767766922712326f * d * f88; - g89 += 0.14940357208251953f * d * f63; - g63 += 0.14940357208251953f * d * f89; - g89 += 0.03857583925127983f * d * f65; - g65 += 0.03857583925127983f * d * f89; - g90 += 0.17251639068126678f * d * f62; - g62 += 0.17251639068126678f * d * f90; - g90 += 0.06681530922651291f * d * f64; - g64 += 0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f61; - g61 += -0.13363061845302582f * d * f91; - g92 += -0.06681530922651291f * d * f60; - g60 += -0.06681530922651291f * d * f92; - g93 += -0.03857583925127983f * d * f59; - g59 += -0.03857583925127983f * d * f93; - g93 += -0.14940357208251953f * d * f61; - g61 += -0.14940357208251953f * d * f93; - g94 += -0.1767766922712326f * d * f60; - g60 += -0.1767766922712326f * d * f94; - g95 += -0.20412415266036987f * d * f59; - g59 += -0.20412415266036987f * d * f95; - } - { const float d = D(ii, k, 151); - g88 += 0.14433756470680237f * d * f59; - g59 += 0.14433756470680237f * d * f88; - g89 += 0.18898223340511322f * d * f60; - g60 += 0.18898223340511322f * d * f89; - g90 += 0.21128855645656586f * d * f61; - g61 += 0.21128855645656586f * d * f90; - g91 += 0.2182178944349289f * d * f62; - g62 += 0.2182178944349289f * d * f91; - g92 += 0.21128855645656586f * d * f63; - g63 += 0.21128855645656586f * d * f92; - g93 += 0.18898223340511322f * d * f64; - g64 += 0.18898223340511322f * d * f93; - g94 += 0.14433756470680237f * d * f65; - g65 += 0.14433756470680237f * d * f94; - } - { const float d = D(ii, k, 152); - g87 += 0.20412415266036987f * d * f59; - g59 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f60; - g60 += 0.1767766922712326f * d * f88; - g89 += -0.03857583925127983f * d * f59; - g59 += -0.03857583925127983f * d * f89; - g89 += 0.14940357208251953f * d * f61; - g61 += 0.14940357208251953f * d * f89; - g90 += -0.06681530922651291f * d * f60; - g60 += -0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f63; - g63 += -0.13363061845302582f * d * f91; - g92 += 0.17251639068126678f * d * f62; - g62 += 0.17251639068126678f * d * f92; - g92 += -0.06681530922651291f * d * f64; - g64 += -0.06681530922651291f * d * f92; - g93 += 0.14940357208251953f * d * f63; - g63 += 0.14940357208251953f * d * f93; - g93 += -0.03857583925127983f * d * f65; - g65 += -0.03857583925127983f * d * f93; - g94 += 0.1767766922712326f * d * f64; - g64 += 0.1767766922712326f * d * f94; - g95 += 0.20412415266036987f * d * f65; - g65 += 0.20412415266036987f * d * f95; - } - { const float d = D(ii, k, 153); - g87 += 0.20412415266036987f * d * f72; - g72 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f71; - g71 += 0.1767766922712326f * d * f88; - g89 += 0.14940357208251953f * d * f70; - g70 += 0.14940357208251953f * d * f89; - g89 += 0.03857583925127983f * d * f72; - g72 += 0.03857583925127983f * d * f89; - g90 += 0.17251639068126678f * d * f69; - g69 += 0.17251639068126678f * d * f90; - g90 += 0.06681530922651291f * d * f71; - g71 += 0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f68; - g68 += -0.13363061845302582f * d * f91; - g92 += -0.06681530922651291f * d * f67; - g67 += -0.06681530922651291f * d * f92; - g93 += -0.03857583925127983f * d * f66; - g66 += -0.03857583925127983f * d * f93; - g93 += -0.14940357208251953f * d * f68; - g68 += -0.14940357208251953f * d * f93; - g94 += -0.1767766922712326f * d * f67; - g67 += -0.1767766922712326f * d * f94; - g95 += -0.20412415266036987f * d * f66; - g66 += -0.20412415266036987f * d * f95; - } - { const float d = D(ii, k, 154); - g88 += 0.14433756470680237f * d * f66; - g66 += 0.14433756470680237f * d * f88; - g89 += 0.18898223340511322f * d * f67; - g67 += 0.18898223340511322f * d * f89; - g90 += 0.21128855645656586f * d * f68; - g68 += 0.21128855645656586f * d * f90; - g91 += 0.2182178944349289f * d * f69; - g69 += 0.2182178944349289f * d * f91; - g92 += 0.21128855645656586f * d * f70; - g70 += 0.21128855645656586f * d * f92; - g93 += 0.18898223340511322f * d * f71; - g71 += 0.18898223340511322f * d * f93; - g94 += 0.14433756470680237f * d * f72; - g72 += 0.14433756470680237f * d * f94; - } - { const float d = D(ii, k, 155); - g87 += 0.20412415266036987f * d * f66; - g66 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f67; - g67 += 0.1767766922712326f * d * f88; - g89 += -0.03857583925127983f * d * f66; - g66 += -0.03857583925127983f * d * f89; - g89 += 0.14940357208251953f * d * f68; - g68 += 0.14940357208251953f * d * f89; - g90 += -0.06681530922651291f * d * f67; - g67 += -0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f70; - g70 += -0.13363061845302582f * d * f91; - g92 += 0.17251639068126678f * d * f69; - g69 += 0.17251639068126678f * d * f92; - g92 += -0.06681530922651291f * d * f71; - g71 += -0.06681530922651291f * d * f92; - g93 += 0.14940357208251953f * d * f70; - g70 += 0.14940357208251953f * d * f93; - g93 += -0.03857583925127983f * d * f72; - g72 += -0.03857583925127983f * d * f93; - g94 += 0.1767766922712326f * d * f71; - g71 += 0.1767766922712326f * d * f94; - g95 += 0.20412415266036987f * d * f72; - g72 += 0.20412415266036987f * d * f95; - } - { const float d = D(ii, k, 156); - g87 += 0.20412415266036987f * d * f79; - g79 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f78; - g78 += 0.1767766922712326f * d * f88; - g89 += 0.14940357208251953f * d * f77; - g77 += 0.14940357208251953f * d * f89; - g89 += 0.03857583925127983f * d * f79; - g79 += 0.03857583925127983f * d * f89; - g90 += 0.17251639068126678f * d * f76; - g76 += 0.17251639068126678f * d * f90; - g90 += 0.06681530922651291f * d * f78; - g78 += 0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f75; - g75 += -0.13363061845302582f * d * f91; - g92 += -0.06681530922651291f * d * f74; - g74 += -0.06681530922651291f * d * f92; - g93 += -0.03857583925127983f * d * f73; - g73 += -0.03857583925127983f * d * f93; - g93 += -0.14940357208251953f * d * f75; - g75 += -0.14940357208251953f * d * f93; - g94 += -0.1767766922712326f * d * f74; - g74 += -0.1767766922712326f * d * f94; - g95 += -0.20412415266036987f * d * f73; - g73 += -0.20412415266036987f * d * f95; - } - { const float d = D(ii, k, 157); - g88 += 0.14433756470680237f * d * f73; - g73 += 0.14433756470680237f * d * f88; - g89 += 0.18898223340511322f * d * f74; - g74 += 0.18898223340511322f * d * f89; - g90 += 0.21128855645656586f * d * f75; - g75 += 0.21128855645656586f * d * f90; - g91 += 0.2182178944349289f * d * f76; - g76 += 0.2182178944349289f * d * f91; - g92 += 0.21128855645656586f * d * f77; - g77 += 0.21128855645656586f * d * f92; - g93 += 0.18898223340511322f * d * f78; - g78 += 0.18898223340511322f * d * f93; - g94 += 0.14433756470680237f * d * f79; - g79 += 0.14433756470680237f * d * f94; - } - { const float d = D(ii, k, 158); - g87 += 0.20412415266036987f * d * f73; - g73 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f74; - g74 += 0.1767766922712326f * d * f88; - g89 += -0.03857583925127983f * d * f73; - g73 += -0.03857583925127983f * d * f89; - g89 += 0.14940357208251953f * d * f75; - g75 += 0.14940357208251953f * d * f89; - g90 += -0.06681530922651291f * d * f74; - g74 += -0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f77; - g77 += -0.13363061845302582f * d * f91; - g92 += 0.17251639068126678f * d * f76; - g76 += 0.17251639068126678f * d * f92; - g92 += -0.06681530922651291f * d * f78; - g78 += -0.06681530922651291f * d * f92; - g93 += 0.14940357208251953f * d * f77; - g77 += 0.14940357208251953f * d * f93; - g93 += -0.03857583925127983f * d * f79; - g79 += -0.03857583925127983f * d * f93; - g94 += 0.1767766922712326f * d * f78; - g78 += 0.1767766922712326f * d * f94; - g95 += 0.20412415266036987f * d * f79; - g79 += 0.20412415266036987f * d * f95; - } - { const float d = D(ii, k, 159); - g87 += 0.20412415266036987f * d * f86; - g86 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f85; - g85 += 0.1767766922712326f * d * f88; - g89 += 0.14940357208251953f * d * f84; - g84 += 0.14940357208251953f * d * f89; - g89 += 0.03857583925127983f * d * f86; - g86 += 0.03857583925127983f * d * f89; - g90 += 0.17251639068126678f * d * f83; - g83 += 0.17251639068126678f * d * f90; - g90 += 0.06681530922651291f * d * f85; - g85 += 0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f82; - g82 += -0.13363061845302582f * d * f91; - g92 += -0.06681530922651291f * d * f81; - g81 += -0.06681530922651291f * d * f92; - g93 += -0.03857583925127983f * d * f80; - g80 += -0.03857583925127983f * d * f93; - g93 += -0.14940357208251953f * d * f82; - g82 += -0.14940357208251953f * d * f93; - g94 += -0.1767766922712326f * d * f81; - g81 += -0.1767766922712326f * d * f94; - g95 += -0.20412415266036987f * d * f80; - g80 += -0.20412415266036987f * d * f95; - } - { const float d = D(ii, k, 160); - g88 += 0.14433756470680237f * d * f80; - g80 += 0.14433756470680237f * d * f88; - g89 += 0.18898223340511322f * d * f81; - g81 += 0.18898223340511322f * d * f89; - g90 += 0.21128855645656586f * d * f82; - g82 += 0.21128855645656586f * d * f90; - g91 += 0.2182178944349289f * d * f83; - g83 += 0.2182178944349289f * d * f91; - g92 += 0.21128855645656586f * d * f84; - g84 += 0.21128855645656586f * d * f92; - g93 += 0.18898223340511322f * d * f85; - g85 += 0.18898223340511322f * d * f93; - g94 += 0.14433756470680237f * d * f86; - g86 += 0.14433756470680237f * d * f94; - } - { const float d = D(ii, k, 161); - g87 += 0.20412415266036987f * d * f80; - g80 += 0.20412415266036987f * d * f87; - g88 += 0.1767766922712326f * d * f81; - g81 += 0.1767766922712326f * d * f88; - g89 += -0.03857583925127983f * d * f80; - g80 += -0.03857583925127983f * d * f89; - g89 += 0.14940357208251953f * d * f82; - g82 += 0.14940357208251953f * d * f89; - g90 += -0.06681530922651291f * d * f81; - g81 += -0.06681530922651291f * d * f90; - g91 += -0.13363061845302582f * d * f84; - g84 += -0.13363061845302582f * d * f91; - g92 += 0.17251639068126678f * d * f83; - g83 += 0.17251639068126678f * d * f92; - g92 += -0.06681530922651291f * d * f85; - g85 += -0.06681530922651291f * d * f92; - g93 += 0.14940357208251953f * d * f84; - g84 += 0.14940357208251953f * d * f93; - g93 += -0.03857583925127983f * d * f86; - g86 += -0.03857583925127983f * d * f93; - g94 += 0.1767766922712326f * d * f85; - g85 += 0.1767766922712326f * d * f94; - g95 += 0.20412415266036987f * d * f86; - g86 += 0.20412415266036987f * d * f95; - } - { const float d = D(ii, k, 162); - g59 += 0.26726123690605164f * d * f31; - g60 += 0.2182178944349289f * d * f30; - g61 += 0.23904572427272797f * d * f29; - g61 += 0.0690065547823906f * d * f31; - g62 += -0.16903084516525269f * d * f28; - g63 += -0.0690065547823906f * d * f27; - g64 += -0.2182178944349289f * d * f28; - g65 += -0.26726123690605164f * d * f27; - } - { const float d = D(ii, k, 163); - g60 += 0.2182178944349289f * d * f27; - g61 += 0.2760262191295624f * d * f28; - g62 += 0.29277002811431885f * d * f29; - g63 += 0.2760262191295624f * d * f30; - g64 += 0.2182178944349289f * d * f31; - } - { const float d = D(ii, k, 164); - g59 += 0.26726123690605164f * d * f27; - g60 += 0.2182178944349289f * d * f28; - g61 += -0.0690065547823906f * d * f27; - g62 += -0.16903084516525269f * d * f30; - g63 += 0.23904572427272797f * d * f29; - g63 += -0.0690065547823906f * d * f31; - g64 += 0.2182178944349289f * d * f30; - g65 += 0.26726123690605164f * d * f31; - } - { const float d = D(ii, k, 165); - g59 += 0.26726123690605164f * d * f36; - g60 += 0.2182178944349289f * d * f35; - g61 += 0.23904572427272797f * d * f34; - g61 += 0.0690065547823906f * d * f36; - g62 += -0.16903084516525269f * d * f33; - g63 += -0.0690065547823906f * d * f32; - g64 += -0.2182178944349289f * d * f33; - g65 += -0.26726123690605164f * d * f32; - } - { const float d = D(ii, k, 166); - g60 += 0.2182178944349289f * d * f32; - g61 += 0.2760262191295624f * d * f33; - g62 += 0.29277002811431885f * d * f34; - g63 += 0.2760262191295624f * d * f35; - g64 += 0.2182178944349289f * d * f36; - } - { const float d = D(ii, k, 167); - g59 += 0.26726123690605164f * d * f32; - g60 += 0.2182178944349289f * d * f33; - g61 += -0.0690065547823906f * d * f32; - g62 += -0.16903084516525269f * d * f35; - g63 += 0.23904572427272797f * d * f34; - g63 += -0.0690065547823906f * d * f36; - g64 += 0.2182178944349289f * d * f35; - g65 += 0.26726123690605164f * d * f36; - } - { const float d = D(ii, k, 168); - g59 += 0.26726123690605164f * d * f41; - g60 += 0.2182178944349289f * d * f40; - g61 += 0.23904572427272797f * d * f39; - g61 += 0.0690065547823906f * d * f41; - g62 += -0.16903084516525269f * d * f38; - g63 += -0.0690065547823906f * d * f37; - g64 += -0.2182178944349289f * d * f38; - g65 += -0.26726123690605164f * d * f37; - } - { const float d = D(ii, k, 169); - g60 += 0.2182178944349289f * d * f37; - g61 += 0.2760262191295624f * d * f38; - g62 += 0.29277002811431885f * d * f39; - g63 += 0.2760262191295624f * d * f40; - g64 += 0.2182178944349289f * d * f41; - } - { const float d = D(ii, k, 170); - g59 += 0.26726123690605164f * d * f37; - g60 += 0.2182178944349289f * d * f38; - g61 += -0.0690065547823906f * d * f37; - g62 += -0.16903084516525269f * d * f40; - g63 += 0.23904572427272797f * d * f39; - g63 += -0.0690065547823906f * d * f41; - g64 += 0.2182178944349289f * d * f40; - g65 += 0.26726123690605164f * d * f41; - } - { const float d = D(ii, k, 171); - g59 += 0.26726123690605164f * d * f46; - g60 += 0.2182178944349289f * d * f45; - g61 += 0.23904572427272797f * d * f44; - g61 += 0.0690065547823906f * d * f46; - g62 += -0.16903084516525269f * d * f43; - g63 += -0.0690065547823906f * d * f42; - g64 += -0.2182178944349289f * d * f43; - g65 += -0.26726123690605164f * d * f42; - } - { const float d = D(ii, k, 172); - g60 += 0.2182178944349289f * d * f42; - g61 += 0.2760262191295624f * d * f43; - g62 += 0.29277002811431885f * d * f44; - g63 += 0.2760262191295624f * d * f45; - g64 += 0.2182178944349289f * d * f46; - } - { const float d = D(ii, k, 173); - g59 += 0.26726123690605164f * d * f42; - g60 += 0.2182178944349289f * d * f43; - g61 += -0.0690065547823906f * d * f42; - g62 += -0.16903084516525269f * d * f45; - g63 += 0.23904572427272797f * d * f44; - g63 += -0.0690065547823906f * d * f46; - g64 += 0.2182178944349289f * d * f45; - g65 += 0.26726123690605164f * d * f46; - } - { const float d = D(ii, k, 174); - g59 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f59; - g60 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f60; - g61 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f61; - g61 += 0.0690065547823906f * d * f51; - g51 += 0.0690065547823906f * d * f61; - g62 += -0.16903084516525269f * d * f48; - g48 += -0.16903084516525269f * d * f62; - g63 += -0.0690065547823906f * d * f47; - g64 += -0.2182178944349289f * d * f48; - g48 += -0.2182178944349289f * d * f64; - g65 += -0.26726123690605164f * d * f47; - } - { const float d = D(ii, k, 175); - g60 += 0.2182178944349289f * d * f47; - g61 += 0.2760262191295624f * d * f48; - g48 += 0.2760262191295624f * d * f61; - g62 += 0.29277002811431885f * d * f49; - g49 += 0.29277002811431885f * d * f62; - g63 += 0.2760262191295624f * d * f50; - g50 += 0.2760262191295624f * d * f63; - g64 += 0.2182178944349289f * d * f51; - g51 += 0.2182178944349289f * d * f64; - } - { const float d = D(ii, k, 176); - g59 += 0.26726123690605164f * d * f47; - g60 += 0.2182178944349289f * d * f48; - g48 += 0.2182178944349289f * d * f60; - g61 += -0.0690065547823906f * d * f47; - g62 += -0.16903084516525269f * d * f50; - g50 += -0.16903084516525269f * d * f62; - g63 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f63; - g63 += -0.0690065547823906f * d * f51; - g51 += -0.0690065547823906f * d * f63; - g64 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f64; - g65 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f65; - } - { const float d = D(ii, k, 189); - g58 += 0.20412415266036987f * d * f96; - g57 += 0.1767766922712326f * d * f97; - g56 += 0.14940357208251953f * d * f98; - g58 += 0.03857583925127983f * d * f98; - g55 += 0.17251639068126678f * d * f99; - g57 += 0.06681530922651291f * d * f99; - g54 += -0.13363061845302582f * d * f100; - g53 += -0.06681530922651291f * d * f101; - g52 += -0.03857583925127983f * d * f102; - g54 += -0.14940357208251953f * d * f102; - g53 += -0.1767766922712326f * d * f103; - g52 += -0.20412415266036987f * d * f104; - } - { const float d = D(ii, k, 190); - g52 += 0.14433756470680237f * d * f97; - g53 += 0.18898223340511322f * d * f98; - g54 += 0.21128855645656586f * d * f99; - g55 += 0.2182178944349289f * d * f100; - g56 += 0.21128855645656586f * d * f101; - g57 += 0.18898223340511322f * d * f102; - g58 += 0.14433756470680237f * d * f103; - } - { const float d = D(ii, k, 191); - g52 += 0.20412415266036987f * d * f96; - g53 += 0.1767766922712326f * d * f97; - g52 += -0.03857583925127983f * d * f98; - g54 += 0.14940357208251953f * d * f98; - g53 += -0.06681530922651291f * d * f99; - g56 += -0.13363061845302582f * d * f100; - g55 += 0.17251639068126678f * d * f101; - g57 += -0.06681530922651291f * d * f101; - g56 += 0.14940357208251953f * d * f102; - g58 += -0.03857583925127983f * d * f102; - g57 += 0.1767766922712326f * d * f103; - g58 += 0.20412415266036987f * d * f104; - } - { const float d = D(ii, k, 192); - g65 += 0.20412415266036987f * d * f96; - g64 += 0.1767766922712326f * d * f97; - g63 += 0.14940357208251953f * d * f98; - g65 += 0.03857583925127983f * d * f98; - g62 += 0.17251639068126678f * d * f99; - g64 += 0.06681530922651291f * d * f99; - g61 += -0.13363061845302582f * d * f100; - g60 += -0.06681530922651291f * d * f101; - g59 += -0.03857583925127983f * d * f102; - g61 += -0.14940357208251953f * d * f102; - g60 += -0.1767766922712326f * d * f103; - g59 += -0.20412415266036987f * d * f104; - } - { const float d = D(ii, k, 193); - g59 += 0.14433756470680237f * d * f97; - g60 += 0.18898223340511322f * d * f98; - g61 += 0.21128855645656586f * d * f99; - g62 += 0.2182178944349289f * d * f100; - g63 += 0.21128855645656586f * d * f101; - g64 += 0.18898223340511322f * d * f102; - g65 += 0.14433756470680237f * d * f103; - } - { const float d = D(ii, k, 194); - g59 += 0.20412415266036987f * d * f96; - g60 += 0.1767766922712326f * d * f97; - g59 += -0.03857583925127983f * d * f98; - g61 += 0.14940357208251953f * d * f98; - g60 += -0.06681530922651291f * d * f99; - g63 += -0.13363061845302582f * d * f100; - g62 += 0.17251639068126678f * d * f101; - g64 += -0.06681530922651291f * d * f101; - g63 += 0.14940357208251953f * d * f102; - g65 += -0.03857583925127983f * d * f102; - g64 += 0.1767766922712326f * d * f103; - g65 += 0.20412415266036987f * d * f104; - } - { const float d = D(ii, k, 195); - g72 += 0.20412415266036987f * d * f96; - g71 += 0.1767766922712326f * d * f97; - g70 += 0.14940357208251953f * d * f98; - g72 += 0.03857583925127983f * d * f98; - g69 += 0.17251639068126678f * d * f99; - g71 += 0.06681530922651291f * d * f99; - g68 += -0.13363061845302582f * d * f100; - g67 += -0.06681530922651291f * d * f101; - g66 += -0.03857583925127983f * d * f102; - g68 += -0.14940357208251953f * d * f102; - g67 += -0.1767766922712326f * d * f103; - g66 += -0.20412415266036987f * d * f104; - } - { const float d = D(ii, k, 196); - g66 += 0.14433756470680237f * d * f97; - g67 += 0.18898223340511322f * d * f98; - g68 += 0.21128855645656586f * d * f99; - g69 += 0.2182178944349289f * d * f100; - g70 += 0.21128855645656586f * d * f101; - g71 += 0.18898223340511322f * d * f102; - g72 += 0.14433756470680237f * d * f103; - } - { const float d = D(ii, k, 197); - g66 += 0.20412415266036987f * d * f96; - g67 += 0.1767766922712326f * d * f97; - g66 += -0.03857583925127983f * d * f98; - g68 += 0.14940357208251953f * d * f98; - g67 += -0.06681530922651291f * d * f99; - g70 += -0.13363061845302582f * d * f100; - g69 += 0.17251639068126678f * d * f101; - g71 += -0.06681530922651291f * d * f101; - g70 += 0.14940357208251953f * d * f102; - g72 += -0.03857583925127983f * d * f102; - g71 += 0.1767766922712326f * d * f103; - g72 += 0.20412415266036987f * d * f104; - } - { const float d = D(ii, k, 198); - g79 += 0.20412415266036987f * d * f96; - g78 += 0.1767766922712326f * d * f97; - g77 += 0.14940357208251953f * d * f98; - g79 += 0.03857583925127983f * d * f98; - g76 += 0.17251639068126678f * d * f99; - g78 += 0.06681530922651291f * d * f99; - g75 += -0.13363061845302582f * d * f100; - g74 += -0.06681530922651291f * d * f101; - g73 += -0.03857583925127983f * d * f102; - g75 += -0.14940357208251953f * d * f102; - g74 += -0.1767766922712326f * d * f103; - g73 += -0.20412415266036987f * d * f104; - } - { const float d = D(ii, k, 199); - g73 += 0.14433756470680237f * d * f97; - g74 += 0.18898223340511322f * d * f98; - g75 += 0.21128855645656586f * d * f99; - g76 += 0.2182178944349289f * d * f100; - g77 += 0.21128855645656586f * d * f101; - g78 += 0.18898223340511322f * d * f102; - g79 += 0.14433756470680237f * d * f103; - } - { const float d = D(ii, k, 200); - g73 += 0.20412415266036987f * d * f96; - g74 += 0.1767766922712326f * d * f97; - g73 += -0.03857583925127983f * d * f98; - g75 += 0.14940357208251953f * d * f98; - g74 += -0.06681530922651291f * d * f99; - g77 += -0.13363061845302582f * d * f100; - g76 += 0.17251639068126678f * d * f101; - g78 += -0.06681530922651291f * d * f101; - g77 += 0.14940357208251953f * d * f102; - g79 += -0.03857583925127983f * d * f102; - g78 += 0.1767766922712326f * d * f103; - g79 += 0.20412415266036987f * d * f104; - } - { const float d = D(ii, k, 201); - g86 += 0.20412415266036987f * d * f96; - g85 += 0.1767766922712326f * d * f97; - g84 += 0.14940357208251953f * d * f98; - g86 += 0.03857583925127983f * d * f98; - g83 += 0.17251639068126678f * d * f99; - g85 += 0.06681530922651291f * d * f99; - g82 += -0.13363061845302582f * d * f100; - g81 += -0.06681530922651291f * d * f101; - g80 += -0.03857583925127983f * d * f102; - g82 += -0.14940357208251953f * d * f102; - g81 += -0.1767766922712326f * d * f103; - g80 += -0.20412415266036987f * d * f104; - } - { const float d = D(ii, k, 202); - g80 += 0.14433756470680237f * d * f97; - g81 += 0.18898223340511322f * d * f98; - g82 += 0.21128855645656586f * d * f99; - g83 += 0.2182178944349289f * d * f100; - g84 += 0.21128855645656586f * d * f101; - g85 += 0.18898223340511322f * d * f102; - g86 += 0.14433756470680237f * d * f103; - } - { const float d = D(ii, k, 203); - g80 += 0.20412415266036987f * d * f96; - g81 += 0.1767766922712326f * d * f97; - g80 += -0.03857583925127983f * d * f98; - g82 += 0.14940357208251953f * d * f98; - g81 += -0.06681530922651291f * d * f99; - g84 += -0.13363061845302582f * d * f100; - g83 += 0.17251639068126678f * d * f101; - g85 += -0.06681530922651291f * d * f101; - g84 += 0.14940357208251953f * d * f102; - g86 += -0.03857583925127983f * d * f102; - g85 += 0.1767766922712326f * d * f103; - g86 += 0.20412415266036987f * d * f104; - } - { const float d = D(ii, k, 219); - g66 += 0.26726123690605164f * d * f21; - g67 += 0.2182178944349289f * d * f20; - g68 += 0.23904572427272797f * d * f19; - g68 += 0.0690065547823906f * d * f21; - g69 += -0.16903084516525269f * d * f18; - g70 += -0.0690065547823906f * d * f17; - g71 += -0.2182178944349289f * d * f18; - g72 += -0.26726123690605164f * d * f17; - } - { const float d = D(ii, k, 220); - g67 += 0.2182178944349289f * d * f17; - g68 += 0.2760262191295624f * d * f18; - g69 += 0.29277002811431885f * d * f19; - g70 += 0.2760262191295624f * d * f20; - g71 += 0.2182178944349289f * d * f21; - } - { const float d = D(ii, k, 221); - g66 += 0.26726123690605164f * d * f17; - g67 += 0.2182178944349289f * d * f18; - g68 += -0.0690065547823906f * d * f17; - g69 += -0.16903084516525269f * d * f20; - g70 += 0.23904572427272797f * d * f19; - g70 += -0.0690065547823906f * d * f21; - g71 += 0.2182178944349289f * d * f20; - g72 += 0.26726123690605164f * d * f21; - } - { const float d = D(ii, k, 222); - g66 += 0.26726123690605164f * d * f26; - g67 += 0.2182178944349289f * d * f25; - g68 += 0.23904572427272797f * d * f24; - g68 += 0.0690065547823906f * d * f26; - g69 += -0.16903084516525269f * d * f23; - g70 += -0.0690065547823906f * d * f22; - g71 += -0.2182178944349289f * d * f23; - g72 += -0.26726123690605164f * d * f22; - } - { const float d = D(ii, k, 223); - g67 += 0.2182178944349289f * d * f22; - g68 += 0.2760262191295624f * d * f23; - g69 += 0.29277002811431885f * d * f24; - g70 += 0.2760262191295624f * d * f25; - g71 += 0.2182178944349289f * d * f26; - } - { const float d = D(ii, k, 224); - g66 += 0.26726123690605164f * d * f22; - g67 += 0.2182178944349289f * d * f23; - g68 += -0.0690065547823906f * d * f22; - g69 += -0.16903084516525269f * d * f25; - g70 += 0.23904572427272797f * d * f24; - g70 += -0.0690065547823906f * d * f26; - g71 += 0.2182178944349289f * d * f25; - g72 += 0.26726123690605164f * d * f26; - } - { const float d = D(ii, k, 225); - g66 += 0.26726123690605164f * d * f31; - g67 += 0.2182178944349289f * d * f30; - g68 += 0.23904572427272797f * d * f29; - g68 += 0.0690065547823906f * d * f31; - g69 += -0.16903084516525269f * d * f28; - g70 += -0.0690065547823906f * d * f27; - g71 += -0.2182178944349289f * d * f28; - g72 += -0.26726123690605164f * d * f27; - } - { const float d = D(ii, k, 226); - g67 += 0.2182178944349289f * d * f27; - g68 += 0.2760262191295624f * d * f28; - g69 += 0.29277002811431885f * d * f29; - g70 += 0.2760262191295624f * d * f30; - g71 += 0.2182178944349289f * d * f31; - } - { const float d = D(ii, k, 227); - g66 += 0.26726123690605164f * d * f27; - g67 += 0.2182178944349289f * d * f28; - g68 += -0.0690065547823906f * d * f27; - g69 += -0.16903084516525269f * d * f30; - g70 += 0.23904572427272797f * d * f29; - g70 += -0.0690065547823906f * d * f31; - g71 += 0.2182178944349289f * d * f30; - g72 += 0.26726123690605164f * d * f31; - } - { const float d = D(ii, k, 228); - g66 += 0.26726123690605164f * d * f36; - g67 += 0.2182178944349289f * d * f35; - g68 += 0.23904572427272797f * d * f34; - g68 += 0.0690065547823906f * d * f36; - g69 += -0.16903084516525269f * d * f33; - g70 += -0.0690065547823906f * d * f32; - g71 += -0.2182178944349289f * d * f33; - g72 += -0.26726123690605164f * d * f32; - } - { const float d = D(ii, k, 229); - g67 += 0.2182178944349289f * d * f32; - g68 += 0.2760262191295624f * d * f33; - g69 += 0.29277002811431885f * d * f34; - g70 += 0.2760262191295624f * d * f35; - g71 += 0.2182178944349289f * d * f36; - } - { const float d = D(ii, k, 230); - g66 += 0.26726123690605164f * d * f32; - g67 += 0.2182178944349289f * d * f33; - g68 += -0.0690065547823906f * d * f32; - g69 += -0.16903084516525269f * d * f35; - g70 += 0.23904572427272797f * d * f34; - g70 += -0.0690065547823906f * d * f36; - g71 += 0.2182178944349289f * d * f35; - g72 += 0.26726123690605164f * d * f36; - } - { const float d = D(ii, k, 231); - g66 += 0.26726123690605164f * d * f46; - g67 += 0.2182178944349289f * d * f45; - g68 += 0.23904572427272797f * d * f44; - g68 += 0.0690065547823906f * d * f46; - g69 += -0.16903084516525269f * d * f43; - g70 += -0.0690065547823906f * d * f42; - g71 += -0.2182178944349289f * d * f43; - g72 += -0.26726123690605164f * d * f42; - } - { const float d = D(ii, k, 232); - g67 += 0.2182178944349289f * d * f42; - g68 += 0.2760262191295624f * d * f43; - g69 += 0.29277002811431885f * d * f44; - g70 += 0.2760262191295624f * d * f45; - g71 += 0.2182178944349289f * d * f46; - } - { const float d = D(ii, k, 233); - g66 += 0.26726123690605164f * d * f42; - g67 += 0.2182178944349289f * d * f43; - g68 += -0.0690065547823906f * d * f42; - g69 += -0.16903084516525269f * d * f45; - g70 += 0.23904572427272797f * d * f44; - g70 += -0.0690065547823906f * d * f46; - g71 += 0.2182178944349289f * d * f45; - g72 += 0.26726123690605164f * d * f46; - } - { const float d = D(ii, k, 234); - g66 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f66; - g67 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f67; - g68 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f68; - g68 += 0.0690065547823906f * d * f51; - g51 += 0.0690065547823906f * d * f68; - g69 += -0.16903084516525269f * d * f48; - g48 += -0.16903084516525269f * d * f69; - g70 += -0.0690065547823906f * d * f47; - g71 += -0.2182178944349289f * d * f48; - g48 += -0.2182178944349289f * d * f71; - g72 += -0.26726123690605164f * d * f47; - } - { const float d = D(ii, k, 235); - g67 += 0.2182178944349289f * d * f47; - g68 += 0.2760262191295624f * d * f48; - g48 += 0.2760262191295624f * d * f68; - g69 += 0.29277002811431885f * d * f49; - g49 += 0.29277002811431885f * d * f69; - g70 += 0.2760262191295624f * d * f50; - g50 += 0.2760262191295624f * d * f70; - g71 += 0.2182178944349289f * d * f51; - g51 += 0.2182178944349289f * d * f71; - } - { const float d = D(ii, k, 236); - g66 += 0.26726123690605164f * d * f47; - g67 += 0.2182178944349289f * d * f48; - g48 += 0.2182178944349289f * d * f67; - g68 += -0.0690065547823906f * d * f47; - g69 += -0.16903084516525269f * d * f50; - g50 += -0.16903084516525269f * d * f69; - g70 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f70; - g70 += -0.0690065547823906f * d * f51; - g51 += -0.0690065547823906f * d * f70; - g71 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f71; - g72 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f72; - } - { const float d = D(ii, k, 249); - g58 += 0.20412415266036987f * d * f105; - g57 += 0.1767766922712326f * d * f106; - g56 += 0.14940357208251953f * d * f107; - g58 += 0.03857583925127983f * d * f107; - g55 += 0.17251639068126678f * d * f108; - g57 += 0.06681530922651291f * d * f108; - g54 += -0.13363061845302582f * d * f109; - g53 += -0.06681530922651291f * d * f110; - g52 += -0.03857583925127983f * d * f111; - g54 += -0.14940357208251953f * d * f111; - g53 += -0.1767766922712326f * d * f112; - g52 += -0.20412415266036987f * d * f113; - } - { const float d = D(ii, k, 250); - g52 += 0.14433756470680237f * d * f106; - g53 += 0.18898223340511322f * d * f107; - g54 += 0.21128855645656586f * d * f108; - g55 += 0.2182178944349289f * d * f109; - g56 += 0.21128855645656586f * d * f110; - g57 += 0.18898223340511322f * d * f111; - g58 += 0.14433756470680237f * d * f112; - } - { const float d = D(ii, k, 251); - g52 += 0.20412415266036987f * d * f105; - g53 += 0.1767766922712326f * d * f106; - g52 += -0.03857583925127983f * d * f107; - g54 += 0.14940357208251953f * d * f107; - g53 += -0.06681530922651291f * d * f108; - g56 += -0.13363061845302582f * d * f109; - g55 += 0.17251639068126678f * d * f110; - g57 += -0.06681530922651291f * d * f110; - g56 += 0.14940357208251953f * d * f111; - g58 += -0.03857583925127983f * d * f111; - g57 += 0.1767766922712326f * d * f112; - g58 += 0.20412415266036987f * d * f113; - } - { const float d = D(ii, k, 252); - g72 += 0.20412415266036987f * d * f105; - g71 += 0.1767766922712326f * d * f106; - g70 += 0.14940357208251953f * d * f107; - g72 += 0.03857583925127983f * d * f107; - g69 += 0.17251639068126678f * d * f108; - g71 += 0.06681530922651291f * d * f108; - g68 += -0.13363061845302582f * d * f109; - g67 += -0.06681530922651291f * d * f110; - g66 += -0.03857583925127983f * d * f111; - g68 += -0.14940357208251953f * d * f111; - g67 += -0.1767766922712326f * d * f112; - g66 += -0.20412415266036987f * d * f113; - } - { const float d = D(ii, k, 253); - g66 += 0.14433756470680237f * d * f106; - g67 += 0.18898223340511322f * d * f107; - g68 += 0.21128855645656586f * d * f108; - g69 += 0.2182178944349289f * d * f109; - g70 += 0.21128855645656586f * d * f110; - g71 += 0.18898223340511322f * d * f111; - g72 += 0.14433756470680237f * d * f112; - } - { const float d = D(ii, k, 254); - g66 += 0.20412415266036987f * d * f105; - g67 += 0.1767766922712326f * d * f106; - g66 += -0.03857583925127983f * d * f107; - g68 += 0.14940357208251953f * d * f107; - g67 += -0.06681530922651291f * d * f108; - g70 += -0.13363061845302582f * d * f109; - g69 += 0.17251639068126678f * d * f110; - g71 += -0.06681530922651291f * d * f110; - g70 += 0.14940357208251953f * d * f111; - g72 += -0.03857583925127983f * d * f111; - g71 += 0.1767766922712326f * d * f112; - g72 += 0.20412415266036987f * d * f113; - } - { const float d = D(ii, k, 255); - g79 += 0.20412415266036987f * d * f105; - g78 += 0.1767766922712326f * d * f106; - g77 += 0.14940357208251953f * d * f107; - g79 += 0.03857583925127983f * d * f107; - g76 += 0.17251639068126678f * d * f108; - g78 += 0.06681530922651291f * d * f108; - g75 += -0.13363061845302582f * d * f109; - g74 += -0.06681530922651291f * d * f110; - g73 += -0.03857583925127983f * d * f111; - g75 += -0.14940357208251953f * d * f111; - g74 += -0.1767766922712326f * d * f112; - g73 += -0.20412415266036987f * d * f113; - } - { const float d = D(ii, k, 256); - g73 += 0.14433756470680237f * d * f106; - g74 += 0.18898223340511322f * d * f107; - g75 += 0.21128855645656586f * d * f108; - g76 += 0.2182178944349289f * d * f109; - g77 += 0.21128855645656586f * d * f110; - g78 += 0.18898223340511322f * d * f111; - g79 += 0.14433756470680237f * d * f112; - } - { const float d = D(ii, k, 257); - g73 += 0.20412415266036987f * d * f105; - g74 += 0.1767766922712326f * d * f106; - g73 += -0.03857583925127983f * d * f107; - g75 += 0.14940357208251953f * d * f107; - g74 += -0.06681530922651291f * d * f108; - g77 += -0.13363061845302582f * d * f109; - g76 += 0.17251639068126678f * d * f110; - g78 += -0.06681530922651291f * d * f110; - g77 += 0.14940357208251953f * d * f111; - g79 += -0.03857583925127983f * d * f111; - g78 += 0.1767766922712326f * d * f112; - g79 += 0.20412415266036987f * d * f113; - } - { const float d = D(ii, k, 258); - g86 += 0.20412415266036987f * d * f105; - g85 += 0.1767766922712326f * d * f106; - g84 += 0.14940357208251953f * d * f107; - g86 += 0.03857583925127983f * d * f107; - g83 += 0.17251639068126678f * d * f108; - g85 += 0.06681530922651291f * d * f108; - g82 += -0.13363061845302582f * d * f109; - g81 += -0.06681530922651291f * d * f110; - g80 += -0.03857583925127983f * d * f111; - g82 += -0.14940357208251953f * d * f111; - g81 += -0.1767766922712326f * d * f112; - g80 += -0.20412415266036987f * d * f113; - } - { const float d = D(ii, k, 259); - g80 += 0.14433756470680237f * d * f106; - g81 += 0.18898223340511322f * d * f107; - g82 += 0.21128855645656586f * d * f108; - g83 += 0.2182178944349289f * d * f109; - g84 += 0.21128855645656586f * d * f110; - g85 += 0.18898223340511322f * d * f111; - g86 += 0.14433756470680237f * d * f112; - } - { const float d = D(ii, k, 260); - g80 += 0.20412415266036987f * d * f105; - g81 += 0.1767766922712326f * d * f106; - g80 += -0.03857583925127983f * d * f107; - g82 += 0.14940357208251953f * d * f107; - g81 += -0.06681530922651291f * d * f108; - g84 += -0.13363061845302582f * d * f109; - g83 += 0.17251639068126678f * d * f110; - g85 += -0.06681530922651291f * d * f110; - g84 += 0.14940357208251953f * d * f111; - g86 += -0.03857583925127983f * d * f111; - g85 += 0.1767766922712326f * d * f112; - g86 += 0.20412415266036987f * d * f113; - } - { const float d = D(ii, k, 261); - g72 += 0.20412415266036987f * d * f114; - g71 += 0.1767766922712326f * d * f115; - g70 += 0.14940357208251953f * d * f116; - g72 += 0.03857583925127983f * d * f116; - g69 += 0.17251639068126678f * d * f117; - g71 += 0.06681530922651291f * d * f117; - g68 += -0.13363061845302582f * d * f118; - g67 += -0.06681530922651291f * d * f119; - g66 += -0.03857583925127983f * d * f120; - g68 += -0.14940357208251953f * d * f120; - g67 += -0.1767766922712326f * d * f121; - g66 += -0.20412415266036987f * d * f122; - } - { const float d = D(ii, k, 262); - g66 += 0.14433756470680237f * d * f115; - g67 += 0.18898223340511322f * d * f116; - g68 += 0.21128855645656586f * d * f117; - g69 += 0.2182178944349289f * d * f118; - g70 += 0.21128855645656586f * d * f119; - g71 += 0.18898223340511322f * d * f120; - g72 += 0.14433756470680237f * d * f121; - } - { const float d = D(ii, k, 263); - g66 += 0.20412415266036987f * d * f114; - g67 += 0.1767766922712326f * d * f115; - g66 += -0.03857583925127983f * d * f116; - g68 += 0.14940357208251953f * d * f116; - g67 += -0.06681530922651291f * d * f117; - g70 += -0.13363061845302582f * d * f118; - g69 += 0.17251639068126678f * d * f119; - g71 += -0.06681530922651291f * d * f119; - g70 += 0.14940357208251953f * d * f120; - g72 += -0.03857583925127983f * d * f120; - g71 += 0.1767766922712326f * d * f121; - g72 += 0.20412415266036987f * d * f122; - } - { const float d = D(ii, k, 264); - g79 += 0.20412415266036987f * d * f114; - g78 += 0.1767766922712326f * d * f115; - g77 += 0.14940357208251953f * d * f116; - g79 += 0.03857583925127983f * d * f116; - g76 += 0.17251639068126678f * d * f117; - g78 += 0.06681530922651291f * d * f117; - g75 += -0.13363061845302582f * d * f118; - g74 += -0.06681530922651291f * d * f119; - g73 += -0.03857583925127983f * d * f120; - g75 += -0.14940357208251953f * d * f120; - g74 += -0.1767766922712326f * d * f121; - g73 += -0.20412415266036987f * d * f122; - } - { const float d = D(ii, k, 265); - g73 += 0.14433756470680237f * d * f115; - g74 += 0.18898223340511322f * d * f116; - g75 += 0.21128855645656586f * d * f117; - g76 += 0.2182178944349289f * d * f118; - g77 += 0.21128855645656586f * d * f119; - g78 += 0.18898223340511322f * d * f120; - g79 += 0.14433756470680237f * d * f121; - } - { const float d = D(ii, k, 266); - g73 += 0.20412415266036987f * d * f114; - g74 += 0.1767766922712326f * d * f115; - g73 += -0.03857583925127983f * d * f116; - g75 += 0.14940357208251953f * d * f116; - g74 += -0.06681530922651291f * d * f117; - g77 += -0.13363061845302582f * d * f118; - g76 += 0.17251639068126678f * d * f119; - g78 += -0.06681530922651291f * d * f119; - g77 += 0.14940357208251953f * d * f120; - g79 += -0.03857583925127983f * d * f120; - g78 += 0.1767766922712326f * d * f121; - g79 += 0.20412415266036987f * d * f122; - } - { const float d = D(ii, k, 267); - g86 += 0.20412415266036987f * d * f114; - g85 += 0.1767766922712326f * d * f115; - g84 += 0.14940357208251953f * d * f116; - g86 += 0.03857583925127983f * d * f116; - g83 += 0.17251639068126678f * d * f117; - g85 += 0.06681530922651291f * d * f117; - g82 += -0.13363061845302582f * d * f118; - g81 += -0.06681530922651291f * d * f119; - g80 += -0.03857583925127983f * d * f120; - g82 += -0.14940357208251953f * d * f120; - g81 += -0.1767766922712326f * d * f121; - g80 += -0.20412415266036987f * d * f122; - } - { const float d = D(ii, k, 268); - g80 += 0.14433756470680237f * d * f115; - g81 += 0.18898223340511322f * d * f116; - g82 += 0.21128855645656586f * d * f117; - g83 += 0.2182178944349289f * d * f118; - g84 += 0.21128855645656586f * d * f119; - g85 += 0.18898223340511322f * d * f120; - g86 += 0.14433756470680237f * d * f121; - } - { const float d = D(ii, k, 269); - g80 += 0.20412415266036987f * d * f114; - g81 += 0.1767766922712326f * d * f115; - g80 += -0.03857583925127983f * d * f116; - g82 += 0.14940357208251953f * d * f116; - g81 += -0.06681530922651291f * d * f117; - g84 += -0.13363061845302582f * d * f118; - g83 += 0.17251639068126678f * d * f119; - g85 += -0.06681530922651291f * d * f119; - g84 += 0.14940357208251953f * d * f120; - g86 += -0.03857583925127983f * d * f120; - g85 += 0.1767766922712326f * d * f121; - g86 += 0.20412415266036987f * d * f122; - } - { const float d = D(ii, k, 270); - g73 += 0.26726123690605164f * d * f21; - g74 += 0.2182178944349289f * d * f20; - g75 += 0.23904572427272797f * d * f19; - g75 += 0.0690065547823906f * d * f21; - g76 += -0.16903084516525269f * d * f18; - g77 += -0.0690065547823906f * d * f17; - g78 += -0.2182178944349289f * d * f18; - g79 += -0.26726123690605164f * d * f17; - } - { const float d = D(ii, k, 271); - g74 += 0.2182178944349289f * d * f17; - g75 += 0.2760262191295624f * d * f18; - g76 += 0.29277002811431885f * d * f19; - g77 += 0.2760262191295624f * d * f20; - g78 += 0.2182178944349289f * d * f21; - } - { const float d = D(ii, k, 272); - g73 += 0.26726123690605164f * d * f17; - g74 += 0.2182178944349289f * d * f18; - g75 += -0.0690065547823906f * d * f17; - g76 += -0.16903084516525269f * d * f20; - g77 += 0.23904572427272797f * d * f19; - g77 += -0.0690065547823906f * d * f21; - g78 += 0.2182178944349289f * d * f20; - g79 += 0.26726123690605164f * d * f21; - } - { const float d = D(ii, k, 273); - g73 += 0.26726123690605164f * d * f31; - g74 += 0.2182178944349289f * d * f30; - g75 += 0.23904572427272797f * d * f29; - g75 += 0.0690065547823906f * d * f31; - g76 += -0.16903084516525269f * d * f28; - g77 += -0.0690065547823906f * d * f27; - g78 += -0.2182178944349289f * d * f28; - g79 += -0.26726123690605164f * d * f27; - } - { const float d = D(ii, k, 274); - g74 += 0.2182178944349289f * d * f27; - g75 += 0.2760262191295624f * d * f28; - g76 += 0.29277002811431885f * d * f29; - g77 += 0.2760262191295624f * d * f30; - g78 += 0.2182178944349289f * d * f31; - } - { const float d = D(ii, k, 275); - g73 += 0.26726123690605164f * d * f27; - g74 += 0.2182178944349289f * d * f28; - g75 += -0.0690065547823906f * d * f27; - g76 += -0.16903084516525269f * d * f30; - g77 += 0.23904572427272797f * d * f29; - g77 += -0.0690065547823906f * d * f31; - g78 += 0.2182178944349289f * d * f30; - g79 += 0.26726123690605164f * d * f31; - } - { const float d = D(ii, k, 276); - g73 += 0.26726123690605164f * d * f36; - g74 += 0.2182178944349289f * d * f35; - g75 += 0.23904572427272797f * d * f34; - g75 += 0.0690065547823906f * d * f36; - g76 += -0.16903084516525269f * d * f33; - g77 += -0.0690065547823906f * d * f32; - g78 += -0.2182178944349289f * d * f33; - g79 += -0.26726123690605164f * d * f32; - } - { const float d = D(ii, k, 277); - g74 += 0.2182178944349289f * d * f32; - g75 += 0.2760262191295624f * d * f33; - g76 += 0.29277002811431885f * d * f34; - g77 += 0.2760262191295624f * d * f35; - g78 += 0.2182178944349289f * d * f36; - } - { const float d = D(ii, k, 278); - g73 += 0.26726123690605164f * d * f32; - g74 += 0.2182178944349289f * d * f33; - g75 += -0.0690065547823906f * d * f32; - g76 += -0.16903084516525269f * d * f35; - g77 += 0.23904572427272797f * d * f34; - g77 += -0.0690065547823906f * d * f36; - g78 += 0.2182178944349289f * d * f35; - g79 += 0.26726123690605164f * d * f36; - } - { const float d = D(ii, k, 279); - g73 += 0.26726123690605164f * d * f41; - g74 += 0.2182178944349289f * d * f40; - g75 += 0.23904572427272797f * d * f39; - g75 += 0.0690065547823906f * d * f41; - g76 += -0.16903084516525269f * d * f38; - g77 += -0.0690065547823906f * d * f37; - g78 += -0.2182178944349289f * d * f38; - g79 += -0.26726123690605164f * d * f37; - } - { const float d = D(ii, k, 280); - g74 += 0.2182178944349289f * d * f37; - g75 += 0.2760262191295624f * d * f38; - g76 += 0.29277002811431885f * d * f39; - g77 += 0.2760262191295624f * d * f40; - g78 += 0.2182178944349289f * d * f41; - } - { const float d = D(ii, k, 281); - g73 += 0.26726123690605164f * d * f37; - g74 += 0.2182178944349289f * d * f38; - g75 += -0.0690065547823906f * d * f37; - g76 += -0.16903084516525269f * d * f40; - g77 += 0.23904572427272797f * d * f39; - g77 += -0.0690065547823906f * d * f41; - g78 += 0.2182178944349289f * d * f40; - g79 += 0.26726123690605164f * d * f41; - } - { const float d = D(ii, k, 282); - g73 += 0.26726123690605164f * d * f46; - g74 += 0.2182178944349289f * d * f45; - g75 += 0.23904572427272797f * d * f44; - g75 += 0.0690065547823906f * d * f46; - g76 += -0.16903084516525269f * d * f43; - g77 += -0.0690065547823906f * d * f42; - g78 += -0.2182178944349289f * d * f43; - g79 += -0.26726123690605164f * d * f42; - } - { const float d = D(ii, k, 283); - g74 += 0.2182178944349289f * d * f42; - g75 += 0.2760262191295624f * d * f43; - g76 += 0.29277002811431885f * d * f44; - g77 += 0.2760262191295624f * d * f45; - g78 += 0.2182178944349289f * d * f46; - } - { const float d = D(ii, k, 284); - g73 += 0.26726123690605164f * d * f42; - g74 += 0.2182178944349289f * d * f43; - g75 += -0.0690065547823906f * d * f42; - g76 += -0.16903084516525269f * d * f45; - g77 += 0.23904572427272797f * d * f44; - g77 += -0.0690065547823906f * d * f46; - g78 += 0.2182178944349289f * d * f45; - g79 += 0.26726123690605164f * d * f46; - } - { const float d = D(ii, k, 285); - g73 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f73; - g74 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f74; - g75 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f75; - g75 += 0.0690065547823906f * d * f51; - g51 += 0.0690065547823906f * d * f75; - g76 += -0.16903084516525269f * d * f48; - g48 += -0.16903084516525269f * d * f76; - g77 += -0.0690065547823906f * d * f47; - g78 += -0.2182178944349289f * d * f48; - g48 += -0.2182178944349289f * d * f78; - g79 += -0.26726123690605164f * d * f47; - } - { const float d = D(ii, k, 286); - g74 += 0.2182178944349289f * d * f47; - g75 += 0.2760262191295624f * d * f48; - g48 += 0.2760262191295624f * d * f75; - g76 += 0.29277002811431885f * d * f49; - g49 += 0.29277002811431885f * d * f76; - g77 += 0.2760262191295624f * d * f50; - g50 += 0.2760262191295624f * d * f77; - g78 += 0.2182178944349289f * d * f51; - g51 += 0.2182178944349289f * d * f78; - } - { const float d = D(ii, k, 287); - g73 += 0.26726123690605164f * d * f47; - g74 += 0.2182178944349289f * d * f48; - g48 += 0.2182178944349289f * d * f74; - g75 += -0.0690065547823906f * d * f47; - g76 += -0.16903084516525269f * d * f50; - g50 += -0.16903084516525269f * d * f76; - g77 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f77; - g77 += -0.0690065547823906f * d * f51; - g51 += -0.0690065547823906f * d * f77; - g78 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f78; - g79 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f79; - } - { const float d = D(ii, k, 300); - g58 += 0.20412415266036987f * d * f123; - g57 += 0.1767766922712326f * d * f124; - g56 += 0.14940357208251953f * d * f125; - g58 += 0.03857583925127983f * d * f125; - g55 += 0.17251639068126678f * d * f126; - g57 += 0.06681530922651291f * d * f126; - g54 += -0.13363061845302582f * d * f127; - g53 += -0.06681530922651291f * d * f128; - g52 += -0.03857583925127983f * d * f129; - g54 += -0.14940357208251953f * d * f129; - g53 += -0.1767766922712326f * d * f130; - g52 += -0.20412415266036987f * d * f131; - } - { const float d = D(ii, k, 301); - g52 += 0.14433756470680237f * d * f124; - g53 += 0.18898223340511322f * d * f125; - g54 += 0.21128855645656586f * d * f126; - g55 += 0.2182178944349289f * d * f127; - g56 += 0.21128855645656586f * d * f128; - g57 += 0.18898223340511322f * d * f129; - g58 += 0.14433756470680237f * d * f130; - } - { const float d = D(ii, k, 302); - g52 += 0.20412415266036987f * d * f123; - g53 += 0.1767766922712326f * d * f124; - g52 += -0.03857583925127983f * d * f125; - g54 += 0.14940357208251953f * d * f125; - g53 += -0.06681530922651291f * d * f126; - g56 += -0.13363061845302582f * d * f127; - g55 += 0.17251639068126678f * d * f128; - g57 += -0.06681530922651291f * d * f128; - g56 += 0.14940357208251953f * d * f129; - g58 += -0.03857583925127983f * d * f129; - g57 += 0.1767766922712326f * d * f130; - g58 += 0.20412415266036987f * d * f131; - } - { const float d = D(ii, k, 303); - g65 += 0.20412415266036987f * d * f123; - g64 += 0.1767766922712326f * d * f124; - g63 += 0.14940357208251953f * d * f125; - g65 += 0.03857583925127983f * d * f125; - g62 += 0.17251639068126678f * d * f126; - g64 += 0.06681530922651291f * d * f126; - g61 += -0.13363061845302582f * d * f127; - g60 += -0.06681530922651291f * d * f128; - g59 += -0.03857583925127983f * d * f129; - g61 += -0.14940357208251953f * d * f129; - g60 += -0.1767766922712326f * d * f130; - g59 += -0.20412415266036987f * d * f131; - } - { const float d = D(ii, k, 304); - g59 += 0.14433756470680237f * d * f124; - g60 += 0.18898223340511322f * d * f125; - g61 += 0.21128855645656586f * d * f126; - g62 += 0.2182178944349289f * d * f127; - g63 += 0.21128855645656586f * d * f128; - g64 += 0.18898223340511322f * d * f129; - g65 += 0.14433756470680237f * d * f130; - } - { const float d = D(ii, k, 305); - g59 += 0.20412415266036987f * d * f123; - g60 += 0.1767766922712326f * d * f124; - g59 += -0.03857583925127983f * d * f125; - g61 += 0.14940357208251953f * d * f125; - g60 += -0.06681530922651291f * d * f126; - g63 += -0.13363061845302582f * d * f127; - g62 += 0.17251639068126678f * d * f128; - g64 += -0.06681530922651291f * d * f128; - g63 += 0.14940357208251953f * d * f129; - g65 += -0.03857583925127983f * d * f129; - g64 += 0.1767766922712326f * d * f130; - g65 += 0.20412415266036987f * d * f131; - } - { const float d = D(ii, k, 306); - g72 += 0.20412415266036987f * d * f123; - g71 += 0.1767766922712326f * d * f124; - g70 += 0.14940357208251953f * d * f125; - g72 += 0.03857583925127983f * d * f125; - g69 += 0.17251639068126678f * d * f126; - g71 += 0.06681530922651291f * d * f126; - g68 += -0.13363061845302582f * d * f127; - g67 += -0.06681530922651291f * d * f128; - g66 += -0.03857583925127983f * d * f129; - g68 += -0.14940357208251953f * d * f129; - g67 += -0.1767766922712326f * d * f130; - g66 += -0.20412415266036987f * d * f131; - } - { const float d = D(ii, k, 307); - g66 += 0.14433756470680237f * d * f124; - g67 += 0.18898223340511322f * d * f125; - g68 += 0.21128855645656586f * d * f126; - g69 += 0.2182178944349289f * d * f127; - g70 += 0.21128855645656586f * d * f128; - g71 += 0.18898223340511322f * d * f129; - g72 += 0.14433756470680237f * d * f130; - } - { const float d = D(ii, k, 308); - g66 += 0.20412415266036987f * d * f123; - g67 += 0.1767766922712326f * d * f124; - g66 += -0.03857583925127983f * d * f125; - g68 += 0.14940357208251953f * d * f125; - g67 += -0.06681530922651291f * d * f126; - g70 += -0.13363061845302582f * d * f127; - g69 += 0.17251639068126678f * d * f128; - g71 += -0.06681530922651291f * d * f128; - g70 += 0.14940357208251953f * d * f129; - g72 += -0.03857583925127983f * d * f129; - g71 += 0.1767766922712326f * d * f130; - g72 += 0.20412415266036987f * d * f131; - } - { const float d = D(ii, k, 309); - g79 += 0.20412415266036987f * d * f123; - g78 += 0.1767766922712326f * d * f124; - g77 += 0.14940357208251953f * d * f125; - g79 += 0.03857583925127983f * d * f125; - g76 += 0.17251639068126678f * d * f126; - g78 += 0.06681530922651291f * d * f126; - g75 += -0.13363061845302582f * d * f127; - g74 += -0.06681530922651291f * d * f128; - g73 += -0.03857583925127983f * d * f129; - g75 += -0.14940357208251953f * d * f129; - g74 += -0.1767766922712326f * d * f130; - g73 += -0.20412415266036987f * d * f131; - } - { const float d = D(ii, k, 310); - g73 += 0.14433756470680237f * d * f124; - g74 += 0.18898223340511322f * d * f125; - g75 += 0.21128855645656586f * d * f126; - g76 += 0.2182178944349289f * d * f127; - g77 += 0.21128855645656586f * d * f128; - g78 += 0.18898223340511322f * d * f129; - g79 += 0.14433756470680237f * d * f130; - } - { const float d = D(ii, k, 311); - g73 += 0.20412415266036987f * d * f123; - g74 += 0.1767766922712326f * d * f124; - g73 += -0.03857583925127983f * d * f125; - g75 += 0.14940357208251953f * d * f125; - g74 += -0.06681530922651291f * d * f126; - g77 += -0.13363061845302582f * d * f127; - g76 += 0.17251639068126678f * d * f128; - g78 += -0.06681530922651291f * d * f128; - g77 += 0.14940357208251953f * d * f129; - g79 += -0.03857583925127983f * d * f129; - g78 += 0.1767766922712326f * d * f130; - g79 += 0.20412415266036987f * d * f131; - } - { const float d = D(ii, k, 312); - g86 += 0.20412415266036987f * d * f123; - g85 += 0.1767766922712326f * d * f124; - g84 += 0.14940357208251953f * d * f125; - g86 += 0.03857583925127983f * d * f125; - g83 += 0.17251639068126678f * d * f126; - g85 += 0.06681530922651291f * d * f126; - g82 += -0.13363061845302582f * d * f127; - g81 += -0.06681530922651291f * d * f128; - g80 += -0.03857583925127983f * d * f129; - g82 += -0.14940357208251953f * d * f129; - g81 += -0.1767766922712326f * d * f130; - g80 += -0.20412415266036987f * d * f131; - } - { const float d = D(ii, k, 313); - g80 += 0.14433756470680237f * d * f124; - g81 += 0.18898223340511322f * d * f125; - g82 += 0.21128855645656586f * d * f126; - g83 += 0.2182178944349289f * d * f127; - g84 += 0.21128855645656586f * d * f128; - g85 += 0.18898223340511322f * d * f129; - g86 += 0.14433756470680237f * d * f130; - } - { const float d = D(ii, k, 314); - g80 += 0.20412415266036987f * d * f123; - g81 += 0.1767766922712326f * d * f124; - g80 += -0.03857583925127983f * d * f125; - g82 += 0.14940357208251953f * d * f125; - g81 += -0.06681530922651291f * d * f126; - g84 += -0.13363061845302582f * d * f127; - g83 += 0.17251639068126678f * d * f128; - g85 += -0.06681530922651291f * d * f128; - g84 += 0.14940357208251953f * d * f129; - g86 += -0.03857583925127983f * d * f129; - g85 += 0.1767766922712326f * d * f130; - g86 += 0.20412415266036987f * d * f131; - } - { const float d = D(ii, k, 330); - g80 += 0.26726123690605164f * d * f21; - g81 += 0.2182178944349289f * d * f20; - g82 += 0.23904572427272797f * d * f19; - g82 += 0.0690065547823906f * d * f21; - g83 += -0.16903084516525269f * d * f18; - g84 += -0.0690065547823906f * d * f17; - g85 += -0.2182178944349289f * d * f18; - g86 += -0.26726123690605164f * d * f17; - } - { const float d = D(ii, k, 331); - g81 += 0.2182178944349289f * d * f17; - g82 += 0.2760262191295624f * d * f18; - g83 += 0.29277002811431885f * d * f19; - g84 += 0.2760262191295624f * d * f20; - g85 += 0.2182178944349289f * d * f21; - } - { const float d = D(ii, k, 332); - g80 += 0.26726123690605164f * d * f17; - g81 += 0.2182178944349289f * d * f18; - g82 += -0.0690065547823906f * d * f17; - g83 += -0.16903084516525269f * d * f20; - g84 += 0.23904572427272797f * d * f19; - g84 += -0.0690065547823906f * d * f21; - g85 += 0.2182178944349289f * d * f20; - g86 += 0.26726123690605164f * d * f21; - } - { const float d = D(ii, k, 333); - g80 += 0.26726123690605164f * d * f26; - g81 += 0.2182178944349289f * d * f25; - g82 += 0.23904572427272797f * d * f24; - g82 += 0.0690065547823906f * d * f26; - g83 += -0.16903084516525269f * d * f23; - g84 += -0.0690065547823906f * d * f22; - g85 += -0.2182178944349289f * d * f23; - g86 += -0.26726123690605164f * d * f22; - } - { const float d = D(ii, k, 334); - g81 += 0.2182178944349289f * d * f22; - g82 += 0.2760262191295624f * d * f23; - g83 += 0.29277002811431885f * d * f24; - g84 += 0.2760262191295624f * d * f25; - g85 += 0.2182178944349289f * d * f26; - } - { const float d = D(ii, k, 335); - g80 += 0.26726123690605164f * d * f22; - g81 += 0.2182178944349289f * d * f23; - g82 += -0.0690065547823906f * d * f22; - g83 += -0.16903084516525269f * d * f25; - g84 += 0.23904572427272797f * d * f24; - g84 += -0.0690065547823906f * d * f26; - g85 += 0.2182178944349289f * d * f25; - g86 += 0.26726123690605164f * d * f26; - } - { const float d = D(ii, k, 336); - g80 += 0.26726123690605164f * d * f31; - g81 += 0.2182178944349289f * d * f30; - g82 += 0.23904572427272797f * d * f29; - g82 += 0.0690065547823906f * d * f31; - g83 += -0.16903084516525269f * d * f28; - g84 += -0.0690065547823906f * d * f27; - g85 += -0.2182178944349289f * d * f28; - g86 += -0.26726123690605164f * d * f27; - } - { const float d = D(ii, k, 337); - g81 += 0.2182178944349289f * d * f27; - g82 += 0.2760262191295624f * d * f28; - g83 += 0.29277002811431885f * d * f29; - g84 += 0.2760262191295624f * d * f30; - g85 += 0.2182178944349289f * d * f31; - } - { const float d = D(ii, k, 338); - g80 += 0.26726123690605164f * d * f27; - g81 += 0.2182178944349289f * d * f28; - g82 += -0.0690065547823906f * d * f27; - g83 += -0.16903084516525269f * d * f30; - g84 += 0.23904572427272797f * d * f29; - g84 += -0.0690065547823906f * d * f31; - g85 += 0.2182178944349289f * d * f30; - g86 += 0.26726123690605164f * d * f31; - } - { const float d = D(ii, k, 339); - g80 += 0.26726123690605164f * d * f36; - g81 += 0.2182178944349289f * d * f35; - g82 += 0.23904572427272797f * d * f34; - g82 += 0.0690065547823906f * d * f36; - g83 += -0.16903084516525269f * d * f33; - g84 += -0.0690065547823906f * d * f32; - g85 += -0.2182178944349289f * d * f33; - g86 += -0.26726123690605164f * d * f32; - } - { const float d = D(ii, k, 340); - g81 += 0.2182178944349289f * d * f32; - g82 += 0.2760262191295624f * d * f33; - g83 += 0.29277002811431885f * d * f34; - g84 += 0.2760262191295624f * d * f35; - g85 += 0.2182178944349289f * d * f36; - } - { const float d = D(ii, k, 341); - g80 += 0.26726123690605164f * d * f32; - g81 += 0.2182178944349289f * d * f33; - g82 += -0.0690065547823906f * d * f32; - g83 += -0.16903084516525269f * d * f35; - g84 += 0.23904572427272797f * d * f34; - g84 += -0.0690065547823906f * d * f36; - g85 += 0.2182178944349289f * d * f35; - g86 += 0.26726123690605164f * d * f36; - } - { const float d = D(ii, k, 342); - g80 += 0.26726123690605164f * d * f41; - g81 += 0.2182178944349289f * d * f40; - g82 += 0.23904572427272797f * d * f39; - g82 += 0.0690065547823906f * d * f41; - g83 += -0.16903084516525269f * d * f38; - g84 += -0.0690065547823906f * d * f37; - g85 += -0.2182178944349289f * d * f38; - g86 += -0.26726123690605164f * d * f37; - } - { const float d = D(ii, k, 343); - g81 += 0.2182178944349289f * d * f37; - g82 += 0.2760262191295624f * d * f38; - g83 += 0.29277002811431885f * d * f39; - g84 += 0.2760262191295624f * d * f40; - g85 += 0.2182178944349289f * d * f41; - } - { const float d = D(ii, k, 344); - g80 += 0.26726123690605164f * d * f37; - g81 += 0.2182178944349289f * d * f38; - g82 += -0.0690065547823906f * d * f37; - g83 += -0.16903084516525269f * d * f40; - g84 += 0.23904572427272797f * d * f39; - g84 += -0.0690065547823906f * d * f41; - g85 += 0.2182178944349289f * d * f40; - g86 += 0.26726123690605164f * d * f41; - } - { const float d = D(ii, k, 345); - g80 += 0.26726123690605164f * d * f46; - g81 += 0.2182178944349289f * d * f45; - g82 += 0.23904572427272797f * d * f44; - g82 += 0.0690065547823906f * d * f46; - g83 += -0.16903084516525269f * d * f43; - g84 += -0.0690065547823906f * d * f42; - g85 += -0.2182178944349289f * d * f43; - g86 += -0.26726123690605164f * d * f42; - } - { const float d = D(ii, k, 346); - g81 += 0.2182178944349289f * d * f42; - g82 += 0.2760262191295624f * d * f43; - g83 += 0.29277002811431885f * d * f44; - g84 += 0.2760262191295624f * d * f45; - g85 += 0.2182178944349289f * d * f46; - } - { const float d = D(ii, k, 347); - g80 += 0.26726123690605164f * d * f42; - g81 += 0.2182178944349289f * d * f43; - g82 += -0.0690065547823906f * d * f42; - g83 += -0.16903084516525269f * d * f45; - g84 += 0.23904572427272797f * d * f44; - g84 += -0.0690065547823906f * d * f46; - g85 += 0.2182178944349289f * d * f45; - g86 += 0.26726123690605164f * d * f46; - } - { const float d = D(ii, k, 348); - g80 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f80; - g81 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f81; - g82 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f82; - g82 += 0.0690065547823906f * d * f51; - g51 += 0.0690065547823906f * d * f82; - g83 += -0.16903084516525269f * d * f48; - g48 += -0.16903084516525269f * d * f83; - g84 += -0.0690065547823906f * d * f47; - g85 += -0.2182178944349289f * d * f48; - g48 += -0.2182178944349289f * d * f85; - g86 += -0.26726123690605164f * d * f47; - } - { const float d = D(ii, k, 349); - g81 += 0.2182178944349289f * d * f47; - g82 += 0.2760262191295624f * d * f48; - g48 += 0.2760262191295624f * d * f82; - g83 += 0.29277002811431885f * d * f49; - g49 += 0.29277002811431885f * d * f83; - g84 += 0.2760262191295624f * d * f50; - g50 += 0.2760262191295624f * d * f84; - g85 += 0.2182178944349289f * d * f51; - g51 += 0.2182178944349289f * d * f85; - } - { const float d = D(ii, k, 350); - g80 += 0.26726123690605164f * d * f47; - g81 += 0.2182178944349289f * d * f48; - g48 += 0.2182178944349289f * d * f81; - g82 += -0.0690065547823906f * d * f47; - g83 += -0.16903084516525269f * d * f50; - g50 += -0.16903084516525269f * d * f83; - g84 += 0.23904572427272797f * d * f49; - g49 += 0.23904572427272797f * d * f84; - g84 += -0.0690065547823906f * d * f51; - g51 += -0.0690065547823906f * d * f84; - g85 += 0.2182178944349289f * d * f50; - g50 += 0.2182178944349289f * d * f85; - g86 += 0.26726123690605164f * d * f51; - g51 += 0.26726123690605164f * d * f86; - } - { const float d = D(ii, k, 351); - g48 += 0.3872983455657959f * d * f6; - g49 += -0.22360679507255554f * d * f5; - g51 += -0.3872983455657959f * d * f5; - } - { const float d = D(ii, k, 352); - g48 += 0.3872983455657959f * d * f5; - g49 += 0.4472135901451111f * d * f6; - g50 += 0.3872983455657959f * d * f7; - } - { const float d = D(ii, k, 353); - g49 += -0.22360679507255554f * d * f7; - g50 += 0.3872983455657959f * d * f6; - g51 += 0.3872983455657959f * d * f7; - } - { const float d = D(ii, k, 354); - g48 += 0.3872983455657959f * d * f9; - g49 += -0.22360679507255554f * d * f8; - g51 += -0.3872983455657959f * d * f8; - } - { const float d = D(ii, k, 355); - g48 += 0.3872983455657959f * d * f8; - g49 += 0.4472135901451111f * d * f9; - g50 += 0.3872983455657959f * d * f10; - } - { const float d = D(ii, k, 356); - g49 += -0.22360679507255554f * d * f10; - g50 += 0.3872983455657959f * d * f9; - g51 += 0.3872983455657959f * d * f10; - } - { const float d = D(ii, k, 357); - g48 += 0.3872983455657959f * d * f12; - g49 += -0.22360679507255554f * d * f11; - g51 += -0.3872983455657959f * d * f11; - } - { const float d = D(ii, k, 358); - g48 += 0.3872983455657959f * d * f11; - g49 += 0.4472135901451111f * d * f12; - g50 += 0.3872983455657959f * d * f13; - } - { const float d = D(ii, k, 359); - g49 += -0.22360679507255554f * d * f13; - g50 += 0.3872983455657959f * d * f12; - g51 += 0.3872983455657959f * d * f13; - } - { const float d = D(ii, k, 360); - g48 += 0.3872983455657959f * d * f15; - g49 += -0.22360679507255554f * d * f14; - g51 += -0.3872983455657959f * d * f14; - } - { const float d = D(ii, k, 361); - g48 += 0.3872983455657959f * d * f14; - g49 += 0.4472135901451111f * d * f15; - g50 += 0.3872983455657959f * d * f16; - } - { const float d = D(ii, k, 362); - g49 += -0.22360679507255554f * d * f16; - g50 += 0.3872983455657959f * d * f15; - g51 += 0.3872983455657959f * d * f16; - } - { const float d = D(ii, k, 363); - g58 += 0.20412415266036987f * d * f132; - g57 += 0.1767766922712326f * d * f133; - g56 += 0.14940357208251953f * d * f134; - g58 += 0.03857583925127983f * d * f134; - g55 += 0.17251639068126678f * d * f135; - g57 += 0.06681530922651291f * d * f135; - g54 += -0.13363061845302582f * d * f136; - g53 += -0.06681530922651291f * d * f137; - g52 += -0.03857583925127983f * d * f138; - g54 += -0.14940357208251953f * d * f138; - g53 += -0.1767766922712326f * d * f139; - g52 += -0.20412415266036987f * d * f140; - } - { const float d = D(ii, k, 364); - g52 += 0.14433756470680237f * d * f133; - g53 += 0.18898223340511322f * d * f134; - g54 += 0.21128855645656586f * d * f135; - g55 += 0.2182178944349289f * d * f136; - g56 += 0.21128855645656586f * d * f137; - g57 += 0.18898223340511322f * d * f138; - g58 += 0.14433756470680237f * d * f139; - } - { const float d = D(ii, k, 365); - g52 += 0.20412415266036987f * d * f132; - g53 += 0.1767766922712326f * d * f133; - g52 += -0.03857583925127983f * d * f134; - g54 += 0.14940357208251953f * d * f134; - g53 += -0.06681530922651291f * d * f135; - g56 += -0.13363061845302582f * d * f136; - g55 += 0.17251639068126678f * d * f137; - g57 += -0.06681530922651291f * d * f137; - g56 += 0.14940357208251953f * d * f138; - g58 += -0.03857583925127983f * d * f138; - g57 += 0.1767766922712326f * d * f139; - g58 += 0.20412415266036987f * d * f140; - } - { const float d = D(ii, k, 366); - g65 += 0.20412415266036987f * d * f132; - g64 += 0.1767766922712326f * d * f133; - g63 += 0.14940357208251953f * d * f134; - g65 += 0.03857583925127983f * d * f134; - g62 += 0.17251639068126678f * d * f135; - g64 += 0.06681530922651291f * d * f135; - g61 += -0.13363061845302582f * d * f136; - g60 += -0.06681530922651291f * d * f137; - g59 += -0.03857583925127983f * d * f138; - g61 += -0.14940357208251953f * d * f138; - g60 += -0.1767766922712326f * d * f139; - g59 += -0.20412415266036987f * d * f140; - } - { const float d = D(ii, k, 367); - g59 += 0.14433756470680237f * d * f133; - g60 += 0.18898223340511322f * d * f134; - g61 += 0.21128855645656586f * d * f135; - g62 += 0.2182178944349289f * d * f136; - g63 += 0.21128855645656586f * d * f137; - g64 += 0.18898223340511322f * d * f138; - g65 += 0.14433756470680237f * d * f139; - } - { const float d = D(ii, k, 368); - g59 += 0.20412415266036987f * d * f132; - g60 += 0.1767766922712326f * d * f133; - g59 += -0.03857583925127983f * d * f134; - g61 += 0.14940357208251953f * d * f134; - g60 += -0.06681530922651291f * d * f135; - g63 += -0.13363061845302582f * d * f136; - g62 += 0.17251639068126678f * d * f137; - g64 += -0.06681530922651291f * d * f137; - g63 += 0.14940357208251953f * d * f138; - g65 += -0.03857583925127983f * d * f138; - g64 += 0.1767766922712326f * d * f139; - g65 += 0.20412415266036987f * d * f140; - } - { const float d = D(ii, k, 369); - g72 += 0.20412415266036987f * d * f132; - g71 += 0.1767766922712326f * d * f133; - g70 += 0.14940357208251953f * d * f134; - g72 += 0.03857583925127983f * d * f134; - g69 += 0.17251639068126678f * d * f135; - g71 += 0.06681530922651291f * d * f135; - g68 += -0.13363061845302582f * d * f136; - g67 += -0.06681530922651291f * d * f137; - g66 += -0.03857583925127983f * d * f138; - g68 += -0.14940357208251953f * d * f138; - g67 += -0.1767766922712326f * d * f139; - g66 += -0.20412415266036987f * d * f140; - } - { const float d = D(ii, k, 370); - g66 += 0.14433756470680237f * d * f133; - g67 += 0.18898223340511322f * d * f134; - g68 += 0.21128855645656586f * d * f135; - g69 += 0.2182178944349289f * d * f136; - g70 += 0.21128855645656586f * d * f137; - g71 += 0.18898223340511322f * d * f138; - g72 += 0.14433756470680237f * d * f139; - } - { const float d = D(ii, k, 371); - g66 += 0.20412415266036987f * d * f132; - g67 += 0.1767766922712326f * d * f133; - g66 += -0.03857583925127983f * d * f134; - g68 += 0.14940357208251953f * d * f134; - g67 += -0.06681530922651291f * d * f135; - g70 += -0.13363061845302582f * d * f136; - g69 += 0.17251639068126678f * d * f137; - g71 += -0.06681530922651291f * d * f137; - g70 += 0.14940357208251953f * d * f138; - g72 += -0.03857583925127983f * d * f138; - g71 += 0.1767766922712326f * d * f139; - g72 += 0.20412415266036987f * d * f140; - } - { const float d = D(ii, k, 372); - g79 += 0.20412415266036987f * d * f132; - g78 += 0.1767766922712326f * d * f133; - g77 += 0.14940357208251953f * d * f134; - g79 += 0.03857583925127983f * d * f134; - g76 += 0.17251639068126678f * d * f135; - g78 += 0.06681530922651291f * d * f135; - g75 += -0.13363061845302582f * d * f136; - g74 += -0.06681530922651291f * d * f137; - g73 += -0.03857583925127983f * d * f138; - g75 += -0.14940357208251953f * d * f138; - g74 += -0.1767766922712326f * d * f139; - g73 += -0.20412415266036987f * d * f140; - } - { const float d = D(ii, k, 373); - g73 += 0.14433756470680237f * d * f133; - g74 += 0.18898223340511322f * d * f134; - g75 += 0.21128855645656586f * d * f135; - g76 += 0.2182178944349289f * d * f136; - g77 += 0.21128855645656586f * d * f137; - g78 += 0.18898223340511322f * d * f138; - g79 += 0.14433756470680237f * d * f139; - } - { const float d = D(ii, k, 374); - g73 += 0.20412415266036987f * d * f132; - g74 += 0.1767766922712326f * d * f133; - g73 += -0.03857583925127983f * d * f134; - g75 += 0.14940357208251953f * d * f134; - g74 += -0.06681530922651291f * d * f135; - g77 += -0.13363061845302582f * d * f136; - g76 += 0.17251639068126678f * d * f137; - g78 += -0.06681530922651291f * d * f137; - g77 += 0.14940357208251953f * d * f138; - g79 += -0.03857583925127983f * d * f138; - g78 += 0.1767766922712326f * d * f139; - g79 += 0.20412415266036987f * d * f140; - } - { const float d = D(ii, k, 375); - g86 += 0.20412415266036987f * d * f132; - g85 += 0.1767766922712326f * d * f133; - g84 += 0.14940357208251953f * d * f134; - g86 += 0.03857583925127983f * d * f134; - g83 += 0.17251639068126678f * d * f135; - g85 += 0.06681530922651291f * d * f135; - g82 += -0.13363061845302582f * d * f136; - g81 += -0.06681530922651291f * d * f137; - g80 += -0.03857583925127983f * d * f138; - g82 += -0.14940357208251953f * d * f138; - g81 += -0.1767766922712326f * d * f139; - g80 += -0.20412415266036987f * d * f140; - } - { const float d = D(ii, k, 376); - g80 += 0.14433756470680237f * d * f133; - g81 += 0.18898223340511322f * d * f134; - g82 += 0.21128855645656586f * d * f135; - g83 += 0.2182178944349289f * d * f136; - g84 += 0.21128855645656586f * d * f137; - g85 += 0.18898223340511322f * d * f138; - g86 += 0.14433756470680237f * d * f139; - } - { const float d = D(ii, k, 377); - g80 += 0.20412415266036987f * d * f132; - g81 += 0.1767766922712326f * d * f133; - g80 += -0.03857583925127983f * d * f134; - g82 += 0.14940357208251953f * d * f134; - g81 += -0.06681530922651291f * d * f135; - g84 += -0.13363061845302582f * d * f136; - g83 += 0.17251639068126678f * d * f137; - g85 += -0.06681530922651291f * d * f137; - g84 += 0.14940357208251953f * d * f138; - g86 += -0.03857583925127983f * d * f138; - g85 += 0.1767766922712326f * d * f139; - g86 += 0.20412415266036987f * d * f140; - } - dF(ii, k, 48) = g48; - dF(ii, k, 49) = g49; - dF(ii, k, 50) = g50; - dF(ii, k, 51) = g51; - dF(ii, k, 52) = g52; - dF(ii, k, 53) = g53; - dF(ii, k, 54) = g54; - dF(ii, k, 55) = g55; - dF(ii, k, 56) = g56; - dF(ii, k, 57) = g57; - dF(ii, k, 58) = g58; - dF(ii, k, 59) = g59; - dF(ii, k, 60) = g60; - dF(ii, k, 61) = g61; - dF(ii, k, 62) = g62; - dF(ii, k, 63) = g63; - dF(ii, k, 64) = g64; - dF(ii, k, 65) = g65; - dF(ii, k, 66) = g66; - dF(ii, k, 67) = g67; - dF(ii, k, 68) = g68; - dF(ii, k, 69) = g69; - dF(ii, k, 70) = g70; - dF(ii, k, 71) = g71; - dF(ii, k, 72) = g72; - dF(ii, k, 73) = g73; - dF(ii, k, 74) = g74; - dF(ii, k, 75) = g75; - dF(ii, k, 76) = g76; - dF(ii, k, 77) = g77; - dF(ii, k, 78) = g78; - dF(ii, k, 79) = g79; - dF(ii, k, 80) = g80; - dF(ii, k, 81) = g81; - dF(ii, k, 82) = g82; - dF(ii, k, 83) = g83; - dF(ii, k, 84) = g84; - dF(ii, k, 85) = g85; - dF(ii, k, 86) = g86; - dF(ii, k, 87) = g87; - dF(ii, k, 88) = g88; - dF(ii, k, 89) = g89; - dF(ii, k, 90) = g90; - dF(ii, k, 91) = g91; - dF(ii, k, 92) = g92; - dF(ii, k, 93) = g93; - dF(ii, k, 94) = g94; - dF(ii, k, 95) = g95; - } - { - float g96 = 0.0f; - float g97 = 0.0f; - float g98 = 0.0f; - float g99 = 0.0f; - float g100 = 0.0f; - float g101 = 0.0f; - float g102 = 0.0f; - float g103 = 0.0f; - float g104 = 0.0f; - float g105 = 0.0f; - float g106 = 0.0f; - float g107 = 0.0f; - float g108 = 0.0f; - float g109 = 0.0f; - float g110 = 0.0f; - float g111 = 0.0f; - float g112 = 0.0f; - float g113 = 0.0f; - float g114 = 0.0f; - float g115 = 0.0f; - float g116 = 0.0f; - float g117 = 0.0f; - float g118 = 0.0f; - float g119 = 0.0f; - float g120 = 0.0f; - float g121 = 0.0f; - float g122 = 0.0f; - float g123 = 0.0f; - float g124 = 0.0f; - float g125 = 0.0f; - float g126 = 0.0f; - float g127 = 0.0f; - float g128 = 0.0f; - float g129 = 0.0f; - float g130 = 0.0f; - float g131 = 0.0f; - float g132 = 0.0f; - float g133 = 0.0f; - float g134 = 0.0f; - float g135 = 0.0f; - float g136 = 0.0f; - float g137 = 0.0f; - float g138 = 0.0f; - float g139 = 0.0f; - float g140 = 0.0f; - { const float d = D(ii, k, 34); - g96 += 0.1111111119389534f * d * f87; - g97 += 0.1111111119389534f * d * f88; - g98 += 0.1111111119389534f * d * f89; - g99 += 0.1111111119389534f * d * f90; - g100 += 0.1111111119389534f * d * f91; - g101 += 0.1111111119389534f * d * f92; - g102 += 0.1111111119389534f * d * f93; - g103 += 0.1111111119389534f * d * f94; - g104 += 0.1111111119389534f * d * f95; - } - { const float d = D(ii, k, 35); - g105 += 0.1111111119389534f * d * f87; - g106 += 0.1111111119389534f * d * f88; - g107 += 0.1111111119389534f * d * f89; - g108 += 0.1111111119389534f * d * f90; - g109 += 0.1111111119389534f * d * f91; - g110 += 0.1111111119389534f * d * f92; - g111 += 0.1111111119389534f * d * f93; - g112 += 0.1111111119389534f * d * f94; - g113 += 0.1111111119389534f * d * f95; - } - { const float d = D(ii, k, 36); - g132 += 0.1111111119389534f * d * f87; - g133 += 0.1111111119389534f * d * f88; - g134 += 0.1111111119389534f * d * f89; - g135 += 0.1111111119389534f * d * f90; - g136 += 0.1111111119389534f * d * f91; - g137 += 0.1111111119389534f * d * f92; - g138 += 0.1111111119389534f * d * f93; - g139 += 0.1111111119389534f * d * f94; - g140 += 0.1111111119389534f * d * f95; - } - { const float d = D(ii, k, 42); - g96 += 0.1111111119389534f * d * f96; - g96 += 0.1111111119389534f * d * f96; - g97 += 0.1111111119389534f * d * f97; - g97 += 0.1111111119389534f * d * f97; - g98 += 0.1111111119389534f * d * f98; - g98 += 0.1111111119389534f * d * f98; - g99 += 0.1111111119389534f * d * f99; - g99 += 0.1111111119389534f * d * f99; - g100 += 0.1111111119389534f * d * f100; - g100 += 0.1111111119389534f * d * f100; - g101 += 0.1111111119389534f * d * f101; - g101 += 0.1111111119389534f * d * f101; - g102 += 0.1111111119389534f * d * f102; - g102 += 0.1111111119389534f * d * f102; - g103 += 0.1111111119389534f * d * f103; - g103 += 0.1111111119389534f * d * f103; - g104 += 0.1111111119389534f * d * f104; - g104 += 0.1111111119389534f * d * f104; - } - { const float d = D(ii, k, 43); - g123 += 0.1111111119389534f * d * f96; - g96 += 0.1111111119389534f * d * f123; - g124 += 0.1111111119389534f * d * f97; - g97 += 0.1111111119389534f * d * f124; - g125 += 0.1111111119389534f * d * f98; - g98 += 0.1111111119389534f * d * f125; - g126 += 0.1111111119389534f * d * f99; - g99 += 0.1111111119389534f * d * f126; - g127 += 0.1111111119389534f * d * f100; - g100 += 0.1111111119389534f * d * f127; - g128 += 0.1111111119389534f * d * f101; - g101 += 0.1111111119389534f * d * f128; - g129 += 0.1111111119389534f * d * f102; - g102 += 0.1111111119389534f * d * f129; - g130 += 0.1111111119389534f * d * f103; - g103 += 0.1111111119389534f * d * f130; - g131 += 0.1111111119389534f * d * f104; - g104 += 0.1111111119389534f * d * f131; - } - { const float d = D(ii, k, 44); - g132 += 0.1111111119389534f * d * f96; - g96 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f97; - g97 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f98; - g98 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f99; - g99 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f100; - g100 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f101; - g101 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f102; - g102 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f103; - g103 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f104; - g104 += 0.1111111119389534f * d * f140; - } - { const float d = D(ii, k, 55); - g105 += 0.1111111119389534f * d * f105; - g105 += 0.1111111119389534f * d * f105; - g106 += 0.1111111119389534f * d * f106; - g106 += 0.1111111119389534f * d * f106; - g107 += 0.1111111119389534f * d * f107; - g107 += 0.1111111119389534f * d * f107; - g108 += 0.1111111119389534f * d * f108; - g108 += 0.1111111119389534f * d * f108; - g109 += 0.1111111119389534f * d * f109; - g109 += 0.1111111119389534f * d * f109; - g110 += 0.1111111119389534f * d * f110; - g110 += 0.1111111119389534f * d * f110; - g111 += 0.1111111119389534f * d * f111; - g111 += 0.1111111119389534f * d * f111; - g112 += 0.1111111119389534f * d * f112; - g112 += 0.1111111119389534f * d * f112; - g113 += 0.1111111119389534f * d * f113; - g113 += 0.1111111119389534f * d * f113; - } - { const float d = D(ii, k, 56); - g123 += 0.1111111119389534f * d * f105; - g105 += 0.1111111119389534f * d * f123; - g124 += 0.1111111119389534f * d * f106; - g106 += 0.1111111119389534f * d * f124; - g125 += 0.1111111119389534f * d * f107; - g107 += 0.1111111119389534f * d * f125; - g126 += 0.1111111119389534f * d * f108; - g108 += 0.1111111119389534f * d * f126; - g127 += 0.1111111119389534f * d * f109; - g109 += 0.1111111119389534f * d * f127; - g128 += 0.1111111119389534f * d * f110; - g110 += 0.1111111119389534f * d * f128; - g129 += 0.1111111119389534f * d * f111; - g111 += 0.1111111119389534f * d * f129; - g130 += 0.1111111119389534f * d * f112; - g112 += 0.1111111119389534f * d * f130; - g131 += 0.1111111119389534f * d * f113; - g113 += 0.1111111119389534f * d * f131; - } - { const float d = D(ii, k, 57); - g132 += 0.1111111119389534f * d * f105; - g105 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f106; - g106 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f107; - g107 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f108; - g108 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f109; - g109 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f110; - g110 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f111; - g111 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f112; - g112 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f113; - g113 += 0.1111111119389534f * d * f140; - } - { const float d = D(ii, k, 58); - g132 += 0.1111111119389534f * d * f114; - g114 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f115; - g115 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f116; - g116 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f117; - g117 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f118; - g118 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f119; - g119 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f120; - g120 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f121; - g121 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f122; - g122 += 0.1111111119389534f * d * f140; - } - { const float d = D(ii, k, 63); - g123 += 0.1111111119389534f * d * f123; - g123 += 0.1111111119389534f * d * f123; - g124 += 0.1111111119389534f * d * f124; - g124 += 0.1111111119389534f * d * f124; - g125 += 0.1111111119389534f * d * f125; - g125 += 0.1111111119389534f * d * f125; - g126 += 0.1111111119389534f * d * f126; - g126 += 0.1111111119389534f * d * f126; - g127 += 0.1111111119389534f * d * f127; - g127 += 0.1111111119389534f * d * f127; - g128 += 0.1111111119389534f * d * f128; - g128 += 0.1111111119389534f * d * f128; - g129 += 0.1111111119389534f * d * f129; - g129 += 0.1111111119389534f * d * f129; - g130 += 0.1111111119389534f * d * f130; - g130 += 0.1111111119389534f * d * f130; - g131 += 0.1111111119389534f * d * f131; - g131 += 0.1111111119389534f * d * f131; - } - { const float d = D(ii, k, 68); - g132 += 0.1111111119389534f * d * f132; - g132 += 0.1111111119389534f * d * f132; - g133 += 0.1111111119389534f * d * f133; - g133 += 0.1111111119389534f * d * f133; - g134 += 0.1111111119389534f * d * f134; - g134 += 0.1111111119389534f * d * f134; - g135 += 0.1111111119389534f * d * f135; - g135 += 0.1111111119389534f * d * f135; - g136 += 0.1111111119389534f * d * f136; - g136 += 0.1111111119389534f * d * f136; - g137 += 0.1111111119389534f * d * f137; - g137 += 0.1111111119389534f * d * f137; - g138 += 0.1111111119389534f * d * f138; - g138 += 0.1111111119389534f * d * f138; - g139 += 0.1111111119389534f * d * f139; - g139 += 0.1111111119389534f * d * f139; - g140 += 0.1111111119389534f * d * f140; - g140 += 0.1111111119389534f * d * f140; - } - { const float d = D(ii, k, 189); - g96 += 0.20412415266036987f * d * f58; - g97 += 0.1767766922712326f * d * f57; - g98 += 0.14940357208251953f * d * f56; - g98 += 0.03857583925127983f * d * f58; - g99 += 0.17251639068126678f * d * f55; - g99 += 0.06681530922651291f * d * f57; - g100 += -0.13363061845302582f * d * f54; - g101 += -0.06681530922651291f * d * f53; - g102 += -0.03857583925127983f * d * f52; - g102 += -0.14940357208251953f * d * f54; - g103 += -0.1767766922712326f * d * f53; - g104 += -0.20412415266036987f * d * f52; - } - { const float d = D(ii, k, 190); - g97 += 0.14433756470680237f * d * f52; - g98 += 0.18898223340511322f * d * f53; - g99 += 0.21128855645656586f * d * f54; - g100 += 0.2182178944349289f * d * f55; - g101 += 0.21128855645656586f * d * f56; - g102 += 0.18898223340511322f * d * f57; - g103 += 0.14433756470680237f * d * f58; - } - { const float d = D(ii, k, 191); - g96 += 0.20412415266036987f * d * f52; - g97 += 0.1767766922712326f * d * f53; - g98 += -0.03857583925127983f * d * f52; - g98 += 0.14940357208251953f * d * f54; - g99 += -0.06681530922651291f * d * f53; - g100 += -0.13363061845302582f * d * f56; - g101 += 0.17251639068126678f * d * f55; - g101 += -0.06681530922651291f * d * f57; - g102 += 0.14940357208251953f * d * f56; - g102 += -0.03857583925127983f * d * f58; - g103 += 0.1767766922712326f * d * f57; - g104 += 0.20412415266036987f * d * f58; - } - { const float d = D(ii, k, 192); - g96 += 0.20412415266036987f * d * f65; - g97 += 0.1767766922712326f * d * f64; - g98 += 0.14940357208251953f * d * f63; - g98 += 0.03857583925127983f * d * f65; - g99 += 0.17251639068126678f * d * f62; - g99 += 0.06681530922651291f * d * f64; - g100 += -0.13363061845302582f * d * f61; - g101 += -0.06681530922651291f * d * f60; - g102 += -0.03857583925127983f * d * f59; - g102 += -0.14940357208251953f * d * f61; - g103 += -0.1767766922712326f * d * f60; - g104 += -0.20412415266036987f * d * f59; - } - { const float d = D(ii, k, 193); - g97 += 0.14433756470680237f * d * f59; - g98 += 0.18898223340511322f * d * f60; - g99 += 0.21128855645656586f * d * f61; - g100 += 0.2182178944349289f * d * f62; - g101 += 0.21128855645656586f * d * f63; - g102 += 0.18898223340511322f * d * f64; - g103 += 0.14433756470680237f * d * f65; - } - { const float d = D(ii, k, 194); - g96 += 0.20412415266036987f * d * f59; - g97 += 0.1767766922712326f * d * f60; - g98 += -0.03857583925127983f * d * f59; - g98 += 0.14940357208251953f * d * f61; - g99 += -0.06681530922651291f * d * f60; - g100 += -0.13363061845302582f * d * f63; - g101 += 0.17251639068126678f * d * f62; - g101 += -0.06681530922651291f * d * f64; - g102 += 0.14940357208251953f * d * f63; - g102 += -0.03857583925127983f * d * f65; - g103 += 0.1767766922712326f * d * f64; - g104 += 0.20412415266036987f * d * f65; - } - { const float d = D(ii, k, 195); - g96 += 0.20412415266036987f * d * f72; - g97 += 0.1767766922712326f * d * f71; - g98 += 0.14940357208251953f * d * f70; - g98 += 0.03857583925127983f * d * f72; - g99 += 0.17251639068126678f * d * f69; - g99 += 0.06681530922651291f * d * f71; - g100 += -0.13363061845302582f * d * f68; - g101 += -0.06681530922651291f * d * f67; - g102 += -0.03857583925127983f * d * f66; - g102 += -0.14940357208251953f * d * f68; - g103 += -0.1767766922712326f * d * f67; - g104 += -0.20412415266036987f * d * f66; - } - { const float d = D(ii, k, 196); - g97 += 0.14433756470680237f * d * f66; - g98 += 0.18898223340511322f * d * f67; - g99 += 0.21128855645656586f * d * f68; - g100 += 0.2182178944349289f * d * f69; - g101 += 0.21128855645656586f * d * f70; - g102 += 0.18898223340511322f * d * f71; - g103 += 0.14433756470680237f * d * f72; - } - { const float d = D(ii, k, 197); - g96 += 0.20412415266036987f * d * f66; - g97 += 0.1767766922712326f * d * f67; - g98 += -0.03857583925127983f * d * f66; - g98 += 0.14940357208251953f * d * f68; - g99 += -0.06681530922651291f * d * f67; - g100 += -0.13363061845302582f * d * f70; - g101 += 0.17251639068126678f * d * f69; - g101 += -0.06681530922651291f * d * f71; - g102 += 0.14940357208251953f * d * f70; - g102 += -0.03857583925127983f * d * f72; - g103 += 0.1767766922712326f * d * f71; - g104 += 0.20412415266036987f * d * f72; - } - { const float d = D(ii, k, 198); - g96 += 0.20412415266036987f * d * f79; - g97 += 0.1767766922712326f * d * f78; - g98 += 0.14940357208251953f * d * f77; - g98 += 0.03857583925127983f * d * f79; - g99 += 0.17251639068126678f * d * f76; - g99 += 0.06681530922651291f * d * f78; - g100 += -0.13363061845302582f * d * f75; - g101 += -0.06681530922651291f * d * f74; - g102 += -0.03857583925127983f * d * f73; - g102 += -0.14940357208251953f * d * f75; - g103 += -0.1767766922712326f * d * f74; - g104 += -0.20412415266036987f * d * f73; - } - { const float d = D(ii, k, 199); - g97 += 0.14433756470680237f * d * f73; - g98 += 0.18898223340511322f * d * f74; - g99 += 0.21128855645656586f * d * f75; - g100 += 0.2182178944349289f * d * f76; - g101 += 0.21128855645656586f * d * f77; - g102 += 0.18898223340511322f * d * f78; - g103 += 0.14433756470680237f * d * f79; - } - { const float d = D(ii, k, 200); - g96 += 0.20412415266036987f * d * f73; - g97 += 0.1767766922712326f * d * f74; - g98 += -0.03857583925127983f * d * f73; - g98 += 0.14940357208251953f * d * f75; - g99 += -0.06681530922651291f * d * f74; - g100 += -0.13363061845302582f * d * f77; - g101 += 0.17251639068126678f * d * f76; - g101 += -0.06681530922651291f * d * f78; - g102 += 0.14940357208251953f * d * f77; - g102 += -0.03857583925127983f * d * f79; - g103 += 0.1767766922712326f * d * f78; - g104 += 0.20412415266036987f * d * f79; - } - { const float d = D(ii, k, 201); - g96 += 0.20412415266036987f * d * f86; - g97 += 0.1767766922712326f * d * f85; - g98 += 0.14940357208251953f * d * f84; - g98 += 0.03857583925127983f * d * f86; - g99 += 0.17251639068126678f * d * f83; - g99 += 0.06681530922651291f * d * f85; - g100 += -0.13363061845302582f * d * f82; - g101 += -0.06681530922651291f * d * f81; - g102 += -0.03857583925127983f * d * f80; - g102 += -0.14940357208251953f * d * f82; - g103 += -0.1767766922712326f * d * f81; - g104 += -0.20412415266036987f * d * f80; - } - { const float d = D(ii, k, 202); - g97 += 0.14433756470680237f * d * f80; - g98 += 0.18898223340511322f * d * f81; - g99 += 0.21128855645656586f * d * f82; - g100 += 0.2182178944349289f * d * f83; - g101 += 0.21128855645656586f * d * f84; - g102 += 0.18898223340511322f * d * f85; - g103 += 0.14433756470680237f * d * f86; - } - { const float d = D(ii, k, 203); - g96 += 0.20412415266036987f * d * f80; - g97 += 0.1767766922712326f * d * f81; - g98 += -0.03857583925127983f * d * f80; - g98 += 0.14940357208251953f * d * f82; - g99 += -0.06681530922651291f * d * f81; - g100 += -0.13363061845302582f * d * f84; - g101 += 0.17251639068126678f * d * f83; - g101 += -0.06681530922651291f * d * f85; - g102 += 0.14940357208251953f * d * f84; - g102 += -0.03857583925127983f * d * f86; - g103 += 0.1767766922712326f * d * f85; - g104 += 0.20412415266036987f * d * f86; - } - { const float d = D(ii, k, 249); - g105 += 0.20412415266036987f * d * f58; - g106 += 0.1767766922712326f * d * f57; - g107 += 0.14940357208251953f * d * f56; - g107 += 0.03857583925127983f * d * f58; - g108 += 0.17251639068126678f * d * f55; - g108 += 0.06681530922651291f * d * f57; - g109 += -0.13363061845302582f * d * f54; - g110 += -0.06681530922651291f * d * f53; - g111 += -0.03857583925127983f * d * f52; - g111 += -0.14940357208251953f * d * f54; - g112 += -0.1767766922712326f * d * f53; - g113 += -0.20412415266036987f * d * f52; - } - { const float d = D(ii, k, 250); - g106 += 0.14433756470680237f * d * f52; - g107 += 0.18898223340511322f * d * f53; - g108 += 0.21128855645656586f * d * f54; - g109 += 0.2182178944349289f * d * f55; - g110 += 0.21128855645656586f * d * f56; - g111 += 0.18898223340511322f * d * f57; - g112 += 0.14433756470680237f * d * f58; - } - { const float d = D(ii, k, 251); - g105 += 0.20412415266036987f * d * f52; - g106 += 0.1767766922712326f * d * f53; - g107 += -0.03857583925127983f * d * f52; - g107 += 0.14940357208251953f * d * f54; - g108 += -0.06681530922651291f * d * f53; - g109 += -0.13363061845302582f * d * f56; - g110 += 0.17251639068126678f * d * f55; - g110 += -0.06681530922651291f * d * f57; - g111 += 0.14940357208251953f * d * f56; - g111 += -0.03857583925127983f * d * f58; - g112 += 0.1767766922712326f * d * f57; - g113 += 0.20412415266036987f * d * f58; - } - { const float d = D(ii, k, 252); - g105 += 0.20412415266036987f * d * f72; - g106 += 0.1767766922712326f * d * f71; - g107 += 0.14940357208251953f * d * f70; - g107 += 0.03857583925127983f * d * f72; - g108 += 0.17251639068126678f * d * f69; - g108 += 0.06681530922651291f * d * f71; - g109 += -0.13363061845302582f * d * f68; - g110 += -0.06681530922651291f * d * f67; - g111 += -0.03857583925127983f * d * f66; - g111 += -0.14940357208251953f * d * f68; - g112 += -0.1767766922712326f * d * f67; - g113 += -0.20412415266036987f * d * f66; - } - { const float d = D(ii, k, 253); - g106 += 0.14433756470680237f * d * f66; - g107 += 0.18898223340511322f * d * f67; - g108 += 0.21128855645656586f * d * f68; - g109 += 0.2182178944349289f * d * f69; - g110 += 0.21128855645656586f * d * f70; - g111 += 0.18898223340511322f * d * f71; - g112 += 0.14433756470680237f * d * f72; - } - { const float d = D(ii, k, 254); - g105 += 0.20412415266036987f * d * f66; - g106 += 0.1767766922712326f * d * f67; - g107 += -0.03857583925127983f * d * f66; - g107 += 0.14940357208251953f * d * f68; - g108 += -0.06681530922651291f * d * f67; - g109 += -0.13363061845302582f * d * f70; - g110 += 0.17251639068126678f * d * f69; - g110 += -0.06681530922651291f * d * f71; - g111 += 0.14940357208251953f * d * f70; - g111 += -0.03857583925127983f * d * f72; - g112 += 0.1767766922712326f * d * f71; - g113 += 0.20412415266036987f * d * f72; - } - { const float d = D(ii, k, 255); - g105 += 0.20412415266036987f * d * f79; - g106 += 0.1767766922712326f * d * f78; - g107 += 0.14940357208251953f * d * f77; - g107 += 0.03857583925127983f * d * f79; - g108 += 0.17251639068126678f * d * f76; - g108 += 0.06681530922651291f * d * f78; - g109 += -0.13363061845302582f * d * f75; - g110 += -0.06681530922651291f * d * f74; - g111 += -0.03857583925127983f * d * f73; - g111 += -0.14940357208251953f * d * f75; - g112 += -0.1767766922712326f * d * f74; - g113 += -0.20412415266036987f * d * f73; - } - { const float d = D(ii, k, 256); - g106 += 0.14433756470680237f * d * f73; - g107 += 0.18898223340511322f * d * f74; - g108 += 0.21128855645656586f * d * f75; - g109 += 0.2182178944349289f * d * f76; - g110 += 0.21128855645656586f * d * f77; - g111 += 0.18898223340511322f * d * f78; - g112 += 0.14433756470680237f * d * f79; - } - { const float d = D(ii, k, 257); - g105 += 0.20412415266036987f * d * f73; - g106 += 0.1767766922712326f * d * f74; - g107 += -0.03857583925127983f * d * f73; - g107 += 0.14940357208251953f * d * f75; - g108 += -0.06681530922651291f * d * f74; - g109 += -0.13363061845302582f * d * f77; - g110 += 0.17251639068126678f * d * f76; - g110 += -0.06681530922651291f * d * f78; - g111 += 0.14940357208251953f * d * f77; - g111 += -0.03857583925127983f * d * f79; - g112 += 0.1767766922712326f * d * f78; - g113 += 0.20412415266036987f * d * f79; - } - { const float d = D(ii, k, 258); - g105 += 0.20412415266036987f * d * f86; - g106 += 0.1767766922712326f * d * f85; - g107 += 0.14940357208251953f * d * f84; - g107 += 0.03857583925127983f * d * f86; - g108 += 0.17251639068126678f * d * f83; - g108 += 0.06681530922651291f * d * f85; - g109 += -0.13363061845302582f * d * f82; - g110 += -0.06681530922651291f * d * f81; - g111 += -0.03857583925127983f * d * f80; - g111 += -0.14940357208251953f * d * f82; - g112 += -0.1767766922712326f * d * f81; - g113 += -0.20412415266036987f * d * f80; - } - { const float d = D(ii, k, 259); - g106 += 0.14433756470680237f * d * f80; - g107 += 0.18898223340511322f * d * f81; - g108 += 0.21128855645656586f * d * f82; - g109 += 0.2182178944349289f * d * f83; - g110 += 0.21128855645656586f * d * f84; - g111 += 0.18898223340511322f * d * f85; - g112 += 0.14433756470680237f * d * f86; - } - { const float d = D(ii, k, 260); - g105 += 0.20412415266036987f * d * f80; - g106 += 0.1767766922712326f * d * f81; - g107 += -0.03857583925127983f * d * f80; - g107 += 0.14940357208251953f * d * f82; - g108 += -0.06681530922651291f * d * f81; - g109 += -0.13363061845302582f * d * f84; - g110 += 0.17251639068126678f * d * f83; - g110 += -0.06681530922651291f * d * f85; - g111 += 0.14940357208251953f * d * f84; - g111 += -0.03857583925127983f * d * f86; - g112 += 0.1767766922712326f * d * f85; - g113 += 0.20412415266036987f * d * f86; - } - { const float d = D(ii, k, 261); - g114 += 0.20412415266036987f * d * f72; - g115 += 0.1767766922712326f * d * f71; - g116 += 0.14940357208251953f * d * f70; - g116 += 0.03857583925127983f * d * f72; - g117 += 0.17251639068126678f * d * f69; - g117 += 0.06681530922651291f * d * f71; - g118 += -0.13363061845302582f * d * f68; - g119 += -0.06681530922651291f * d * f67; - g120 += -0.03857583925127983f * d * f66; - g120 += -0.14940357208251953f * d * f68; - g121 += -0.1767766922712326f * d * f67; - g122 += -0.20412415266036987f * d * f66; - } - { const float d = D(ii, k, 262); - g115 += 0.14433756470680237f * d * f66; - g116 += 0.18898223340511322f * d * f67; - g117 += 0.21128855645656586f * d * f68; - g118 += 0.2182178944349289f * d * f69; - g119 += 0.21128855645656586f * d * f70; - g120 += 0.18898223340511322f * d * f71; - g121 += 0.14433756470680237f * d * f72; - } - { const float d = D(ii, k, 263); - g114 += 0.20412415266036987f * d * f66; - g115 += 0.1767766922712326f * d * f67; - g116 += -0.03857583925127983f * d * f66; - g116 += 0.14940357208251953f * d * f68; - g117 += -0.06681530922651291f * d * f67; - g118 += -0.13363061845302582f * d * f70; - g119 += 0.17251639068126678f * d * f69; - g119 += -0.06681530922651291f * d * f71; - g120 += 0.14940357208251953f * d * f70; - g120 += -0.03857583925127983f * d * f72; - g121 += 0.1767766922712326f * d * f71; - g122 += 0.20412415266036987f * d * f72; - } - { const float d = D(ii, k, 264); - g114 += 0.20412415266036987f * d * f79; - g115 += 0.1767766922712326f * d * f78; - g116 += 0.14940357208251953f * d * f77; - g116 += 0.03857583925127983f * d * f79; - g117 += 0.17251639068126678f * d * f76; - g117 += 0.06681530922651291f * d * f78; - g118 += -0.13363061845302582f * d * f75; - g119 += -0.06681530922651291f * d * f74; - g120 += -0.03857583925127983f * d * f73; - g120 += -0.14940357208251953f * d * f75; - g121 += -0.1767766922712326f * d * f74; - g122 += -0.20412415266036987f * d * f73; - } - { const float d = D(ii, k, 265); - g115 += 0.14433756470680237f * d * f73; - g116 += 0.18898223340511322f * d * f74; - g117 += 0.21128855645656586f * d * f75; - g118 += 0.2182178944349289f * d * f76; - g119 += 0.21128855645656586f * d * f77; - g120 += 0.18898223340511322f * d * f78; - g121 += 0.14433756470680237f * d * f79; - } - { const float d = D(ii, k, 266); - g114 += 0.20412415266036987f * d * f73; - g115 += 0.1767766922712326f * d * f74; - g116 += -0.03857583925127983f * d * f73; - g116 += 0.14940357208251953f * d * f75; - g117 += -0.06681530922651291f * d * f74; - g118 += -0.13363061845302582f * d * f77; - g119 += 0.17251639068126678f * d * f76; - g119 += -0.06681530922651291f * d * f78; - g120 += 0.14940357208251953f * d * f77; - g120 += -0.03857583925127983f * d * f79; - g121 += 0.1767766922712326f * d * f78; - g122 += 0.20412415266036987f * d * f79; - } - { const float d = D(ii, k, 267); - g114 += 0.20412415266036987f * d * f86; - g115 += 0.1767766922712326f * d * f85; - g116 += 0.14940357208251953f * d * f84; - g116 += 0.03857583925127983f * d * f86; - g117 += 0.17251639068126678f * d * f83; - g117 += 0.06681530922651291f * d * f85; - g118 += -0.13363061845302582f * d * f82; - g119 += -0.06681530922651291f * d * f81; - g120 += -0.03857583925127983f * d * f80; - g120 += -0.14940357208251953f * d * f82; - g121 += -0.1767766922712326f * d * f81; - g122 += -0.20412415266036987f * d * f80; - } - { const float d = D(ii, k, 268); - g115 += 0.14433756470680237f * d * f80; - g116 += 0.18898223340511322f * d * f81; - g117 += 0.21128855645656586f * d * f82; - g118 += 0.2182178944349289f * d * f83; - g119 += 0.21128855645656586f * d * f84; - g120 += 0.18898223340511322f * d * f85; - g121 += 0.14433756470680237f * d * f86; - } - { const float d = D(ii, k, 269); - g114 += 0.20412415266036987f * d * f80; - g115 += 0.1767766922712326f * d * f81; - g116 += -0.03857583925127983f * d * f80; - g116 += 0.14940357208251953f * d * f82; - g117 += -0.06681530922651291f * d * f81; - g118 += -0.13363061845302582f * d * f84; - g119 += 0.17251639068126678f * d * f83; - g119 += -0.06681530922651291f * d * f85; - g120 += 0.14940357208251953f * d * f84; - g120 += -0.03857583925127983f * d * f86; - g121 += 0.1767766922712326f * d * f85; - g122 += 0.20412415266036987f * d * f86; - } - { const float d = D(ii, k, 300); - g123 += 0.20412415266036987f * d * f58; - g124 += 0.1767766922712326f * d * f57; - g125 += 0.14940357208251953f * d * f56; - g125 += 0.03857583925127983f * d * f58; - g126 += 0.17251639068126678f * d * f55; - g126 += 0.06681530922651291f * d * f57; - g127 += -0.13363061845302582f * d * f54; - g128 += -0.06681530922651291f * d * f53; - g129 += -0.03857583925127983f * d * f52; - g129 += -0.14940357208251953f * d * f54; - g130 += -0.1767766922712326f * d * f53; - g131 += -0.20412415266036987f * d * f52; - } - { const float d = D(ii, k, 301); - g124 += 0.14433756470680237f * d * f52; - g125 += 0.18898223340511322f * d * f53; - g126 += 0.21128855645656586f * d * f54; - g127 += 0.2182178944349289f * d * f55; - g128 += 0.21128855645656586f * d * f56; - g129 += 0.18898223340511322f * d * f57; - g130 += 0.14433756470680237f * d * f58; - } - { const float d = D(ii, k, 302); - g123 += 0.20412415266036987f * d * f52; - g124 += 0.1767766922712326f * d * f53; - g125 += -0.03857583925127983f * d * f52; - g125 += 0.14940357208251953f * d * f54; - g126 += -0.06681530922651291f * d * f53; - g127 += -0.13363061845302582f * d * f56; - g128 += 0.17251639068126678f * d * f55; - g128 += -0.06681530922651291f * d * f57; - g129 += 0.14940357208251953f * d * f56; - g129 += -0.03857583925127983f * d * f58; - g130 += 0.1767766922712326f * d * f57; - g131 += 0.20412415266036987f * d * f58; - } - { const float d = D(ii, k, 303); - g123 += 0.20412415266036987f * d * f65; - g124 += 0.1767766922712326f * d * f64; - g125 += 0.14940357208251953f * d * f63; - g125 += 0.03857583925127983f * d * f65; - g126 += 0.17251639068126678f * d * f62; - g126 += 0.06681530922651291f * d * f64; - g127 += -0.13363061845302582f * d * f61; - g128 += -0.06681530922651291f * d * f60; - g129 += -0.03857583925127983f * d * f59; - g129 += -0.14940357208251953f * d * f61; - g130 += -0.1767766922712326f * d * f60; - g131 += -0.20412415266036987f * d * f59; - } - { const float d = D(ii, k, 304); - g124 += 0.14433756470680237f * d * f59; - g125 += 0.18898223340511322f * d * f60; - g126 += 0.21128855645656586f * d * f61; - g127 += 0.2182178944349289f * d * f62; - g128 += 0.21128855645656586f * d * f63; - g129 += 0.18898223340511322f * d * f64; - g130 += 0.14433756470680237f * d * f65; - } - { const float d = D(ii, k, 305); - g123 += 0.20412415266036987f * d * f59; - g124 += 0.1767766922712326f * d * f60; - g125 += -0.03857583925127983f * d * f59; - g125 += 0.14940357208251953f * d * f61; - g126 += -0.06681530922651291f * d * f60; - g127 += -0.13363061845302582f * d * f63; - g128 += 0.17251639068126678f * d * f62; - g128 += -0.06681530922651291f * d * f64; - g129 += 0.14940357208251953f * d * f63; - g129 += -0.03857583925127983f * d * f65; - g130 += 0.1767766922712326f * d * f64; - g131 += 0.20412415266036987f * d * f65; - } - { const float d = D(ii, k, 306); - g123 += 0.20412415266036987f * d * f72; - g124 += 0.1767766922712326f * d * f71; - g125 += 0.14940357208251953f * d * f70; - g125 += 0.03857583925127983f * d * f72; - g126 += 0.17251639068126678f * d * f69; - g126 += 0.06681530922651291f * d * f71; - g127 += -0.13363061845302582f * d * f68; - g128 += -0.06681530922651291f * d * f67; - g129 += -0.03857583925127983f * d * f66; - g129 += -0.14940357208251953f * d * f68; - g130 += -0.1767766922712326f * d * f67; - g131 += -0.20412415266036987f * d * f66; - } - { const float d = D(ii, k, 307); - g124 += 0.14433756470680237f * d * f66; - g125 += 0.18898223340511322f * d * f67; - g126 += 0.21128855645656586f * d * f68; - g127 += 0.2182178944349289f * d * f69; - g128 += 0.21128855645656586f * d * f70; - g129 += 0.18898223340511322f * d * f71; - g130 += 0.14433756470680237f * d * f72; - } - { const float d = D(ii, k, 308); - g123 += 0.20412415266036987f * d * f66; - g124 += 0.1767766922712326f * d * f67; - g125 += -0.03857583925127983f * d * f66; - g125 += 0.14940357208251953f * d * f68; - g126 += -0.06681530922651291f * d * f67; - g127 += -0.13363061845302582f * d * f70; - g128 += 0.17251639068126678f * d * f69; - g128 += -0.06681530922651291f * d * f71; - g129 += 0.14940357208251953f * d * f70; - g129 += -0.03857583925127983f * d * f72; - g130 += 0.1767766922712326f * d * f71; - g131 += 0.20412415266036987f * d * f72; - } - { const float d = D(ii, k, 309); - g123 += 0.20412415266036987f * d * f79; - g124 += 0.1767766922712326f * d * f78; - g125 += 0.14940357208251953f * d * f77; - g125 += 0.03857583925127983f * d * f79; - g126 += 0.17251639068126678f * d * f76; - g126 += 0.06681530922651291f * d * f78; - g127 += -0.13363061845302582f * d * f75; - g128 += -0.06681530922651291f * d * f74; - g129 += -0.03857583925127983f * d * f73; - g129 += -0.14940357208251953f * d * f75; - g130 += -0.1767766922712326f * d * f74; - g131 += -0.20412415266036987f * d * f73; - } - { const float d = D(ii, k, 310); - g124 += 0.14433756470680237f * d * f73; - g125 += 0.18898223340511322f * d * f74; - g126 += 0.21128855645656586f * d * f75; - g127 += 0.2182178944349289f * d * f76; - g128 += 0.21128855645656586f * d * f77; - g129 += 0.18898223340511322f * d * f78; - g130 += 0.14433756470680237f * d * f79; - } - { const float d = D(ii, k, 311); - g123 += 0.20412415266036987f * d * f73; - g124 += 0.1767766922712326f * d * f74; - g125 += -0.03857583925127983f * d * f73; - g125 += 0.14940357208251953f * d * f75; - g126 += -0.06681530922651291f * d * f74; - g127 += -0.13363061845302582f * d * f77; - g128 += 0.17251639068126678f * d * f76; - g128 += -0.06681530922651291f * d * f78; - g129 += 0.14940357208251953f * d * f77; - g129 += -0.03857583925127983f * d * f79; - g130 += 0.1767766922712326f * d * f78; - g131 += 0.20412415266036987f * d * f79; - } - { const float d = D(ii, k, 312); - g123 += 0.20412415266036987f * d * f86; - g124 += 0.1767766922712326f * d * f85; - g125 += 0.14940357208251953f * d * f84; - g125 += 0.03857583925127983f * d * f86; - g126 += 0.17251639068126678f * d * f83; - g126 += 0.06681530922651291f * d * f85; - g127 += -0.13363061845302582f * d * f82; - g128 += -0.06681530922651291f * d * f81; - g129 += -0.03857583925127983f * d * f80; - g129 += -0.14940357208251953f * d * f82; - g130 += -0.1767766922712326f * d * f81; - g131 += -0.20412415266036987f * d * f80; - } - { const float d = D(ii, k, 313); - g124 += 0.14433756470680237f * d * f80; - g125 += 0.18898223340511322f * d * f81; - g126 += 0.21128855645656586f * d * f82; - g127 += 0.2182178944349289f * d * f83; - g128 += 0.21128855645656586f * d * f84; - g129 += 0.18898223340511322f * d * f85; - g130 += 0.14433756470680237f * d * f86; - } - { const float d = D(ii, k, 314); - g123 += 0.20412415266036987f * d * f80; - g124 += 0.1767766922712326f * d * f81; - g125 += -0.03857583925127983f * d * f80; - g125 += 0.14940357208251953f * d * f82; - g126 += -0.06681530922651291f * d * f81; - g127 += -0.13363061845302582f * d * f84; - g128 += 0.17251639068126678f * d * f83; - g128 += -0.06681530922651291f * d * f85; - g129 += 0.14940357208251953f * d * f84; - g129 += -0.03857583925127983f * d * f86; - g130 += 0.1767766922712326f * d * f85; - g131 += 0.20412415266036987f * d * f86; - } - { const float d = D(ii, k, 363); - g132 += 0.20412415266036987f * d * f58; - g133 += 0.1767766922712326f * d * f57; - g134 += 0.14940357208251953f * d * f56; - g134 += 0.03857583925127983f * d * f58; - g135 += 0.17251639068126678f * d * f55; - g135 += 0.06681530922651291f * d * f57; - g136 += -0.13363061845302582f * d * f54; - g137 += -0.06681530922651291f * d * f53; - g138 += -0.03857583925127983f * d * f52; - g138 += -0.14940357208251953f * d * f54; - g139 += -0.1767766922712326f * d * f53; - g140 += -0.20412415266036987f * d * f52; - } - { const float d = D(ii, k, 364); - g133 += 0.14433756470680237f * d * f52; - g134 += 0.18898223340511322f * d * f53; - g135 += 0.21128855645656586f * d * f54; - g136 += 0.2182178944349289f * d * f55; - g137 += 0.21128855645656586f * d * f56; - g138 += 0.18898223340511322f * d * f57; - g139 += 0.14433756470680237f * d * f58; - } - { const float d = D(ii, k, 365); - g132 += 0.20412415266036987f * d * f52; - g133 += 0.1767766922712326f * d * f53; - g134 += -0.03857583925127983f * d * f52; - g134 += 0.14940357208251953f * d * f54; - g135 += -0.06681530922651291f * d * f53; - g136 += -0.13363061845302582f * d * f56; - g137 += 0.17251639068126678f * d * f55; - g137 += -0.06681530922651291f * d * f57; - g138 += 0.14940357208251953f * d * f56; - g138 += -0.03857583925127983f * d * f58; - g139 += 0.1767766922712326f * d * f57; - g140 += 0.20412415266036987f * d * f58; - } - { const float d = D(ii, k, 366); - g132 += 0.20412415266036987f * d * f65; - g133 += 0.1767766922712326f * d * f64; - g134 += 0.14940357208251953f * d * f63; - g134 += 0.03857583925127983f * d * f65; - g135 += 0.17251639068126678f * d * f62; - g135 += 0.06681530922651291f * d * f64; - g136 += -0.13363061845302582f * d * f61; - g137 += -0.06681530922651291f * d * f60; - g138 += -0.03857583925127983f * d * f59; - g138 += -0.14940357208251953f * d * f61; - g139 += -0.1767766922712326f * d * f60; - g140 += -0.20412415266036987f * d * f59; - } - { const float d = D(ii, k, 367); - g133 += 0.14433756470680237f * d * f59; - g134 += 0.18898223340511322f * d * f60; - g135 += 0.21128855645656586f * d * f61; - g136 += 0.2182178944349289f * d * f62; - g137 += 0.21128855645656586f * d * f63; - g138 += 0.18898223340511322f * d * f64; - g139 += 0.14433756470680237f * d * f65; - } - { const float d = D(ii, k, 368); - g132 += 0.20412415266036987f * d * f59; - g133 += 0.1767766922712326f * d * f60; - g134 += -0.03857583925127983f * d * f59; - g134 += 0.14940357208251953f * d * f61; - g135 += -0.06681530922651291f * d * f60; - g136 += -0.13363061845302582f * d * f63; - g137 += 0.17251639068126678f * d * f62; - g137 += -0.06681530922651291f * d * f64; - g138 += 0.14940357208251953f * d * f63; - g138 += -0.03857583925127983f * d * f65; - g139 += 0.1767766922712326f * d * f64; - g140 += 0.20412415266036987f * d * f65; - } - { const float d = D(ii, k, 369); - g132 += 0.20412415266036987f * d * f72; - g133 += 0.1767766922712326f * d * f71; - g134 += 0.14940357208251953f * d * f70; - g134 += 0.03857583925127983f * d * f72; - g135 += 0.17251639068126678f * d * f69; - g135 += 0.06681530922651291f * d * f71; - g136 += -0.13363061845302582f * d * f68; - g137 += -0.06681530922651291f * d * f67; - g138 += -0.03857583925127983f * d * f66; - g138 += -0.14940357208251953f * d * f68; - g139 += -0.1767766922712326f * d * f67; - g140 += -0.20412415266036987f * d * f66; - } - { const float d = D(ii, k, 370); - g133 += 0.14433756470680237f * d * f66; - g134 += 0.18898223340511322f * d * f67; - g135 += 0.21128855645656586f * d * f68; - g136 += 0.2182178944349289f * d * f69; - g137 += 0.21128855645656586f * d * f70; - g138 += 0.18898223340511322f * d * f71; - g139 += 0.14433756470680237f * d * f72; - } - { const float d = D(ii, k, 371); - g132 += 0.20412415266036987f * d * f66; - g133 += 0.1767766922712326f * d * f67; - g134 += -0.03857583925127983f * d * f66; - g134 += 0.14940357208251953f * d * f68; - g135 += -0.06681530922651291f * d * f67; - g136 += -0.13363061845302582f * d * f70; - g137 += 0.17251639068126678f * d * f69; - g137 += -0.06681530922651291f * d * f71; - g138 += 0.14940357208251953f * d * f70; - g138 += -0.03857583925127983f * d * f72; - g139 += 0.1767766922712326f * d * f71; - g140 += 0.20412415266036987f * d * f72; - } - { const float d = D(ii, k, 372); - g132 += 0.20412415266036987f * d * f79; - g133 += 0.1767766922712326f * d * f78; - g134 += 0.14940357208251953f * d * f77; - g134 += 0.03857583925127983f * d * f79; - g135 += 0.17251639068126678f * d * f76; - g135 += 0.06681530922651291f * d * f78; - g136 += -0.13363061845302582f * d * f75; - g137 += -0.06681530922651291f * d * f74; - g138 += -0.03857583925127983f * d * f73; - g138 += -0.14940357208251953f * d * f75; - g139 += -0.1767766922712326f * d * f74; - g140 += -0.20412415266036987f * d * f73; - } - { const float d = D(ii, k, 373); - g133 += 0.14433756470680237f * d * f73; - g134 += 0.18898223340511322f * d * f74; - g135 += 0.21128855645656586f * d * f75; - g136 += 0.2182178944349289f * d * f76; - g137 += 0.21128855645656586f * d * f77; - g138 += 0.18898223340511322f * d * f78; - g139 += 0.14433756470680237f * d * f79; - } - { const float d = D(ii, k, 374); - g132 += 0.20412415266036987f * d * f73; - g133 += 0.1767766922712326f * d * f74; - g134 += -0.03857583925127983f * d * f73; - g134 += 0.14940357208251953f * d * f75; - g135 += -0.06681530922651291f * d * f74; - g136 += -0.13363061845302582f * d * f77; - g137 += 0.17251639068126678f * d * f76; - g137 += -0.06681530922651291f * d * f78; - g138 += 0.14940357208251953f * d * f77; - g138 += -0.03857583925127983f * d * f79; - g139 += 0.1767766922712326f * d * f78; - g140 += 0.20412415266036987f * d * f79; - } - { const float d = D(ii, k, 375); - g132 += 0.20412415266036987f * d * f86; - g133 += 0.1767766922712326f * d * f85; - g134 += 0.14940357208251953f * d * f84; - g134 += 0.03857583925127983f * d * f86; - g135 += 0.17251639068126678f * d * f83; - g135 += 0.06681530922651291f * d * f85; - g136 += -0.13363061845302582f * d * f82; - g137 += -0.06681530922651291f * d * f81; - g138 += -0.03857583925127983f * d * f80; - g138 += -0.14940357208251953f * d * f82; - g139 += -0.1767766922712326f * d * f81; - g140 += -0.20412415266036987f * d * f80; - } - { const float d = D(ii, k, 376); - g133 += 0.14433756470680237f * d * f80; - g134 += 0.18898223340511322f * d * f81; - g135 += 0.21128855645656586f * d * f82; - g136 += 0.2182178944349289f * d * f83; - g137 += 0.21128855645656586f * d * f84; - g138 += 0.18898223340511322f * d * f85; - g139 += 0.14433756470680237f * d * f86; - } - { const float d = D(ii, k, 377); - g132 += 0.20412415266036987f * d * f80; - g133 += 0.1767766922712326f * d * f81; - g134 += -0.03857583925127983f * d * f80; - g134 += 0.14940357208251953f * d * f82; - g135 += -0.06681530922651291f * d * f81; - g136 += -0.13363061845302582f * d * f84; - g137 += 0.17251639068126678f * d * f83; - g137 += -0.06681530922651291f * d * f85; - g138 += 0.14940357208251953f * d * f84; - g138 += -0.03857583925127983f * d * f86; - g139 += 0.1767766922712326f * d * f85; - g140 += 0.20412415266036987f * d * f86; - } - dF(ii, k, 96) = g96; - dF(ii, k, 97) = g97; - dF(ii, k, 98) = g98; - dF(ii, k, 99) = g99; - dF(ii, k, 100) = g100; - dF(ii, k, 101) = g101; - dF(ii, k, 102) = g102; - dF(ii, k, 103) = g103; - dF(ii, k, 104) = g104; - dF(ii, k, 105) = g105; - dF(ii, k, 106) = g106; - dF(ii, k, 107) = g107; - dF(ii, k, 108) = g108; - dF(ii, k, 109) = g109; - dF(ii, k, 110) = g110; - dF(ii, k, 111) = g111; - dF(ii, k, 112) = g112; - dF(ii, k, 113) = g113; - dF(ii, k, 114) = g114; - dF(ii, k, 115) = g115; - dF(ii, k, 116) = g116; - dF(ii, k, 117) = g117; - dF(ii, k, 118) = g118; - dF(ii, k, 119) = g119; - dF(ii, k, 120) = g120; - dF(ii, k, 121) = g121; - dF(ii, k, 122) = g122; - dF(ii, k, 123) = g123; - dF(ii, k, 124) = g124; - dF(ii, k, 125) = g125; - dF(ii, k, 126) = g126; - dF(ii, k, 127) = g127; - dF(ii, k, 128) = g128; - dF(ii, k, 129) = g129; - dF(ii, k, 130) = g130; - dF(ii, k, 131) = g131; - dF(ii, k, 132) = g132; - dF(ii, k, 133) = g133; - dF(ii, k, 134) = g134; - dF(ii, k, 135) = g135; - dF(ii, k, 136) = g136; - dF(ii, k, 137) = g137; - dF(ii, k, 138) = g138; - dF(ii, k, 139) = g139; - dF(ii, k, 140) = g140; - } -} - -constexpr int nt_BB = 264; -constexpr int tab_BB[264][3] = {{0,0,0}, {1,1,1}, {2,2,1}, {3,3,1}, {7,7,2}, {8,8,2}, {9,9,2}, {10,10,2}, {11,11,2}, {17,17,3}, {18,18,3}, {19,19,3}, {20,20,3}, {21,21,3}, {22,22,3}, {23,23,3}, {1,0,4}, {2,0,5}, {3,0,6}, {7,3,7}, {8,2,7}, {9,1,7}, {11,1,7}, {8,1,8}, {9,2,8}, {10,3,8}, {7,1,9}, {9,3,9}, {10,2,9}, {11,3,9}, {17,11,10}, {18,10,10}, {19,9,10}, {19,11,10}, {20,8,10}, {21,7,10}, {22,8,10}, {23,7,10}, {18,7,11}, {19,8,11}, {20,9,11}, {21,10,11}, {22,11,11}, {17,7,12}, {18,8,12}, {19,7,12}, {20,10,12}, {21,9,12}, {21,11,12}, {22,10,12}, {23,11,12}, {7,0,13}, {8,0,14}, {9,0,15}, {10,0,16}, {11,0,17}, {3,1,18}, {2,1,19}, {1,1,20}, {2,2,20}, {3,3,20}, {3,2,21}, {1,1,22}, {3,3,22}, {8,1,23}, {10,3,23}, {11,2,23}, {7,1,24}, {9,3,24}, {10,2,24}, {11,3,24}, {8,3,25}, {10,1,25}, {7,3,26}, {8,2,26}, {9,1,26}, {11,1,26}, {7,2,27}, {8,3,27}, {10,1,27}, {9,7,28}, {10,8,28}, {10,7,29}, {9,8,29}, {11,8,29}, {7,7,30}, {8,8,30}, {9,9,30}, {10,10,30}, {11,11,30}, {8,7,31}, {10,9,31}, {11,10,31}, {8,8,32}, {11,9,32}, {10,10,32}, {17,3,33}, {18,2,33}, {19,3,33}, {21,1,33}, {23,1,33}, {18,3,34}, {19,2,34}, {20,1,34}, {22,1,34}, {19,1,35}, {20,2,35}, {21,3,35}, {18,1,36}, {20,3,36}, {21,2,36}, {22,3,36}, {17,1,37}, {19,1,37}, {21,3,37}, {22,2,37}, {23,3,37}, {17,8,38}, {19,8,38}, {20,11,38}, {21,10,38}, {22,9,38}, {23,10,38}, {17,7,39}, {19,7,39}, {20,10,39}, {21,9,39}, {21,11,39}, {23,11,39}, {18,11,40}, {19,10,40}, {21,8,40}, {22,7,40}, {17,11,41}, {19,9,41}, {19,11,41}, {20,8,41}, {21,7,41}, {23,7,41}, {17,10,42}, {18,9,42}, {19,10,42}, {20,7,42}, {21,8,42}, {23,8,42}, {21,17,43}, {20,18,43}, {21,19,43}, {23,19,43}, {22,17,44}, {21,18,44}, {23,18,44}, {20,19,44}, {22,19,44}, {17,17,45}, {19,19,45}, {20,20,45}, {21,21,45}, {23,23,45}, {18,17,46}, {19,18,46}, {21,20,46}, {22,21,46}, {23,22,46}, {19,17,47}, {19,19,47}, {22,20,47}, {21,21,47}, {23,21,47}, {17,0,48}, {18,0,49}, {19,0,50}, {20,0,51}, {21,0,52}, {22,0,53}, {23,0,54}, {7,3,55}, {11,1,55}, {7,2,56}, {8,3,56}, {10,1,56}, {7,3,57}, {8,2,57}, {9,1,57}, {11,1,57}, {8,1,58}, {9,2,58}, {10,3,58}, {7,1,59}, {9,3,59}, {10,2,59}, {11,3,59}, {8,1,60}, {10,3,60}, {11,2,60}, {7,1,61}, {11,3,61}, {18,1,62}, {22,3,62}, {23,2,62}, {17,1,63}, {19,1,63}, {21,3,63}, {22,2,63}, {23,3,63}, {18,1,64}, {20,3,64}, {21,2,64}, {22,3,64}, {19,3,65}, {21,1,65}, {18,3,66}, {19,2,66}, {20,1,66}, {22,1,66}, {17,3,67}, {18,2,67}, {19,3,67}, {21,1,67}, {23,1,67}, {17,2,68}, {18,3,68}, {22,1,68}, {17,9,69}, {18,10,69}, {19,11,69}, {21,7,69}, {22,8,69}, {17,10,70}, {19,10,70}, {20,7,70}, {21,8,70}, {23,8,70}, {17,11,71}, {18,10,71}, {19,9,71}, {19,11,71}, {20,8,71}, {21,7,71}, {22,8,71}, {23,7,71}, {18,7,72}, {19,8,72}, {20,9,72}, {21,10,72}, {22,11,72}, {17,7,73}, {18,8,73}, {19,7,73}, {20,10,73}, {21,9,73}, {21,11,73}, {22,10,73}, {23,11,73}, {17,8,74}, {19,8,74}, {20,11,74}, {21,10,74}, {23,10,74}, {18,8,75}, {19,7,75}, {21,11,75}, {22,10,75}, {23,9,75}}; -constexpr double cg_BB[264] = {1.0, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 1.0, 1.0, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, -0.3872983455657959, 0.3872983455657959, 0.4472135901451111, 0.3872983455657959, 0.3872983455657959, -0.22360679507255554, 0.3872983455657959, 0.3872983455657959, 0.26726123690605164, 0.2182178944349289, 0.23904572427272797, 0.0690065547823906, -0.16903084516525269, -0.0690065547823906, -0.2182178944349289, -0.26726123690605164, 0.2182178944349289, 0.2760262191295624, 0.29277002811431885, 0.2760262191295624, 0.2182178944349289, 0.26726123690605164, 0.2182178944349289, -0.0690065547823906, -0.16903084516525269, 0.23904572427272797, -0.0690065547823906, 0.2182178944349289, 0.26726123690605164, 1.0, 1.0, 1.0, 1.0, 1.0, 1.29099440574646, 1.29099440574646, -0.3726779818534851, 0.7453559637069702, -0.3726779818534851, 1.29099440574646, -0.64549720287323, 0.64549720287323, -0.40824830532073975, 0.40824830532073975, -0.8164966106414795, 0.40824830532073975, 0.7071067690849304, -0.40824830532073975, 0.40824830532073975, -0.7071067690849304, 0.7071067690849304, -0.40824830532073975, 0.40824830532073975, -0.7071067690849304, 0.40824830532073975, 0.8164966106414795, -0.40824830532073975, -0.40824830532073975, -0.8944271802902222, 0.7745966911315918, 0.7745966911315918, 0.4472135901451111, -0.7745966911315918, -0.4472135901451111, 0.22360679507255554, 0.4472135901451111, 0.22360679507255554, -0.4472135901451111, 0.7745966911315918, 0.4472135901451111, 0.7745966911315918, -0.3872983455657959, -0.8944271802902222, 0.3872983455657959, 0.44543540477752686, 0.36369648575782776, -0.11501092463731766, -0.11501092463731766, -0.44543540477752686, 0.36369648575782776, 0.46004369854927063, -0.28171807527542114, -0.36369648575782776, 0.39840954542160034, 0.48795002698898315, 0.39840954542160034, 0.36369648575782776, -0.28171807527542114, 0.46004369854927063, 0.36369648575782776, 0.44543540477752686, 0.11501092463731766, -0.11501092463731766, 0.36369648575782776, 0.44543540477752686, -0.4225771129131317, -0.32732683420181274, -0.26726123690605164, 0.32732683420181274, -0.5976142883300781, -0.4225771129131317, 0.4225771129131317, 0.32732683420181274, 0.5345224738121033, -0.37796446681022644, 0.32732683420181274, 0.4225771129131317, -0.5976142883300781, -0.37796446681022644, 0.37796446681022644, 0.5976142883300781, -0.4225771129131317, 0.37796446681022644, 0.32732683420181274, -0.5345224738121033, -0.32732683420181274, 0.4225771129131317, 0.4225771129131317, 0.5976142883300781, -0.32732683420181274, 0.26726123690605164, -0.32732683420181274, -0.4225771129131317, -0.3571428656578064, -0.7142857313156128, 0.5532833337783813, 0.3571428656578064, 0.5646924376487732, 0.4374088943004608, -0.5646924376487732, 0.22587697207927704, -0.4374088943004608, -0.3992978632450104, 0.2395787090063095, 0.31943827867507935, 0.2395787090063095, -0.3992978632450104, 0.5646924376487732, 0.4374088943004608, 0.22587697207927704, 0.4374088943004608, 0.5646924376487732, -0.3571428656578064, -0.2766416668891907, -0.7142857313156128, 0.2766416668891907, -0.3571428656578064, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.6236095428466797, 0.6236095428466797, 0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.16101530194282532, 0.6440612077713013, 0.5577733516693115, 0.16101530194282532, -0.3944053053855896, 0.6831300258636475, -0.3944053053855896, -0.16101530194282532, 0.5577733516693115, 0.6440612077713013, -0.16101530194282532, -0.5091750621795654, 0.5091750621795654, 0.5091750621795654, -0.6236095428466797, 0.6236095428466797, -0.3535533845424652, 0.3535533845424652, -0.8660253882408142, 0.3535533845424652, -0.4564354717731476, 0.4564354717731476, -0.5773502588272095, 0.3535533845424652, 0.4564354717731476, 0.7071067690849304, -0.28867512941360474, 0.4564354717731476, -0.7071067690849304, 0.7071067690849304, -0.4564354717731476, 0.28867512941360474, -0.7071067690849304, 0.4564354717731476, -0.3535533845424652, 0.5773502588272095, -0.4564354717731476, -0.4564354717731476, 0.3535533845424652, 0.8660253882408142, -0.3535533845424652, -0.3535533845424652, -0.55901700258255, 0.3952847123146057, -0.25, -0.25, 0.3952847123146057, 0.3952847123146057, 0.3061862289905548, -0.5, 0.3061862289905548, -0.3952847123146057, -0.25, 0.3061862289905548, 0.3354102075099945, -0.3872983455657959, 0.15811388194561005, 0.3872983455657959, -0.3061862289905548, 0.25, -0.5, 0.15811388194561005, 0.4472135901451111, 0.15811388194561005, -0.5, -0.25, 0.3061862289905548, 0.3872983455657959, 0.15811388194561005, 0.3354102075099945, 0.3872983455657959, 0.3061862289905548, -0.25, 0.3952847123146057, -0.3061862289905548, -0.5, 0.3061862289905548, 0.3952847123146057, -0.3952847123146057, 0.25, -0.25, 0.3952847123146057, -0.55901700258255}; - -template -KOKKOS_INLINE_FUNCTION void fwd_BB(const V &L, const V &R, const V &out, const int ii, const int k) -{ - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a7 = L(ii, k, 7); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a17 = L(ii, k, 17); - const float a18 = L(ii, k, 18); - const float a19 = L(ii, k, 19); - const float a20 = L(ii, k, 20); - const float a21 = L(ii, k, 21); - const float a22 = L(ii, k, 22); - const float a23 = L(ii, k, 23); - out(ii, k, 0) = 1.0f * a0 * a0; - out(ii, k, 1) = 0.3333333432674408f * a1 * a1 + 0.3333333432674408f * a2 * a2 + 0.3333333432674408f * a3 * a3; - out(ii, k, 2) = 0.20000000298023224f * a7 * a7 + 0.20000000298023224f * a8 * a8 + 0.20000000298023224f * a9 * a9 + 0.20000000298023224f * a10 * a10 + 0.20000000298023224f * a11 * a11; - out(ii, k, 3) = 0.1428571492433548f * a17 * a17 + 0.1428571492433548f * a18 * a18 + 0.1428571492433548f * a19 * a19 + 0.1428571492433548f * a20 * a20 + 0.1428571492433548f * a21 * a21 + 0.1428571492433548f * a22 * a22 + 0.1428571492433548f * a23 * a23; - out(ii, k, 4) = 1.0f * a1 * a0; - out(ii, k, 5) = 1.0f * a2 * a0; - out(ii, k, 6) = 1.0f * a3 * a0; - out(ii, k, 7) = 0.3872983455657959f * a7 * a3 + 0.3872983455657959f * a8 * a2 + -0.22360679507255554f * a9 * a1 + -0.3872983455657959f * a11 * a1; - out(ii, k, 8) = 0.3872983455657959f * a8 * a1 + 0.4472135901451111f * a9 * a2 + 0.3872983455657959f * a10 * a3; - out(ii, k, 9) = 0.3872983455657959f * a7 * a1 + -0.22360679507255554f * a9 * a3 + 0.3872983455657959f * a10 * a2 + 0.3872983455657959f * a11 * a3; - out(ii, k, 10) = 0.26726123690605164f * a17 * a11 + 0.2182178944349289f * a18 * a10 + 0.23904572427272797f * a19 * a9 + 0.0690065547823906f * a19 * a11 + -0.16903084516525269f * a20 * a8 + -0.0690065547823906f * a21 * a7 + -0.2182178944349289f * a22 * a8 + -0.26726123690605164f * a23 * a7; - out(ii, k, 11) = 0.2182178944349289f * a18 * a7 + 0.2760262191295624f * a19 * a8 + 0.29277002811431885f * a20 * a9 + 0.2760262191295624f * a21 * a10 + 0.2182178944349289f * a22 * a11; - out(ii, k, 12) = 0.26726123690605164f * a17 * a7 + 0.2182178944349289f * a18 * a8 + -0.0690065547823906f * a19 * a7 + -0.16903084516525269f * a20 * a10 + 0.23904572427272797f * a21 * a9 + -0.0690065547823906f * a21 * a11 + 0.2182178944349289f * a22 * a10 + 0.26726123690605164f * a23 * a11; - out(ii, k, 13) = 1.0f * a7 * a0; - out(ii, k, 14) = 1.0f * a8 * a0; - out(ii, k, 15) = 1.0f * a9 * a0; - out(ii, k, 16) = 1.0f * a10 * a0; - out(ii, k, 17) = 1.0f * a11 * a0; - out(ii, k, 18) = 1.29099440574646f * a3 * a1; - out(ii, k, 19) = 1.29099440574646f * a2 * a1; - out(ii, k, 20) = -0.3726779818534851f * a1 * a1 + 0.7453559637069702f * a2 * a2 + -0.3726779818534851f * a3 * a3; - out(ii, k, 21) = 1.29099440574646f * a3 * a2; - out(ii, k, 22) = -0.64549720287323f * a1 * a1 + 0.64549720287323f * a3 * a3; - out(ii, k, 23) = -0.40824830532073975f * a8 * a1 + 0.40824830532073975f * a10 * a3 + -0.8164966106414795f * a11 * a2; - out(ii, k, 24) = 0.40824830532073975f * a7 * a1 + 0.7071067690849304f * a9 * a3 + -0.40824830532073975f * a10 * a2 + 0.40824830532073975f * a11 * a3; - out(ii, k, 25) = -0.7071067690849304f * a8 * a3 + 0.7071067690849304f * a10 * a1; - out(ii, k, 26) = -0.40824830532073975f * a7 * a3 + 0.40824830532073975f * a8 * a2 + -0.7071067690849304f * a9 * a1 + 0.40824830532073975f * a11 * a1; - out(ii, k, 27) = 0.8164966106414795f * a7 * a2 + -0.40824830532073975f * a8 * a3 + -0.40824830532073975f * a10 * a1; - out(ii, k, 28) = -0.8944271802902222f * a9 * a7 + 0.7745966911315918f * a10 * a8; - out(ii, k, 29) = 0.7745966911315918f * a10 * a7 + 0.4472135901451111f * a9 * a8 + -0.7745966911315918f * a11 * a8; - out(ii, k, 30) = -0.4472135901451111f * a7 * a7 + 0.22360679507255554f * a8 * a8 + 0.4472135901451111f * a9 * a9 + 0.22360679507255554f * a10 * a10 + -0.4472135901451111f * a11 * a11; - out(ii, k, 31) = 0.7745966911315918f * a8 * a7 + 0.4472135901451111f * a10 * a9 + 0.7745966911315918f * a11 * a10; - out(ii, k, 32) = -0.3872983455657959f * a8 * a8 + -0.8944271802902222f * a11 * a9 + 0.3872983455657959f * a10 * a10; - out(ii, k, 33) = 0.44543540477752686f * a17 * a3 + 0.36369648575782776f * a18 * a2 + -0.11501092463731766f * a19 * a3 + -0.11501092463731766f * a21 * a1 + -0.44543540477752686f * a23 * a1; - out(ii, k, 34) = 0.36369648575782776f * a18 * a3 + 0.46004369854927063f * a19 * a2 + -0.28171807527542114f * a20 * a1 + -0.36369648575782776f * a22 * a1; - out(ii, k, 35) = 0.39840954542160034f * a19 * a1 + 0.48795002698898315f * a20 * a2 + 0.39840954542160034f * a21 * a3; - out(ii, k, 36) = 0.36369648575782776f * a18 * a1 + -0.28171807527542114f * a20 * a3 + 0.46004369854927063f * a21 * a2 + 0.36369648575782776f * a22 * a3; - out(ii, k, 37) = 0.44543540477752686f * a17 * a1 + 0.11501092463731766f * a19 * a1 + -0.11501092463731766f * a21 * a3 + 0.36369648575782776f * a22 * a2 + 0.44543540477752686f * a23 * a3; - out(ii, k, 38) = -0.4225771129131317f * a17 * a8 + -0.32732683420181274f * a19 * a8 + -0.26726123690605164f * a20 * a11 + 0.32732683420181274f * a21 * a10 + -0.5976142883300781f * a22 * a9 + -0.4225771129131317f * a23 * a10; - out(ii, k, 39) = 0.4225771129131317f * a17 * a7 + 0.32732683420181274f * a19 * a7 + 0.5345224738121033f * a20 * a10 + -0.37796446681022644f * a21 * a9 + 0.32732683420181274f * a21 * a11 + 0.4225771129131317f * a23 * a11; - out(ii, k, 40) = -0.5976142883300781f * a18 * a11 + -0.37796446681022644f * a19 * a10 + 0.37796446681022644f * a21 * a8 + 0.5976142883300781f * a22 * a7; - out(ii, k, 41) = -0.4225771129131317f * a17 * a11 + 0.37796446681022644f * a19 * a9 + 0.32732683420181274f * a19 * a11 + -0.5345224738121033f * a20 * a8 + -0.32732683420181274f * a21 * a7 + 0.4225771129131317f * a23 * a7; - out(ii, k, 42) = 0.4225771129131317f * a17 * a10 + 0.5976142883300781f * a18 * a9 + -0.32732683420181274f * a19 * a10 + 0.26726123690605164f * a20 * a7 + -0.32732683420181274f * a21 * a8 + -0.4225771129131317f * a23 * a8; - out(ii, k, 43) = -0.3571428656578064f * a21 * a17 + -0.7142857313156128f * a20 * a18 + 0.5532833337783813f * a21 * a19 + 0.3571428656578064f * a23 * a19; - out(ii, k, 44) = 0.5646924376487732f * a22 * a17 + 0.4374088943004608f * a21 * a18 + -0.5646924376487732f * a23 * a18 + 0.22587697207927704f * a20 * a19 + -0.4374088943004608f * a22 * a19; - out(ii, k, 45) = -0.3992978632450104f * a17 * a17 + 0.2395787090063095f * a19 * a19 + 0.31943827867507935f * a20 * a20 + 0.2395787090063095f * a21 * a21 + -0.3992978632450104f * a23 * a23; - out(ii, k, 46) = 0.5646924376487732f * a18 * a17 + 0.4374088943004608f * a19 * a18 + 0.22587697207927704f * a21 * a20 + 0.4374088943004608f * a22 * a21 + 0.5646924376487732f * a23 * a22; - out(ii, k, 47) = -0.3571428656578064f * a19 * a17 + -0.2766416668891907f * a19 * a19 + -0.7142857313156128f * a22 * a20 + 0.2766416668891907f * a21 * a21 + -0.3571428656578064f * a23 * a21; - out(ii, k, 48) = 1.0f * a17 * a0; - out(ii, k, 49) = 1.0f * a18 * a0; - out(ii, k, 50) = 1.0f * a19 * a0; - out(ii, k, 51) = 1.0f * a20 * a0; - out(ii, k, 52) = 1.0f * a21 * a0; - out(ii, k, 53) = 1.0f * a22 * a0; - out(ii, k, 54) = 1.0f * a23 * a0; - out(ii, k, 55) = 0.6236095428466797f * a7 * a3 + 0.6236095428466797f * a11 * a1; - out(ii, k, 56) = 0.5091750621795654f * a7 * a2 + 0.5091750621795654f * a8 * a3 + 0.5091750621795654f * a10 * a1; - out(ii, k, 57) = -0.16101530194282532f * a7 * a3 + 0.6440612077713013f * a8 * a2 + 0.5577733516693115f * a9 * a1 + 0.16101530194282532f * a11 * a1; - out(ii, k, 58) = -0.3944053053855896f * a8 * a1 + 0.6831300258636475f * a9 * a2 + -0.3944053053855896f * a10 * a3; - out(ii, k, 59) = -0.16101530194282532f * a7 * a1 + 0.5577733516693115f * a9 * a3 + 0.6440612077713013f * a10 * a2 + -0.16101530194282532f * a11 * a3; - out(ii, k, 60) = -0.5091750621795654f * a8 * a1 + 0.5091750621795654f * a10 * a3 + 0.5091750621795654f * a11 * a2; - out(ii, k, 61) = -0.6236095428466797f * a7 * a1 + 0.6236095428466797f * a11 * a3; - out(ii, k, 62) = -0.3535533845424652f * a18 * a1 + 0.3535533845424652f * a22 * a3 + -0.8660253882408142f * a23 * a2; - out(ii, k, 63) = 0.3535533845424652f * a17 * a1 + -0.4564354717731476f * a19 * a1 + 0.4564354717731476f * a21 * a3 + -0.5773502588272095f * a22 * a2 + 0.3535533845424652f * a23 * a3; - out(ii, k, 64) = 0.4564354717731476f * a18 * a1 + 0.7071067690849304f * a20 * a3 + -0.28867512941360474f * a21 * a2 + 0.4564354717731476f * a22 * a3; - out(ii, k, 65) = -0.7071067690849304f * a19 * a3 + 0.7071067690849304f * a21 * a1; - out(ii, k, 66) = -0.4564354717731476f * a18 * a3 + 0.28867512941360474f * a19 * a2 + -0.7071067690849304f * a20 * a1 + 0.4564354717731476f * a22 * a1; - out(ii, k, 67) = -0.3535533845424652f * a17 * a3 + 0.5773502588272095f * a18 * a2 + -0.4564354717731476f * a19 * a3 + -0.4564354717731476f * a21 * a1 + 0.3535533845424652f * a23 * a1; - out(ii, k, 68) = 0.8660253882408142f * a17 * a2 + -0.3535533845424652f * a18 * a3 + -0.3535533845424652f * a22 * a1; - out(ii, k, 69) = -0.55901700258255f * a17 * a9 + 0.3952847123146057f * a18 * a10 + -0.25f * a19 * a11 + -0.25f * a21 * a7 + 0.3952847123146057f * a22 * a8; - out(ii, k, 70) = 0.3952847123146057f * a17 * a10 + 0.3061862289905548f * a19 * a10 + -0.5f * a20 * a7 + 0.3061862289905548f * a21 * a8 + -0.3952847123146057f * a23 * a8; - out(ii, k, 71) = -0.25f * a17 * a11 + 0.3061862289905548f * a18 * a10 + 0.3354102075099945f * a19 * a9 + -0.3872983455657959f * a19 * a11 + 0.15811388194561005f * a20 * a8 + 0.3872983455657959f * a21 * a7 + -0.3061862289905548f * a22 * a8 + 0.25f * a23 * a7; - out(ii, k, 72) = -0.5f * a18 * a7 + 0.15811388194561005f * a19 * a8 + 0.4472135901451111f * a20 * a9 + 0.15811388194561005f * a21 * a10 + -0.5f * a22 * a11; - out(ii, k, 73) = -0.25f * a17 * a7 + 0.3061862289905548f * a18 * a8 + 0.3872983455657959f * a19 * a7 + 0.15811388194561005f * a20 * a10 + 0.3354102075099945f * a21 * a9 + 0.3872983455657959f * a21 * a11 + 0.3061862289905548f * a22 * a10 + -0.25f * a23 * a11; - out(ii, k, 74) = 0.3952847123146057f * a17 * a8 + -0.3061862289905548f * a19 * a8 + -0.5f * a20 * a11 + 0.3061862289905548f * a21 * a10 + 0.3952847123146057f * a23 * a10; - out(ii, k, 75) = -0.3952847123146057f * a18 * a8 + 0.25f * a19 * a7 + -0.25f * a21 * a11 + 0.3952847123146057f * a22 * a10 + -0.55901700258255f * a23 * a9; -} - -template -KOKKOS_INLINE_FUNCTION void rev_BB(const V &F, const V &, const V &D, const V &dF, const V &, const int ii, const int k) -{ - const float f0 = F(ii, k, 0); - const float f1 = F(ii, k, 1); - const float f2 = F(ii, k, 2); - const float f3 = F(ii, k, 3); - const float f7 = F(ii, k, 7); - const float f8 = F(ii, k, 8); - const float f9 = F(ii, k, 9); - const float f10 = F(ii, k, 10); - const float f11 = F(ii, k, 11); - const float f17 = F(ii, k, 17); - const float f18 = F(ii, k, 18); - const float f19 = F(ii, k, 19); - const float f20 = F(ii, k, 20); - const float f21 = F(ii, k, 21); - const float f22 = F(ii, k, 22); - const float f23 = F(ii, k, 23); - { - float g0 = 0.0f; - float g1 = 0.0f; - float g2 = 0.0f; - float g3 = 0.0f; - float g4 = 0.0f; - float g5 = 0.0f; - float g6 = 0.0f; - float g7 = 0.0f; - float g8 = 0.0f; - float g9 = 0.0f; - float g10 = 0.0f; - float g11 = 0.0f; - float g12 = 0.0f; - float g13 = 0.0f; - float g14 = 0.0f; - float g15 = 0.0f; - float g16 = 0.0f; - float g17 = 0.0f; - float g18 = 0.0f; - float g19 = 0.0f; - float g20 = 0.0f; - float g21 = 0.0f; - float g22 = 0.0f; - float g23 = 0.0f; - { const float d = D(ii, k, 0); - g0 += 1.0f * d * f0; - g0 += 1.0f * d * f0; - } - { const float d = D(ii, k, 1); - g1 += 0.3333333432674408f * d * f1; - g1 += 0.3333333432674408f * d * f1; - g2 += 0.3333333432674408f * d * f2; - g2 += 0.3333333432674408f * d * f2; - g3 += 0.3333333432674408f * d * f3; - g3 += 0.3333333432674408f * d * f3; - } - { const float d = D(ii, k, 2); - g7 += 0.20000000298023224f * d * f7; - g7 += 0.20000000298023224f * d * f7; - g8 += 0.20000000298023224f * d * f8; - g8 += 0.20000000298023224f * d * f8; - g9 += 0.20000000298023224f * d * f9; - g9 += 0.20000000298023224f * d * f9; - g10 += 0.20000000298023224f * d * f10; - g10 += 0.20000000298023224f * d * f10; - g11 += 0.20000000298023224f * d * f11; - g11 += 0.20000000298023224f * d * f11; - } - { const float d = D(ii, k, 3); - g17 += 0.1428571492433548f * d * f17; - g17 += 0.1428571492433548f * d * f17; - g18 += 0.1428571492433548f * d * f18; - g18 += 0.1428571492433548f * d * f18; - g19 += 0.1428571492433548f * d * f19; - g19 += 0.1428571492433548f * d * f19; - g20 += 0.1428571492433548f * d * f20; - g20 += 0.1428571492433548f * d * f20; - g21 += 0.1428571492433548f * d * f21; - g21 += 0.1428571492433548f * d * f21; - g22 += 0.1428571492433548f * d * f22; - g22 += 0.1428571492433548f * d * f22; - g23 += 0.1428571492433548f * d * f23; - g23 += 0.1428571492433548f * d * f23; - } - { const float d = D(ii, k, 4); - g1 += 1.0f * d * f0; - g0 += 1.0f * d * f1; - } - { const float d = D(ii, k, 5); - g2 += 1.0f * d * f0; - g0 += 1.0f * d * f2; - } - { const float d = D(ii, k, 6); - g3 += 1.0f * d * f0; - g0 += 1.0f * d * f3; - } - { const float d = D(ii, k, 7); - g7 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f7; - g8 += 0.3872983455657959f * d * f2; - g2 += 0.3872983455657959f * d * f8; - g9 += -0.22360679507255554f * d * f1; - g1 += -0.22360679507255554f * d * f9; - g11 += -0.3872983455657959f * d * f1; - g1 += -0.3872983455657959f * d * f11; - } - { const float d = D(ii, k, 8); - g8 += 0.3872983455657959f * d * f1; - g1 += 0.3872983455657959f * d * f8; - g9 += 0.4472135901451111f * d * f2; - g2 += 0.4472135901451111f * d * f9; - g10 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f10; - } - { const float d = D(ii, k, 9); - g7 += 0.3872983455657959f * d * f1; - g1 += 0.3872983455657959f * d * f7; - g9 += -0.22360679507255554f * d * f3; - g3 += -0.22360679507255554f * d * f9; - g10 += 0.3872983455657959f * d * f2; - g2 += 0.3872983455657959f * d * f10; - g11 += 0.3872983455657959f * d * f3; - g3 += 0.3872983455657959f * d * f11; - } - { const float d = D(ii, k, 10); - g17 += 0.26726123690605164f * d * f11; - g11 += 0.26726123690605164f * d * f17; - g18 += 0.2182178944349289f * d * f10; - g10 += 0.2182178944349289f * d * f18; - g19 += 0.23904572427272797f * d * f9; - g9 += 0.23904572427272797f * d * f19; - g19 += 0.0690065547823906f * d * f11; - g11 += 0.0690065547823906f * d * f19; - g20 += -0.16903084516525269f * d * f8; - g8 += -0.16903084516525269f * d * f20; - g21 += -0.0690065547823906f * d * f7; - g7 += -0.0690065547823906f * d * f21; - g22 += -0.2182178944349289f * d * f8; - g8 += -0.2182178944349289f * d * f22; - g23 += -0.26726123690605164f * d * f7; - g7 += -0.26726123690605164f * d * f23; - } - { const float d = D(ii, k, 11); - g18 += 0.2182178944349289f * d * f7; - g7 += 0.2182178944349289f * d * f18; - g19 += 0.2760262191295624f * d * f8; - g8 += 0.2760262191295624f * d * f19; - g20 += 0.29277002811431885f * d * f9; - g9 += 0.29277002811431885f * d * f20; - g21 += 0.2760262191295624f * d * f10; - g10 += 0.2760262191295624f * d * f21; - g22 += 0.2182178944349289f * d * f11; - g11 += 0.2182178944349289f * d * f22; - } - { const float d = D(ii, k, 12); - g17 += 0.26726123690605164f * d * f7; - g7 += 0.26726123690605164f * d * f17; - g18 += 0.2182178944349289f * d * f8; - g8 += 0.2182178944349289f * d * f18; - g19 += -0.0690065547823906f * d * f7; - g7 += -0.0690065547823906f * d * f19; - g20 += -0.16903084516525269f * d * f10; - g10 += -0.16903084516525269f * d * f20; - g21 += 0.23904572427272797f * d * f9; - g9 += 0.23904572427272797f * d * f21; - g21 += -0.0690065547823906f * d * f11; - g11 += -0.0690065547823906f * d * f21; - g22 += 0.2182178944349289f * d * f10; - g10 += 0.2182178944349289f * d * f22; - g23 += 0.26726123690605164f * d * f11; - g11 += 0.26726123690605164f * d * f23; - } - { const float d = D(ii, k, 13); - g7 += 1.0f * d * f0; - g0 += 1.0f * d * f7; - } - { const float d = D(ii, k, 14); - g8 += 1.0f * d * f0; - g0 += 1.0f * d * f8; - } - { const float d = D(ii, k, 15); - g9 += 1.0f * d * f0; - g0 += 1.0f * d * f9; - } - { const float d = D(ii, k, 16); - g10 += 1.0f * d * f0; - g0 += 1.0f * d * f10; - } - { const float d = D(ii, k, 17); - g11 += 1.0f * d * f0; - g0 += 1.0f * d * f11; - } - { const float d = D(ii, k, 18); - g3 += 1.29099440574646f * d * f1; - g1 += 1.29099440574646f * d * f3; - } - { const float d = D(ii, k, 19); - g2 += 1.29099440574646f * d * f1; - g1 += 1.29099440574646f * d * f2; - } - { const float d = D(ii, k, 20); - g1 += -0.3726779818534851f * d * f1; - g1 += -0.3726779818534851f * d * f1; - g2 += 0.7453559637069702f * d * f2; - g2 += 0.7453559637069702f * d * f2; - g3 += -0.3726779818534851f * d * f3; - g3 += -0.3726779818534851f * d * f3; - } - { const float d = D(ii, k, 21); - g3 += 1.29099440574646f * d * f2; - g2 += 1.29099440574646f * d * f3; - } - { const float d = D(ii, k, 22); - g1 += -0.64549720287323f * d * f1; - g1 += -0.64549720287323f * d * f1; - g3 += 0.64549720287323f * d * f3; - g3 += 0.64549720287323f * d * f3; - } - { const float d = D(ii, k, 23); - g8 += -0.40824830532073975f * d * f1; - g1 += -0.40824830532073975f * d * f8; - g10 += 0.40824830532073975f * d * f3; - g3 += 0.40824830532073975f * d * f10; - g11 += -0.8164966106414795f * d * f2; - g2 += -0.8164966106414795f * d * f11; - } - { const float d = D(ii, k, 24); - g7 += 0.40824830532073975f * d * f1; - g1 += 0.40824830532073975f * d * f7; - g9 += 0.7071067690849304f * d * f3; - g3 += 0.7071067690849304f * d * f9; - g10 += -0.40824830532073975f * d * f2; - g2 += -0.40824830532073975f * d * f10; - g11 += 0.40824830532073975f * d * f3; - g3 += 0.40824830532073975f * d * f11; - } - { const float d = D(ii, k, 25); - g8 += -0.7071067690849304f * d * f3; - g3 += -0.7071067690849304f * d * f8; - g10 += 0.7071067690849304f * d * f1; - g1 += 0.7071067690849304f * d * f10; - } - { const float d = D(ii, k, 26); - g7 += -0.40824830532073975f * d * f3; - g3 += -0.40824830532073975f * d * f7; - g8 += 0.40824830532073975f * d * f2; - g2 += 0.40824830532073975f * d * f8; - g9 += -0.7071067690849304f * d * f1; - g1 += -0.7071067690849304f * d * f9; - g11 += 0.40824830532073975f * d * f1; - g1 += 0.40824830532073975f * d * f11; - } - { const float d = D(ii, k, 27); - g7 += 0.8164966106414795f * d * f2; - g2 += 0.8164966106414795f * d * f7; - g8 += -0.40824830532073975f * d * f3; - g3 += -0.40824830532073975f * d * f8; - g10 += -0.40824830532073975f * d * f1; - g1 += -0.40824830532073975f * d * f10; - } - { const float d = D(ii, k, 28); - g9 += -0.8944271802902222f * d * f7; - g7 += -0.8944271802902222f * d * f9; - g10 += 0.7745966911315918f * d * f8; - g8 += 0.7745966911315918f * d * f10; - } - { const float d = D(ii, k, 29); - g10 += 0.7745966911315918f * d * f7; - g7 += 0.7745966911315918f * d * f10; - g9 += 0.4472135901451111f * d * f8; - g8 += 0.4472135901451111f * d * f9; - g11 += -0.7745966911315918f * d * f8; - g8 += -0.7745966911315918f * d * f11; - } - { const float d = D(ii, k, 30); - g7 += -0.4472135901451111f * d * f7; - g7 += -0.4472135901451111f * d * f7; - g8 += 0.22360679507255554f * d * f8; - g8 += 0.22360679507255554f * d * f8; - g9 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f9; - g10 += 0.22360679507255554f * d * f10; - g10 += 0.22360679507255554f * d * f10; - g11 += -0.4472135901451111f * d * f11; - g11 += -0.4472135901451111f * d * f11; - } - { const float d = D(ii, k, 31); - g8 += 0.7745966911315918f * d * f7; - g7 += 0.7745966911315918f * d * f8; - g10 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f10; - g11 += 0.7745966911315918f * d * f10; - g10 += 0.7745966911315918f * d * f11; - } - { const float d = D(ii, k, 32); - g8 += -0.3872983455657959f * d * f8; - g8 += -0.3872983455657959f * d * f8; - g11 += -0.8944271802902222f * d * f9; - g9 += -0.8944271802902222f * d * f11; - g10 += 0.3872983455657959f * d * f10; - g10 += 0.3872983455657959f * d * f10; - } - { const float d = D(ii, k, 33); - g17 += 0.44543540477752686f * d * f3; - g3 += 0.44543540477752686f * d * f17; - g18 += 0.36369648575782776f * d * f2; - g2 += 0.36369648575782776f * d * f18; - g19 += -0.11501092463731766f * d * f3; - g3 += -0.11501092463731766f * d * f19; - g21 += -0.11501092463731766f * d * f1; - g1 += -0.11501092463731766f * d * f21; - g23 += -0.44543540477752686f * d * f1; - g1 += -0.44543540477752686f * d * f23; - } - { const float d = D(ii, k, 34); - g18 += 0.36369648575782776f * d * f3; - g3 += 0.36369648575782776f * d * f18; - g19 += 0.46004369854927063f * d * f2; - g2 += 0.46004369854927063f * d * f19; - g20 += -0.28171807527542114f * d * f1; - g1 += -0.28171807527542114f * d * f20; - g22 += -0.36369648575782776f * d * f1; - g1 += -0.36369648575782776f * d * f22; - } - { const float d = D(ii, k, 35); - g19 += 0.39840954542160034f * d * f1; - g1 += 0.39840954542160034f * d * f19; - g20 += 0.48795002698898315f * d * f2; - g2 += 0.48795002698898315f * d * f20; - g21 += 0.39840954542160034f * d * f3; - g3 += 0.39840954542160034f * d * f21; - } - { const float d = D(ii, k, 36); - g18 += 0.36369648575782776f * d * f1; - g1 += 0.36369648575782776f * d * f18; - g20 += -0.28171807527542114f * d * f3; - g3 += -0.28171807527542114f * d * f20; - g21 += 0.46004369854927063f * d * f2; - g2 += 0.46004369854927063f * d * f21; - g22 += 0.36369648575782776f * d * f3; - g3 += 0.36369648575782776f * d * f22; - } - { const float d = D(ii, k, 37); - g17 += 0.44543540477752686f * d * f1; - g1 += 0.44543540477752686f * d * f17; - g19 += 0.11501092463731766f * d * f1; - g1 += 0.11501092463731766f * d * f19; - g21 += -0.11501092463731766f * d * f3; - g3 += -0.11501092463731766f * d * f21; - g22 += 0.36369648575782776f * d * f2; - g2 += 0.36369648575782776f * d * f22; - g23 += 0.44543540477752686f * d * f3; - g3 += 0.44543540477752686f * d * f23; - } - { const float d = D(ii, k, 38); - g17 += -0.4225771129131317f * d * f8; - g8 += -0.4225771129131317f * d * f17; - g19 += -0.32732683420181274f * d * f8; - g8 += -0.32732683420181274f * d * f19; - g20 += -0.26726123690605164f * d * f11; - g11 += -0.26726123690605164f * d * f20; - g21 += 0.32732683420181274f * d * f10; - g10 += 0.32732683420181274f * d * f21; - g22 += -0.5976142883300781f * d * f9; - g9 += -0.5976142883300781f * d * f22; - g23 += -0.4225771129131317f * d * f10; - g10 += -0.4225771129131317f * d * f23; - } - { const float d = D(ii, k, 39); - g17 += 0.4225771129131317f * d * f7; - g7 += 0.4225771129131317f * d * f17; - g19 += 0.32732683420181274f * d * f7; - g7 += 0.32732683420181274f * d * f19; - g20 += 0.5345224738121033f * d * f10; - g10 += 0.5345224738121033f * d * f20; - g21 += -0.37796446681022644f * d * f9; - g9 += -0.37796446681022644f * d * f21; - g21 += 0.32732683420181274f * d * f11; - g11 += 0.32732683420181274f * d * f21; - g23 += 0.4225771129131317f * d * f11; - g11 += 0.4225771129131317f * d * f23; - } - { const float d = D(ii, k, 40); - g18 += -0.5976142883300781f * d * f11; - g11 += -0.5976142883300781f * d * f18; - g19 += -0.37796446681022644f * d * f10; - g10 += -0.37796446681022644f * d * f19; - g21 += 0.37796446681022644f * d * f8; - g8 += 0.37796446681022644f * d * f21; - g22 += 0.5976142883300781f * d * f7; - g7 += 0.5976142883300781f * d * f22; - } - { const float d = D(ii, k, 41); - g17 += -0.4225771129131317f * d * f11; - g11 += -0.4225771129131317f * d * f17; - g19 += 0.37796446681022644f * d * f9; - g9 += 0.37796446681022644f * d * f19; - g19 += 0.32732683420181274f * d * f11; - g11 += 0.32732683420181274f * d * f19; - g20 += -0.5345224738121033f * d * f8; - g8 += -0.5345224738121033f * d * f20; - g21 += -0.32732683420181274f * d * f7; - g7 += -0.32732683420181274f * d * f21; - g23 += 0.4225771129131317f * d * f7; - g7 += 0.4225771129131317f * d * f23; - } - { const float d = D(ii, k, 42); - g17 += 0.4225771129131317f * d * f10; - g10 += 0.4225771129131317f * d * f17; - g18 += 0.5976142883300781f * d * f9; - g9 += 0.5976142883300781f * d * f18; - g19 += -0.32732683420181274f * d * f10; - g10 += -0.32732683420181274f * d * f19; - g20 += 0.26726123690605164f * d * f7; - g7 += 0.26726123690605164f * d * f20; - g21 += -0.32732683420181274f * d * f8; - g8 += -0.32732683420181274f * d * f21; - g23 += -0.4225771129131317f * d * f8; - g8 += -0.4225771129131317f * d * f23; - } - { const float d = D(ii, k, 43); - g21 += -0.3571428656578064f * d * f17; - g17 += -0.3571428656578064f * d * f21; - g20 += -0.7142857313156128f * d * f18; - g18 += -0.7142857313156128f * d * f20; - g21 += 0.5532833337783813f * d * f19; - g19 += 0.5532833337783813f * d * f21; - g23 += 0.3571428656578064f * d * f19; - g19 += 0.3571428656578064f * d * f23; - } - { const float d = D(ii, k, 44); - g22 += 0.5646924376487732f * d * f17; - g17 += 0.5646924376487732f * d * f22; - g21 += 0.4374088943004608f * d * f18; - g18 += 0.4374088943004608f * d * f21; - g23 += -0.5646924376487732f * d * f18; - g18 += -0.5646924376487732f * d * f23; - g20 += 0.22587697207927704f * d * f19; - g19 += 0.22587697207927704f * d * f20; - g22 += -0.4374088943004608f * d * f19; - g19 += -0.4374088943004608f * d * f22; - } - { const float d = D(ii, k, 45); - g17 += -0.3992978632450104f * d * f17; - g17 += -0.3992978632450104f * d * f17; - g19 += 0.2395787090063095f * d * f19; - g19 += 0.2395787090063095f * d * f19; - g20 += 0.31943827867507935f * d * f20; - g20 += 0.31943827867507935f * d * f20; - g21 += 0.2395787090063095f * d * f21; - g21 += 0.2395787090063095f * d * f21; - g23 += -0.3992978632450104f * d * f23; - g23 += -0.3992978632450104f * d * f23; - } - { const float d = D(ii, k, 46); - g18 += 0.5646924376487732f * d * f17; - g17 += 0.5646924376487732f * d * f18; - g19 += 0.4374088943004608f * d * f18; - g18 += 0.4374088943004608f * d * f19; - g21 += 0.22587697207927704f * d * f20; - g20 += 0.22587697207927704f * d * f21; - g22 += 0.4374088943004608f * d * f21; - g21 += 0.4374088943004608f * d * f22; - g23 += 0.5646924376487732f * d * f22; - g22 += 0.5646924376487732f * d * f23; - } - { const float d = D(ii, k, 47); - g19 += -0.3571428656578064f * d * f17; - g17 += -0.3571428656578064f * d * f19; - g19 += -0.2766416668891907f * d * f19; - g19 += -0.2766416668891907f * d * f19; - g22 += -0.7142857313156128f * d * f20; - g20 += -0.7142857313156128f * d * f22; - g21 += 0.2766416668891907f * d * f21; - g21 += 0.2766416668891907f * d * f21; - g23 += -0.3571428656578064f * d * f21; - g21 += -0.3571428656578064f * d * f23; - } - { const float d = D(ii, k, 48); - g17 += 1.0f * d * f0; - g0 += 1.0f * d * f17; - } - { const float d = D(ii, k, 49); - g18 += 1.0f * d * f0; - g0 += 1.0f * d * f18; - } - { const float d = D(ii, k, 50); - g19 += 1.0f * d * f0; - g0 += 1.0f * d * f19; - } - { const float d = D(ii, k, 51); - g20 += 1.0f * d * f0; - g0 += 1.0f * d * f20; - } - { const float d = D(ii, k, 52); - g21 += 1.0f * d * f0; - g0 += 1.0f * d * f21; - } - { const float d = D(ii, k, 53); - g22 += 1.0f * d * f0; - g0 += 1.0f * d * f22; - } - { const float d = D(ii, k, 54); - g23 += 1.0f * d * f0; - g0 += 1.0f * d * f23; - } - { const float d = D(ii, k, 55); - g7 += 0.6236095428466797f * d * f3; - g3 += 0.6236095428466797f * d * f7; - g11 += 0.6236095428466797f * d * f1; - g1 += 0.6236095428466797f * d * f11; - } - { const float d = D(ii, k, 56); - g7 += 0.5091750621795654f * d * f2; - g2 += 0.5091750621795654f * d * f7; - g8 += 0.5091750621795654f * d * f3; - g3 += 0.5091750621795654f * d * f8; - g10 += 0.5091750621795654f * d * f1; - g1 += 0.5091750621795654f * d * f10; - } - { const float d = D(ii, k, 57); - g7 += -0.16101530194282532f * d * f3; - g3 += -0.16101530194282532f * d * f7; - g8 += 0.6440612077713013f * d * f2; - g2 += 0.6440612077713013f * d * f8; - g9 += 0.5577733516693115f * d * f1; - g1 += 0.5577733516693115f * d * f9; - g11 += 0.16101530194282532f * d * f1; - g1 += 0.16101530194282532f * d * f11; - } - { const float d = D(ii, k, 58); - g8 += -0.3944053053855896f * d * f1; - g1 += -0.3944053053855896f * d * f8; - g9 += 0.6831300258636475f * d * f2; - g2 += 0.6831300258636475f * d * f9; - g10 += -0.3944053053855896f * d * f3; - g3 += -0.3944053053855896f * d * f10; - } - { const float d = D(ii, k, 59); - g7 += -0.16101530194282532f * d * f1; - g1 += -0.16101530194282532f * d * f7; - g9 += 0.5577733516693115f * d * f3; - g3 += 0.5577733516693115f * d * f9; - g10 += 0.6440612077713013f * d * f2; - g2 += 0.6440612077713013f * d * f10; - g11 += -0.16101530194282532f * d * f3; - g3 += -0.16101530194282532f * d * f11; - } - { const float d = D(ii, k, 60); - g8 += -0.5091750621795654f * d * f1; - g1 += -0.5091750621795654f * d * f8; - g10 += 0.5091750621795654f * d * f3; - g3 += 0.5091750621795654f * d * f10; - g11 += 0.5091750621795654f * d * f2; - g2 += 0.5091750621795654f * d * f11; - } - { const float d = D(ii, k, 61); - g7 += -0.6236095428466797f * d * f1; - g1 += -0.6236095428466797f * d * f7; - g11 += 0.6236095428466797f * d * f3; - g3 += 0.6236095428466797f * d * f11; - } - { const float d = D(ii, k, 62); - g18 += -0.3535533845424652f * d * f1; - g1 += -0.3535533845424652f * d * f18; - g22 += 0.3535533845424652f * d * f3; - g3 += 0.3535533845424652f * d * f22; - g23 += -0.8660253882408142f * d * f2; - g2 += -0.8660253882408142f * d * f23; - } - { const float d = D(ii, k, 63); - g17 += 0.3535533845424652f * d * f1; - g1 += 0.3535533845424652f * d * f17; - g19 += -0.4564354717731476f * d * f1; - g1 += -0.4564354717731476f * d * f19; - g21 += 0.4564354717731476f * d * f3; - g3 += 0.4564354717731476f * d * f21; - g22 += -0.5773502588272095f * d * f2; - g2 += -0.5773502588272095f * d * f22; - g23 += 0.3535533845424652f * d * f3; - g3 += 0.3535533845424652f * d * f23; - } - { const float d = D(ii, k, 64); - g18 += 0.4564354717731476f * d * f1; - g1 += 0.4564354717731476f * d * f18; - g20 += 0.7071067690849304f * d * f3; - g3 += 0.7071067690849304f * d * f20; - g21 += -0.28867512941360474f * d * f2; - g2 += -0.28867512941360474f * d * f21; - g22 += 0.4564354717731476f * d * f3; - g3 += 0.4564354717731476f * d * f22; - } - { const float d = D(ii, k, 65); - g19 += -0.7071067690849304f * d * f3; - g3 += -0.7071067690849304f * d * f19; - g21 += 0.7071067690849304f * d * f1; - g1 += 0.7071067690849304f * d * f21; - } - { const float d = D(ii, k, 66); - g18 += -0.4564354717731476f * d * f3; - g3 += -0.4564354717731476f * d * f18; - g19 += 0.28867512941360474f * d * f2; - g2 += 0.28867512941360474f * d * f19; - g20 += -0.7071067690849304f * d * f1; - g1 += -0.7071067690849304f * d * f20; - g22 += 0.4564354717731476f * d * f1; - g1 += 0.4564354717731476f * d * f22; - } - { const float d = D(ii, k, 67); - g17 += -0.3535533845424652f * d * f3; - g3 += -0.3535533845424652f * d * f17; - g18 += 0.5773502588272095f * d * f2; - g2 += 0.5773502588272095f * d * f18; - g19 += -0.4564354717731476f * d * f3; - g3 += -0.4564354717731476f * d * f19; - g21 += -0.4564354717731476f * d * f1; - g1 += -0.4564354717731476f * d * f21; - g23 += 0.3535533845424652f * d * f1; - g1 += 0.3535533845424652f * d * f23; - } - { const float d = D(ii, k, 68); - g17 += 0.8660253882408142f * d * f2; - g2 += 0.8660253882408142f * d * f17; - g18 += -0.3535533845424652f * d * f3; - g3 += -0.3535533845424652f * d * f18; - g22 += -0.3535533845424652f * d * f1; - g1 += -0.3535533845424652f * d * f22; - } - { const float d = D(ii, k, 69); - g17 += -0.55901700258255f * d * f9; - g9 += -0.55901700258255f * d * f17; - g18 += 0.3952847123146057f * d * f10; - g10 += 0.3952847123146057f * d * f18; - g19 += -0.25f * d * f11; - g11 += -0.25f * d * f19; - g21 += -0.25f * d * f7; - g7 += -0.25f * d * f21; - g22 += 0.3952847123146057f * d * f8; - g8 += 0.3952847123146057f * d * f22; - } - { const float d = D(ii, k, 70); - g17 += 0.3952847123146057f * d * f10; - g10 += 0.3952847123146057f * d * f17; - g19 += 0.3061862289905548f * d * f10; - g10 += 0.3061862289905548f * d * f19; - g20 += -0.5f * d * f7; - g7 += -0.5f * d * f20; - g21 += 0.3061862289905548f * d * f8; - g8 += 0.3061862289905548f * d * f21; - g23 += -0.3952847123146057f * d * f8; - g8 += -0.3952847123146057f * d * f23; - } - { const float d = D(ii, k, 71); - g17 += -0.25f * d * f11; - g11 += -0.25f * d * f17; - g18 += 0.3061862289905548f * d * f10; - g10 += 0.3061862289905548f * d * f18; - g19 += 0.3354102075099945f * d * f9; - g9 += 0.3354102075099945f * d * f19; - g19 += -0.3872983455657959f * d * f11; - g11 += -0.3872983455657959f * d * f19; - g20 += 0.15811388194561005f * d * f8; - g8 += 0.15811388194561005f * d * f20; - g21 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f21; - g22 += -0.3061862289905548f * d * f8; - g8 += -0.3061862289905548f * d * f22; - g23 += 0.25f * d * f7; - g7 += 0.25f * d * f23; - } - { const float d = D(ii, k, 72); - g18 += -0.5f * d * f7; - g7 += -0.5f * d * f18; - g19 += 0.15811388194561005f * d * f8; - g8 += 0.15811388194561005f * d * f19; - g20 += 0.4472135901451111f * d * f9; - g9 += 0.4472135901451111f * d * f20; - g21 += 0.15811388194561005f * d * f10; - g10 += 0.15811388194561005f * d * f21; - g22 += -0.5f * d * f11; - g11 += -0.5f * d * f22; - } - { const float d = D(ii, k, 73); - g17 += -0.25f * d * f7; - g7 += -0.25f * d * f17; - g18 += 0.3061862289905548f * d * f8; - g8 += 0.3061862289905548f * d * f18; - g19 += 0.3872983455657959f * d * f7; - g7 += 0.3872983455657959f * d * f19; - g20 += 0.15811388194561005f * d * f10; - g10 += 0.15811388194561005f * d * f20; - g21 += 0.3354102075099945f * d * f9; - g9 += 0.3354102075099945f * d * f21; - g21 += 0.3872983455657959f * d * f11; - g11 += 0.3872983455657959f * d * f21; - g22 += 0.3061862289905548f * d * f10; - g10 += 0.3061862289905548f * d * f22; - g23 += -0.25f * d * f11; - g11 += -0.25f * d * f23; - } - { const float d = D(ii, k, 74); - g17 += 0.3952847123146057f * d * f8; - g8 += 0.3952847123146057f * d * f17; - g19 += -0.3061862289905548f * d * f8; - g8 += -0.3061862289905548f * d * f19; - g20 += -0.5f * d * f11; - g11 += -0.5f * d * f20; - g21 += 0.3061862289905548f * d * f10; - g10 += 0.3061862289905548f * d * f21; - g23 += 0.3952847123146057f * d * f10; - g10 += 0.3952847123146057f * d * f23; - } - { const float d = D(ii, k, 75); - g18 += -0.3952847123146057f * d * f8; - g8 += -0.3952847123146057f * d * f18; - g19 += 0.25f * d * f7; - g7 += 0.25f * d * f19; - g21 += -0.25f * d * f11; - g11 += -0.25f * d * f21; - g22 += 0.3952847123146057f * d * f10; - g10 += 0.3952847123146057f * d * f22; - g23 += -0.55901700258255f * d * f9; - g9 += -0.55901700258255f * d * f23; - } - dF(ii, k, 0) = g0; - dF(ii, k, 1) = g1; - dF(ii, k, 2) = g2; - dF(ii, k, 3) = g3; - dF(ii, k, 4) = g4; - dF(ii, k, 5) = g5; - dF(ii, k, 6) = g6; - dF(ii, k, 7) = g7; - dF(ii, k, 8) = g8; - dF(ii, k, 9) = g9; - dF(ii, k, 10) = g10; - dF(ii, k, 11) = g11; - dF(ii, k, 12) = g12; - dF(ii, k, 13) = g13; - dF(ii, k, 14) = g14; - dF(ii, k, 15) = g15; - dF(ii, k, 16) = g16; - dF(ii, k, 17) = g17; - dF(ii, k, 18) = g18; - dF(ii, k, 19) = g19; - dF(ii, k, 20) = g20; - dF(ii, k, 21) = g21; - dF(ii, k, 22) = g22; - dF(ii, k, 23) = g23; - } -} - -constexpr int nt_BBB = 37; -constexpr int tab_BBB[37][3] = {{0,0,0}, {1,0,1}, {7,4,2}, {8,5,2}, {9,6,2}, {23,12,3}, {24,13,3}, {25,14,3}, {26,15,3}, {27,16,3}, {2,0,4}, {28,12,5}, {29,13,5}, {30,14,5}, {31,15,5}, {32,16,5}, {62,24,6}, {63,25,6}, {64,26,6}, {65,27,6}, {66,28,6}, {67,29,6}, {68,30,6}, {10,4,7}, {11,5,7}, {12,6,7}, {38,12,8}, {39,13,8}, {40,14,8}, {41,15,8}, {42,16,8}, {3,0,9}, {43,12,10}, {44,13,10}, {45,14,10}, {46,15,10}, {47,16,10}}; -constexpr double cg_BBB[37] = {1.0, 1.0, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224}; - -template -KOKKOS_INLINE_FUNCTION void fwd_BBB(const V &L, const V &R, const V &out, const int ii, const int k) -{ - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a7 = L(ii, k, 7); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a23 = L(ii, k, 23); - const float a24 = L(ii, k, 24); - const float a25 = L(ii, k, 25); - const float a26 = L(ii, k, 26); - const float a27 = L(ii, k, 27); - const float a28 = L(ii, k, 28); - const float a29 = L(ii, k, 29); - const float a30 = L(ii, k, 30); - const float a31 = L(ii, k, 31); - const float a32 = L(ii, k, 32); - const float a38 = L(ii, k, 38); - const float a39 = L(ii, k, 39); - const float a40 = L(ii, k, 40); - const float a41 = L(ii, k, 41); - const float a42 = L(ii, k, 42); - const float a43 = L(ii, k, 43); - const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); - const float a62 = L(ii, k, 62); - const float a63 = L(ii, k, 63); - const float a64 = L(ii, k, 64); - const float a65 = L(ii, k, 65); - const float a66 = L(ii, k, 66); - const float a67 = L(ii, k, 67); - const float a68 = L(ii, k, 68); - const float b0 = R(ii, k, 0); - const float b4 = R(ii, k, 4); - const float b5 = R(ii, k, 5); - const float b6 = R(ii, k, 6); - const float b12 = R(ii, k, 12); - const float b13 = R(ii, k, 13); - const float b14 = R(ii, k, 14); - const float b15 = R(ii, k, 15); - const float b16 = R(ii, k, 16); - const float b24 = R(ii, k, 24); - const float b25 = R(ii, k, 25); - const float b26 = R(ii, k, 26); - const float b27 = R(ii, k, 27); - const float b28 = R(ii, k, 28); - const float b29 = R(ii, k, 29); - const float b30 = R(ii, k, 30); - out(ii, k, 0) = 1.0f * a0 * b0; - out(ii, k, 1) = 1.0f * a1 * b0; - out(ii, k, 2) = 0.3333333432674408f * a7 * b4 + 0.3333333432674408f * a8 * b5 + 0.3333333432674408f * a9 * b6; - out(ii, k, 3) = 0.20000000298023224f * a23 * b12 + 0.20000000298023224f * a24 * b13 + 0.20000000298023224f * a25 * b14 + 0.20000000298023224f * a26 * b15 + 0.20000000298023224f * a27 * b16; - out(ii, k, 4) = 1.0f * a2 * b0; - out(ii, k, 5) = 0.20000000298023224f * a28 * b12 + 0.20000000298023224f * a29 * b13 + 0.20000000298023224f * a30 * b14 + 0.20000000298023224f * a31 * b15 + 0.20000000298023224f * a32 * b16; - out(ii, k, 6) = 0.1428571492433548f * a62 * b24 + 0.1428571492433548f * a63 * b25 + 0.1428571492433548f * a64 * b26 + 0.1428571492433548f * a65 * b27 + 0.1428571492433548f * a66 * b28 + 0.1428571492433548f * a67 * b29 + 0.1428571492433548f * a68 * b30; - out(ii, k, 7) = 0.3333333432674408f * a10 * b4 + 0.3333333432674408f * a11 * b5 + 0.3333333432674408f * a12 * b6; - out(ii, k, 8) = 0.20000000298023224f * a38 * b12 + 0.20000000298023224f * a39 * b13 + 0.20000000298023224f * a40 * b14 + 0.20000000298023224f * a41 * b15 + 0.20000000298023224f * a42 * b16; - out(ii, k, 9) = 1.0f * a3 * b0; - out(ii, k, 10) = 0.20000000298023224f * a43 * b12 + 0.20000000298023224f * a44 * b13 + 0.20000000298023224f * a45 * b14 + 0.20000000298023224f * a46 * b15 + 0.20000000298023224f * a47 * b16; -} - -template -KOKKOS_INLINE_FUNCTION void rev_BBB(const V &L, const V &R, const V &D, const V &dL, const V &dR, const int ii, const int k) -{ - { - const float b0 = R(ii, k, 0); - const float b4 = R(ii, k, 4); - const float b5 = R(ii, k, 5); - const float b6 = R(ii, k, 6); - const float b12 = R(ii, k, 12); - const float b13 = R(ii, k, 13); - const float b14 = R(ii, k, 14); - const float b15 = R(ii, k, 15); - const float b16 = R(ii, k, 16); - const float b24 = R(ii, k, 24); - const float b25 = R(ii, k, 25); - const float b26 = R(ii, k, 26); - const float b27 = R(ii, k, 27); - const float b28 = R(ii, k, 28); - const float b29 = R(ii, k, 29); - const float b30 = R(ii, k, 30); - { - float g0 = 0.0f; - float g1 = 0.0f; - float g2 = 0.0f; - float g3 = 0.0f; - float g4 = 0.0f; - float g5 = 0.0f; - float g6 = 0.0f; - float g7 = 0.0f; - float g8 = 0.0f; - float g9 = 0.0f; - float g10 = 0.0f; - float g11 = 0.0f; - float g12 = 0.0f; - float g13 = 0.0f; - float g14 = 0.0f; - float g15 = 0.0f; - float g16 = 0.0f; - float g17 = 0.0f; - float g18 = 0.0f; - float g19 = 0.0f; - float g20 = 0.0f; - float g21 = 0.0f; - float g22 = 0.0f; - float g23 = 0.0f; - float g24 = 0.0f; - float g25 = 0.0f; - float g26 = 0.0f; - float g27 = 0.0f; - float g28 = 0.0f; - float g29 = 0.0f; - float g30 = 0.0f; - float g31 = 0.0f; - float g32 = 0.0f; - float g33 = 0.0f; - float g34 = 0.0f; - float g35 = 0.0f; - float g36 = 0.0f; - float g37 = 0.0f; - float g38 = 0.0f; - float g39 = 0.0f; - float g40 = 0.0f; - float g41 = 0.0f; - float g42 = 0.0f; - float g43 = 0.0f; - float g44 = 0.0f; - float g45 = 0.0f; - float g46 = 0.0f; - float g47 = 0.0f; - float g48 = 0.0f; - float g49 = 0.0f; - float g50 = 0.0f; - float g51 = 0.0f; - float g52 = 0.0f; - float g53 = 0.0f; - float g54 = 0.0f; - float g55 = 0.0f; - float g56 = 0.0f; - float g57 = 0.0f; - float g58 = 0.0f; - float g59 = 0.0f; - float g60 = 0.0f; - float g61 = 0.0f; - float g62 = 0.0f; - float g63 = 0.0f; - float g64 = 0.0f; - float g65 = 0.0f; - float g66 = 0.0f; - float g67 = 0.0f; - float g68 = 0.0f; - { const float d = D(ii, k, 0); - g0 += 1.0f * d * b0; - } - { const float d = D(ii, k, 1); - g1 += 1.0f * d * b0; - } - { const float d = D(ii, k, 2); - g7 += 0.3333333432674408f * d * b4; - g8 += 0.3333333432674408f * d * b5; - g9 += 0.3333333432674408f * d * b6; - } - { const float d = D(ii, k, 3); - g23 += 0.20000000298023224f * d * b12; - g24 += 0.20000000298023224f * d * b13; - g25 += 0.20000000298023224f * d * b14; - g26 += 0.20000000298023224f * d * b15; - g27 += 0.20000000298023224f * d * b16; - } - { const float d = D(ii, k, 4); - g2 += 1.0f * d * b0; - } - { const float d = D(ii, k, 5); - g28 += 0.20000000298023224f * d * b12; - g29 += 0.20000000298023224f * d * b13; - g30 += 0.20000000298023224f * d * b14; - g31 += 0.20000000298023224f * d * b15; - g32 += 0.20000000298023224f * d * b16; - } - { const float d = D(ii, k, 6); - g62 += 0.1428571492433548f * d * b24; - g63 += 0.1428571492433548f * d * b25; - g64 += 0.1428571492433548f * d * b26; - g65 += 0.1428571492433548f * d * b27; - g66 += 0.1428571492433548f * d * b28; - g67 += 0.1428571492433548f * d * b29; - g68 += 0.1428571492433548f * d * b30; - } - { const float d = D(ii, k, 7); - g10 += 0.3333333432674408f * d * b4; - g11 += 0.3333333432674408f * d * b5; - g12 += 0.3333333432674408f * d * b6; - } - { const float d = D(ii, k, 8); - g38 += 0.20000000298023224f * d * b12; - g39 += 0.20000000298023224f * d * b13; - g40 += 0.20000000298023224f * d * b14; - g41 += 0.20000000298023224f * d * b15; - g42 += 0.20000000298023224f * d * b16; - } - { const float d = D(ii, k, 9); - g3 += 1.0f * d * b0; - } - { const float d = D(ii, k, 10); - g43 += 0.20000000298023224f * d * b12; - g44 += 0.20000000298023224f * d * b13; - g45 += 0.20000000298023224f * d * b14; - g46 += 0.20000000298023224f * d * b15; - g47 += 0.20000000298023224f * d * b16; - } - dL(ii, k, 0) = g0; - dL(ii, k, 1) = g1; - dL(ii, k, 2) = g2; - dL(ii, k, 3) = g3; - dL(ii, k, 4) = g4; - dL(ii, k, 5) = g5; - dL(ii, k, 6) = g6; - dL(ii, k, 7) = g7; - dL(ii, k, 8) = g8; - dL(ii, k, 9) = g9; - dL(ii, k, 10) = g10; - dL(ii, k, 11) = g11; - dL(ii, k, 12) = g12; - dL(ii, k, 13) = g13; - dL(ii, k, 14) = g14; - dL(ii, k, 15) = g15; - dL(ii, k, 16) = g16; - dL(ii, k, 17) = g17; - dL(ii, k, 18) = g18; - dL(ii, k, 19) = g19; - dL(ii, k, 20) = g20; - dL(ii, k, 21) = g21; - dL(ii, k, 22) = g22; - dL(ii, k, 23) = g23; - dL(ii, k, 24) = g24; - dL(ii, k, 25) = g25; - dL(ii, k, 26) = g26; - dL(ii, k, 27) = g27; - dL(ii, k, 28) = g28; - dL(ii, k, 29) = g29; - dL(ii, k, 30) = g30; - dL(ii, k, 31) = g31; - dL(ii, k, 32) = g32; - dL(ii, k, 33) = g33; - dL(ii, k, 34) = g34; - dL(ii, k, 35) = g35; - dL(ii, k, 36) = g36; - dL(ii, k, 37) = g37; - dL(ii, k, 38) = g38; - dL(ii, k, 39) = g39; - dL(ii, k, 40) = g40; - dL(ii, k, 41) = g41; - dL(ii, k, 42) = g42; - dL(ii, k, 43) = g43; - dL(ii, k, 44) = g44; - dL(ii, k, 45) = g45; - dL(ii, k, 46) = g46; - dL(ii, k, 47) = g47; - dL(ii, k, 48) = g48; - dL(ii, k, 49) = g49; - dL(ii, k, 50) = g50; - dL(ii, k, 51) = g51; - dL(ii, k, 52) = g52; - dL(ii, k, 53) = g53; - dL(ii, k, 54) = g54; - dL(ii, k, 55) = g55; - dL(ii, k, 56) = g56; - dL(ii, k, 57) = g57; - dL(ii, k, 58) = g58; - dL(ii, k, 59) = g59; - dL(ii, k, 60) = g60; - dL(ii, k, 61) = g61; - dL(ii, k, 62) = g62; - dL(ii, k, 63) = g63; - dL(ii, k, 64) = g64; - dL(ii, k, 65) = g65; - dL(ii, k, 66) = g66; - dL(ii, k, 67) = g67; - dL(ii, k, 68) = g68; - } - } - { - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a7 = L(ii, k, 7); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a23 = L(ii, k, 23); - const float a24 = L(ii, k, 24); - const float a25 = L(ii, k, 25); - const float a26 = L(ii, k, 26); - const float a27 = L(ii, k, 27); - const float a28 = L(ii, k, 28); - const float a29 = L(ii, k, 29); - const float a30 = L(ii, k, 30); - const float a31 = L(ii, k, 31); - const float a32 = L(ii, k, 32); - const float a38 = L(ii, k, 38); - const float a39 = L(ii, k, 39); - const float a40 = L(ii, k, 40); - const float a41 = L(ii, k, 41); - const float a42 = L(ii, k, 42); - const float a43 = L(ii, k, 43); - const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); - const float a62 = L(ii, k, 62); - const float a63 = L(ii, k, 63); - const float a64 = L(ii, k, 64); - const float a65 = L(ii, k, 65); - const float a66 = L(ii, k, 66); - const float a67 = L(ii, k, 67); - const float a68 = L(ii, k, 68); - float h0 = 0.0f; - float h4 = 0.0f; - float h5 = 0.0f; - float h6 = 0.0f; - float h12 = 0.0f; - float h13 = 0.0f; - float h14 = 0.0f; - float h15 = 0.0f; - float h16 = 0.0f; - float h24 = 0.0f; - float h25 = 0.0f; - float h26 = 0.0f; - float h27 = 0.0f; - float h28 = 0.0f; - float h29 = 0.0f; - float h30 = 0.0f; - { const float d = D(ii, k, 0); - h0 += 1.0f * d * a0; - } - { const float d = D(ii, k, 1); - h0 += 1.0f * d * a1; - } - { const float d = D(ii, k, 2); - h4 += 0.3333333432674408f * d * a7; - h5 += 0.3333333432674408f * d * a8; - h6 += 0.3333333432674408f * d * a9; - } - { const float d = D(ii, k, 3); - h12 += 0.20000000298023224f * d * a23; - h13 += 0.20000000298023224f * d * a24; - h14 += 0.20000000298023224f * d * a25; - h15 += 0.20000000298023224f * d * a26; - h16 += 0.20000000298023224f * d * a27; - } - { const float d = D(ii, k, 4); - h0 += 1.0f * d * a2; - } - { const float d = D(ii, k, 5); - h12 += 0.20000000298023224f * d * a28; - h13 += 0.20000000298023224f * d * a29; - h14 += 0.20000000298023224f * d * a30; - h15 += 0.20000000298023224f * d * a31; - h16 += 0.20000000298023224f * d * a32; - } - { const float d = D(ii, k, 6); - h24 += 0.1428571492433548f * d * a62; - h25 += 0.1428571492433548f * d * a63; - h26 += 0.1428571492433548f * d * a64; - h27 += 0.1428571492433548f * d * a65; - h28 += 0.1428571492433548f * d * a66; - h29 += 0.1428571492433548f * d * a67; - h30 += 0.1428571492433548f * d * a68; - } - { const float d = D(ii, k, 7); - h4 += 0.3333333432674408f * d * a10; - h5 += 0.3333333432674408f * d * a11; - h6 += 0.3333333432674408f * d * a12; - } - { const float d = D(ii, k, 8); - h12 += 0.20000000298023224f * d * a38; - h13 += 0.20000000298023224f * d * a39; - h14 += 0.20000000298023224f * d * a40; - h15 += 0.20000000298023224f * d * a41; - h16 += 0.20000000298023224f * d * a42; - } - { const float d = D(ii, k, 9); - h0 += 1.0f * d * a3; - } - { const float d = D(ii, k, 10); - h12 += 0.20000000298023224f * d * a43; - h13 += 0.20000000298023224f * d * a44; - h14 += 0.20000000298023224f * d * a45; - h15 += 0.20000000298023224f * d * a46; - h16 += 0.20000000298023224f * d * a47; - } - dR(ii, k, 0) += h0; - dR(ii, k, 4) += h4; - dR(ii, k, 5) += h5; - dR(ii, k, 6) += h6; - dR(ii, k, 12) += h12; - dR(ii, k, 13) += h13; - dR(ii, k, 14) += h14; - dR(ii, k, 15) += h15; - dR(ii, k, 16) += h16; - dR(ii, k, 24) += h24; - dR(ii, k, 25) += h25; - dR(ii, k, 26) += h26; - dR(ii, k, 27) += h27; - dR(ii, k, 28) += h28; - dR(ii, k, 29) += h29; - dR(ii, k, 30) += h30; - } -} - -constexpr int nt_BBBB = 156; -constexpr int tab_BBBB[156][3] = {{0,0,0}, {1,0,1}, {2,0,2}, {3,0,3}, {1,1,4}, {2,1,5}, {3,1,6}, {23,18,7}, {24,19,7}, {25,20,7}, {26,21,7}, {27,22,7}, {28,18,8}, {29,19,8}, {30,20,8}, {31,21,8}, {32,22,8}, {33,18,9}, {34,19,9}, {35,20,9}, {36,21,9}, {37,22,9}, {38,18,10}, {39,19,10}, {40,20,10}, {41,21,10}, {42,22,10}, {43,18,11}, {44,19,11}, {45,20,11}, {46,21,11}, {47,22,11}, {7,7,12}, {8,8,12}, {9,9,12}, {10,7,13}, {11,8,13}, {12,9,13}, {23,23,14}, {24,24,14}, {25,25,14}, {26,26,14}, {27,27,14}, {28,23,15}, {29,24,15}, {30,25,15}, {31,26,15}, {32,27,15}, {33,23,16}, {34,24,16}, {35,25,16}, {36,26,16}, {37,27,16}, {38,23,17}, {39,24,17}, {40,25,17}, {41,26,17}, {42,27,17}, {43,23,18}, {44,24,18}, {45,25,18}, {46,26,18}, {47,27,18}, {55,55,19}, {56,56,19}, {57,57,19}, {58,58,19}, {59,59,19}, {60,60,19}, {61,61,19}, {62,55,20}, {63,56,20}, {64,57,20}, {65,58,20}, {66,59,20}, {67,60,20}, {68,61,20}, {69,55,21}, {70,56,21}, {71,57,21}, {72,58,21}, {73,59,21}, {74,60,21}, {75,61,21}, {2,2,22}, {3,2,23}, {33,28,24}, {34,29,24}, {35,30,24}, {36,31,24}, {37,32,24}, {38,28,25}, {39,29,25}, {40,30,25}, {41,31,25}, {42,32,25}, {43,28,26}, {44,29,26}, {45,30,26}, {46,31,26}, {47,32,26}, {33,33,27}, {34,34,27}, {35,35,27}, {36,36,27}, {37,37,27}, {38,33,28}, {39,34,28}, {40,35,28}, {41,36,28}, {42,37,28}, {43,33,29}, {44,34,29}, {45,35,29}, {46,36,29}, {47,37,29}, {62,62,30}, {63,63,30}, {64,64,30}, {65,65,30}, {66,66,30}, {67,67,30}, {68,68,30}, {69,62,31}, {70,63,31}, {71,64,31}, {72,65,31}, {73,66,31}, {74,67,31}, {75,68,31}, {10,10,32}, {11,11,32}, {12,12,32}, {38,38,33}, {39,39,33}, {40,40,33}, {41,41,33}, {42,42,33}, {43,38,34}, {44,39,34}, {45,40,34}, {46,41,34}, {47,42,34}, {69,69,35}, {70,70,35}, {71,71,35}, {72,72,35}, {73,73,35}, {74,74,35}, {75,75,35}, {3,3,36}, {43,43,37}, {44,44,37}, {45,45,37}, {46,46,37}, {47,47,37}}; -constexpr double cg_BBBB[156] = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.3333333432674408, 0.3333333432674408, 0.3333333432674408, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 0.1428571492433548, 1.0, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224, 0.20000000298023224}; - -template -KOKKOS_INLINE_FUNCTION void fwd_BBBB(const V &L, const V &R, const V &out, const int ii, const int k) -{ - const float a0 = L(ii, k, 0); - const float a1 = L(ii, k, 1); - const float a2 = L(ii, k, 2); - const float a3 = L(ii, k, 3); - const float a7 = L(ii, k, 7); - const float a8 = L(ii, k, 8); - const float a9 = L(ii, k, 9); - const float a10 = L(ii, k, 10); - const float a11 = L(ii, k, 11); - const float a12 = L(ii, k, 12); - const float a18 = L(ii, k, 18); - const float a19 = L(ii, k, 19); - const float a20 = L(ii, k, 20); - const float a21 = L(ii, k, 21); - const float a22 = L(ii, k, 22); - const float a23 = L(ii, k, 23); - const float a24 = L(ii, k, 24); - const float a25 = L(ii, k, 25); - const float a26 = L(ii, k, 26); - const float a27 = L(ii, k, 27); - const float a28 = L(ii, k, 28); - const float a29 = L(ii, k, 29); - const float a30 = L(ii, k, 30); - const float a31 = L(ii, k, 31); - const float a32 = L(ii, k, 32); - const float a33 = L(ii, k, 33); - const float a34 = L(ii, k, 34); - const float a35 = L(ii, k, 35); - const float a36 = L(ii, k, 36); - const float a37 = L(ii, k, 37); - const float a38 = L(ii, k, 38); - const float a39 = L(ii, k, 39); - const float a40 = L(ii, k, 40); - const float a41 = L(ii, k, 41); - const float a42 = L(ii, k, 42); - const float a43 = L(ii, k, 43); - const float a44 = L(ii, k, 44); - const float a45 = L(ii, k, 45); - const float a46 = L(ii, k, 46); - const float a47 = L(ii, k, 47); - const float a55 = L(ii, k, 55); - const float a56 = L(ii, k, 56); - const float a57 = L(ii, k, 57); - const float a58 = L(ii, k, 58); - const float a59 = L(ii, k, 59); - const float a60 = L(ii, k, 60); - const float a61 = L(ii, k, 61); - const float a62 = L(ii, k, 62); - const float a63 = L(ii, k, 63); - const float a64 = L(ii, k, 64); - const float a65 = L(ii, k, 65); - const float a66 = L(ii, k, 66); - const float a67 = L(ii, k, 67); - const float a68 = L(ii, k, 68); - const float a69 = L(ii, k, 69); - const float a70 = L(ii, k, 70); - const float a71 = L(ii, k, 71); - const float a72 = L(ii, k, 72); - const float a73 = L(ii, k, 73); - const float a74 = L(ii, k, 74); - const float a75 = L(ii, k, 75); - out(ii, k, 0) = 1.0f * a0 * a0; - out(ii, k, 1) = 1.0f * a1 * a0; - out(ii, k, 2) = 1.0f * a2 * a0; - out(ii, k, 3) = 1.0f * a3 * a0; - out(ii, k, 4) = 1.0f * a1 * a1; - out(ii, k, 5) = 1.0f * a2 * a1; - out(ii, k, 6) = 1.0f * a3 * a1; - out(ii, k, 7) = 0.20000000298023224f * a23 * a18 + 0.20000000298023224f * a24 * a19 + 0.20000000298023224f * a25 * a20 + 0.20000000298023224f * a26 * a21 + 0.20000000298023224f * a27 * a22; - out(ii, k, 8) = 0.20000000298023224f * a28 * a18 + 0.20000000298023224f * a29 * a19 + 0.20000000298023224f * a30 * a20 + 0.20000000298023224f * a31 * a21 + 0.20000000298023224f * a32 * a22; - out(ii, k, 9) = 0.20000000298023224f * a33 * a18 + 0.20000000298023224f * a34 * a19 + 0.20000000298023224f * a35 * a20 + 0.20000000298023224f * a36 * a21 + 0.20000000298023224f * a37 * a22; - out(ii, k, 10) = 0.20000000298023224f * a38 * a18 + 0.20000000298023224f * a39 * a19 + 0.20000000298023224f * a40 * a20 + 0.20000000298023224f * a41 * a21 + 0.20000000298023224f * a42 * a22; - out(ii, k, 11) = 0.20000000298023224f * a43 * a18 + 0.20000000298023224f * a44 * a19 + 0.20000000298023224f * a45 * a20 + 0.20000000298023224f * a46 * a21 + 0.20000000298023224f * a47 * a22; - out(ii, k, 12) = 0.3333333432674408f * a7 * a7 + 0.3333333432674408f * a8 * a8 + 0.3333333432674408f * a9 * a9; - out(ii, k, 13) = 0.3333333432674408f * a10 * a7 + 0.3333333432674408f * a11 * a8 + 0.3333333432674408f * a12 * a9; - out(ii, k, 14) = 0.20000000298023224f * a23 * a23 + 0.20000000298023224f * a24 * a24 + 0.20000000298023224f * a25 * a25 + 0.20000000298023224f * a26 * a26 + 0.20000000298023224f * a27 * a27; - out(ii, k, 15) = 0.20000000298023224f * a28 * a23 + 0.20000000298023224f * a29 * a24 + 0.20000000298023224f * a30 * a25 + 0.20000000298023224f * a31 * a26 + 0.20000000298023224f * a32 * a27; - out(ii, k, 16) = 0.20000000298023224f * a33 * a23 + 0.20000000298023224f * a34 * a24 + 0.20000000298023224f * a35 * a25 + 0.20000000298023224f * a36 * a26 + 0.20000000298023224f * a37 * a27; - out(ii, k, 17) = 0.20000000298023224f * a38 * a23 + 0.20000000298023224f * a39 * a24 + 0.20000000298023224f * a40 * a25 + 0.20000000298023224f * a41 * a26 + 0.20000000298023224f * a42 * a27; - out(ii, k, 18) = 0.20000000298023224f * a43 * a23 + 0.20000000298023224f * a44 * a24 + 0.20000000298023224f * a45 * a25 + 0.20000000298023224f * a46 * a26 + 0.20000000298023224f * a47 * a27; - out(ii, k, 19) = 0.1428571492433548f * a55 * a55 + 0.1428571492433548f * a56 * a56 + 0.1428571492433548f * a57 * a57 + 0.1428571492433548f * a58 * a58 + 0.1428571492433548f * a59 * a59 + 0.1428571492433548f * a60 * a60 + 0.1428571492433548f * a61 * a61; - out(ii, k, 20) = 0.1428571492433548f * a62 * a55 + 0.1428571492433548f * a63 * a56 + 0.1428571492433548f * a64 * a57 + 0.1428571492433548f * a65 * a58 + 0.1428571492433548f * a66 * a59 + 0.1428571492433548f * a67 * a60 + 0.1428571492433548f * a68 * a61; - out(ii, k, 21) = 0.1428571492433548f * a69 * a55 + 0.1428571492433548f * a70 * a56 + 0.1428571492433548f * a71 * a57 + 0.1428571492433548f * a72 * a58 + 0.1428571492433548f * a73 * a59 + 0.1428571492433548f * a74 * a60 + 0.1428571492433548f * a75 * a61; - out(ii, k, 22) = 1.0f * a2 * a2; - out(ii, k, 23) = 1.0f * a3 * a2; - out(ii, k, 24) = 0.20000000298023224f * a33 * a28 + 0.20000000298023224f * a34 * a29 + 0.20000000298023224f * a35 * a30 + 0.20000000298023224f * a36 * a31 + 0.20000000298023224f * a37 * a32; - out(ii, k, 25) = 0.20000000298023224f * a38 * a28 + 0.20000000298023224f * a39 * a29 + 0.20000000298023224f * a40 * a30 + 0.20000000298023224f * a41 * a31 + 0.20000000298023224f * a42 * a32; - out(ii, k, 26) = 0.20000000298023224f * a43 * a28 + 0.20000000298023224f * a44 * a29 + 0.20000000298023224f * a45 * a30 + 0.20000000298023224f * a46 * a31 + 0.20000000298023224f * a47 * a32; - out(ii, k, 27) = 0.20000000298023224f * a33 * a33 + 0.20000000298023224f * a34 * a34 + 0.20000000298023224f * a35 * a35 + 0.20000000298023224f * a36 * a36 + 0.20000000298023224f * a37 * a37; - out(ii, k, 28) = 0.20000000298023224f * a38 * a33 + 0.20000000298023224f * a39 * a34 + 0.20000000298023224f * a40 * a35 + 0.20000000298023224f * a41 * a36 + 0.20000000298023224f * a42 * a37; - out(ii, k, 29) = 0.20000000298023224f * a43 * a33 + 0.20000000298023224f * a44 * a34 + 0.20000000298023224f * a45 * a35 + 0.20000000298023224f * a46 * a36 + 0.20000000298023224f * a47 * a37; - out(ii, k, 30) = 0.1428571492433548f * a62 * a62 + 0.1428571492433548f * a63 * a63 + 0.1428571492433548f * a64 * a64 + 0.1428571492433548f * a65 * a65 + 0.1428571492433548f * a66 * a66 + 0.1428571492433548f * a67 * a67 + 0.1428571492433548f * a68 * a68; - out(ii, k, 31) = 0.1428571492433548f * a69 * a62 + 0.1428571492433548f * a70 * a63 + 0.1428571492433548f * a71 * a64 + 0.1428571492433548f * a72 * a65 + 0.1428571492433548f * a73 * a66 + 0.1428571492433548f * a74 * a67 + 0.1428571492433548f * a75 * a68; - out(ii, k, 32) = 0.3333333432674408f * a10 * a10 + 0.3333333432674408f * a11 * a11 + 0.3333333432674408f * a12 * a12; - out(ii, k, 33) = 0.20000000298023224f * a38 * a38 + 0.20000000298023224f * a39 * a39 + 0.20000000298023224f * a40 * a40 + 0.20000000298023224f * a41 * a41 + 0.20000000298023224f * a42 * a42; - out(ii, k, 34) = 0.20000000298023224f * a43 * a38 + 0.20000000298023224f * a44 * a39 + 0.20000000298023224f * a45 * a40 + 0.20000000298023224f * a46 * a41 + 0.20000000298023224f * a47 * a42; - out(ii, k, 35) = 0.1428571492433548f * a69 * a69 + 0.1428571492433548f * a70 * a70 + 0.1428571492433548f * a71 * a71 + 0.1428571492433548f * a72 * a72 + 0.1428571492433548f * a73 * a73 + 0.1428571492433548f * a74 * a74 + 0.1428571492433548f * a75 * a75; - out(ii, k, 36) = 1.0f * a3 * a3; - out(ii, k, 37) = 0.20000000298023224f * a43 * a43 + 0.20000000298023224f * a44 * a44 + 0.20000000298023224f * a45 * a45 + 0.20000000298023224f * a46 * a46 + 0.20000000298023224f * a47 * a47; -} - -template -KOKKOS_INLINE_FUNCTION void rev_BBBB(const V &F, const V &, const V &D, const V &dF, const V &, const int ii, const int k) -{ - const float f0 = F(ii, k, 0); - const float f1 = F(ii, k, 1); - const float f2 = F(ii, k, 2); - const float f3 = F(ii, k, 3); - const float f7 = F(ii, k, 7); - const float f8 = F(ii, k, 8); - const float f9 = F(ii, k, 9); - const float f10 = F(ii, k, 10); - const float f11 = F(ii, k, 11); - const float f12 = F(ii, k, 12); - const float f18 = F(ii, k, 18); - const float f19 = F(ii, k, 19); - const float f20 = F(ii, k, 20); - const float f21 = F(ii, k, 21); - const float f22 = F(ii, k, 22); - const float f23 = F(ii, k, 23); - const float f24 = F(ii, k, 24); - const float f25 = F(ii, k, 25); - const float f26 = F(ii, k, 26); - const float f27 = F(ii, k, 27); - const float f28 = F(ii, k, 28); - const float f29 = F(ii, k, 29); - const float f30 = F(ii, k, 30); - const float f31 = F(ii, k, 31); - const float f32 = F(ii, k, 32); - const float f33 = F(ii, k, 33); - const float f34 = F(ii, k, 34); - const float f35 = F(ii, k, 35); - const float f36 = F(ii, k, 36); - const float f37 = F(ii, k, 37); - const float f38 = F(ii, k, 38); - const float f39 = F(ii, k, 39); - const float f40 = F(ii, k, 40); - const float f41 = F(ii, k, 41); - const float f42 = F(ii, k, 42); - const float f43 = F(ii, k, 43); - const float f44 = F(ii, k, 44); - const float f45 = F(ii, k, 45); - const float f46 = F(ii, k, 46); - const float f47 = F(ii, k, 47); - const float f55 = F(ii, k, 55); - const float f56 = F(ii, k, 56); - const float f57 = F(ii, k, 57); - const float f58 = F(ii, k, 58); - const float f59 = F(ii, k, 59); - const float f60 = F(ii, k, 60); - const float f61 = F(ii, k, 61); - const float f62 = F(ii, k, 62); - const float f63 = F(ii, k, 63); - const float f64 = F(ii, k, 64); - const float f65 = F(ii, k, 65); - const float f66 = F(ii, k, 66); - const float f67 = F(ii, k, 67); - const float f68 = F(ii, k, 68); - const float f69 = F(ii, k, 69); - const float f70 = F(ii, k, 70); - const float f71 = F(ii, k, 71); - const float f72 = F(ii, k, 72); - const float f73 = F(ii, k, 73); - const float f74 = F(ii, k, 74); - const float f75 = F(ii, k, 75); - { - float g0 = 0.0f; - float g1 = 0.0f; - float g2 = 0.0f; - float g3 = 0.0f; - float g4 = 0.0f; - float g5 = 0.0f; - float g6 = 0.0f; - float g7 = 0.0f; - float g8 = 0.0f; - float g9 = 0.0f; - float g10 = 0.0f; - float g11 = 0.0f; - float g12 = 0.0f; - float g13 = 0.0f; - float g14 = 0.0f; - float g15 = 0.0f; - float g16 = 0.0f; - float g17 = 0.0f; - float g18 = 0.0f; - float g19 = 0.0f; - float g20 = 0.0f; - float g21 = 0.0f; - float g22 = 0.0f; - float g23 = 0.0f; - float g24 = 0.0f; - float g25 = 0.0f; - float g26 = 0.0f; - float g27 = 0.0f; - float g28 = 0.0f; - float g29 = 0.0f; - float g30 = 0.0f; - float g31 = 0.0f; - float g32 = 0.0f; - float g33 = 0.0f; - float g34 = 0.0f; - float g35 = 0.0f; - float g36 = 0.0f; - float g37 = 0.0f; - float g38 = 0.0f; - float g39 = 0.0f; - float g40 = 0.0f; - float g41 = 0.0f; - float g42 = 0.0f; - float g43 = 0.0f; - float g44 = 0.0f; - float g45 = 0.0f; - float g46 = 0.0f; - float g47 = 0.0f; - { const float d = D(ii, k, 0); - g0 += 1.0f * d * f0; - g0 += 1.0f * d * f0; - } - { const float d = D(ii, k, 1); - g1 += 1.0f * d * f0; - g0 += 1.0f * d * f1; - } - { const float d = D(ii, k, 2); - g2 += 1.0f * d * f0; - g0 += 1.0f * d * f2; - } - { const float d = D(ii, k, 3); - g3 += 1.0f * d * f0; - g0 += 1.0f * d * f3; - } - { const float d = D(ii, k, 4); - g1 += 1.0f * d * f1; - g1 += 1.0f * d * f1; - } - { const float d = D(ii, k, 5); - g2 += 1.0f * d * f1; - g1 += 1.0f * d * f2; - } - { const float d = D(ii, k, 6); - g3 += 1.0f * d * f1; - g1 += 1.0f * d * f3; - } - { const float d = D(ii, k, 7); - g23 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f23; - g24 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f24; - g25 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f25; - g26 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f26; - g27 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f27; - } - { const float d = D(ii, k, 8); - g28 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f28; - g29 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f29; - g30 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f30; - g31 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f31; - g32 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f32; - } - { const float d = D(ii, k, 9); - g33 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f36; - g37 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f37; - } - { const float d = D(ii, k, 10); - g38 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f41; - g42 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f42; - } - { const float d = D(ii, k, 11); - g43 += 0.20000000298023224f * d * f18; - g18 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f19; - g19 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f20; - g20 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f21; - g21 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f22; - g22 += 0.20000000298023224f * d * f47; - } - { const float d = D(ii, k, 12); - g7 += 0.3333333432674408f * d * f7; - g7 += 0.3333333432674408f * d * f7; - g8 += 0.3333333432674408f * d * f8; - g8 += 0.3333333432674408f * d * f8; - g9 += 0.3333333432674408f * d * f9; - g9 += 0.3333333432674408f * d * f9; - } - { const float d = D(ii, k, 13); - g10 += 0.3333333432674408f * d * f7; - g7 += 0.3333333432674408f * d * f10; - g11 += 0.3333333432674408f * d * f8; - g8 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f9; - g9 += 0.3333333432674408f * d * f12; - } - { const float d = D(ii, k, 14); - g23 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f23; - g24 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f24; - g25 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f25; - g26 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f26; - g27 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f27; - } - { const float d = D(ii, k, 15); - g28 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f28; - g29 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f29; - g30 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f30; - g31 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f31; - g32 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f32; - } - { const float d = D(ii, k, 16); - g33 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f36; - g37 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f37; - } - { const float d = D(ii, k, 17); - g38 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f41; - g42 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f42; - } - { const float d = D(ii, k, 18); - g43 += 0.20000000298023224f * d * f23; - g23 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f24; - g24 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f25; - g25 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f26; - g26 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f27; - g27 += 0.20000000298023224f * d * f47; - } - { const float d = D(ii, k, 22); - g2 += 1.0f * d * f2; - g2 += 1.0f * d * f2; - } - { const float d = D(ii, k, 23); - g3 += 1.0f * d * f2; - g2 += 1.0f * d * f3; - } - { const float d = D(ii, k, 24); - g33 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f36; - g37 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f37; - } - { const float d = D(ii, k, 25); - g38 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f41; - g42 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f42; - } - { const float d = D(ii, k, 26); - g43 += 0.20000000298023224f * d * f28; - g28 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f29; - g29 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f30; - g30 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f31; - g31 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f32; - g32 += 0.20000000298023224f * d * f47; - } - { const float d = D(ii, k, 27); - g33 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f33; - g34 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f34; - g35 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f35; - g36 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f36; - g37 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f37; - } - { const float d = D(ii, k, 28); - g38 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f41; - g42 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f42; - } - { const float d = D(ii, k, 29); - g43 += 0.20000000298023224f * d * f33; - g33 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f34; - g34 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f35; - g35 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f36; - g36 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f37; - g37 += 0.20000000298023224f * d * f47; - } - { const float d = D(ii, k, 32); - g10 += 0.3333333432674408f * d * f10; - g10 += 0.3333333432674408f * d * f10; - g11 += 0.3333333432674408f * d * f11; - g11 += 0.3333333432674408f * d * f11; - g12 += 0.3333333432674408f * d * f12; - g12 += 0.3333333432674408f * d * f12; - } - { const float d = D(ii, k, 33); - g38 += 0.20000000298023224f * d * f38; - g38 += 0.20000000298023224f * d * f38; - g39 += 0.20000000298023224f * d * f39; - g39 += 0.20000000298023224f * d * f39; - g40 += 0.20000000298023224f * d * f40; - g40 += 0.20000000298023224f * d * f40; - g41 += 0.20000000298023224f * d * f41; - g41 += 0.20000000298023224f * d * f41; - g42 += 0.20000000298023224f * d * f42; - g42 += 0.20000000298023224f * d * f42; - } - { const float d = D(ii, k, 34); - g43 += 0.20000000298023224f * d * f38; - g38 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f39; - g39 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f40; - g40 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f41; - g41 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f42; - g42 += 0.20000000298023224f * d * f47; - } - { const float d = D(ii, k, 36); - g3 += 1.0f * d * f3; - g3 += 1.0f * d * f3; - } - { const float d = D(ii, k, 37); - g43 += 0.20000000298023224f * d * f43; - g43 += 0.20000000298023224f * d * f43; - g44 += 0.20000000298023224f * d * f44; - g44 += 0.20000000298023224f * d * f44; - g45 += 0.20000000298023224f * d * f45; - g45 += 0.20000000298023224f * d * f45; - g46 += 0.20000000298023224f * d * f46; - g46 += 0.20000000298023224f * d * f46; - g47 += 0.20000000298023224f * d * f47; - g47 += 0.20000000298023224f * d * f47; - } - dF(ii, k, 0) = g0; - dF(ii, k, 1) = g1; - dF(ii, k, 2) = g2; - dF(ii, k, 3) = g3; - dF(ii, k, 4) = g4; - dF(ii, k, 5) = g5; - dF(ii, k, 6) = g6; - dF(ii, k, 7) = g7; - dF(ii, k, 8) = g8; - dF(ii, k, 9) = g9; - dF(ii, k, 10) = g10; - dF(ii, k, 11) = g11; - dF(ii, k, 12) = g12; - dF(ii, k, 13) = g13; - dF(ii, k, 14) = g14; - dF(ii, k, 15) = g15; - dF(ii, k, 16) = g16; - dF(ii, k, 17) = g17; - dF(ii, k, 18) = g18; - dF(ii, k, 19) = g19; - dF(ii, k, 20) = g20; - dF(ii, k, 21) = g21; - dF(ii, k, 22) = g22; - dF(ii, k, 23) = g23; - dF(ii, k, 24) = g24; - dF(ii, k, 25) = g25; - dF(ii, k, 26) = g26; - dF(ii, k, 27) = g27; - dF(ii, k, 28) = g28; - dF(ii, k, 29) = g29; - dF(ii, k, 30) = g30; - dF(ii, k, 31) = g31; - dF(ii, k, 32) = g32; - dF(ii, k, 33) = g33; - dF(ii, k, 34) = g34; - dF(ii, k, 35) = g35; - dF(ii, k, 36) = g36; - dF(ii, k, 37) = g37; - dF(ii, k, 38) = g38; - dF(ii, k, 39) = g39; - dF(ii, k, 40) = g40; - dF(ii, k, 41) = g41; - dF(ii, k, 42) = g42; - dF(ii, k, 43) = g43; - dF(ii, k, 44) = g44; - dF(ii, k, 45) = g45; - dF(ii, k, 46) = g46; - dF(ii, k, 47) = g47; - } - { - float g48 = 0.0f; - float g49 = 0.0f; - float g50 = 0.0f; - float g51 = 0.0f; - float g52 = 0.0f; - float g53 = 0.0f; - float g54 = 0.0f; - float g55 = 0.0f; - float g56 = 0.0f; - float g57 = 0.0f; - float g58 = 0.0f; - float g59 = 0.0f; - float g60 = 0.0f; - float g61 = 0.0f; - float g62 = 0.0f; - float g63 = 0.0f; - float g64 = 0.0f; - float g65 = 0.0f; - float g66 = 0.0f; - float g67 = 0.0f; - float g68 = 0.0f; - float g69 = 0.0f; - float g70 = 0.0f; - float g71 = 0.0f; - float g72 = 0.0f; - float g73 = 0.0f; - float g74 = 0.0f; - float g75 = 0.0f; - { const float d = D(ii, k, 19); - g55 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f55; - g56 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f56; - g57 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f57; - g58 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f58; - g59 += 0.1428571492433548f * d * f59; - g59 += 0.1428571492433548f * d * f59; - g60 += 0.1428571492433548f * d * f60; - g60 += 0.1428571492433548f * d * f60; - g61 += 0.1428571492433548f * d * f61; - g61 += 0.1428571492433548f * d * f61; - } - { const float d = D(ii, k, 20); - g62 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f62; - g63 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f63; - g64 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f64; - g65 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f65; - g66 += 0.1428571492433548f * d * f59; - g59 += 0.1428571492433548f * d * f66; - g67 += 0.1428571492433548f * d * f60; - g60 += 0.1428571492433548f * d * f67; - g68 += 0.1428571492433548f * d * f61; - g61 += 0.1428571492433548f * d * f68; - } - { const float d = D(ii, k, 21); - g69 += 0.1428571492433548f * d * f55; - g55 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f56; - g56 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f57; - g57 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f58; - g58 += 0.1428571492433548f * d * f72; - g73 += 0.1428571492433548f * d * f59; - g59 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f60; - g60 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f61; - g61 += 0.1428571492433548f * d * f75; - } - { const float d = D(ii, k, 30); - g62 += 0.1428571492433548f * d * f62; - g62 += 0.1428571492433548f * d * f62; - g63 += 0.1428571492433548f * d * f63; - g63 += 0.1428571492433548f * d * f63; - g64 += 0.1428571492433548f * d * f64; - g64 += 0.1428571492433548f * d * f64; - g65 += 0.1428571492433548f * d * f65; - g65 += 0.1428571492433548f * d * f65; - g66 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f66; - g67 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f67; - g68 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f68; - } - { const float d = D(ii, k, 31); - g69 += 0.1428571492433548f * d * f62; - g62 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f63; - g63 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f64; - g64 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f65; - g65 += 0.1428571492433548f * d * f72; - g73 += 0.1428571492433548f * d * f66; - g66 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f67; - g67 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f68; - g68 += 0.1428571492433548f * d * f75; - } - { const float d = D(ii, k, 35); - g69 += 0.1428571492433548f * d * f69; - g69 += 0.1428571492433548f * d * f69; - g70 += 0.1428571492433548f * d * f70; - g70 += 0.1428571492433548f * d * f70; - g71 += 0.1428571492433548f * d * f71; - g71 += 0.1428571492433548f * d * f71; - g72 += 0.1428571492433548f * d * f72; - g72 += 0.1428571492433548f * d * f72; - g73 += 0.1428571492433548f * d * f73; - g73 += 0.1428571492433548f * d * f73; - g74 += 0.1428571492433548f * d * f74; - g74 += 0.1428571492433548f * d * f74; - g75 += 0.1428571492433548f * d * f75; - g75 += 0.1428571492433548f * d * f75; - } - dF(ii, k, 48) = g48; - dF(ii, k, 49) = g49; - dF(ii, k, 50) = g50; - dF(ii, k, 51) = g51; - dF(ii, k, 52) = g52; - dF(ii, k, 53) = g53; - dF(ii, k, 54) = g54; - dF(ii, k, 55) = g55; - dF(ii, k, 56) = g56; - dF(ii, k, 57) = g57; - dF(ii, k, 58) = g58; - dF(ii, k, 59) = g59; - dF(ii, k, 60) = g60; - dF(ii, k, 61) = g61; - dF(ii, k, 62) = g62; - dF(ii, k, 63) = g63; - dF(ii, k, 64) = g64; - dF(ii, k, 65) = g65; - dF(ii, k, 66) = g66; - dF(ii, k, 67) = g67; - dF(ii, k, 68) = g68; - dF(ii, k, 69) = g69; - dF(ii, k, 70) = g70; - dF(ii, k, 71) = g71; - dF(ii, k, 72) = g72; - dF(ii, k, 73) = g73; - dF(ii, k, 74) = g74; - dF(ii, k, 75) = g75; - } -} - -} // namespace G2LShape_SMAXM -} // namespace kk -} // namespace grace - -#endif diff --git a/libgrace/include/grace/kk/grace_1l_fused_kk.h b/libgrace/include/grace/kk/grace_1l_fused_kk.h index deb0319..38613e0 100644 --- a/libgrace/include/grace/kk/grace_1l_fused_kk.h +++ b/libgrace/include/grace/kk/grace_1l_fused_kk.h @@ -87,15 +87,11 @@ class Grace1LFusedKK : public Grace1LKK { template void fc_fwd(const FCMeta &, const t_nn3 &, const t_nn3 &, const t_nn3 &); template void fc_bwd(const FCMeta &, const t_nn3 &, const t_nn3 &, const t_nn3 &); template void fc_fwd4(const FCMeta &, const t_nn3 &, const t_nn3 &, const t_nn3 &); - void prod_fwd(const ProdMeta &, const t_nn3 &, const t_nn3 &, const t_nn3 &); - void prod_rev(const ProdMeta &, const t_nn3 &, const t_nn3 &, const t_nn3 &, const t_nn3 &, const t_nn3 &, - bool acc_left); template void red_fwd(); template void red_bwd(); protected: - int shape_id = 0; // 1: generated GRACE-1L large shape - int ng_AAA = 0; + int cgt_AA = -1, cgt_AAA = -1, cgt_AAAA = -1; // per CG product the compiled table (cg_tables.h), -1: generic V3 d_splR; // [N][nradmax * (lmax+1)][4] cubic coefficients in t V1 d_lfrom; // l of lm V2 d_vir; // [inum][6] diff --git a/libgrace/include/grace/kk/grace_1l_fused_kk_impl.h b/libgrace/include/grace/kk/grace_1l_fused_kk_impl.h index 0c4e808..a1de6ff 100644 --- a/libgrace/include/grace/kk/grace_1l_fused_kk_impl.h +++ b/libgrace/include/grace/kk/grace_1l_fused_kk_impl.h @@ -8,7 +8,7 @@ #include "grace/kk/fused_dense.h" #include "grace/radial_x.h" #include "grace/kk/fused_hip_bonds.h" -#include "grace/kk/g1l_shape_large.h" +#include "grace/kk/cg_tables.h" #include #include @@ -26,11 +26,12 @@ constexpr int G1LF_MAX_LMAX = GRACE_FUSED_MAX_LMAX; constexpr int G1LF_TEAM = 256; // threads per atom in the bond kernels constexpr int G1LF_NB = 32; // neighbours staged per batch (forward) constexpr int G1LF_MAX_ACC = 16; // per-thread accumulators: nradmax * nlm <= TEAM * MAX_ACC -constexpr int G1LF_NO = 64; // FC widths compiled for: 64 (GRACE-1L large) and 32 (medium) +constexpr int G1LF_NO = 64; // FC widths compiled for: 64 (GRACE-1L large), 48 (GRACE-OFF large), 32 (medium), +constexpr int G1LF_NO_OFF = 48; // 20 (GRACE-OFF small) constexpr int G1LF_NO_M = 32; +constexpr int G1LF_NO_S = 20; constexpr int G1LF_NIN = 64; // max channel width of the rho sources -constexpr int G1LF_NIR = 32; // right-input (A) width of the generic reverse FC (32 and 64: fc_bwd_rt) -constexpr int G1LF_NRMAX = 64; // max radial width (zero-padded to 32 or 64 when the kernels need it) +constexpr int G1LF_NIR = 32; // right-input (A) width of the generic reverse FC (32, 48 and 64: fc_bwd_rt) constexpr int G1LF_CC = 8; // rho connections per thread (forward) constexpr int G1LF_RQ = 5; // rho output quads: rho_n_out <= 20 (17; legacy models 13), weights padded to 20 @@ -42,13 +43,28 @@ using namespace g1lf_detail; /* ---------------------------------------------------------------------- */ -// FC width no / radial width nr (nlm harmonics) runs on the compiled kernels -inline bool g1lf_fc_ok(int no) { return no == G1LF_NO || no == G1LF_NO_M; } +// FC width no / radial width nr (nlm harmonics) runs on the compiled kernels. Radial: any width up to G1LF_NIR (the +// generic reverse FC takes it as right input), 48 or 64 (fc_bwd_rt); the bond kernels take any width (the team-of-256 +// backward leaves TEAM % nr threads idle) +inline bool g1lf_fc_ok(int no) { return no == G1LF_NO || no == G1LF_NO_OFF || no == G1LF_NO_M || no == G1LF_NO_S; } inline bool g1lf_radial_ok(int nr, int nlm) { - return nr <= G1LF_NRMAX && G1LF_TEAM % nr == 0 && nr * nlm <= G1LF_TEAM * G1LF_MAX_ACC; + return (nr <= G1LF_NIR || nr == G1LF_NO_OFF || nr == G1LF_NO) && nr * nlm <= G1LF_TEAM * G1LF_MAX_ACC; +} +// the narrowest compiled FC width >= w +inline int g1lf_pad_width(int w) +{ + return w <= G1LF_NO_S ? G1LF_NO_S : w <= G1LF_NO_M ? G1LF_NO_M : w <= G1LF_NO_OFF ? G1LF_NO_OFF : G1LF_NO; } +// the statement with NO the model's compiled FC width +#define G1LF_FC(...) do { switch (this->fc_n_out) { \ + case G1LF_NO: { constexpr int NO = G1LF_NO; __VA_ARGS__; break; } \ + case G1LF_NO_OFF: { constexpr int NO = G1LF_NO_OFF; __VA_ARGS__; break; } \ + case G1LF_NO_M: { constexpr int NO = G1LF_NO_M; __VA_ARGS__; break; } \ + case G1LF_NO_S: { constexpr int NO = G1LF_NO_S; __VA_ARGS__; break; } \ + default: GRACE_KK_ERROR("GRACE-1L/KK: FC width {} not compiled", this->fc_n_out); } } while (0) + template std::array Grace1LFusedKK::pad_widths(const GRACE1LModel &m) { @@ -56,9 +72,9 @@ std::array Grace1LFusedKK::pad_widths(const GRACE1LM if (m.has_uq || m.lmax > G1LF_MAX_LMAX || m.rho_n_out > 4 * G1LF_RQ || (g1lf_radial_ok(m.nradmax, nlm) && g1lf_fc_ok(fc))) return {0, 0}; - // radial and FC widths padded to the compiled FC widths 32 / 64 - int nr = g1lf_radial_ok(m.nradmax, nlm) ? m.nradmax : m.nradmax <= G1LF_NO_M ? G1LF_NO_M : G1LF_NO; - int no = fc <= G1LF_NO_M ? G1LF_NO_M : G1LF_NO; + // radial and FC widths padded to the compiled FC widths 20 / 32 / 48 / 64 + int nr = g1lf_radial_ok(m.nradmax, nlm) ? m.nradmax : g1lf_pad_width(m.nradmax); + int no = g1lf_pad_width(fc); if (m.AAA_right_A) nr = no = std::max(nr, no); // legacy AAA = AA1 x A: one channel count if (m.nradmax > nr || fc > no || !g1lf_radial_ok(nr, nlm)) return {0, 0}; return {nr, no}; @@ -109,8 +125,8 @@ void Grace1LFusedKK::setup() if (!g1lf_radial_ok(this->nradmax, nlm)) GRACE_KK_ERROR("GRACE-1L/KK: radial width {} outside the compiled bond kernels", this->nradmax); if (!g1lf_fc_ok(this->fc_n_out)) - GRACE_KK_ERROR("GRACE-1L/KK: FC width {} not compiled (must be {} or {})", this->fc_n_out, G1LF_NO, - G1LF_NO_M); + GRACE_KK_ERROR("GRACE-1L/KK: FC width {} not compiled (must be {}, {}, {} or {})", this->fc_n_out, G1LF_NO_S, + G1LF_NO_M, G1LF_NO_OFF, G1LF_NO); if (this->rho_n_out > 4 * G1LF_RQ) GRACE_KK_ERROR("GRACE-1L/KK: rho width {} > {}", this->rho_n_out, 4 * G1LF_RQ); auto live = [](const GRACE1LModel::CGProduct &p, bool left, bool right) { std::vector v; @@ -130,23 +146,12 @@ void Grace1LFusedKK::setup() build_prod_meta(pm_AAA, m.prod_AAA, false); build_prod_meta(pm_AAAA, m.prod_AAAA, true); build_red_meta(); - { // shape-specialised CG products (generated): table match up to fp32 rounding - auto same = [](const GRACE1LModel::CGProduct &p, int nt, const int (*tab)[3], const double *cg) { - if ((int) p.cg_coeff.size() != nt) return false; - for (int t = 0; t < nt; t++) - if (p.left_ind[t] != tab[t][0] || p.right_ind[t] != tab[t][1] || p.m_sum_ind[t] != tab[t][2] || - std::fabs(p.cg_coeff[t] - cg[t]) > 1e-6 * std::max(1.0, std::fabs(cg[t]))) return false; - return true; - }; - namespace S = G1LShape_L; - shape_id = (same(m.prod_AA, S::nt_AA, S::tab_AA, S::cg_AA) && same(m.prod_AAA, S::nt_AAA, S::tab_AAA, S::cg_AAA) && - same(m.prod_AAAA, S::nt_AAAA, S::tab_AAAA, S::cg_AAAA)) ? 1 : 0; - if (no_shape) shape_id = 0; - ng_AAA = 0; - for (int x : m.prod_AAA.left_ind) ng_AAA = std::max(ng_AAA, x + 1); - this->log.info(fmt("[GRACE-1L/KK] CG products {}\n", - shape_id ? "specialised: GRACE-1L large shape" : "generic (tables differ from the compiled shape)")); - } + // shape-specialised CG products (cg_tables.h), product by product + cgt_AA = cgt_match(cgt::G1L_AA{}, m.prod_AA); cgt_AAA = cgt_match(cgt::G1L_AAA{}, m.prod_AAA); + cgt_AAAA = cgt_match(cgt::G1L_AAAA{}, m.prod_AAAA); + if (no_shape) cgt_AA = cgt_AAA = cgt_AAAA = -1; + this->log.info(fmt("[GRACE-1L/KK] CG products {}\n", + cgt_summary({{"AA", cgt_AA}, {"AAA", cgt_AAA}, {"AAAA", cgt_AAAA}}))); { d_lfrom = V1("g1lf:lfrom", nlm); auto h = Kokkos::create_mirror_view(d_lfrom); @@ -228,8 +233,8 @@ void Grace1LFusedKK::fused_A() if (a_mfma) { // CDNA: matrix-core basis (begin_run) auto run = [&](auto cpl) { GraceFusedKK::a_fwd_mfma( - "g1lf:A", this->chunk_size, this->chunk_offset, this->nradmax, 1.0f, spline_n, this->d_A, this->x, - this->type, this->d_map, bond_list(), this->d_ilist, this->d_bond_cutoff, this->d_z_tr, + "g1lf:A", this->lmax, this->chunk_size, this->chunk_offset, this->nradmax, 1.0f, spline_n, this->d_A, + this->x, this->type, this->d_map, bond_list(), this->d_ilist, this->d_bond_cutoff, this->d_z_tr, this->couple_eq, this->couple_bit1, this->couple_bit2, this->couple_lambda, this->d_mask, this->d_idx_sph, this->alm, this->blm, this->cl, this->dl, d_splR); }; @@ -360,11 +365,12 @@ void Grace1LFusedKK::fused_bond_bwd() if (bwd_wave) { // GPU: one 64-thread team per atom, thread = bond (begin_run) auto run = [&](auto cpl) { GraceFusedKK::bond_bwd_wave( - "g1lf:bond_bwd", this->chunk_size, this->chunk_offset, this->nradmax, 1.0f, spline_n, this->d_A_adj, - this->f, d_vir, this->x, this->type, this->d_map, bond_list(), this->d_ilist, this->d_bond_cutoff, - this->d_z_tr, this->couple_eq, this->couple_bit1, this->couple_bit2, this->couple_lambda, this->d_mask, - this->d_dedl, this->d_idx_sph, this->alm, this->blm, this->cl, this->dl, d_splR, this->vflag_global != 0, - this->vflag_atom != 0, this->cvflag_atom != 0, this->d_vatom, this->d_cvatom); + "g1lf:bond_bwd", this->lmax, this->chunk_size, this->chunk_offset, this->nradmax, 1.0f, spline_n, + this->d_A_adj, this->f, d_vir, this->x, this->type, this->d_map, bond_list(), this->d_ilist, + this->d_bond_cutoff, this->d_z_tr, this->couple_eq, this->couple_bit1, this->couple_bit2, + this->couple_lambda, this->d_mask, this->d_dedl, this->d_idx_sph, this->alm, this->blm, this->cl, this->dl, + d_splR, this->vflag_global != 0, this->vflag_atom != 0, this->cvflag_atom != 0, this->d_vatom, + this->d_cvatom); }; if (this->couple_eq) run(std::true_type{}); else run(std::false_type{}); @@ -612,19 +618,6 @@ void Grace1LFusedKK::fc_bwd(const FCMeta &m, const t_nn3 &do GraceFusedKK::fc_bwd(m, this->chunk_size, dout, din_l, din_r); } -template -void Grace1LFusedKK::prod_fwd(const ProdMeta &m, const t_nn3 &L, const t_nn3 &R, const t_nn3 &out) -{ - GraceFusedKK::prod_fwd(m, this->chunk_size, L, R, out); -} - -template -void Grace1LFusedKK::prod_rev(const ProdMeta &m, const t_nn3 &L, const t_nn3 &R, const t_nn3 &D, const t_nn3 &dL, - const t_nn3 &dR, bool acc_left) -{ - GraceFusedKK::prod_rev(m, this->chunk_size, L, R, D, dL, dR, acc_left); -} - /* ---------------------------------------------------------------------- @@ -801,8 +794,10 @@ template void Grace1LFusedKK::stage_bond_fwd(int, int) { fused_A(); } // GPU: the run's compact bond list (every bond kernel of the run reads it) and the bond kernels for this model; one -// line on stderr per process: the kernels of the first run and why. The wave-per-atom backward is the default on HIP -// only: on CUDA the team-of-256 kernel is faster for 1L (A100, g1lf:bond_bwd 77 vs 88 ms per call, C-diamond-125k). +// line on stderr per process: the kernels of the first run and why. The wave-per-atom backward is the default on HIP, +// and on CUDA for lmax 3; at lmax 4 the team-of-256 kernel is faster on CUDA (A100, g1lf:bond_bwd 77 vs 88 ms per +// call, C-diamond-125k), at lmax 3 the wave kernel (RTX 4070 SUPER, GRACE-OFF-1L-small, water 5k: 0.566 -> 0.541 +// us/atom/step). template void Grace1LFusedKK::begin_run() { @@ -814,7 +809,7 @@ void Grace1LFusedKK::begin_run() const int lmax = this->lmax, NR = this->nradmax; const KernelChoice a = GraceFusedKK::fused_mfma(GraceFusedKK::a_fwd_mfma_fits(lmax, NR)); const KernelChoice w = GraceFusedKK::fused_wave_bwd(GraceFusedKK::bond_bwd_wave_fits(lmax, NR), - is_hip_v); + is_hip_v || lmax == 3); a_mfma = a.on; bwd_wave = w.on; static std::once_flag logged; @@ -826,44 +821,17 @@ void Grace1LFusedKK::begin_run() } } -#define G1LF_SHAPE_FWD(P, Lv, Rv, Ov) \ - { \ - auto L_ = Lv; auto R_ = Rv; auto O_ = Ov; \ - const int cs = this->chunk_size, nc = (int) O_.extent(1); \ - Kokkos::parallel_for("g1lf:ShapeProd_" #P, Kokkos::RangePolicy>(0, cs * nc), \ - KOKKOS_LAMBDA(const int q) { \ - const int k = q / cs, ii = q - k * cs; \ - G1LShape_L::fwd_##P(L_, R_, O_, ii, k); \ - }); \ - } -#define G1LF_SHAPE_REV(P, Lv, Rv, Dv, dLv, dRv, NG) \ - { \ - auto L_ = Lv; auto R_ = Rv; auto D_ = Dv; auto dL_ = dLv; auto dR_ = dRv; \ - const int cs = this->chunk_size, nc = (int) D_.extent(1), nx = (int) dL_.extent(2), ng = NG; \ - Kokkos::parallel_for("g1lf:ShapeRevProd_" #P, Kokkos::RangePolicy>(0, cs * nc), \ - KOKKOS_LAMBDA(const int q) { \ - const int k = q / cs, ii = q - k * cs; \ - G1LShape_L::rev_##P(L_, R_, D_, dL_, dR_, ii, k); \ - for (int x = ng; x < nx; x++) dL_(ii, k, x) = 0.0f; \ - }); \ - } - template void Grace1LFusedKK::stage_dense_fwd() { - if (this->fc_n_out == G1LF_NO) fc_fwd4(fcm_A1, this->d_A, this->d_A, this->d_A1); - else fc_fwd4(fcm_A1, this->d_A, this->d_A, this->d_A1); - if (shape_id) G1LF_SHAPE_FWD(AA, this->d_A1, this->d_A1, this->d_AA) - else prod_fwd(pm_AA, this->d_A1, this->d_A1, this->d_AA); - if (this->fc_n_out == G1LF_NO) fc_fwd4(fcm_AA1, this->d_AA, this->d_A, this->d_AA1); - else fc_fwd4(fcm_AA1, this->d_AA, this->d_A, this->d_AA1); + G1LF_FC(fc_fwd4(fcm_A1, this->d_A, this->d_A, this->d_A1)); + cg_prod_fwd(cgt::G1L_AA{}, cgt_AA, pm_AA, "g1lf:ShapeProd_AA", this->chunk_size, this->d_A1, this->d_A1, this->d_AA); + G1LF_FC(fc_fwd4(fcm_AA1, this->d_AA, this->d_A, this->d_AA1)); const auto &right = this->grace_model->AAA_right_A ? this->d_A : this->d_A1; // AAA = AA1 x A1 (legacy: x A) - if (shape_id) G1LF_SHAPE_FWD(AAA, this->d_AA1, right, this->d_AAA) - else prod_fwd(pm_AAA, this->d_AA1, right, this->d_AAA); - if (this->fc_n_out == G1LF_NO) fc_fwd4(fcm_AA2, this->d_AA, this->d_A, this->d_AA2); - else fc_fwd4(fcm_AA2, this->d_AA, this->d_A, this->d_AA2); - if (shape_id) G1LF_SHAPE_FWD(AAAA, this->d_AA2, this->d_AA2, this->d_AAAA) - else prod_fwd(pm_AAAA, this->d_AA2, this->d_AA2, this->d_AAAA); + cg_prod_fwd(cgt::G1L_AAA{}, cgt_AAA, pm_AAA, "g1lf:ShapeProd_AAA", this->chunk_size, this->d_AA1, right, this->d_AAA); + G1LF_FC(fc_fwd4(fcm_AA2, this->d_AA, this->d_A, this->d_AA2)); + cg_prod_fwd(cgt::G1L_AAAA{}, cgt_AAAA, pm_AAAA, "g1lf:ShapeProd_AAAA", this->chunk_size, + this->d_AA2, this->d_AA2, this->d_AAAA); } template @@ -877,23 +845,17 @@ template void Grace1LFusedKK::stage_dense_bwd() { red_bwd(); - if (shape_id) G1LF_SHAPE_REV(AAAA, this->d_AA2, this->d_AA2, this->d_AAAA_adj, this->d_AA2_adj, this->d_AA2_adj, - (int) this->d_AA2_adj.extent(2)) - else prod_rev(pm_AAAA, this->d_AA2, this->d_AA2, this->d_AAAA_adj, this->d_AA2_adj, this->d_AA2_adj, false); - if (this->fc_n_out == G1LF_NO) fc_bwd(fcm_AA2, this->d_AA2_adj, this->d_AA_adj, this->d_A_adj); - else fc_bwd(fcm_AA2, this->d_AA2_adj, this->d_AA_adj, this->d_A_adj); + cg_prod_rev(cgt::G1L_AAAA{}, cgt_AAAA, pm_AAAA, "g1lf:ShapeRevProd_AAAA", this->chunk_size, this->d_AA2, + this->d_AA2, this->d_AAAA_adj, this->d_AA2_adj, this->d_AA2_adj); + G1LF_FC(fc_bwd(fcm_AA2, this->d_AA2_adj, this->d_AA_adj, this->d_A_adj)); const bool aaa_a = this->grace_model->AAA_right_A; const auto &right = aaa_a ? this->d_A : this->d_A1, &right_adj = aaa_a ? this->d_A_adj : this->d_A1_adj; - if (shape_id) G1LF_SHAPE_REV(AAA, this->d_AA1, right, this->d_AAA_adj, this->d_AA1_adj, right_adj, ng_AAA) - else prod_rev(pm_AAA, this->d_AA1, right, this->d_AAA_adj, this->d_AA1_adj, right_adj, false); - if (this->fc_n_out == G1LF_NO) fc_bwd(fcm_AA1, this->d_AA1_adj, this->d_AA_adj, this->d_A_adj); - else fc_bwd(fcm_AA1, this->d_AA1_adj, this->d_AA_adj, this->d_A_adj); - // AA reverse accumulates into A1_adj (generated with --acc AA); nothing to zero beyond the generated range - if (shape_id) G1LF_SHAPE_REV(AA, this->d_A1, this->d_A1, this->d_AA_adj, this->d_A1_adj, this->d_A1_adj, - (int) this->d_A1_adj.extent(2)) - else prod_rev(pm_AA, this->d_A1, this->d_A1, this->d_AA_adj, this->d_A1_adj, this->d_A1_adj, true); - if (this->fc_n_out == G1LF_NO) fc_bwd(fcm_A1, this->d_A1_adj, this->d_A_adj, this->d_A_adj); - else fc_bwd(fcm_A1, this->d_A1_adj, this->d_A_adj, this->d_A_adj); + cg_prod_rev(cgt::G1L_AAA{}, cgt_AAA, pm_AAA, "g1lf:ShapeRevProd_AAA", this->chunk_size, this->d_AA1, right, + this->d_AAA_adj, this->d_AA1_adj, right_adj); + G1LF_FC(fc_bwd(fcm_AA1, this->d_AA1_adj, this->d_AA_adj, this->d_A_adj)); + cg_prod_rev(cgt::G1L_AA{}, cgt_AA, pm_AA, "g1lf:ShapeRevProd_AA", this->chunk_size, this->d_A1, this->d_A1, + this->d_AA_adj, this->d_A1_adj, this->d_A1_adj); // accumulates into A1_adj + G1LF_FC(fc_bwd(fcm_A1, this->d_A1_adj, this->d_A_adj, this->d_A_adj)); } template diff --git a/libgrace/include/grace/kk/grace_2l_fused_kk.h b/libgrace/include/grace/kk/grace_2l_fused_kk.h index f56b044..84dd6dc 100644 --- a/libgrace/include/grace/kk/grace_2l_fused_kk.h +++ b/libgrace/include/grace/kk/grace_2l_fused_kk.h @@ -60,8 +60,8 @@ class Grace2LFusedKK : public Grace2LKK { protected: std::vector st_A, st_A1, st_AA1, st_AA2; std::vector st_rho; - int shape_id = 0; // compiled CG shape matching the model: 0 generic, 1 medium, 2 large - int ng_AA = 0, ng_AAA = 0, ng_AAAA = 0, ng_BB = 0, ng_BBB = 0, ng_BBBB = 0; + // per CG product the compiled table (cg_tables.h) equal to the model's, -1: generic kernels + int cgt_AA = -1, cgt_AAA = -1, cgt_AAAA = -1, cgt_BB = -1, cgt_BBB = -1, cgt_BBBB = -1; // Radial tables: per interval k the cubic coefficients in t = N x - k, outputs o = n * (lmax+1) + l. V3 d_splR; // [N, L1_nradmax*(lmax+1), 4] @@ -194,8 +194,6 @@ class Grace2LFusedKK : public Grace2LKK { void stage_rev_fc_BB1() override; void stage_rev_fc_B1() override; void build_prod_meta(ProdMeta &, const GRACE2LModel::CGProduct &, bool self); - void prod_fwd(const ProdMeta &, const t_nn3 &, const t_nn3 &, const t_nn3 &); - void prod_rev(const ProdMeta &, const t_nn3 &, const t_nn3 &, const t_nn3 &, const t_nn3 &, const t_nn3 &); void stage_prod_AA() override; void stage_prod_AAA() override; void stage_prod_AAAA() override; diff --git a/libgrace/include/grace/kk/grace_2l_fused_kk_impl.h b/libgrace/include/grace/kk/grace_2l_fused_kk_impl.h index 2b8b1fb..f6f5abe 100644 --- a/libgrace/include/grace/kk/grace_2l_fused_kk_impl.h +++ b/libgrace/include/grace/kk/grace_2l_fused_kk_impl.h @@ -8,8 +8,7 @@ #include "grace/kk/fused_dense.h" #include "grace/radial_x.h" #include "grace/kk/fused_hip_bonds.h" -#include "grace/kk/g2l_shape_smaxl.h" -#include "grace/kk/g2l_shape_smaxm.h" +#include "grace/kk/cg_tables.h" #include #include @@ -62,9 +61,10 @@ inline size_t g2lf_fwd_t_shmem(bool gpu, int nim, int NI, int nl, int CB) // its 32 KB M allows; MI250X 31k: 86.3 -> 73.6 ms per call; else 256) constexpr int g2lf_bwd_team(bool hip, int nim) { return hip && nim > 4 ? 512 : G2LF_TEAM; } // Layer-2 backward, teams per SM (shared memory) with 3 geometry rounds / with one: one round when it turns one team -// into two (CUDA, 100 KB per SM, 2L-large: 1.3-2.1 % faster on L40S, 4-5 % on RTX 3060, 3 % on RTX 4070 SUPER); not -// generally the round count with more teams (A100, 164 KB: two teams with 3 rounds are 1-2 % faster than more with -// one). 0 teams (not known, e.g. HIP): the 3 rounds. +// into two (CUDA, 100 KB per SM, 2L-large: 1.3-2.1 % faster on L40S, 4-5 % on RTX 3060, 3 % on RTX 4070 SUPER; HIP, +// 64 KB per CU, GRACE-OFF-2L-large CB 16: one team -> three, MI250X 5k water 9.5 -> 7.5 ms per call); not generally +// the round count with more teams (A100, 164 KB: two teams with 3 rounds are 1-2 % faster than more with one; +// MI250X, 2L-medium CB 32, two teams either way: 2.4 -> 3.2 ms with one). 0 teams (not known): the 3 rounds. constexpr bool g2lf_one_round_better(int teams3, int teams1) { return teams3 == 1 && teams1 >= 2; } // M [channel][y][I], Ba, the geometry (Y, G, 8 values) of NBG = rounds NBR bonds, the force partials of the team // (TB threads); ints @@ -261,35 +261,14 @@ void Grace2LFusedKK::setup() build_prod_meta(pm_AA, mm.prod_AA, true); build_prod_meta(pm_AAA, mm.prod_AAA, false); build_prod_meta(pm_AAAA, mm.prod_AAAA, true); build_prod_meta(pm_BB, mm.prod_BB, true); build_prod_meta(pm_BBB, mm.prod_BBB, false); build_prod_meta(pm_BBBB, mm.prod_BBBB, true); - { // shape-specialised CG products (generated per architecture): table match up to fp32 rounding - auto same = [](const GRACE2LModel::CGProduct &p, int nt, const int (*tab)[3], const double *cg) { - if ((int) p.cg_coeff.size() != nt) return false; - for (int t = 0; t < nt; t++) - if (p.left_ind[t] != tab[t][0] || p.right_ind[t] != tab[t][1] || p.m_sum_ind[t] != tab[t][2] || - std::fabs(p.cg_coeff[t] - cg[t]) > 1e-6 * std::max(1.0, std::fabs(cg[t]))) return false; // fp32 literals - return true; - }; -#define G2LF_SHAPE_MATCH(NS) \ - (same(mm.prod_AA, NS::nt_AA, NS::tab_AA, NS::cg_AA) && same(mm.prod_AAA, NS::nt_AAA, NS::tab_AAA, NS::cg_AAA) && \ - same(mm.prod_AAAA, NS::nt_AAAA, NS::tab_AAAA, NS::cg_AAAA) && same(mm.prod_BB, NS::nt_BB, NS::tab_BB, NS::cg_BB) && \ - same(mm.prod_BBB, NS::nt_BBB, NS::tab_BBB, NS::cg_BBB) && same(mm.prod_BBBB, NS::nt_BBBB, NS::tab_BBBB, NS::cg_BBBB)) - shape_id = 0; - if (G2LF_SHAPE_MATCH(G2LShape_SMAXM)) shape_id = 1; - else if (G2LF_SHAPE_MATCH(G2LShape_SMAXL)) shape_id = 2; -#undef G2LF_SHAPE_MATCH - if (no_shape) shape_id = 0; - auto ngen = [](const GRACE2LModel::CGProduct &p, bool self) { - int m = 0; - for (size_t t = 0; t < p.left_ind.size(); t++) m = std::max(m, p.left_ind[t] + 1); - if (self) for (size_t t = 0; t < p.right_ind.size(); t++) m = std::max(m, p.right_ind[t] + 1); - return m; - }; - ng_AA = ngen(mm.prod_AA, true); ng_AAA = ngen(mm.prod_AAA, false); ng_AAAA = ngen(mm.prod_AAAA, true); - ng_BB = ngen(mm.prod_BB, true); ng_BBB = ngen(mm.prod_BBB, false); ng_BBBB = ngen(mm.prod_BBBB, true); + { // shape-specialised CG products (cg_tables.h), product by product + cgt_AA = cgt_match(cgt::G2L_AA{}, mm.prod_AA); cgt_AAA = cgt_match(cgt::G2L_AAA{}, mm.prod_AAA); + cgt_AAAA = cgt_match(cgt::G2L_AAAA{}, mm.prod_AAAA); cgt_BB = cgt_match(cgt::G2L_BB{}, mm.prod_BB); + cgt_BBB = cgt_match(cgt::G2L_BBB{}, mm.prod_BBB); cgt_BBBB = cgt_match(cgt::G2L_BBBB{}, mm.prod_BBBB); + if (no_shape) cgt_AA = cgt_AAA = cgt_AAAA = cgt_BB = cgt_BBB = cgt_BBBB = -1; this->log.info(fmt("[GRACE-2L/KK] CG products {}\n", - shape_id == 1 ? "specialised: medium shape (GRACE-2L-(SMAX-)OMAT-medium)" : - shape_id == 2 ? "specialised: large shape (GRACE-2L-(SMAX-)OMAT-large)" : - "generic (model tables differ from the compiled shapes)")); + cgt_summary({{"AA", cgt_AA}, {"AAA", cgt_AAA}, {"AAAA", cgt_AAAA}, + {"BB", cgt_BB}, {"BBB", cgt_BBB}, {"BBBB", cgt_BBBB}}))); } { // YI pairs grouped by (I channel, l) so the backward loops index registers statically const int P = this->n_yi_pairs, NG = G2LF_MAX_I * (G2LF_MAX_LMAX + 1); @@ -439,8 +418,8 @@ void Grace2LFusedKK::fused_layer1_A() if (a_mfma) { // CDNA: matrix-core basis (begin_run) auto run = [&](auto cpl) { GraceFusedKK::a_fwd_mfma( - "g2lf:L1_A", this->chunk_size, this->chunk_offset, this->L1_nradmax, this->L1_inv_avg_n_neigh, spline_n, - this->d_A, this->x, this->type, this->d_map, bond_list(), this->d_ilist, this->d_bond_cutoff, + "g2lf:L1_A", this->lmax, this->chunk_size, this->chunk_offset, this->L1_nradmax, this->L1_inv_avg_n_neigh, + spline_n, this->d_A, this->x, this->type, this->d_map, bond_list(), this->d_ilist, this->d_bond_cutoff, this->d_z_tr_A, this->couple_eq, this->couple_bit1, this->couple_bit2, this->couple_lambda, this->d_mask, this->d_idx_sph, this->alm, this->blm, this->cl, this->dl, d_splR); }; @@ -762,8 +741,8 @@ int Grace2LFusedKK::l2_channel_block(bool bwd, int *rounds) return 0; }; // backward, GPU teams of 256: the geometry of 3 rounds per step; one round where no channel block fits with 3 - // (CUDA with Kokkos 5.1, 48 KB: 2L-large CB 16 with 43 KB instead of 58 KB) or where it doubles the teams per SM - // (g2lf_one_round_better) + // (CUDA with Kokkos 5.1, 48 KB: 2L-large CB 16 with 43 KB instead of 58 KB) or where it turns one team per SM / CU + // into two or more (g2lf_one_round_better) int r = (bwd && gpu && team <= 256) ? 3 : 1, CB = widest(r); if (r == 3) { const int CB1 = widest(1); @@ -1310,8 +1289,8 @@ void Grace2LFusedKK::fused_layer2_bwd_t() using member = typename team_policy::member_type; // scratch (g2lf_bwd_t_shmem): M [NMS][CB], Ba [nlm][CB], Y [NBG][nlm], G [NBG][3 nlm], geo [NBG][8], Fs [TB][3]; ints. // GPU, teams of 256: the bond geometry of NBG = 3 NBR bonds per step, then three rounds of NBR (fewer geometry steps - // and barriers; 7 KB more scratch: still two teams per CU for the 4-function message) where it fits - // (l2_channel_block); teams of 512: NBG = NBR + // and barriers; more scratch) where it fits and does not cost teams per SM / CU (l2_channel_block); teams of 512: + // NBG = NBR const int NBG = rounds * NBR; const int nf = NMS * CB + nlm * CB + NBG * (4 * nlm + 8) + 3 * TB; team_policy pol(cs * nblk, TB); @@ -1834,8 +1813,8 @@ void Grace2LFusedKK::fused_layer1_bwd() if (bwd_wave) { // GPU: one 64-thread team per atom, thread = bond (begin_run) auto run = [&](auto cpl) { GraceFusedKK::bond_bwd_wave( - "g2lf:L1_bwd", this->chunk_size, this->chunk_offset, this->L1_nradmax, this->L1_inv_avg_n_neigh, spline_n, - this->d_A_adj, this->f, d_vir, this->x, this->type, this->d_map, bond_list(), this->d_ilist, + "g2lf:L1_bwd", this->lmax, this->chunk_size, this->chunk_offset, this->L1_nradmax, this->L1_inv_avg_n_neigh, + spline_n, this->d_A_adj, this->f, d_vir, this->x, this->type, this->d_map, bond_list(), this->d_ilist, this->d_bond_cutoff, this->d_z_tr_A, this->couple_eq, this->couple_bit1, this->couple_bit2, this->couple_lambda, this->d_mask, this->d_dedl, this->d_idx_sph, this->alm, this->blm, this->cl, this->dl, d_splR, this->vflag_global != 0, this->vflag_atom != 0, this->cvflag_atom != 0, this->d_vatom, @@ -2098,19 +2077,6 @@ void Grace2LFusedKK::fc_bwd(const FCMeta &m, const t_nn3 &do GraceFusedKK::fc_bwd(m, this->chunk_size, dout, din_l, din_r); } -template -void Grace2LFusedKK::prod_fwd(const ProdMeta &m, const t_nn3 &L, const t_nn3 &R, const t_nn3 &out) -{ - GraceFusedKK::prod_fwd(m, this->chunk_size, L, R, out); -} - -template -void Grace2LFusedKK::prod_rev(const ProdMeta &m, const t_nn3 &L, const t_nn3 &R, const t_nn3 &D, const t_nn3 &dL, - const t_nn3 &dR) -{ - GraceFusedKK::prod_rev(m, this->chunk_size, L, R, D, dL, dR); -} - // GPU (CUDA and HIP): the fused FC kernels (no BLAS) through the backend-neutral hook of the base engine; host // backends keep the plain FC kernels of the base engine template @@ -2147,52 +2113,42 @@ void Grace2LFusedKK::stage_rev_fc_B1() { G2LF_W(fc_bwdchunk_size, nc = (int) O_.extent(1); \ - Kokkos::parallel_for("g2lf:ShapeProd_" #P, Kokkos::RangePolicy>(0, cs * nc), \ - KOKKOS_LAMBDA(const int q) { \ - const int k = q / cs, ii = q - k * cs; \ - NS::fwd_##P(L_, R_, O_, ii, k); \ - }); \ - } -#define G2LF_SHAPE_REV(NS, P, Lv, Rv, Dv, dLv, dRv, NG) \ - { \ - auto L_ = Lv; auto R_ = Rv; auto D_ = Dv; auto dL_ = dLv; auto dR_ = dRv; \ - const int cs = this->chunk_size, nc = (int) D_.extent(1), nx = (int) dL_.extent(2), ng = NG; \ - Kokkos::parallel_for("g2lf:ShapeRevProd_" #P, Kokkos::RangePolicy>(0, cs * nc), \ - KOKKOS_LAMBDA(const int q) { \ - const int k = q / cs, ii = q - k * cs; \ - NS::rev_##P(L_, R_, D_, dL_, dR_, ii, k); \ - for (int x = ng; x < nx; x++) dL_(ii, k, x) = 0.0f; \ - }); \ - } - template void Grace2LFusedKK::stage_prod_AA() -{ if (shape_id == 1) G2LF_SHAPE_FWD(G2LShape_SMAXM, AA, this->d_A1, this->d_A1, this->d_AA) else if (shape_id == 2) G2LF_SHAPE_FWD(G2LShape_SMAXL, AA, this->d_A1, this->d_A1, this->d_AA) else prod_fwd(pm_AA, this->d_A1, this->d_A1, this->d_AA); } +{ cg_prod_fwd(cgt::G2L_AA{}, cgt_AA, pm_AA, "g2lf:ShapeProd_AA", this->chunk_size, + this->d_A1, this->d_A1, this->d_AA); } template void Grace2LFusedKK::stage_prod_AAA() -{ if (shape_id == 1) G2LF_SHAPE_FWD(G2LShape_SMAXM, AAA, this->d_AA1, this->d_A, this->d_AAA) else if (shape_id == 2) G2LF_SHAPE_FWD(G2LShape_SMAXL, AAA, this->d_AA1, this->d_A, this->d_AAA) else prod_fwd(pm_AAA, this->d_AA1, this->d_A, this->d_AAA); } +{ cg_prod_fwd(cgt::G2L_AAA{}, cgt_AAA, pm_AAA, "g2lf:ShapeProd_AAA", this->chunk_size, + this->d_AA1, this->d_A, this->d_AAA); } template void Grace2LFusedKK::stage_prod_AAAA() -{ if (shape_id == 1) G2LF_SHAPE_FWD(G2LShape_SMAXM, AAAA, this->d_AA2, this->d_AA2, this->d_AAAA) else if (shape_id == 2) G2LF_SHAPE_FWD(G2LShape_SMAXL, AAAA, this->d_AA2, this->d_AA2, this->d_AAAA) else prod_fwd(pm_AAAA, this->d_AA2, this->d_AA2, this->d_AAAA); } +{ cg_prod_fwd(cgt::G2L_AAAA{}, cgt_AAAA, pm_AAAA, "g2lf:ShapeProd_AAAA", this->chunk_size, + this->d_AA2, this->d_AA2, this->d_AAAA); } template void Grace2LFusedKK::stage_prod_BB() -{ if (shape_id == 1) G2LF_SHAPE_FWD(G2LShape_SMAXM, BB, this->d_B1, this->d_B1, this->d_BB) else if (shape_id == 2) G2LF_SHAPE_FWD(G2LShape_SMAXL, BB, this->d_B1, this->d_B1, this->d_BB) else prod_fwd(pm_BB, this->d_B1, this->d_B1, this->d_BB); } +{ cg_prod_fwd(cgt::G2L_BB{}, cgt_BB, pm_BB, "g2lf:ShapeProd_BB", this->chunk_size, + this->d_B1, this->d_B1, this->d_BB); } template void Grace2LFusedKK::stage_prod_BBB() -{ if (shape_id == 1) G2LF_SHAPE_FWD(G2LShape_SMAXM, BBB, this->d_BB1, this->d_B, this->d_BBB) else if (shape_id == 2) G2LF_SHAPE_FWD(G2LShape_SMAXL, BBB, this->d_BB1, this->d_B, this->d_BBB) else prod_fwd(pm_BBB, this->d_BB1, this->d_B, this->d_BBB); } +{ cg_prod_fwd(cgt::G2L_BBB{}, cgt_BBB, pm_BBB, "g2lf:ShapeProd_BBB", this->chunk_size, + this->d_BB1, this->d_B, this->d_BBB); } template void Grace2LFusedKK::stage_prod_BBBB() -{ if (shape_id == 1) G2LF_SHAPE_FWD(G2LShape_SMAXM, BBBB, this->d_BB2, this->d_BB2, this->d_BBBB) else if (shape_id == 2) G2LF_SHAPE_FWD(G2LShape_SMAXL, BBBB, this->d_BB2, this->d_BB2, this->d_BBBB) else prod_fwd(pm_BBBB, this->d_BB2, this->d_BB2, this->d_BBBB); } +{ cg_prod_fwd(cgt::G2L_BBBB{}, cgt_BBBB, pm_BBBB, "g2lf:ShapeProd_BBBB", this->chunk_size, + this->d_BB2, this->d_BB2, this->d_BBBB); } template void Grace2LFusedKK::stage_rev_prod_AA() -{ if (shape_id == 1) G2LF_SHAPE_REV(G2LShape_SMAXM, AA, this->d_A1, this->d_A1, this->d_AA_adj, this->d_A1_adj, this->d_A1_adj, ng_AA) else if (shape_id == 2) G2LF_SHAPE_REV(G2LShape_SMAXL, AA, this->d_A1, this->d_A1, this->d_AA_adj, this->d_A1_adj, this->d_A1_adj, ng_AA) else prod_rev(pm_AA, this->d_A1, this->d_A1, this->d_AA_adj, this->d_A1_adj, this->d_A1_adj); } +{ cg_prod_rev(cgt::G2L_AA{}, cgt_AA, pm_AA, "g2lf:ShapeRevProd_AA", this->chunk_size, + this->d_A1, this->d_A1, this->d_AA_adj, this->d_A1_adj, this->d_A1_adj); } template void Grace2LFusedKK::stage_rev_prod_AAA() -{ if (shape_id == 1) G2LF_SHAPE_REV(G2LShape_SMAXM, AAA, this->d_AA1, this->d_A, this->d_AAA_adj, this->d_AA1_adj, this->d_A_adj, ng_AAA) else if (shape_id == 2) G2LF_SHAPE_REV(G2LShape_SMAXL, AAA, this->d_AA1, this->d_A, this->d_AAA_adj, this->d_AA1_adj, this->d_A_adj, ng_AAA) else prod_rev(pm_AAA, this->d_AA1, this->d_A, this->d_AAA_adj, this->d_AA1_adj, this->d_A_adj); } +{ cg_prod_rev(cgt::G2L_AAA{}, cgt_AAA, pm_AAA, "g2lf:ShapeRevProd_AAA", this->chunk_size, + this->d_AA1, this->d_A, this->d_AAA_adj, this->d_AA1_adj, this->d_A_adj); } template void Grace2LFusedKK::stage_rev_prod_AAAA() -{ if (shape_id == 1) G2LF_SHAPE_REV(G2LShape_SMAXM, AAAA, this->d_AA2, this->d_AA2, this->d_AAAA_adj, this->d_AA2_adj, this->d_AA2_adj, ng_AAAA) else if (shape_id == 2) G2LF_SHAPE_REV(G2LShape_SMAXL, AAAA, this->d_AA2, this->d_AA2, this->d_AAAA_adj, this->d_AA2_adj, this->d_AA2_adj, ng_AAAA) else prod_rev(pm_AAAA, this->d_AA2, this->d_AA2, this->d_AAAA_adj, this->d_AA2_adj, this->d_AA2_adj); } +{ cg_prod_rev(cgt::G2L_AAAA{}, cgt_AAAA, pm_AAAA, "g2lf:ShapeRevProd_AAAA", this->chunk_size, + this->d_AA2, this->d_AA2, this->d_AAAA_adj, this->d_AA2_adj, this->d_AA2_adj); } template void Grace2LFusedKK::stage_rev_prod_BB() -{ if (shape_id == 1) G2LF_SHAPE_REV(G2LShape_SMAXM, BB, this->d_B1, this->d_B1, this->d_BB_adj, this->d_B1_adj, this->d_B1_adj, ng_BB) else if (shape_id == 2) G2LF_SHAPE_REV(G2LShape_SMAXL, BB, this->d_B1, this->d_B1, this->d_BB_adj, this->d_B1_adj, this->d_B1_adj, ng_BB) else prod_rev(pm_BB, this->d_B1, this->d_B1, this->d_BB_adj, this->d_B1_adj, this->d_B1_adj); } +{ cg_prod_rev(cgt::G2L_BB{}, cgt_BB, pm_BB, "g2lf:ShapeRevProd_BB", this->chunk_size, + this->d_B1, this->d_B1, this->d_BB_adj, this->d_B1_adj, this->d_B1_adj); } template void Grace2LFusedKK::stage_rev_prod_BBB() -{ if (shape_id == 1) G2LF_SHAPE_REV(G2LShape_SMAXM, BBB, this->d_BB1, this->d_B, this->d_BBB_adj, this->d_BB1_adj, this->d_B_adj, ng_BBB) else if (shape_id == 2) G2LF_SHAPE_REV(G2LShape_SMAXL, BBB, this->d_BB1, this->d_B, this->d_BBB_adj, this->d_BB1_adj, this->d_B_adj, ng_BBB) else prod_rev(pm_BBB, this->d_BB1, this->d_B, this->d_BBB_adj, this->d_BB1_adj, this->d_B_adj); } +{ cg_prod_rev(cgt::G2L_BBB{}, cgt_BBB, pm_BBB, "g2lf:ShapeRevProd_BBB", this->chunk_size, + this->d_BB1, this->d_B, this->d_BBB_adj, this->d_BB1_adj, this->d_B_adj); } template void Grace2LFusedKK::stage_rev_prod_BBBB() -{ if (shape_id == 1) G2LF_SHAPE_REV(G2LShape_SMAXM, BBBB, this->d_BB2, this->d_BB2, this->d_BBBB_adj, this->d_BB2_adj, this->d_BB2_adj, ng_BBBB) else if (shape_id == 2) G2LF_SHAPE_REV(G2LShape_SMAXL, BBBB, this->d_BB2, this->d_BB2, this->d_BBBB_adj, this->d_BB2_adj, this->d_BB2_adj, ng_BBBB) else prod_rev(pm_BBBB, this->d_BB2, this->d_BB2, this->d_BBBB_adj, this->d_BB2_adj, this->d_BB2_adj); } +{ cg_prod_rev(cgt::G2L_BBBB{}, cgt_BBBB, pm_BBBB, "g2lf:ShapeRevProd_BBBB", this->chunk_size, + this->d_BB2, this->d_BB2, this->d_BBBB_adj, this->d_BB2_adj, this->d_BB2_adj); } /* ---------------------------------------------------------------------- ReduceN without atomics, several reducers sharing input tensors in one pass: diff --git a/libgrace/include/grace/kk/grace_2l_kk_impl.h b/libgrace/include/grace/kk/grace_2l_kk_impl.h index 86024fb..323ce88 100644 --- a/libgrace/include/grace/kk/grace_2l_kk_impl.h +++ b/libgrace/include/grace/kk/grace_2l_kk_impl.h @@ -1330,7 +1330,7 @@ Grace2LKK::run(const RunInput &in) NNScalar sq_sum = 0.0; for (int k = 1; k < n_out_ln; k++) sq_sum += rho_in(ii, k) * rho_in(ii, k); - NNScalar rms_inv = rms ? 1.0 / Kokkos::sqrt(sq_sum / nrms + 1e-8) : 1.0; + NNScalar rms_inv = rms ? 1.0 / Kokkos::sqrt(sq_sum / nrms + GRACE2LModel::rms_norm_eps) : 1.0; for (int k = 1; k < n_out_ln; k++) { NNScalar val = rho_in(ii, k) * rms_inv * scale(k - 1); lnout(ii, k) = val; @@ -1507,7 +1507,7 @@ Grace2LKK::run(const RunInput &in) NNScalar sq_sum = 0.0; for (int k = 0; k < n_out_ln; k++) sq_sum += I2_in(ii, k) * I2_in(ii, k); - NNScalar rms_inv = rms ? 1.0 / Kokkos::sqrt(sq_sum / nrms + 1e-8) : 1.0; + NNScalar rms_inv = rms ? 1.0 / Kokkos::sqrt(sq_sum / nrms + GRACE2LModel::rms_norm_eps) : 1.0; for (int k = 0; k < n_out_ln; k++) lnout(ii, k) = I2_in(ii, k) * rms_inv * scale(k); }); @@ -1683,7 +1683,7 @@ Grace2LKK::run(const RunInput &in) NNScalar sq_sum = 0.0; for (int k = 0; k < n_out_ln; k++) sq_sum += I2_in(ii, k) * I2_in(ii, k); - NNScalar rms_inv = rms ? 1.0 / Kokkos::sqrt(sq_sum / nrms + 1e-8) : 1.0; + NNScalar rms_inv = rms ? 1.0 / Kokkos::sqrt(sq_sum / nrms + GRACE2LModel::rms_norm_eps) : 1.0; // dot = Σ_k d_ln[k] * ln_out[k] (without the RMSNorm: 0, the identity) NNScalar dot = 0.0; @@ -1866,7 +1866,7 @@ Grace2LKK::run(const RunInput &in) NNScalar sq_sum = 0.0; for (int k = 1; k < n_out_ln; k++) sq_sum += rho_in(ii, k) * rho_in(ii, k); - NNScalar rms_inv = rms ? 1.0 / Kokkos::sqrt(sq_sum / nrms + 1e-8) : 1.0; + NNScalar rms_inv = rms ? 1.0 / Kokkos::sqrt(sq_sum / nrms + GRACE2LModel::rms_norm_eps) : 1.0; // dot = Σ_{k=1}^{n-1} d_ln[k] * ln_out[k] (without the RMSNorm: 0, the identity) NNScalar dot = 0.0; diff --git a/libgrace/include/grace/kk/support.h b/libgrace/include/grace/kk/support.h index 292fcf3..c9e1fa5 100644 --- a/libgrace/include/grace/kk/support.h +++ b/libgrace/include/grace/kk/support.h @@ -90,10 +90,17 @@ template size_t team_scratch_max(int team) } // CUDA: teams of `team` threads with `shmem` bytes of team scratch each that the shared memory of an SM holds: per // block the scratch, Kokkos' team-reduction doubles and its static 8-byte team id, rounded to the 128-byte allocation -// unit, plus the driver's reservation per block. Shared memory only (the caller's kernel must not be limited by -// registers first). 0: not known (other backends, a failed query) or not even one team. +// unit, plus the driver's reservation per block. HIP: per CU the LDS, per team the scratch and the (team + 2) doubles +// (the kernel's own static LDS, a few hundred bytes, and the allocation unit not counted; measured on CDNA, 64 KB per +// CU; RDNA in WGP mode not measured). Shared memory only (the caller's kernel must not be limited by registers +// first). 0: not known (other backends, a failed query) or not even one team. template int teams_per_sm_by_scratch(size_t shmem, int team) { +#if defined(KOKKOS_ENABLE_HIP) + if constexpr (is_hip_v) + return (int) ((size_t) Kokkos::HIP::hip_device_prop().maxSharedMemoryPerMultiProcessor / + (shmem + (size_t) (team + 2) * sizeof(double))); +#endif #if defined(KOKKOS_ENABLE_CUDA) if constexpr (is_cuda_v) { static const std::pair sm = [] { diff --git a/libgrace/include/grace/model_1l.h b/libgrace/include/grace/model_1l.h index 3d6c762..2f24168 100644 --- a/libgrace/include/grace/model_1l.h +++ b/libgrace/include/grace/model_1l.h @@ -24,6 +24,7 @@ struct GRACE1LModel { int n_elements = 0; int embedding_size = 0; int lmax = 0; + int max_order = 4; // 3: the file has no AAAA stage; a dead one (zero rho weights) is added by the loader int nradbase = 0; int nradmax = 0; int radial_basis_p = 0; diff --git a/libgrace/include/grace/model_2l.h b/libgrace/include/grace/model_2l.h index f294a8d..720c7fd 100644 --- a/libgrace/include/grace/model_2l.h +++ b/libgrace/include/grace/model_2l.h @@ -24,6 +24,7 @@ struct GRACE2LModel { int n_elements = 0; int embedding_size = 0; int lmax = 0; + int max_order = 4; // 3: the file has no AAAA / BBBB stage; the loader added dead ones (zero reduce weights) int nradbase = 0; int radial_basis_p = 0; double rcut = 0.0; @@ -150,6 +151,9 @@ struct GRACE2LModel { bool energy_mlp_ln = false; // legacy models: RMS layer norm of the MLP input, x s / rms(x) (s folded into layer 0) // false (legacy models): rho and I2 enter the energy MLP as they are (unit scales, the engines skip the 1/rms) bool energy_rms_norm = true; + // epsilon of both RMSNorms, x / sqrt(mean x^2 + eps): tensorpotential's InvariantLayerRMSNorm hardcodes it (not in + // the npz) + static constexpr double rms_norm_eps = 1e-10; // Per-element shifts std::vector shift_values; diff --git a/libgrace/src/fused_1l.cpp b/libgrace/src/fused_1l.cpp index 4ee1dfc..40a34cf 100644 --- a/libgrace/src/fused_1l.cpp +++ b/libgrace/src/fused_1l.cpp @@ -571,7 +571,7 @@ void Grace1LFused::compute(int inum, const int *ilist, int n_nodes, int nmax_nod #endif } throw_zero_bond(work); - if (nall > 0 && !eonly) fthr.reduce(out.f, nall); + if (!eonly) fthr.reduce(out.f, nall); out.energy += eng; if (g_prof_on) g_prof[T_P3] += now_s() - t0; if (fl.virial && !eonly) diff --git a/libgrace/src/fused_2l.cpp b/libgrace/src/fused_2l.cpp index bdd6f55..864f5c6 100644 --- a/libgrace/src/fused_2l.cpp +++ b/libgrace/src/fused_2l.cpp @@ -551,7 +551,8 @@ double Grace2LFused::energy_atom(const float *rho, const float *I2, int ty, doub double ms1 = 0.0, ms0 = 0.0; for (int k = 1; k < nr; k++) ms1 += (double) rho[k] * rho[k]; for (int k = 0; k < nr; k++) ms0 += (double) I2[k] * I2[k]; - const double s1 = rms ? std::sqrt(ms1 / nrms1 + 1e-8) : 1.0, s0 = rms ? std::sqrt(ms0 / nrms0 + 1e-8) : 1.0; + constexpr double eps = GRACE2LModel::rms_norm_eps; + const double s1 = rms ? std::sqrt(ms1 / nrms1 + eps) : 1.0, s0 = rms ? std::sqrt(ms0 / nrms0 + eps) : 1.0; constexpr int MAXW = 256; const int nlay = eW.size(); double act[8][MAXW], pre[8][MAXW]; @@ -1087,7 +1088,7 @@ void Grace2LFused::compute(int inum, const int *ilist, int n_nodes, int nmax_nod } if (g_prof_on) { g_prof[T_P5] += now_s() - tph; tph = now_s(); } throw_zero_bond(work); - if (nall > 0) fthr.reduce(out.f, nall); + fthr.reduce(out.f, nall); if (g_prof_on) g_prof[T_P6] += now_s() - tph; if (fl.virial) diff --git a/libgrace/src/fused_3l.cpp b/libgrace/src/fused_3l.cpp index 86e0e80..0d0076c 100644 --- a/libgrace/src/fused_3l.cpp +++ b/libgrace/src/fused_3l.cpp @@ -1627,7 +1627,7 @@ void Grace3LFused::compute(int inum, const int *ilist, int n_nodes, int nmax_nod run_layer(0, true, src, out, fl); tick(P_S9); throw_zero_bond(work); - if (n_nodes > 0) g->fthr.reduce(out.f, n_nodes); + g->fthr.reduce(out.f, n_nodes); tick(P_FRED); if (fl.virial) for (auto &wp : work) diff --git a/libgrace/src/max_order3.h b/libgrace/src/max_order3.h new file mode 100644 index 0000000..9e64368 --- /dev/null +++ b/libgrace/src/max_order3.h @@ -0,0 +1,139 @@ +// SPDX-License-Identifier: LicenseRef-ASL (Academic Software Licence, see LICENSE.md) +// Contributing author: Yury Lysogorskiy (ICAMS) +// GRACE-1L / 2L models with max_order 3 have no AAAA (layer 1) and BBBB (layer 2) stage. The engines compute A .. AAAA +// and B .. BBBB, so the loaders add a dead stage to the archive they read: AA2 = AA1's FC, one CG term, one output +// function, and one connection with weight zero in every reduce that reads it. The results are those of the model +// without the stage. The engines that prune what no connection reads (CPU fused, Kokkos fused) pay one FC output, one +// CG term and one reduce row per atom; the generic Kokkos engines compute the copied FC in full. +#ifndef GRACE_MAX_ORDER3_H +#define GRACE_MAX_ORDER3_H + +#include "npz3.h" + +#include +#include +#include +#include +#include +#include +#include + +namespace grace { +namespace npz { + +namespace detail { +inline const cnpy::NpyArray &get_array(const cnpy::npz_t &npz, const std::string &key) +{ + const cnpy::NpyArray *p = find_array(npz, key); + if (!p) throw bad_array(key, "is missing"); + return *p; +} + +template +inline cnpy::NpyArray make_array(const char *descr, std::vector shape, std::initializer_list values) +{ + cnpy::NpyArray a(shape, sizeof(T), false); + a.descr = descr; + size_t q = 0; + for (T v : values) a.data()[q++] = v; + return a; +} +} // namespace detail + +// One reduce of a stage: the arrays of `from` (a template for the shapes) become a dead `to`: W zero with one weight +// column, one connection to function 0. +inline void add_dead_reduce(cnpy::npz_t &npz, const std::string &prefix, const std::string &from, const std::string &to) +{ + using namespace detail; + const std::string w = prefix + "_reduce_" + from + "_W"; + const cnpy::NpyArray &W = get_array(npz, w); + if (W.shape.empty() || W.shape.back() == 0) throw bad_array(w, "has no weight column"); + cnpy::NpyArray dead_w = W; + dead_w.shape.back() = 1; + dead_w.num_vals = W.num_vals / W.shape.back(); + dead_w.data_holder = std::make_shared>(dead_w.num_vals * W.word_size, 0); + npz[prefix + "_reduce_" + to + "_W"] = dead_w; + const auto copy_scalar = [&](const std::string &src, const std::string &dst) { // as the template's (if present) + if (const cnpy::NpyArray *a = find_array(npz, src)) npz[dst] = *a; + }; + copy_scalar(prefix + "_reduce_" + from + "_norm", prefix + "_reduce_" + to + "_norm"); + copy_scalar(prefix + "_n_in_" + from, prefix + "_n_in_" + to); + npz[prefix + "_collect_ind_" + to] = make_array("("("("kind() != 'S' || n->shape.size() != 1) throw dtype_error(names, *n, "a 1-d byte-string array (|S)"); + if (to.size() > n->word_size) throw bad_array(names, "has names too short for " + to); + cnpy::NpyArray a({n->shape[0] + 1}, n->word_size, false); + a.descr = n->descr; + std::copy(n->data(), n->data() + n->num_bytes(), a.data()); + std::copy(to.begin(), to.end(), a.data() + n->num_bytes()); + npz[names] = a; + } +} + +// The stage `to` (AAAA / BBBB) of a layer: FC `fc_to` (= the FC of `fc_from`), the product prod_, and the reduces +// `prefixes` (each reads `from` = AAA / BBB as the shape template). +struct DeadStage { + std::string from, to, fc_from, fc_to; + std::vector reduce_prefixes; +}; + +inline bool has_stage(const cnpy::npz_t &npz, const DeadStage &s) { return npz.count("prod_" + s.to + "_n_cg_terms") > 0; } + +inline void add_dead_stage(cnpy::npz_t &npz, const DeadStage &s) +{ + using namespace detail; + for (const auto &kv : std::vector>(npz.begin(), npz.end())) + if (kv.first.rfind(s.fc_from + "_", 0) == 0) npz[s.fc_to + kv.first.substr(s.fc_from.size())] = kv.second; + const std::string p = "prod_" + s.to + "_"; + npz[p + "left_ind"] = make_array("("("("("(" &stages) +{ + std::string have, lack; + for (const DeadStage &s : stages) (has_stage(npz, s) ? have : lack) += " " + s.to; + if (lack.empty()) return 4; + if (!have.empty()) + throw Error("the file has the stage(s)" + have + " but not" + lack + " (a GRACE model has all or none of them)"); + for (const DeadStage &s : stages) require_no_stage_arrays(npz, s); + for (const DeadStage &s : stages) + if (!has_templates(npz, s)) return 4; + for (const DeadStage &s : stages) add_dead_stage(npz, s); + return 3; +} + +} // namespace npz +} // namespace grace + +#endif diff --git a/libgrace/src/model_1l.cpp b/libgrace/src/model_1l.cpp index 33017da..238e706 100644 --- a/libgrace/src/model_1l.cpp +++ b/libgrace/src/model_1l.cpp @@ -4,6 +4,7 @@ #include "grace/error.h" #include "npz3.h" +#include "max_order3.h" #include "zero_pad.h" #include @@ -14,11 +15,14 @@ using namespace npz; void GRACE1LModel::load(const std::string &filepath) { load_arrays(npz_open(filepath)); } -void GRACE1LModel::load_arrays(const cnpy::npz_t &npz) { +void GRACE1LModel::load_arrays(const cnpy::npz_t &npz_in) { // a second load into the same object (LAMMPS pair_coeff twice) must keep nothing of the previous model: arrays // read only when present (UQ head, optional blocks) would otherwise survive *this = GRACE1LModel(); + cnpy::npz_t npz = npz_in; // the arrays are shared, not copied check_grace_format(npz, "GRACE-1L"); + // max_order 3: the file has no AAAA stage; a dead one is added (max_order3.h) + max_order = complete_to_order4(npz, {{"AAA", "AAAA", "fc_AA1", "fc_AA2", {"rho"}}}); // Every array is checked against the model's declared sizes before anything is sized from it: the CPU and Kokkos // engines index these flat without bounds checks, so a truncated or corrupted file must fail here. @@ -271,6 +275,7 @@ void GRACE1LModel::load_arrays(const cnpy::npz_t &npz) { void GRACE1LModel::validate_uq() const { if (!has_uq) throw Error("GRACE-1L: the model has no UQ head"); + if (max_order == 3) throw Error("GRACE-1L: UQ is not supported for max_order 3 models"); if (uq_schema_version != 6) throw Error("GRACE-1L: UQ schema v" + std::to_string(uq_schema_version) + " unsupported (expects v6, uqv6 basis-RP normalize+density). Re-export the UQ artifacts at schema v6 " diff --git a/libgrace/src/model_2l.cpp b/libgrace/src/model_2l.cpp index 99994a2..6a983c8 100644 --- a/libgrace/src/model_2l.cpp +++ b/libgrace/src/model_2l.cpp @@ -4,6 +4,7 @@ #include "grace/error.h" #include "npz3.h" +#include "max_order3.h" #include "zero_pad.h" #include @@ -24,11 +25,15 @@ using namespace npz; void GRACE2LModel::load(const std::string &filepath) { load_arrays(npz_open(filepath)); } -void GRACE2LModel::load_arrays(const cnpy::npz_t &npz) { +void GRACE2LModel::load_arrays(const cnpy::npz_t &npz_in) { // a second load into the same object (LAMMPS pair_coeff twice) must keep nothing of the previous model: arrays // read only when present (UQ head, optional blocks) would otherwise survive *this = GRACE2LModel(); + cnpy::npz_t npz = npz_in; // the arrays are shared, not copied check_grace_format(npz, "GRACE-2L"); + // max_order 3: the file has no AAAA and BBBB stages; dead ones are added (max_order3.h) + max_order = complete_to_order4(npz, {{"AAA", "AAAA", "fc_AA1", "fc_AA2", {"I1", "rho"}}, + {"BBB", "BBBB", "fc_BB1", "fc_BB2", {"I2"}}}); // Every array is checked against the declared sizes before anything is sized from it: a count is tied to the // stored shape of an array it describes (so a corrupt count cannot ask for a huge allocation), every index lies in @@ -462,6 +467,7 @@ void GRACE2LModel::load_arrays(const cnpy::npz_t &npz) { void GRACE2LModel::validate_uq() const { if (!has_uq) throw Error("GRACE-2L: the model has no UQ head"); + if (max_order == 3) throw Error("GRACE-2L: UQ is not supported for max_order 3 models"); if (uq_schema_version != 6) throw Error("GRACE-2L: UQ schema v" + std::to_string(uq_schema_version) + " unsupported (expects v6, uqv6 basis-RP normalize+density). Re-export the UQ artifacts at schema v6 " diff --git a/pyproject.toml b/pyproject.toml index 3a77fc3..cd7fd2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build" [project] name = "grace-runtime" -version = "0.1.3" +version = "0.1.4" description = "Fast CPU and GPU inference of GRACE and PACE interatomic potentials with ASE, batching and TorchSim" readme = "README.md" requires-python = ">=3.10" diff --git a/python-cuda/pyproject.toml b/python-cuda/pyproject.toml index 3f2967b..47d18ba 100644 --- a/python-cuda/pyproject.toml +++ b/python-cuda/pyproject.toml @@ -4,13 +4,13 @@ build-backend = "scikit_build_core.build" [project] name = "grace-runtime-cuda12" -version = "0.1.3" # = grace-runtime (scripts/build_cuda_wheels.sh sets both from the repository pyproject) +version = "0.1.4" # = grace-runtime (scripts/build_cuda_wheels.sh sets both from the repository pyproject) description = "NVIDIA GPU backend (CUDA 12) of grace-runtime: fused GRACE-1L/2L/3L Kokkos kernels for V100, RTX 20xx/30xx/40xx/50xx, A100/A30, L40S, H100/H200, B200/B300" readme = "README.md" requires-python = ">=3.10" license = { text = "Academic Software License (ASL); bundled third-party code (Kokkos: Apache-2.0 WITH LLVM-exception): see THIRD_PARTY_NOTICES.md" } classifiers = ["License :: Other/Proprietary License"] -dependencies = ["grace-runtime==0.1.3"] +dependencies = ["grace-runtime==0.1.4"] [project.urls] Homepage = "https://github.com/ICAMS/grace-runtime" diff --git a/python-rocm6/pyproject.toml b/python-rocm6/pyproject.toml index fe1dcbb..15619e8 100644 --- a/python-rocm6/pyproject.toml +++ b/python-rocm6/pyproject.toml @@ -4,13 +4,13 @@ build-backend = "scikit_build_core.build" [project] name = "grace-runtime-rocm6" -version = "0.1.3" # = grace-runtime (scripts/build_rocm_wheels.sh sets both from the repository pyproject) +version = "0.1.4" # = grace-runtime (scripts/build_rocm_wheels.sh sets both from the repository pyproject) description = "AMD GPU backend (ROCm 6) of grace-runtime: fused GRACE-1L/2L/3L Kokkos kernels for MI210/MI250/MI250X and MI300A/MI300X" readme = "README.md" requires-python = ">=3.10" license = { text = "Academic Software License (ASL); bundled third-party code (Kokkos: Apache-2.0 WITH LLVM-exception): see THIRD_PARTY_NOTICES.md" } classifiers = ["License :: Other/Proprietary License"] -dependencies = ["grace-runtime==0.1.3"] +dependencies = ["grace-runtime==0.1.4"] [project.urls] Homepage = "https://github.com/ICAMS/grace-runtime" diff --git a/python/tests/test_calculator.py b/python/tests/test_calculator.py index 0b90c5f..6a82a0f 100644 --- a/python/tests/test_calculator.py +++ b/python/tests/test_calculator.py @@ -94,6 +94,21 @@ def test_system_change(mdl, fixtures): assert np.array_equal(f, fresh.get_forces()) +@pytest.mark.parametrize("arch", ["1l", "2l", "3l"]) +def test_forces_after_a_zero_bond_error(mdl, fixtures, arch): + """the zero-bond error comes after the backward pass: the failed call leaves no forces in the engine, and the + next call gives the forces of the call before it (before: it added the forces of the failed call)""" + good = fixture_atoms(fixtures, "W54") + good.rattle(0.01, seed=4) + bad = good.copy() + bad.append(bad[0]) # an atom on top of atom 0; one atom more, so the next call keeps the engine's force rows + calc = GRACERuntimeCalculator(mdl[arch], num_threads=1, device="cpu") + ref = calc.get_forces(good) + with pytest.raises(ValueError, match="same position"): + calc.get_forces(bad) + assert np.array_equal(calc.get_forces(good.copy()), ref) + + def test_failed_gpu_system_is_not_kept(mdl): """A GPU System that cannot be built (an engine self-test, device memory) raises its own error on every calculation; the calculator keeps no species setup without it (before: AttributeError _kk_cellkey on the next).""" diff --git a/python/tests/test_gpu_parity.py b/python/tests/test_gpu_parity.py index c5cca52..55c2c87 100644 --- a/python/tests/test_gpu_parity.py +++ b/python/tests/test_gpu_parity.py @@ -69,7 +69,7 @@ def test_against_lammps_fused_kk(mod, layer, cell): TF_REF = FX / "ref_tf" / "registry_tf_fp64.npz" # TPCalculator, -fp64 SavedModels; CPU side: test_ref_tf.py -# GRACE-2L-SMAX-OMAT-large: its own 2L shape on the GPU (g2l_shape_smaxl.h); the legacy models: the legacy layout (the +# GRACE-2L-SMAX-OMAT-large: its own CG tables on the GPU (cg_tables.h); the legacy models: the legacy layout (the # fused engines; 2L at its own compiled widths) @pytest.mark.parametrize("model", ["GRACE-2L-SMAX-OMAT-large", "GRACE-1L-OAM", "GRACE-1L-OMAT", "GRACE-2L-OAM", "GRACE-2L-OMAT"]) @pytest.mark.parametrize("cell", ["W54", "WMo54", "W2tri"]) @@ -95,14 +95,35 @@ def test_against_tf_fp64(mod, model, cell): assert np.abs(stress - ref[f"{k}/stress"]).max() / np.abs(ref[f"{k}/stress"]).max() <= 1e-5 +@pytest.mark.parametrize("model", ["GRACE-2L-SMAX-OMAT-medium", "GRACE-2L-OMAT-medium-ft-E"]) +def test_dimers_against_tf_fp64(model): + """GRACE-2L dimers stretched toward the cutoff: the RMSNorm epsilon (CPU side: test_ref_tf.py::test_dimers)""" + from ase import Atoms + from grace_runtime import GRACERuntimeCalculator + path = CACHE / model / "kokkos.npz" + if not path.exists(): + pytest.skip(f"registry model {model} not in the test cache") + ref = np.load(FX / "ref_tf" / "dimers_tf_fp64.npz") + calc = GRACERuntimeCalculator(str(path), device=GPU) + for el in ref["elements"]: + for r in ref["distances"]: + at = Atoms(f"{el}2", positions=[[0, 0, 0], [r, 0, 0]]) + at.calc = calc + k = f"{model}/{el}2/{r}" + dE = abs(at.get_potential_energy() - ref[f"{k}/energy"]) + dF = np.abs(at.get_forces() - ref[f"{k}/forces"]).max() + assert dE <= 1e-5 and dF <= 1e-4, (k, dE, dF) + + @pytest.mark.parametrize("name, path_kind", [("legacy_2l_small", "zero-padded"), ("legacy_2l_wide", "generic"), ("grace_2l_small", "zero-padded"), ("legacy_1l_wide", "zero-padded"), - ("grace_1l_small", "zero-padded")]) + ("grace_1l_small", "zero-padded"), ("grace_2l_l3", "zero-padded")]) def test_outside_compiled_widths(mod, name, path_kind, monkeypatch, tmp_path): """GRACE-1L/2L models with widths outside the compiled kernels (tests/fixtures/{name}.npz, random weights): - legacy_2l_small, grace_2l_small (the RMSNorms of the current models), legacy_1l_wide (42 radial channels) and - grace_1l_small (radial 20, FC 40) run zero-padded to compiled widths; legacy_2l_wide, wider than every set, is - refused (device="auto" too: no CPU fallback) unless GRACE_GENERIC_KERNELS=1, then runs on the generic GPU engine. + legacy_2l_small, grace_2l_small (the RMSNorms of the current models), legacy_1l_wide (42 radial channels), + grace_1l_small (radial 20, FC 40) and grace_2l_l3 (lmax 3, max_order 3: the lmax-3 layer-1 bond kernels) run + zero-padded to compiled widths; legacy_2l_wide, wider than every set, is refused (device="auto" too: no CPU + fallback) unless GRACE_GENERIC_KERNELS=1, then runs on the generic GPU engine. Either way a warning (slow_notice) says so, and the results are the CPU engine's.""" pytest.importorskip("grace_runtime._core") from grace_runtime import GRACERuntimeCalculator @@ -126,6 +147,12 @@ def test_outside_compiled_widths(mod, name, path_kind, monkeypatch, tmp_path): warnings.simplefilter("always") at.calc = GRACERuntimeCalculator(path, device=GPU) assert any(note in str(w.message) for w in caught) + check_gpu_equals_cpu(at, path) + + +def check_gpu_equals_cpu(at, path): + """at with the GPU calculator attached against the CPU engine on the model file at path""" + from grace_runtime import GRACERuntimeCalculator e, f, ei = at.get_potential_energy(), at.get_forces(), at.get_potential_energies() at.calc = GRACERuntimeCalculator(path, device="cpu", num_threads=4) assert abs(e - at.get_potential_energy()) / len(at) <= 2e-6 @@ -133,6 +160,21 @@ def test_outside_compiled_widths(mod, name, path_kind, monkeypatch, tmp_path): assert np.abs(ei - at.get_potential_energies()).max() <= 1e-5 +@pytest.mark.parametrize("name", ["grace_1l_w48", "grace_1l_l3"]) +def test_1l_own_widths(mod, name): + """GRACE-1L models (tests/fixtures, random weights) on GPU kernels of their own widths, with the results of the + CPU engine: grace_1l_w48 (lmax 4, radial channels and FC 48, the widths of GRACE-OFF-1L-large; before: zero-padded + to 64) and grace_1l_l3 (lmax 3, max_order 3, radial channels and FC 20, as GRACE-OFF-1L-small; before: padded to + 32). They take the lmax-4 and lmax-3 bond kernels (HIP: the matrix-core basis, the wave-per-atom backward).""" + from grace_runtime import GRACERuntimeCalculator + from ase.io import read + path = str(FX / f"{name}.npz") + assert mod.Model(path).slow_notice == "" + at = read(FX / "WMo54.data", format="lammps-data", atom_style="atomic", Z_of_type={1: 74, 2: 42}) + at.calc = GRACERuntimeCalculator(path, device=GPU) + check_gpu_equals_cpu(at, path) + + def test_permuted_input_same_result(mod): """results come back in the caller's atom order whatever the list's spatial order""" types, pos, h = load_cell("WMo54") diff --git a/python/tests/test_order3_tf.py b/python/tests/test_order3_tf.py new file mode 100644 index 0000000..5b104ad --- /dev/null +++ b/python/tests/test_order3_tf.py @@ -0,0 +1,26 @@ +# SPDX-License-Identifier: LicenseRef-ASL (Academic Software Licence, see LICENSE.md) +"""GRACE-1L/2L models with max_order 3 (no AAAA / BBBB stage: the loader adds a dead one) against tensorpotential's +TPCalculator on their SavedModels (fp64), on the fixture cells (tests/fixtures/ref_tf/order3_tf.npz; random weights, +tests/fixtures/{legacy,grace}_{1l,2l}_order3.npz). legacy_*: the layout of the GRACE-OFF models. Comparison and +thresholds of test_ref_tf.py.""" +import os + +import numpy as np +import pytest + +from test_ref_tf import CELLS, FX, check_against_ref + +REF = os.path.join(FX, "ref_tf", "order3_tf.npz") +MODELS = ["legacy_1l_order3", "grace_1l_order3", "legacy_2l_order3", "grace_2l_order3"] + + +@pytest.fixture(scope="module") +def ref(): + return np.load(REF) + + +@pytest.mark.parametrize("cell", CELLS) +@pytest.mark.parametrize("name", MODELS) +def test_matches_tf_fp64(ref, name, cell): + check_against_ref(f"{FX}/{name}.npz", ref, name, cell) + assert np.abs(ref[f"{name}/{cell}/forces"]).max() > 1e-2 # random weights, but not a vanishing model diff --git a/python/tests/test_pace.py b/python/tests/test_pace.py index 191bba5..2c9b875 100644 --- a/python/tests/test_pace.py +++ b/python/tests/test_pace.py @@ -109,6 +109,18 @@ def test_coincident_atoms_are_an_error(model_files): evaluate(model_files["carbon_zbl"], at) +def test_forces_after_a_zero_bond_error(model_files): + """the failed call leaves no forces in the engine: the next call on the same calculator equals a fresh one""" + good = cell("carbon_zbl/bulk") + bad = good.copy() + bad.append(bad[0]) # an atom on top of atom 0; one atom more, so the next call keeps the engine's force rows + calc = GRACERuntimeCalculator(Model(model_files["carbon_zbl"]), device="cpu", num_threads=1) + with pytest.raises(ValueError, match="same position"): + calc.get_forces(bad) + fresh = GRACERuntimeCalculator(Model(model_files["carbon_zbl"]), device="cpu", num_threads=1) + assert np.array_equal(calc.get_forces(good), fresh.get_forces(good.copy())) + + def test_self_images(model_files): """Review focus 4: a 2-atom cell that sees its images equals its 2x2x2 supercell per atom""" at = cell("carbon_zbl/pair2") diff --git a/python/tests/test_ref_tf.py b/python/tests/test_ref_tf.py index e02a344..bdae97c 100644 --- a/python/tests/test_ref_tf.py +++ b/python/tests/test_ref_tf.py @@ -9,6 +9,7 @@ import numpy as np import pytest +from ase import Atoms from ase.io import read from grace_runtime import GRACERuntimeCalculator @@ -39,9 +40,8 @@ def model(request): pytest.skip(str(e)) -@pytest.mark.parametrize("cell", CELLS) -def test_matches_tf_fp64(model, ref, cell): - name, path = model +def check_against_ref(path, ref, name, cell): + """the model file at path on the fixture cell against the reference arrays ref[f"{name}/{cell}/..."]""" at = read(f"{FX}/{cell}.data", format="lammps-data", atom_style="atomic", Z_of_type={1: 74, 2: 42}) at.calc = GRACERuntimeCalculator(path, num_threads=2) k = f"{name}/{cell}" @@ -53,3 +53,32 @@ def test_matches_tf_fp64(model, ref, cell): print(k, {q: f"{v:.2e}" for q, v in d.items()}) for q, v in d.items(): assert v < (TOL_SMALL if q == "energy" and n < 10 else TOL[q]), (q, v) + + +@pytest.mark.parametrize("cell", CELLS) +def test_matches_tf_fp64(model, ref, cell): + name, path = model + check_against_ref(path, ref, name, cell) + + +DIMERS = os.path.join(FX, "ref_tf", "dimers_tf_fp64.npz") +DIMER_MODELS = ["GRACE-2L-SMAX-OMAT-medium", "GRACE-2L-OMAT-medium-ft-E"] + + +@pytest.mark.parametrize("name", DIMER_MODELS) +def test_dimers(name): + """GRACE-2L on W2, C2, O2 stretched toward the cutoff (4 - 5.9 A; TPCalculator on the -fp64 SavedModels, + tests/fixtures/ref_tf/dimers_tf_fp64.npz): the RMSNorm inputs are small there and its epsilon (1e-10, as + tensorpotential's) matters; with 1e-8 the energy was 0.9 eV off at 5.9 A. Measured (CPU): dE <= 1.4e-6 eV, + dF <= 2.9e-5 eV/A.""" + from grace_runtime import registry + ref = np.load(DIMERS) + calc = GRACERuntimeCalculator(registry.resolve(name), num_threads=2) + for el in ref["elements"]: + for r in ref["distances"]: + at = Atoms(f"{el}2", positions=[[0, 0, 0], [r, 0, 0]]) + at.calc = calc + k = f"{name}/{el}2/{r}" + dE = abs(at.get_potential_energy() - ref[f"{k}/energy"]) + dF = np.abs(at.get_forces() - ref[f"{k}/forces"]).max() + assert dE <= 1e-5 and dF <= 1e-4, (k, dE, dF) diff --git a/python/tests/test_runtimes.py b/python/tests/test_runtimes.py index f93ef78..8aedc58 100644 --- a/python/tests/test_runtimes.py +++ b/python/tests/test_runtimes.py @@ -2,8 +2,10 @@ """OpenMP runtimes in one process: grace-runtime's libgomp (vendored by auditwheel under a mangled name) next to scikit-learn's libgomp, an MKL numpy (libiomp5) and TensorFlow (TPCalculator). Every scenario runs in a fresh subprocess: the energy and forces must equal those of a process with grace-runtime alone, after the other library has -used its threads, and threadpoolctl must list the runtimes. Scenarios whose library is not installed are skipped, so -running this file in different environments (plain, MKL numpy, TF) covers the combinations.""" +used its threads (forces to 1e-5 eV/A: with several threads the 2L CPU engine adds dE/dI under row locks in a varying +order, so its fp32 forces differ between runs by ~5e-7 eV/A), and threadpoolctl must list the runtimes. Scenarios +whose library is not installed are skipped, so running this file in different environments (plain, MKL numpy, TF) +covers the combinations.""" import json import os import subprocess @@ -45,7 +47,7 @@ def alone(models): def _same(a, b): assert abs(a["e"] - b["e"]) <= 1e-9 * abs(b["e"]) - assert np.abs(np.array(a["f"]) - np.array(b["f"])).max() <= 1e-9 + assert np.abs(np.array(a["f"]) - np.array(b["f"])).max() <= 1e-5 def test_alone_lists_grace_runtime_openmp(alone): diff --git a/python/tests/test_vs_tp.py b/python/tests/test_vs_tp.py index 7deb1dd..0b0d913 100644 --- a/python/tests/test_vs_tp.py +++ b/python/tests/test_vs_tp.py @@ -3,9 +3,9 @@ there is no -fp64 one, so both sides are fp32 and the thresholds are wider). Skipped without tensorpotential / the cached models. Run on CPU: CUDA_VISIBLE_DEVICES= pytest -s. -Energy <= 1e-6 eV/atom (2e-6 below 10 atoms: fp32 floor), forces <= 2e-5 eV/A, stress <= 2e-5 relative to -max(|stress|, 1e-3 eV/A^3), per-atom energies <= 1e-5 eV. Measured worst (CPU, 2026-10-20): stress 6.8e-6 (1L, W1), -per-atom energy 3.1e-6 eV (1L, W54). +Energy <= 1e-6 eV/atom (2e-6 below 10 atoms: fp32 floor), forces <= 2e-5 eV/A, stress (zero without a cell) <= 2e-5 +relative to max(|stress|, 1e-3 eV/A^3), per-atom energies <= 1e-5 eV. Measured worst (CPU, 2026-10-20): stress 6.8e-6 +(1L, W1), per-atom energy 3.1e-6 eV (1L, W54). """ import os @@ -41,8 +41,9 @@ def test_parity(name, npz, saved): n = len(at) dE = abs(a.get_potential_energy() - b.get_potential_energy()) / n dF = np.abs(a.get_forces() - b.get_forces()).max() - sa, sb = a.get_stress(), b.get_stress() - dS = np.abs(sa - sb).max() / max(np.abs(sa).max(), 1e-3) + # no cell (the H2O molecule), no stress: TPCalculator returns that of a placeholder cell, so the reference is 0 + sa = a.get_stress() if at.cell.rank == 3 else np.zeros(6) + dS = np.abs(sa - b.get_stress()).max() / max(np.abs(sa).max(), 1e-3) de = np.abs(np.asarray(ref.results["atomic_energy"]).reshape(-1)[:n] - b.get_potential_energies()).max() print(f"{name:22s} {sname:10s} dE/n {dE:.2e} dF {dF:.2e} dS rel {dS:.2e} de_i {de:.2e}") for k, v in (("dE", dE), ("dF", dF), ("dS", dS), ("de", de)): diff --git a/tests/fixtures/grace_1l_l3.npz b/tests/fixtures/grace_1l_l3.npz new file mode 100644 index 0000000..0741970 Binary files /dev/null and b/tests/fixtures/grace_1l_l3.npz differ diff --git a/tests/fixtures/grace_1l_order3.npz b/tests/fixtures/grace_1l_order3.npz new file mode 100644 index 0000000..61ee87f Binary files /dev/null and b/tests/fixtures/grace_1l_order3.npz differ diff --git a/tests/fixtures/grace_1l_w48.npz b/tests/fixtures/grace_1l_w48.npz new file mode 100644 index 0000000..01a6e56 Binary files /dev/null and b/tests/fixtures/grace_1l_w48.npz differ diff --git a/tests/fixtures/grace_2l_l3.npz b/tests/fixtures/grace_2l_l3.npz new file mode 100644 index 0000000..d39f9d6 Binary files /dev/null and b/tests/fixtures/grace_2l_l3.npz differ diff --git a/tests/fixtures/grace_2l_order3.npz b/tests/fixtures/grace_2l_order3.npz new file mode 100644 index 0000000..56e7537 Binary files /dev/null and b/tests/fixtures/grace_2l_order3.npz differ diff --git a/tests/fixtures/legacy_1l_order3.npz b/tests/fixtures/legacy_1l_order3.npz new file mode 100644 index 0000000..0074b12 Binary files /dev/null and b/tests/fixtures/legacy_1l_order3.npz differ diff --git a/tests/fixtures/legacy_2l_order3.npz b/tests/fixtures/legacy_2l_order3.npz new file mode 100644 index 0000000..919cd81 Binary files /dev/null and b/tests/fixtures/legacy_2l_order3.npz differ diff --git a/tests/fixtures/ref_tf/dimers_tf_fp64.npz b/tests/fixtures/ref_tf/dimers_tf_fp64.npz new file mode 100644 index 0000000..19ea1f7 Binary files /dev/null and b/tests/fixtures/ref_tf/dimers_tf_fp64.npz differ diff --git a/tests/fixtures/ref_tf/order3_tf.npz b/tests/fixtures/ref_tf/order3_tf.npz new file mode 100644 index 0000000..76640ec Binary files /dev/null and b/tests/fixtures/ref_tf/order3_tf.npz differ diff --git a/tests/kk/test_kk_1l_compile.cpp b/tests/kk/test_kk_1l_compile.cpp index e85bffe..bc13a44 100644 --- a/tests/kk/test_kk_1l_compile.cpp +++ b/tests/kk/test_kk_1l_compile.cpp @@ -22,16 +22,36 @@ int main(int argc, char **argv) CHECK(e.cutoff(0, 0) > 4.0); struct Test1LFused : grace::kk::Grace1LFusedKK> { using Grace1LFusedKK::rm; + using Grace1LFusedKK::cgt_AA; + using Grace1LFusedKK::cgt_AAA; + using Grace1LFusedKK::cgt_AAAA; }; Test1LFused ef; ef.set_model(m, type2mu); ef.setup(); CHECK(ef.rm.nconn > 0); - // the matrix-core basis A covers lmax 4 and ceil(NR / 16) * 5 <= 16 output blocks: radial widths up to 48; the - // engines use the vector-ALU kernel for the others + CHECK(ef.cgt_AA >= 0 && ef.cgt_AAA >= 0 && ef.cgt_AAAA >= 0); // compiled CG tables (cg_tables.h), each product + { // lmax 3, max_order 3 (as GRACE-OFF-1L-small): AA and AAA compiled, the loader's dead AAAA stage generic + auto m3 = std::make_shared(); + m3->load(std::string(env_or("GRACE_TEST_FIXTURES", "tests/fixtures")) + "/grace_1l_l3.npz"); + Test1LFused e3; + e3.set_model(m3, type2mu); + e3.setup(); + CHECK(e3.cgt_AA >= 0 && e3.cgt_AAA >= 0 && e3.cgt_AAAA < 0); + Test1LFused eg; // 'noshape': all generic + eg.no_shape = 1; + eg.set_model(m3, type2mu); + eg.setup(); + CHECK(eg.cgt_AA < 0 && eg.cgt_AAA < 0 && eg.cgt_AAAA < 0); + } + // the matrix-core basis A covers lmax 3 and 4 and ceil(NR / 16) (lmax + 1) <= 16 output blocks: radial widths up to + // 48 (lmax 4) / 64 (lmax 3); the engines use the vector-ALU kernel for the others. The wave-per-atom backward: lmax 3 + // and 4. namespace G = grace::kk::GraceFusedKK; CHECK(G::a_fwd_mfma_fits(4, 32) && G::a_fwd_mfma_fits(4, 42) && G::a_fwd_mfma_fits(4, 48)); - CHECK(!G::a_fwd_mfma_fits(4, 49) && !G::a_fwd_mfma_fits(4, 64) && !G::a_fwd_mfma_fits(3, 32)); + CHECK(G::a_fwd_mfma_fits(3, 20) && G::a_fwd_mfma_fits(3, 64)); + CHECK(!G::a_fwd_mfma_fits(4, 49) && !G::a_fwd_mfma_fits(4, 64) && !G::a_fwd_mfma_fits(2, 32)); + CHECK(G::bond_bwd_wave_fits(3, 20) && G::bond_bwd_wave_fits(4, 64) && !G::bond_bwd_wave_fits(2, 32)); CHECK(grace::kk::wave64_switch("GRACE_L2_BWD_SHFL", true).on == (bool) GRACE_KK_WAVE64); CHECK(!grace::kk::wave64_switch("GRACE_L2_BWD_SHFL", false).on); std::printf("kk 1l setup ok\n"); diff --git a/tests/kk/test_kk_2l_compile.cpp b/tests/kk/test_kk_2l_compile.cpp index 6cc01e5..d46fee0 100644 --- a/tests/kk/test_kk_2l_compile.cpp +++ b/tests/kk/test_kk_2l_compile.cpp @@ -38,9 +38,32 @@ int main(int argc, char **argv) CHECK(e.h_grad_I_global.data() != nullptr && (int) e.h_grad_I_global.extent(0) == 16); e.release_buffers(); CHECK(e.h_I_global.data() == nullptr && e.h_grad_I_global.data() == nullptr); - grace::kk::Grace2LFusedKK> ef; + struct Test2LFused : grace::kk::Grace2LFusedKK> { + using Grace2LFusedKK::cgt_AA; + using Grace2LFusedKK::cgt_AAA; + using Grace2LFusedKK::cgt_AAAA; + using Grace2LFusedKK::cgt_BB; + using Grace2LFusedKK::cgt_BBB; + using Grace2LFusedKK::cgt_BBBB; + }; + Test2LFused ef; ef.set_model(m, type2mu); ef.setup(); + // compiled CG tables (cg_tables.h), product by product + CHECK(ef.cgt_AA >= 0 && ef.cgt_AAA >= 0 && ef.cgt_AAAA >= 0 && ef.cgt_BB >= 0 && ef.cgt_BBB >= 0 && ef.cgt_BBBB >= 0); + { // lmax 3, max_order 3, layer 2 as GRACE-2L-SMAX-OMAT-medium: all but the loader's dead AAAA / BBBB stages + auto m3 = std::make_shared(); + m3->load(std::string(env_or("GRACE_TEST_FIXTURES", "tests/fixtures")) + "/grace_2l_l3.npz"); + Test2LFused e3; + e3.set_model(m3, type2mu); + e3.setup(); + CHECK(e3.cgt_AA >= 0 && e3.cgt_AAA >= 0 && e3.cgt_AAAA < 0 && e3.cgt_BB >= 0 && e3.cgt_BBB >= 0 && e3.cgt_BBBB < 0); + Test2LFused eg; // 'noshape': all generic + eg.no_shape = 1; + eg.set_model(m3, type2mu); + eg.setup(); + CHECK(eg.cgt_AA < 0 && eg.cgt_AAA < 0 && eg.cgt_AAAA < 0 && eg.cgt_BB < 0 && eg.cgt_BBB < 0 && eg.cgt_BBBB < 0); + } std::printf("kk 2l setup ok\n"); return 0; } diff --git a/tests/kk/test_kk_cg_tables.cpp b/tests/kk/test_kk_cg_tables.cpp new file mode 100644 index 0000000..50cd7f2 --- /dev/null +++ b/tests/kk/test_kk_cg_tables.cpp @@ -0,0 +1,99 @@ +// SPDX-License-Identifier: LicenseRef-ASL (Academic Software Licence, see LICENSE.md) +// The compiled CG tables (cg_tables.h) against the generic CG-product kernels (fused_dense.h): every table of every +// engine product, forward and reverse as the engines call them (1L AA accumulates), on random operands, with other +// values beyond the table in the outputs. Needs no model. +#include "grace/kk/fused_dense.h" +#include "grace/kk/cg_tables.h" +#include "../test_util.h" + +#include +#include +#include + +using Dev = Kokkos::DefaultExecutionSpace; +using V3 = Kokkos::View; +namespace G = grace::kk::GraceFusedKK; +namespace cgt = grace::kk::cgt; + +struct Prod { // the fields of GRACE1LModel / GRACE2LModel::CGProduct that build_prod_meta and cgt_match read + std::vector left_ind, right_ind, m_sum_ind; + std::vector cg_coeff; +}; + +static V3 random_view(const char *name, int n, int nc, int w, unsigned seed) +{ + V3 v(name, n, nc, w); + auto h = Kokkos::create_mirror_view(v); + std::mt19937 g(seed); + std::uniform_real_distribution u(-1.0f, 1.0f); + for (int i = 0; i < n; i++) + for (int k = 0; k < nc; k++) + for (int x = 0; x < w; x++) h(i, k, x) = u(g); + Kokkos::deep_copy(v, h); + return v; +} + +// max |a - b| / max |b| +static double rel_diff(const V3 &a, const V3 &b) +{ + auto ha = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), a); + auto hb = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), b); + double d = 0.0, s = 1e-30; + for (size_t i = 0; i < ha.size(); i++) { + d = std::max(d, (double) std::fabs(ha.data()[i] - hb.data()[i])); + s = std::max(s, (double) std::fabs(hb.data()[i])); + } + return d / s; +} + +template +void check_table(List list, const int id, const char *prod) +{ + Prod p; + int nl = 0, nr = 0, no = 0; + for (int t = 0; t < T::nt; t++) { + p.left_ind.push_back(T::tab[t][0]); p.right_ind.push_back(T::tab[t][1]); p.m_sum_ind.push_back(T::tab[t][2]); + p.cg_coeff.push_back(T::cg[t]); + nl = std::max(nl, T::tab[t][0] + 1); nr = std::max(nr, T::tab[t][1] + 1); no = std::max(no, T::tab[t][2] + 1); + } + if (SELF) nl = nr = std::max(nl, nr); + CHECK(G::cgt_match(list, p) == id); + G::ProdMetaT m; + G::build_prod_meta(m, p, SELF); + const int n = 5, nc = 3; + const V3 L = random_view("L", n, nc, nl + 2, 1), R = SELF ? L : random_view("R", n, nc, nr + 2, 2); + const V3 D = random_view("D", n, nc, no + 1, 3); + V3 out = random_view("out", n, nc, no + 1, 4), out_g = random_view("out", n, nc, no + 1, 4); + G::cg_prod_fwd(list, id, m, "test:cgt_fwd", n, L, R, out); + G::cg_prod_fwd(list, -1, m, "test:prod_fwd", n, L, R, out_g); + V3 dL = random_view("dL", n, nc, nl + 2, 5), dL_g = random_view("dL", n, nc, nl + 2, 5); + V3 dR = SELF ? dL : random_view("dR", n, nc, nr + 2, 6), dR_g = SELF ? dL_g : random_view("dR", n, nc, nr + 2, 6); + G::cg_prod_rev(list, id, m, "test:cgt_rev", n, L, R, D, dL, dR); + G::cg_prod_rev(list, -1, m, "test:prod_rev", n, L, R, D, dL_g, dR_g); + const double ef = rel_diff(out, out_g), el = rel_diff(dL, dL_g), er = SELF ? 0.0 : rel_diff(dR, dR_g); + std::printf("%-6s table %d (%4d terms): forward %.1e, reverse dL %.1e dR %.1e\n", prod, id, T::nt, ef, el, er); + CHECK(ef < 1e-5 && el < 1e-5 && er < 1e-5); +} + +template class List, class... T> +void check_list(List list, const char *prod) +{ + int id = 0; + (check_table(list, id++, prod), ...); +} + +int main(int argc, char **argv) +{ + Kokkos::ScopeGuard guard(argc, argv); + check_list(cgt::G1L_AA{}, "1L AA"); + check_list(cgt::G1L_AAA{}, "1L AAA"); + check_list(cgt::G1L_AAAA{}, "1L AAAA"); + check_list(cgt::G2L_AA{}, "2L AA"); + check_list(cgt::G2L_AAA{}, "2L AAA"); + check_list(cgt::G2L_AAAA{}, "2L AAAA"); + check_list(cgt::G2L_BB{}, "2L BB"); + check_list(cgt::G2L_BBB{}, "2L BBB"); + check_list(cgt::G2L_BBBB{}, "2L BBBB"); + std::printf("kk cg tables ok\n"); + return 0; +} diff --git a/tests/kk/test_kk_order3.cpp b/tests/kk/test_kk_order3.cpp new file mode 100644 index 0000000..89a0db0 --- /dev/null +++ b/tests/kk/test_kk_order3.cpp @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: LicenseRef-ASL (Academic Software Licence, see LICENSE.md) +// GRACE-1L/2L models with max_order 3 on the Kokkos engines (generic fp64 and fused): the loader adds a dead AAAA / +// BBBB stage (zero weights; one CG term, one output), the engines must run it and give the model's results: tensorpotential's +// TPCalculator on the SavedModels (fp64): energy, per-atom energies, forces. +// env GRACE_TEST_FIXTURES (default tests/fixtures) +#include "grace/kk/csr_images.h" +#include "grace/kk/grace_1l_fused_kk_impl.h" +#include "grace/kk/grace_1l_kk_impl.h" +#include "grace/kk/grace_2l_fused_kk_impl.h" +#include "grace/kk/grace_2l_kk_impl.h" +#include "grace/kk/traits.h" +#include "grace_cnpy/cnpy.h" +#include "../test_util.h" + +#include +#include +#include +#include +#include + +using Dev = Kokkos::DefaultExecutionSpace; +using T = grace::kk::DefaultTraits; +#include "kk_csr_util.h" +using E1 = grace::kk::Grace1LKK; +using E1F = grace::kk::Grace1LFusedKK; +using E2 = grace::kk::Grace2LKK; +using E2F = grace::kk::Grace2LFusedKK; +template class grace::kk::Grace1LKK; +template class grace::kk::Grace1LFusedKK; +template class grace::kk::Grace2LKK; +template class grace::kk::Grace2LFusedKK; + +namespace { +using namespace kkt; + +grace::cnpy::npz_t tf_ref; + +// the fixture model on one engine, on the cells, against the TensorFlow reference +template +void check(const char *tag, const std::string &name, const std::string &fx, const Tol &t) +{ + auto m = std::make_shared(); + m->load(fx + "/" + name + ".npz"); + CHECK(m->max_order == 3); + Eng e; + e.set_model(m, type2mu_for(m->element_names)); + e.setup(); + for (const char *cell : {"W54", "WMo54", "W2tri"}) { + const Cell c = load_cell(fx + "/" + cell + ".npz"); + const Result r = run(e, c); + const std::string k = name + "/" + cell; + const double e_ref = *tf_ref.at(k + "/energy").data(); + const double *f_ref = tf_ref.at(k + "/forces").data(), *ei_ref = tf_ref.at(k + "/energies").data(); + double df = 0, dpe = 0, fmax = 0; + for (int q = 0; q < 3 * c.n; q++) { + df = std::max(df, std::fabs(r.f[q] - f_ref[q])); + fmax = std::max(fmax, std::fabs(f_ref[q])); + } + for (int a = 0; a < c.n; a++) dpe = std::max(dpe, std::fabs(r.eatom[a] - ei_ref[a])); + std::printf("%-22s %-14s %-6s dE/n %.3e max|de_i| %.3e max|dF| %.3e (max|F| %.3f)\n", tag, name.c_str(), cell, + std::fabs(r.e - e_ref) / c.n, dpe, df, fmax); + CHECK(std::fabs(r.e - e_ref) / c.n <= t.e); + CHECK(dpe <= t.ei); + CHECK(df <= t.f); + CHECK(fmax > 1e-2); + } +} +} // namespace + +int main(int argc, char **argv) +{ + Kokkos::ScopeGuard guard(argc, argv); + const std::string fx = env_or("GRACE_TEST_FIXTURES", "tests/fixtures"); + tf_ref = grace::cnpy::npz_load(fx + "/ref_tf/order3_tf.npz"); + const Tol tol_generic = {1e-8, 1e-8, 1e-8, 0}; // fp64 engine against fp64 TensorFlow + // the generic engines refuse the legacy layouts (the fused ones run them) + for (const char *name : {"legacy_1l_order3", "grace_1l_order3"}) { + if (name[0] == 'g') check("1L kk fp64", name, fx, tol_generic); + check("1L fused", name, fx, tol_fp32); + } + for (const char *name : {"legacy_2l_order3", "grace_2l_order3"}) { + if (name[0] == 'g') check("2L kk fp64", name, fx, tol_generic); + check("2L fused", name, fx, tol_fp32_2l); + } + std::printf("kk order3 ok\n"); + return 0; +} diff --git a/tests/test_driver.cpp b/tests/test_driver.cpp index b0eeb47..9baeebd 100644 --- a/tests/test_driver.cpp +++ b/tests/test_driver.cpp @@ -277,7 +277,7 @@ int main() // test_2l_padded / test_1l_padded: a model zero-padded to wider channels (GRACE2LModel / GRACE1LModel::padded, how // the GPU engines run it on compiled widths) gives the original's results. tests/fixtures: legacy_2l_small (radial // channels 16 / 8), grace_2l_small (16 / 8, the RMSNorms of the current models), legacy_1l_wide (radial and FC - // 42 -> 64), grace_1l_small (radial 20 -> 32, FC 40 -> 64) + // 42 -> 48), grace_1l_small (radial 20 -> 32, FC 40 -> 48; the GPU keeps radial 20 and pads only the FC) { const Cell c = load_cell(fx + "/WMo54.npz"); auto same = [&](auto &a, auto &b, const std::string &name) { @@ -299,8 +299,8 @@ int main() b.setup_types(2, type2mu_for(mp->element_names)); same(a, b, name); } - for (const auto &[name, nr, no] : std::vector>{{"legacy_1l_wide", 64, 64}, - {"grace_1l_small", 32, 64}}) { + for (const auto &[name, nr, no] : std::vector>{{"legacy_1l_wide", 48, 48}, + {"grace_1l_small", 32, 48}}) { auto ms = std::make_shared(); ms->load(fx + "/" + name + ".npz"); auto mp = std::make_shared(ms->padded(nr, no)); @@ -310,6 +310,111 @@ int main() same(a, b, name); } } + // max_order 3: a file without the AAAA / BBBB stage (the loader adds a dead one) gives the results of the order-4 + // file with zero AAAA / BBBB reduce weights. tests/fixtures: legacy_1l_wide, grace_1l_small, legacy_2l_small, + // grace_2l_small (their AAAA / BBBB arrays are removed or zeroed here) + { + const Cell c = load_cell(fx + "/WMo54.npz"); + const auto ends_with = [](const std::string &k, const std::string &e) { + return k.size() >= e.size() && k.compare(k.size() - e.size(), e.size(), e) == 0; + }; + const auto has_stage = [](const std::string &k) { + return k.find("AAAA") != std::string::npos || k.find("BBBB") != std::string::npos || k.rfind("fc_AA2_", 0) == 0 || + k.rfind("fc_BB2_", 0) == 0; + }; + // zeroed: the AAAA / BBBB reduce weights 0; stripped: every array of the two stages removed + const auto variants = [&](const std::string &path) { + auto full = grace::cnpy::npz_load(path); + auto zeroed = full, stripped = full; + for (auto &[k, a] : full) { + if (ends_with(k, "_reduce_AAAA_W") || ends_with(k, "_reduce_BBBB_W")) { + grace::cnpy::NpyArray z = a; + z.data_holder = std::make_shared>(a.num_bytes(), 0); + zeroed[k] = z; + } + if (has_stage(k)) stripped.erase(k); + if (ends_with(k, "_instruction_names") && a.shape[0] > 0) { // [.., AAAA] / [.., BBBB]: drop the last name + const std::string last(a.data() + (a.shape[0] - 1) * a.word_size, a.word_size); + if (last.compare(0, 4, "AAAA") == 0 || last.compare(0, 4, "BBBB") == 0) { + grace::cnpy::NpyArray n({a.shape[0] - 1}, a.word_size, false); + n.descr = a.descr; + std::copy(a.data(), a.data() + n.num_bytes(), n.data()); + stripped[k] = n; + } + } + } + return std::make_pair(zeroed, stripped); + }; + const auto same = [&](auto &a, auto &b, const std::string &name) { + const Result ra = run(a, c, 1, true), rb = run(b, c, 1, true); + double df = 0, dpe = 0; + for (int q = 0; q < 3 * c.n; q++) df = std::max(df, std::fabs(ra.f[q] - rb.f[q])); + for (int i = 0; i < c.n; i++) dpe = std::max(dpe, std::fabs(ra.eatom[i] - rb.eatom[i])); + std::printf("max_order 3 vs zeroed AAAA (%s): dE %.3e max|de_i| %.3e max|dF| %.3e\n", name.c_str(), + std::fabs(ra.e - rb.e), dpe, df); + CHECK(std::fabs(ra.e - rb.e) / c.n <= 1e-9 && dpe <= 1e-9 && df <= 1e-6); + CHECK(std::fabs(ra.e) > 1e-3); // not a vanishing model + }; + for (const std::string name : {"legacy_1l_wide", "grace_1l_small"}) { + const auto [zeroed, stripped] = variants(fx + "/" + name + ".npz"); + auto mz = std::make_shared(), ms = std::make_shared(); + mz->load_arrays(zeroed); + ms->load_arrays(stripped); + CHECK(mz->max_order == 4 && ms->max_order == 3); + grace::Grace1LFused a(mz, {}, {}), b(ms, {}, {}); + a.setup_types(2, type2mu_for(mz->element_names)); + b.setup_types(2, type2mu_for(ms->element_names)); + same(a, b, name); + } + for (const std::string name : {"legacy_2l_small", "grace_2l_small"}) { + const auto [zeroed, stripped] = variants(fx + "/" + name + ".npz"); + auto mz = std::make_shared(), ms = std::make_shared(); + mz->load_arrays(zeroed); + ms->load_arrays(stripped); + CHECK(mz->max_order == 4 && ms->max_order == 3); + grace::Grace2LFused a(mz, {}, {}), b(ms, {}, {}); + a.setup_types(2, type2mu_for(mz->element_names)); + b.setup_types(2, type2mu_for(ms->element_names)); + same(a, b, name); + } + // a file with some of the AAAA / BBBB arrays is broken, not an order-3 model + const auto refused = [&](auto &model, const grace::cnpy::npz_t &npz, const char *what) { + try { + model.load_arrays(npz); + } catch (const grace::Error &e) { + return std::string(e.what()).find(what) != std::string::npos; + } + return false; + }; + { + auto npz = variants(fx + "/grace_1l_small.npz").second; + npz["rho_reduce_AAAA_W"] = grace::cnpy::npz_load(fx + "/grace_1l_small.npz")["rho_reduce_AAAA_W"]; + grace::GRACE1LModel m; + CHECK(refused(m, npz, "AAAA stage is incomplete")); + } + { // one of the two stages gone: the message names the one that is there and the one that is not + const auto full = grace::cnpy::npz_load(fx + "/grace_2l_small.npz"); + for (const auto &[gone, there] : {std::pair{"BBBB", "AAAA"}, {"AAAA", "BBBB"}}) { + auto npz = full; + const std::string fc = gone == "BBBB" ? "fc_BB2_" : "fc_AA2_"; + for (auto &[k, a] : full) + if (k.find(gone) != std::string::npos || k.rfind(fc, 0) == 0) npz.erase(k); + grace::GRACE2LModel m; + CHECK(refused(m, npz, ("stage(s) " + there + " but not " + gone).c_str())); + } + } + if (m2->has_uq) { // UQ of a max_order 3 model is refused (the dead block would add a basis column) + grace::GRACE2LModel m; + m.load_arrays(variants(test_model("GRACE_TEST_M2", "GRACE-2L-SMAX-OMAT-medium")).second); + bool uq_refused = false; + try { + m.validate_uq(); + } catch (const grace::Error &e) { + uq_refused = std::string(e.what()).find("max_order 3") != std::string::npos; + } + CHECK(m.max_order == 3 && m.has_uq && uq_refused); + } + } // thread count changes the summation order only (document the size, require it to be tiny) { const Cell c = load_cell(fx + "/WMo54.npz"); @@ -367,7 +472,11 @@ int main() CHECK(threw); tf.ensure(1 << 16, 100); CHECK(tf.buf.size() == (size_t) (1 << 16) * 100 * 3 && tf.of((1 << 16) - 1)[299] == 0.0); - std::printf("usable after a failed growth: 2L, 3L, ThreadForces\n"); + // a compute that throws before reduce() (the zero-bond error): the next ensure() clears its rows + tf.of(1)[5] = 1.0; + tf.ensure(1 << 16, 100); + CHECK(tf.of(1)[5] == 0.0); + std::printf("usable after a failed growth: 2L, 3L, ThreadForces; force rows cleared after a throw\n"); } return 0; }