From 4d218468cfb76707c99c97e2a10fc650b5f86a2d Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Wed, 29 Nov 2023 23:17:41 +0000 Subject: [PATCH] Revert "Merge branch 'master' into quickselect" This reverts commit c77fa344109aabc0aa21279727be9a3a15bb9cf6, reversing changes made to ffd6e5dcbb9e213b8adf8f3988dbea99a9f6837d. --- examples/core/00_example_template/example | Bin 21688 -> 21760 bytes examples/core/01_one_sample/example | Bin 21928 -> 22000 bytes examples/core/02_time_to_botec/example | Bin 21952 -> 22016 bytes examples/core/02_time_to_botec/example.c | 8 +- examples/core/03_gcc_nested_function/example | Bin 21992 -> 22064 bytes examples/core/04_gamma_beta/example | Bin 21784 -> 21856 bytes examples/core/05_hundred_lognormals/example | Bin 21744 -> 21808 bytes examples/more/00_example_template/example | Bin 27360 -> 23064 bytes examples/more/01_sample_from_cdf/example | Bin 27648 -> 27488 bytes examples/more/02_sample_from_cdf_beta/example | Bin 27632 -> 27432 bytes examples/more/03_ci_beta/example | Bin 27408 -> 27200 bytes examples/more/03_ci_beta/example.c | 3 +- examples/more/04_nuclear_war/example | Bin 27488 -> 27328 bytes examples/more/04_nuclear_war/example.c | 2 +- .../more/04_nuclear_war/scratchpad/example | Bin 22271 -> 22280 bytes examples/more/05_burn_10kg_fat/example | Bin 27440 -> 27288 bytes examples/more/05_burn_10kg_fat/example.c | 2 +- examples/more/06_nuclear_recovery/example | Bin 27736 -> 27576 bytes examples/more/06_nuclear_recovery/example.c | 6 +- examples/more/07_algebra/example | Bin 27360 -> 27160 bytes .../more/08_algebra_and_conversion/example | Bin 27360 -> 27160 bytes examples/more/09_ergonomic_algebra/example | Bin 27360 -> 27160 bytes .../more/10_twitter_thread_example/example | Bin 27520 -> 27320 bytes .../11_billion_lognormals_paralell/example | Bin 27400 -> 27200 bytes .../11_billion_lognormals_paralell/example.c | 11 +- .../more/12_time_to_botec_parallel/example | Bin 27568 -> 27360 bytes .../more/12_time_to_botec_parallel/example.c | 17 +- examples/more/13_parallelize_min/example | Bin 27464 -> 27328 bytes examples/more/13_parallelize_min/example.c | 49 ++- .../more/14_check_confidence_interval/example | Bin 27360 -> 0 bytes .../14_check_confidence_interval/example.c | 21 -- examples/more/makefile | 5 +- makefile | 4 +- scratchpad/core.c | 27 ++ scratchpad/plotting/src/example | Bin 22631 -> 22640 bytes scratchpad/scratchpad | Bin 26920 -> 22672 bytes scratchpad/scratchpad.c | 23 +- squiggle.c | 4 +- squiggle_more.c | 327 ++++++++---------- squiggle_more.h | 59 ++-- 40 files changed, 274 insertions(+), 294 deletions(-) delete mode 100755 examples/more/14_check_confidence_interval/example delete mode 100644 examples/more/14_check_confidence_interval/example.c create mode 100644 scratchpad/core.c diff --git a/examples/core/00_example_template/example b/examples/core/00_example_template/example index 7dc8b29daca775a16fda482f422103f2c339b406..2e60ccc48490a9e4a8bbffba3c76116e130861a6 100755 GIT binary patch delta 1857 zcmZ8heQZ-z6uk2=e9T zM+g;=%@ZSnhLX$}(LaEyEP}ED2^cXfQHVy6ZX#4Ng^dvgj$F^}dnJaG-2Tq_osWC& zxwo(DGun25wigH$b2qmj;=~=IjuJD}!(^x0B|=KG!>R6BN4V3b$^+CU>K7 z^#(*-)4`rs?mar0kigTm;R}KJwc*==`apPezOu9E3#6Z#J?Xyk)_@^i5?z(&Pk*np zzLh^x924oi%-9HGON=o$C8P~;8lu?8SP;>T7(>6<&sa0s6^NS=TM*k3V~CxI;uXfa z5!(=dM(qBRv73nG8e?PeULtYEN)gEbV@(2?L4v683p90TiCQy+{F8Mbp|%^| z@Mr6eCF1t`vjZ1VGhAovd0rodZ_B5@6gfT;E}TonLAE2eA;BbCAr9n5;l5u=D@V;e z0M4>mX>X%S{(%)`Gj(TCEr=c}Yc)dibVYD@qKBs!ry@dspqe_OlV+Z#bQlJo+((x} zN2N;;J#e_PnBIiG%Jn{nN83t+HQ1FEdkON#hq4=OE?YFd7s6E~La7bDsj3!Ab3v$H zC%24KW0EH+!j5>27U-z9+eFf?eU6hCR|EU2C3%4s70FYxle1aDy{6YSub2fx)iY{$ zX=c+yrS@q2L9K=4;66cKBu*j*)#AzDL$J6;qF?hZ=xOMvk>sC}mH7iiNxp)9=)uTQ z9_dTRcg+t(v|W;|Iy63r-)b&ZDv*50QzW@U^F}mpNb}BxkRlluY2NPWD@vVUdhO-a zYnqq8uy#s09GzABz%27eQ|cZSqEqJdr_irJ4waabH|sG=8>fIVmidllvchFcH20 delta 1686 zcmYjReQZ-z6u4UE)-TLq|3Y(Zvi@K4hSh;s$n0CIeiq=k~oCPICJ@_jf+- zIp^Nj=x4O|Q+jwlo2qUt_|1IUMv`*c26kFx>PyqMeX$B!PE9@9j`YC0?8hutXWKgW z^U3N+=Dh}6K!gny^D=1NzY?yB;vhceK>SE=*mJ zJ`0`WbM8R1E04){;BA*m55R~kSKcQRV%-~MgiKgBWbVZs_G#D)Ze<>;lp(D6DTn73 zujR^Y%<%1PE$amUB`@OyQaBGhK7I!Jm3g!S#+1wS2z;OIHht_&8Vz5-t!!6z**_u> zE0we{#ve=)lBWrLZZ9i!LdYGNb2m%G*s6tB-Klt0@(!frR`OhiE_XP+8C~M5CgGmD zz*auV`HeS{P8eg1Z-!+#FVRbIJSUr;ik;1Qld7vz9L>4wnv7pa2`i&9^qV~ghUbNBT82}467Ts6=dkP8RV znl5Nvgl8wNF3kCy&f)tay|^-9Iv^{hXKHU0{>xWGxUPBnQAheV$G;Bw$8NMuW8{R^#9eyowKhuNS$PLanVT=$_(;#w> z{KdKGONihuA=il9t|UW9M}st;&Aw1&N`%Mab* zB6=9EhIa;f{g~uF*@nm4vB(5|Mnc{Z<)FN*^Uct*x|j{w;j7hUY{&zwY=;Ue~uZdg|1q4k0g*Y$DZY zN2Y#{Kx?^dXiuf1$Kh1Dten)dB%cntrf&W$jHCDUly_iC_iM-hP$8-E7{1ozFx(oy zS_5K%h$<@ux;3arMRe=K@Tw}CDs*c@tV6A0aJy2CRaPx!vFPI?X>>hoj1*_4W}if$ vMhA37nrRRC*B0B10WDh!dt)2da!P}+v39vBs%plkp`&&=yIchqYV-dC$EEK9 diff --git a/examples/core/01_one_sample/example b/examples/core/01_one_sample/example index c6e47e4384122d1d3d745185b4e041aaec8da32e..d787733fa5d6393296428eb7ec235537d22a588f 100755 GIT binary patch delta 2059 zcmYjSeN0nV6uqfM?;_P_N+3bXbli`VJ8QlPN$z`+x z4kv#r1Vtz_XKKoy$(~z9?g{PYgxCfV9ag|z^9RD&r=Yhq32Uqot@f#`Ew{eVx~!<3 z1Ot|wxNNj)9UeGm_RuZhx8~9+XtFx!6xeCaF}!WT(zyFZw0ikii6ziy^$VBHkSS(q z8XwD%e=uX@yjU<})Gwh~%%PiLzvvTgKZ1K=mZc*ZOZjPwK*)%;Hc>zoKBh{5Nw!>C z4-0LXC|_rDBrQW-IP;MlvmQEa6B3G%!fIgh@C-O_%N2e!!Km#r&4NGecJ(p51H4w# z;6J<7w*LY5#DnVODu#DN2wm#u;7V}_zZjt+rNUu|_~_?xRdr9eY?M3cB3oVRLj&}r z%#D3wz=Hs2QYRS>+-Gd)i--t);=_O32XE^7)CYQ=S)Y&{&VSCB6u29$kWO_;AN(tI zvmhKDhWFF=30LldE+atSfv+>lh0Z&0Gvh5`{~hFJ!{?cWIkWNzDSE>fxKLE(3p^}Z zR1|n#C2e_mGSUm@O&par-ii+&yA`~e*^}^m#ln_sdF%P02u^N%| zGuDk5LL`WN1B^BBJ>qAG!-zW(b$>H<7}13oMyx}8j@XWqQJ9>SAEEJ4d{T&*DTSDUQPzlaOqjg*fY=%bi>E7sigP7^COiD#k8Mm-Q~;D(ZdXHG~Ii zLvlIv=UY?{m#*E>XAm>7Ey~6QyO~`!%XA3N14H_w5CUr0W7 zAsVnS9y9DMDWx4SRN}>7cWI*-N|Png6IbFXxHJSkrO8HoCX;NBc4H;{R%#KO6_qYa zwnl5Pm0Q)FinRqYyt(u!_`FVcx5D))|1QyZzbbsXLyi=!(goP&wTJ_XwFAEjd|Z@) z+~9dAg$l_s-+XOY^g0b(w;KZu`tyt7eweL>p)cHBvR delta 1867 zcmYjSdu)?c6uodX{z$S_leFTeZ{?6~5d+xcn z?Zjbv@Gy;*3dv=A%6`?<7)ff>fS!6Z(F|!7jRmQnYDT0L8G(Jm_okZ1{Xfror187@ z*tG8x?^!;gNW{U+gm#J>#Vb<$#UM!}UKxGRG%Wgx9txLj)k$4UPT%B&&Upc%4wo>?1jigLu4nPWQPsp%?Ze5&dnrw7sdI*m zkngNhwWB6^1D?bWF_8VATplrkWM+@5L+~J zry!Un;k0`|sGWfB{0RLD?&L2Q6ywlX@DNqOruAWk5@j;Q;cv3C*65l0dCBVI*}|ABe&uDll*b0CH}$ks#3W(@@h+nKI%7HoCPpkmOpG(;Mbu3(7DWsr zjw+z9qF78~?H;U^)Mw(Ch>#+j)i}FhxT2&(jVDdf+=T;go%C=6`9Y5I;F?`HpTv`E z{>SY{dmVB)|KmPIyAynsM)L;r@P6{a_dSO*0P8DD%+2WO;xrEY!VoKV=LmdTX%VZ@ z8p1w4o$^Uu-g^h!tF+{=L(7X@oQFsPx#hz7tXy?)265vujNCe?sdA|X&`Ml{RaIrm z5j1rWsj@3?qUD7{RrWO|>|pp$#vYTm;D;+k?i_NwHGFVxA#&;~jBQOZQYp>I^&s~E zW+MtG&2@L=s?lu1xdDCskYC-XJb_j(Y_6_TXUMk%lU`$Nuy9xn?TZ4mH1^@5#Tm2| z#(aL-8=Jl46s5ahvhD-=66~pWQ8yf`_fP_3^;=NX(crOl@-E@%=lkN=hiJem6K43R zVJY>(hUDDomJGqL-y)uoz5Df2zEKIt4?G{e!atYsXPc@*{#Qu97$r7HFNj3f zECybEjFWRtq|*eFrlEYLQAVhQ(7p6ltQHS rH97+N6&`(Wg~X-N8f#g>s1R2}Yv_KBE+~0Vz@E@t;Y<^p4i*0k^~M>= diff --git a/examples/core/02_time_to_botec/example b/examples/core/02_time_to_botec/example index 4ef534c4142d493af1e92fe462c6c1275509c9a4..ec138993554c7190332f129336fe2510eb67417b 100755 GIT binary patch delta 1955 zcmZ8hdu&rx7{BLkr4P5YUE8&{dvxtyEMsilCQNkD!XCHTWDgi@2C*2x5n?uw$j~W6 z38VsM`hg;Xl!yN)F*A362*J29HO9oy5QIe`bYsKv5cU9vA{@Wddus?^a_;YZzwh^* z^PTV9d;7m6-6u%TOyc<<|B80Z#6@ikjHE~#j+ec#nS?i!*K4jBI8NM?*e=~pRukT;f@xF6!f9Mr z@91XBP3bfK*`*c(XT*V#MA3al41~mih%q(`t3-Dwpbqp8KBgCUsbQ-#BVG)s2SG5; zC;OnqoI~2-ZF4(M?QqAOrTgLmrIY$r)o*qiNGE zmI6+po^-(mAzPa_Ew8;CJ`)ONl%h5=AI=K7WG?(A_{bsf*t2b-1v~jpH_vgC`W1;s z(Zge^j#{A0o=bFa%+&y_o9;WO$iKAwwZpFPL*Y812YA#s?b*Y#6 zK@$|D*>$hrtH8Q-(FFBrR{OHMEEg*^$c>CtMF~TCA#|rX$QlTyHD#PiW;w<>CTbao z)IMZ6hNx>uKLm#K${G7n5?KTMPf>b(M^u9;n#fN0DE$p`5R4givQ3(mv70BW z;bi9Ls3B(>m1Gc{(F&l9lu^iDqN@*Qp&lsg`h}<6D%JS$aa=ZzG8`Rn1fv=}c$8)#G<*rTO>6?gZfpKGn5$(T8dC*v z^dXms$c%A)IC{ZZVzQjZ2!0t+tHb9d93uEi>gRW21TP?JEQhst?-Sfoqw;W0_UtPL7y zsSwGKbfjWIJQ;#vZw={`@)zdu;hskR@nojx`>Q}ySfISTdFsEiyg8ec9I=f6;l>FWqua=%=RgKgIV@t*A@hCwN;Rm zs6R`N#(Fi#qS}i}Gz9Bv7Pupdm-)m>QwraqR21vuBN(W$3Oeizt1D=fcW@~u)5EZ6 zCHc|kJaCFup;}R9;=hnt?9FI~MpU*lrF)yA>Cccgv3hqYyg}isMjPY~T1=+q$)z=9IzlTHpU}X^C{Jb}=t`7Kh{br<1|eG+R5A xB`-7ttxY@0C=53h89UuF7sEEmxr7p)(}Jscj@ILoqt{?n^ISgnc{tFV`yX8VKu`bx delta 1762 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 a5vA?WR5eR8Aj;X#;Aqt>x*0~QGXDiAEjoq( delta 1741 zcmZWpe@s(X6u$RCu|;SLw!A({p@3RICzO(j8H9o$Wncs+OL1(&1s0snuuZ3ICc>s0 zO+b;eKV;L0i;K?0tggCWG7UyEmbs~OLz5YKsGD^%1?Hw~u)A~nUd@u-pz* zbI-l4e2DHkM7uMncW36Xu4xttjV6er*}8^EWz`UXjTD zpZM#%;duNS-CQFfp03!B43ItRM`$#;gr!N)Ynm-MlHjCi z9sLv*m}f_4O))lMsMGXVVOWw(ksDu~Fc@)H&b@3UBv>{DKJ)YRFpQZi>4#8|ut%7g z2tOsHMQ`~_3B4)tP_TXcJ^ebK^e|@gUCgN;j~s*geo7RSS6{d@Q9$AGoii zHi(!yE9!Ovrab|M#JPCDM-wXq+kI$HOt<79Z+N3k;61F5U5P6^r)FgW^rPnlTu)4+ z!w_Xn(VsM9g5`fINxuM>bxzD~q;Ow;7ptMs>JTc-&}F?sUxycxth!~UkgC}M+mkHT zp?f?M@6D+6F?c3K7;R<~3?wBBHWQ2_)g-@`Z-sm?L>ruO4=&kS=~k#oPNb^?Ym++#dIKiy9|-y}=u7p{e242d z81r-eXU0w=cKpJaj5v6cu_?snTa4N9QU*sEt46f^##jsDCd6)mEFeKN_9KyThq2EP z4gi$iHtJ__T-Av6k2vX+8RVYxXRnH8NSUGQ|F`AhX>9_Bp!W^ zFdVJdR?H-JzC`XcXk00pwP?8^(=|`C8?6?ob6GY0X!Sv>%lga}wB%nIYr+^lc=cn* z72IYlFT^NZB%Zw)xmK0ql~|Db0lCM}pG4TG-d?B2e;HDRGY_=~qcGumJZdYNm+wGH zUWt}>l3*uc+&wEGr;lsFTj-(Qz`nwwNa}@=;&R#+$SnDa(s~$QyqB(nouw(X8jh4^ z(;OHn-GNRom5EX}-yX*Z&i@kTC`mE%`hvN6-2tayaaQi2t5PrqH^ z=ktni)WC%$qSUCWa+<=1yRx3Ex(-#XhSc&RsaIW%sXK%_vmbVri;`be`{I;LtJF%5 z@l5nw=qtlGdX9!Y`MbvvzU#lC7(LB!#3MQ#_~LlgZgsD4T~3wnwkfe?3Xno*_lQ!R zs>-TbqpHn3r*4y~lE4K|g8&7Up1_XEWkNt+Dn|&%;^0)x0-ZNq3Gu>Y&D-=Sv@g$& jZ*wYK7-b=FYWY7D`#rE?q0aA7)J~wa3uyr?s&)Je9VipC diff --git a/examples/core/05_hundred_lognormals/example b/examples/core/05_hundred_lognormals/example index 0aa6c9d4a38b79344388aae63b6f04e6f8eab2e9..5aae3a0ffe678f6cd954069faf97880ac68ff0ef 100755 GIT binary patch delta 1828 zcmZWpe@qj16u<95>5oBsr7hPVKu-h;Aqp*QnkZN%Kdzt=5GOiyY*V9K7Eu?0#cXaa zj!uoRH|(aLg#}P_RbfEY4HfFpt%d8DN)e^}q0%EVVUm`S05OO!P(FR9T z5zj`=sx+bzy^)|c_)Wjby+=xM+mv}<+^>ZtLS~{E)b_)#sb%Ca*ey9^8%)=AvgE{2I-n+3gfGg%HT)>?Mj31_TF$x2vj zn`>}CkV6ZdQYaj=B`0xCj93I;*j^zYf{@nES{(4KEz2-`Pj;QOtFGFJ9bF&XgWG92 z+B;}Ax&1I~^ON<^%zH=WFtYddgB2@~9=al3Y7cfluGlAgG<*Ne0yXB4L!P!;f!Fkz8uUwY@P~1DNi=Lba zPtNH}d9P^Q8`53Hc`}2;l+GZwjZi8OhUq|Dh?qA@X&qt+aRluhS14^m{VT)+h*892 zh)q{1{SvWbjM50=4B{B#!t0bWcqDCqP@0Ztzd@;A(#I)nVVN>!5QR=8@+K(lMGPSh zAYMkijM(%irQ;GmNvSRY3!SF432|Wz6NBFCA-&-B@?;PKDA&PuFYgesnPXV2y0TF? zfKLRDdp)H(Y$abY;kU;O;*ScGKf)FW7MIz z44(?Lb%3|HR`WheTj0&&rMe-MI&sc0?YD%RvjTc(E)_{Ae4=zgA_>80c{LHj`A>gK z*yIw3E&YgWgsuuV>4d(DLec`G6|Ig?7ViDn+KH)CvA_syujJV}8@yXNA5ZFZWi`G@ zRjXqvL-tmCnTIt<0aMUbWwUS$hu?;@)RU@)<5j$4t>Psp>D1}GBw6*ZE7ne!u38c} zq-Z0`&syE-h{6|T${EzjbtBI)PKK+KdG*}~&sX#0l#~H~+4z2P6g|zXy%iV=W{NrmOjqJiNbBuX~gks9pFJK9VlSSIWSYA&;kEaWZQa4?&5nS3I^# z`x@F6E1u%JVhw9(+qPrpmaUs#eX0a5)dc=ki+y2N?Fu&BvV0_gwV9!ze!gBkzYqlL p-ys8FZYVShUU_#Fr^59Ol#mXnZ(N`s6lLQ<=xSU*R>Ap3&p(^#8lC_E delta 1666 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 literal 27360 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 diff --git a/examples/more/01_sample_from_cdf/example b/examples/more/01_sample_from_cdf/example index 23b3a0e0c02898dc4e8f02038fc929aaacf82d51..7d52316dd6699c3ed2263fb683620b88781a0e2a 100755 GIT binary patch delta 7510 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 KWGNAo>-Yyi%O`^X delta 9738 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 diff --git a/examples/more/03_ci_beta/example b/examples/more/03_ci_beta/example index 0407d0546579e08bb997970500f59ceab7167aeb..acc44574106bf3ddecc74fdbc2dab5f98097dbc9 100755 GIT binary patch delta 7101 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 delta 9087 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 diff --git a/examples/more/03_ci_beta/example.c b/examples/more/03_ci_beta/example.c index 78019f2..1ba8207 100644 --- a/examples/more/03_ci_beta/example.c +++ b/examples/more/03_ci_beta/example.c @@ -15,9 +15,8 @@ int main() uint64_t* seed = malloc(sizeof(uint64_t)); *seed = 1000; // xorshift can't start with 0 - ci beta_1_2_ci_90 = sampler_get_90_ci(beta_1_2_sampler, 1000000, seed); + ci beta_1_2_ci_90 = get_90_confidence_interval(beta_1_2_sampler, seed); printf("90%% confidence interval of beta(1,2) is [%f, %f]\n", beta_1_2_ci_90.low, beta_1_2_ci_90.high); - printf("You can check this in \n"); free(seed); } diff --git a/examples/more/04_nuclear_war/example b/examples/more/04_nuclear_war/example index 2cd828f883833c4b21f587ee83335166bc3eed24..8feeb700a51e1d7ecd8efae7cbc1a3bf1fe6d4d7 100755 GIT binary patch delta 7415 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 diff --git a/examples/more/04_nuclear_war/example.c b/examples/more/04_nuclear_war/example.c index 66ec5a7..90e9d4d 100644 --- a/examples/more/04_nuclear_war/example.c +++ b/examples/more/04_nuclear_war/example.c @@ -60,7 +60,7 @@ int main() } printf("... ]\n"); - ci ci_90 = sampler_get_90_ci(mixture, 1000000, seed); + ci ci_90 = get_90_confidence_interval(mixture, seed); printf("mean: %f\n", array_mean(mixture_result, n)); printf("90%% confidence interval: [%f, %f]\n", ci_90.low, ci_90.high); diff --git a/examples/more/04_nuclear_war/scratchpad/example b/examples/more/04_nuclear_war/scratchpad/example index 5ed948d11767b1236309cce9e99ba9067ff95b09..1c3d4e3e54c7195d043a2c5e635120f410acfbff 100755 GIT binary patch delta 41 xcmeyrma$_Un+a diff --git a/examples/more/05_burn_10kg_fat/example b/examples/more/05_burn_10kg_fat/example index 2b18cf34bd61a217546c5c135ff860a35ddea7d0..524792d64bc6e3042595f9f5aa36ac3586d9099a 100755 GIT binary patch delta 6871 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 AaR2}S delta 8653 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 DS_GFY diff --git a/examples/more/06_nuclear_recovery/example.c b/examples/more/06_nuclear_recovery/example.c index 572120e..4caf57d 100644 --- a/examples/more/06_nuclear_recovery/example.c +++ b/examples/more/06_nuclear_recovery/example.c @@ -50,7 +50,7 @@ int main() // Before a first nuclear collapse printf("## Before the first nuclear collapse\n"); - ci ci_90_2023 = sampler_get_90_ci(yearly_probability_nuclear_collapse_2023, 1000000, seed); + ci ci_90_2023 = get_90_confidence_interval(yearly_probability_nuclear_collapse_2023, seed); printf("90%% confidence interval: [%f, %f]\n", ci_90_2023.low, ci_90_2023.high); double* yearly_probability_nuclear_collapse_2023_samples = malloc(sizeof(double) * num_samples); @@ -61,7 +61,7 @@ int main() // After the first nuclear collapse printf("\n## After the first nuclear collapse\n"); - ci ci_90_2070 = sampler_get_90_ci(yearly_probability_nuclear_collapse_after_recovery_example, 1000000, seed); + ci ci_90_2070 = get_90_confidence_interval(yearly_probability_nuclear_collapse_after_recovery_example, seed); printf("90%% confidence interval: [%f, %f]\n", ci_90_2070.low, ci_90_2070.high); double* yearly_probability_nuclear_collapse_after_recovery_samples = malloc(sizeof(double) * num_samples); @@ -72,7 +72,7 @@ int main() // After the first nuclear collapse (antiinductive) printf("\n## After the first nuclear collapse (antiinductive)\n"); - ci ci_90_antiinductive = sampler_get_90_ci(yearly_probability_nuclear_collapse_after_recovery_antiinductive, 1000000, seed); + ci ci_90_antiinductive = get_90_confidence_interval(yearly_probability_nuclear_collapse_after_recovery_antiinductive, seed); printf("90%% confidence interval: [%f, %f]\n", ci_90_antiinductive.low, ci_90_antiinductive.high); double* yearly_probability_nuclear_collapse_after_recovery_antiinductive_samples = malloc(sizeof(double) * num_samples); diff --git a/examples/more/07_algebra/example b/examples/more/07_algebra/example index a582422f63f8f8b3c6e75363d7a61468d2f33dce..6419e1576a0a66145a623976614243be87b4b01d 100755 GIT binary patch delta 7021 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 abM(ywN@56krFw=gWS!KEV#zD(CjK30wd|At diff --git a/examples/more/08_algebra_and_conversion/example b/examples/more/08_algebra_and_conversion/example index b7ee46f6d1b391095d4051e5553c31a6d14b6237..f585d22279944dac50caa6ad962e4f17858b9b5a 100755 GIT binary patch delta 7197 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 LjN{pBtKHSn diff --git a/examples/more/09_ergonomic_algebra/example b/examples/more/09_ergonomic_algebra/example index 00c074ebc437dfa9caf2661385f7113aaf8c2d25..ebd9f559b92c36e89cf089685e77ad8b445d7f99 100755 GIT binary patch delta 7124 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 delta 9125 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 diff --git a/examples/more/10_twitter_thread_example/example b/examples/more/10_twitter_thread_example/example index 26895753e768c7479fa2bf62dba2c30e4b6c37a5..d29c37ce4fc5b8b297d311aab33b4982ecfc5eb5 100755 GIT binary patch delta 7151 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 delta 8809 zcmai34O~>$m49!T!2w}D1e_T}`EbBd2p>iw)L3V5z(*Vu6{1EI5Evn%BA`vWHbY7@ z%<80=o84-=ZPjhJ>HeCHu5H)tM;s(t^I5RQsI~ER0I; z(kW6yEGnWpUV7ng;qjk5zSB`O`=_tPtUI{gYuwK^MYx=HNNMJA{L|D&N0d`r@oNF@TjzyAyMx*~t_^%D_oiKGa@W-ivuNp{;(J-GF_YJ`kkRH) z(@o}x)rtV6QY`y}(N-C+_8>Aej7u}96)nI905q#wajWv90H_AaEP+|0Y;4FF6RSi_ zkzc|*KwVKWu{63?8rgcFOMn_R2=ocI8)#Qlj3as&+BIyv81_<>E!H%QyMyu3HYP$7 z&4N~5WO+dC(J_uO8U%V^n5H;3Guq}z7{)z1j60UCiMH{!{oAA8&_8cUGe*znxIrm> z^!_Q9L_WRIif)4g{dXm)`=)uq?M518aG*zPLozgv{lfaY0BUQncFoCNjw4C58%DI3 zk7!qpXqSy>7msMq9MR4n);8T14szuu&d@Yfip^~Om~qoOV5|`Q@D=X$AIuOtktPR; zD}?fsA3%htK4@NHC_+Qbmm~?I;&)hhOh#p78i~bzFO|s5M)0JBJwA@R)s5zBs0bm$ zAtHrC?FqtG!&6k>9Bz-2&Y6=tpqJ}aDdcy`^7+rR8F5K`C0i0VVe%S4+=k3bp>yU` zstUnN?J>gEnGc~M20xc1u^vMnF%+|(#7(w4vpCLg{xCeS4B6(-HYYzrBXHf!9Y3AF z#GZ&x=MSy`t>`KG-zIGn3Bm3IvjEOZ*3ejTf9yqVbPfw;3L+Uu!>*K z`V!{y9+ourNBqCD-;SLao&1^7F)*1rK5vT|RWljlb3bEowr2h%)?s^6SLb5C8=Dq= z_ESZ4mP->&aY1zSZMMjsK5E)+Nirw9*({rzU&F%oNxJk;*?@h5&hROVa-@%$HwiB1 z^$nV>idnJw%@!w+aCnlQ~gCh=ptY}=w;>M-NPLqX~Vr0?r z2`e6#p>w3OHRI0c;+$-5QesrHlawtrv_m;Gk^ zxA_W|HzAQP-0z#PO~?O=ol5x`{|XDF{xiRbMW@Z@XS2uBs&rdEWF4t9*+*$PtYV@y z;N7~;E?&4MNx{S74~g`6gW}FlJ`Wx#>^E=gLynkVew*(P=}m<_=FmR0x6V!yw*HgF zw{_x9&nKUIf^P|R{hd9$5XyR2*x@z5ES3h32tDT_grMH(L1#~>58FJO60(NXG{~X6u}x(!#SFE*JA337vI+xNb&{GK~EXqH!n1;*AqM{Z-VG#DXSAp zdoD%z%{hnWg<`Td+Q?VyypS*3=;;jevQDUr5<0`i(!wJf-asdeV78XgFjn4!4QA$3 z37$~7RM_AC0Gt_^3EyS?h`+%5>iWqMFsd3237uC3A^5OUz=Rs>g{}H@ENW~{US~mGICzv&X7e%g=4kAkWp$T4 zf#BPZgpw{n1TtsEr>@c#dbn)!Me{RzfEDM#&JN-pq?1ov0sbRF@8>k_yf0W#R(NN_ zrJLrbkT)30nfF@WF~4A5`<4)DcUnq=R|Wox-`w1T9aN9S;)P9F-e9xSMfO-|Ne1lV zYUsqAmTrC6S=#xkQCxNft{0x!aE;Qfpk8=Tabd$^q!C>EPz#2qdLS2~%IGv|9}Q1t z$fIM-?bt=-F=4}@KYE=M2{{z<(01|06)7NH*(rVlYJ{z^orN6tTMtBDp<@O8PvagT zz67Rx=7JYDouc!IYuS?^a0!OszPBP>byNus=s8pOT>!jaYaoTUr zzPYh*P(V7;90R^Q=*4yySd20J=1LK)DUfu1HfTOH6p6}VzsFpGJgz$HH$RFzUV0wj zo6z+-bluqaAnAho53xdAXOMCa#44JOlP0W(L#Lpn;;&c)Z$JW_AH9IZFyswh5Q5jl z9dc+c3^0Ky+HMF5B|h*?8W#O)u* zXJ-XnSFp<>vi4<^QitxH0O~5DjjJ?x!c$3ct-I@~C=K4B_{zJOT?`CB5q6{E%@?0a zm*eVnO1{vh!#D!m9EPKidWOaHsv1+nIk-b%H6lV3Rtoe3y|Rz4Q(qI+-{X>v#6(mB zUzeEQRW$yiz^+rYeKD|KiYrzm5>mX4Ym=Io6xUe@tOy8uo)Xv@?|)rj{r6MO-_6Ri zX6gR$KHHwPLbsgA#DJQ)m@4CW%ky>IyJJt{(GE#M%hd2H>NMBdwV8GejOPL`b}ydb;KN+pAJ7%u>7pgRp{Q0a zSrx=mE|W{J#kqRKUn=Y>oGrLO0D@(%UThEYw!|i+yW>w_%>TWG?fMn^p%X0WB5O@A z9s490;z>d?dt%0OuW}4?z#@lKVjAs9!Cud2hGp!fkGivXtCWT5s6X(Z8%%JyMbR+40Tar3Z@B5P^y$E^^Gz@C#m!zwp9iWY% zEypD3BxpCN5l>CrpCu^?H21h96@cyn^?{yy2lAjP?@H1$py89a<-AA$0(la&1(aT! z^?};)IO;~!vp_pQ-Jl$%zk=|ylGFm)avlbOc3+UB7(EpJ4FiGZVtwuaO~JMlCW`G^ z1nm$dX_^6s;8^ScbziQ6AS$~qOVVCY3ocSeL0dr2f#%`{n1uH&EqMMZ2Q9w=g`i>3 ztDw1qFcj}^c7Z+&ntM}{o}e~pcociQD1*1K?L{_&@hy13UMiZ%r?CDao5POK<|1TT zp?5CZ@ZZh&*>O{o5a?CJns2gf(dibOjLN&Q-vjFClcbfzL&0&((Sz8TKDKuDSjSaV zuVYSDgHj>X$LC2B3K)H`m)o2czQB}onFLxs#f2Q20^0xKg5MtfcXuqRcFETPQ!DXR)2Ae2@A+ zNBu+kVv}nd_1_ZdF%@)<@|rq$-Kl6(f!CA^)etE%1yps#qn+sQqog~Bq$0(Sm@M0L zg2}!mVvZ?A*K4vDn=Bjd`D4E6$G8W9`{RmR9n3WIL)|m)R>NY0)mo??UrUYGy>fiK^uayIhi3 zLYl6lS%r1mg*v(YobC}y5V$=&L3ArjE|_&MJrF90XJIYxy~19fQ)FyM^(54=8|88P zcSY}vh|=B??`5fF^Q{H>r2qb#TqAqBEE%hOcUewq0s2x=33n7TK}CBD8(=rea;z@( z{U{PzE=O73yyVm;@TQsyb`QDiGAdLh+)1{6-Yot)+cz(nKfwCutzzzl@hq&m6C!M!ovla9 z#exfSu>I{`n84m%I912RGu@(W-p%qB*{m(N6%8*1Z1*A?YguG;xM~!fl9>u6BF~M* zCbfN$&7sYW%)(E%%q0VQ7FAE?CMvj9?R*PO9X72Lr-I9S395EhTVaoa5RcrhFJ%iW zz8NsdeG)kB+kn!8vJ5(>@|;dgjS`?3|Vj8t%p_&~Y(S zl#NtFLF>_B42;iJ6Aw#N(@y%C3A@zSfy&& zD<4K2w*%5t)@$0+mA1SsqxxMHw;%viQ}8KV zE*^!b$j2V&IkiI=FXpMZ(WY{f%*~5Hz^uA2&(>Jr6pU`#%TUr)Hzu>%#WwyM^y^rv z$s{W>%FJ_I9or6>7Lv&isWN*fDKhfGfa;IFV%&Yem8l7{8;fnVZ;>1<;oM4pB#T_m zsCxS*DD7z~KA_<#3Xr9GJEY?0rYg8LxklE%)Rs36YRTI^ywInj1^Xct53A}M6gF2v zy#kM^+!mVxYZ3n?#~HAGnel9W);Q zJpGpbrz%~eCPITM{VNsUJ6-{bRXnWX^0!!EbPcD{$5NNs99K22s%?S7RU%es~?O&h6{(|}bC z?bU_3)pbqm-16Jz+Sbe3H%u^E=seb=1srfyNt9{rYe@n=VC+d9tu)BX~i`{x^MtYDSh zsvT$=^|9JjIb*aNfkwL`*`8I|QQE0!WT#e5kJ8Rm3v)D1kJ3(3J6qZ~{od`!HDAf5 zlWce6y74JBO3PBNQiUkL%&L!L?xvd91EUpyay*~C)RY-LM6U->9*krcnjVVET&Xk@ I5$ojt1B@QCDgXcg diff --git a/examples/more/11_billion_lognormals_paralell/example.c b/examples/more/11_billion_lognormals_paralell/example.c index c9d49d7..62fc0d0 100644 --- a/examples/more/11_billion_lognormals_paralell/example.c +++ b/examples/more/11_billion_lognormals_paralell/example.c @@ -9,22 +9,21 @@ int main() // set randomness seed // uint64_t* seed = malloc(sizeof(uint64_t)); // *seed = 1000; // xorshift can't start with 0 - // ^ not necessary, because sampler_parallel takes care of the seed. + // ^ not necessary, because parallel_sampler takes care of the seed. int n_samples = 1000 * 1000 * 1000; int n_threads = 16; - double sampler(uint64_t * seed) - { + double sampler(uint64_t* seed){ return sample_lognormal(0, 10, seed); } double* results = malloc(n_samples * sizeof(double)); - sampler_parallel(sampler, results, n_threads, n_samples); - double avg = array_sum(results, n_samples) / n_samples; + parallel_sampler(sampler, results, n_threads, n_samples); + double avg = array_sum(results, n_samples)/n_samples; printf("Average of 1B lognormal(0,10): %f", avg); free(results); // free(seed); - // ^ not necessary, because sampler_parallel takes care of the seed. + // ^ not necessary, because parallel_sampler takes care of the seed. } diff --git a/examples/more/12_time_to_botec_parallel/example b/examples/more/12_time_to_botec_parallel/example index fb4e50f083e18ef137552e67cca4c98146a7c814..8110f21117a7627b4ea68640ba583b10f6341bab 100755 GIT binary patch delta 7157 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 P)nr5Ta+$MZWz+s25+70- delta 9246 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 diff --git a/examples/more/12_time_to_botec_parallel/example.c b/examples/more/12_time_to_botec_parallel/example.c index 72974cf..dc3e758 100644 --- a/examples/more/12_time_to_botec_parallel/example.c +++ b/examples/more/12_time_to_botec_parallel/example.c @@ -9,22 +9,21 @@ int main() double p_b = 0.5; double p_c = p_a * p_b; - double sample_0(uint64_t * seed) { return 0; } - double sample_1(uint64_t * seed) { return 1; } - double sample_few(uint64_t * seed) { return sample_to(1, 3, seed); } - double sample_many(uint64_t * seed) { return sample_to(2, 10, seed); } + double sample_0(uint64_t* seed){ return 0; } + double sample_1(uint64_t* seed) { return 1; } + double sample_few(uint64_t* seed) { return sample_to(1, 3, seed); } + double sample_many(uint64_t* seed) { return sample_to(2, 10, seed); } int n_dists = 4; double weights[] = { 1 - p_c, p_c / 2, p_c / 4, p_c / 4 }; double (*samplers[])(uint64_t*) = { sample_0, sample_1, sample_few, sample_many }; - double sampler_result(uint64_t * seed) - { + double sampler_result(uint64_t* seed) { return sample_mixture(samplers, weights, n_dists, seed); - } + } int n_samples = 1000 * 1000, n_threads = 16; double* results = malloc(n_samples * sizeof(double)); - sampler_parallel(sampler_result, results, n_threads, n_samples); - printf("Avg: %f\n", array_sum(results, n_samples) / n_samples); + parallel_sampler(sampler_result, results, n_threads, n_samples); + printf("Avg: %f\n", array_sum(results, n_samples)/n_samples); free(results); } diff --git a/examples/more/13_parallelize_min/example b/examples/more/13_parallelize_min/example index 9416c2feaf3a3c4dd908154a266c73f874dc1f8e..c43ae15c9fe792a8999036fb01c0342d6f0851cd 100755 GIT binary patch delta 6957 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 diff --git a/examples/more/13_parallelize_min/example.c b/examples/more/13_parallelize_min/example.c index ec8f3e3..c8ba6b9 100644 --- a/examples/more/13_parallelize_min/example.c +++ b/examples/more/13_parallelize_min/example.c @@ -13,58 +13,57 @@ int main() /* Option 1: parallelize taking from n samples */ // Question being asked: what is the distribution of sampling 1000 times and taking the min? - double sample_min_of_n(uint64_t * seed, int n) - { + double sample_min_of_n(uint64_t* seed, int n){ double min = sample_normal(5, 2, seed); - for (int i = 0; i < (n - 2); i++) { + for(int i=0; i<(n-1); i++){ double sample = sample_normal(5, 2, seed); - if (sample < min) { + if(sample < min){ min = sample; } } return min; } - double sample_min_of_1000(uint64_t * seed) - { + double sampler_min_of_1000(uint64_t* seed) { return sample_min_of_n(seed, 1000); - } + } - int n_samples = 1000000, n_threads = 16; + int n_samples = 10000, n_threads = 16; double* results = malloc(n_samples * sizeof(double)); - sampler_parallel(sample_min_of_1000, results, n_threads, n_samples); + parallel_sampler(sampler_min_of_1000, results, n_threads, n_samples); printf("Mean of the distribution of (taking the min of 1000 samples of a normal(5,2)): %f\n", array_mean(results, n_samples)); free(results); /* Option 2: take the min from n samples cleverly using parallelism */ // Question being asked: can we take the min of n samples cleverly? - double sample_n_parallel(int n) - { + double sample_n_parallel(int n){ int n_threads = 16; int quotient = n / 16; int remainder = n % 16; - uint64_t seed = 1000; + uint64_t seed = 100; double result_remainder = sample_min_of_n(&seed, remainder); - - double sample_min_of_quotient(uint64_t * seed) - { - return sample_min_of_n(seed, quotient); + + double sample_min_of_quotient(uint64_t* seed) { + double result = sample_min_of_n(seed, quotient); + // printf("Result: %f\n", result); + return result; } - double* results_quotient = malloc(quotient * sizeof(double)); - sampler_parallel(sample_min_of_quotient, results_quotient, n_threads, quotient); + double* results = malloc(n_threads * sizeof(double)); + parallel_sampler(sample_min_of_quotient, results, n_threads, n_threads); - double min = results_quotient[0]; - for (int i = 1; i < quotient; i++) { - if (min > results_quotient[i]) { - min = results_quotient[i]; + double min = results[0]; + for(int i=1; i results[i]){ + min = results[i]; } } - if (min > result_remainder) { + if(min > result_remainder){ min = result_remainder; } - free(results_quotient); + free(results); return min; } - printf("Minimum of 1M samples of normal(5,2): %f\n", sample_n_parallel(1000000)); + printf("Minimum of 10M samples of normal(5,2): %f\n", sample_n_parallel(1000 * 1000)); + } diff --git a/examples/more/14_check_confidence_interval/example b/examples/more/14_check_confidence_interval/example deleted file mode 100755 index 2eeba348327363ffcc8aad22a4b2cd9a9da39cb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27360 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 -#include - -int main() -{ - // set randomness seed - uint64_t* seed = malloc(sizeof(uint64_t)); - *seed = 1000; // xorshift can't start with a seed of 0 - - int n = 1000000; - double* xs = malloc(sizeof(double) * n); - for (int i = 0; i < n; i++) { - xs[i] = sample_to(10, 100, seed); - } - ci ci_90 = array_get_90_ci(xs, n); - printf("Recovering confidence interval of sample_to(10, 100):\n low: %f, high: %f\n", ci_90.low, ci_90.high); - - free(seed); -} diff --git a/examples/more/makefile b/examples/more/makefile index 0ad04a8..a95dccc 100644 --- a/examples/more/makefile +++ b/examples/more/makefile @@ -48,8 +48,7 @@ all: $(CC) $(OPTIMIZED) $(DEBUG) 10_twitter_thread_example/$(SRC) $(DEPS) -o 10_twitter_thread_example/$(OUTPUT) $(CC) $(OPTIMIZED) $(DEBUG) 11_billion_lognormals_paralell/$(SRC) $(DEPS) -o 11_billion_lognormals_paralell/$(OUTPUT) $(CC) $(OPTIMIZED) $(DEBUG) 12_time_to_botec_parallel/$(SRC) $(DEPS) -o 12_time_to_botec_parallel/$(OUTPUT) - $(CC) $(OPTIMIZED) $(DEBUG) 13_parallelize_min/$(SRC) $(DEPS) -o 13_parallelize_min/$(OUTPUT) - $(CC) $(OPTIMIZED) $(DEBUG) 14_check_confidence_interval/$(SRC) $(DEPS) -o 14_check_confidence_interval/$(OUTPUT) + $(CC) $(OPTIMIZED) $(DEBUG) 13_parallelize_min/$(SRC) $(DEPS) -o 13_parallelize_min/$(OUTPUT) format-all: $(FORMATTER) 00_example_template/$(SRC) @@ -66,7 +65,6 @@ format-all: $(FORMATTER) 11_billion_lognormals_paralell/$(SRC) $(FORMATTER) 12_time_to_botec_parallel/$(SRC) $(FORMATTER) 13_parallelize_min/$(SRC) - $(FORMATTER) 14_check_confidence_interval/$(SRC) run-all: 00_example_template/$(OUTPUT) @@ -83,7 +81,6 @@ run-all: 11_billion_lognormals_paralell/$(OUTPUT) 12_time_to_botec_parallel/$(OUTPUT) 13_parallelize_min/$(OUTPUT) - 14_check_confidence_interval/$(OUTPUT) ## make one DIR=06_nuclear_recovery one: $(DIR)/$(SRC) diff --git a/makefile b/makefile index 6cf73b7..876a34b 100644 --- a/makefile +++ b/makefile @@ -13,8 +13,8 @@ format-examples: cd examples/more && make format-all format: squiggle.c squiggle.h - $(FORMATTER) squiggle.c squiggle.h - $(FORMATTER) squiggle_more.c squiggle_more.h + $(FORMATTER) squiggle.c + $(FORMATTER) squiggle.h lint: clang-tidy squiggle.c -- -lm diff --git a/scratchpad/core.c b/scratchpad/core.c new file mode 100644 index 0000000..20b59e5 --- /dev/null +++ b/scratchpad/core.c @@ -0,0 +1,27 @@ + +uint64_t xorshift64(uint64_t* seed) +{ + // Algorithm "xor" from p. 4 of Marsaglia, "Xorshift RNGs" + // + uint64_t x = *seed; + x ^= x << 13; + x ^= x >> 7; + x ^= x << 17; + return *seed = x; +} + +double sample_unit_uniform(uint64_t* seed) +{ + // samples uniform from [0,1] interval. + return ((double)xorshift64(seed)) / ((double)UINT64_MAX); +} + +double sample_unit_normal(uint64_t* seed) +{ + // // See: + double u1 = sample_unit_uniform(seed); + double u2 = sample_unit_uniform(seed); + double z = sqrtf(-2.0 * log(u1)) * sin(2 * PI * u2); + return z; +} + diff --git a/scratchpad/plotting/src/example b/scratchpad/plotting/src/example index dd9ba894f59aeb5c00d183d0f462bde04b11b4ea..eeaaeabad35c13c69b7322406e9883fb9fc6b22a 100755 GIT binary patch delta 41 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 S#^YaJ&nf7B(VQ}h%KrgP{qfrX diff --git a/scratchpad/scratchpad.c b/scratchpad/scratchpad.c index b2f057a..ca8fe54 100644 --- a/scratchpad/scratchpad.c +++ b/scratchpad/scratchpad.c @@ -10,14 +10,25 @@ int main() // set randomness seed uint64_t* seed = malloc(sizeof(uint64_t)); *seed = 1000; // xorshift can't start with a seed of 0 + /* + for (int i = 0; i < 100; i++) { + double draw = sample_unit_uniform(seed); + printf("%f\n", draw); + + }*/ + // Test division + // printf("\n%d\n", 10 % 3); + // - int n = 1000000; - double* xs = malloc(sizeof(double) * n); - for (int i = 0; i < n; i++) { - xs[i] = sample_to(10, 100, seed); + int n_samples = 100, n_threads = 16; + double* results = malloc(n_samples * sizeof(double)); + double sampler_scratchpad(uint64_t* seed){ + return 1; + } + parallel_sampler(sampler_scratchpad, results, n_threads, n_samples); + for(int i=0; i -#include #include +#include #include #include #include #include +#include "squiggle.h" -/* Parallel sampler */ -void sampler_parallel(double (*sampler)(uint64_t* seed), double* results, int n_threads, int n_samples) -{ - if ((n_samples % n_threads) != 0) { - fprintf(stderr, "Number of samples isn't divisible by number of threads, aborting\n"); - exit(1); - } - uint64_t** seeds = malloc(n_threads * sizeof(uint64_t*)); - for (uint64_t i = 0; i < n_threads; i++) { - seeds[i] = malloc(sizeof(uint64_t)); - *seeds[i] = i + 1; // xorshift can't start with 0 - } +/* Math constants */ +#define PI 3.14159265358979323846 // M_PI in gcc gnu99 +#define NORMAL90CONFIDENCE 1.6448536269514727 - int i; -#pragma omp parallel private(i) - { -#pragma omp for - for (i = 0; i < n_threads; i++) { - int lower_bound = i * (n_samples / n_threads); - int upper_bound = ((i + 1) * (n_samples / n_threads)) - 1; - // printf("Lower bound: %d, upper bound: %d\n", lower_bound, upper_bound); - for (int j = lower_bound; j < upper_bound; j++) { - results[j] = sampler(seeds[i]); - } - } - } - - for (uint64_t i = 0; i < n_threads; i++) { - free(seeds[i]); - } - free(seeds); -} +/* Some error niceties */ +// These won't be used until later +#define MAX_ERROR_LENGTH 500 +#define EXIT_ON_ERROR 0 +#define PROCESS_ERROR(error_msg) process_error(error_msg, EXIT_ON_ERROR, __FILE__, __LINE__) /* Get confidence intervals, given a sampler */ // Not in core yet because I'm not sure how much I like the struct // and the built-in 100k samples // to do: add n to function parameters and document - typedef struct ci_t { - double low; - double high; + float low; + float high; } ci; - -static void swp(int i, int j, double xs[]) +int compare_doubles(const void* p, const void* q) { - double tmp = xs[i]; - xs[i] = xs[j]; - xs[j] = tmp; + // https://wikiless.esmailelbob.xyz/wiki/Qsort?lang=en + double x = *(const double*)p; + double y = *(const double*)q; + + /* Avoid returning x - y, which can cause undefined behaviour + because of signed integer overflow. */ + if (x < y) + return -1; // Return -1 if you want ascending, 1 if you want descending order. + else if (x > y) + return 1; // Return 1 if you want ascending, -1 if you want descending order. + + return 0; } - -static int partition(int low, int high, double xs[], int length) +ci get_90_confidence_interval(double (*sampler)(uint64_t*), uint64_t* seed) { - // To understand this function: - // - see the note after gt variable definition - // - go to commit 578bfa27 and the scratchpad/ folder in it, which has printfs sprinkled throughout - int pivot = low + floor((high - low) / 2); - double pivot_value = xs[pivot]; - swp(pivot, high, xs); - int gt = low; /* This pointer will iterate until finding an element which is greater than the pivot. Then it will move elements that are smaller before it--more specifically, it will move elements to its position and then increment. As a result all elements between gt and i will be greater than the pivot. */ - for (int i = low; i < high; i++) { - if (xs[i] < pivot_value) { - swp(gt, i, xs); - gt++; - } - } - swp(high, gt, xs); - return gt; -} - -static double quickselect(int k, double xs[], int n) -{ - // https://en.wikipedia.org/wiki/Quickselect - int low = 0; - int high = n - 1; - for (;;) { - if (low == high) { - return xs[low]; - } - int pivot = partition(low, high, xs, n); - if (pivot == k) { - return xs[pivot]; - } else if (k < pivot) { - high = pivot - 1; - } else { - low = pivot + 1; - } - } -} - -ci array_get_ci(ci interval, double* xs, int n) -{ - - int low_k = floor(interval.low * n); - int high_k = ceil(interval.high * n); - ci result = { - .low = quickselect(low_k, xs, n), - .high = quickselect(high_k, xs, n), - }; - return result; -} -ci array_get_90_ci(double xs[], int n) -{ - return array_get_ci((ci) { .low = 0.05, .high = 0.95 }, xs, n); -} - -ci sampler_get_ci(ci interval, double (*sampler)(uint64_t*), int n, uint64_t* seed) -{ - double* xs = malloc(n * sizeof(double)); + int n = 100 * 1000; + double* samples_array = malloc(n * sizeof(double)); for (int i = 0; i < n; i++) { - xs[i] = sampler(seed); + samples_array[i] = sampler(seed); } - ci result = array_get_ci(interval, xs, n); - free(xs); - return result; -} -ci sampler_get_90_ci(double (*sampler)(uint64_t*), int n, uint64_t* seed) -{ - return sampler_get_ci((ci) { .low = 0.05, .high = 0.95 }, sampler, n, seed); -} + qsort(samples_array, n, sizeof(double), compare_doubles); -/* Algebra manipulations */ -// here I discover named structs, -// which mean that I don't have to be typing -// struct blah all the time. - -#define NORMAL90CONFIDENCE 1.6448536269514727 - -typedef struct normal_params_t { - double mean; - double std; -} normal_params; - -normal_params algebra_sum_normals(normal_params a, normal_params b) -{ - normal_params result = { - .mean = a.mean + b.mean, - .std = sqrt((a.std * a.std) + (b.std * b.std)), + ci result = { + .low = samples_array[5000], + .high = samples_array[94999], }; - return result; -} + free(samples_array); -typedef struct lognormal_params_t { - double logmean; - double logstd; -} lognormal_params; - -lognormal_params algebra_product_lognormals(lognormal_params a, lognormal_params b) -{ - lognormal_params result = { - .logmean = a.logmean + b.logmean, - .logstd = sqrt((a.logstd * a.logstd) + (b.logstd * b.logstd)), - }; - return result; -} - -lognormal_params convert_ci_to_lognormal_params(ci x) -{ - double loghigh = logf(x.high); - double loglow = logf(x.low); - double logmean = (loghigh + loglow) / 2.0; - double logstd = (loghigh - loglow) / (2.0 * NORMAL90CONFIDENCE); - lognormal_params result = { .logmean = logmean, .logstd = logstd }; - return result; -} - -ci convert_lognormal_params_to_ci(lognormal_params y) -{ - double h = y.logstd * NORMAL90CONFIDENCE; - double loghigh = y.logmean + h; - double loglow = y.logmean - h; - ci result = { .low = exp(loglow), .high = exp(loghigh) }; return result; } /* Scaffolding to handle errors */ -// We will sample from an arbitrary cdf +// We are building towards sample from an arbitrary cdf // and that operation might fail // so we build some scaffolding here - -#define MAX_ERROR_LENGTH 500 -#define EXIT_ON_ERROR 0 -#define PROCESS_ERROR(error_msg) process_error(error_msg, EXIT_ON_ERROR, __FILE__, __LINE__) - struct box { int empty; double content; @@ -276,7 +148,7 @@ struct box inverse_cdf_double(double cdf(double), double p) } } -// Version #2: +// Version #2: // - input: (cdf: double => Box(number|error), p) // - output: Box(number|error) struct box inverse_cdf_box(struct box cdf_box(double), double p) @@ -374,21 +246,122 @@ double sampler_cdf_danger(struct box cdf(double), uint64_t* seed) { double p = sample_unit_uniform(seed); struct box result = inverse_cdf_box(cdf, p); - if (result.empty) { - exit(1); - } else { - return result.content; - } + if(result.empty){ + exit(1); + }else{ + return result.content; + } } -/* array print: potentially useful for debugging */ +/* Algebra manipulations */ +// here I discover named structs, +// which mean that I don't have to be typing +// struct blah all the time. +typedef struct normal_params_t { + double mean; + double std; +} normal_params; -void array_print(double xs[], int n) +normal_params algebra_sum_normals(normal_params a, normal_params b) { - printf("["); - for (int i = 0; i < n - 1; i++) { - printf("%f, ", xs[i]); - } - printf("%f", xs[n - 1]); - printf("]\n"); + normal_params result = { + .mean = a.mean + b.mean, + .std = sqrt((a.std * a.std) + (b.std * b.std)), + }; + return result; +} + +typedef struct lognormal_params_t { + double logmean; + double logstd; +} lognormal_params; + +lognormal_params algebra_product_lognormals(lognormal_params a, lognormal_params b) +{ + lognormal_params result = { + .logmean = a.logmean + b.logmean, + .logstd = sqrt((a.logstd * a.logstd) + (b.logstd * b.logstd)), + }; + return result; +} + +lognormal_params convert_ci_to_lognormal_params(ci x) +{ + double loghigh = logf(x.high); + double loglow = logf(x.low); + double logmean = (loghigh + loglow) / 2.0; + double logstd = (loghigh - loglow) / (2.0 * NORMAL90CONFIDENCE); + lognormal_params result = { .logmean = logmean, .logstd = logstd }; + return result; +} + +ci convert_lognormal_params_to_ci(lognormal_params y) +{ + double h = y.logstd * NORMAL90CONFIDENCE; + double loghigh = y.logmean + h; + double loglow = y.logmean - h; + ci result = { .low = exp(loglow), .high = exp(loghigh) }; + return result; +} + +/* Parallel sampler */ +void parallel_sampler(double (*sampler)(uint64_t* seed), double* results, int n_threads, int n_samples){ + + // Division terminology: + // a = b * quotient + reminder + // a = (a/b)*b + (a%b) + // dividend: a + // divisor: b + // quotient = a / b + // reminder = a % b + // "divisor's multiple" := (a/b)*b + + // now, we have n_samples and n_threads + // to make our life easy, each thread will have a number of samples of: a/b (quotient) + // and we'll compute the remainder of samples separately + // to possibly do by Jorge: improve so that the remainder is included in the threads + + int quotient = n_samples / n_threads; + int remainder = n_samples % n_threads; + int divisor_multiple = quotient * n_threads; + + uint64_t** seeds = malloc(n_threads * sizeof(uint64_t*)); + // printf("UINT64_MAX: %lu\n", UINT64_MAX); + srand(1); + for (uint64_t i = 0; i < n_threads; i++) { + seeds[i] = malloc(sizeof(uint64_t)); + // Constraints: + // - xorshift can't start with 0 + // - the seeds should be reasonably separated and not correlated + *seeds[i] = (uint64_t) rand() * (UINT64_MAX / RAND_MAX); + // printf("#%ld: %lu\n",i, *seeds[i]); + + // Other initializations tried: + // *seeds[i] = 1 + i; + // *seeds[i] = (i + 0.5)*(UINT64_MAX/n_threads); + // *seeds[i] = (i + 0.5)*(UINT64_MAX/n_threads) + constant * i; + } + + int i; + #pragma omp parallel private(i) + { + #pragma omp for + for (i = 0; i < n_threads; i++) { + int lower_bound_inclusive = i * quotient; + int upper_bound_not_inclusive = ((i+1) * quotient); // note the < in the for loop below, + // printf("Lower bound: %d, upper bound: %d\n", lower_bound, upper_bound); + for (int j = lower_bound_inclusive; j < upper_bound_not_inclusive; j++) { + results[j] = sampler(seeds[i]); + } + } + } + for(int j=divisor_multiple; j