From fb6111b33d4df66519b6d03ee327d01cf634ee7a Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Mon, 18 Jul 2022 21:31:35 -0500 Subject: [PATCH] Fix carryover missing in utils add function Co-authored-by: sigonasr2 --- current | Bin 16312 -> 16352 bytes src/utils.c | 37 ++++++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/current b/current index 1d5f75ee114897cd129629d35aa705a79e74ae19..c4ade8d6d466e275a311c8ef1c1e34504b113880 100755 GIT binary patch delta 3797 zcmb7HeQZd;_61+-znG8=eYr6t=N?ow@}L1SkUqIzyaBu_=*ovJIJOt+Ecb1hy`OK{8t5oqOMVDNyZ? zUHQFp&pE&I@yz3X1@s5h9KEmCL8-kJZuJT_?_ zo4}azt+~D(bG|WhWMAm&)%4#$`HvS}J`rnywv=V_W}{C%IY~MsBFu)%DND(-a3{q{ z4ne-b3SEX=vKDzO`Lehl6Vg_cIs|_L&KR~Enhxx5hV;~*dSxjEoyw8{FHY4v50oNp z!w_0gq`7JfW^!|BNNj<{n{=WUj z^_^DB_O`{F=AmioDT7I} zgmX{(D!)37svxhwNkAM>)n}9_4Kg^RN#+%2^KaDD%S{gWj)s*ff%N)gXzQslUPf zIZLwM;k)gEa6EMvmdB_{crOzk)q9jx%W(VKGDOQvDYtg~@S|WKReX-m@q1eh5 zH_#hZ>bev^XK5EDanm`;bg{3!Hcpkz-HNd1@|Y_3jk!#x;--sY;YpnNx1*ir*%#)F zvE>CtNNGcy?j3ohv9XaxZrQz&2XbUOk40E~c`P8zl}?VQ4gGX)p9&kZN2XLADE^#!q1rQZRNriFz;}{A8S#0;oJuBULed%* zecMvtVIR@RN3!W+I~UB9|5InzSZ2_7lJmqD<^(;Q#XS~vpXM)c+MfC{zASM=^hW(( z<7yn^17dHEVgvK;t|bbpFgl6zlK5_6kJq*GDeIiz+coN+M#3#s;ixJc(}i6Zcryt@ z5`VI>c6fR8K-6EaMZayu1q~>Ir(J^v+2s>+-Y!}$Je4vbJox*lpTB5$@Y~PNbYZ9H zLZP7z6FhxPvkRLrLdk?;c+J=6Vi7gWF0ar9GG(8@t6j-`ww!r9BJ1~{Q7;dL+9b`7 zQDeM@^?8)d0j2IVRouNEHt1nj5$0i6*c4?SP!<{EuU#}`aklw1FEj_@D{ic4ns3P) z+kGNEwfA|Vrnc3*fC7bkKlPjVok6?^JhljpsPZ;{(*+R{+eKHZ@4@}4W0O<-B{n3C zJNq6&<-85Gd~+bKn=H8^vab zx(B#+d?kTUj#b__1+jVHJ&2AIs^fe3)tYg9>^{%2t{b=TO7{TPoxc{v#$=J!SHn_^ z*>tWh%;G2xxRKsY70*T@3Zk*CxL4eo?*+`C2KdRN0V*+o&%Izk)XY6#YU3ZA@hp+( zkVy0%yqS|LFTM}wbD(Y`F9JTzO83zJmCVrN$@ttuqB-0{rnclmXtgespT5`grZt}w zI8z>Z{3~~Pb~g}vqr#my*n2617uJ6lZsxvL(2fVJnL;gj9C<-SelXe7W?L^GwwtUj zsh}Bu_JZaNsj$4D*(ep^Jp-Py=WLkxS27tu&-D|@|$vz4B(4M8DlPodT#+obd-w7-M=XRNj>+&@M>lC65)s#P*BJpWbGzOg{n9#@HU z9}c1IQB5mpHT=A${g~UjwM>{_>B!JmHn9-CQn?Y^@@S>g zs5g=ehAT^q0lRP|1;A2OV$}cV1Yt{63D7DR^j4W6fLEf*HM2p2_-BKUCa|qdl3K8> YLqEl;?ECQIx{?f1qH^;Iyi~gAzjop^KL7v# delta 2873 zcmaJ@4NP0t6~6b`224Y3GnnnP)Ho~oBk*ua3I;rIm$yE$ETccDRkMUNq#e=Lg-Udz zEdf*Gj;9ALt+3We`qa9H^h?u6)|(vY6zoN$fm`? zpHo9jA>k32It^#E$goEPcVeqx$RX&YPR9^u4RO{G4AXZUu6%>DiJ%A#-v1S`iAQV# ztLaS6$$sry=UX-&`{VO9uPwKKbE>iW&zGRbv^zHwW2TBDq*Kq32^USfs1H_6B5eb& z*-8DlcG5%oZxlMsB9xn5^etwCxH$+rE#K)N0x@AIGa|)l{8H3Cf$TM7iVf$%ps6d+aLa<-F0~uV7IgG{N7JbM852Zat)8M;lP9NVAow;6Z zII!lkXHAU}u4j8m;ooUa_*dGttk`W@3lyb0-F&Zgx24;x8Dp2df5NXVL2 z@G|VRKUIp0=TNqJ4ifT#?Y^5R=Wda+w#XKU+V_Fkk$33bVnY7$Y_ZMLrKgj70~@H3 zdo61W{Oc{bvT8Zc){$6?Rg2p^Ax8WqN914B`3Gj;tB!kV1iBsf?TMg@yiiy#hXW_s zQdZt?*(R%jXHiJ3e57fKQ<|pDS&qRwj&i|$H(0ZG(KYa8=g}4TQufh~aoy>LGFgH= zS$*4p$#Nzs^Rn{x34Jx$grF?R$|YHe)aj~$ClOA`s<~jd9z$C2#bhOpb|Xea_f!X% zr>sbWvQj@JtA?|xJEOK^1l8knk(ZIAsRJyssyq5;+V_2eor-a1WIco`4fZxu_3Vh; zI46e_6k~U@r4p%O`R5}t0@g{GviIJIv7G-p=k}qxR+$SA6rGQ>@fxomoR>n3aDAVwtjN>X1X-1$YJEs*nxtT{L{Qi@f-utp0%Q zS083rI3*VvyV+t%oVmreVjpXsI*`wx_nGCR!7m4o1&;?Cj=?q8{zG%pB$=0DtWv#k zi6V5u&M&L=gR0c$pRx6p-XE0tlW4B4a+jUWIIo~g|IYhJo&7xht+lMZ+eQw|DPiFCM<4;$5@Ie zmR2Y&-j-tV6DbxkMW0_G`Qh<}* zW2$@{V_9)#+|aac#3sZM#8$)w#05n5f*oDev^e7NHBHOFOW?piHLVn}VqMdoMEuJ- zwCC^5t3&!uq>+Q^>|B!jahBq2{kx`}fM4Z*#y5g1-Nei|a&Wfb9725^Q}Dq&dvIO^ zw|Cd0M=<^G*)1jAZGTnxTvl4$>!#Pty_TM|aJuOi!nSmL>F1+4j&tJ!O|#$u-Q-GP zlPUQz$BgA(`4G-|cL)v1vGd+5cR_P{zB_eYg!r|AEPXrz!$ls)n{GqmK%%fx?!upX{aq09Z~+?=Qk>81*O=NJ(-2xNEN9Z_MMGt)g_K07hL(nf) z!?L(Q?eP5)r@MxiVK@@<04@Z)8$)opM8w3@=iDqg#bFyrNiG)W^EF`fexHbOr;(ZZ z4oETMI@5*BRo@e|3u^a!9AC^eta|To`7reFce;;YAF>4pNj1RW5b`)o?|0HO`tK{S zitE?Ghrizg?*mTXkI>6OvW-na7c+O8VA1d?zJVq-^gTtKVsUDJ%dL;PbR!uyfV_`- zJK0WLHC(}=oAcxRK&P;9Qn{Ifi>hshE(^aB1bw*sUQB`Jb&Nm8d27dq}21;NsV7I2er3T?b tpv?O5H|Iv6Z1dnumb1.length) { n1=numb2; n2=numb1; @@ -16,13 +16,40 @@ struct String mult(struct String numb1, struct String numb2) { addends[i][j]=0; } } - printIntDoubleArr(n2.length,n1.length+1,addends); for (int i=n2.length-1;i>=0;i--) { - + carryover=0; + for (int j=n1.length-1;j>=0;j--) { + int mult = (n1.str[j]-'0')*(n2.str[i]-'0')+((carryover!=0)?carryover:0); + //printf(" %d/%d\n",mult,carryover); + carryover=0; + if (mult>=10) { + carryover=mult/10; + mult=mult%10; + } + addends[i][j+1]=mult; + } + if (carryover>0) { + addends[i][0]=carryover; + } + } + struct String sum = {1,"0"}; + for (int i=0;i0)?carryover--:0); } } } else { @@ -55,7 +82,7 @@ struct String add(struct String numb1, struct String numb2){ } str[offset]=sum+'0'; } else { - str[offset]=numb2.str[numb2.length-offset-1]; + str[offset]=numb2.str[numb2.length-offset-1]+((carryover>0)?carryover--:0); } } }