From 5d8f6a3311c249c4648c14f579cb0c33cb878062 Mon Sep 17 00:00:00 2001 From: Jakub Jankiewicz Date: Thu, 8 Feb 2024 14:56:33 +0100 Subject: [PATCH] update `log` to accept two arguments #301 --- CHANGELOG.md | 1 + dist/std.min.scm | 1 + dist/std.scm | 25 +++++++++++++++++++++++++ dist/std.xcb | Bin 111919 -> 112620 bytes lib/R7RS.scm | 25 +++++++++++++++++++++++++ 5 files changed, 52 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5502bcb1..8dbb0adef 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * add immutable strings as in R7RS spec [#285](https://github.com/jcubic/lips/issues/285) * add R7RS `char<...>?` and `string<...>?` functions [#298](https://github.com/jcubic/lips/issues/298) * improve syntax-rule exception message (appending macro code) +* update `log` to accept two arguments [#301](https://github.com/jcubic/lips/issues/301) ### Bugfix * fix `let-values` to allow binding to list [#281](https://github.com/jcubic/lips/issues/281) * fix wrong strings in `string-fill!` diff --git a/dist/std.min.scm b/dist/std.min.scm index caf88b6bd..9e1948121 100644 --- a/dist/std.min.scm +++ b/dist/std.min.scm @@ -302,6 +302,7 @@ (define (truncate/ x y) (quotient&remainder x y)) (define (truncate-quotient x y) (quotient x y)) (define (truncate-remainder x y) (remainder x y)) +(define (log z . rest) "(log z)\u000A(log z1 z2)\u000A\u000AFunction that calculates natural logarithm of z where the argument can be\u000Aany number (including complex negative and rational). If the value is 0\u000Ait returns NaN. It two arguments are provided it will calculate logarithm\u000Aof z1 with given base-z2." (if (not (null? rest)) (let ((base (car rest))) (/ (log z) (log base))) (cond ((real? z) (cond ((zero? z) NaN) ((> z 0) (Math.log z)) (else (+ (Math.log (abs z)) (* Math.PI +1i))))) ((complex? z) (let ((arg (Math.atan2 (imag-part z) (real-part z)))) (+ (Math.log (z.modulus)) (* +1i arg)))) ((rational? z) (log (exact->inexact z)))))) (define-syntax case-lambda (syntax-rules () ((case-lambda (params body0 ...) ...) (lambda args (let ((len (length args))) (letrec-syntax ((cl (syntax-rules ::: () ((cl) (error "no matching clause")) ((cl ((p :::) . body) . rest) (if (= len (length (quote (p :::)))) (apply (lambda (p :::) . body) args) (cl . rest))) ((cl ((p ::: . tail) . body) . rest) (if (>= len (length (quote (p :::)))) (apply (lambda (p ::: . tail) . body) args) (cl . rest)))))) (cl (params body0 ...) ...)))))) "(case-lambda expr ...)\u000A\u000AMacro create new function with different version of the function depend on\u000Anumber of arguments. Each expression is similar to single lambda.\u000A\u000Ae.g.:\u000A\u000A (define sum\u000A (case-lambda\u000A ((x) x)\u000A ((x y) (+ x y))\u000A ((x y z) (+ x y z))))\u000A\u000A (sum 1)\u000A (sum 1 2)\u000A (sum 1 2 3)\u000A\u000AMore arguments will give an error.") (define (boolean=? . args) "(boolean=? b1 b2 ...)\u000A\u000AChecks if all arguments are boolean and if they are the same." (if (< (length args) 2) (error "boolean=?: too few arguments") (reduce (lambda (acc item) (and (boolean? item) (eq? acc item))) (car args) (cdr args)))) (define (port? x) "(port? x)\u000A\u000AReturns true if the argument is an input or output port object." (or (output-port? x) (input-port? x))) diff --git a/dist/std.scm b/dist/std.scm index d900d0553..1c1e05c44 100644 --- a/dist/std.scm +++ b/dist/std.scm @@ -3553,6 +3553,31 @@ (define (truncate-quotient x y) (quotient x y)) (define (truncate-remainder x y) (remainder x y)) +(define (log z . rest) + "(log z) + (log z1 z2) + + Function that calculates natural logarithm of z where the argument can be + any number (including complex negative and rational). If the value is 0 + it returns NaN. It two arguments are provided it will calculate logarithm + of z1 with given base-z2." + (if (not (null? rest)) + (let ((base (car rest))) + (/ (log z) (log base))) + (cond ((real? z) + (cond ((zero? z) NaN) + ((> z 0) (Math.log z)) + (else + (+ (Math.log (abs z)) + (* Math.PI +i))))) + ((complex? z) + (let ((arg (Math.atan2 (imag-part z) + (real-part z)))) + (+ (Math.log (z.modulus)) + (* +i arg)))) + ((rational? z) + (log (exact->inexact z)))))) + ;; ----------------------------------------------------------------------------- (define-syntax case-lambda (syntax-rules () diff --git a/dist/std.xcb b/dist/std.xcb index 26a7a94bd5e5e922bb0d3631c17c9ef530515fdd..a56f41a62a70b81ea8dac7247aa5928a2797db81 100644 GIT binary patch delta 40344 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 UiJk>uE15ec;+35Ko|(V=KP?oI#{d8T delta 39670 zcma&O3w#^JwLd(;cNCrSR&MTC-DEr+hI_;!Wm?de97oE%u- z-qPnd*P9o&rwh@lZJT3JlGnYdXkS;nIx0NE&QA#q-dz7cO3w>!R~wZmm9K7JoXAFV z(LOOaDC=FB_;#PLd{B-xH#d)txYkVeRj`gk{S9(FntQ%mT*GF@Qu>@1T~plY(GfZs zKafZr)6?BXp=Xp;x*`>Hi;L2^Xzxqu*+Nc_HI~z9K(k%3)F@lQ%9lCh4`PcJEfVI? z3+X%;Eftp3SIfGd%VjK6rYpI0M(T@_LaZm5?v`T5Q_=ps?r_!1^sF<4HPr5+ax^Ox zt@PbNl#*Qq-N0)!6C=qwagYK(;7KJDyI2a=wyT^n zl>H^dUU(T?VC3d*xHU@3S**^}DX7j4qAYxc~WG zdX7TrMMT+d>G8y(d4@@`Q%N7l(wtO!s?lygD@tOyj1)WIR=}*TB$xK=z z+meMIDV|J_gr3vW1!*hOb9p*7laLCuN3WR|*RzJ6CUGf~wx|31#4bH2k-BKEoA&pS zV7^&e6>W?4NHnYG+0rD*OZjA9G8GkbQXxYor@K>BmxNoI?RLF6(%rnsZkLF~L*jZO znbxIzOMf2|=@jWXmrIfcJ)VI^X`s>LB+~Xq$+JKjkO@jK-FVrdnw8P_`A$9qsE-4^^Imwn4Jw%Uf&P&OJR2DVJW)kS{19kS~ z$u32Wz0 zi{`|D^N?@W%y?uLo#Ucxbt0}aOhEm6dNz}*EVzcE12u0b18dtn*$k@QF|euY$YwfE|=LgU97ab%&i z6QYw6yx#1a8PY2rum2Kj*vu|!tG8s|OysxpM{{~zWTP^$!Xwm5mpkf@_muvIDH6DD z)8)-lM-O?El$u=Io2x zc6h}+bd!5-d|OYGo(An2Qo>AcZlFJ3qpj*-8ntqpDN7vH&q10 zidgBBqa#}VS#sCZo%Lt1nBMiN-klT=9Js)s7efqJw<`n7JoGJz9+Eb3T_%xTmdvW` zfFA27Rf4N#j{e+0mOPtJW=hT}@0(|d(e?Cfxo=e@(f>gjYSB5L&AWEFC$zMF?7&~? zW=d;UvhrAZN2cm4&f8p1u~}p1mxdJgz)Fws$x9m((bV3&-f&^UaiK9f!VceU`Ai>( z##}#4Gsh8cYf`X{PG2E6h4<^sBd$z~&E8hAx}s`QQ;=na3%tp6;h^5F=a!1gqa{0{ zuAnk-zK6BB8>EtS$r$aFooEotP3 zb$d=1)kL$<_cwN3jQFLB9#LC4%zTLi>sDq3NM{`j_L8k&fK1NYw-RbJC3hvrpX4va zOFngOQ3h`G)XZ&{5@|^&_lqpBYRanh;`7i&;&h25a+y8}%95nEbH$wKj})~NT~Qzz zNiU7YdTu#qu4SfCCJ_(0T}puQj-`_MLcUq}277!{S8_t++PctH9$f;t8!QUmDDz(D zdc!)6YQCrsB=b|J97|7CScR^?xK+<>7ngJkC#n*&ob%{9Of!@z490W0oNKQ#&@5=y zWXYmhJUw_ZXAoVA79=PTU%nvuou$gnDgB$yuRy6&IYxdt%3hv^-;G+k1^h|hx@20I z%xYqN)86cxAznw8bg!yZpNDX_f$gNLppsUM#%w{=*A>syT+VhxXC?)wElDf6?pW}# zP%YQY@~=BjSm=Dwy>O|MP-BqQxsSLiS#><+(+l%Qr_B{y(VWtquW`w>GubRCi=wWm zi*B7K+)8KRmwFu~-rPreLYODhIcx@ff$sblrOX+(L@ce`7*UsnKQkn)Uq4e=DmbHc zPj@Ap$K)&HQT70B0Z|rWz>6_&%G)X|m))o6w5QP!&-Ul5|KaMJohM-zEI*^ zImmSmXA93QmU_z!<6N--4j|V_dWz^=1=}+TQ7ZI+8}m&PDH@xcG?{oxK9R_ONZ<-L zXN&LBd*x(-Y|rYk9%%9(2~|qQ_dN)bhy8vUwJSZYYlP{(sJ{mGVHK^#<8&ntOmI=x z)K49(JX-lUGfe$m(_N^#)w#@dCRk{T?}Au5Q_{+9uso>ioP|bN??-aC@YqtZLRv@L zDV@jJh^R#-Iw}jA*HY`Xp0%j9ixfFYmq?M3@`ay*kuFjWq;%;3i{BO_zZzw?nN0N5 z(}L3g8x^@|IMxTDs*wA{q0hicg=JIe4={Hsr5`WP4rr+{siD!h(w4Bmb zdD0$hAY_z3vxewqAZ#yqeZ414GahlU}t!Pe>S)1FI15iro(OAf`zI zdt5EfkW8(?9wJ4Rk&gMeLqk`V{vCb}JQ6(xejz5qfL}_A31_dogMYLibQ%w!XxyRiHuoyqk~ z`H1x@?hZoLWN2ZuW~0d{FK>rl=oY>OK5=fXpi4oi6`WFfu4_Ww&_6G-)Lt;oBm}14 zR5##haLKv8o6}qMh^b;*h1H{XOLuV(({)#`IBz%SjyX`dm6?6)=2*?Nw6GS^D*MHS z@thv|LH+A;;?MEWa7JuPkh{txagBow$l^KlN@d^{&-uOuWgCPke({rB^=-?RkzXeD zycDfnkTBj$mt90-)z?THt`Rz|n@O{MIShZHN7SX9UiMdMYm`83NXfj^A4m&7i8l)m z(?fD{Qs`j(O&U;o68-7bu}O1;)sQv+_qy&rc^IC7@8sc;svlhkNA~gJfucJC0>`&K5G9?#mRl_r|j6JH^npC(l5ft)x|TxMratHX&^xxo<4oa!aHu$hK^Pe}I zG7%aIBg23eUSF`TI+(eL}O>=+Dx@AlGEe0!Qi`;sy5wq*L5xNw1-=+aAWtez6l3qAem&EgDwQ#4V~bHWDObpuCk z_Qa*-lCW4}N}0sGC7xxmn4Tqtyd+E6T!zH-ct2!lp=63%Ssl!N^0T6Pm}aX2Z)r3#rku3X?jwWn}z%7LEP9R z@uyWUuxhNZ3ZwJv8)yY6pCEhtQ@@p}9DqgDt< z6XemqDOEcCju4hzGTm5D|3R1XiSwtL!act zf$pY?yOrb0!1bPW5lPhMIPSI_Z_i~Mm@6@wO2PPpkqGxS!AmI#yp%}@Fcialg+h!Q znk36pCA#Z?)B|4E+tcTn`;+*F0aVpr!neOdi{Q@62WADtX!Lv%6Zd9RDM{fyRr zAjh^wr5~=#dtMj(PqCIdEA6K)7rl5(oNSrz6aFMq!7mE2=91>hRyn>cnoCa-UZU-7 z`}8h&ou^0xt)tYx!=M+62{!YytB%QW?(hiv>i_nG$bk4V8^BDGAf3F7FIu;bj<_B1 zPh-)zWsr)ta`Gs>bkevU?#b(gW8PRiS2xO9Tusl?8cbb07Vl_d(i^nDzEiHvFe%aa zj`Qj(_?lEc@x1sLdA{SB*vVL#aXrg8pYS|X|8)H{>c>L#)h*S1Y~}2ixZ@!I$H^o; z1MtQ_oJ{VltbgAs(*a6L>Y^L!tmn}BQCzqpI9!@5g3Y9bZeBs$!AVIpHDKZa%qj})pB1qS&(##yB=Nz z_x>X(tYY8*SL=g$JG=@ki04Y%lHf}LD@YbKVm*Q+L6MY1$>dxz+Lh9e!N=IFOY}W) zej5*C+>dq667OJN6pL&u{GR5{RCh8ROZ8)wi&YT3qUEWoIm*B#9{9SYbSitzZeN#) zLb}J5yM%jyL9C5sBIyEOgR@uD&|JBKM2zqDNffKCS1_Q-9x<04y5%Xo!e%A6(H;0J z_`bsUdQ(p${E~tL=icLbUYK3*_2e?!gxSm)OT+wC$oeX*h*y-%p>AcslN5fvh)PlQ zk!%!x|Abo-zsBM5BupjYz9mZA4H@pL^{$#~`FMgm_cTivQ+f^c;Gbi9daKk(wPvNMME*iol!%M_8@K%_pMH*bYU(%Q%*#R-iTBgpP68@X)B%0 z?!_`FlFQgcr(%3hA#>jGLJppW@I$(m(odJp${^$W0A5w2#g#PtW`y{Xo^_@vuL*-zNoUXn^?^UVl{-P!nf z&sjU^Lo5{2%RZV#D?ldvN!fP_b))CAC_N#c5vyI3C@JqRPZ_0d8pdxYVwpdtV^OhE z7LU53_3UZZ48BU~CGWYWH#0Hjeuh2Qi>b{BULLH=2`=XS%;iSt!M=;S=p~dPY#~Q4 z6Z}d%U!Zzc5M;zPx|g{oo595Tu)I6on{oYJiAsW}o3^ifi@6h9**~TEaW$uB#iL@M zt4oe8b#I|lK!7$Ebw4V1NBW>4qTSA6*_QebUH8vQU=B|0z#O4^uq~l%~jp*YD!t7v8%N}R$n0wwXxvT1L-0Q18M~v&K zd==t{VVcVe9daU{OB_jheV+1wr(E%r_lCssZl?NOnotoq)3pc^>hT6tPlYnlbY@8N z%+y?7qen=l{C;tkD9WydqNrRLZjyqoOGPQ{6SZHs?hqv{=!pc}zY?Tf0ofISmB>~t zq48Ypn(kPpFH2MUj4KoU(4~?7bTXESR}J)%q^|4UL@Hycz6A0eh2Ly(ozus|3k9#O zX-zIc*C5oVlU&k>c?)otPUJ=x4A@RJH$<(Lt zx#lOip5P(aYPsoB_tf~@4(P6d?a)*;^1XBlSSV8D8L>Y8p94OoZ1&vAXGSjnyTf&# zyzX4uET{T11{9Mw#^bcl=v65mIQF)kI5>-)q&Z5(gKRRK+sC$4AEQFRX>GbzKJo0> zSqo)a5C_@tx_NAdW5W;FWEwhg6kg|Y=a#*1RlUlibnADr8C_+sy8LgAt&D6waX%fw z4YB)~{gm}m=U&^vv0iU4)hUe_FTT&FN`p*%jguoND^`#Gjh}Wc?So=mr;U z|Lkcxi_dpq>aNl|TJU_!*z{Ao&a%m|3f4oR8zOh|2RZ#5&*^#BU3d=RF4sN(Vy$&o z$?G2G>ub8uMc<9|(-|d3IOp23?rb)1Tk4=e=itsBUc;1gmBcYH5ctO_oVfj;CvK+? zphvj9`llyu2TpGRJ#JUVLgI3C-GUXqcza0PI2Pg}_QP~#Vs=s~r|yunZXe*c&zE+5mZK^Op8yi*=~b!<`RA|?Ek`02^~*dl9) z(yB$lQ}-?A&EXSwp18B)PEB4q_8P8w&H4-UzNQ72iWi+U3McNQx8iQ^4ET5WPTYyR zF>%+O@}!f6lZ8bE&hYswv9KQ*`^8v@UXME>Cg-R0fmtU`-@cqe%o|d`h2Vn>4D;9$ zVfl%>>7872_nHE691;;NocJ34<7=h#cC;sQSbrtUGbgv55*LeHKz2hyPF^(LLXQ^uNq;hK6>pAz`nAn5s2Au$0}3YX>P(GZXWa!J*`o|3JW`}YVh+jl1qQj> zW4Es$myjf1{=#V@+Y$Wdiv|R%An&@=1x*c+v zLfNZn+-2=Hb9sIst&dLrExlImFisc+%+#iwyeo`LyhpiPv)YRDu6$6Toyyc4z2ZFM~#88NNh67>E z$3)G~BD-au!aTA+jNq*-`vO#w6}b*A!Jx_q-y}$3Ex<%W4KvoG_;IyDworG-<@Ymp zNOXsk@J&n#g?y|n6c!G)hg6@B`81(DyvwIDDIAaku=3#mJFY8%U|^?8oVtRWq({Tl z#%?4wh3z7?pl>q0lh{IRgRUsPI>8$X1~e85g?5JnKH3&i4UOF+=^-sFqgC6f3T+`x zQv$Spci86>LSdiG9+dR35B+UnUz-|ISiL_W+!NmAmu;nb*slm}yTg7>7{(6@*RgOQ zjMo%C#b;wnWxp`21;U|wR9dOYKHD5DUmp*vbT_lxW>LFpyY&`k*x~Bf1ENO`u+MHK zE;(ddM(n`=JKB=)la16>*1Hxqo224i9vAQugh8@!)8?0r+W*YFy=%`q=WJJVw&Y4( zs8+VOlS{6!&khA=FCvl#W||!eb>fexJxuKyDt8mR-{)&0jT)Q0-cPE-K7&mT(8>Nz zHd&^V18lNFn!-nAHaSSE6*f6UCszkyUs7S3^83{D5P<9R`)E4M(*6xT+5|w;D$1h) z(!`;Ob@=fs%~TZ!e(oJGA!)_5^4@Dq90GeTQGV4V7&H-%WG?OhUegiGKGGn%)ig z5D}t(+*^bL9IW@r^v@IcTC@MJCi){>3{>&4O>AJk!Up_6=m!D+El(~+oIa(nl%J)P z`5N5>7^Lq6K*Lm!r2@rr1VE-f6MLsO$U1`Tr$M2O9Se=HmXM$NLJY@|qaijNVt0hl z##(>?42M}unC&`h0@V1io`W#m#6c$;Pz~0i7LUV45Tp=_mZK{A%mxhzPV@Mnhzv~N zEo(K}BHKmTM?aAF_)z!J0i3=LUdXmr7!6x?de3$5i$xN<%HX5_fMqV79cVAj2?cZyPJ}dXe!_9@&72U`I6i zXwV)Ht_QOReXIp+9^B(&k1AoZDTw)57xW2kOr{U#T3*;M2>Jm)&||2yaik*%3XdO$ zA%DCIo&u*I4X|COSszGI2!>HvAF!%HnYHi(>^5El*`Q&84HO%oT_%`cZUEbZwvec9EDi)@4DxayI0E_ygX~cgZCTF&ZiO>CltYoQ&aJ zvJQ101~8)q{Eq*;?~p3fdM#*0@1`bIWp0eXp{}7HsVYvb?63ZMXpsiZN4IOr8v1Op zLYHXJJPn#c??l6rdQ_sQT&sl}nA^`GF7dCSKSSkC&2OEm#g!oWQ1c5N^l2?&aCj}p ztaaMMe)hDYaWMf42K-h{1GIlxgT5Hx`qxy$$8H1R0&Kwcdw3lKKQ1CcC?II}am0GA z7BK0@$3c_GQ0O7{j?BvxbXO`=HbvuDsMFwbGtr4*<6~GV{3@Ij0QOEu=wR^c59cy6$)L+oS%GsUnZ#BF-&4q~#KHb6M0b{anXde&<1ON_F-1t( zgTzHop29$W{t;(8nIz0_uuoOlFZ@2cTh;al*k=1QmHbwkO{Qz?Zokj^15(a4;*Wj8 zg8_p*==TYIcIhXiMtCB?;1pPYPSkDmN#Iw=HYcfI8Tpsi1Aby@qFI@~K^$AGkN9D2 ze@)6AUik@O$nU7Mw_x~?EDW9Px4uPG_L<)gbR+syA&XKNQX1KiFDzsg4i1k)A!`8N zd%9i7u2*dC3G~Mk!^JEgq&jZq7psof)(3?lHNcK=&?yXY;Mo0tBf2?E^YOdUa7_rn z;SLGLf5ZMSLvT2hGP{jao=358W%43mqZhI5-x^Q4`!27CLYo4GXKo!f~^_t%v|$9X9ZDs<2x1 zvm+ef=Qt=HxKFcoToYDvnsHD(4i`a~Wzn!lV?*$;R`U~nM6nX^t>G1$+icha@)UdU zjDBJD_+fMJH3GbjUVyo>IN$zwz(09Iz<-ndfdJgSBY}YZV0|Dkc@fT;fxw!{-$6w* zk+lI~wOI$vMkbd8zF9!>e0{1iyl=lK;m(d zAN`!Z=rWOUlF#P|TP>GAF8kKl+%jm4a|kYed)L*uQh<&wvT?X&%SFzDKWrOO1l z8;Z5Cb+_!_$Lm7@X1pwejPp4uiwCTcYF3BJACSZQgmN%rcrsRglS|;{f$LpsxVlK`OpR z*PwDI8rCWS;jS@K0f#{N8t~W2Om^@TDx(;1H>t4VYfN?z1{kW)!oH4%kH}1M{{u4p z4XF_K%fkMUxc@#(O^bod(>i&i5N}lK64z$;F2BXP}q+$=xE|d@ZS)v*u#Oa|KE`7g6uk%>=Ro; z@M`?NAHi4im+Z99Cgrs06pF1lAI8~_^IHo^xu{a(AyOV9e+l}(;-e3uIp_C`|NVz7c*Hc50 zCx1UI`|0~{^C4jbDfp1~*MJR?a+yoX(B$v`C%1ck>k8Z_=ah%h=nq2(IPyJ?SmzO7 zfwH#q_>h2~3(!!Y$~2Y%>pUYY%lpvaaP#J%z=Z>saRg1gr-aBv#?HzcbFS&Yk$A1u2vq|$6Sq}uGE7gX9s${|83 z1=%$A9x5-R;dn^>CU0R~p`t$ff?8uo_L_~hhdF@Vfc=5$3gcYK3&d!w?P0FffDQ4M z`eHM0Ff|rT#qlsS+Ipxq4*3x*0%3K@(34OZ z7{r5LgOaOelagk+mXpl(sruh2#}T+F9BAzLE!lMz*Dby4EDqx|ktUeZBp(oyd~CH= zzN;Q_&(*~fE9oQS*w7c68_aPCjSgx4Mw=UJ7fvJ1kGcAscp#BqW7#6ZO^^uA1{$Cv zRtLC_0K(mq31<*o%@MGoB9?~+5%UXcO0ewly_(F)*9B`^(`bJk7+jgG;_DP@U;t4K z3OkgC1FRn9$CHL)b(0!?LMvL`D^>qwQALzG>)#VV!7BkFy9e~*P(kSOkUu~> z;DI#C)X}E;g0^LF)1$#PwoCl7;}QgS!_d+H!hZ!>)UU9Y>iuS=%&PjK2wvi(=io5r z0|6f+BxC{i`T@g^WmuN0d&2A`{OooZjVxwswJLVmWIxJpO?qF&;^}3v3q^y_rLY== zpw3eeFU`ObhH!Uj#8JiR>@aTQvY^ty`hvo__{Y9r2;q*y#hPswpMNyj<^&Z39-vua ze+h=Jw|x{0(ks;&|X6y8zbcbLFHqt%lXW~NkZMUYcR4M@PnYHxRvw6vy-jMHHD+PX@cPk z;wF{;B4XeNIJ&Qh+T463bp6oe8#D!0Fn|tVP-<|6vSom!H^3$I2c8MhFZ=y)269yV zE&ZxlE#SMNo4_<^-HPhXew9}TP~GSEBg9HCNA(u;SNrLeL_`?GZ}{aJze;wX<92kE z`>g`1ccL0Fthb^1H7Z&~DvAdK8vmdA{`?>N|~X2#t5CXu8*Wltg$%Jctr; zUx8yXuucHye@Be}rAsT0)69!FqBtW!6!GBy6Cxax*D9jq69#1t8Ub;qK}SRm9u|-B z<|6tihepsPnVoyhR$S{72iNn#fI;z~|FAQ{F+VUz1T!m2A@QLQeJEtByh{#Q&khH{ z|F$tXMDGvD;zgmu;*Fv5#Ta)**g1J^Slk?TTp@?)S;5;haWu@FkRQhU zpb+5|-gFp+^KJzb7r-c-Sgl4lz#MQ;JPz}DLC{`^035}2b_e`_a=KxRXy*>mc!=V)LQTXg}YC z=AGd-AJBwjHXreT-*J0KHSq&}mnPDrg&}3_ns6|LX+|Nmo9CX1iq8?*8w!YGK-d(* zc?iWryb_vxtX&C!J2&Bz^$=!klX>t-n{S++JXssT3nX*G9zuC^eCo^zyiYOzT5*z~ z*uE!-_oS-e!#P+#Q3-2}XwgKxL>&xkBfP-r`=KjaAx^Y=@X8@*%OB0 z_N_s@lK1$;h<^=Q@N!e-TzUOO9bCHBWYgnjJErz?hJ?dna;eFrM^Cro$wn%PYCa(6 zQ9SrKpQ6$s<8JVXrC`!q&fZ{g8_)vyRXpGL!4a?|$0vHm+0P2D1mnr@Dv1(M!wUSO zPRfF!7!t)W^lC>?5uXZ+mxaYs;JeGz@#8@t52_**Aj(tPH~i!>vP}yJ8I69m!wC7s zRt?fG{zhvMcWA;6Lh`IPYTX>S*AHxC?pQbwzFk5cniMv9VCC09e>mC&Cp-K%rD9~TxUZ;NoR=>gIm1%Hic9;>ASrDRWzMT zA465#uL=9*i^?X^3pJqyaRy67`onDEMa^d|;SmrQriO<}G@p!@iHKNm9AG5|+#3Y7 z_iHy4TQr1|TSiU~(CqgwAO^xJen*pn(m#X8Sp33%+dmXpJBrqziK6U)GuJYXb($B9 zBO8I>zQp|jVL$kIf55zmBO}fxIHfHJ-T(s~c~=p6m;>C2*<+YpvvGR!7aO!&U7y;uoaBfN47 z#duc{8bstnV5-Ej?~p-Q;e&qDGxXcqLmfd_8E%W2oT8#U2#}uc!_fLbJjf))ZUJhRV}Jf+My_7{&%SiE=$InZV#r0W-ou z^Y7PkfKCq3!vQD=Fdq*z(YMbW$}!wZ=V=6fQloGXM)Y8a1GugxG||1P?=*Uk*&GxG z0nu*u8@zx0=i}85nDWT@%r#(=91)nRh!(nDXfIY&7OBU*p-K2alR+dcj4oL?uH68C zhr=*d44?+uF#vGSL?!GPe$H$On+pf%hl7S94u{2Il=D>+fF_!9SR6JX06Ne)-WS}* zt@lLVe$_SX#9O#Q4J6^D<&cw$lg8;AM@E2{q#V|q_>Mpv*2LjrxgNmKR3Q>VV}ldl z&J2frl@Dp5ZCpA;d_*${Fc><+CV}N872j(Ot0ytOC?m{-ONnSF#Rgke4Zo+D*S4F0 z9sg%h(n9nY{{=2`$1(OGkZche-Mj^Kh6{x9ZSkPvn5z2GjroD=!{;7v-Xi> KV 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 UuPFXXJj(pH3;CbPoy7nAe|rSYl>h($ diff --git a/lib/R7RS.scm b/lib/R7RS.scm index dafda6914..ae8b99308 100755 --- a/lib/R7RS.scm +++ b/lib/R7RS.scm @@ -245,6 +245,31 @@ (define (truncate-quotient x y) (quotient x y)) (define (truncate-remainder x y) (remainder x y)) +(define (log z . rest) + "(log z) + (log z1 z2) + + Function that calculates natural logarithm (base e) of z. Where the argument + can be any number (including complex negative and rational). If the value is 0 + it returns NaN. It two arguments are provided it will calculate logarithm + of z1 with given base z2." + (if (not (null? rest)) + (let ((base (car rest))) + (/ (log z) (log base))) + (cond ((real? z) + (cond ((zero? z) NaN) + ((> z 0) (Math.log z)) + (else + (+ (Math.log (abs z)) + (* Math.PI +i))))) + ((complex? z) + (let ((arg (Math.atan2 (imag-part z) + (real-part z)))) + (+ (Math.log (z.modulus)) + (* +i arg)))) + ((rational? z) + (log (exact->inexact z)))))) + ;; ----------------------------------------------------------------------------- (define-syntax case-lambda (syntax-rules ()