#include import Crafter.Math; import std; using namespace Crafter; int main() { // std::random_device rd; // std::mt19937 gen(rd()); // std::uniform_real_distribution dist(0, 100); // Vector<_Float16, 8, 8> vA; // for(std::uint32_t i = 0; i < 8; i++) { // vA.v[i] = dist(gen); // } // VectorF16<4, 2, 1> vfA(&vA); // Vector<_Float16, 16, 16> vB; // for(std::uint32_t i = 0; i < 16; i++) { // vB.v[i] = dist(gen); // } // VectorF16<4, 2, 2> vfB(&vB); // VectorF16<4, 2, 1> vfC = vfA + vfB; // auto start = std::chrono::high_resolution_clock::now(); // for(std::uint32_t i = 0; i < 90000000; i++) { // vfC = vfC + vfB; // } // auto end = std::chrono::high_resolution_clock::now(); // std::cout << std::chrono::duration_cast(end-start) << std::endl; // std::println("{}", vfC); Vector<_Float16, 1326, 32> vA; // for(std::uint32_t i = 0; i < 2; i++) { // vA.v[i] = i; // } // for(std::uint32_t i = 2; i < 4; i++) { // vA.v[i] = i-2; // } // for(std::uint32_t i = 4; i < 6; i++) { // vA.v[i] = i-4; // } // for(std::uint32_t i = 6; i < 8; i++) { // vA.v[i] = i-6; // } for(std::uint32_t i = 0; i < 8; i++) { vA.v[i] = i; } for(std::uint32_t i = 8; i < 16; i++) { vA.v[i] = i-8; } for(std::uint32_t i = 16; i < 24; i++) { vA.v[i] = i-16; } for(std::uint32_t i = 24; i < 32; i++) { } VectorF16<8, 1, 4> vfA(&vA); std::tuple, VectorF16<8, 1, 4>, VectorF16<8, 1, 4>, VectorF16<8, 1, 4>, VectorF16<8, 1, 4>, VectorF16<8, 1, 4>, VectorF16<8, 1, 4>, VectorF16<8, 1, 4>> dot = VectorF16<8, 1, 4>::Normalize(vfA, vfA, vfA, vfA, vfA, vfA, vfA, vfA); std::println("{}", std::get<0>(dot)); Vector vB; for(std::uint32_t i = 0; i < 8; i++) { vB.v[i] = i; } vB.Normalize(); std::string log; for(std::uint32_t i = 0; i < 8; i++) { log += std::format("{} ", (float)vB.v[i]); } std::println("{{{}}}", log); }