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 simply that if you multiply two scaled integers, you have
to divide by the scale factor afterwards.

For example, assume your integers denote centimeters. You set *Scl to 2, so that

   100 cm = 1.0 m

Now, one square meter is

   1.0 m * 1.0 m  =  100 cm * 100 cm  =  1.0 m^2  =  10000 cm^2

As we want the result not in cm but in meters, we must divide by 100.
Example:

   :(scl 2)
   -> 2

   : (*/ 3.0 4.0 1.0)  # This is equal to (*/ 300 400 100)
   -> 1200

   : (round @)
   -> "12.00"


For division you need the opposite, multiply with 100 instead of dividing.
So you first multiply thi dividend by the scale factor before you divide:

   (*/ 12.0 1.0 3.0)  # this is 12.0 / 3.0


If you multiply more than two numbers, you have to use the corresponding scale
factor:

   : (*/ 3.0 4.0 5.0 `(* 1.0 1.0))  # 3.0 * 4.0 * 5.0
   -> 6000

   : (round @)
   -> "60.00"

♪♫ Alex
-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to