Created
May 12, 2025 17:19
-
-
Save johnjohnlin/3ed11ff797e2fe57d3b09599b7eeca7a to your computer and use it in GitHub Desktop.
POC: How to implement large integer addition using only macro
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #define _ADD_TABLE00 0,0 | |
| #define _ADD_TABLE01 0,1 | |
| #define _ADD_TABLE02 0,2 | |
| #define _ADD_TABLE03 0,3 | |
| #define _ADD_TABLE04 0,4 | |
| #define _ADD_TABLE05 0,5 | |
| #define _ADD_TABLE06 0,6 | |
| #define _ADD_TABLE07 0,7 | |
| #define _ADD_TABLE08 0,8 | |
| #define _ADD_TABLE09 0,9 | |
| #define _ADD_TABLE10 0,1 | |
| #define _ADD_TABLE11 0,2 | |
| #define _ADD_TABLE12 0,3 | |
| #define _ADD_TABLE13 0,4 | |
| #define _ADD_TABLE14 0,5 | |
| #define _ADD_TABLE15 0,6 | |
| #define _ADD_TABLE16 0,7 | |
| #define _ADD_TABLE17 0,8 | |
| #define _ADD_TABLE18 0,9 | |
| #define _ADD_TABLE19 1,0 | |
| #define _ADD_TABLE20 0,2 | |
| #define _ADD_TABLE21 0,3 | |
| #define _ADD_TABLE22 0,4 | |
| #define _ADD_TABLE23 0,5 | |
| #define _ADD_TABLE24 0,6 | |
| #define _ADD_TABLE25 0,7 | |
| #define _ADD_TABLE26 0,8 | |
| #define _ADD_TABLE27 0,9 | |
| #define _ADD_TABLE28 1,0 | |
| #define _ADD_TABLE29 1,1 | |
| #define _ADD_TABLE30 0,3 | |
| #define _ADD_TABLE31 0,4 | |
| #define _ADD_TABLE32 0,5 | |
| #define _ADD_TABLE33 0,6 | |
| #define _ADD_TABLE34 0,7 | |
| #define _ADD_TABLE35 0,8 | |
| #define _ADD_TABLE36 0,9 | |
| #define _ADD_TABLE37 1,0 | |
| #define _ADD_TABLE38 1,1 | |
| #define _ADD_TABLE39 1,2 | |
| #define _ADD_TABLE40 0,4 | |
| #define _ADD_TABLE41 0,5 | |
| #define _ADD_TABLE42 0,6 | |
| #define _ADD_TABLE43 0,7 | |
| #define _ADD_TABLE44 0,8 | |
| #define _ADD_TABLE45 0,9 | |
| #define _ADD_TABLE46 1,0 | |
| #define _ADD_TABLE47 1,1 | |
| #define _ADD_TABLE48 1,2 | |
| #define _ADD_TABLE49 1,3 | |
| #define _ADD_TABLE50 0,5 | |
| #define _ADD_TABLE51 0,6 | |
| #define _ADD_TABLE52 0,7 | |
| #define _ADD_TABLE53 0,8 | |
| #define _ADD_TABLE54 0,9 | |
| #define _ADD_TABLE55 1,0 | |
| #define _ADD_TABLE56 1,1 | |
| #define _ADD_TABLE57 1,2 | |
| #define _ADD_TABLE58 1,3 | |
| #define _ADD_TABLE59 1,4 | |
| #define _ADD_TABLE60 0,6 | |
| #define _ADD_TABLE61 0,7 | |
| #define _ADD_TABLE62 0,8 | |
| #define _ADD_TABLE63 0,9 | |
| #define _ADD_TABLE64 1,0 | |
| #define _ADD_TABLE65 1,1 | |
| #define _ADD_TABLE66 1,2 | |
| #define _ADD_TABLE67 1,3 | |
| #define _ADD_TABLE68 1,4 | |
| #define _ADD_TABLE69 1,5 | |
| #define _ADD_TABLE70 0,7 | |
| #define _ADD_TABLE71 0,8 | |
| #define _ADD_TABLE72 0,9 | |
| #define _ADD_TABLE73 1,0 | |
| #define _ADD_TABLE74 1,1 | |
| #define _ADD_TABLE75 1,2 | |
| #define _ADD_TABLE76 1,3 | |
| #define _ADD_TABLE77 1,4 | |
| #define _ADD_TABLE78 1,5 | |
| #define _ADD_TABLE79 1,6 | |
| #define _ADD_TABLE80 0,8 | |
| #define _ADD_TABLE81 0,9 | |
| #define _ADD_TABLE82 1,0 | |
| #define _ADD_TABLE83 1,1 | |
| #define _ADD_TABLE84 1,2 | |
| #define _ADD_TABLE85 1,3 | |
| #define _ADD_TABLE86 1,4 | |
| #define _ADD_TABLE87 1,5 | |
| #define _ADD_TABLE88 1,6 | |
| #define _ADD_TABLE89 1,7 | |
| #define _ADD_TABLE90 0,9 | |
| #define _ADD_TABLE91 1,0 | |
| #define _ADD_TABLE92 1,1 | |
| #define _ADD_TABLE93 1,2 | |
| #define _ADD_TABLE94 1,3 | |
| #define _ADD_TABLE95 1,4 | |
| #define _ADD_TABLE96 1,5 | |
| #define _ADD_TABLE97 1,6 | |
| #define _ADD_TABLE98 1,7 | |
| #define _ADD_TABLE99 1,8 | |
| #define MY_ADD_ONE0(_,a) a | |
| #define MY_ADD_ONE0_(a) MY_ADD_ONE0(a) | |
| #define MY_ADD_ONE1(a,_,b) MY_ADD_ONE0_(_ADD_TABLE##a##_),b | |
| #define MY_ADD_ONE1_(a,b) MY_ADD_ONE1(a,b) | |
| #define MY_ADD_ONE2(a,b,_,c) MY_ADD_ONE1_(a,_ADD_TABLE##b##_),c | |
| #define MY_ADD_ONE2_(a,b,c) MY_ADD_ONE2(a,b,c) | |
| #define MY_ADD_ONE3(a,b,c,_,d) MY_ADD_ONE2_(a,b,_ADD_TABLE##c##_),d | |
| #define MY_ADD_ONE3_(a,b,c,d) MY_ADD_ONE3(a,b,c,d) | |
| #define MY_ADD_ONE(a,b,c,d) MY_ADD_ONE3_(a,b,c,_ADD_TABLE1##d) | |
| MY_ADD_ONE(0,0,0,2) // 0,0,0,3 | |
| MY_ADD_ONE(9,9,9,9) // 0,0,0,0 | |
| MY_ADD_ONE(1,4,9,9) // 1,5,0,0 | |
| #define MY_ADD_ONE_r(x) MY_ADD_ONE(x) | |
| MY_ADD_ONE_r(MY_ADD_ONE(1,4,9,9)) // 1,5,0,1 | |
| MY_ADD_ONE_r(MY_ADD_ONE_r(MY_ADD_ONE(1,4,9,9))) // 1,5,0,2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment