Build, Test, And Navigation¶
Build Shape¶
The top-level CMakeLists.txt builds four subprojects:
Tan.CoreTan.MathTan.GATan.App.Test
The project sets C++17 globally.
Tan.App.Test/CMakeLists.txt currently wires these executable entry points:
Test_Math_01Test_Basics_01Test_Crypt_03Test_Crypt_04
Typical Local Build¶
From the repository root:
On non-MSVC toolchains the test targets enable SSE4.1 and popcnt.
Where To Start For Common Tasks¶
Change a blade-level algebra rule¶
Open these first:
source/Tan.GA/Blade.hsource/Tan.GA/Blade_Operators.h
Change multivector traversal or accumulation¶
Open these first:
source/Tan.GA/MV_Operators.hsource/Tan.GA/DynamicMultivector.h
Change inversion behavior¶
Open these first:
source/Tan.GA/Algo.hsource/Tan.GA/Matrix_MapToBladeMask.hsource/Tan.Math/Matrix.Algo.GE.h
Change modular arithmetic behavior¶
Open these first:
source/Tan.Math/Congruence.hsource/Tan.Math/InlineMath.h
Change the cryptographic experiments¶
Open these first:
source/Tan.App.Test/Test_Crypt_03.cppsource/Tan.App.Test/Test_Crypt_04.cppsource/Tan.App.Test/Test_Crypt_Func.h
Do not start in Tan.Crypt/AsymGeo1.* unless you are explicitly moving the prototype into a reusable API.
Validation Strategy¶
Use the smallest executable that covers the change.
- GA arithmetic changes: start with
Test_Basics_01. - matrix or inversion changes: start with
Test_Math_01and then the relevant crypt test. - NTRU experiment changes: start with
Test_Crypt_03. - integrity extension changes: start with
Test_Crypt_04.
Architectural Caution¶
Many cryptography assumptions depend on coefficient magnitudes staying inside centered modular windows. A change that looks algebraically harmless can still break decryption by increasing coefficient growth.