From a3bddcbc3698fc0e60f68d88d1dbd803f7283b91 Mon Sep 17 00:00:00 2001 From: Luxferre Date: Wed, 30 Apr 2025 13:06:09 +0300 Subject: [PATCH] updated the linear regression example --- examples/assembled/linreg.mu8 | 85 +++++++++++++++++------------------ examples/linreg.mu8a | 63 +++++++++++++------------- 2 files changed, 73 insertions(+), 75 deletions(-) diff --git a/examples/assembled/linreg.mu8 b/examples/assembled/linreg.mu8 index f2f158c..aed5ff3 100644 --- a/examples/assembled/linreg.mu8 +++ b/examples/assembled/linreg.mu8 @@ -4,46 +4,45 @@ 4 5 0 0 13 5 5 0 0 14 6 5 0 0 15 -7 5 1 0 50 -8 4 1 2 0 -9 6 1 1 3 -10 7 0 3 3 -11 6 1 2 4 -12 7 0 4 4 -13 6 1 2 5 -14 7 0 1 5 -15 7 1 50 10 -16 7 2 50 11 -17 7 3 50 12 -18 7 4 50 13 -19 7 5 50 14 -20 7 50 50 15 -21 6 1 3 6 -22 7 4 50 6 -23 1 1 6 8 -24 8 15 50 15 -25 6 1 15 1 -26 7 0 14 1 -27 6 1 11 5 -28 7 0 10 5 -29 8 1 5 6 -30 6 1 15 3 -31 7 0 12 3 -32 6 1 10 4 -33 7 0 10 4 -34 8 3 4 3 -35 9 6 3 21 -36 6 1 10 1 -37 7 0 21 1 -38 8 11 1 1 -39 9 1 15 20 -40 6 1 11 2 -41 7 0 11 2 -42 6 1 15 5 -43 7 0 13 5 -44 8 5 2 2 -45 6 1 3 1 -46 7 0 2 1 -47 12 0 1 1 -48 9 6 1 22 -49 3 20 22 0 +7 4 1 2 0 +8 6 1 1 3 +9 7 0 3 3 +10 6 1 2 4 +11 7 0 4 4 +12 6 1 2 5 +13 7 0 1 5 +14 7 1 127 10 +15 7 2 127 11 +16 7 3 127 12 +17 7 4 127 13 +18 7 5 127 14 +19 7 127 127 15 +20 6 1 3 6 +21 7 4 127 6 +22 1 1 6 7 +23 8 15 127 15 +24 6 1 15 1 +25 7 0 14 1 +26 6 1 11 5 +27 7 0 10 5 +28 8 1 5 6 +29 6 1 15 3 +30 7 0 12 3 +31 6 1 10 4 +32 7 0 10 4 +33 8 3 4 3 +34 9 6 3 21 +35 6 1 10 1 +36 7 0 21 1 +37 8 11 1 1 +38 9 1 15 20 +39 6 1 11 2 +40 7 0 11 2 +41 6 1 15 5 +42 7 0 13 5 +43 8 5 2 2 +44 6 1 3 1 +45 7 0 2 1 +46 12 0 1 1 +47 9 6 1 22 +48 3 20 22 0 diff --git a/examples/linreg.mu8a b/examples/linreg.mu8a index cb4f4c1..9210b52 100644 --- a/examples/linreg.mu8a +++ b/examples/linreg.mu8a @@ -10,46 +10,45 @@ set 0 0 12 ; x-square-sum to loc 12 set 0 0 13 ; y-square-sum to loc 13 set 0 0 14 ; xy-sum to loc 14 set 0 0 15 ; n to loc 15 -set 1 0 50 ; constant 1 to loc 50 :lp inp 1 2 0 ; loop start; input xi and yi into loc 1 and loc 2 -cpy 1 1 3 ; copy x into loc 3 -fma 0 3 3 ; save x-squared into loc 3 -cpy 1 2 4 ; copy y into loc 4 -fma 0 4 4 ; save y-squared into loc y -cpy 1 2 5 ; copy y into loc 5 -fma 0 1 5 ; save xy into loc 5 -fma 1 50 10 ; update x-sum (Sx) => loc 10 -fma 2 50 11 ; update y-sum (Sy) => loc 11 -fma 3 50 12 ; update x-square-sum (Sxx) => loc 12 -fma 4 50 13 ; update y-square-sum (Syy) => loc 13 -fma 5 50 14 ; update xy-sum (Sxy) => loc 14 -fma 50 50 15 ; increment n at loc 15 -cpy 1 3 6 ; copy x-squared into loc 6 -fma 4 50 6 ; add x-squared and y-squared into loc 6 +dva 1 3 ; copy x into loc 3 +mul 3 3 ; save x-squared into loc 3 +dva 2 4 ; copy y into loc 4 +mul 4 4 ; save y-squared into loc y +dva 2 5 ; copy y into loc 5 +mul 1 5 ; save xy into loc 5 +fma 1 127 10 ; update x-sum (Sx) => loc 10 +fma 2 127 11 ; update y-sum (Sy) => loc 11 +fma 3 127 12 ; update x-square-sum (Sxx) => loc 12 +fma 4 127 13 ; update y-square-sum (Syy) => loc 13 +fma 5 127 14 ; update xy-sum (Sxy) => loc 14 +inc 15 ; increment n at loc 15 +dva 3 6 ; copy x-squared into loc 6 +fma 4 127 6 ; add x-squared and y-squared into loc 6 jmp 1 6 :lp ; loop back to the input if the square sum is over zero -sub 15 50 15 ; decrement last n at loc 15 to omit the (0,0) input -cpy 1 15 1 ; copy n to loc 1 -fma 0 14 1 ; n * Sxy => loc 1 -cpy 1 11 5 ; copy Sy to loc 5 -fma 0 10 5 ; Sx * Sy => loc 5 +sub 15 127 15 ; decrement last n at loc 15 to omit the (0,0) input +dva 15 1 ; copy n to loc 1 +mul 14 1 ; n * Sxy => loc 1 +dva 11 5 ; copy Sy to loc 5 +mul 10 5 ; Sx * Sy => loc 5 sub 1 5 6 ; n * Sxy - Sx * Sy => loc 6 (to be stored for r calculation) -cpy 1 15 3 ; copy n to loc 3 -fma 0 12 3 ; n * Sxx => loc 3 -cpy 1 10 4 ; copy Sx to loc 4 -fma 0 10 4 ; Sx squared => loc 4 +dva 15 3 ; copy n to loc 3 +mul 12 3 ; n * Sxx => loc 3 +dva 10 4 ; copy Sx to loc 4 +mul 10 4 ; Sx squared => loc 4 sub 3 4 3 ; n * Sxx - Sx^2 => loc 3 (to be stored for r calculation) div 6 3 21 ; coefficient B => loc 21 -cpy 1 10 1 ; copy Sx to loc 1 -fma 0 21 1 ; B * Sx => loc 1 +dva 10 1 ; copy Sx to loc 1 +mul 21 1 ; B * Sx => loc 1 sub 11 1 1 ; Sy - B * Sx => loc 1 div 1 15 20 ; coefficient A => loc 20 -cpy 1 11 2 ; copy Sy to loc 2 -fma 0 11 2 ; (Sy) ^ 2 => loc 2 -cpy 1 15 5 ; n to loc 5 -fma 0 13 5 ; n * Syy => loc 5 +dva 11 2 ; copy Sy to loc 2 +mul 11 2 ; (Sy) ^ 2 => loc 2 +dva 15 5 ; n to loc 5 +mul 13 5 ; n * Syy => loc 5 sub 5 2 2 ; n * Syy - Sy^2 => loc 2 -cpy 1 3 1 ; loc 3 => loc 1 -fma 0 2 1 ; loc 3 * loc 2 => loc 1 +dva 3 1 ; loc 3 => loc 1 +mul 2 1 ; loc 3 * loc 2 => loc 1 sqr 0 1 1 ; sqrt(loc 1) => loc 1 div 6 1 22 ; correlation coefficient r => loc 22 out 20 22 0 ; output all three resulting numbers