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
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
I forgot to say: ``As if `E' is an _infix_ binary operator. ''
--
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
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:
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
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
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.
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)
->
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
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
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
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
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
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
14 matches
Mail list logo