Re: Scaled division and sqrt

2017-03-01 Thread Lindsay John Lawrence
Thanks Eric. This was also an opportunity to start dabbling a bit with the app ui framework. Very interesting. At least initially, it reminds me a bit of the way you could write PHP... but this feels more elegant. Even lisp looks less like line noise than php ;) The javascript canvas pipeline I

Re: Scaled division and sqrt

2017-03-01 Thread Erik Gustafson
Hi Lindsay, I practiced a bit more with the built-in functions... https://github.com/thinknlive/picolisp-gosper.git Very cool! Looks like you've got '*/' all figured out now :) Thanks for sharing - Erik

Re: Scaled division and sqrt

2017-02-28 Thread Lindsay John Lawrence
allbase --> tankfeeder / exercism-io / a-f.l /Lindsay On Tue, Feb 28, 2017 at 3:41 AM, Danilo Kordic wrote: >> If you are going to use a list, could also just put the 'scale' in a property >> of the list? > > I wouldn't call it a propert to avoid confusion with

Re: Scaled division and sqrt

2017-02-28 Thread Lindsay John Lawrence
Hi, I practiced a bit more with the built-in functions... https://github.com/thinknlive/picolisp-gosper.git /Lindsay -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Re: Scaled division and sqrt

2017-02-28 Thread Danilo Kordic
> If you are going to use a list, could also just put the 'scale' in a property > of the list? I wouldn't call it a propert to avoid confusion with PicoLisp `prop'erties. I couldn't find `allbase'. I had [[https://en.wikipedia.org/wiki/Algebraic_data_type][Algebraic DataTypes]] in mind,

Re: Scaled division and sqrt

2017-02-27 Thread Lindsay John Lawrence
Hi Danilo, Ah. I get it. Interesting idea. If you are going to use a list, could also just put the 'scale' in a property of the list? When I came across the 'allbase function in Mike Penchkin's code... I thought of the following... It would be a bit wasteful of storage, but could represent

Re: Scaled division and sqrt

2017-02-27 Thread Lindsay John Lawrence
Hi Alex, Erik, I definitely took the 'long way around' on this one... and got some good exercise along the way! =) Thank you for the detailed explanation. I get it now... although I need a bit more practice and care in using the functions comfortably. My initial impetus was to be able to

Re: Scaled division and sqrt

2017-02-27 Thread Danilo Kordic
I forgot to say: ``As if `E' is an _infix_ binary operator. '' -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Re: Scaled division and sqrt

2017-02-27 Thread Danilo Kordic
By constructing base 10 floating point numbers with ``[list Significand 'E Exponent]''. As if `E' is a binary operator. Of course that makes no sense in Lisp. ``(Decimal Significand Exponent)'' would make sense. For example: : (sqrt 2) -> (141421356237309505 E -17) -- UNSUBSCRIBE:

Re: Scaled division and sqrt

2017-02-27 Thread Alexander Burger
Hi Lindsay, > Having just tried it... I am surprised that the 'sqrt* I implemented is > quite a bit faster! than the built-in 'sqrt. I'll try the long division > later. Wow, that's indeed a bit surprising. However, it depends on the scale, and I think a can explain (see below). > : (scl

Re: Scaled division and sqrt

2017-02-27 Thread Alexander Burger
Hi Lindsay, On Mon, Feb 27, 2017 at 06:28:15AM -0600, Erik Gustafson wrote: > With '*/', I like to think of it like this: for multiplication, the scale > factor is last, e.g. > >(*/ X Y Scl) > > For division, the scale factor comes first, e.g. > >(*/ Scl X Y) Exactly. The reason is

Re: Scaled division and sqrt

2017-02-27 Thread Lindsay John Lawrence
Thanks Eric, I am going to have to play with those two particular built-in functions a bit more. Their use, especially '*/ was not intuitive to me. At first, or second, reading. Having just tried it... I am surprised that the 'sqrt* I implemented is quite a bit faster! than the built-in 'sqrt.

Re: Scaled division and sqrt

2017-02-27 Thread Erik Gustafson
Hi Lindsay, With the functions I implemented I can write something like... : (scl 64) (format (sqrt* 2.0) *Scl) -> "1.4142135623730950488016887242096980785696718753769480731766797379" 'sqrt' also accepts a 'scl' argument : (format (sqrt 2.0 1.0) *Scl) ->

Re: Scaled division and sqrt

2017-02-27 Thread Lindsay John Lawrence
Hi Danilo, Sorry, I do not follow this. Can you explain a bit more? Thanks! /Lindsay On Mon, Feb 27, 2017 at 3:32 AM, Danilo Kordic wrote: > It seems You reimplemented `*/'. > > How about something like: > # [name 'sqrt "isqrt"] # Somthing like that. > [scl [if

Re: Scaled division and sqrt

2017-02-27 Thread Lindsay John Lawrence
Hi Alex, I am missing something basic here that article is how I ended up writing the functions. With the functions I implemented I can write something like... : (scl 64) (format (sqrt* 2.0) *Scl) -> "1.4142135623730950488016887242096980785696718753769480731766797379" : (scl 64) (format

Re: Scaled division and sqrt

2017-02-27 Thread Danilo Kordic
It seems You reimplemented `*/'. How about something like: # [name 'sqrt "isqrt"] # Somthing like that. [scl [if native 17 8]] [de sqrt [N] [list [isqrt (** 100 *Scl) N] 'E [- *Scl]] ] On 2/27/17, Joh-Tob Schäg wrote: > Now there are before there were not. > Am

Re: Scaled division and sqrt

2017-02-27 Thread Alexander Burger
Hi Lindsay, > Are there scaled (fixed point) versions of division and sqrt in picolisp? I > may have missed them... The built-in '*/' function is both for multiplication *and* division. And 'sqrt' accepts an optional scale factor. For details, take a look at Rick's excellent article on the

Re: Scaled division and sqrt

2017-02-27 Thread Joh-Tob Schäg
Now there are before there were not. Am 27.02.2017 10:07 schrieb "Lindsay John Lawrence" < lawrence.lindsayj...@gmail.com>: > Hi, > > Are there scaled (fixed point) versions of division and sqrt in picolisp? > I may have missed them.. > > In any event I wrote a couple of functions to provide that

Scaled division and sqrt

2017-02-27 Thread Lindsay John Lawrence
Hi, Are there scaled (fixed point) versions of division and sqrt in picolisp? I may have missed them... In any event I wrote a couple of functions to provide that functionality that may be useful to others as well. Performance is reasonable. It is quite nice to be able to be able to do