From ac28880cd9fbd1fa08677aa8b85cd1adca7902c0 Mon Sep 17 00:00:00 2001 From: David Harris Date: Thu, 20 Jan 2022 16:57:36 +0000 Subject: [PATCH] Added FIR example --- Makefile | 2 +- examples/C/fir/Makefile | 33 ++++++++++++++++++++++++++++++ examples/C/fir/fir | Bin 0 -> 42704 bytes examples/C/fir/fir.c | 43 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 examples/C/fir/Makefile create mode 100755 examples/C/fir/fir create mode 100644 examples/C/fir/fir.c diff --git a/Makefile b/Makefile index 961c2234d..108fa3ffb 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ install: cp ${RISCV}/riscv-isa-sim/arch_test_target/spike/Makefile.include addins/riscv-arch-test/ sed -i '/export TARGETDIR ?=/c\export TARGETDIR ?= ${RISCV}/riscv-isa-sim/arch_test_target' addins/riscv-arch-test/Makefile.include echo export RISCV_PREFIX = riscv64-unknown-elf- >> addins/riscv-arch-test/Makefile.include - tests/linux-testgen/linux-testvectors/tvLinker.sh + # tests/linux-testgen/linux-testvectors/tvLinker.sh # needs to be run in local directory regression: make -C pipelined/regression diff --git a/examples/C/fir/Makefile b/examples/C/fir/Makefile new file mode 100644 index 000000000..b1f4738cc --- /dev/null +++ b/examples/C/fir/Makefile @@ -0,0 +1,33 @@ +TARGET = fir + +$(TARGET).objdump: $(TARGET) + riscv64-unknown-elf-objdump -S -D $(TARGET) > $(TARGET).objdump + spike $(TARGET) + +$(TARGET): $(TARGET).c Makefile + riscv64-unknown-elf-gcc -o $(TARGET) -g -O\ + -march=rv64gc -mabi=lp64d -mcmodel=medany \ + -nostdlib -static -lm -fno-tree-loop-distribute-patterns \ + -T../common/test.ld -I../common \ + $(TARGET).c ../common/crt.S ../common/syscalls.c +# Compiler flags: +# -o $(TARGET) defines the name of the output file +# -g generates debugging symbols for gdb +# -O turns on basic optimization; -O3 turns on heavy optimization; omit for no optimization +# -march=rv64gc -mabi=lp64d =mcmodel=medany generates code for RV64GC with doubles and long/ptrs = 64 bits +# -static forces static linking (no dynamic shared libraries on bare metal) +# -lm links the math library if necessary (when #include math.h) +# -nostdlib avoids inserting standard startup files and default libraries +# because we are using crt.s on bare metal +# -fno-tree-loop-distribute-patterns turns replacing loops with memcpy/memset in the std library +# -T specifies the linker file +# -I specifies the include path (e.g. for util.h) +# The last line defines the C files to compile. +# crt.S is needed as our startup file to initialize the processor +# syscalls.c implements printf through the HTIF for Spike +# other flags from riscv-tests makefiles that don't seem to be important +# -ffast-math -DPREALLOCATE=1 -std=gnu99 \ +# -fno-common -fno-builtin-printf -nostartfiles -lgcc \ + +clean: + rm -f $(TARGET) $(TARGET).objdump diff --git a/examples/C/fir/fir b/examples/C/fir/fir new file mode 100755 index 0000000000000000000000000000000000000000..f395b2e7e369d78774aea4c9e20a6e8cdab7c23a GIT binary patch literal 42704 zcmeHw33OFOwszGyx#!%BB)NfvIbjk|!YCjDhDexHL=c4p3CT?ep);9;c}jo~a0H`* z8XKhFLmz*)k9Gimea?+@`|L@v+qTuHIJJTzP7LqcRkhE(xrx4B|6A){@2!`!);+ar z*Pd(FK2`VL+-%6Xbc!XV;L8$U3Dc`1To&DMy|za+!iOeHj1@NSX(Cn85>6!Qaop<+ zq}peUFm9QS&@K_C(+yXm;WO>n?ixMMw9H35QFx8LP>OyyiG)@tWhJ#cPfqEnah?(c(2H1}$E5V$tF?Ck`!MbK=qBH75ZrUUNF3#Y@|> z(I$I#4u@^^PoD^EJboxpZJny=pLM(;Cs_5c2*}Q2icH=S=+aq^xTP}vovG#5I`7AP zl<-;du`VaNecS8Q-goxBzyG8AKYQTV!4r>u`^2g2cc*+X29} zKm6d6k3awWm&Z?j{rz`mPS^BLAN5uL#8EL@zDQ3$rzWxUsBMLJZM5nrZhIGH7ra+s zRqw6Nu6eJ+fGbbHnEwt|+Jx>BIgPr*4Pq9TDh=Kt}{RBG3_mjtF!_pd$hu5$K3OM+7<|&=G-- z2y{fCBLW=}=!if^1Ue$n5rK{fbVQ&d0v!?Ph(JdKIwBAjf#8*UqV8(^`s`g>T@l#j zT1{6UkvI7RTepY@c1_$RFUDu@UryO_urZi>K-}6ltL0`EYehw{Oq%_=T@; zhI@~{rC0H(jdk(Y?)_xnhcCT%)ydp17k<9w^ON`Bd=zqbU!* zan#!36kg{$k4F05Kl*ITH%HF|=l@d5A?qgWYgi09EtmfCY)nkdo!8ya|I&;-n+Cmf z_S$X%UzIOdG+t_57y8bZpbOl2_Ogc?rUqiJ7r|%m6~!-Zx*%2rUx`k5wQ=_KgQi}g zEcf;A)41yKNmCn?RV|0_Jvrg{rV_I4wnO%~Sojc(i-`;7?{S;l*R0_7Q&DzKjPO0Z zZb9&Hv^af1aN9PCnT(;Cj1lW5lz-iF^_~{86}BMGE#2eK41YW|MqqYl#yWeT z71iWg;+dWEuf5Aj6MfTvA4TH<_qhEpQv)m9Q^Dx3MUyL{f(<8y%qd3xQLjf!!_*!} z1CAvUKTY`pUqR`#^W@pHORJ#&?ZE}v=O(&gG|M%JbjrQ}Y zqQNacyY1!x{MhxLZ|bfOw|>(6IoU{j0oQ$cCuw=;jeqMAG(J4xK0)Knh2($z)He@F z#BSBK`x~7T17ZEOvj4QCJ>#}Co%}|OZfwG;2-Y4EO~~9KyZed{#g0t@_vG1@#KUL$ z#!2zTvA><%Ta^PzJ+BSe_1557cJ!%K{HamEmvi*aE!A7hxXYl6CEt>Cx_s$b{ZgEaL@&2RlD6Y?-=b^nNed~}% z#e1vd-BvB}KUngx_}$HSU;m(USnT-s%-i=j2ABWIvY+>f2492wi<^(0Y3X+G%*MKw z4Szbbzj0T=J?=fezW)a7r*8mD{D;Ne*AKqE>FcjM?RXj7s}Ebmcj!#Z-Oq!fX=j7@ z?ahImu6&d3)|)rCEI)i^aAStscl*oG(OrN?=?4zit{GEdo);?LckRsr{Q9KG`&So2dVg=r+8ycbh$Wo1EFO6A^A| z@C`&{KHYyui#6(OACmLekDs(hM@v20e*oeB_A&8482wM;G>x z#yXjUXgCjx{f*l`Q0sl`NwePd_{fHRhKl$bd_JH3{MTpic)n%Z(KFo}T+#JzlJWN^ zNiN3S1|LO#*$-Hipl@=7h3KYI4WW!}iGSlvlY=^Cy%E*q9I%4!8`h@hTv4BM_j59* z!40JL7u~m@>H{};r{j+FeJK8Za>t7!eS2WVrsq;Y+2DTnJy}h?2K3%NDRX}NAJvbG9^boY-P}oXV;yZH9((+aH~+Tw zFB9hH^)I?6eL{NwA{2XE11px5l?@W2Jh&=YR*bf^qNcXGxK<6~Hod&6thl_mqBgy} zptNG(p!3ofS5{`ki2gNULYP<_yU2i9y7ikj(X=V1O*3r|)25rYk7@gvc7SOIns%^h z&ogbNX@{A1xM@e2cBE-XW!-rPT`ykrpS40=|Nre?ggTvo*Amkb%&+P&_#~c9uYRk? z2=0cl|Lnzb{yVqt!>2Q0ezs?8H{&;rodH}IMnBGsS>J`?)(^Oq_MfbM&9ko}mF;viSx4b#Bx=kxH$-H>VIlK=;WX)sNDBQlR`Ko5r3&&kc%m36|Hy&lh6|qSQdNVq7Bb0zGzxh>4+20d;DYm5bOIvT+-_ z!cUOsj~C_M6rkjz5Q3|YZqM1Lakqg!mxk)bC27K3^d?+^p`KfDqa+R3xS8u2AbdJ4 zeL5|DIxT&cO3R5lbA38HeL6d14nnV0+O-5id^%HOz9-a2-3S%)2w;1BN*>_Bs|j(6 z5VJd106zD6LR7=3sNbb(0hI8LG6E*a5~}7CD{KGA#}pWoB+FTVE0FW ziur-yVA@{*r(6flPTgn`ru2rBi3;pQ8oPojk<>|XUKNJ=Cr1MlZI3m7Lf+{Kj70AloM+WG)lT&ob=6gXLiwB)}MyCEdFwdbsq`J69{6_kT zqZr(o@8Wh?x>L|U4p7AH!`&I+C;j`3NPLlAU9$NkL=5c%ibrJ%QOMlbn(82W14zLn zI5MP2{F{uXu_fqWvyG~z!5+Sr;A=nkarm?$B- z1&50RGKq3f=64H@Ku4$YLeYH;j9Jl)k@XOhR3rAu9>kVZ0cZf>qpQSyvJ>G%_uZfw zM96zI@y}&<8UV>2CixZQWgG~BGDuhiC+u{yi>+fB#40Qd95gs{YdCt=#S`DP$f!b>{0aX9gl3t{5kAjswejd#wY&?eOWI3DSbs9 zXarSux@2=t4Ce%w&}cU@K;{m88s?PC{-jvuO>tnStdw!HRaeAY{k4easV{S*ZI&rz zp1tF~4H8B47pSK48f(Wa#FL_^ay0HLa`Oe{<{slF6?M8~Gl^4fEzlWeVQnk77P4FS zZHRxxuz9-s7=NH!4%3=*mF8(eOdUg(AC8}4YVJ!k*Gkt}SBM^eMMw_!>V!w}MNrkF zJ4O$WBcE?ZH<ky80A?X@*?O-9_k5 zlTIH!+H)douQFo~L-2GN-^)Q=z8d&EWQ%nffK8M(J%fN)%=bWCBHjN(r1t{<5Roe_j&+5d&i!2_TvD40knI-*l`D>BEzh0xaV1` zumw0`Mob^Zq=4ydgQb!?SjN9j#tZ@eZ=|d*04I^`rV>_V{H68XOQt4b0cHGUm){GqS{tRGSe$QdT+Ua_Dd1 zk(E3$%~-rgjcDqH2KOjar!)1>&B!0kh!;BdRWtHYNY1Fw4UU5BA7W&P>9i)!p906v zr{y60v|Rdrh;TfXd>{H3V7MO^#AAI3ilWSYY%q}v|54ofeg?#^yHlc5rV!caOe|Kw24hXOWO7%KN)7 zAuzQO;O;mQHnOU+M(j}wOLQWRH-S{o?~6oQ3&?JA7Md!OjZwN}^Lbd2$t%T8X|(6q zk4f)O5995A!dpA$C6tOCO5*P@H2O}%ejV*nJ3Wirc#tU-i6U+lRJd=cBFDvPIY{V| z&99IiREYISWc3K_vo0xIwisKkG#bfDy#mbjsWdj`bu6H(Om%AjS~mKu4}fa`lXVQh zT?9Bt@dE_>0L)hax)5!zB+C5tq*K}V7Tbpq)MI?9bEhfd_Y(~+Y(Y?Gl7pp1VyUWL zE_M>h6+yAID_Jufz5a9zuTo)<^Dk9qSNoOO)=J@Q!wl7^%|sq(FMAc!xEqBGk*kd( z36BBWyNB6U&^BrvMk(($(YlGYw-3~XNW_m1BO-#85d>l^naU27Kv7vQAi5CL>mfk$ zO8Xr&qXJmOp8}W$V8D|A2E0VKKjGHdpqZsiuh)tpo z%%q*am|2G+YZ)UQAn1~-?RgMmU5~K^&=>DF1QPQ?!co0M?{|z`{MDgYZnUn#aGtdh zqaT^kZ!mI;9;Ig*X^kIf#8J-apa^lfA0Ep^@sb!)*Pv6FOb^?X^8g0b#HXx6q=P-5 zC2TB#g9uE$00c!bv~5XE0=QU#A}#|6IbT0!%ygsyMVD+Qn|nNl~kk0OrYnBd`6}n_I(WX<{%^pHxWo|l>ZuV#e=ZUmZ zD7?(E4BI@#L~MN#=kywJnc5l3+_AK;WU80IbNRcFYuy0sZ(vy$LfN;Y_bGbV($nJV zWrTWLkjrhg!1||vlNQ*806NnGQ;TaBdU{>0gM?X^LztZAoG>dCwX<7jk08^?=_pde!p@ec4Px z&zTJBiDQTWfh?{Hiiy)yC-0oinEi=Y({@)bPzJP-kY!&%23&yc&bUg@jZIHOR~ayN zG)WQE7XzJLM)wH9;gZc1&U5G}Jusjr5zBtCsuV?t+H7X%rs>6PAWsO^RErTd$-M_O z1DS?1!?_#=kFZNH{u;(X@qkg=g?hO9lZ25L$;W%bBrZVlf617L zTBk1Ad^Ls!QCMZJ2vAmhW=QZ*G9=qTqUy%CuyZu$1&I>@3wl#bS;*212zMrCeNZBq zlxy`s)2A~e(4KHBfD7p$at5aV6>@Eg;$MKZ=L4`PbX`g2cq5aSx6?biGYRNS;yRP) zD@V0MW?w)^NU<*lFiX!wfR1Tb8i6WNp+z=7M@IfDhG67lXm*3zdLF=w04}8CSO#9J zKxH2X@D&LgL!uTKQIyM0MzrD?f_IFRl*t5;)Oi5r;xEAkk=ghwa#041{Q-a`0Js8F z6Q-HE$*CusPe7w84382$)r5G8LV$LMg@$^75fmpkD_ug|;lVl=Los7k_Q5v9xCS}Tty4nfjV#(lhx=s&_?@Hp5VSos< z9@8T!t&!6MNix~ZN?WbiI>T2ZOMBXdY{tV!G5J|bIE#=;A`#{#cd`?@C%|A-B_TPS zI2#UEQAAud5CumQyZ|GXp-FI*_VC!d6d>{^ESNkUJ_&<&7p5#QH#mP$BHmD)1DUo+NHICU{N%@YLm4&`QgYdboGrmxQ&|H&c4E9A-nmR+8{!VEc6hA$b7l zrzoAnD!ieAv66y;Vx^J_#DmXQYv5eH6wYfENm{2vSiF}EnM~thhO!O4XWk zx;DzLW~MHT#k}ZJF+NjJ(o`f+H2oK5z?und%fiG^S-1#Q2g0+cp~5!F%YOJrGZCIo z*(w^b7b@4Wd!cGNS-9k4y*wmTi=5>J0A__de}$R|RIAxKuZVk& zaY;?I(tjn*g-*MpgP47v&>I7nKXZ81eD+`s+wC&^XM>aTgois~a51aIKL6nR zhTkW4yNr96=@$t1O9Ovz+W3uPhv?DwDSKr9zH+zA=rpr)H^YyZ;dF!U*Y2=zg?UpX z-L!In%is)yiu#3Iu)7_~h3!!;1SJbN&j_GMFg(KG{2RnN(PL!)-7aIsnvobaGM2{L zDkV`YKFcu3tJ@RUK>8#e5A zxf8<^mhUo{Y*6+F%o2CfLUatKhtqL~KdO`Y!e#S5F^VY$46}ZG4#l8g6$@Pk{fx?W z8DuM?R*T-dJ)652LQ=u@u_?fXZ271iTUeyb`^V%BhrE48&H>YcmqB)0=7q@aW3pVA z!TTAN?=r{|)C_UQ6NiXyH9XuRdJJwiLrD7E-7fcj&PsA!2KO42143Gd-2bN#DTC~! zA#F#0UVHlULi$+(#ezR?_}rX^VY~;LjX0GVCOgJtd9DXC*#cJ@kdG{II}g*sl!;6^ z&t))-G8dG4jQE4BCf8-~Wk!{`46;!wy29lOvz%9QuFK#vj4E^)eBGe*)Nn7w9M5E7 zJM!{8c~7yt`7VPjLHX=*&yzR59eE2pc{j1Vc`k!{7**sl_)A7DbQyetQS&^NZ--C} zzQ?GAE`ui-HP3q|`+G(exeQ{HT8Af-keD$8W-)4^%b@2Z5~a-~T;rMlD9c~$**cqr zEp{1PU{LlJ|8AE%%R_Vwu4U9UE`y&iYO%}U=i$=0^F7nSQ3EFPJK>962D>rp8kfN% zj9Tn6__jeQbGh?jh>pQ;8CB#m=!I>uaQm6z(IK+22AmQ?G02|@*qiat;7(D9j=?g6 zim~UJ2R15;!R-%`vq6a_`NPPCmyh1;6?wDAahF9de+2V>+tBt3DZ1Z)uZ2);LRKWa zRk4l}CfD6)Kwb*ImEu;ENnQpA%&@Z#pH_6+?Xt1F3{llM@js6s#k-y=#rbnGxyT)5 z%;U-MZC1*7LZ-6yx$aB@&N8i`+-JHRV~rMGqTXP1%6zv?P6l0$&Jos=?{XHMU{ug$ zkSC9x?NvrDuMsN?H8rxJ(9@X1$ZLI2)>Guhl+Z|QqRxv?7>p6j@=hRaXxbj z$ffRBqo3y-D4zDK*tDgdPuoK%c5hb*)n*Ycb=mW$LR7yopy%e&f7H#O=O)jg40=WV zjG0zS1P?Z@+v{fS_DX#w$0O)6$g9NO06OkW4AJo;;i?dd^TVqaK`%Wx`N=rL-~~MB z1$-h$BwnZ_8h`nBccth!3&oSel%n_hn-_Cp`Xe2GTBm>!F>j0Ux$YoFTwrc$Vh=i84}4X zD5jBwR1;Y5e@;2dDXygFb+Xw$JqdhHP7#2Wtz<~wj>OWHz*TmrX0zXc`k!tloV*oBrkuu z44GFM6o2?li=4?)%oxZR^f>d|<>cYnhEwNfBv!>H5=n|V+YfMpBCrfU$2d$B!~BsZ zCPlc-hTx!SyXLhfDZ5ek>J^kdutmqC^bEek?gSP0(kWRT@4LKG?^Y8;EqYePxz z#xNN>g|uMMKB}|#?GFZ*1e0P@tnVAx~*5G)|1UeE;acF}JV_(f$ z@>~X4BJCcwnBg0kEZ1ewBSQvrDO|u+GS_8rp+UhuyamX;MIk~43&RORB4>pt8Dt^Y z@i53jFvSc;$m8zXkUR$0hii7Zw=qP>;O16@+}jc&WN<5^5JFbWE#8!6u*{IzYp`SC z4qJtH?$cL`K5MX7aT&+9#bOKt2q^{`$ySClGLCI+#mGpumdps*%l06o3^D@(&memY zDh62`^2fWz1Hu;!aG6gM%o%Kk!r=o-^H%v8(~oS<1Huw(A;SA4qK;_j+mP*DTHil= z^!&EmTaKpY2O2)OX!rVOVEGdb=P6?xx6U&L!5=0G=QjrPifJAGtcpK_a^5l{{1-gJ zVeSO;P<0|dUBaK7aF|T%aGcnFu?;SIhVto!TW7i1l6%J)KJ)m^X4Z)_03U*c!?bmV z*Wo=sZ_J(73=i+fg~LPdFb}^E#(RB-X?gc99Nud4zS`k^IJd&#UF!n#6m%F^#0cJk z-oS|M2H?%6@V-3fm<@xIXaL?GIFTC^;q)-&F5R>aKbXcDgm7{V#D(4AQqFZ-I6TBp z35N^uot_kixOJM%&>qt|dkwIU5%(E@cYe-82Jt9UJY|3*rWMXd20F$h-y6U(70BVO zZ!bphZj?*AaCi-I4mzBKyaf~oO)}EzlT!YW5Kj#)QM>^3wrTlg;#G>5C3{<)`1@+; z*We}B(135eh_*QQyZLNe;tRae+%1BA3ARveH2ypzx)%`1j%|TS`eGe>gBnT(Llhx| z6=gf<_|fU4JDNF}I-n*hHDEYWHIW|BM4G|HfMwf?0l&BrWs!C=C!jlPlm!Wjid>NR z12Nkr#poaczC>U-es*VxKipQX`4ZXaI3S2G(U?X3IP`twz(4?TtWseTI4p!;Po^LW zj;6PwGu0@%;MJ5d7>Y4Ar0U>z4tuV+lrkojad6Oo2!+lfv@+szor7N=4$h#&<6#FUCYO=3J;qBhR7 zB+N22aS%ph6by=RioKSE1BZ!;!kx+}fpvMy#f76EO9;}-lY5L*f8m9swOZ8Jk$%2`lEQmNM z=z$3iy?|-d+Y+!K>>76KfO!&tQmfaOz!3}BOO)m00sMq5G#4J7_aN@+*z42~IQ8bF zx1sF^59#3@XClN-c}#D14^Hl4V{eX1B_TutRV^`9d=c!8Do!J zdk}f#*e@tEKt{3pm5xXf`wuBzMD&a&VJ|~52-pQ`DqTBW%Xv!6(U~?9R#4O_*x@Ne zI($l#j*@MEqIN7kzX=-@-l(7JNW~L+JK)6ugSV-2cx#pRv=m4TX+J#|I%5kcF-mTvQ-!10 zA@Dj1>1JdES~50WZ5TB?0&tWWr|qiB8d4I&9pX?U2ovCN^kvl1J8~bLAk>7?s?Y<* z9v&b;v{$8_1q-#1BxH0i;Bn3fZL?{Bh`a&vNbhvDQ<&qGDjG;;OZl6^{$inAr^K2p z=3^9PBvmSJW)N9j4v-#}O3f7etM$qt$iOls(?$`>6j+6UsTkGao2Wb5ZgmDTc6$R9 z%TYuH4w8~?=C0k@F=<$+6vMh@$|%ftyz&s~muJ$iKSjr}lc|A9T2{%lL?~uHJ57;$ zN$<0Ja;Sc*ata(2PgOI>C|Z%k$wv!ltWq|FGR))%<)BI~lVp@rWHlo4s)o#I4=PBq z7i&7LDC4-`de+fVi=qT~ZdCQH-LtS~E7c;>DDm(ows@0HgeS{jiC!I$w_4la9g0>f z6THmJG|BY&KYwqxSXnO)BI;*`6 z3uBDQD%{2iJw*X{MXGH>5sI2gdq|{c0Dn|d2JAa@mBDHRieheKvPcN~=Gb@ZBPGA- zKtE$Zk@)F5^k^EB&WOH&u(1I|dmTtH5ELs&MYGLli0-E$=xoJH%ScNm=tuNo)$ z@|wz_4uYOnZ{eju0ELcHnpzu7Dnc{?RPl_rdH_VQv=yEU8AnlPo3~`t+|rgW+VFA- z;J(BTINUNQ*I7jZ$s!=s0n1wuYt#%aQyHSyfL26(=^2S1>FHE1${}Qy1;yYn7!s;;plt)@*AG32%)dS#2=?CHHFwB2dCvrdsE85YV)+o9OuK7RjLcR0QL>*MH&%IjCwfRK`L=pi8tZ&rIkbFo z9Bw@AY5R#D$-h#?1A;VyHvD9;CmDZ8t0-vo5eGl$K%na|ywR%|m=%hIWY9A3WH2wu zYF~yOr?kReJ#oCJgTI;u2eeofvrafaYRk2HD2dfVnK!{KTRi1;o#FGqPuPw?RFf2= z-YcS9JXMt-wLd^Ih#tkG+6xk&|xF$N;&DnERE?N!Qq zX^wS2)>qZq)B;BZ(#H0IW?EurK(j@Cv=lTnMo$J8MN_kB8$s(uZ^6ShE$UDRS<98o zc(Y(tx_V(XGX0oR3P@+unjKZ>&^3SyZzP3xtR)d@8PoBM_eu!FaPyFhB{+8r1qF1l41jZgPY^^?=R# zF-`Ay7>zpGDmTc=IJ3eMj7=EO??=%dgN`;JQjj^rhp;|B!8|GSA%i(0Dah>aHHkL2 z6}>tj83#ZFwYoUO>rzeCv9+b`S8Jq+_K*&N$|;Hio$!=I@{lZ}rve3~i-CzKF$`AR zhK3XUr)LFbl5lTp!|xQ(Q;0NSvh>-J@`4avUib|{O(z*bX-gDd+R~?2WU)yny&ka+ z^!tJ_`uSttP(%`_WkZ_~U2mh!j0RXSW|qW9o4%JeUe$tW{3zA3y6~)mb_JPXM908V zc?h5aAmLSEvnUG?58e}HMf2_f_VrwBt^+vh$-#_R)l5va)r z1I&fIvdW5*bakVjE3GN6ol{#-TO;NdudFH#))p5D`n_HeqFPo_Q(96{T$E1ai_0nt zYK4aiE-9!MQ)kXizj*kV^x?xZhi48;A5vaW9b7V@dim&4B|+*HmQEipnAQY2o4_WtEjx zLyAiAi%+G6%W8{9oj znwtEo>f&H&O=)F?zz;0ZKz@GVveL5J(u(}@;__hCDo{cr{W?`m>FVNq{36q`S{1MS z(u&erQB+z|Bgz(+6_ki21rFTwz5nV6e9GjUj#9~WYKa_v#KVD zn2OrUC6zU``Nb>YbM2Dq;)0_5s!G^YTy2KHvy8g=6$Rz^9Zdv)qKSrLSXKaD`h~yz zd~#&;D8!LW68Oo@6{U!0SghDPN>}on95)*AGt||qjEt(S9cO75y?7(kwIh4=3c%%BotOuqJIWtwU-nE6b2rr4<@Cdeo3*6+f$}Tv0Kk zxNPyz(u!c&GE7Ql=Fnhec{%d6rnacGGINPoR$E$zMlT6(c&M4U8ZztuS>4d`g5Z+U zisJu@2pIC8v6qz=4lM}=+jU%*BhUZ*qT{3dH9e%XVxpLO@x|lP2cjelGL=qD8jFv{RQV8+K3I!N^ikC-9Z@wbznpFbbX!cf zBDw`}6Mh*J3tIKV$!BrdLavqZme4Z44-^JkXonc4ZjH149P@Pc3)wGb|33Q<*?-JV5ZUeOxe~IL;KiTj@o#NrC%j|L)6#BBxIJ-a za=k@Tcct9X<<2x~UMtyu%6>ijjqD@YZ)X45(?j-?+!XV*rUbxr^}~zseGGm%A#q)r zP_;OQjI^>8Df9E!p7}Sc7|&l@=3i`L{98sYek@2`J#Z&|pBcPgqeXT?Vs<^g0Kt4G ze#B18eCKMO;hU0BWnHQa)d=S2?}+2WSaq?V{G{gZ>p|~~dTYwllTARFZlTeWZTPbj zhE1-wRz8h@wvxBU(2erw7A>exp4CPk|A}>0i0;y@iL>hy<~=?61qfxkQ_T0Nn2zyR z8vGQ)Pv2vtIP&+s?l<`CgadNQt#MPDVy02%sT8E231d0a%-6E`cbphsXz&A!9L8@o z_+AnCeFh&n-~9Ld6^8z&8muiEu8X9>1|C14)E?gU)?YY}Euy^j*Bb8=S>`*Dt?`bS z)-K)^d)meO1^-BOYdO)P&ipQQYdn6Ev7O7NA4qKHvQ@QdJ7A0Wwn$)X?^lOg58I+s zYlP|92xfbiE$BxZ+g>()vcA2`#_zMYciExp=nd1%Mv3ERJ%j=9Yl66>NSCeWHx=0S z=zIPMejxA`A`w|9sV)&dvd+;uc5vR!LQ7YaZp0;MCBCP@^UIOC(%|`b#~EJ;JjvlJ z%K)?%lc6`Vj#e3bRvcCOE;X~`1pR0d1^pSPx zU4xITvmYCLWIg{9_(aV6yomMtt-(jG>(dHviL8jaW_%n{z{${ZZL!xxS|WtD{mWqj)Br;jb> zj23?M(kB^xI`fXj5T}lP*ew>|oC7vGkEtWFIT#poLx(PNXrg_-cbI5>kWxpYRwtv- zNd!{q{L|{-LT6EtS+lCVwxAGgZMANfFjQN-vNltlDl_$QOJovC-$4({msNpLot!eO zE2$+h!!ySU(-oOG1%g4{i;4@El^_s{D@CS;3knOXiVk?AoZU>f zx}v1ja2Xv0%owyXNN9u=eL9#REno|s#WQiL*9Ux0;^JzY4ZRfqF9F@bjZ{UA^{zSv znF9O_4TfD&VK9NTe<2d=6!gXGFI{)188kOp445_(Z7cm|y@+9&U;zCUci4p$-s&2K zUN}FW3kHnQWb`ja!mmjFYzz`fvLWLAOBNkwaQSuP-MP>0bc_)H2t&d9oN0#t3Xf9* z%*STU1DasAi}yo&4F4`3FmjmRbj2b7gyZ=0b9L;6nj&2{-aV3^(n#@}iRC)X{F6OS z4P-_1e}+E$5N8(6M_sg}k3&IkUFp;zk?cj*+%DHqG;t%v=r(stl z|7{qH#1Z+hO3g&iw#g7q2Vb3&o20-^Tz // supports printf +#include +#include "util.h" // supports verify + +void fir(int N, int M, double X[], double c[], double Y[]) { + int i, n; + double sum; + + for (n=0; n 1e-10) { + //printf("bad case %d\n", i); + return 1; + } + } + return 0; +} \ No newline at end of file